From fd487a42e281b836de805f3ff3c3ae90d00d6ca8 Mon Sep 17 00:00:00 2001 From: "Prow CI (APPID: 112385)" Date: Wed, 2 Oct 2024 09:17:09 +0000 Subject: [PATCH] Publish docs --- .nojekyll | 0 404.html | 31 + CNAME | 1 + _static/basic.css | 925 + _static/check-solid.svg | 4 + _static/clipboard.min.js | 7 + _static/copy-button.svg | 5 + _static/copybutton.css | 94 + _static/copybutton.js | 248 + _static/copybutton_funcs.js | 73 + _static/css/main.css | 1 + ...e.1e8bd061cd6da7fc9cf755528e8ffc24.min.css | 1 + _static/design-tabs.js | 27 + _static/doctools.js | 156 + _static/documentation_options.js | 13 + _static/file.png | Bin 0 -> 286 bytes _static/img/banner-background.svg | 10 + _static/img/favicon-228x228.png | Bin 0 -> 4428 bytes _static/img/favicon-32x32.png | Bin 0 -> 837 bytes _static/img/favicon.ico | Bin 0 -> 1150 bytes _static/img/icons/icon-about-team.svg | 1 + _static/img/icons/icon-about-us-m.svg | 1 + _static/img/icons/icon-about-us.svg | 1 + _static/img/icons/icon-alternator.svg | 1 + _static/img/icons/icon-apps.svg | 1 + _static/img/icons/icon-architecture.svg | 1 + _static/img/icons/icon-benchmarks.svg | 1 + _static/img/icons/icon-blog.svg | 1 + _static/img/icons/icon-careers.svg | 1 + _static/img/icons/icon-chevron-left.svg | 3 + _static/img/icons/icon-chevron-right.svg | 3 + _static/img/icons/icon-circe.svg | 1 + _static/img/icons/icon-clock.svg | 1 + _static/img/icons/icon-close.svg | 12 + _static/img/icons/icon-cloud-docs.svg | 1 + _static/img/icons/icon-cloud.svg | 1 + _static/img/icons/icon-comparison.svg | 1 + _static/img/icons/icon-contact-us.svg | 1 + _static/img/icons/icon-developers-blog.svg | 1 + _static/img/icons/icon-docs.svg | 1 + _static/img/icons/icon-enterprise-m.svg | 33 + _static/img/icons/icon-enterprise.svg | 1 + _static/img/icons/icon-events.svg | 1 + _static/img/icons/icon-exclamation.svg | 10 + _static/img/icons/icon-expand.svg | 50 + _static/img/icons/icon-forum.svg | 1 + _static/img/icons/icon-getting-started.svg | 1 + _static/img/icons/icon-glossary.svg | 1 + _static/img/icons/icon-help.svg | 1 + _static/img/icons/icon-home.svg | 1 + _static/img/icons/icon-infoworld.svg | 1 + _static/img/icons/icon-integrations.svg | 1 + _static/img/icons/icon-knowledge-base.svg | 1 + _static/img/icons/icon-less.svg | 8 + _static/img/icons/icon-live-test.svg | 1 + _static/img/icons/icon-mail-list.svg | 1 + _static/img/icons/icon-manager.svg | 1 + _static/img/icons/icon-memory-management.svg | 1 + _static/img/icons/icon-modeling.svg | 1 + _static/img/icons/icon-monitoring.svg | 1 + _static/img/icons/icon-networking.svg | 1 + _static/img/icons/icon-news.svg | 1 + _static/img/icons/icon-newsletter.svg | 1 + _static/img/icons/icon-nsql-guides.svg | 1 + _static/img/icons/icon-open-source.svg | 1 + _static/img/icons/icon-operator.svg | 1 + _static/img/icons/icon-overview.svg | 1 + _static/img/icons/icon-partners.svg | 1 + _static/img/icons/icon-plus.svg | 8 + _static/img/icons/icon-pricing.svg | 1 + _static/img/icons/icon-release-notes.svg | 1 + _static/img/icons/icon-resource-center.svg | 1 + _static/img/icons/icon-roadmap.svg | 1 + _static/img/icons/icon-search.svg | 4 + _static/img/icons/icon-slack.svg | 1 + _static/img/icons/icon-stack-overflow.svg | 4 + _static/img/icons/icon-summit.svg | 1 + _static/img/icons/icon-support.svg | 1 + _static/img/icons/icon-tech-talks.svg | 1 + _static/img/icons/icon-testing.svg | 1 + _static/img/icons/icon-thumbs-down.svg | 1 + _static/img/icons/icon-thumbs-up.svg | 1 + _static/img/icons/icon-tip.svg | 5 + _static/img/icons/icon-training.svg | 1 + _static/img/icons/icon-triangle-down.svg | 3 + _static/img/icons/icon-university.svg | 1 + _static/img/icons/icon-users-blog.svg | 1 + _static/img/icons/icon-warning.svg | 10 + _static/img/icons/icon-webinars.svg | 1 + _static/img/icons/icon-whitepapers.svg | 1 + _static/img/icons/icon-workshop.svg | 1 + _static/img/logo-scylla-horizontal-color.svg | 55 + _static/img/logo-scylla-horizontal-light.svg | 53 + _static/img/mascots-2/2-monster-laptop.svg | 53 + _static/img/mascots-2/alternator.svg | 39 + _static/img/mascots-2/award.svg | 65 + _static/img/mascots-2/care-pet.svg | 57 + _static/img/mascots-2/cdc.svg | 46 + _static/img/mascots-2/chef.svg | 39 + _static/img/mascots-2/cloud.svg | 91 + _static/img/mascots-2/default.svg | 22 + _static/img/mascots-2/docs.svg | 35 + _static/img/mascots-2/driver.svg | 42 + _static/img/mascots-2/enterprise.svg | 50 + _static/img/mascots-2/forward-2.svg | 25 + _static/img/mascots-2/forward.svg | 25 + _static/img/mascots-2/headphones.svg | 27 + _static/img/mascots-2/heart.svg | 29 + _static/img/mascots-2/laptop.svg | 35 + _static/img/mascots-2/magnifying-glass.svg | 24 + _static/img/mascots-2/manager.svg | 48 + _static/img/mascots-2/monitor.svg | 40 + _static/img/mascots-2/open-mouth.svg | 22 + _static/img/mascots-2/operator.svg | 26 + _static/img/mascots-2/plug.svg | 40 + _static/img/mascots-2/repair.svg | 71 + _static/img/mascots-2/server.svg | 64 + _static/img/mascots-2/sleepy.svg | 33 + _static/img/mascots-2/smile-learning.svg | 19 + _static/img/mascots-2/stretched-up.svg | 21 + _static/img/mascots-2/toolbox.svg | 83 + _static/img/mascots-2/university.svg | 52 + _static/img/mascots-2/workshop.svg | 60 + _static/img/mascots-2/wow-up.svg | 22 + _static/img/mascots-2/wow.svg | 22 + _static/img/mascots-2/yummy.svg | 18 + _static/img/mascots/404.jpg | Bin 0 -> 29400 bytes _static/img/mascots/scylla-3monsters.png | Bin 0 -> 35624 bytes .../img/mascots/scylla-advisor-crystal.png | Bin 0 -> 67593 bytes _static/img/mascots/scylla-alternator.svg | 1 + _static/img/mascots/scylla-cloud.svg | 1 + .../mascots/scylla-computer-3-monsters.png | Bin 0 -> 44539 bytes .../img/mascots/scylla-computer-headset.png | Bin 0 -> 22297 bytes _static/img/mascots/scylla-cup-number-one.png | Bin 0 -> 22675 bytes _static/img/mascots/scylla-docs.svg | 1 + _static/img/mascots/scylla-drivers.svg | 1 + _static/img/mascots/scylla-enterprise.svg | 1 + _static/img/mascots/scylla-forklift-boxes.png | Bin 0 -> 29196 bytes .../img/mascots/scylla-forklift-migration.png | Bin 0 -> 24191 bytes _static/img/mascots/scylla-gear.png | Bin 0 -> 64841 bytes _static/img/mascots/scylla-hardhat.png | Bin 0 -> 20163 bytes _static/img/mascots/scylla-headband.png | Bin 0 -> 40533 bytes _static/img/mascots/scylla-headset.png | Bin 0 -> 19094 bytes _static/img/mascots/scylla-hearts.png | Bin 0 -> 22252 bytes _static/img/mascots/scylla-looking-down.png | Bin 0 -> 70044 bytes _static/img/mascots/scylla-looking-up.png | Bin 0 -> 69083 bytes .../scylla-magnifying-glass-fronting.png | Bin 0 -> 17463 bytes .../img/mascots/scylla-magnifying-glass.png | Bin 0 -> 16651 bytes _static/img/mascots/scylla-manager.svg | 1 + _static/img/mascots/scylla-monitor.svg | 1 + _static/img/mascots/scylla-movement-fast.png | Bin 0 -> 18439 bytes _static/img/mascots/scylla-movement.png | Bin 0 -> 14720 bytes _static/img/mascots/scylla-onpremise.png | Bin 0 -> 33081 bytes _static/img/mascots/scylla-opensource.svg | 1 + _static/img/mascots/scylla-operator.svg | 1 + _static/img/mascots/scylla-plugin.png | Bin 0 -> 52683 bytes _static/img/mascots/scylla-release-mascot.png | Bin 0 -> 31893 bytes _static/img/mascots/scylla-repair.png | Bin 0 -> 21261 bytes _static/img/mascots/scylla-server.png | Bin 0 -> 48529 bytes _static/img/mascots/scylla-sleeping.png | Bin 0 -> 12942 bytes _static/img/mascots/scylla-tall-measure.png | Bin 0 -> 18996 bytes _static/img/mascots/scylla-university.png | Bin 0 -> 26146 bytes _static/img/mascots/scylla-weights.png | Bin 0 -> 40973 bytes .../img/mascots/scylla-window-cleaning.png | Bin 0 -> 34761 bytes .../img/mascots/scylla-with-computer-2.png | Bin 0 -> 18803 bytes _static/img/mascots/scylla-with-computer.png | Bin 0 -> 19926 bytes _static/img/mascots/scylla-with-linux.png | Bin 0 -> 45076 bytes _static/img/mascots/scylla-writting.png | Bin 0 -> 34449 bytes _static/img/menu.svg | 3 + _static/img/scylladb-logo-horizontal.svg | 1 + _static/js/main.bundle.js | 2 + _static/js/main.bundle.js.LICENSE.txt | 256 + _static/js/runtime.bundle.js | 1 + _static/language_data.js | 199 + _static/minus.png | Bin 0 -> 90 bytes _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 75 + _static/searchtools.js | 620 + _static/sphinx_collapse.css | 31 + _static/sphinx_highlight.js | 154 + _static/tabs.css | 89 + _static/tabs.js | 145 + index.html | 8 + master/.buildinfo | 4 + .../groups/scylla.scylladb.com.doctree | Bin 0 -> 4072 bytes .../scylla.scylladb.com/nodeconfigs.doctree | Bin 0 -> 398919 bytes .../scyllaclusters.doctree | Bin 0 -> 1218084 bytes .../scylladbdatacenters.doctree | Bin 0 -> 4460792 bytes .../scylladbmonitorings.doctree | Bin 0 -> 889762 bytes .../scyllaoperatorconfigs.doctree | Bin 0 -> 29805 bytes master/.doctrees/api-reference/index.doctree | Bin 0 -> 5640 bytes master/.doctrees/clients/alternator.doctree | Bin 0 -> 16848 bytes master/.doctrees/clients/cql.doctree | Bin 0 -> 17802 bytes master/.doctrees/clients/discovery.doctree | Bin 0 -> 16073 bytes master/.doctrees/clients/index.doctree | Bin 0 -> 3759 bytes master/.doctrees/contributing.doctree | Bin 0 -> 28823 bytes master/.doctrees/eks.doctree | Bin 0 -> 23049 bytes master/.doctrees/environment.pickle | Bin 0 -> 1689544 bytes master/.doctrees/exposing.doctree | Bin 0 -> 38769 bytes master/.doctrees/generic.doctree | Bin 0 -> 63955 bytes master/.doctrees/gke.doctree | Bin 0 -> 30395 bytes master/.doctrees/helm.doctree | Bin 0 -> 44205 bytes master/.doctrees/index.doctree | Bin 0 -> 17713 bytes master/.doctrees/manager.doctree | Bin 0 -> 44322 bytes master/.doctrees/migration.doctree | Bin 0 -> 33862 bytes master/.doctrees/monitoring.doctree | Bin 0 -> 30009 bytes master/.doctrees/multidc/eks.doctree | Bin 0 -> 30117 bytes master/.doctrees/multidc/gke.doctree | Bin 0 -> 29444 bytes master/.doctrees/multidc/index.doctree | Bin 0 -> 4530 bytes master/.doctrees/multidc/multidc.doctree | Bin 0 -> 69887 bytes .../nodeoperations/automatic-cleanup.doctree | Bin 0 -> 4219 bytes master/.doctrees/nodeoperations/index.doctree | Bin 0 -> 3956 bytes .../nodeoperations/maintenance-mode.doctree | Bin 0 -> 5381 bytes .../nodeoperations/replace-node.doctree | Bin 0 -> 15883 bytes .../.doctrees/nodeoperations/restore.doctree | Bin 0 -> 35794 bytes .../nodeoperations/scylla-upgrade.doctree | Bin 0 -> 24823 bytes master/.doctrees/performance.doctree | Bin 0 -> 16111 bytes master/.doctrees/releases.doctree | Bin 0 -> 40933 bytes master/.doctrees/support/index.doctree | Bin 0 -> 3757 bytes master/.doctrees/support/known-issues.doctree | Bin 0 -> 5378 bytes master/.doctrees/support/must-gather.doctree | Bin 0 -> 19890 bytes master/.doctrees/support/overview.doctree | Bin 0 -> 6097 bytes .../support/troubleshooting/index.doctree | Bin 0 -> 3747 bytes .../troubleshooting/installation.doctree | Bin 0 -> 9193 bytes master/.doctrees/upgrade.doctree | Bin 0 -> 30400 bytes master/.nojekyll | 0 master/404.html | 31 + master/CNAME | 1 + master/_images/clusterip.svg | 3 + master/_images/loadbalancer.svg | 3 + master/_images/logo.png | Bin 0 -> 35103 bytes master/_images/multivpc.svg | 3 + master/_images/podips.svg | 3 + .../groups/scylla.scylladb.com.rst.txt | 8 + .../scylla.scylladb.com/nodeconfigs.rst.txt | 1629 + .../scyllaclusters.rst.txt | 4996 +++ .../scylladbdatacenters.rst.txt | 17861 +++++++++++ .../scylladbmonitorings.rst.txt | 3441 +++ .../scyllaoperatorconfigs.rst.txt | 126 + master/_sources/api-reference/index.rst.txt | 13 + master/_sources/clients/alternator.md.txt | 94 + master/_sources/clients/cql.md.txt | 129 + master/_sources/clients/discovery.md.txt | 72 + master/_sources/clients/index.rst.txt | 12 + master/_sources/contributing.md.txt | 155 + master/_sources/eks.md.txt | 128 + master/_sources/exposing.md.txt | 304 + master/_sources/generic.md.txt | 372 + master/_sources/gke.md.txt | 173 + master/_sources/helm.md.txt | 339 + master/_sources/index.rst.txt | 67 + master/_sources/manager.md.txt | 258 + master/_sources/migration.md.txt | 146 + master/_sources/monitoring.md.txt | 181 + master/_sources/multidc/eks.md.txt | 168 + master/_sources/multidc/gke.md.txt | 156 + master/_sources/multidc/index.rst.txt | 18 + master/_sources/multidc/multidc.md.txt | 601 + .../nodeoperations/automatic-cleanup.md.txt | 6 + master/_sources/nodeoperations/index.rst.txt | 12 + .../nodeoperations/maintenance-mode.md.txt | 19 + .../nodeoperations/replace-node.md.txt | 74 + master/_sources/nodeoperations/restore.md.txt | 239 + .../nodeoperations/scylla-upgrade.md.txt | 102 + master/_sources/performance.md.txt | 100 + master/_sources/releases.md.txt | 96 + master/_sources/support/index.rst.txt | 12 + master/_sources/support/known-issues.md.txt | 14 + master/_sources/support/must-gather.md.txt | 101 + master/_sources/support/overview.md.txt | 14 + .../support/troubleshooting/index.rst.txt | 8 + .../troubleshooting/installation.md.txt | 34 + master/_sources/upgrade.md.txt | 184 + ...e.1e8bd061cd6da7fc9cf755528e8ffc24.min.css | 1 + master/_sphinx_design_static/design-tabs.js | 27 + master/_static/basic.css | 925 + master/_static/check-solid.svg | 4 + master/_static/clipboard.min.js | 7 + master/_static/copy-button.svg | 5 + master/_static/copybutton.css | 94 + master/_static/copybutton.js | 248 + master/_static/copybutton_funcs.js | 73 + master/_static/css/main.css | 1 + ...e.1e8bd061cd6da7fc9cf755528e8ffc24.min.css | 1 + master/_static/design-tabs.js | 27 + master/_static/doctools.js | 156 + master/_static/documentation_options.js | 13 + master/_static/file.png | Bin 0 -> 286 bytes master/_static/img/banner-background.svg | 10 + master/_static/img/favicon-228x228.png | Bin 0 -> 4428 bytes master/_static/img/favicon-32x32.png | Bin 0 -> 837 bytes master/_static/img/favicon.ico | Bin 0 -> 1150 bytes master/_static/img/icons/icon-about-team.svg | 1 + master/_static/img/icons/icon-about-us-m.svg | 1 + master/_static/img/icons/icon-about-us.svg | 1 + master/_static/img/icons/icon-alternator.svg | 1 + master/_static/img/icons/icon-apps.svg | 1 + .../_static/img/icons/icon-architecture.svg | 1 + master/_static/img/icons/icon-benchmarks.svg | 1 + master/_static/img/icons/icon-blog.svg | 1 + master/_static/img/icons/icon-careers.svg | 1 + .../_static/img/icons/icon-chevron-left.svg | 3 + .../_static/img/icons/icon-chevron-right.svg | 3 + master/_static/img/icons/icon-circe.svg | 1 + master/_static/img/icons/icon-clock.svg | 1 + master/_static/img/icons/icon-close.svg | 12 + master/_static/img/icons/icon-cloud-docs.svg | 1 + master/_static/img/icons/icon-cloud.svg | 1 + master/_static/img/icons/icon-comparison.svg | 1 + master/_static/img/icons/icon-contact-us.svg | 1 + .../img/icons/icon-developers-blog.svg | 1 + master/_static/img/icons/icon-docs.svg | 1 + .../_static/img/icons/icon-enterprise-m.svg | 33 + master/_static/img/icons/icon-enterprise.svg | 1 + master/_static/img/icons/icon-events.svg | 1 + master/_static/img/icons/icon-exclamation.svg | 10 + master/_static/img/icons/icon-expand.svg | 50 + master/_static/img/icons/icon-forum.svg | 1 + .../img/icons/icon-getting-started.svg | 1 + master/_static/img/icons/icon-glossary.svg | 1 + master/_static/img/icons/icon-help.svg | 1 + master/_static/img/icons/icon-home.svg | 1 + master/_static/img/icons/icon-infoworld.svg | 1 + .../_static/img/icons/icon-integrations.svg | 1 + .../_static/img/icons/icon-knowledge-base.svg | 1 + master/_static/img/icons/icon-less.svg | 8 + master/_static/img/icons/icon-live-test.svg | 1 + master/_static/img/icons/icon-mail-list.svg | 1 + master/_static/img/icons/icon-manager.svg | 1 + .../img/icons/icon-memory-management.svg | 1 + master/_static/img/icons/icon-modeling.svg | 1 + master/_static/img/icons/icon-monitoring.svg | 1 + master/_static/img/icons/icon-networking.svg | 1 + master/_static/img/icons/icon-news.svg | 1 + master/_static/img/icons/icon-newsletter.svg | 1 + master/_static/img/icons/icon-nsql-guides.svg | 1 + master/_static/img/icons/icon-open-source.svg | 1 + master/_static/img/icons/icon-operator.svg | 1 + master/_static/img/icons/icon-overview.svg | 1 + master/_static/img/icons/icon-partners.svg | 1 + master/_static/img/icons/icon-plus.svg | 8 + master/_static/img/icons/icon-pricing.svg | 1 + .../_static/img/icons/icon-release-notes.svg | 1 + .../img/icons/icon-resource-center.svg | 1 + master/_static/img/icons/icon-roadmap.svg | 1 + master/_static/img/icons/icon-search.svg | 4 + master/_static/img/icons/icon-slack.svg | 1 + .../_static/img/icons/icon-stack-overflow.svg | 4 + master/_static/img/icons/icon-summit.svg | 1 + master/_static/img/icons/icon-support.svg | 1 + master/_static/img/icons/icon-tech-talks.svg | 1 + master/_static/img/icons/icon-testing.svg | 1 + master/_static/img/icons/icon-thumbs-down.svg | 1 + master/_static/img/icons/icon-thumbs-up.svg | 1 + master/_static/img/icons/icon-tip.svg | 5 + master/_static/img/icons/icon-training.svg | 1 + .../_static/img/icons/icon-triangle-down.svg | 3 + master/_static/img/icons/icon-university.svg | 1 + master/_static/img/icons/icon-users-blog.svg | 1 + master/_static/img/icons/icon-warning.svg | 10 + master/_static/img/icons/icon-webinars.svg | 1 + master/_static/img/icons/icon-whitepapers.svg | 1 + master/_static/img/icons/icon-workshop.svg | 1 + .../img/logo-scylla-horizontal-color.svg | 55 + .../img/logo-scylla-horizontal-light.svg | 53 + .../img/mascots-2/2-monster-laptop.svg | 53 + master/_static/img/mascots-2/alternator.svg | 39 + master/_static/img/mascots-2/award.svg | 65 + master/_static/img/mascots-2/care-pet.svg | 57 + master/_static/img/mascots-2/cdc.svg | 46 + master/_static/img/mascots-2/chef.svg | 39 + master/_static/img/mascots-2/cloud.svg | 91 + master/_static/img/mascots-2/default.svg | 22 + master/_static/img/mascots-2/docs.svg | 35 + master/_static/img/mascots-2/driver.svg | 42 + master/_static/img/mascots-2/enterprise.svg | 50 + master/_static/img/mascots-2/forward-2.svg | 25 + master/_static/img/mascots-2/forward.svg | 25 + master/_static/img/mascots-2/headphones.svg | 27 + master/_static/img/mascots-2/heart.svg | 29 + master/_static/img/mascots-2/laptop.svg | 35 + .../img/mascots-2/magnifying-glass.svg | 24 + master/_static/img/mascots-2/manager.svg | 48 + master/_static/img/mascots-2/monitor.svg | 40 + master/_static/img/mascots-2/open-mouth.svg | 22 + master/_static/img/mascots-2/operator.svg | 26 + master/_static/img/mascots-2/plug.svg | 40 + master/_static/img/mascots-2/repair.svg | 71 + master/_static/img/mascots-2/server.svg | 64 + master/_static/img/mascots-2/sleepy.svg | 33 + .../_static/img/mascots-2/smile-learning.svg | 19 + master/_static/img/mascots-2/stretched-up.svg | 21 + master/_static/img/mascots-2/toolbox.svg | 83 + master/_static/img/mascots-2/university.svg | 52 + master/_static/img/mascots-2/workshop.svg | 60 + master/_static/img/mascots-2/wow-up.svg | 22 + master/_static/img/mascots-2/wow.svg | 22 + master/_static/img/mascots-2/yummy.svg | 18 + master/_static/img/mascots/404.jpg | Bin 0 -> 29400 bytes .../_static/img/mascots/scylla-3monsters.png | Bin 0 -> 35624 bytes .../img/mascots/scylla-advisor-crystal.png | Bin 0 -> 67593 bytes .../_static/img/mascots/scylla-alternator.svg | 1 + master/_static/img/mascots/scylla-cloud.svg | 1 + .../mascots/scylla-computer-3-monsters.png | Bin 0 -> 44539 bytes .../img/mascots/scylla-computer-headset.png | Bin 0 -> 22297 bytes .../img/mascots/scylla-cup-number-one.png | Bin 0 -> 22675 bytes master/_static/img/mascots/scylla-docs.svg | 1 + master/_static/img/mascots/scylla-drivers.svg | 1 + .../_static/img/mascots/scylla-enterprise.svg | 1 + .../img/mascots/scylla-forklift-boxes.png | Bin 0 -> 29196 bytes .../img/mascots/scylla-forklift-migration.png | Bin 0 -> 24191 bytes master/_static/img/mascots/scylla-gear.png | Bin 0 -> 64841 bytes master/_static/img/mascots/scylla-hardhat.png | Bin 0 -> 20163 bytes .../_static/img/mascots/scylla-headband.png | Bin 0 -> 40533 bytes master/_static/img/mascots/scylla-headset.png | Bin 0 -> 19094 bytes master/_static/img/mascots/scylla-hearts.png | Bin 0 -> 22252 bytes .../img/mascots/scylla-looking-down.png | Bin 0 -> 70044 bytes .../_static/img/mascots/scylla-looking-up.png | Bin 0 -> 69083 bytes .../scylla-magnifying-glass-fronting.png | Bin 0 -> 17463 bytes .../img/mascots/scylla-magnifying-glass.png | Bin 0 -> 16651 bytes master/_static/img/mascots/scylla-manager.svg | 1 + master/_static/img/mascots/scylla-monitor.svg | 1 + .../img/mascots/scylla-movement-fast.png | Bin 0 -> 18439 bytes .../_static/img/mascots/scylla-movement.png | Bin 0 -> 14720 bytes .../_static/img/mascots/scylla-onpremise.png | Bin 0 -> 33081 bytes .../_static/img/mascots/scylla-opensource.svg | 1 + .../_static/img/mascots/scylla-operator.svg | 1 + master/_static/img/mascots/scylla-plugin.png | Bin 0 -> 52683 bytes .../img/mascots/scylla-release-mascot.png | Bin 0 -> 31893 bytes master/_static/img/mascots/scylla-repair.png | Bin 0 -> 21261 bytes master/_static/img/mascots/scylla-server.png | Bin 0 -> 48529 bytes .../_static/img/mascots/scylla-sleeping.png | Bin 0 -> 12942 bytes .../img/mascots/scylla-tall-measure.png | Bin 0 -> 18996 bytes .../_static/img/mascots/scylla-university.png | Bin 0 -> 26146 bytes master/_static/img/mascots/scylla-weights.png | Bin 0 -> 40973 bytes .../img/mascots/scylla-window-cleaning.png | Bin 0 -> 34761 bytes .../img/mascots/scylla-with-computer-2.png | Bin 0 -> 18803 bytes .../img/mascots/scylla-with-computer.png | Bin 0 -> 19926 bytes .../_static/img/mascots/scylla-with-linux.png | Bin 0 -> 45076 bytes .../_static/img/mascots/scylla-writting.png | Bin 0 -> 34449 bytes master/_static/img/menu.svg | 3 + .../_static/img/scylladb-logo-horizontal.svg | 1 + master/_static/js/main.bundle.js | 2 + master/_static/js/main.bundle.js.LICENSE.txt | 256 + master/_static/js/runtime.bundle.js | 1 + master/_static/language_data.js | 199 + master/_static/minus.png | Bin 0 -> 90 bytes master/_static/plus.png | Bin 0 -> 90 bytes master/_static/pygments.css | 75 + master/_static/searchtools.js | 620 + master/_static/sphinx_collapse.css | 31 + master/_static/sphinx_highlight.js | 154 + master/_static/tabs.css | 89 + master/_static/tabs.js | 145 + .../groups/scylla.scylladb.com.html | 615 + .../scylla.scylladb.com/nodeconfigs.html | 2841 ++ .../scylla.scylladb.com/scyllaclusters.html | 7440 +++++ .../scylladbdatacenters.html | 25109 ++++++++++++++++ .../scylladbmonitorings.html | 5298 ++++ .../scyllaoperatorconfigs.html | 791 + master/api-reference/index.html | 626 + master/clients/alternator.html | 704 + master/clients/cql.html | 750 + master/clients/discovery.html | 689 + master/clients/index.html | 606 + master/contributing.html | 766 + master/eks.html | 760 + master/exposing.html | 911 + master/generic.html | 964 + master/genindex.html | 583 + master/gke.html | 800 + master/helm.html | 948 + master/index.html | 629 + master/manager.html | 835 + master/migration.html | 772 + master/monitoring.html | 818 + master/multidc/eks.html | 801 + master/multidc/gke.html | 771 + master/multidc/index.html | 612 + master/multidc/multidc.html | 1202 + master/nodeoperations/automatic-cleanup.html | 609 + master/nodeoperations/index.html | 608 + master/nodeoperations/maintenance-mode.html | 618 + master/nodeoperations/replace-node.html | 692 + master/nodeoperations/restore.html | 843 + master/nodeoperations/scylla-upgrade.html | 691 + master/objects.inv | Bin 0 -> 15886 bytes master/performance.html | 700 + master/releases.html | 859 + master/search.html | 586 + master/searchindex.js | 1 + master/sitemap.xml | 2 + master/support/index.html | 607 + master/support/known-issues.html | 630 + master/support/must-gather.html | 717 + master/support/overview.html | 632 + master/support/troubleshooting/index.html | 613 + .../support/troubleshooting/installation.html | 668 + master/upgrade.html | 821 + stable/.buildinfo | 4 + .../groups/scylla.scylladb.com.doctree | Bin 0 -> 4004 bytes .../scylla.scylladb.com/nodeconfigs.doctree | Bin 0 -> 398919 bytes .../scyllaclusters.doctree | Bin 0 -> 1217790 bytes .../scylladbmonitorings.doctree | Bin 0 -> 889762 bytes .../scyllaoperatorconfigs.doctree | Bin 0 -> 29805 bytes stable/.doctrees/api-reference/index.doctree | Bin 0 -> 5640 bytes stable/.doctrees/clients/alternator.doctree | Bin 0 -> 16848 bytes stable/.doctrees/clients/cql.doctree | Bin 0 -> 17802 bytes stable/.doctrees/clients/discovery.doctree | Bin 0 -> 16073 bytes stable/.doctrees/clients/index.doctree | Bin 0 -> 3759 bytes stable/.doctrees/contributing.doctree | Bin 0 -> 28823 bytes stable/.doctrees/eks.doctree | Bin 0 -> 23049 bytes stable/.doctrees/environment.pickle | Bin 0 -> 746657 bytes stable/.doctrees/exposing.doctree | Bin 0 -> 38769 bytes stable/.doctrees/generic.doctree | Bin 0 -> 63955 bytes stable/.doctrees/gke.doctree | Bin 0 -> 30395 bytes stable/.doctrees/helm.doctree | Bin 0 -> 44205 bytes stable/.doctrees/index.doctree | Bin 0 -> 17713 bytes stable/.doctrees/manager.doctree | Bin 0 -> 44322 bytes stable/.doctrees/migration.doctree | Bin 0 -> 33862 bytes stable/.doctrees/monitoring.doctree | Bin 0 -> 30009 bytes stable/.doctrees/multidc/eks.doctree | Bin 0 -> 30117 bytes stable/.doctrees/multidc/gke.doctree | Bin 0 -> 29444 bytes stable/.doctrees/multidc/index.doctree | Bin 0 -> 4530 bytes stable/.doctrees/multidc/multidc.doctree | Bin 0 -> 69887 bytes .../nodeoperations/automatic-cleanup.doctree | Bin 0 -> 4219 bytes stable/.doctrees/nodeoperations/index.doctree | Bin 0 -> 3956 bytes .../nodeoperations/maintenance-mode.doctree | Bin 0 -> 5381 bytes .../nodeoperations/replace-node.doctree | Bin 0 -> 15883 bytes .../.doctrees/nodeoperations/restore.doctree | Bin 0 -> 35794 bytes .../nodeoperations/scylla-upgrade.doctree | Bin 0 -> 24823 bytes stable/.doctrees/performance.doctree | Bin 0 -> 16111 bytes stable/.doctrees/releases.doctree | Bin 0 -> 40933 bytes stable/.doctrees/support/index.doctree | Bin 0 -> 3757 bytes stable/.doctrees/support/known-issues.doctree | Bin 0 -> 5378 bytes stable/.doctrees/support/must-gather.doctree | Bin 0 -> 19890 bytes stable/.doctrees/support/overview.doctree | Bin 0 -> 6097 bytes .../support/troubleshooting/index.doctree | Bin 0 -> 3747 bytes .../troubleshooting/installation.doctree | Bin 0 -> 9193 bytes stable/.doctrees/upgrade.doctree | Bin 0 -> 30400 bytes stable/.nojekyll | 0 stable/404.html | 31 + stable/CNAME | 1 + stable/_images/clusterip.svg | 3 + stable/_images/loadbalancer.svg | 3 + stable/_images/logo.png | Bin 0 -> 35103 bytes stable/_images/multivpc.svg | 3 + stable/_images/podips.svg | 3 + .../groups/scylla.scylladb.com.rst.txt | 8 + .../scylla.scylladb.com/nodeconfigs.rst.txt | 1629 + .../scyllaclusters.rst.txt | 4996 +++ .../scylladbmonitorings.rst.txt | 3441 +++ .../scyllaoperatorconfigs.rst.txt | 126 + stable/_sources/api-reference/index.rst.txt | 13 + stable/_sources/clients/alternator.md.txt | 94 + stable/_sources/clients/cql.md.txt | 129 + stable/_sources/clients/discovery.md.txt | 72 + stable/_sources/clients/index.rst.txt | 12 + stable/_sources/contributing.md.txt | 155 + stable/_sources/eks.md.txt | 128 + stable/_sources/exposing.md.txt | 304 + stable/_sources/generic.md.txt | 372 + stable/_sources/gke.md.txt | 173 + stable/_sources/helm.md.txt | 339 + stable/_sources/index.rst.txt | 67 + stable/_sources/manager.md.txt | 258 + stable/_sources/migration.md.txt | 146 + stable/_sources/monitoring.md.txt | 181 + stable/_sources/multidc/eks.md.txt | 168 + stable/_sources/multidc/gke.md.txt | 156 + stable/_sources/multidc/index.rst.txt | 18 + stable/_sources/multidc/multidc.md.txt | 601 + .../nodeoperations/automatic-cleanup.md.txt | 6 + stable/_sources/nodeoperations/index.rst.txt | 12 + .../nodeoperations/maintenance-mode.md.txt | 19 + .../nodeoperations/replace-node.md.txt | 74 + stable/_sources/nodeoperations/restore.md.txt | 239 + .../nodeoperations/scylla-upgrade.md.txt | 102 + stable/_sources/performance.md.txt | 100 + stable/_sources/releases.md.txt | 96 + stable/_sources/support/index.rst.txt | 12 + stable/_sources/support/known-issues.md.txt | 14 + stable/_sources/support/must-gather.md.txt | 101 + stable/_sources/support/overview.md.txt | 14 + .../support/troubleshooting/index.rst.txt | 8 + .../troubleshooting/installation.md.txt | 34 + stable/_sources/upgrade.md.txt | 184 + ...e.1e8bd061cd6da7fc9cf755528e8ffc24.min.css | 1 + stable/_sphinx_design_static/design-tabs.js | 27 + stable/_static/basic.css | 925 + stable/_static/check-solid.svg | 4 + stable/_static/clipboard.min.js | 7 + stable/_static/copy-button.svg | 5 + stable/_static/copybutton.css | 94 + stable/_static/copybutton.js | 248 + stable/_static/copybutton_funcs.js | 73 + stable/_static/css/main.css | 1 + ...e.1e8bd061cd6da7fc9cf755528e8ffc24.min.css | 1 + stable/_static/design-tabs.js | 27 + stable/_static/doctools.js | 156 + stable/_static/documentation_options.js | 13 + stable/_static/file.png | Bin 0 -> 286 bytes stable/_static/img/banner-background.svg | 10 + stable/_static/img/favicon-228x228.png | Bin 0 -> 4428 bytes stable/_static/img/favicon-32x32.png | Bin 0 -> 837 bytes stable/_static/img/favicon.ico | Bin 0 -> 1150 bytes stable/_static/img/icons/icon-about-team.svg | 1 + stable/_static/img/icons/icon-about-us-m.svg | 1 + stable/_static/img/icons/icon-about-us.svg | 1 + stable/_static/img/icons/icon-alternator.svg | 1 + stable/_static/img/icons/icon-apps.svg | 1 + .../_static/img/icons/icon-architecture.svg | 1 + stable/_static/img/icons/icon-benchmarks.svg | 1 + stable/_static/img/icons/icon-blog.svg | 1 + stable/_static/img/icons/icon-careers.svg | 1 + .../_static/img/icons/icon-chevron-left.svg | 3 + .../_static/img/icons/icon-chevron-right.svg | 3 + stable/_static/img/icons/icon-circe.svg | 1 + stable/_static/img/icons/icon-clock.svg | 1 + stable/_static/img/icons/icon-close.svg | 12 + stable/_static/img/icons/icon-cloud-docs.svg | 1 + stable/_static/img/icons/icon-cloud.svg | 1 + stable/_static/img/icons/icon-comparison.svg | 1 + stable/_static/img/icons/icon-contact-us.svg | 1 + .../img/icons/icon-developers-blog.svg | 1 + stable/_static/img/icons/icon-docs.svg | 1 + .../_static/img/icons/icon-enterprise-m.svg | 33 + stable/_static/img/icons/icon-enterprise.svg | 1 + stable/_static/img/icons/icon-events.svg | 1 + stable/_static/img/icons/icon-exclamation.svg | 10 + stable/_static/img/icons/icon-expand.svg | 50 + stable/_static/img/icons/icon-forum.svg | 1 + .../img/icons/icon-getting-started.svg | 1 + stable/_static/img/icons/icon-glossary.svg | 1 + stable/_static/img/icons/icon-help.svg | 1 + stable/_static/img/icons/icon-home.svg | 1 + stable/_static/img/icons/icon-infoworld.svg | 1 + .../_static/img/icons/icon-integrations.svg | 1 + .../_static/img/icons/icon-knowledge-base.svg | 1 + stable/_static/img/icons/icon-less.svg | 8 + stable/_static/img/icons/icon-live-test.svg | 1 + stable/_static/img/icons/icon-mail-list.svg | 1 + stable/_static/img/icons/icon-manager.svg | 1 + .../img/icons/icon-memory-management.svg | 1 + stable/_static/img/icons/icon-modeling.svg | 1 + stable/_static/img/icons/icon-monitoring.svg | 1 + stable/_static/img/icons/icon-networking.svg | 1 + stable/_static/img/icons/icon-news.svg | 1 + stable/_static/img/icons/icon-newsletter.svg | 1 + stable/_static/img/icons/icon-nsql-guides.svg | 1 + stable/_static/img/icons/icon-open-source.svg | 1 + stable/_static/img/icons/icon-operator.svg | 1 + stable/_static/img/icons/icon-overview.svg | 1 + stable/_static/img/icons/icon-partners.svg | 1 + stable/_static/img/icons/icon-plus.svg | 8 + stable/_static/img/icons/icon-pricing.svg | 1 + .../_static/img/icons/icon-release-notes.svg | 1 + .../img/icons/icon-resource-center.svg | 1 + stable/_static/img/icons/icon-roadmap.svg | 1 + stable/_static/img/icons/icon-search.svg | 4 + stable/_static/img/icons/icon-slack.svg | 1 + .../_static/img/icons/icon-stack-overflow.svg | 4 + stable/_static/img/icons/icon-summit.svg | 1 + stable/_static/img/icons/icon-support.svg | 1 + stable/_static/img/icons/icon-tech-talks.svg | 1 + stable/_static/img/icons/icon-testing.svg | 1 + stable/_static/img/icons/icon-thumbs-down.svg | 1 + stable/_static/img/icons/icon-thumbs-up.svg | 1 + stable/_static/img/icons/icon-tip.svg | 5 + stable/_static/img/icons/icon-training.svg | 1 + .../_static/img/icons/icon-triangle-down.svg | 3 + stable/_static/img/icons/icon-university.svg | 1 + stable/_static/img/icons/icon-users-blog.svg | 1 + stable/_static/img/icons/icon-warning.svg | 10 + stable/_static/img/icons/icon-webinars.svg | 1 + stable/_static/img/icons/icon-whitepapers.svg | 1 + stable/_static/img/icons/icon-workshop.svg | 1 + .../img/logo-scylla-horizontal-color.svg | 55 + .../img/logo-scylla-horizontal-light.svg | 53 + .../img/mascots-2/2-monster-laptop.svg | 53 + stable/_static/img/mascots-2/alternator.svg | 39 + stable/_static/img/mascots-2/award.svg | 65 + stable/_static/img/mascots-2/care-pet.svg | 57 + stable/_static/img/mascots-2/cdc.svg | 46 + stable/_static/img/mascots-2/chef.svg | 39 + stable/_static/img/mascots-2/cloud.svg | 91 + stable/_static/img/mascots-2/default.svg | 22 + stable/_static/img/mascots-2/docs.svg | 35 + stable/_static/img/mascots-2/driver.svg | 42 + stable/_static/img/mascots-2/enterprise.svg | 50 + stable/_static/img/mascots-2/forward-2.svg | 25 + stable/_static/img/mascots-2/forward.svg | 25 + stable/_static/img/mascots-2/headphones.svg | 27 + stable/_static/img/mascots-2/heart.svg | 29 + stable/_static/img/mascots-2/laptop.svg | 35 + .../img/mascots-2/magnifying-glass.svg | 24 + stable/_static/img/mascots-2/manager.svg | 48 + stable/_static/img/mascots-2/monitor.svg | 40 + stable/_static/img/mascots-2/open-mouth.svg | 22 + stable/_static/img/mascots-2/operator.svg | 26 + stable/_static/img/mascots-2/plug.svg | 40 + stable/_static/img/mascots-2/repair.svg | 71 + stable/_static/img/mascots-2/server.svg | 64 + stable/_static/img/mascots-2/sleepy.svg | 33 + .../_static/img/mascots-2/smile-learning.svg | 19 + stable/_static/img/mascots-2/stretched-up.svg | 21 + stable/_static/img/mascots-2/toolbox.svg | 83 + stable/_static/img/mascots-2/university.svg | 52 + stable/_static/img/mascots-2/workshop.svg | 60 + stable/_static/img/mascots-2/wow-up.svg | 22 + stable/_static/img/mascots-2/wow.svg | 22 + stable/_static/img/mascots-2/yummy.svg | 18 + stable/_static/img/mascots/404.jpg | Bin 0 -> 29400 bytes .../_static/img/mascots/scylla-3monsters.png | Bin 0 -> 35624 bytes .../img/mascots/scylla-advisor-crystal.png | Bin 0 -> 67593 bytes .../_static/img/mascots/scylla-alternator.svg | 1 + stable/_static/img/mascots/scylla-cloud.svg | 1 + .../mascots/scylla-computer-3-monsters.png | Bin 0 -> 44539 bytes .../img/mascots/scylla-computer-headset.png | Bin 0 -> 22297 bytes .../img/mascots/scylla-cup-number-one.png | Bin 0 -> 22675 bytes stable/_static/img/mascots/scylla-docs.svg | 1 + stable/_static/img/mascots/scylla-drivers.svg | 1 + .../_static/img/mascots/scylla-enterprise.svg | 1 + .../img/mascots/scylla-forklift-boxes.png | Bin 0 -> 29196 bytes .../img/mascots/scylla-forklift-migration.png | Bin 0 -> 24191 bytes stable/_static/img/mascots/scylla-gear.png | Bin 0 -> 64841 bytes stable/_static/img/mascots/scylla-hardhat.png | Bin 0 -> 20163 bytes .../_static/img/mascots/scylla-headband.png | Bin 0 -> 40533 bytes stable/_static/img/mascots/scylla-headset.png | Bin 0 -> 19094 bytes stable/_static/img/mascots/scylla-hearts.png | Bin 0 -> 22252 bytes .../img/mascots/scylla-looking-down.png | Bin 0 -> 70044 bytes .../_static/img/mascots/scylla-looking-up.png | Bin 0 -> 69083 bytes .../scylla-magnifying-glass-fronting.png | Bin 0 -> 17463 bytes .../img/mascots/scylla-magnifying-glass.png | Bin 0 -> 16651 bytes stable/_static/img/mascots/scylla-manager.svg | 1 + stable/_static/img/mascots/scylla-monitor.svg | 1 + .../img/mascots/scylla-movement-fast.png | Bin 0 -> 18439 bytes .../_static/img/mascots/scylla-movement.png | Bin 0 -> 14720 bytes .../_static/img/mascots/scylla-onpremise.png | Bin 0 -> 33081 bytes .../_static/img/mascots/scylla-opensource.svg | 1 + .../_static/img/mascots/scylla-operator.svg | 1 + stable/_static/img/mascots/scylla-plugin.png | Bin 0 -> 52683 bytes .../img/mascots/scylla-release-mascot.png | Bin 0 -> 31893 bytes stable/_static/img/mascots/scylla-repair.png | Bin 0 -> 21261 bytes stable/_static/img/mascots/scylla-server.png | Bin 0 -> 48529 bytes .../_static/img/mascots/scylla-sleeping.png | Bin 0 -> 12942 bytes .../img/mascots/scylla-tall-measure.png | Bin 0 -> 18996 bytes .../_static/img/mascots/scylla-university.png | Bin 0 -> 26146 bytes stable/_static/img/mascots/scylla-weights.png | Bin 0 -> 40973 bytes .../img/mascots/scylla-window-cleaning.png | Bin 0 -> 34761 bytes .../img/mascots/scylla-with-computer-2.png | Bin 0 -> 18803 bytes .../img/mascots/scylla-with-computer.png | Bin 0 -> 19926 bytes .../_static/img/mascots/scylla-with-linux.png | Bin 0 -> 45076 bytes .../_static/img/mascots/scylla-writting.png | Bin 0 -> 34449 bytes stable/_static/img/menu.svg | 3 + .../_static/img/scylladb-logo-horizontal.svg | 1 + stable/_static/js/main.bundle.js | 2 + stable/_static/js/main.bundle.js.LICENSE.txt | 256 + stable/_static/js/runtime.bundle.js | 1 + stable/_static/language_data.js | 199 + stable/_static/minus.png | Bin 0 -> 90 bytes stable/_static/plus.png | Bin 0 -> 90 bytes stable/_static/pygments.css | 75 + stable/_static/searchtools.js | 620 + stable/_static/sphinx_collapse.css | 31 + stable/_static/sphinx_highlight.js | 154 + stable/_static/tabs.css | 89 + stable/_static/tabs.js | 145 + .../groups/scylla.scylladb.com.html | 603 + .../scylla.scylladb.com/nodeconfigs.html | 2830 ++ .../scylla.scylladb.com/scyllaclusters.html | 7429 +++++ .../scylladbmonitorings.html | 5287 ++++ .../scyllaoperatorconfigs.html | 780 + stable/api-reference/index.html | 614 + stable/clients/alternator.html | 693 + stable/clients/cql.html | 739 + stable/clients/discovery.html | 678 + stable/clients/index.html | 595 + stable/contributing.html | 755 + stable/eks.html | 749 + stable/exposing.html | 900 + stable/generic.html | 953 + stable/genindex.html | 572 + stable/gke.html | 789 + stable/helm.html | 937 + stable/index.html | 618 + stable/manager.html | 824 + stable/migration.html | 761 + stable/monitoring.html | 807 + stable/multidc/eks.html | 790 + stable/multidc/gke.html | 760 + stable/multidc/index.html | 601 + stable/multidc/multidc.html | 1191 + stable/nodeoperations/automatic-cleanup.html | 598 + stable/nodeoperations/index.html | 597 + stable/nodeoperations/maintenance-mode.html | 607 + stable/nodeoperations/replace-node.html | 681 + stable/nodeoperations/restore.html | 832 + stable/nodeoperations/scylla-upgrade.html | 680 + stable/objects.inv | Bin 0 -> 6766 bytes stable/performance.html | 689 + stable/releases.html | 848 + stable/search.html | 575 + stable/searchindex.js | 1 + stable/sitemap.xml | 2 + stable/support/index.html | 596 + stable/support/known-issues.html | 619 + stable/support/must-gather.html | 706 + stable/support/overview.html | 621 + stable/support/troubleshooting/index.html | 602 + .../support/troubleshooting/installation.html | 657 + stable/upgrade.html | 810 + v1.12/.buildinfo | 4 + .../groups/scylla.scylladb.com.doctree | Bin 0 -> 4004 bytes .../scylla.scylladb.com/nodeconfigs.doctree | Bin 0 -> 398773 bytes .../scyllaclusters.doctree | Bin 0 -> 1216056 bytes .../scylladbmonitorings.doctree | Bin 0 -> 889762 bytes .../scyllaoperatorconfigs.doctree | Bin 0 -> 21532 bytes v1.12/.doctrees/api-reference/index.doctree | Bin 0 -> 5640 bytes v1.12/.doctrees/clients/alternator.doctree | Bin 0 -> 16848 bytes v1.12/.doctrees/clients/cql.doctree | Bin 0 -> 17802 bytes v1.12/.doctrees/clients/discovery.doctree | Bin 0 -> 16073 bytes v1.12/.doctrees/clients/index.doctree | Bin 0 -> 3759 bytes v1.12/.doctrees/contributing.doctree | Bin 0 -> 28823 bytes v1.12/.doctrees/eks.doctree | Bin 0 -> 23237 bytes v1.12/.doctrees/environment.pickle | Bin 0 -> 747149 bytes v1.12/.doctrees/exposing.doctree | Bin 0 -> 38124 bytes v1.12/.doctrees/generic.doctree | Bin 0 -> 65835 bytes v1.12/.doctrees/gke.doctree | Bin 0 -> 30395 bytes v1.12/.doctrees/helm.doctree | Bin 0 -> 44205 bytes v1.12/.doctrees/index.doctree | Bin 0 -> 16782 bytes v1.12/.doctrees/manager.doctree | Bin 0 -> 44322 bytes v1.12/.doctrees/migration.doctree | Bin 0 -> 33862 bytes v1.12/.doctrees/monitoring.doctree | Bin 0 -> 29911 bytes v1.12/.doctrees/multidc/eks.doctree | Bin 0 -> 30117 bytes v1.12/.doctrees/multidc/gke.doctree | Bin 0 -> 29444 bytes v1.12/.doctrees/multidc/index.doctree | Bin 0 -> 4530 bytes v1.12/.doctrees/multidc/multidc.doctree | Bin 0 -> 69887 bytes .../nodeoperations/automatic-cleanup.doctree | Bin 0 -> 4219 bytes v1.12/.doctrees/nodeoperations/index.doctree | Bin 0 -> 3956 bytes .../nodeoperations/maintenance-mode.doctree | Bin 0 -> 5381 bytes .../nodeoperations/replace-node.doctree | Bin 0 -> 15883 bytes .../.doctrees/nodeoperations/restore.doctree | Bin 0 -> 35794 bytes .../nodeoperations/scylla-upgrade.doctree | Bin 0 -> 24823 bytes v1.12/.doctrees/performance.doctree | Bin 0 -> 15268 bytes v1.12/.doctrees/releases.doctree | Bin 0 -> 57839 bytes v1.12/.doctrees/support/index.doctree | Bin 0 -> 3757 bytes v1.12/.doctrees/support/known-issues.doctree | Bin 0 -> 5378 bytes v1.12/.doctrees/support/must-gather.doctree | Bin 0 -> 19890 bytes v1.12/.doctrees/support/overview.doctree | Bin 0 -> 6097 bytes .../support/troubleshooting/index.doctree | Bin 0 -> 3747 bytes .../troubleshooting/installation.doctree | Bin 0 -> 9193 bytes v1.12/.doctrees/upgrade.doctree | Bin 0 -> 30400 bytes v1.12/.nojekyll | 0 v1.12/404.html | 31 + v1.12/CNAME | 1 + v1.12/_images/clusterip.svg | 3 + v1.12/_images/loadbalancer.svg | 3 + v1.12/_images/logo.png | Bin 0 -> 35103 bytes v1.12/_images/multivpc.svg | 3 + v1.12/_images/podips.svg | 3 + .../groups/scylla.scylladb.com.rst.txt | 8 + .../scylla.scylladb.com/nodeconfigs.rst.txt | 1629 + .../scyllaclusters.rst.txt | 4972 +++ .../scylladbmonitorings.rst.txt | 3441 +++ .../scyllaoperatorconfigs.rst.txt | 94 + v1.12/_sources/api-reference/index.rst.txt | 13 + v1.12/_sources/clients/alternator.md.txt | 94 + v1.12/_sources/clients/cql.md.txt | 129 + v1.12/_sources/clients/discovery.md.txt | 72 + v1.12/_sources/clients/index.rst.txt | 12 + v1.12/_sources/contributing.md.txt | 155 + v1.12/_sources/eks.md.txt | 129 + v1.12/_sources/exposing.md.txt | 300 + v1.12/_sources/generic.md.txt | 386 + v1.12/_sources/gke.md.txt | 173 + v1.12/_sources/helm.md.txt | 339 + v1.12/_sources/index.rst.txt | 67 + v1.12/_sources/manager.md.txt | 258 + v1.12/_sources/migration.md.txt | 146 + v1.12/_sources/monitoring.md.txt | 180 + v1.12/_sources/multidc/eks.md.txt | 168 + v1.12/_sources/multidc/gke.md.txt | 156 + v1.12/_sources/multidc/index.rst.txt | 18 + v1.12/_sources/multidc/multidc.md.txt | 601 + .../nodeoperations/automatic-cleanup.md.txt | 6 + v1.12/_sources/nodeoperations/index.rst.txt | 12 + .../nodeoperations/maintenance-mode.md.txt | 19 + .../nodeoperations/replace-node.md.txt | 74 + v1.12/_sources/nodeoperations/restore.md.txt | 239 + .../nodeoperations/scylla-upgrade.md.txt | 102 + v1.12/_sources/performance.md.txt | 95 + v1.12/_sources/releases.md.txt | 86 + v1.12/_sources/support/index.rst.txt | 12 + v1.12/_sources/support/known-issues.md.txt | 14 + v1.12/_sources/support/must-gather.md.txt | 101 + v1.12/_sources/support/overview.md.txt | 14 + .../support/troubleshooting/index.rst.txt | 8 + .../troubleshooting/installation.md.txt | 34 + v1.12/_sources/upgrade.md.txt | 184 + ...e.1e8bd061cd6da7fc9cf755528e8ffc24.min.css | 1 + v1.12/_sphinx_design_static/design-tabs.js | 27 + v1.12/_static/basic.css | 925 + v1.12/_static/check-solid.svg | 4 + v1.12/_static/clipboard.min.js | 7 + v1.12/_static/copy-button.svg | 5 + v1.12/_static/copybutton.css | 94 + v1.12/_static/copybutton.js | 248 + v1.12/_static/copybutton_funcs.js | 73 + v1.12/_static/css/main.css | 1 + ...e.1e8bd061cd6da7fc9cf755528e8ffc24.min.css | 1 + v1.12/_static/design-tabs.js | 27 + v1.12/_static/doctools.js | 156 + v1.12/_static/documentation_options.js | 13 + v1.12/_static/file.png | Bin 0 -> 286 bytes v1.12/_static/img/banner-background.svg | 10 + v1.12/_static/img/favicon-228x228.png | Bin 0 -> 4428 bytes v1.12/_static/img/favicon-32x32.png | Bin 0 -> 837 bytes v1.12/_static/img/favicon.ico | Bin 0 -> 1150 bytes v1.12/_static/img/icons/icon-about-team.svg | 1 + v1.12/_static/img/icons/icon-about-us-m.svg | 1 + v1.12/_static/img/icons/icon-about-us.svg | 1 + v1.12/_static/img/icons/icon-alternator.svg | 1 + v1.12/_static/img/icons/icon-apps.svg | 1 + v1.12/_static/img/icons/icon-architecture.svg | 1 + v1.12/_static/img/icons/icon-benchmarks.svg | 1 + v1.12/_static/img/icons/icon-blog.svg | 1 + v1.12/_static/img/icons/icon-careers.svg | 1 + v1.12/_static/img/icons/icon-chevron-left.svg | 3 + .../_static/img/icons/icon-chevron-right.svg | 3 + v1.12/_static/img/icons/icon-circe.svg | 1 + v1.12/_static/img/icons/icon-clock.svg | 1 + v1.12/_static/img/icons/icon-close.svg | 12 + v1.12/_static/img/icons/icon-cloud-docs.svg | 1 + v1.12/_static/img/icons/icon-cloud.svg | 1 + v1.12/_static/img/icons/icon-comparison.svg | 1 + v1.12/_static/img/icons/icon-contact-us.svg | 1 + .../img/icons/icon-developers-blog.svg | 1 + v1.12/_static/img/icons/icon-docs.svg | 1 + v1.12/_static/img/icons/icon-enterprise-m.svg | 33 + v1.12/_static/img/icons/icon-enterprise.svg | 1 + v1.12/_static/img/icons/icon-events.svg | 1 + v1.12/_static/img/icons/icon-exclamation.svg | 10 + v1.12/_static/img/icons/icon-expand.svg | 50 + v1.12/_static/img/icons/icon-forum.svg | 1 + .../img/icons/icon-getting-started.svg | 1 + v1.12/_static/img/icons/icon-glossary.svg | 1 + v1.12/_static/img/icons/icon-help.svg | 1 + v1.12/_static/img/icons/icon-home.svg | 1 + v1.12/_static/img/icons/icon-infoworld.svg | 1 + v1.12/_static/img/icons/icon-integrations.svg | 1 + .../_static/img/icons/icon-knowledge-base.svg | 1 + v1.12/_static/img/icons/icon-less.svg | 8 + v1.12/_static/img/icons/icon-live-test.svg | 1 + v1.12/_static/img/icons/icon-mail-list.svg | 1 + v1.12/_static/img/icons/icon-manager.svg | 1 + .../img/icons/icon-memory-management.svg | 1 + v1.12/_static/img/icons/icon-modeling.svg | 1 + v1.12/_static/img/icons/icon-monitoring.svg | 1 + v1.12/_static/img/icons/icon-networking.svg | 1 + v1.12/_static/img/icons/icon-news.svg | 1 + v1.12/_static/img/icons/icon-newsletter.svg | 1 + v1.12/_static/img/icons/icon-nsql-guides.svg | 1 + v1.12/_static/img/icons/icon-open-source.svg | 1 + v1.12/_static/img/icons/icon-operator.svg | 1 + v1.12/_static/img/icons/icon-overview.svg | 1 + v1.12/_static/img/icons/icon-partners.svg | 1 + v1.12/_static/img/icons/icon-plus.svg | 8 + v1.12/_static/img/icons/icon-pricing.svg | 1 + .../_static/img/icons/icon-release-notes.svg | 1 + .../img/icons/icon-resource-center.svg | 1 + v1.12/_static/img/icons/icon-roadmap.svg | 1 + v1.12/_static/img/icons/icon-search.svg | 4 + v1.12/_static/img/icons/icon-slack.svg | 1 + .../_static/img/icons/icon-stack-overflow.svg | 4 + v1.12/_static/img/icons/icon-summit.svg | 1 + v1.12/_static/img/icons/icon-support.svg | 1 + v1.12/_static/img/icons/icon-tech-talks.svg | 1 + v1.12/_static/img/icons/icon-testing.svg | 1 + v1.12/_static/img/icons/icon-thumbs-down.svg | 1 + v1.12/_static/img/icons/icon-thumbs-up.svg | 1 + v1.12/_static/img/icons/icon-tip.svg | 5 + v1.12/_static/img/icons/icon-training.svg | 1 + .../_static/img/icons/icon-triangle-down.svg | 3 + v1.12/_static/img/icons/icon-university.svg | 1 + v1.12/_static/img/icons/icon-users-blog.svg | 1 + v1.12/_static/img/icons/icon-warning.svg | 10 + v1.12/_static/img/icons/icon-webinars.svg | 1 + v1.12/_static/img/icons/icon-whitepapers.svg | 1 + v1.12/_static/img/icons/icon-workshop.svg | 1 + .../img/logo-scylla-horizontal-color.svg | 55 + .../img/logo-scylla-horizontal-light.svg | 53 + .../img/mascots-2/2-monster-laptop.svg | 53 + v1.12/_static/img/mascots-2/alternator.svg | 39 + v1.12/_static/img/mascots-2/award.svg | 65 + v1.12/_static/img/mascots-2/care-pet.svg | 57 + v1.12/_static/img/mascots-2/cdc.svg | 46 + v1.12/_static/img/mascots-2/chef.svg | 39 + v1.12/_static/img/mascots-2/cloud.svg | 91 + v1.12/_static/img/mascots-2/default.svg | 22 + v1.12/_static/img/mascots-2/docs.svg | 35 + v1.12/_static/img/mascots-2/driver.svg | 42 + v1.12/_static/img/mascots-2/enterprise.svg | 50 + v1.12/_static/img/mascots-2/forward-2.svg | 25 + v1.12/_static/img/mascots-2/forward.svg | 25 + v1.12/_static/img/mascots-2/headphones.svg | 27 + v1.12/_static/img/mascots-2/heart.svg | 29 + v1.12/_static/img/mascots-2/laptop.svg | 35 + .../img/mascots-2/magnifying-glass.svg | 24 + v1.12/_static/img/mascots-2/manager.svg | 48 + v1.12/_static/img/mascots-2/monitor.svg | 40 + v1.12/_static/img/mascots-2/open-mouth.svg | 22 + v1.12/_static/img/mascots-2/operator.svg | 26 + v1.12/_static/img/mascots-2/plug.svg | 40 + v1.12/_static/img/mascots-2/repair.svg | 71 + v1.12/_static/img/mascots-2/server.svg | 64 + v1.12/_static/img/mascots-2/sleepy.svg | 33 + .../_static/img/mascots-2/smile-learning.svg | 19 + v1.12/_static/img/mascots-2/stretched-up.svg | 21 + v1.12/_static/img/mascots-2/toolbox.svg | 83 + v1.12/_static/img/mascots-2/university.svg | 52 + v1.12/_static/img/mascots-2/workshop.svg | 60 + v1.12/_static/img/mascots-2/wow-up.svg | 22 + v1.12/_static/img/mascots-2/wow.svg | 22 + v1.12/_static/img/mascots-2/yummy.svg | 18 + v1.12/_static/img/mascots/404.jpg | Bin 0 -> 29400 bytes .../_static/img/mascots/scylla-3monsters.png | Bin 0 -> 35624 bytes .../img/mascots/scylla-advisor-crystal.png | Bin 0 -> 67593 bytes .../_static/img/mascots/scylla-alternator.svg | 1 + v1.12/_static/img/mascots/scylla-cloud.svg | 1 + .../mascots/scylla-computer-3-monsters.png | Bin 0 -> 44539 bytes .../img/mascots/scylla-computer-headset.png | Bin 0 -> 22297 bytes .../img/mascots/scylla-cup-number-one.png | Bin 0 -> 22675 bytes v1.12/_static/img/mascots/scylla-docs.svg | 1 + v1.12/_static/img/mascots/scylla-drivers.svg | 1 + .../_static/img/mascots/scylla-enterprise.svg | 1 + .../img/mascots/scylla-forklift-boxes.png | Bin 0 -> 29196 bytes .../img/mascots/scylla-forklift-migration.png | Bin 0 -> 24191 bytes v1.12/_static/img/mascots/scylla-gear.png | Bin 0 -> 64841 bytes v1.12/_static/img/mascots/scylla-hardhat.png | Bin 0 -> 20163 bytes v1.12/_static/img/mascots/scylla-headband.png | Bin 0 -> 40533 bytes v1.12/_static/img/mascots/scylla-headset.png | Bin 0 -> 19094 bytes v1.12/_static/img/mascots/scylla-hearts.png | Bin 0 -> 22252 bytes .../img/mascots/scylla-looking-down.png | Bin 0 -> 70044 bytes .../_static/img/mascots/scylla-looking-up.png | Bin 0 -> 69083 bytes .../scylla-magnifying-glass-fronting.png | Bin 0 -> 17463 bytes .../img/mascots/scylla-magnifying-glass.png | Bin 0 -> 16651 bytes v1.12/_static/img/mascots/scylla-manager.svg | 1 + v1.12/_static/img/mascots/scylla-monitor.svg | 1 + .../img/mascots/scylla-movement-fast.png | Bin 0 -> 18439 bytes v1.12/_static/img/mascots/scylla-movement.png | Bin 0 -> 14720 bytes .../_static/img/mascots/scylla-onpremise.png | Bin 0 -> 33081 bytes .../_static/img/mascots/scylla-opensource.svg | 1 + v1.12/_static/img/mascots/scylla-operator.svg | 1 + v1.12/_static/img/mascots/scylla-plugin.png | Bin 0 -> 52683 bytes .../img/mascots/scylla-release-mascot.png | Bin 0 -> 31893 bytes v1.12/_static/img/mascots/scylla-repair.png | Bin 0 -> 21261 bytes v1.12/_static/img/mascots/scylla-server.png | Bin 0 -> 48529 bytes v1.12/_static/img/mascots/scylla-sleeping.png | Bin 0 -> 12942 bytes .../img/mascots/scylla-tall-measure.png | Bin 0 -> 18996 bytes .../_static/img/mascots/scylla-university.png | Bin 0 -> 26146 bytes v1.12/_static/img/mascots/scylla-weights.png | Bin 0 -> 40973 bytes .../img/mascots/scylla-window-cleaning.png | Bin 0 -> 34761 bytes .../img/mascots/scylla-with-computer-2.png | Bin 0 -> 18803 bytes .../img/mascots/scylla-with-computer.png | Bin 0 -> 19926 bytes .../_static/img/mascots/scylla-with-linux.png | Bin 0 -> 45076 bytes v1.12/_static/img/mascots/scylla-writting.png | Bin 0 -> 34449 bytes v1.12/_static/img/menu.svg | 3 + .../_static/img/scylladb-logo-horizontal.svg | 1 + v1.12/_static/js/main.bundle.js | 2 + v1.12/_static/js/main.bundle.js.LICENSE.txt | 256 + v1.12/_static/js/runtime.bundle.js | 1 + v1.12/_static/language_data.js | 199 + v1.12/_static/minus.png | Bin 0 -> 90 bytes v1.12/_static/plus.png | Bin 0 -> 90 bytes v1.12/_static/pygments.css | 75 + v1.12/_static/searchtools.js | 620 + v1.12/_static/sphinx_collapse.css | 31 + v1.12/_static/sphinx_highlight.js | 154 + v1.12/_static/tabs.css | 89 + v1.12/_static/tabs.js | 145 + .../groups/scylla.scylladb.com.html | 613 + .../scylla.scylladb.com/nodeconfigs.html | 2840 ++ .../scylla.scylladb.com/scyllaclusters.html | 7407 +++++ .../scylladbmonitorings.html | 5297 ++++ .../scyllaoperatorconfigs.html | 743 + v1.12/api-reference/index.html | 624 + v1.12/clients/alternator.html | 703 + v1.12/clients/cql.html | 749 + v1.12/clients/discovery.html | 688 + v1.12/clients/index.html | 605 + v1.12/contributing.html | 765 + v1.12/eks.html | 760 + v1.12/exposing.html | 906 + v1.12/generic.html | 977 + v1.12/genindex.html | 582 + v1.12/gke.html | 799 + v1.12/helm.html | 947 + v1.12/index.html | 628 + v1.12/manager.html | 834 + v1.12/migration.html | 771 + v1.12/monitoring.html | 816 + v1.12/multidc/eks.html | 800 + v1.12/multidc/gke.html | 770 + v1.12/multidc/index.html | 611 + v1.12/multidc/multidc.html | 1201 + v1.12/nodeoperations/automatic-cleanup.html | 608 + v1.12/nodeoperations/index.html | 607 + v1.12/nodeoperations/maintenance-mode.html | 617 + v1.12/nodeoperations/replace-node.html | 691 + v1.12/nodeoperations/restore.html | 842 + v1.12/nodeoperations/scylla-upgrade.html | 690 + v1.12/objects.inv | Bin 0 -> 6766 bytes v1.12/performance.html | 694 + v1.12/releases.html | 906 + v1.12/search.html | 585 + v1.12/searchindex.js | 1 + v1.12/sitemap.xml | 2 + v1.12/support/index.html | 606 + v1.12/support/known-issues.html | 629 + v1.12/support/must-gather.html | 716 + v1.12/support/overview.html | 631 + v1.12/support/troubleshooting/index.html | 612 + .../support/troubleshooting/installation.html | 667 + v1.12/upgrade.html | 820 + v1.13/.buildinfo | 4 + .../groups/scylla.scylladb.com.doctree | Bin 0 -> 4004 bytes .../scylla.scylladb.com/nodeconfigs.doctree | Bin 0 -> 398773 bytes .../scyllaclusters.doctree | Bin 0 -> 1217460 bytes .../scylladbmonitorings.doctree | Bin 0 -> 889762 bytes .../scyllaoperatorconfigs.doctree | Bin 0 -> 21532 bytes v1.13/.doctrees/api-reference/index.doctree | Bin 0 -> 5640 bytes v1.13/.doctrees/clients/alternator.doctree | Bin 0 -> 16848 bytes v1.13/.doctrees/clients/cql.doctree | Bin 0 -> 17802 bytes v1.13/.doctrees/clients/discovery.doctree | Bin 0 -> 16073 bytes v1.13/.doctrees/clients/index.doctree | Bin 0 -> 3759 bytes v1.13/.doctrees/contributing.doctree | Bin 0 -> 28823 bytes v1.13/.doctrees/eks.doctree | Bin 0 -> 23049 bytes v1.13/.doctrees/environment.pickle | Bin 0 -> 747149 bytes v1.13/.doctrees/exposing.doctree | Bin 0 -> 38124 bytes v1.13/.doctrees/generic.doctree | Bin 0 -> 65835 bytes v1.13/.doctrees/gke.doctree | Bin 0 -> 30395 bytes v1.13/.doctrees/helm.doctree | Bin 0 -> 44205 bytes v1.13/.doctrees/index.doctree | Bin 0 -> 17713 bytes v1.13/.doctrees/manager.doctree | Bin 0 -> 44322 bytes v1.13/.doctrees/migration.doctree | Bin 0 -> 33862 bytes v1.13/.doctrees/monitoring.doctree | Bin 0 -> 29911 bytes v1.13/.doctrees/multidc/eks.doctree | Bin 0 -> 30117 bytes v1.13/.doctrees/multidc/gke.doctree | Bin 0 -> 29444 bytes v1.13/.doctrees/multidc/index.doctree | Bin 0 -> 4530 bytes v1.13/.doctrees/multidc/multidc.doctree | Bin 0 -> 69887 bytes .../nodeoperations/automatic-cleanup.doctree | Bin 0 -> 4219 bytes v1.13/.doctrees/nodeoperations/index.doctree | Bin 0 -> 3956 bytes .../nodeoperations/maintenance-mode.doctree | Bin 0 -> 5381 bytes .../nodeoperations/replace-node.doctree | Bin 0 -> 15883 bytes .../.doctrees/nodeoperations/restore.doctree | Bin 0 -> 35794 bytes .../nodeoperations/scylla-upgrade.doctree | Bin 0 -> 24823 bytes v1.13/.doctrees/performance.doctree | Bin 0 -> 15268 bytes v1.13/.doctrees/releases.doctree | Bin 0 -> 40351 bytes v1.13/.doctrees/support/index.doctree | Bin 0 -> 3757 bytes v1.13/.doctrees/support/known-issues.doctree | Bin 0 -> 5378 bytes v1.13/.doctrees/support/must-gather.doctree | Bin 0 -> 19890 bytes v1.13/.doctrees/support/overview.doctree | Bin 0 -> 6097 bytes .../support/troubleshooting/index.doctree | Bin 0 -> 3747 bytes .../troubleshooting/installation.doctree | Bin 0 -> 9193 bytes v1.13/.doctrees/upgrade.doctree | Bin 0 -> 30400 bytes v1.13/.nojekyll | 0 v1.13/404.html | 31 + v1.13/CNAME | 1 + v1.13/_images/clusterip.svg | 3 + v1.13/_images/loadbalancer.svg | 3 + v1.13/_images/logo.png | Bin 0 -> 35103 bytes v1.13/_images/multivpc.svg | 3 + v1.13/_images/podips.svg | 3 + .../groups/scylla.scylladb.com.rst.txt | 8 + .../scylla.scylladb.com/nodeconfigs.rst.txt | 1629 + .../scyllaclusters.rst.txt | 4996 +++ .../scylladbmonitorings.rst.txt | 3441 +++ .../scyllaoperatorconfigs.rst.txt | 94 + v1.13/_sources/api-reference/index.rst.txt | 13 + v1.13/_sources/clients/alternator.md.txt | 94 + v1.13/_sources/clients/cql.md.txt | 129 + v1.13/_sources/clients/discovery.md.txt | 72 + v1.13/_sources/clients/index.rst.txt | 12 + v1.13/_sources/contributing.md.txt | 155 + v1.13/_sources/eks.md.txt | 128 + v1.13/_sources/exposing.md.txt | 300 + v1.13/_sources/generic.md.txt | 386 + v1.13/_sources/gke.md.txt | 173 + v1.13/_sources/helm.md.txt | 339 + v1.13/_sources/index.rst.txt | 67 + v1.13/_sources/manager.md.txt | 258 + v1.13/_sources/migration.md.txt | 146 + v1.13/_sources/monitoring.md.txt | 180 + v1.13/_sources/multidc/eks.md.txt | 168 + v1.13/_sources/multidc/gke.md.txt | 156 + v1.13/_sources/multidc/index.rst.txt | 18 + v1.13/_sources/multidc/multidc.md.txt | 601 + .../nodeoperations/automatic-cleanup.md.txt | 6 + v1.13/_sources/nodeoperations/index.rst.txt | 12 + .../nodeoperations/maintenance-mode.md.txt | 19 + .../nodeoperations/replace-node.md.txt | 74 + v1.13/_sources/nodeoperations/restore.md.txt | 239 + .../nodeoperations/scylla-upgrade.md.txt | 102 + v1.13/_sources/performance.md.txt | 95 + v1.13/_sources/releases.md.txt | 95 + v1.13/_sources/support/index.rst.txt | 12 + v1.13/_sources/support/known-issues.md.txt | 14 + v1.13/_sources/support/must-gather.md.txt | 101 + v1.13/_sources/support/overview.md.txt | 14 + .../support/troubleshooting/index.rst.txt | 8 + .../troubleshooting/installation.md.txt | 34 + v1.13/_sources/upgrade.md.txt | 184 + ...e.1e8bd061cd6da7fc9cf755528e8ffc24.min.css | 1 + v1.13/_sphinx_design_static/design-tabs.js | 27 + v1.13/_static/basic.css | 925 + v1.13/_static/check-solid.svg | 4 + v1.13/_static/clipboard.min.js | 7 + v1.13/_static/copy-button.svg | 5 + v1.13/_static/copybutton.css | 94 + v1.13/_static/copybutton.js | 248 + v1.13/_static/copybutton_funcs.js | 73 + v1.13/_static/css/main.css | 1 + ...e.1e8bd061cd6da7fc9cf755528e8ffc24.min.css | 1 + v1.13/_static/design-tabs.js | 27 + v1.13/_static/doctools.js | 156 + v1.13/_static/documentation_options.js | 13 + v1.13/_static/file.png | Bin 0 -> 286 bytes v1.13/_static/img/banner-background.svg | 10 + v1.13/_static/img/favicon-228x228.png | Bin 0 -> 4428 bytes v1.13/_static/img/favicon-32x32.png | Bin 0 -> 837 bytes v1.13/_static/img/favicon.ico | Bin 0 -> 1150 bytes v1.13/_static/img/icons/icon-about-team.svg | 1 + v1.13/_static/img/icons/icon-about-us-m.svg | 1 + v1.13/_static/img/icons/icon-about-us.svg | 1 + v1.13/_static/img/icons/icon-alternator.svg | 1 + v1.13/_static/img/icons/icon-apps.svg | 1 + v1.13/_static/img/icons/icon-architecture.svg | 1 + v1.13/_static/img/icons/icon-benchmarks.svg | 1 + v1.13/_static/img/icons/icon-blog.svg | 1 + v1.13/_static/img/icons/icon-careers.svg | 1 + v1.13/_static/img/icons/icon-chevron-left.svg | 3 + .../_static/img/icons/icon-chevron-right.svg | 3 + v1.13/_static/img/icons/icon-circe.svg | 1 + v1.13/_static/img/icons/icon-clock.svg | 1 + v1.13/_static/img/icons/icon-close.svg | 12 + v1.13/_static/img/icons/icon-cloud-docs.svg | 1 + v1.13/_static/img/icons/icon-cloud.svg | 1 + v1.13/_static/img/icons/icon-comparison.svg | 1 + v1.13/_static/img/icons/icon-contact-us.svg | 1 + .../img/icons/icon-developers-blog.svg | 1 + v1.13/_static/img/icons/icon-docs.svg | 1 + v1.13/_static/img/icons/icon-enterprise-m.svg | 33 + v1.13/_static/img/icons/icon-enterprise.svg | 1 + v1.13/_static/img/icons/icon-events.svg | 1 + v1.13/_static/img/icons/icon-exclamation.svg | 10 + v1.13/_static/img/icons/icon-expand.svg | 50 + v1.13/_static/img/icons/icon-forum.svg | 1 + .../img/icons/icon-getting-started.svg | 1 + v1.13/_static/img/icons/icon-glossary.svg | 1 + v1.13/_static/img/icons/icon-help.svg | 1 + v1.13/_static/img/icons/icon-home.svg | 1 + v1.13/_static/img/icons/icon-infoworld.svg | 1 + v1.13/_static/img/icons/icon-integrations.svg | 1 + .../_static/img/icons/icon-knowledge-base.svg | 1 + v1.13/_static/img/icons/icon-less.svg | 8 + v1.13/_static/img/icons/icon-live-test.svg | 1 + v1.13/_static/img/icons/icon-mail-list.svg | 1 + v1.13/_static/img/icons/icon-manager.svg | 1 + .../img/icons/icon-memory-management.svg | 1 + v1.13/_static/img/icons/icon-modeling.svg | 1 + v1.13/_static/img/icons/icon-monitoring.svg | 1 + v1.13/_static/img/icons/icon-networking.svg | 1 + v1.13/_static/img/icons/icon-news.svg | 1 + v1.13/_static/img/icons/icon-newsletter.svg | 1 + v1.13/_static/img/icons/icon-nsql-guides.svg | 1 + v1.13/_static/img/icons/icon-open-source.svg | 1 + v1.13/_static/img/icons/icon-operator.svg | 1 + v1.13/_static/img/icons/icon-overview.svg | 1 + v1.13/_static/img/icons/icon-partners.svg | 1 + v1.13/_static/img/icons/icon-plus.svg | 8 + v1.13/_static/img/icons/icon-pricing.svg | 1 + .../_static/img/icons/icon-release-notes.svg | 1 + .../img/icons/icon-resource-center.svg | 1 + v1.13/_static/img/icons/icon-roadmap.svg | 1 + v1.13/_static/img/icons/icon-search.svg | 4 + v1.13/_static/img/icons/icon-slack.svg | 1 + .../_static/img/icons/icon-stack-overflow.svg | 4 + v1.13/_static/img/icons/icon-summit.svg | 1 + v1.13/_static/img/icons/icon-support.svg | 1 + v1.13/_static/img/icons/icon-tech-talks.svg | 1 + v1.13/_static/img/icons/icon-testing.svg | 1 + v1.13/_static/img/icons/icon-thumbs-down.svg | 1 + v1.13/_static/img/icons/icon-thumbs-up.svg | 1 + v1.13/_static/img/icons/icon-tip.svg | 5 + v1.13/_static/img/icons/icon-training.svg | 1 + .../_static/img/icons/icon-triangle-down.svg | 3 + v1.13/_static/img/icons/icon-university.svg | 1 + v1.13/_static/img/icons/icon-users-blog.svg | 1 + v1.13/_static/img/icons/icon-warning.svg | 10 + v1.13/_static/img/icons/icon-webinars.svg | 1 + v1.13/_static/img/icons/icon-whitepapers.svg | 1 + v1.13/_static/img/icons/icon-workshop.svg | 1 + .../img/logo-scylla-horizontal-color.svg | 55 + .../img/logo-scylla-horizontal-light.svg | 53 + .../img/mascots-2/2-monster-laptop.svg | 53 + v1.13/_static/img/mascots-2/alternator.svg | 39 + v1.13/_static/img/mascots-2/award.svg | 65 + v1.13/_static/img/mascots-2/care-pet.svg | 57 + v1.13/_static/img/mascots-2/cdc.svg | 46 + v1.13/_static/img/mascots-2/chef.svg | 39 + v1.13/_static/img/mascots-2/cloud.svg | 91 + v1.13/_static/img/mascots-2/default.svg | 22 + v1.13/_static/img/mascots-2/docs.svg | 35 + v1.13/_static/img/mascots-2/driver.svg | 42 + v1.13/_static/img/mascots-2/enterprise.svg | 50 + v1.13/_static/img/mascots-2/forward-2.svg | 25 + v1.13/_static/img/mascots-2/forward.svg | 25 + v1.13/_static/img/mascots-2/headphones.svg | 27 + v1.13/_static/img/mascots-2/heart.svg | 29 + v1.13/_static/img/mascots-2/laptop.svg | 35 + .../img/mascots-2/magnifying-glass.svg | 24 + v1.13/_static/img/mascots-2/manager.svg | 48 + v1.13/_static/img/mascots-2/monitor.svg | 40 + v1.13/_static/img/mascots-2/open-mouth.svg | 22 + v1.13/_static/img/mascots-2/operator.svg | 26 + v1.13/_static/img/mascots-2/plug.svg | 40 + v1.13/_static/img/mascots-2/repair.svg | 71 + v1.13/_static/img/mascots-2/server.svg | 64 + v1.13/_static/img/mascots-2/sleepy.svg | 33 + .../_static/img/mascots-2/smile-learning.svg | 19 + v1.13/_static/img/mascots-2/stretched-up.svg | 21 + v1.13/_static/img/mascots-2/toolbox.svg | 83 + v1.13/_static/img/mascots-2/university.svg | 52 + v1.13/_static/img/mascots-2/workshop.svg | 60 + v1.13/_static/img/mascots-2/wow-up.svg | 22 + v1.13/_static/img/mascots-2/wow.svg | 22 + v1.13/_static/img/mascots-2/yummy.svg | 18 + v1.13/_static/img/mascots/404.jpg | Bin 0 -> 29400 bytes .../_static/img/mascots/scylla-3monsters.png | Bin 0 -> 35624 bytes .../img/mascots/scylla-advisor-crystal.png | Bin 0 -> 67593 bytes .../_static/img/mascots/scylla-alternator.svg | 1 + v1.13/_static/img/mascots/scylla-cloud.svg | 1 + .../mascots/scylla-computer-3-monsters.png | Bin 0 -> 44539 bytes .../img/mascots/scylla-computer-headset.png | Bin 0 -> 22297 bytes .../img/mascots/scylla-cup-number-one.png | Bin 0 -> 22675 bytes v1.13/_static/img/mascots/scylla-docs.svg | 1 + v1.13/_static/img/mascots/scylla-drivers.svg | 1 + .../_static/img/mascots/scylla-enterprise.svg | 1 + .../img/mascots/scylla-forklift-boxes.png | Bin 0 -> 29196 bytes .../img/mascots/scylla-forklift-migration.png | Bin 0 -> 24191 bytes v1.13/_static/img/mascots/scylla-gear.png | Bin 0 -> 64841 bytes v1.13/_static/img/mascots/scylla-hardhat.png | Bin 0 -> 20163 bytes v1.13/_static/img/mascots/scylla-headband.png | Bin 0 -> 40533 bytes v1.13/_static/img/mascots/scylla-headset.png | Bin 0 -> 19094 bytes v1.13/_static/img/mascots/scylla-hearts.png | Bin 0 -> 22252 bytes .../img/mascots/scylla-looking-down.png | Bin 0 -> 70044 bytes .../_static/img/mascots/scylla-looking-up.png | Bin 0 -> 69083 bytes .../scylla-magnifying-glass-fronting.png | Bin 0 -> 17463 bytes .../img/mascots/scylla-magnifying-glass.png | Bin 0 -> 16651 bytes v1.13/_static/img/mascots/scylla-manager.svg | 1 + v1.13/_static/img/mascots/scylla-monitor.svg | 1 + .../img/mascots/scylla-movement-fast.png | Bin 0 -> 18439 bytes v1.13/_static/img/mascots/scylla-movement.png | Bin 0 -> 14720 bytes .../_static/img/mascots/scylla-onpremise.png | Bin 0 -> 33081 bytes .../_static/img/mascots/scylla-opensource.svg | 1 + v1.13/_static/img/mascots/scylla-operator.svg | 1 + v1.13/_static/img/mascots/scylla-plugin.png | Bin 0 -> 52683 bytes .../img/mascots/scylla-release-mascot.png | Bin 0 -> 31893 bytes v1.13/_static/img/mascots/scylla-repair.png | Bin 0 -> 21261 bytes v1.13/_static/img/mascots/scylla-server.png | Bin 0 -> 48529 bytes v1.13/_static/img/mascots/scylla-sleeping.png | Bin 0 -> 12942 bytes .../img/mascots/scylla-tall-measure.png | Bin 0 -> 18996 bytes .../_static/img/mascots/scylla-university.png | Bin 0 -> 26146 bytes v1.13/_static/img/mascots/scylla-weights.png | Bin 0 -> 40973 bytes .../img/mascots/scylla-window-cleaning.png | Bin 0 -> 34761 bytes .../img/mascots/scylla-with-computer-2.png | Bin 0 -> 18803 bytes .../img/mascots/scylla-with-computer.png | Bin 0 -> 19926 bytes .../_static/img/mascots/scylla-with-linux.png | Bin 0 -> 45076 bytes v1.13/_static/img/mascots/scylla-writting.png | Bin 0 -> 34449 bytes v1.13/_static/img/menu.svg | 3 + .../_static/img/scylladb-logo-horizontal.svg | 1 + v1.13/_static/js/main.bundle.js | 2 + v1.13/_static/js/main.bundle.js.LICENSE.txt | 256 + v1.13/_static/js/runtime.bundle.js | 1 + v1.13/_static/language_data.js | 199 + v1.13/_static/minus.png | Bin 0 -> 90 bytes v1.13/_static/plus.png | Bin 0 -> 90 bytes v1.13/_static/pygments.css | 75 + v1.13/_static/searchtools.js | 620 + v1.13/_static/sphinx_collapse.css | 31 + v1.13/_static/sphinx_highlight.js | 154 + v1.13/_static/tabs.css | 89 + v1.13/_static/tabs.js | 145 + .../groups/scylla.scylladb.com.html | 613 + .../scylla.scylladb.com/nodeconfigs.html | 2840 ++ .../scylla.scylladb.com/scyllaclusters.html | 7439 +++++ .../scylladbmonitorings.html | 5297 ++++ .../scyllaoperatorconfigs.html | 743 + v1.13/api-reference/index.html | 624 + v1.13/clients/alternator.html | 703 + v1.13/clients/cql.html | 749 + v1.13/clients/discovery.html | 688 + v1.13/clients/index.html | 605 + v1.13/contributing.html | 765 + v1.13/eks.html | 759 + v1.13/exposing.html | 906 + v1.13/generic.html | 977 + v1.13/genindex.html | 582 + v1.13/gke.html | 799 + v1.13/helm.html | 947 + v1.13/index.html | 628 + v1.13/manager.html | 834 + v1.13/migration.html | 771 + v1.13/monitoring.html | 816 + v1.13/multidc/eks.html | 800 + v1.13/multidc/gke.html | 770 + v1.13/multidc/index.html | 611 + v1.13/multidc/multidc.html | 1201 + v1.13/nodeoperations/automatic-cleanup.html | 608 + v1.13/nodeoperations/index.html | 607 + v1.13/nodeoperations/maintenance-mode.html | 617 + v1.13/nodeoperations/replace-node.html | 691 + v1.13/nodeoperations/restore.html | 842 + v1.13/nodeoperations/scylla-upgrade.html | 690 + v1.13/objects.inv | Bin 0 -> 6766 bytes v1.13/performance.html | 694 + v1.13/releases.html | 854 + v1.13/search.html | 585 + v1.13/searchindex.js | 1 + v1.13/sitemap.xml | 2 + v1.13/support/index.html | 606 + v1.13/support/known-issues.html | 629 + v1.13/support/must-gather.html | 716 + v1.13/support/overview.html | 631 + v1.13/support/troubleshooting/index.html | 612 + .../support/troubleshooting/installation.html | 667 + v1.13/upgrade.html | 820 + v1.14/.buildinfo | 4 + .../groups/scylla.scylladb.com.doctree | Bin 0 -> 4004 bytes .../scylla.scylladb.com/nodeconfigs.doctree | Bin 0 -> 398919 bytes .../scyllaclusters.doctree | Bin 0 -> 1217790 bytes .../scylladbmonitorings.doctree | Bin 0 -> 889762 bytes .../scyllaoperatorconfigs.doctree | Bin 0 -> 29805 bytes v1.14/.doctrees/api-reference/index.doctree | Bin 0 -> 5640 bytes v1.14/.doctrees/clients/alternator.doctree | Bin 0 -> 16848 bytes v1.14/.doctrees/clients/cql.doctree | Bin 0 -> 17802 bytes v1.14/.doctrees/clients/discovery.doctree | Bin 0 -> 16073 bytes v1.14/.doctrees/clients/index.doctree | Bin 0 -> 3759 bytes v1.14/.doctrees/contributing.doctree | Bin 0 -> 28823 bytes v1.14/.doctrees/eks.doctree | Bin 0 -> 23049 bytes v1.14/.doctrees/environment.pickle | Bin 0 -> 746657 bytes v1.14/.doctrees/exposing.doctree | Bin 0 -> 38769 bytes v1.14/.doctrees/generic.doctree | Bin 0 -> 63955 bytes v1.14/.doctrees/gke.doctree | Bin 0 -> 30395 bytes v1.14/.doctrees/helm.doctree | Bin 0 -> 44205 bytes v1.14/.doctrees/index.doctree | Bin 0 -> 17713 bytes v1.14/.doctrees/manager.doctree | Bin 0 -> 44322 bytes v1.14/.doctrees/migration.doctree | Bin 0 -> 33862 bytes v1.14/.doctrees/monitoring.doctree | Bin 0 -> 30009 bytes v1.14/.doctrees/multidc/eks.doctree | Bin 0 -> 30117 bytes v1.14/.doctrees/multidc/gke.doctree | Bin 0 -> 29444 bytes v1.14/.doctrees/multidc/index.doctree | Bin 0 -> 4530 bytes v1.14/.doctrees/multidc/multidc.doctree | Bin 0 -> 69887 bytes .../nodeoperations/automatic-cleanup.doctree | Bin 0 -> 4219 bytes v1.14/.doctrees/nodeoperations/index.doctree | Bin 0 -> 3956 bytes .../nodeoperations/maintenance-mode.doctree | Bin 0 -> 5381 bytes .../nodeoperations/replace-node.doctree | Bin 0 -> 15883 bytes .../.doctrees/nodeoperations/restore.doctree | Bin 0 -> 35794 bytes .../nodeoperations/scylla-upgrade.doctree | Bin 0 -> 24823 bytes v1.14/.doctrees/performance.doctree | Bin 0 -> 16111 bytes v1.14/.doctrees/releases.doctree | Bin 0 -> 40933 bytes v1.14/.doctrees/support/index.doctree | Bin 0 -> 3757 bytes v1.14/.doctrees/support/known-issues.doctree | Bin 0 -> 5378 bytes v1.14/.doctrees/support/must-gather.doctree | Bin 0 -> 19890 bytes v1.14/.doctrees/support/overview.doctree | Bin 0 -> 6097 bytes .../support/troubleshooting/index.doctree | Bin 0 -> 3747 bytes .../troubleshooting/installation.doctree | Bin 0 -> 9193 bytes v1.14/.doctrees/upgrade.doctree | Bin 0 -> 30400 bytes v1.14/.nojekyll | 0 v1.14/404.html | 31 + v1.14/CNAME | 1 + v1.14/_images/clusterip.svg | 3 + v1.14/_images/loadbalancer.svg | 3 + v1.14/_images/logo.png | Bin 0 -> 35103 bytes v1.14/_images/multivpc.svg | 3 + v1.14/_images/podips.svg | 3 + .../groups/scylla.scylladb.com.rst.txt | 8 + .../scylla.scylladb.com/nodeconfigs.rst.txt | 1629 + .../scyllaclusters.rst.txt | 4996 +++ .../scylladbmonitorings.rst.txt | 3441 +++ .../scyllaoperatorconfigs.rst.txt | 126 + v1.14/_sources/api-reference/index.rst.txt | 13 + v1.14/_sources/clients/alternator.md.txt | 94 + v1.14/_sources/clients/cql.md.txt | 129 + v1.14/_sources/clients/discovery.md.txt | 72 + v1.14/_sources/clients/index.rst.txt | 12 + v1.14/_sources/contributing.md.txt | 155 + v1.14/_sources/eks.md.txt | 128 + v1.14/_sources/exposing.md.txt | 304 + v1.14/_sources/generic.md.txt | 372 + v1.14/_sources/gke.md.txt | 173 + v1.14/_sources/helm.md.txt | 339 + v1.14/_sources/index.rst.txt | 67 + v1.14/_sources/manager.md.txt | 258 + v1.14/_sources/migration.md.txt | 146 + v1.14/_sources/monitoring.md.txt | 181 + v1.14/_sources/multidc/eks.md.txt | 168 + v1.14/_sources/multidc/gke.md.txt | 156 + v1.14/_sources/multidc/index.rst.txt | 18 + v1.14/_sources/multidc/multidc.md.txt | 601 + .../nodeoperations/automatic-cleanup.md.txt | 6 + v1.14/_sources/nodeoperations/index.rst.txt | 12 + .../nodeoperations/maintenance-mode.md.txt | 19 + .../nodeoperations/replace-node.md.txt | 74 + v1.14/_sources/nodeoperations/restore.md.txt | 239 + .../nodeoperations/scylla-upgrade.md.txt | 102 + v1.14/_sources/performance.md.txt | 100 + v1.14/_sources/releases.md.txt | 96 + v1.14/_sources/support/index.rst.txt | 12 + v1.14/_sources/support/known-issues.md.txt | 14 + v1.14/_sources/support/must-gather.md.txt | 101 + v1.14/_sources/support/overview.md.txt | 14 + .../support/troubleshooting/index.rst.txt | 8 + .../troubleshooting/installation.md.txt | 34 + v1.14/_sources/upgrade.md.txt | 184 + ...e.1e8bd061cd6da7fc9cf755528e8ffc24.min.css | 1 + v1.14/_sphinx_design_static/design-tabs.js | 27 + v1.14/_static/basic.css | 925 + v1.14/_static/check-solid.svg | 4 + v1.14/_static/clipboard.min.js | 7 + v1.14/_static/copy-button.svg | 5 + v1.14/_static/copybutton.css | 94 + v1.14/_static/copybutton.js | 248 + v1.14/_static/copybutton_funcs.js | 73 + v1.14/_static/css/main.css | 1 + ...e.1e8bd061cd6da7fc9cf755528e8ffc24.min.css | 1 + v1.14/_static/design-tabs.js | 27 + v1.14/_static/doctools.js | 156 + v1.14/_static/documentation_options.js | 13 + v1.14/_static/file.png | Bin 0 -> 286 bytes v1.14/_static/img/banner-background.svg | 10 + v1.14/_static/img/favicon-228x228.png | Bin 0 -> 4428 bytes v1.14/_static/img/favicon-32x32.png | Bin 0 -> 837 bytes v1.14/_static/img/favicon.ico | Bin 0 -> 1150 bytes v1.14/_static/img/icons/icon-about-team.svg | 1 + v1.14/_static/img/icons/icon-about-us-m.svg | 1 + v1.14/_static/img/icons/icon-about-us.svg | 1 + v1.14/_static/img/icons/icon-alternator.svg | 1 + v1.14/_static/img/icons/icon-apps.svg | 1 + v1.14/_static/img/icons/icon-architecture.svg | 1 + v1.14/_static/img/icons/icon-benchmarks.svg | 1 + v1.14/_static/img/icons/icon-blog.svg | 1 + v1.14/_static/img/icons/icon-careers.svg | 1 + v1.14/_static/img/icons/icon-chevron-left.svg | 3 + .../_static/img/icons/icon-chevron-right.svg | 3 + v1.14/_static/img/icons/icon-circe.svg | 1 + v1.14/_static/img/icons/icon-clock.svg | 1 + v1.14/_static/img/icons/icon-close.svg | 12 + v1.14/_static/img/icons/icon-cloud-docs.svg | 1 + v1.14/_static/img/icons/icon-cloud.svg | 1 + v1.14/_static/img/icons/icon-comparison.svg | 1 + v1.14/_static/img/icons/icon-contact-us.svg | 1 + .../img/icons/icon-developers-blog.svg | 1 + v1.14/_static/img/icons/icon-docs.svg | 1 + v1.14/_static/img/icons/icon-enterprise-m.svg | 33 + v1.14/_static/img/icons/icon-enterprise.svg | 1 + v1.14/_static/img/icons/icon-events.svg | 1 + v1.14/_static/img/icons/icon-exclamation.svg | 10 + v1.14/_static/img/icons/icon-expand.svg | 50 + v1.14/_static/img/icons/icon-forum.svg | 1 + .../img/icons/icon-getting-started.svg | 1 + v1.14/_static/img/icons/icon-glossary.svg | 1 + v1.14/_static/img/icons/icon-help.svg | 1 + v1.14/_static/img/icons/icon-home.svg | 1 + v1.14/_static/img/icons/icon-infoworld.svg | 1 + v1.14/_static/img/icons/icon-integrations.svg | 1 + .../_static/img/icons/icon-knowledge-base.svg | 1 + v1.14/_static/img/icons/icon-less.svg | 8 + v1.14/_static/img/icons/icon-live-test.svg | 1 + v1.14/_static/img/icons/icon-mail-list.svg | 1 + v1.14/_static/img/icons/icon-manager.svg | 1 + .../img/icons/icon-memory-management.svg | 1 + v1.14/_static/img/icons/icon-modeling.svg | 1 + v1.14/_static/img/icons/icon-monitoring.svg | 1 + v1.14/_static/img/icons/icon-networking.svg | 1 + v1.14/_static/img/icons/icon-news.svg | 1 + v1.14/_static/img/icons/icon-newsletter.svg | 1 + v1.14/_static/img/icons/icon-nsql-guides.svg | 1 + v1.14/_static/img/icons/icon-open-source.svg | 1 + v1.14/_static/img/icons/icon-operator.svg | 1 + v1.14/_static/img/icons/icon-overview.svg | 1 + v1.14/_static/img/icons/icon-partners.svg | 1 + v1.14/_static/img/icons/icon-plus.svg | 8 + v1.14/_static/img/icons/icon-pricing.svg | 1 + .../_static/img/icons/icon-release-notes.svg | 1 + .../img/icons/icon-resource-center.svg | 1 + v1.14/_static/img/icons/icon-roadmap.svg | 1 + v1.14/_static/img/icons/icon-search.svg | 4 + v1.14/_static/img/icons/icon-slack.svg | 1 + .../_static/img/icons/icon-stack-overflow.svg | 4 + v1.14/_static/img/icons/icon-summit.svg | 1 + v1.14/_static/img/icons/icon-support.svg | 1 + v1.14/_static/img/icons/icon-tech-talks.svg | 1 + v1.14/_static/img/icons/icon-testing.svg | 1 + v1.14/_static/img/icons/icon-thumbs-down.svg | 1 + v1.14/_static/img/icons/icon-thumbs-up.svg | 1 + v1.14/_static/img/icons/icon-tip.svg | 5 + v1.14/_static/img/icons/icon-training.svg | 1 + .../_static/img/icons/icon-triangle-down.svg | 3 + v1.14/_static/img/icons/icon-university.svg | 1 + v1.14/_static/img/icons/icon-users-blog.svg | 1 + v1.14/_static/img/icons/icon-warning.svg | 10 + v1.14/_static/img/icons/icon-webinars.svg | 1 + v1.14/_static/img/icons/icon-whitepapers.svg | 1 + v1.14/_static/img/icons/icon-workshop.svg | 1 + .../img/logo-scylla-horizontal-color.svg | 55 + .../img/logo-scylla-horizontal-light.svg | 53 + .../img/mascots-2/2-monster-laptop.svg | 53 + v1.14/_static/img/mascots-2/alternator.svg | 39 + v1.14/_static/img/mascots-2/award.svg | 65 + v1.14/_static/img/mascots-2/care-pet.svg | 57 + v1.14/_static/img/mascots-2/cdc.svg | 46 + v1.14/_static/img/mascots-2/chef.svg | 39 + v1.14/_static/img/mascots-2/cloud.svg | 91 + v1.14/_static/img/mascots-2/default.svg | 22 + v1.14/_static/img/mascots-2/docs.svg | 35 + v1.14/_static/img/mascots-2/driver.svg | 42 + v1.14/_static/img/mascots-2/enterprise.svg | 50 + v1.14/_static/img/mascots-2/forward-2.svg | 25 + v1.14/_static/img/mascots-2/forward.svg | 25 + v1.14/_static/img/mascots-2/headphones.svg | 27 + v1.14/_static/img/mascots-2/heart.svg | 29 + v1.14/_static/img/mascots-2/laptop.svg | 35 + .../img/mascots-2/magnifying-glass.svg | 24 + v1.14/_static/img/mascots-2/manager.svg | 48 + v1.14/_static/img/mascots-2/monitor.svg | 40 + v1.14/_static/img/mascots-2/open-mouth.svg | 22 + v1.14/_static/img/mascots-2/operator.svg | 26 + v1.14/_static/img/mascots-2/plug.svg | 40 + v1.14/_static/img/mascots-2/repair.svg | 71 + v1.14/_static/img/mascots-2/server.svg | 64 + v1.14/_static/img/mascots-2/sleepy.svg | 33 + .../_static/img/mascots-2/smile-learning.svg | 19 + v1.14/_static/img/mascots-2/stretched-up.svg | 21 + v1.14/_static/img/mascots-2/toolbox.svg | 83 + v1.14/_static/img/mascots-2/university.svg | 52 + v1.14/_static/img/mascots-2/workshop.svg | 60 + v1.14/_static/img/mascots-2/wow-up.svg | 22 + v1.14/_static/img/mascots-2/wow.svg | 22 + v1.14/_static/img/mascots-2/yummy.svg | 18 + v1.14/_static/img/mascots/404.jpg | Bin 0 -> 29400 bytes .../_static/img/mascots/scylla-3monsters.png | Bin 0 -> 35624 bytes .../img/mascots/scylla-advisor-crystal.png | Bin 0 -> 67593 bytes .../_static/img/mascots/scylla-alternator.svg | 1 + v1.14/_static/img/mascots/scylla-cloud.svg | 1 + .../mascots/scylla-computer-3-monsters.png | Bin 0 -> 44539 bytes .../img/mascots/scylla-computer-headset.png | Bin 0 -> 22297 bytes .../img/mascots/scylla-cup-number-one.png | Bin 0 -> 22675 bytes v1.14/_static/img/mascots/scylla-docs.svg | 1 + v1.14/_static/img/mascots/scylla-drivers.svg | 1 + .../_static/img/mascots/scylla-enterprise.svg | 1 + .../img/mascots/scylla-forklift-boxes.png | Bin 0 -> 29196 bytes .../img/mascots/scylla-forklift-migration.png | Bin 0 -> 24191 bytes v1.14/_static/img/mascots/scylla-gear.png | Bin 0 -> 64841 bytes v1.14/_static/img/mascots/scylla-hardhat.png | Bin 0 -> 20163 bytes v1.14/_static/img/mascots/scylla-headband.png | Bin 0 -> 40533 bytes v1.14/_static/img/mascots/scylla-headset.png | Bin 0 -> 19094 bytes v1.14/_static/img/mascots/scylla-hearts.png | Bin 0 -> 22252 bytes .../img/mascots/scylla-looking-down.png | Bin 0 -> 70044 bytes .../_static/img/mascots/scylla-looking-up.png | Bin 0 -> 69083 bytes .../scylla-magnifying-glass-fronting.png | Bin 0 -> 17463 bytes .../img/mascots/scylla-magnifying-glass.png | Bin 0 -> 16651 bytes v1.14/_static/img/mascots/scylla-manager.svg | 1 + v1.14/_static/img/mascots/scylla-monitor.svg | 1 + .../img/mascots/scylla-movement-fast.png | Bin 0 -> 18439 bytes v1.14/_static/img/mascots/scylla-movement.png | Bin 0 -> 14720 bytes .../_static/img/mascots/scylla-onpremise.png | Bin 0 -> 33081 bytes .../_static/img/mascots/scylla-opensource.svg | 1 + v1.14/_static/img/mascots/scylla-operator.svg | 1 + v1.14/_static/img/mascots/scylla-plugin.png | Bin 0 -> 52683 bytes .../img/mascots/scylla-release-mascot.png | Bin 0 -> 31893 bytes v1.14/_static/img/mascots/scylla-repair.png | Bin 0 -> 21261 bytes v1.14/_static/img/mascots/scylla-server.png | Bin 0 -> 48529 bytes v1.14/_static/img/mascots/scylla-sleeping.png | Bin 0 -> 12942 bytes .../img/mascots/scylla-tall-measure.png | Bin 0 -> 18996 bytes .../_static/img/mascots/scylla-university.png | Bin 0 -> 26146 bytes v1.14/_static/img/mascots/scylla-weights.png | Bin 0 -> 40973 bytes .../img/mascots/scylla-window-cleaning.png | Bin 0 -> 34761 bytes .../img/mascots/scylla-with-computer-2.png | Bin 0 -> 18803 bytes .../img/mascots/scylla-with-computer.png | Bin 0 -> 19926 bytes .../_static/img/mascots/scylla-with-linux.png | Bin 0 -> 45076 bytes v1.14/_static/img/mascots/scylla-writting.png | Bin 0 -> 34449 bytes v1.14/_static/img/menu.svg | 3 + .../_static/img/scylladb-logo-horizontal.svg | 1 + v1.14/_static/js/main.bundle.js | 2 + v1.14/_static/js/main.bundle.js.LICENSE.txt | 256 + v1.14/_static/js/runtime.bundle.js | 1 + v1.14/_static/language_data.js | 199 + v1.14/_static/minus.png | Bin 0 -> 90 bytes v1.14/_static/plus.png | Bin 0 -> 90 bytes v1.14/_static/pygments.css | 75 + v1.14/_static/searchtools.js | 620 + v1.14/_static/sphinx_collapse.css | 31 + v1.14/_static/sphinx_highlight.js | 154 + v1.14/_static/tabs.css | 89 + v1.14/_static/tabs.js | 145 + .../groups/scylla.scylladb.com.html | 603 + .../scylla.scylladb.com/nodeconfigs.html | 2830 ++ .../scylla.scylladb.com/scyllaclusters.html | 7429 +++++ .../scylladbmonitorings.html | 5287 ++++ .../scyllaoperatorconfigs.html | 780 + v1.14/api-reference/index.html | 614 + v1.14/clients/alternator.html | 693 + v1.14/clients/cql.html | 739 + v1.14/clients/discovery.html | 678 + v1.14/clients/index.html | 595 + v1.14/contributing.html | 755 + v1.14/eks.html | 749 + v1.14/exposing.html | 900 + v1.14/generic.html | 953 + v1.14/genindex.html | 572 + v1.14/gke.html | 789 + v1.14/helm.html | 937 + v1.14/index.html | 618 + v1.14/manager.html | 824 + v1.14/migration.html | 761 + v1.14/monitoring.html | 807 + v1.14/multidc/eks.html | 790 + v1.14/multidc/gke.html | 760 + v1.14/multidc/index.html | 601 + v1.14/multidc/multidc.html | 1191 + v1.14/nodeoperations/automatic-cleanup.html | 598 + v1.14/nodeoperations/index.html | 597 + v1.14/nodeoperations/maintenance-mode.html | 607 + v1.14/nodeoperations/replace-node.html | 681 + v1.14/nodeoperations/restore.html | 832 + v1.14/nodeoperations/scylla-upgrade.html | 680 + v1.14/objects.inv | Bin 0 -> 6766 bytes v1.14/performance.html | 689 + v1.14/releases.html | 848 + v1.14/search.html | 575 + v1.14/searchindex.js | 1 + v1.14/sitemap.xml | 2 + v1.14/support/index.html | 596 + v1.14/support/known-issues.html | 619 + v1.14/support/must-gather.html | 706 + v1.14/support/overview.html | 621 + v1.14/support/troubleshooting/index.html | 602 + .../support/troubleshooting/installation.html | 657 + v1.14/upgrade.html | 810 + 1751 files changed, 361263 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 CNAME create mode 100644 _static/basic.css create mode 100644 _static/check-solid.svg create mode 100644 _static/clipboard.min.js create mode 100644 _static/copy-button.svg create mode 100644 _static/copybutton.css create mode 100644 _static/copybutton.js create mode 100644 _static/copybutton_funcs.js create mode 100644 _static/css/main.css create mode 100644 _static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css create mode 100644 _static/design-tabs.js create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/file.png create mode 100644 _static/img/banner-background.svg create mode 100644 _static/img/favicon-228x228.png create mode 100644 _static/img/favicon-32x32.png create mode 100644 _static/img/favicon.ico create mode 100644 _static/img/icons/icon-about-team.svg create mode 100644 _static/img/icons/icon-about-us-m.svg create mode 100644 _static/img/icons/icon-about-us.svg create mode 100644 _static/img/icons/icon-alternator.svg create mode 100644 _static/img/icons/icon-apps.svg create mode 100644 _static/img/icons/icon-architecture.svg create mode 100644 _static/img/icons/icon-benchmarks.svg create mode 100644 _static/img/icons/icon-blog.svg create mode 100644 _static/img/icons/icon-careers.svg create mode 100644 _static/img/icons/icon-chevron-left.svg create mode 100644 _static/img/icons/icon-chevron-right.svg create mode 100644 _static/img/icons/icon-circe.svg create mode 100644 _static/img/icons/icon-clock.svg create mode 100644 _static/img/icons/icon-close.svg create mode 100644 _static/img/icons/icon-cloud-docs.svg create mode 100644 _static/img/icons/icon-cloud.svg create mode 100644 _static/img/icons/icon-comparison.svg create mode 100644 _static/img/icons/icon-contact-us.svg create mode 100644 _static/img/icons/icon-developers-blog.svg create mode 100644 _static/img/icons/icon-docs.svg create mode 100644 _static/img/icons/icon-enterprise-m.svg create mode 100644 _static/img/icons/icon-enterprise.svg create mode 100644 _static/img/icons/icon-events.svg create mode 100644 _static/img/icons/icon-exclamation.svg create mode 100644 _static/img/icons/icon-expand.svg create mode 100644 _static/img/icons/icon-forum.svg create mode 100644 _static/img/icons/icon-getting-started.svg create mode 100644 _static/img/icons/icon-glossary.svg create mode 100644 _static/img/icons/icon-help.svg create mode 100644 _static/img/icons/icon-home.svg create mode 100644 _static/img/icons/icon-infoworld.svg create mode 100644 _static/img/icons/icon-integrations.svg create mode 100644 _static/img/icons/icon-knowledge-base.svg create mode 100644 _static/img/icons/icon-less.svg create mode 100644 _static/img/icons/icon-live-test.svg create mode 100644 _static/img/icons/icon-mail-list.svg create mode 100644 _static/img/icons/icon-manager.svg create mode 100644 _static/img/icons/icon-memory-management.svg create mode 100644 _static/img/icons/icon-modeling.svg create mode 100644 _static/img/icons/icon-monitoring.svg create mode 100644 _static/img/icons/icon-networking.svg create mode 100644 _static/img/icons/icon-news.svg create mode 100644 _static/img/icons/icon-newsletter.svg create mode 100644 _static/img/icons/icon-nsql-guides.svg create mode 100644 _static/img/icons/icon-open-source.svg create mode 100644 _static/img/icons/icon-operator.svg create mode 100644 _static/img/icons/icon-overview.svg create mode 100644 _static/img/icons/icon-partners.svg create mode 100644 _static/img/icons/icon-plus.svg create mode 100644 _static/img/icons/icon-pricing.svg create mode 100644 _static/img/icons/icon-release-notes.svg create mode 100644 _static/img/icons/icon-resource-center.svg create mode 100644 _static/img/icons/icon-roadmap.svg create mode 100644 _static/img/icons/icon-search.svg create mode 100644 _static/img/icons/icon-slack.svg create mode 100644 _static/img/icons/icon-stack-overflow.svg create mode 100644 _static/img/icons/icon-summit.svg create mode 100644 _static/img/icons/icon-support.svg create mode 100644 _static/img/icons/icon-tech-talks.svg create mode 100644 _static/img/icons/icon-testing.svg create mode 100644 _static/img/icons/icon-thumbs-down.svg create mode 100644 _static/img/icons/icon-thumbs-up.svg create mode 100644 _static/img/icons/icon-tip.svg create mode 100644 _static/img/icons/icon-training.svg create mode 100644 _static/img/icons/icon-triangle-down.svg create mode 100644 _static/img/icons/icon-university.svg create mode 100644 _static/img/icons/icon-users-blog.svg create mode 100644 _static/img/icons/icon-warning.svg create mode 100644 _static/img/icons/icon-webinars.svg create mode 100644 _static/img/icons/icon-whitepapers.svg create mode 100644 _static/img/icons/icon-workshop.svg create mode 100644 _static/img/logo-scylla-horizontal-color.svg create mode 100644 _static/img/logo-scylla-horizontal-light.svg create mode 100644 _static/img/mascots-2/2-monster-laptop.svg create mode 100644 _static/img/mascots-2/alternator.svg create mode 100644 _static/img/mascots-2/award.svg create mode 100644 _static/img/mascots-2/care-pet.svg create mode 100644 _static/img/mascots-2/cdc.svg create mode 100644 _static/img/mascots-2/chef.svg create mode 100644 _static/img/mascots-2/cloud.svg create mode 100644 _static/img/mascots-2/default.svg create mode 100644 _static/img/mascots-2/docs.svg create mode 100644 _static/img/mascots-2/driver.svg create mode 100644 _static/img/mascots-2/enterprise.svg create mode 100644 _static/img/mascots-2/forward-2.svg create mode 100644 _static/img/mascots-2/forward.svg create mode 100644 _static/img/mascots-2/headphones.svg create mode 100644 _static/img/mascots-2/heart.svg create mode 100644 _static/img/mascots-2/laptop.svg create mode 100644 _static/img/mascots-2/magnifying-glass.svg create mode 100644 _static/img/mascots-2/manager.svg create mode 100644 _static/img/mascots-2/monitor.svg create mode 100644 _static/img/mascots-2/open-mouth.svg create mode 100644 _static/img/mascots-2/operator.svg create mode 100644 _static/img/mascots-2/plug.svg create mode 100644 _static/img/mascots-2/repair.svg create mode 100644 _static/img/mascots-2/server.svg create mode 100644 _static/img/mascots-2/sleepy.svg create mode 100644 _static/img/mascots-2/smile-learning.svg create mode 100644 _static/img/mascots-2/stretched-up.svg create mode 100644 _static/img/mascots-2/toolbox.svg create mode 100644 _static/img/mascots-2/university.svg create mode 100644 _static/img/mascots-2/workshop.svg create mode 100644 _static/img/mascots-2/wow-up.svg create mode 100644 _static/img/mascots-2/wow.svg create mode 100644 _static/img/mascots-2/yummy.svg create mode 100644 _static/img/mascots/404.jpg create mode 100644 _static/img/mascots/scylla-3monsters.png create mode 100644 _static/img/mascots/scylla-advisor-crystal.png create mode 100644 _static/img/mascots/scylla-alternator.svg create mode 100644 _static/img/mascots/scylla-cloud.svg create mode 100644 _static/img/mascots/scylla-computer-3-monsters.png create mode 100644 _static/img/mascots/scylla-computer-headset.png create mode 100644 _static/img/mascots/scylla-cup-number-one.png create mode 100644 _static/img/mascots/scylla-docs.svg create mode 100644 _static/img/mascots/scylla-drivers.svg create mode 100644 _static/img/mascots/scylla-enterprise.svg create mode 100644 _static/img/mascots/scylla-forklift-boxes.png create mode 100644 _static/img/mascots/scylla-forklift-migration.png create mode 100644 _static/img/mascots/scylla-gear.png create mode 100644 _static/img/mascots/scylla-hardhat.png create mode 100644 _static/img/mascots/scylla-headband.png create mode 100644 _static/img/mascots/scylla-headset.png create mode 100644 _static/img/mascots/scylla-hearts.png create mode 100644 _static/img/mascots/scylla-looking-down.png create mode 100644 _static/img/mascots/scylla-looking-up.png create mode 100644 _static/img/mascots/scylla-magnifying-glass-fronting.png create mode 100644 _static/img/mascots/scylla-magnifying-glass.png create mode 100644 _static/img/mascots/scylla-manager.svg create mode 100644 _static/img/mascots/scylla-monitor.svg create mode 100644 _static/img/mascots/scylla-movement-fast.png create mode 100644 _static/img/mascots/scylla-movement.png create mode 100644 _static/img/mascots/scylla-onpremise.png create mode 100644 _static/img/mascots/scylla-opensource.svg create mode 100644 _static/img/mascots/scylla-operator.svg create mode 100644 _static/img/mascots/scylla-plugin.png create mode 100644 _static/img/mascots/scylla-release-mascot.png create mode 100644 _static/img/mascots/scylla-repair.png create mode 100644 _static/img/mascots/scylla-server.png create mode 100644 _static/img/mascots/scylla-sleeping.png create mode 100644 _static/img/mascots/scylla-tall-measure.png create mode 100644 _static/img/mascots/scylla-university.png create mode 100644 _static/img/mascots/scylla-weights.png create mode 100644 _static/img/mascots/scylla-window-cleaning.png create mode 100644 _static/img/mascots/scylla-with-computer-2.png create mode 100644 _static/img/mascots/scylla-with-computer.png create mode 100644 _static/img/mascots/scylla-with-linux.png create mode 100644 _static/img/mascots/scylla-writting.png create mode 100644 _static/img/menu.svg create mode 100644 _static/img/scylladb-logo-horizontal.svg create mode 100644 _static/js/main.bundle.js create mode 100644 _static/js/main.bundle.js.LICENSE.txt create mode 100644 _static/js/runtime.bundle.js create mode 100644 _static/language_data.js create mode 100644 _static/minus.png create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/searchtools.js create mode 100644 _static/sphinx_collapse.css create mode 100644 _static/sphinx_highlight.js create mode 100644 _static/tabs.css create mode 100644 _static/tabs.js create mode 100644 index.html create mode 100644 master/.buildinfo create mode 100644 master/.doctrees/api-reference/groups/scylla.scylladb.com.doctree create mode 100644 master/.doctrees/api-reference/groups/scylla.scylladb.com/nodeconfigs.doctree create mode 100644 master/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaclusters.doctree create mode 100644 master/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbdatacenters.doctree create mode 100644 master/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree create mode 100644 master/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.doctree create mode 100644 master/.doctrees/api-reference/index.doctree create mode 100644 master/.doctrees/clients/alternator.doctree create mode 100644 master/.doctrees/clients/cql.doctree create mode 100644 master/.doctrees/clients/discovery.doctree create mode 100644 master/.doctrees/clients/index.doctree create mode 100644 master/.doctrees/contributing.doctree create mode 100644 master/.doctrees/eks.doctree create mode 100644 master/.doctrees/environment.pickle create mode 100644 master/.doctrees/exposing.doctree create mode 100644 master/.doctrees/generic.doctree create mode 100644 master/.doctrees/gke.doctree create mode 100644 master/.doctrees/helm.doctree create mode 100644 master/.doctrees/index.doctree create mode 100644 master/.doctrees/manager.doctree create mode 100644 master/.doctrees/migration.doctree create mode 100644 master/.doctrees/monitoring.doctree create mode 100644 master/.doctrees/multidc/eks.doctree create mode 100644 master/.doctrees/multidc/gke.doctree create mode 100644 master/.doctrees/multidc/index.doctree create mode 100644 master/.doctrees/multidc/multidc.doctree create mode 100644 master/.doctrees/nodeoperations/automatic-cleanup.doctree create mode 100644 master/.doctrees/nodeoperations/index.doctree create mode 100644 master/.doctrees/nodeoperations/maintenance-mode.doctree create mode 100644 master/.doctrees/nodeoperations/replace-node.doctree create mode 100644 master/.doctrees/nodeoperations/restore.doctree create mode 100644 master/.doctrees/nodeoperations/scylla-upgrade.doctree create mode 100644 master/.doctrees/performance.doctree create mode 100644 master/.doctrees/releases.doctree create mode 100644 master/.doctrees/support/index.doctree create mode 100644 master/.doctrees/support/known-issues.doctree create mode 100644 master/.doctrees/support/must-gather.doctree create mode 100644 master/.doctrees/support/overview.doctree create mode 100644 master/.doctrees/support/troubleshooting/index.doctree create mode 100644 master/.doctrees/support/troubleshooting/installation.doctree create mode 100644 master/.doctrees/upgrade.doctree create mode 100644 master/.nojekyll create mode 100644 master/404.html create mode 100644 master/CNAME create mode 100644 master/_images/clusterip.svg create mode 100644 master/_images/loadbalancer.svg create mode 100644 master/_images/logo.png create mode 100644 master/_images/multivpc.svg create mode 100644 master/_images/podips.svg create mode 100644 master/_sources/api-reference/groups/scylla.scylladb.com.rst.txt create mode 100644 master/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt create mode 100644 master/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt create mode 100644 master/_sources/api-reference/groups/scylla.scylladb.com/scylladbdatacenters.rst.txt create mode 100644 master/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt create mode 100644 master/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt create mode 100644 master/_sources/api-reference/index.rst.txt create mode 100644 master/_sources/clients/alternator.md.txt create mode 100644 master/_sources/clients/cql.md.txt create mode 100644 master/_sources/clients/discovery.md.txt create mode 100644 master/_sources/clients/index.rst.txt create mode 100644 master/_sources/contributing.md.txt create mode 100644 master/_sources/eks.md.txt create mode 100644 master/_sources/exposing.md.txt create mode 100644 master/_sources/generic.md.txt create mode 100644 master/_sources/gke.md.txt create mode 100644 master/_sources/helm.md.txt create mode 100644 master/_sources/index.rst.txt create mode 100644 master/_sources/manager.md.txt create mode 100644 master/_sources/migration.md.txt create mode 100644 master/_sources/monitoring.md.txt create mode 100644 master/_sources/multidc/eks.md.txt create mode 100644 master/_sources/multidc/gke.md.txt create mode 100644 master/_sources/multidc/index.rst.txt create mode 100644 master/_sources/multidc/multidc.md.txt create mode 100644 master/_sources/nodeoperations/automatic-cleanup.md.txt create mode 100644 master/_sources/nodeoperations/index.rst.txt create mode 100644 master/_sources/nodeoperations/maintenance-mode.md.txt create mode 100644 master/_sources/nodeoperations/replace-node.md.txt create mode 100644 master/_sources/nodeoperations/restore.md.txt create mode 100644 master/_sources/nodeoperations/scylla-upgrade.md.txt create mode 100644 master/_sources/performance.md.txt create mode 100644 master/_sources/releases.md.txt create mode 100644 master/_sources/support/index.rst.txt create mode 100644 master/_sources/support/known-issues.md.txt create mode 100644 master/_sources/support/must-gather.md.txt create mode 100644 master/_sources/support/overview.md.txt create mode 100644 master/_sources/support/troubleshooting/index.rst.txt create mode 100644 master/_sources/support/troubleshooting/installation.md.txt create mode 100644 master/_sources/upgrade.md.txt create mode 100644 master/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css create mode 100644 master/_sphinx_design_static/design-tabs.js create mode 100644 master/_static/basic.css create mode 100644 master/_static/check-solid.svg create mode 100644 master/_static/clipboard.min.js create mode 100644 master/_static/copy-button.svg create mode 100644 master/_static/copybutton.css create mode 100644 master/_static/copybutton.js create mode 100644 master/_static/copybutton_funcs.js create mode 100644 master/_static/css/main.css create mode 100644 master/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css create mode 100644 master/_static/design-tabs.js create mode 100644 master/_static/doctools.js create mode 100644 master/_static/documentation_options.js create mode 100644 master/_static/file.png create mode 100644 master/_static/img/banner-background.svg create mode 100644 master/_static/img/favicon-228x228.png create mode 100644 master/_static/img/favicon-32x32.png create mode 100644 master/_static/img/favicon.ico create mode 100644 master/_static/img/icons/icon-about-team.svg create mode 100644 master/_static/img/icons/icon-about-us-m.svg create mode 100644 master/_static/img/icons/icon-about-us.svg create mode 100644 master/_static/img/icons/icon-alternator.svg create mode 100644 master/_static/img/icons/icon-apps.svg create mode 100644 master/_static/img/icons/icon-architecture.svg create mode 100644 master/_static/img/icons/icon-benchmarks.svg create mode 100644 master/_static/img/icons/icon-blog.svg create mode 100644 master/_static/img/icons/icon-careers.svg create mode 100644 master/_static/img/icons/icon-chevron-left.svg create mode 100644 master/_static/img/icons/icon-chevron-right.svg create mode 100644 master/_static/img/icons/icon-circe.svg create mode 100644 master/_static/img/icons/icon-clock.svg create mode 100644 master/_static/img/icons/icon-close.svg create mode 100644 master/_static/img/icons/icon-cloud-docs.svg create mode 100644 master/_static/img/icons/icon-cloud.svg create mode 100644 master/_static/img/icons/icon-comparison.svg create mode 100644 master/_static/img/icons/icon-contact-us.svg create mode 100644 master/_static/img/icons/icon-developers-blog.svg create mode 100644 master/_static/img/icons/icon-docs.svg create mode 100644 master/_static/img/icons/icon-enterprise-m.svg create mode 100644 master/_static/img/icons/icon-enterprise.svg create mode 100644 master/_static/img/icons/icon-events.svg create mode 100644 master/_static/img/icons/icon-exclamation.svg create mode 100644 master/_static/img/icons/icon-expand.svg create mode 100644 master/_static/img/icons/icon-forum.svg create mode 100644 master/_static/img/icons/icon-getting-started.svg create mode 100644 master/_static/img/icons/icon-glossary.svg create mode 100644 master/_static/img/icons/icon-help.svg create mode 100644 master/_static/img/icons/icon-home.svg create mode 100644 master/_static/img/icons/icon-infoworld.svg create mode 100644 master/_static/img/icons/icon-integrations.svg create mode 100644 master/_static/img/icons/icon-knowledge-base.svg create mode 100644 master/_static/img/icons/icon-less.svg create mode 100644 master/_static/img/icons/icon-live-test.svg create mode 100644 master/_static/img/icons/icon-mail-list.svg create mode 100644 master/_static/img/icons/icon-manager.svg create mode 100644 master/_static/img/icons/icon-memory-management.svg create mode 100644 master/_static/img/icons/icon-modeling.svg create mode 100644 master/_static/img/icons/icon-monitoring.svg create mode 100644 master/_static/img/icons/icon-networking.svg create mode 100644 master/_static/img/icons/icon-news.svg create mode 100644 master/_static/img/icons/icon-newsletter.svg create mode 100644 master/_static/img/icons/icon-nsql-guides.svg create mode 100644 master/_static/img/icons/icon-open-source.svg create mode 100644 master/_static/img/icons/icon-operator.svg create mode 100644 master/_static/img/icons/icon-overview.svg create mode 100644 master/_static/img/icons/icon-partners.svg create mode 100644 master/_static/img/icons/icon-plus.svg create mode 100644 master/_static/img/icons/icon-pricing.svg create mode 100644 master/_static/img/icons/icon-release-notes.svg create mode 100644 master/_static/img/icons/icon-resource-center.svg create mode 100644 master/_static/img/icons/icon-roadmap.svg create mode 100644 master/_static/img/icons/icon-search.svg create mode 100644 master/_static/img/icons/icon-slack.svg create mode 100644 master/_static/img/icons/icon-stack-overflow.svg create mode 100644 master/_static/img/icons/icon-summit.svg create mode 100644 master/_static/img/icons/icon-support.svg create mode 100644 master/_static/img/icons/icon-tech-talks.svg create mode 100644 master/_static/img/icons/icon-testing.svg create mode 100644 master/_static/img/icons/icon-thumbs-down.svg create mode 100644 master/_static/img/icons/icon-thumbs-up.svg create mode 100644 master/_static/img/icons/icon-tip.svg create mode 100644 master/_static/img/icons/icon-training.svg create mode 100644 master/_static/img/icons/icon-triangle-down.svg create mode 100644 master/_static/img/icons/icon-university.svg create mode 100644 master/_static/img/icons/icon-users-blog.svg create mode 100644 master/_static/img/icons/icon-warning.svg create mode 100644 master/_static/img/icons/icon-webinars.svg create mode 100644 master/_static/img/icons/icon-whitepapers.svg create mode 100644 master/_static/img/icons/icon-workshop.svg create mode 100644 master/_static/img/logo-scylla-horizontal-color.svg create mode 100644 master/_static/img/logo-scylla-horizontal-light.svg create mode 100644 master/_static/img/mascots-2/2-monster-laptop.svg create mode 100644 master/_static/img/mascots-2/alternator.svg create mode 100644 master/_static/img/mascots-2/award.svg create mode 100644 master/_static/img/mascots-2/care-pet.svg create mode 100644 master/_static/img/mascots-2/cdc.svg create mode 100644 master/_static/img/mascots-2/chef.svg create mode 100644 master/_static/img/mascots-2/cloud.svg create mode 100644 master/_static/img/mascots-2/default.svg create mode 100644 master/_static/img/mascots-2/docs.svg create mode 100644 master/_static/img/mascots-2/driver.svg create mode 100644 master/_static/img/mascots-2/enterprise.svg create mode 100644 master/_static/img/mascots-2/forward-2.svg create mode 100644 master/_static/img/mascots-2/forward.svg create mode 100644 master/_static/img/mascots-2/headphones.svg create mode 100644 master/_static/img/mascots-2/heart.svg create mode 100644 master/_static/img/mascots-2/laptop.svg create mode 100644 master/_static/img/mascots-2/magnifying-glass.svg create mode 100644 master/_static/img/mascots-2/manager.svg create mode 100644 master/_static/img/mascots-2/monitor.svg create mode 100644 master/_static/img/mascots-2/open-mouth.svg create mode 100644 master/_static/img/mascots-2/operator.svg create mode 100644 master/_static/img/mascots-2/plug.svg create mode 100644 master/_static/img/mascots-2/repair.svg create mode 100644 master/_static/img/mascots-2/server.svg create mode 100644 master/_static/img/mascots-2/sleepy.svg create mode 100644 master/_static/img/mascots-2/smile-learning.svg create mode 100644 master/_static/img/mascots-2/stretched-up.svg create mode 100644 master/_static/img/mascots-2/toolbox.svg create mode 100644 master/_static/img/mascots-2/university.svg create mode 100644 master/_static/img/mascots-2/workshop.svg create mode 100644 master/_static/img/mascots-2/wow-up.svg create mode 100644 master/_static/img/mascots-2/wow.svg create mode 100644 master/_static/img/mascots-2/yummy.svg create mode 100644 master/_static/img/mascots/404.jpg create mode 100644 master/_static/img/mascots/scylla-3monsters.png create mode 100644 master/_static/img/mascots/scylla-advisor-crystal.png create mode 100644 master/_static/img/mascots/scylla-alternator.svg create mode 100644 master/_static/img/mascots/scylla-cloud.svg create mode 100644 master/_static/img/mascots/scylla-computer-3-monsters.png create mode 100644 master/_static/img/mascots/scylla-computer-headset.png create mode 100644 master/_static/img/mascots/scylla-cup-number-one.png create mode 100644 master/_static/img/mascots/scylla-docs.svg create mode 100644 master/_static/img/mascots/scylla-drivers.svg create mode 100644 master/_static/img/mascots/scylla-enterprise.svg create mode 100644 master/_static/img/mascots/scylla-forklift-boxes.png create mode 100644 master/_static/img/mascots/scylla-forklift-migration.png create mode 100644 master/_static/img/mascots/scylla-gear.png create mode 100644 master/_static/img/mascots/scylla-hardhat.png create mode 100644 master/_static/img/mascots/scylla-headband.png create mode 100644 master/_static/img/mascots/scylla-headset.png create mode 100644 master/_static/img/mascots/scylla-hearts.png create mode 100644 master/_static/img/mascots/scylla-looking-down.png create mode 100644 master/_static/img/mascots/scylla-looking-up.png create mode 100644 master/_static/img/mascots/scylla-magnifying-glass-fronting.png create mode 100644 master/_static/img/mascots/scylla-magnifying-glass.png create mode 100644 master/_static/img/mascots/scylla-manager.svg create mode 100644 master/_static/img/mascots/scylla-monitor.svg create mode 100644 master/_static/img/mascots/scylla-movement-fast.png create mode 100644 master/_static/img/mascots/scylla-movement.png create mode 100644 master/_static/img/mascots/scylla-onpremise.png create mode 100644 master/_static/img/mascots/scylla-opensource.svg create mode 100644 master/_static/img/mascots/scylla-operator.svg create mode 100644 master/_static/img/mascots/scylla-plugin.png create mode 100644 master/_static/img/mascots/scylla-release-mascot.png create mode 100644 master/_static/img/mascots/scylla-repair.png create mode 100644 master/_static/img/mascots/scylla-server.png create mode 100644 master/_static/img/mascots/scylla-sleeping.png create mode 100644 master/_static/img/mascots/scylla-tall-measure.png create mode 100644 master/_static/img/mascots/scylla-university.png create mode 100644 master/_static/img/mascots/scylla-weights.png create mode 100644 master/_static/img/mascots/scylla-window-cleaning.png create mode 100644 master/_static/img/mascots/scylla-with-computer-2.png create mode 100644 master/_static/img/mascots/scylla-with-computer.png create mode 100644 master/_static/img/mascots/scylla-with-linux.png create mode 100644 master/_static/img/mascots/scylla-writting.png create mode 100644 master/_static/img/menu.svg create mode 100644 master/_static/img/scylladb-logo-horizontal.svg create mode 100644 master/_static/js/main.bundle.js create mode 100644 master/_static/js/main.bundle.js.LICENSE.txt create mode 100644 master/_static/js/runtime.bundle.js create mode 100644 master/_static/language_data.js create mode 100644 master/_static/minus.png create mode 100644 master/_static/plus.png create mode 100644 master/_static/pygments.css create mode 100644 master/_static/searchtools.js create mode 100644 master/_static/sphinx_collapse.css create mode 100644 master/_static/sphinx_highlight.js create mode 100644 master/_static/tabs.css create mode 100644 master/_static/tabs.js create mode 100644 master/api-reference/groups/scylla.scylladb.com.html create mode 100644 master/api-reference/groups/scylla.scylladb.com/nodeconfigs.html create mode 100644 master/api-reference/groups/scylla.scylladb.com/scyllaclusters.html create mode 100644 master/api-reference/groups/scylla.scylladb.com/scylladbdatacenters.html create mode 100644 master/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html create mode 100644 master/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html create mode 100644 master/api-reference/index.html create mode 100644 master/clients/alternator.html create mode 100644 master/clients/cql.html create mode 100644 master/clients/discovery.html create mode 100644 master/clients/index.html create mode 100644 master/contributing.html create mode 100644 master/eks.html create mode 100644 master/exposing.html create mode 100644 master/generic.html create mode 100644 master/genindex.html create mode 100644 master/gke.html create mode 100644 master/helm.html create mode 100644 master/index.html create mode 100644 master/manager.html create mode 100644 master/migration.html create mode 100644 master/monitoring.html create mode 100644 master/multidc/eks.html create mode 100644 master/multidc/gke.html create mode 100644 master/multidc/index.html create mode 100644 master/multidc/multidc.html create mode 100644 master/nodeoperations/automatic-cleanup.html create mode 100644 master/nodeoperations/index.html create mode 100644 master/nodeoperations/maintenance-mode.html create mode 100644 master/nodeoperations/replace-node.html create mode 100644 master/nodeoperations/restore.html create mode 100644 master/nodeoperations/scylla-upgrade.html create mode 100644 master/objects.inv create mode 100644 master/performance.html create mode 100644 master/releases.html create mode 100644 master/search.html create mode 100644 master/searchindex.js create mode 100644 master/sitemap.xml create mode 100644 master/support/index.html create mode 100644 master/support/known-issues.html create mode 100644 master/support/must-gather.html create mode 100644 master/support/overview.html create mode 100644 master/support/troubleshooting/index.html create mode 100644 master/support/troubleshooting/installation.html create mode 100644 master/upgrade.html create mode 100644 stable/.buildinfo create mode 100644 stable/.doctrees/api-reference/groups/scylla.scylladb.com.doctree create mode 100644 stable/.doctrees/api-reference/groups/scylla.scylladb.com/nodeconfigs.doctree create mode 100644 stable/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaclusters.doctree create mode 100644 stable/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree create mode 100644 stable/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.doctree create mode 100644 stable/.doctrees/api-reference/index.doctree create mode 100644 stable/.doctrees/clients/alternator.doctree create mode 100644 stable/.doctrees/clients/cql.doctree create mode 100644 stable/.doctrees/clients/discovery.doctree create mode 100644 stable/.doctrees/clients/index.doctree create mode 100644 stable/.doctrees/contributing.doctree create mode 100644 stable/.doctrees/eks.doctree create mode 100644 stable/.doctrees/environment.pickle create mode 100644 stable/.doctrees/exposing.doctree create mode 100644 stable/.doctrees/generic.doctree create mode 100644 stable/.doctrees/gke.doctree create mode 100644 stable/.doctrees/helm.doctree create mode 100644 stable/.doctrees/index.doctree create mode 100644 stable/.doctrees/manager.doctree create mode 100644 stable/.doctrees/migration.doctree create mode 100644 stable/.doctrees/monitoring.doctree create mode 100644 stable/.doctrees/multidc/eks.doctree create mode 100644 stable/.doctrees/multidc/gke.doctree create mode 100644 stable/.doctrees/multidc/index.doctree create mode 100644 stable/.doctrees/multidc/multidc.doctree create mode 100644 stable/.doctrees/nodeoperations/automatic-cleanup.doctree create mode 100644 stable/.doctrees/nodeoperations/index.doctree create mode 100644 stable/.doctrees/nodeoperations/maintenance-mode.doctree create mode 100644 stable/.doctrees/nodeoperations/replace-node.doctree create mode 100644 stable/.doctrees/nodeoperations/restore.doctree create mode 100644 stable/.doctrees/nodeoperations/scylla-upgrade.doctree create mode 100644 stable/.doctrees/performance.doctree create mode 100644 stable/.doctrees/releases.doctree create mode 100644 stable/.doctrees/support/index.doctree create mode 100644 stable/.doctrees/support/known-issues.doctree create mode 100644 stable/.doctrees/support/must-gather.doctree create mode 100644 stable/.doctrees/support/overview.doctree create mode 100644 stable/.doctrees/support/troubleshooting/index.doctree create mode 100644 stable/.doctrees/support/troubleshooting/installation.doctree create mode 100644 stable/.doctrees/upgrade.doctree create mode 100644 stable/.nojekyll create mode 100644 stable/404.html create mode 100644 stable/CNAME create mode 100644 stable/_images/clusterip.svg create mode 100644 stable/_images/loadbalancer.svg create mode 100644 stable/_images/logo.png create mode 100644 stable/_images/multivpc.svg create mode 100644 stable/_images/podips.svg create mode 100644 stable/_sources/api-reference/groups/scylla.scylladb.com.rst.txt create mode 100644 stable/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt create mode 100644 stable/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt create mode 100644 stable/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt create mode 100644 stable/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt create mode 100644 stable/_sources/api-reference/index.rst.txt create mode 100644 stable/_sources/clients/alternator.md.txt create mode 100644 stable/_sources/clients/cql.md.txt create mode 100644 stable/_sources/clients/discovery.md.txt create mode 100644 stable/_sources/clients/index.rst.txt create mode 100644 stable/_sources/contributing.md.txt create mode 100644 stable/_sources/eks.md.txt create mode 100644 stable/_sources/exposing.md.txt create mode 100644 stable/_sources/generic.md.txt create mode 100644 stable/_sources/gke.md.txt create mode 100644 stable/_sources/helm.md.txt create mode 100644 stable/_sources/index.rst.txt create mode 100644 stable/_sources/manager.md.txt create mode 100644 stable/_sources/migration.md.txt create mode 100644 stable/_sources/monitoring.md.txt create mode 100644 stable/_sources/multidc/eks.md.txt create mode 100644 stable/_sources/multidc/gke.md.txt create mode 100644 stable/_sources/multidc/index.rst.txt create mode 100644 stable/_sources/multidc/multidc.md.txt create mode 100644 stable/_sources/nodeoperations/automatic-cleanup.md.txt create mode 100644 stable/_sources/nodeoperations/index.rst.txt create mode 100644 stable/_sources/nodeoperations/maintenance-mode.md.txt create mode 100644 stable/_sources/nodeoperations/replace-node.md.txt create mode 100644 stable/_sources/nodeoperations/restore.md.txt create mode 100644 stable/_sources/nodeoperations/scylla-upgrade.md.txt create mode 100644 stable/_sources/performance.md.txt create mode 100644 stable/_sources/releases.md.txt create mode 100644 stable/_sources/support/index.rst.txt create mode 100644 stable/_sources/support/known-issues.md.txt create mode 100644 stable/_sources/support/must-gather.md.txt create mode 100644 stable/_sources/support/overview.md.txt create mode 100644 stable/_sources/support/troubleshooting/index.rst.txt create mode 100644 stable/_sources/support/troubleshooting/installation.md.txt create mode 100644 stable/_sources/upgrade.md.txt create mode 100644 stable/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css create mode 100644 stable/_sphinx_design_static/design-tabs.js create mode 100644 stable/_static/basic.css create mode 100644 stable/_static/check-solid.svg create mode 100644 stable/_static/clipboard.min.js create mode 100644 stable/_static/copy-button.svg create mode 100644 stable/_static/copybutton.css create mode 100644 stable/_static/copybutton.js create mode 100644 stable/_static/copybutton_funcs.js create mode 100644 stable/_static/css/main.css create mode 100644 stable/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css create mode 100644 stable/_static/design-tabs.js create mode 100644 stable/_static/doctools.js create mode 100644 stable/_static/documentation_options.js create mode 100644 stable/_static/file.png create mode 100644 stable/_static/img/banner-background.svg create mode 100644 stable/_static/img/favicon-228x228.png create mode 100644 stable/_static/img/favicon-32x32.png create mode 100644 stable/_static/img/favicon.ico create mode 100644 stable/_static/img/icons/icon-about-team.svg create mode 100644 stable/_static/img/icons/icon-about-us-m.svg create mode 100644 stable/_static/img/icons/icon-about-us.svg create mode 100644 stable/_static/img/icons/icon-alternator.svg create mode 100644 stable/_static/img/icons/icon-apps.svg create mode 100644 stable/_static/img/icons/icon-architecture.svg create mode 100644 stable/_static/img/icons/icon-benchmarks.svg create mode 100644 stable/_static/img/icons/icon-blog.svg create mode 100644 stable/_static/img/icons/icon-careers.svg create mode 100644 stable/_static/img/icons/icon-chevron-left.svg create mode 100644 stable/_static/img/icons/icon-chevron-right.svg create mode 100644 stable/_static/img/icons/icon-circe.svg create mode 100644 stable/_static/img/icons/icon-clock.svg create mode 100644 stable/_static/img/icons/icon-close.svg create mode 100644 stable/_static/img/icons/icon-cloud-docs.svg create mode 100644 stable/_static/img/icons/icon-cloud.svg create mode 100644 stable/_static/img/icons/icon-comparison.svg create mode 100644 stable/_static/img/icons/icon-contact-us.svg create mode 100644 stable/_static/img/icons/icon-developers-blog.svg create mode 100644 stable/_static/img/icons/icon-docs.svg create mode 100644 stable/_static/img/icons/icon-enterprise-m.svg create mode 100644 stable/_static/img/icons/icon-enterprise.svg create mode 100644 stable/_static/img/icons/icon-events.svg create mode 100644 stable/_static/img/icons/icon-exclamation.svg create mode 100644 stable/_static/img/icons/icon-expand.svg create mode 100644 stable/_static/img/icons/icon-forum.svg create mode 100644 stable/_static/img/icons/icon-getting-started.svg create mode 100644 stable/_static/img/icons/icon-glossary.svg create mode 100644 stable/_static/img/icons/icon-help.svg create mode 100644 stable/_static/img/icons/icon-home.svg create mode 100644 stable/_static/img/icons/icon-infoworld.svg create mode 100644 stable/_static/img/icons/icon-integrations.svg create mode 100644 stable/_static/img/icons/icon-knowledge-base.svg create mode 100644 stable/_static/img/icons/icon-less.svg create mode 100644 stable/_static/img/icons/icon-live-test.svg create mode 100644 stable/_static/img/icons/icon-mail-list.svg create mode 100644 stable/_static/img/icons/icon-manager.svg create mode 100644 stable/_static/img/icons/icon-memory-management.svg create mode 100644 stable/_static/img/icons/icon-modeling.svg create mode 100644 stable/_static/img/icons/icon-monitoring.svg create mode 100644 stable/_static/img/icons/icon-networking.svg create mode 100644 stable/_static/img/icons/icon-news.svg create mode 100644 stable/_static/img/icons/icon-newsletter.svg create mode 100644 stable/_static/img/icons/icon-nsql-guides.svg create mode 100644 stable/_static/img/icons/icon-open-source.svg create mode 100644 stable/_static/img/icons/icon-operator.svg create mode 100644 stable/_static/img/icons/icon-overview.svg create mode 100644 stable/_static/img/icons/icon-partners.svg create mode 100644 stable/_static/img/icons/icon-plus.svg create mode 100644 stable/_static/img/icons/icon-pricing.svg create mode 100644 stable/_static/img/icons/icon-release-notes.svg create mode 100644 stable/_static/img/icons/icon-resource-center.svg create mode 100644 stable/_static/img/icons/icon-roadmap.svg create mode 100644 stable/_static/img/icons/icon-search.svg create mode 100644 stable/_static/img/icons/icon-slack.svg create mode 100644 stable/_static/img/icons/icon-stack-overflow.svg create mode 100644 stable/_static/img/icons/icon-summit.svg create mode 100644 stable/_static/img/icons/icon-support.svg create mode 100644 stable/_static/img/icons/icon-tech-talks.svg create mode 100644 stable/_static/img/icons/icon-testing.svg create mode 100644 stable/_static/img/icons/icon-thumbs-down.svg create mode 100644 stable/_static/img/icons/icon-thumbs-up.svg create mode 100644 stable/_static/img/icons/icon-tip.svg create mode 100644 stable/_static/img/icons/icon-training.svg create mode 100644 stable/_static/img/icons/icon-triangle-down.svg create mode 100644 stable/_static/img/icons/icon-university.svg create mode 100644 stable/_static/img/icons/icon-users-blog.svg create mode 100644 stable/_static/img/icons/icon-warning.svg create mode 100644 stable/_static/img/icons/icon-webinars.svg create mode 100644 stable/_static/img/icons/icon-whitepapers.svg create mode 100644 stable/_static/img/icons/icon-workshop.svg create mode 100644 stable/_static/img/logo-scylla-horizontal-color.svg create mode 100644 stable/_static/img/logo-scylla-horizontal-light.svg create mode 100644 stable/_static/img/mascots-2/2-monster-laptop.svg create mode 100644 stable/_static/img/mascots-2/alternator.svg create mode 100644 stable/_static/img/mascots-2/award.svg create mode 100644 stable/_static/img/mascots-2/care-pet.svg create mode 100644 stable/_static/img/mascots-2/cdc.svg create mode 100644 stable/_static/img/mascots-2/chef.svg create mode 100644 stable/_static/img/mascots-2/cloud.svg create mode 100644 stable/_static/img/mascots-2/default.svg create mode 100644 stable/_static/img/mascots-2/docs.svg create mode 100644 stable/_static/img/mascots-2/driver.svg create mode 100644 stable/_static/img/mascots-2/enterprise.svg create mode 100644 stable/_static/img/mascots-2/forward-2.svg create mode 100644 stable/_static/img/mascots-2/forward.svg create mode 100644 stable/_static/img/mascots-2/headphones.svg create mode 100644 stable/_static/img/mascots-2/heart.svg create mode 100644 stable/_static/img/mascots-2/laptop.svg create mode 100644 stable/_static/img/mascots-2/magnifying-glass.svg create mode 100644 stable/_static/img/mascots-2/manager.svg create mode 100644 stable/_static/img/mascots-2/monitor.svg create mode 100644 stable/_static/img/mascots-2/open-mouth.svg create mode 100644 stable/_static/img/mascots-2/operator.svg create mode 100644 stable/_static/img/mascots-2/plug.svg create mode 100644 stable/_static/img/mascots-2/repair.svg create mode 100644 stable/_static/img/mascots-2/server.svg create mode 100644 stable/_static/img/mascots-2/sleepy.svg create mode 100644 stable/_static/img/mascots-2/smile-learning.svg create mode 100644 stable/_static/img/mascots-2/stretched-up.svg create mode 100644 stable/_static/img/mascots-2/toolbox.svg create mode 100644 stable/_static/img/mascots-2/university.svg create mode 100644 stable/_static/img/mascots-2/workshop.svg create mode 100644 stable/_static/img/mascots-2/wow-up.svg create mode 100644 stable/_static/img/mascots-2/wow.svg create mode 100644 stable/_static/img/mascots-2/yummy.svg create mode 100644 stable/_static/img/mascots/404.jpg create mode 100644 stable/_static/img/mascots/scylla-3monsters.png create mode 100644 stable/_static/img/mascots/scylla-advisor-crystal.png create mode 100644 stable/_static/img/mascots/scylla-alternator.svg create mode 100644 stable/_static/img/mascots/scylla-cloud.svg create mode 100644 stable/_static/img/mascots/scylla-computer-3-monsters.png create mode 100644 stable/_static/img/mascots/scylla-computer-headset.png create mode 100644 stable/_static/img/mascots/scylla-cup-number-one.png create mode 100644 stable/_static/img/mascots/scylla-docs.svg create mode 100644 stable/_static/img/mascots/scylla-drivers.svg create mode 100644 stable/_static/img/mascots/scylla-enterprise.svg create mode 100644 stable/_static/img/mascots/scylla-forklift-boxes.png create mode 100644 stable/_static/img/mascots/scylla-forklift-migration.png create mode 100644 stable/_static/img/mascots/scylla-gear.png create mode 100644 stable/_static/img/mascots/scylla-hardhat.png create mode 100644 stable/_static/img/mascots/scylla-headband.png create mode 100644 stable/_static/img/mascots/scylla-headset.png create mode 100644 stable/_static/img/mascots/scylla-hearts.png create mode 100644 stable/_static/img/mascots/scylla-looking-down.png create mode 100644 stable/_static/img/mascots/scylla-looking-up.png create mode 100644 stable/_static/img/mascots/scylla-magnifying-glass-fronting.png create mode 100644 stable/_static/img/mascots/scylla-magnifying-glass.png create mode 100644 stable/_static/img/mascots/scylla-manager.svg create mode 100644 stable/_static/img/mascots/scylla-monitor.svg create mode 100644 stable/_static/img/mascots/scylla-movement-fast.png create mode 100644 stable/_static/img/mascots/scylla-movement.png create mode 100644 stable/_static/img/mascots/scylla-onpremise.png create mode 100644 stable/_static/img/mascots/scylla-opensource.svg create mode 100644 stable/_static/img/mascots/scylla-operator.svg create mode 100644 stable/_static/img/mascots/scylla-plugin.png create mode 100644 stable/_static/img/mascots/scylla-release-mascot.png create mode 100644 stable/_static/img/mascots/scylla-repair.png create mode 100644 stable/_static/img/mascots/scylla-server.png create mode 100644 stable/_static/img/mascots/scylla-sleeping.png create mode 100644 stable/_static/img/mascots/scylla-tall-measure.png create mode 100644 stable/_static/img/mascots/scylla-university.png create mode 100644 stable/_static/img/mascots/scylla-weights.png create mode 100644 stable/_static/img/mascots/scylla-window-cleaning.png create mode 100644 stable/_static/img/mascots/scylla-with-computer-2.png create mode 100644 stable/_static/img/mascots/scylla-with-computer.png create mode 100644 stable/_static/img/mascots/scylla-with-linux.png create mode 100644 stable/_static/img/mascots/scylla-writting.png create mode 100644 stable/_static/img/menu.svg create mode 100644 stable/_static/img/scylladb-logo-horizontal.svg create mode 100644 stable/_static/js/main.bundle.js create mode 100644 stable/_static/js/main.bundle.js.LICENSE.txt create mode 100644 stable/_static/js/runtime.bundle.js create mode 100644 stable/_static/language_data.js create mode 100644 stable/_static/minus.png create mode 100644 stable/_static/plus.png create mode 100644 stable/_static/pygments.css create mode 100644 stable/_static/searchtools.js create mode 100644 stable/_static/sphinx_collapse.css create mode 100644 stable/_static/sphinx_highlight.js create mode 100644 stable/_static/tabs.css create mode 100644 stable/_static/tabs.js create mode 100644 stable/api-reference/groups/scylla.scylladb.com.html create mode 100644 stable/api-reference/groups/scylla.scylladb.com/nodeconfigs.html create mode 100644 stable/api-reference/groups/scylla.scylladb.com/scyllaclusters.html create mode 100644 stable/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html create mode 100644 stable/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html create mode 100644 stable/api-reference/index.html create mode 100644 stable/clients/alternator.html create mode 100644 stable/clients/cql.html create mode 100644 stable/clients/discovery.html create mode 100644 stable/clients/index.html create mode 100644 stable/contributing.html create mode 100644 stable/eks.html create mode 100644 stable/exposing.html create mode 100644 stable/generic.html create mode 100644 stable/genindex.html create mode 100644 stable/gke.html create mode 100644 stable/helm.html create mode 100644 stable/index.html create mode 100644 stable/manager.html create mode 100644 stable/migration.html create mode 100644 stable/monitoring.html create mode 100644 stable/multidc/eks.html create mode 100644 stable/multidc/gke.html create mode 100644 stable/multidc/index.html create mode 100644 stable/multidc/multidc.html create mode 100644 stable/nodeoperations/automatic-cleanup.html create mode 100644 stable/nodeoperations/index.html create mode 100644 stable/nodeoperations/maintenance-mode.html create mode 100644 stable/nodeoperations/replace-node.html create mode 100644 stable/nodeoperations/restore.html create mode 100644 stable/nodeoperations/scylla-upgrade.html create mode 100644 stable/objects.inv create mode 100644 stable/performance.html create mode 100644 stable/releases.html create mode 100644 stable/search.html create mode 100644 stable/searchindex.js create mode 100644 stable/sitemap.xml create mode 100644 stable/support/index.html create mode 100644 stable/support/known-issues.html create mode 100644 stable/support/must-gather.html create mode 100644 stable/support/overview.html create mode 100644 stable/support/troubleshooting/index.html create mode 100644 stable/support/troubleshooting/installation.html create mode 100644 stable/upgrade.html create mode 100644 v1.12/.buildinfo create mode 100644 v1.12/.doctrees/api-reference/groups/scylla.scylladb.com.doctree create mode 100644 v1.12/.doctrees/api-reference/groups/scylla.scylladb.com/nodeconfigs.doctree create mode 100644 v1.12/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaclusters.doctree create mode 100644 v1.12/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree create mode 100644 v1.12/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.doctree create mode 100644 v1.12/.doctrees/api-reference/index.doctree create mode 100644 v1.12/.doctrees/clients/alternator.doctree create mode 100644 v1.12/.doctrees/clients/cql.doctree create mode 100644 v1.12/.doctrees/clients/discovery.doctree create mode 100644 v1.12/.doctrees/clients/index.doctree create mode 100644 v1.12/.doctrees/contributing.doctree create mode 100644 v1.12/.doctrees/eks.doctree create mode 100644 v1.12/.doctrees/environment.pickle create mode 100644 v1.12/.doctrees/exposing.doctree create mode 100644 v1.12/.doctrees/generic.doctree create mode 100644 v1.12/.doctrees/gke.doctree create mode 100644 v1.12/.doctrees/helm.doctree create mode 100644 v1.12/.doctrees/index.doctree create mode 100644 v1.12/.doctrees/manager.doctree create mode 100644 v1.12/.doctrees/migration.doctree create mode 100644 v1.12/.doctrees/monitoring.doctree create mode 100644 v1.12/.doctrees/multidc/eks.doctree create mode 100644 v1.12/.doctrees/multidc/gke.doctree create mode 100644 v1.12/.doctrees/multidc/index.doctree create mode 100644 v1.12/.doctrees/multidc/multidc.doctree create mode 100644 v1.12/.doctrees/nodeoperations/automatic-cleanup.doctree create mode 100644 v1.12/.doctrees/nodeoperations/index.doctree create mode 100644 v1.12/.doctrees/nodeoperations/maintenance-mode.doctree create mode 100644 v1.12/.doctrees/nodeoperations/replace-node.doctree create mode 100644 v1.12/.doctrees/nodeoperations/restore.doctree create mode 100644 v1.12/.doctrees/nodeoperations/scylla-upgrade.doctree create mode 100644 v1.12/.doctrees/performance.doctree create mode 100644 v1.12/.doctrees/releases.doctree create mode 100644 v1.12/.doctrees/support/index.doctree create mode 100644 v1.12/.doctrees/support/known-issues.doctree create mode 100644 v1.12/.doctrees/support/must-gather.doctree create mode 100644 v1.12/.doctrees/support/overview.doctree create mode 100644 v1.12/.doctrees/support/troubleshooting/index.doctree create mode 100644 v1.12/.doctrees/support/troubleshooting/installation.doctree create mode 100644 v1.12/.doctrees/upgrade.doctree create mode 100644 v1.12/.nojekyll create mode 100644 v1.12/404.html create mode 100644 v1.12/CNAME create mode 100644 v1.12/_images/clusterip.svg create mode 100644 v1.12/_images/loadbalancer.svg create mode 100644 v1.12/_images/logo.png create mode 100644 v1.12/_images/multivpc.svg create mode 100644 v1.12/_images/podips.svg create mode 100644 v1.12/_sources/api-reference/groups/scylla.scylladb.com.rst.txt create mode 100644 v1.12/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt create mode 100644 v1.12/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt create mode 100644 v1.12/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt create mode 100644 v1.12/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt create mode 100644 v1.12/_sources/api-reference/index.rst.txt create mode 100644 v1.12/_sources/clients/alternator.md.txt create mode 100644 v1.12/_sources/clients/cql.md.txt create mode 100644 v1.12/_sources/clients/discovery.md.txt create mode 100644 v1.12/_sources/clients/index.rst.txt create mode 100644 v1.12/_sources/contributing.md.txt create mode 100644 v1.12/_sources/eks.md.txt create mode 100644 v1.12/_sources/exposing.md.txt create mode 100644 v1.12/_sources/generic.md.txt create mode 100644 v1.12/_sources/gke.md.txt create mode 100644 v1.12/_sources/helm.md.txt create mode 100644 v1.12/_sources/index.rst.txt create mode 100644 v1.12/_sources/manager.md.txt create mode 100644 v1.12/_sources/migration.md.txt create mode 100644 v1.12/_sources/monitoring.md.txt create mode 100644 v1.12/_sources/multidc/eks.md.txt create mode 100644 v1.12/_sources/multidc/gke.md.txt create mode 100644 v1.12/_sources/multidc/index.rst.txt create mode 100644 v1.12/_sources/multidc/multidc.md.txt create mode 100644 v1.12/_sources/nodeoperations/automatic-cleanup.md.txt create mode 100644 v1.12/_sources/nodeoperations/index.rst.txt create mode 100644 v1.12/_sources/nodeoperations/maintenance-mode.md.txt create mode 100644 v1.12/_sources/nodeoperations/replace-node.md.txt create mode 100644 v1.12/_sources/nodeoperations/restore.md.txt create mode 100644 v1.12/_sources/nodeoperations/scylla-upgrade.md.txt create mode 100644 v1.12/_sources/performance.md.txt create mode 100644 v1.12/_sources/releases.md.txt create mode 100644 v1.12/_sources/support/index.rst.txt create mode 100644 v1.12/_sources/support/known-issues.md.txt create mode 100644 v1.12/_sources/support/must-gather.md.txt create mode 100644 v1.12/_sources/support/overview.md.txt create mode 100644 v1.12/_sources/support/troubleshooting/index.rst.txt create mode 100644 v1.12/_sources/support/troubleshooting/installation.md.txt create mode 100644 v1.12/_sources/upgrade.md.txt create mode 100644 v1.12/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css create mode 100644 v1.12/_sphinx_design_static/design-tabs.js create mode 100644 v1.12/_static/basic.css create mode 100644 v1.12/_static/check-solid.svg create mode 100644 v1.12/_static/clipboard.min.js create mode 100644 v1.12/_static/copy-button.svg create mode 100644 v1.12/_static/copybutton.css create mode 100644 v1.12/_static/copybutton.js create mode 100644 v1.12/_static/copybutton_funcs.js create mode 100644 v1.12/_static/css/main.css create mode 100644 v1.12/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css create mode 100644 v1.12/_static/design-tabs.js create mode 100644 v1.12/_static/doctools.js create mode 100644 v1.12/_static/documentation_options.js create mode 100644 v1.12/_static/file.png create mode 100644 v1.12/_static/img/banner-background.svg create mode 100644 v1.12/_static/img/favicon-228x228.png create mode 100644 v1.12/_static/img/favicon-32x32.png create mode 100644 v1.12/_static/img/favicon.ico create mode 100644 v1.12/_static/img/icons/icon-about-team.svg create mode 100644 v1.12/_static/img/icons/icon-about-us-m.svg create mode 100644 v1.12/_static/img/icons/icon-about-us.svg create mode 100644 v1.12/_static/img/icons/icon-alternator.svg create mode 100644 v1.12/_static/img/icons/icon-apps.svg create mode 100644 v1.12/_static/img/icons/icon-architecture.svg create mode 100644 v1.12/_static/img/icons/icon-benchmarks.svg create mode 100644 v1.12/_static/img/icons/icon-blog.svg create mode 100644 v1.12/_static/img/icons/icon-careers.svg create mode 100644 v1.12/_static/img/icons/icon-chevron-left.svg create mode 100644 v1.12/_static/img/icons/icon-chevron-right.svg create mode 100644 v1.12/_static/img/icons/icon-circe.svg create mode 100644 v1.12/_static/img/icons/icon-clock.svg create mode 100644 v1.12/_static/img/icons/icon-close.svg create mode 100644 v1.12/_static/img/icons/icon-cloud-docs.svg create mode 100644 v1.12/_static/img/icons/icon-cloud.svg create mode 100644 v1.12/_static/img/icons/icon-comparison.svg create mode 100644 v1.12/_static/img/icons/icon-contact-us.svg create mode 100644 v1.12/_static/img/icons/icon-developers-blog.svg create mode 100644 v1.12/_static/img/icons/icon-docs.svg create mode 100644 v1.12/_static/img/icons/icon-enterprise-m.svg create mode 100644 v1.12/_static/img/icons/icon-enterprise.svg create mode 100644 v1.12/_static/img/icons/icon-events.svg create mode 100644 v1.12/_static/img/icons/icon-exclamation.svg create mode 100644 v1.12/_static/img/icons/icon-expand.svg create mode 100644 v1.12/_static/img/icons/icon-forum.svg create mode 100644 v1.12/_static/img/icons/icon-getting-started.svg create mode 100644 v1.12/_static/img/icons/icon-glossary.svg create mode 100644 v1.12/_static/img/icons/icon-help.svg create mode 100644 v1.12/_static/img/icons/icon-home.svg create mode 100644 v1.12/_static/img/icons/icon-infoworld.svg create mode 100644 v1.12/_static/img/icons/icon-integrations.svg create mode 100644 v1.12/_static/img/icons/icon-knowledge-base.svg create mode 100644 v1.12/_static/img/icons/icon-less.svg create mode 100644 v1.12/_static/img/icons/icon-live-test.svg create mode 100644 v1.12/_static/img/icons/icon-mail-list.svg create mode 100644 v1.12/_static/img/icons/icon-manager.svg create mode 100644 v1.12/_static/img/icons/icon-memory-management.svg create mode 100644 v1.12/_static/img/icons/icon-modeling.svg create mode 100644 v1.12/_static/img/icons/icon-monitoring.svg create mode 100644 v1.12/_static/img/icons/icon-networking.svg create mode 100644 v1.12/_static/img/icons/icon-news.svg create mode 100644 v1.12/_static/img/icons/icon-newsletter.svg create mode 100644 v1.12/_static/img/icons/icon-nsql-guides.svg create mode 100644 v1.12/_static/img/icons/icon-open-source.svg create mode 100644 v1.12/_static/img/icons/icon-operator.svg create mode 100644 v1.12/_static/img/icons/icon-overview.svg create mode 100644 v1.12/_static/img/icons/icon-partners.svg create mode 100644 v1.12/_static/img/icons/icon-plus.svg create mode 100644 v1.12/_static/img/icons/icon-pricing.svg create mode 100644 v1.12/_static/img/icons/icon-release-notes.svg create mode 100644 v1.12/_static/img/icons/icon-resource-center.svg create mode 100644 v1.12/_static/img/icons/icon-roadmap.svg create mode 100644 v1.12/_static/img/icons/icon-search.svg create mode 100644 v1.12/_static/img/icons/icon-slack.svg create mode 100644 v1.12/_static/img/icons/icon-stack-overflow.svg create mode 100644 v1.12/_static/img/icons/icon-summit.svg create mode 100644 v1.12/_static/img/icons/icon-support.svg create mode 100644 v1.12/_static/img/icons/icon-tech-talks.svg create mode 100644 v1.12/_static/img/icons/icon-testing.svg create mode 100644 v1.12/_static/img/icons/icon-thumbs-down.svg create mode 100644 v1.12/_static/img/icons/icon-thumbs-up.svg create mode 100644 v1.12/_static/img/icons/icon-tip.svg create mode 100644 v1.12/_static/img/icons/icon-training.svg create mode 100644 v1.12/_static/img/icons/icon-triangle-down.svg create mode 100644 v1.12/_static/img/icons/icon-university.svg create mode 100644 v1.12/_static/img/icons/icon-users-blog.svg create mode 100644 v1.12/_static/img/icons/icon-warning.svg create mode 100644 v1.12/_static/img/icons/icon-webinars.svg create mode 100644 v1.12/_static/img/icons/icon-whitepapers.svg create mode 100644 v1.12/_static/img/icons/icon-workshop.svg create mode 100644 v1.12/_static/img/logo-scylla-horizontal-color.svg create mode 100644 v1.12/_static/img/logo-scylla-horizontal-light.svg create mode 100644 v1.12/_static/img/mascots-2/2-monster-laptop.svg create mode 100644 v1.12/_static/img/mascots-2/alternator.svg create mode 100644 v1.12/_static/img/mascots-2/award.svg create mode 100644 v1.12/_static/img/mascots-2/care-pet.svg create mode 100644 v1.12/_static/img/mascots-2/cdc.svg create mode 100644 v1.12/_static/img/mascots-2/chef.svg create mode 100644 v1.12/_static/img/mascots-2/cloud.svg create mode 100644 v1.12/_static/img/mascots-2/default.svg create mode 100644 v1.12/_static/img/mascots-2/docs.svg create mode 100644 v1.12/_static/img/mascots-2/driver.svg create mode 100644 v1.12/_static/img/mascots-2/enterprise.svg create mode 100644 v1.12/_static/img/mascots-2/forward-2.svg create mode 100644 v1.12/_static/img/mascots-2/forward.svg create mode 100644 v1.12/_static/img/mascots-2/headphones.svg create mode 100644 v1.12/_static/img/mascots-2/heart.svg create mode 100644 v1.12/_static/img/mascots-2/laptop.svg create mode 100644 v1.12/_static/img/mascots-2/magnifying-glass.svg create mode 100644 v1.12/_static/img/mascots-2/manager.svg create mode 100644 v1.12/_static/img/mascots-2/monitor.svg create mode 100644 v1.12/_static/img/mascots-2/open-mouth.svg create mode 100644 v1.12/_static/img/mascots-2/operator.svg create mode 100644 v1.12/_static/img/mascots-2/plug.svg create mode 100644 v1.12/_static/img/mascots-2/repair.svg create mode 100644 v1.12/_static/img/mascots-2/server.svg create mode 100644 v1.12/_static/img/mascots-2/sleepy.svg create mode 100644 v1.12/_static/img/mascots-2/smile-learning.svg create mode 100644 v1.12/_static/img/mascots-2/stretched-up.svg create mode 100644 v1.12/_static/img/mascots-2/toolbox.svg create mode 100644 v1.12/_static/img/mascots-2/university.svg create mode 100644 v1.12/_static/img/mascots-2/workshop.svg create mode 100644 v1.12/_static/img/mascots-2/wow-up.svg create mode 100644 v1.12/_static/img/mascots-2/wow.svg create mode 100644 v1.12/_static/img/mascots-2/yummy.svg create mode 100644 v1.12/_static/img/mascots/404.jpg create mode 100644 v1.12/_static/img/mascots/scylla-3monsters.png create mode 100644 v1.12/_static/img/mascots/scylla-advisor-crystal.png create mode 100644 v1.12/_static/img/mascots/scylla-alternator.svg create mode 100644 v1.12/_static/img/mascots/scylla-cloud.svg create mode 100644 v1.12/_static/img/mascots/scylla-computer-3-monsters.png create mode 100644 v1.12/_static/img/mascots/scylla-computer-headset.png create mode 100644 v1.12/_static/img/mascots/scylla-cup-number-one.png create mode 100644 v1.12/_static/img/mascots/scylla-docs.svg create mode 100644 v1.12/_static/img/mascots/scylla-drivers.svg create mode 100644 v1.12/_static/img/mascots/scylla-enterprise.svg create mode 100644 v1.12/_static/img/mascots/scylla-forklift-boxes.png create mode 100644 v1.12/_static/img/mascots/scylla-forklift-migration.png create mode 100644 v1.12/_static/img/mascots/scylla-gear.png create mode 100644 v1.12/_static/img/mascots/scylla-hardhat.png create mode 100644 v1.12/_static/img/mascots/scylla-headband.png create mode 100644 v1.12/_static/img/mascots/scylla-headset.png create mode 100644 v1.12/_static/img/mascots/scylla-hearts.png create mode 100644 v1.12/_static/img/mascots/scylla-looking-down.png create mode 100644 v1.12/_static/img/mascots/scylla-looking-up.png create mode 100644 v1.12/_static/img/mascots/scylla-magnifying-glass-fronting.png create mode 100644 v1.12/_static/img/mascots/scylla-magnifying-glass.png create mode 100644 v1.12/_static/img/mascots/scylla-manager.svg create mode 100644 v1.12/_static/img/mascots/scylla-monitor.svg create mode 100644 v1.12/_static/img/mascots/scylla-movement-fast.png create mode 100644 v1.12/_static/img/mascots/scylla-movement.png create mode 100644 v1.12/_static/img/mascots/scylla-onpremise.png create mode 100644 v1.12/_static/img/mascots/scylla-opensource.svg create mode 100644 v1.12/_static/img/mascots/scylla-operator.svg create mode 100644 v1.12/_static/img/mascots/scylla-plugin.png create mode 100644 v1.12/_static/img/mascots/scylla-release-mascot.png create mode 100644 v1.12/_static/img/mascots/scylla-repair.png create mode 100644 v1.12/_static/img/mascots/scylla-server.png create mode 100644 v1.12/_static/img/mascots/scylla-sleeping.png create mode 100644 v1.12/_static/img/mascots/scylla-tall-measure.png create mode 100644 v1.12/_static/img/mascots/scylla-university.png create mode 100644 v1.12/_static/img/mascots/scylla-weights.png create mode 100644 v1.12/_static/img/mascots/scylla-window-cleaning.png create mode 100644 v1.12/_static/img/mascots/scylla-with-computer-2.png create mode 100644 v1.12/_static/img/mascots/scylla-with-computer.png create mode 100644 v1.12/_static/img/mascots/scylla-with-linux.png create mode 100644 v1.12/_static/img/mascots/scylla-writting.png create mode 100644 v1.12/_static/img/menu.svg create mode 100644 v1.12/_static/img/scylladb-logo-horizontal.svg create mode 100644 v1.12/_static/js/main.bundle.js create mode 100644 v1.12/_static/js/main.bundle.js.LICENSE.txt create mode 100644 v1.12/_static/js/runtime.bundle.js create mode 100644 v1.12/_static/language_data.js create mode 100644 v1.12/_static/minus.png create mode 100644 v1.12/_static/plus.png create mode 100644 v1.12/_static/pygments.css create mode 100644 v1.12/_static/searchtools.js create mode 100644 v1.12/_static/sphinx_collapse.css create mode 100644 v1.12/_static/sphinx_highlight.js create mode 100644 v1.12/_static/tabs.css create mode 100644 v1.12/_static/tabs.js create mode 100644 v1.12/api-reference/groups/scylla.scylladb.com.html create mode 100644 v1.12/api-reference/groups/scylla.scylladb.com/nodeconfigs.html create mode 100644 v1.12/api-reference/groups/scylla.scylladb.com/scyllaclusters.html create mode 100644 v1.12/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html create mode 100644 v1.12/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html create mode 100644 v1.12/api-reference/index.html create mode 100644 v1.12/clients/alternator.html create mode 100644 v1.12/clients/cql.html create mode 100644 v1.12/clients/discovery.html create mode 100644 v1.12/clients/index.html create mode 100644 v1.12/contributing.html create mode 100644 v1.12/eks.html create mode 100644 v1.12/exposing.html create mode 100644 v1.12/generic.html create mode 100644 v1.12/genindex.html create mode 100644 v1.12/gke.html create mode 100644 v1.12/helm.html create mode 100644 v1.12/index.html create mode 100644 v1.12/manager.html create mode 100644 v1.12/migration.html create mode 100644 v1.12/monitoring.html create mode 100644 v1.12/multidc/eks.html create mode 100644 v1.12/multidc/gke.html create mode 100644 v1.12/multidc/index.html create mode 100644 v1.12/multidc/multidc.html create mode 100644 v1.12/nodeoperations/automatic-cleanup.html create mode 100644 v1.12/nodeoperations/index.html create mode 100644 v1.12/nodeoperations/maintenance-mode.html create mode 100644 v1.12/nodeoperations/replace-node.html create mode 100644 v1.12/nodeoperations/restore.html create mode 100644 v1.12/nodeoperations/scylla-upgrade.html create mode 100644 v1.12/objects.inv create mode 100644 v1.12/performance.html create mode 100644 v1.12/releases.html create mode 100644 v1.12/search.html create mode 100644 v1.12/searchindex.js create mode 100644 v1.12/sitemap.xml create mode 100644 v1.12/support/index.html create mode 100644 v1.12/support/known-issues.html create mode 100644 v1.12/support/must-gather.html create mode 100644 v1.12/support/overview.html create mode 100644 v1.12/support/troubleshooting/index.html create mode 100644 v1.12/support/troubleshooting/installation.html create mode 100644 v1.12/upgrade.html create mode 100644 v1.13/.buildinfo create mode 100644 v1.13/.doctrees/api-reference/groups/scylla.scylladb.com.doctree create mode 100644 v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/nodeconfigs.doctree create mode 100644 v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaclusters.doctree create mode 100644 v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree create mode 100644 v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.doctree create mode 100644 v1.13/.doctrees/api-reference/index.doctree create mode 100644 v1.13/.doctrees/clients/alternator.doctree create mode 100644 v1.13/.doctrees/clients/cql.doctree create mode 100644 v1.13/.doctrees/clients/discovery.doctree create mode 100644 v1.13/.doctrees/clients/index.doctree create mode 100644 v1.13/.doctrees/contributing.doctree create mode 100644 v1.13/.doctrees/eks.doctree create mode 100644 v1.13/.doctrees/environment.pickle create mode 100644 v1.13/.doctrees/exposing.doctree create mode 100644 v1.13/.doctrees/generic.doctree create mode 100644 v1.13/.doctrees/gke.doctree create mode 100644 v1.13/.doctrees/helm.doctree create mode 100644 v1.13/.doctrees/index.doctree create mode 100644 v1.13/.doctrees/manager.doctree create mode 100644 v1.13/.doctrees/migration.doctree create mode 100644 v1.13/.doctrees/monitoring.doctree create mode 100644 v1.13/.doctrees/multidc/eks.doctree create mode 100644 v1.13/.doctrees/multidc/gke.doctree create mode 100644 v1.13/.doctrees/multidc/index.doctree create mode 100644 v1.13/.doctrees/multidc/multidc.doctree create mode 100644 v1.13/.doctrees/nodeoperations/automatic-cleanup.doctree create mode 100644 v1.13/.doctrees/nodeoperations/index.doctree create mode 100644 v1.13/.doctrees/nodeoperations/maintenance-mode.doctree create mode 100644 v1.13/.doctrees/nodeoperations/replace-node.doctree create mode 100644 v1.13/.doctrees/nodeoperations/restore.doctree create mode 100644 v1.13/.doctrees/nodeoperations/scylla-upgrade.doctree create mode 100644 v1.13/.doctrees/performance.doctree create mode 100644 v1.13/.doctrees/releases.doctree create mode 100644 v1.13/.doctrees/support/index.doctree create mode 100644 v1.13/.doctrees/support/known-issues.doctree create mode 100644 v1.13/.doctrees/support/must-gather.doctree create mode 100644 v1.13/.doctrees/support/overview.doctree create mode 100644 v1.13/.doctrees/support/troubleshooting/index.doctree create mode 100644 v1.13/.doctrees/support/troubleshooting/installation.doctree create mode 100644 v1.13/.doctrees/upgrade.doctree create mode 100644 v1.13/.nojekyll create mode 100644 v1.13/404.html create mode 100644 v1.13/CNAME create mode 100644 v1.13/_images/clusterip.svg create mode 100644 v1.13/_images/loadbalancer.svg create mode 100644 v1.13/_images/logo.png create mode 100644 v1.13/_images/multivpc.svg create mode 100644 v1.13/_images/podips.svg create mode 100644 v1.13/_sources/api-reference/groups/scylla.scylladb.com.rst.txt create mode 100644 v1.13/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt create mode 100644 v1.13/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt create mode 100644 v1.13/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt create mode 100644 v1.13/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt create mode 100644 v1.13/_sources/api-reference/index.rst.txt create mode 100644 v1.13/_sources/clients/alternator.md.txt create mode 100644 v1.13/_sources/clients/cql.md.txt create mode 100644 v1.13/_sources/clients/discovery.md.txt create mode 100644 v1.13/_sources/clients/index.rst.txt create mode 100644 v1.13/_sources/contributing.md.txt create mode 100644 v1.13/_sources/eks.md.txt create mode 100644 v1.13/_sources/exposing.md.txt create mode 100644 v1.13/_sources/generic.md.txt create mode 100644 v1.13/_sources/gke.md.txt create mode 100644 v1.13/_sources/helm.md.txt create mode 100644 v1.13/_sources/index.rst.txt create mode 100644 v1.13/_sources/manager.md.txt create mode 100644 v1.13/_sources/migration.md.txt create mode 100644 v1.13/_sources/monitoring.md.txt create mode 100644 v1.13/_sources/multidc/eks.md.txt create mode 100644 v1.13/_sources/multidc/gke.md.txt create mode 100644 v1.13/_sources/multidc/index.rst.txt create mode 100644 v1.13/_sources/multidc/multidc.md.txt create mode 100644 v1.13/_sources/nodeoperations/automatic-cleanup.md.txt create mode 100644 v1.13/_sources/nodeoperations/index.rst.txt create mode 100644 v1.13/_sources/nodeoperations/maintenance-mode.md.txt create mode 100644 v1.13/_sources/nodeoperations/replace-node.md.txt create mode 100644 v1.13/_sources/nodeoperations/restore.md.txt create mode 100644 v1.13/_sources/nodeoperations/scylla-upgrade.md.txt create mode 100644 v1.13/_sources/performance.md.txt create mode 100644 v1.13/_sources/releases.md.txt create mode 100644 v1.13/_sources/support/index.rst.txt create mode 100644 v1.13/_sources/support/known-issues.md.txt create mode 100644 v1.13/_sources/support/must-gather.md.txt create mode 100644 v1.13/_sources/support/overview.md.txt create mode 100644 v1.13/_sources/support/troubleshooting/index.rst.txt create mode 100644 v1.13/_sources/support/troubleshooting/installation.md.txt create mode 100644 v1.13/_sources/upgrade.md.txt create mode 100644 v1.13/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css create mode 100644 v1.13/_sphinx_design_static/design-tabs.js create mode 100644 v1.13/_static/basic.css create mode 100644 v1.13/_static/check-solid.svg create mode 100644 v1.13/_static/clipboard.min.js create mode 100644 v1.13/_static/copy-button.svg create mode 100644 v1.13/_static/copybutton.css create mode 100644 v1.13/_static/copybutton.js create mode 100644 v1.13/_static/copybutton_funcs.js create mode 100644 v1.13/_static/css/main.css create mode 100644 v1.13/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css create mode 100644 v1.13/_static/design-tabs.js create mode 100644 v1.13/_static/doctools.js create mode 100644 v1.13/_static/documentation_options.js create mode 100644 v1.13/_static/file.png create mode 100644 v1.13/_static/img/banner-background.svg create mode 100644 v1.13/_static/img/favicon-228x228.png create mode 100644 v1.13/_static/img/favicon-32x32.png create mode 100644 v1.13/_static/img/favicon.ico create mode 100644 v1.13/_static/img/icons/icon-about-team.svg create mode 100644 v1.13/_static/img/icons/icon-about-us-m.svg create mode 100644 v1.13/_static/img/icons/icon-about-us.svg create mode 100644 v1.13/_static/img/icons/icon-alternator.svg create mode 100644 v1.13/_static/img/icons/icon-apps.svg create mode 100644 v1.13/_static/img/icons/icon-architecture.svg create mode 100644 v1.13/_static/img/icons/icon-benchmarks.svg create mode 100644 v1.13/_static/img/icons/icon-blog.svg create mode 100644 v1.13/_static/img/icons/icon-careers.svg create mode 100644 v1.13/_static/img/icons/icon-chevron-left.svg create mode 100644 v1.13/_static/img/icons/icon-chevron-right.svg create mode 100644 v1.13/_static/img/icons/icon-circe.svg create mode 100644 v1.13/_static/img/icons/icon-clock.svg create mode 100644 v1.13/_static/img/icons/icon-close.svg create mode 100644 v1.13/_static/img/icons/icon-cloud-docs.svg create mode 100644 v1.13/_static/img/icons/icon-cloud.svg create mode 100644 v1.13/_static/img/icons/icon-comparison.svg create mode 100644 v1.13/_static/img/icons/icon-contact-us.svg create mode 100644 v1.13/_static/img/icons/icon-developers-blog.svg create mode 100644 v1.13/_static/img/icons/icon-docs.svg create mode 100644 v1.13/_static/img/icons/icon-enterprise-m.svg create mode 100644 v1.13/_static/img/icons/icon-enterprise.svg create mode 100644 v1.13/_static/img/icons/icon-events.svg create mode 100644 v1.13/_static/img/icons/icon-exclamation.svg create mode 100644 v1.13/_static/img/icons/icon-expand.svg create mode 100644 v1.13/_static/img/icons/icon-forum.svg create mode 100644 v1.13/_static/img/icons/icon-getting-started.svg create mode 100644 v1.13/_static/img/icons/icon-glossary.svg create mode 100644 v1.13/_static/img/icons/icon-help.svg create mode 100644 v1.13/_static/img/icons/icon-home.svg create mode 100644 v1.13/_static/img/icons/icon-infoworld.svg create mode 100644 v1.13/_static/img/icons/icon-integrations.svg create mode 100644 v1.13/_static/img/icons/icon-knowledge-base.svg create mode 100644 v1.13/_static/img/icons/icon-less.svg create mode 100644 v1.13/_static/img/icons/icon-live-test.svg create mode 100644 v1.13/_static/img/icons/icon-mail-list.svg create mode 100644 v1.13/_static/img/icons/icon-manager.svg create mode 100644 v1.13/_static/img/icons/icon-memory-management.svg create mode 100644 v1.13/_static/img/icons/icon-modeling.svg create mode 100644 v1.13/_static/img/icons/icon-monitoring.svg create mode 100644 v1.13/_static/img/icons/icon-networking.svg create mode 100644 v1.13/_static/img/icons/icon-news.svg create mode 100644 v1.13/_static/img/icons/icon-newsletter.svg create mode 100644 v1.13/_static/img/icons/icon-nsql-guides.svg create mode 100644 v1.13/_static/img/icons/icon-open-source.svg create mode 100644 v1.13/_static/img/icons/icon-operator.svg create mode 100644 v1.13/_static/img/icons/icon-overview.svg create mode 100644 v1.13/_static/img/icons/icon-partners.svg create mode 100644 v1.13/_static/img/icons/icon-plus.svg create mode 100644 v1.13/_static/img/icons/icon-pricing.svg create mode 100644 v1.13/_static/img/icons/icon-release-notes.svg create mode 100644 v1.13/_static/img/icons/icon-resource-center.svg create mode 100644 v1.13/_static/img/icons/icon-roadmap.svg create mode 100644 v1.13/_static/img/icons/icon-search.svg create mode 100644 v1.13/_static/img/icons/icon-slack.svg create mode 100644 v1.13/_static/img/icons/icon-stack-overflow.svg create mode 100644 v1.13/_static/img/icons/icon-summit.svg create mode 100644 v1.13/_static/img/icons/icon-support.svg create mode 100644 v1.13/_static/img/icons/icon-tech-talks.svg create mode 100644 v1.13/_static/img/icons/icon-testing.svg create mode 100644 v1.13/_static/img/icons/icon-thumbs-down.svg create mode 100644 v1.13/_static/img/icons/icon-thumbs-up.svg create mode 100644 v1.13/_static/img/icons/icon-tip.svg create mode 100644 v1.13/_static/img/icons/icon-training.svg create mode 100644 v1.13/_static/img/icons/icon-triangle-down.svg create mode 100644 v1.13/_static/img/icons/icon-university.svg create mode 100644 v1.13/_static/img/icons/icon-users-blog.svg create mode 100644 v1.13/_static/img/icons/icon-warning.svg create mode 100644 v1.13/_static/img/icons/icon-webinars.svg create mode 100644 v1.13/_static/img/icons/icon-whitepapers.svg create mode 100644 v1.13/_static/img/icons/icon-workshop.svg create mode 100644 v1.13/_static/img/logo-scylla-horizontal-color.svg create mode 100644 v1.13/_static/img/logo-scylla-horizontal-light.svg create mode 100644 v1.13/_static/img/mascots-2/2-monster-laptop.svg create mode 100644 v1.13/_static/img/mascots-2/alternator.svg create mode 100644 v1.13/_static/img/mascots-2/award.svg create mode 100644 v1.13/_static/img/mascots-2/care-pet.svg create mode 100644 v1.13/_static/img/mascots-2/cdc.svg create mode 100644 v1.13/_static/img/mascots-2/chef.svg create mode 100644 v1.13/_static/img/mascots-2/cloud.svg create mode 100644 v1.13/_static/img/mascots-2/default.svg create mode 100644 v1.13/_static/img/mascots-2/docs.svg create mode 100644 v1.13/_static/img/mascots-2/driver.svg create mode 100644 v1.13/_static/img/mascots-2/enterprise.svg create mode 100644 v1.13/_static/img/mascots-2/forward-2.svg create mode 100644 v1.13/_static/img/mascots-2/forward.svg create mode 100644 v1.13/_static/img/mascots-2/headphones.svg create mode 100644 v1.13/_static/img/mascots-2/heart.svg create mode 100644 v1.13/_static/img/mascots-2/laptop.svg create mode 100644 v1.13/_static/img/mascots-2/magnifying-glass.svg create mode 100644 v1.13/_static/img/mascots-2/manager.svg create mode 100644 v1.13/_static/img/mascots-2/monitor.svg create mode 100644 v1.13/_static/img/mascots-2/open-mouth.svg create mode 100644 v1.13/_static/img/mascots-2/operator.svg create mode 100644 v1.13/_static/img/mascots-2/plug.svg create mode 100644 v1.13/_static/img/mascots-2/repair.svg create mode 100644 v1.13/_static/img/mascots-2/server.svg create mode 100644 v1.13/_static/img/mascots-2/sleepy.svg create mode 100644 v1.13/_static/img/mascots-2/smile-learning.svg create mode 100644 v1.13/_static/img/mascots-2/stretched-up.svg create mode 100644 v1.13/_static/img/mascots-2/toolbox.svg create mode 100644 v1.13/_static/img/mascots-2/university.svg create mode 100644 v1.13/_static/img/mascots-2/workshop.svg create mode 100644 v1.13/_static/img/mascots-2/wow-up.svg create mode 100644 v1.13/_static/img/mascots-2/wow.svg create mode 100644 v1.13/_static/img/mascots-2/yummy.svg create mode 100644 v1.13/_static/img/mascots/404.jpg create mode 100644 v1.13/_static/img/mascots/scylla-3monsters.png create mode 100644 v1.13/_static/img/mascots/scylla-advisor-crystal.png create mode 100644 v1.13/_static/img/mascots/scylla-alternator.svg create mode 100644 v1.13/_static/img/mascots/scylla-cloud.svg create mode 100644 v1.13/_static/img/mascots/scylla-computer-3-monsters.png create mode 100644 v1.13/_static/img/mascots/scylla-computer-headset.png create mode 100644 v1.13/_static/img/mascots/scylla-cup-number-one.png create mode 100644 v1.13/_static/img/mascots/scylla-docs.svg create mode 100644 v1.13/_static/img/mascots/scylla-drivers.svg create mode 100644 v1.13/_static/img/mascots/scylla-enterprise.svg create mode 100644 v1.13/_static/img/mascots/scylla-forklift-boxes.png create mode 100644 v1.13/_static/img/mascots/scylla-forklift-migration.png create mode 100644 v1.13/_static/img/mascots/scylla-gear.png create mode 100644 v1.13/_static/img/mascots/scylla-hardhat.png create mode 100644 v1.13/_static/img/mascots/scylla-headband.png create mode 100644 v1.13/_static/img/mascots/scylla-headset.png create mode 100644 v1.13/_static/img/mascots/scylla-hearts.png create mode 100644 v1.13/_static/img/mascots/scylla-looking-down.png create mode 100644 v1.13/_static/img/mascots/scylla-looking-up.png create mode 100644 v1.13/_static/img/mascots/scylla-magnifying-glass-fronting.png create mode 100644 v1.13/_static/img/mascots/scylla-magnifying-glass.png create mode 100644 v1.13/_static/img/mascots/scylla-manager.svg create mode 100644 v1.13/_static/img/mascots/scylla-monitor.svg create mode 100644 v1.13/_static/img/mascots/scylla-movement-fast.png create mode 100644 v1.13/_static/img/mascots/scylla-movement.png create mode 100644 v1.13/_static/img/mascots/scylla-onpremise.png create mode 100644 v1.13/_static/img/mascots/scylla-opensource.svg create mode 100644 v1.13/_static/img/mascots/scylla-operator.svg create mode 100644 v1.13/_static/img/mascots/scylla-plugin.png create mode 100644 v1.13/_static/img/mascots/scylla-release-mascot.png create mode 100644 v1.13/_static/img/mascots/scylla-repair.png create mode 100644 v1.13/_static/img/mascots/scylla-server.png create mode 100644 v1.13/_static/img/mascots/scylla-sleeping.png create mode 100644 v1.13/_static/img/mascots/scylla-tall-measure.png create mode 100644 v1.13/_static/img/mascots/scylla-university.png create mode 100644 v1.13/_static/img/mascots/scylla-weights.png create mode 100644 v1.13/_static/img/mascots/scylla-window-cleaning.png create mode 100644 v1.13/_static/img/mascots/scylla-with-computer-2.png create mode 100644 v1.13/_static/img/mascots/scylla-with-computer.png create mode 100644 v1.13/_static/img/mascots/scylla-with-linux.png create mode 100644 v1.13/_static/img/mascots/scylla-writting.png create mode 100644 v1.13/_static/img/menu.svg create mode 100644 v1.13/_static/img/scylladb-logo-horizontal.svg create mode 100644 v1.13/_static/js/main.bundle.js create mode 100644 v1.13/_static/js/main.bundle.js.LICENSE.txt create mode 100644 v1.13/_static/js/runtime.bundle.js create mode 100644 v1.13/_static/language_data.js create mode 100644 v1.13/_static/minus.png create mode 100644 v1.13/_static/plus.png create mode 100644 v1.13/_static/pygments.css create mode 100644 v1.13/_static/searchtools.js create mode 100644 v1.13/_static/sphinx_collapse.css create mode 100644 v1.13/_static/sphinx_highlight.js create mode 100644 v1.13/_static/tabs.css create mode 100644 v1.13/_static/tabs.js create mode 100644 v1.13/api-reference/groups/scylla.scylladb.com.html create mode 100644 v1.13/api-reference/groups/scylla.scylladb.com/nodeconfigs.html create mode 100644 v1.13/api-reference/groups/scylla.scylladb.com/scyllaclusters.html create mode 100644 v1.13/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html create mode 100644 v1.13/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html create mode 100644 v1.13/api-reference/index.html create mode 100644 v1.13/clients/alternator.html create mode 100644 v1.13/clients/cql.html create mode 100644 v1.13/clients/discovery.html create mode 100644 v1.13/clients/index.html create mode 100644 v1.13/contributing.html create mode 100644 v1.13/eks.html create mode 100644 v1.13/exposing.html create mode 100644 v1.13/generic.html create mode 100644 v1.13/genindex.html create mode 100644 v1.13/gke.html create mode 100644 v1.13/helm.html create mode 100644 v1.13/index.html create mode 100644 v1.13/manager.html create mode 100644 v1.13/migration.html create mode 100644 v1.13/monitoring.html create mode 100644 v1.13/multidc/eks.html create mode 100644 v1.13/multidc/gke.html create mode 100644 v1.13/multidc/index.html create mode 100644 v1.13/multidc/multidc.html create mode 100644 v1.13/nodeoperations/automatic-cleanup.html create mode 100644 v1.13/nodeoperations/index.html create mode 100644 v1.13/nodeoperations/maintenance-mode.html create mode 100644 v1.13/nodeoperations/replace-node.html create mode 100644 v1.13/nodeoperations/restore.html create mode 100644 v1.13/nodeoperations/scylla-upgrade.html create mode 100644 v1.13/objects.inv create mode 100644 v1.13/performance.html create mode 100644 v1.13/releases.html create mode 100644 v1.13/search.html create mode 100644 v1.13/searchindex.js create mode 100644 v1.13/sitemap.xml create mode 100644 v1.13/support/index.html create mode 100644 v1.13/support/known-issues.html create mode 100644 v1.13/support/must-gather.html create mode 100644 v1.13/support/overview.html create mode 100644 v1.13/support/troubleshooting/index.html create mode 100644 v1.13/support/troubleshooting/installation.html create mode 100644 v1.13/upgrade.html create mode 100644 v1.14/.buildinfo create mode 100644 v1.14/.doctrees/api-reference/groups/scylla.scylladb.com.doctree create mode 100644 v1.14/.doctrees/api-reference/groups/scylla.scylladb.com/nodeconfigs.doctree create mode 100644 v1.14/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaclusters.doctree create mode 100644 v1.14/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree create mode 100644 v1.14/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.doctree create mode 100644 v1.14/.doctrees/api-reference/index.doctree create mode 100644 v1.14/.doctrees/clients/alternator.doctree create mode 100644 v1.14/.doctrees/clients/cql.doctree create mode 100644 v1.14/.doctrees/clients/discovery.doctree create mode 100644 v1.14/.doctrees/clients/index.doctree create mode 100644 v1.14/.doctrees/contributing.doctree create mode 100644 v1.14/.doctrees/eks.doctree create mode 100644 v1.14/.doctrees/environment.pickle create mode 100644 v1.14/.doctrees/exposing.doctree create mode 100644 v1.14/.doctrees/generic.doctree create mode 100644 v1.14/.doctrees/gke.doctree create mode 100644 v1.14/.doctrees/helm.doctree create mode 100644 v1.14/.doctrees/index.doctree create mode 100644 v1.14/.doctrees/manager.doctree create mode 100644 v1.14/.doctrees/migration.doctree create mode 100644 v1.14/.doctrees/monitoring.doctree create mode 100644 v1.14/.doctrees/multidc/eks.doctree create mode 100644 v1.14/.doctrees/multidc/gke.doctree create mode 100644 v1.14/.doctrees/multidc/index.doctree create mode 100644 v1.14/.doctrees/multidc/multidc.doctree create mode 100644 v1.14/.doctrees/nodeoperations/automatic-cleanup.doctree create mode 100644 v1.14/.doctrees/nodeoperations/index.doctree create mode 100644 v1.14/.doctrees/nodeoperations/maintenance-mode.doctree create mode 100644 v1.14/.doctrees/nodeoperations/replace-node.doctree create mode 100644 v1.14/.doctrees/nodeoperations/restore.doctree create mode 100644 v1.14/.doctrees/nodeoperations/scylla-upgrade.doctree create mode 100644 v1.14/.doctrees/performance.doctree create mode 100644 v1.14/.doctrees/releases.doctree create mode 100644 v1.14/.doctrees/support/index.doctree create mode 100644 v1.14/.doctrees/support/known-issues.doctree create mode 100644 v1.14/.doctrees/support/must-gather.doctree create mode 100644 v1.14/.doctrees/support/overview.doctree create mode 100644 v1.14/.doctrees/support/troubleshooting/index.doctree create mode 100644 v1.14/.doctrees/support/troubleshooting/installation.doctree create mode 100644 v1.14/.doctrees/upgrade.doctree create mode 100644 v1.14/.nojekyll create mode 100644 v1.14/404.html create mode 100644 v1.14/CNAME create mode 100644 v1.14/_images/clusterip.svg create mode 100644 v1.14/_images/loadbalancer.svg create mode 100644 v1.14/_images/logo.png create mode 100644 v1.14/_images/multivpc.svg create mode 100644 v1.14/_images/podips.svg create mode 100644 v1.14/_sources/api-reference/groups/scylla.scylladb.com.rst.txt create mode 100644 v1.14/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt create mode 100644 v1.14/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt create mode 100644 v1.14/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt create mode 100644 v1.14/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt create mode 100644 v1.14/_sources/api-reference/index.rst.txt create mode 100644 v1.14/_sources/clients/alternator.md.txt create mode 100644 v1.14/_sources/clients/cql.md.txt create mode 100644 v1.14/_sources/clients/discovery.md.txt create mode 100644 v1.14/_sources/clients/index.rst.txt create mode 100644 v1.14/_sources/contributing.md.txt create mode 100644 v1.14/_sources/eks.md.txt create mode 100644 v1.14/_sources/exposing.md.txt create mode 100644 v1.14/_sources/generic.md.txt create mode 100644 v1.14/_sources/gke.md.txt create mode 100644 v1.14/_sources/helm.md.txt create mode 100644 v1.14/_sources/index.rst.txt create mode 100644 v1.14/_sources/manager.md.txt create mode 100644 v1.14/_sources/migration.md.txt create mode 100644 v1.14/_sources/monitoring.md.txt create mode 100644 v1.14/_sources/multidc/eks.md.txt create mode 100644 v1.14/_sources/multidc/gke.md.txt create mode 100644 v1.14/_sources/multidc/index.rst.txt create mode 100644 v1.14/_sources/multidc/multidc.md.txt create mode 100644 v1.14/_sources/nodeoperations/automatic-cleanup.md.txt create mode 100644 v1.14/_sources/nodeoperations/index.rst.txt create mode 100644 v1.14/_sources/nodeoperations/maintenance-mode.md.txt create mode 100644 v1.14/_sources/nodeoperations/replace-node.md.txt create mode 100644 v1.14/_sources/nodeoperations/restore.md.txt create mode 100644 v1.14/_sources/nodeoperations/scylla-upgrade.md.txt create mode 100644 v1.14/_sources/performance.md.txt create mode 100644 v1.14/_sources/releases.md.txt create mode 100644 v1.14/_sources/support/index.rst.txt create mode 100644 v1.14/_sources/support/known-issues.md.txt create mode 100644 v1.14/_sources/support/must-gather.md.txt create mode 100644 v1.14/_sources/support/overview.md.txt create mode 100644 v1.14/_sources/support/troubleshooting/index.rst.txt create mode 100644 v1.14/_sources/support/troubleshooting/installation.md.txt create mode 100644 v1.14/_sources/upgrade.md.txt create mode 100644 v1.14/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css create mode 100644 v1.14/_sphinx_design_static/design-tabs.js create mode 100644 v1.14/_static/basic.css create mode 100644 v1.14/_static/check-solid.svg create mode 100644 v1.14/_static/clipboard.min.js create mode 100644 v1.14/_static/copy-button.svg create mode 100644 v1.14/_static/copybutton.css create mode 100644 v1.14/_static/copybutton.js create mode 100644 v1.14/_static/copybutton_funcs.js create mode 100644 v1.14/_static/css/main.css create mode 100644 v1.14/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css create mode 100644 v1.14/_static/design-tabs.js create mode 100644 v1.14/_static/doctools.js create mode 100644 v1.14/_static/documentation_options.js create mode 100644 v1.14/_static/file.png create mode 100644 v1.14/_static/img/banner-background.svg create mode 100644 v1.14/_static/img/favicon-228x228.png create mode 100644 v1.14/_static/img/favicon-32x32.png create mode 100644 v1.14/_static/img/favicon.ico create mode 100644 v1.14/_static/img/icons/icon-about-team.svg create mode 100644 v1.14/_static/img/icons/icon-about-us-m.svg create mode 100644 v1.14/_static/img/icons/icon-about-us.svg create mode 100644 v1.14/_static/img/icons/icon-alternator.svg create mode 100644 v1.14/_static/img/icons/icon-apps.svg create mode 100644 v1.14/_static/img/icons/icon-architecture.svg create mode 100644 v1.14/_static/img/icons/icon-benchmarks.svg create mode 100644 v1.14/_static/img/icons/icon-blog.svg create mode 100644 v1.14/_static/img/icons/icon-careers.svg create mode 100644 v1.14/_static/img/icons/icon-chevron-left.svg create mode 100644 v1.14/_static/img/icons/icon-chevron-right.svg create mode 100644 v1.14/_static/img/icons/icon-circe.svg create mode 100644 v1.14/_static/img/icons/icon-clock.svg create mode 100644 v1.14/_static/img/icons/icon-close.svg create mode 100644 v1.14/_static/img/icons/icon-cloud-docs.svg create mode 100644 v1.14/_static/img/icons/icon-cloud.svg create mode 100644 v1.14/_static/img/icons/icon-comparison.svg create mode 100644 v1.14/_static/img/icons/icon-contact-us.svg create mode 100644 v1.14/_static/img/icons/icon-developers-blog.svg create mode 100644 v1.14/_static/img/icons/icon-docs.svg create mode 100644 v1.14/_static/img/icons/icon-enterprise-m.svg create mode 100644 v1.14/_static/img/icons/icon-enterprise.svg create mode 100644 v1.14/_static/img/icons/icon-events.svg create mode 100644 v1.14/_static/img/icons/icon-exclamation.svg create mode 100644 v1.14/_static/img/icons/icon-expand.svg create mode 100644 v1.14/_static/img/icons/icon-forum.svg create mode 100644 v1.14/_static/img/icons/icon-getting-started.svg create mode 100644 v1.14/_static/img/icons/icon-glossary.svg create mode 100644 v1.14/_static/img/icons/icon-help.svg create mode 100644 v1.14/_static/img/icons/icon-home.svg create mode 100644 v1.14/_static/img/icons/icon-infoworld.svg create mode 100644 v1.14/_static/img/icons/icon-integrations.svg create mode 100644 v1.14/_static/img/icons/icon-knowledge-base.svg create mode 100644 v1.14/_static/img/icons/icon-less.svg create mode 100644 v1.14/_static/img/icons/icon-live-test.svg create mode 100644 v1.14/_static/img/icons/icon-mail-list.svg create mode 100644 v1.14/_static/img/icons/icon-manager.svg create mode 100644 v1.14/_static/img/icons/icon-memory-management.svg create mode 100644 v1.14/_static/img/icons/icon-modeling.svg create mode 100644 v1.14/_static/img/icons/icon-monitoring.svg create mode 100644 v1.14/_static/img/icons/icon-networking.svg create mode 100644 v1.14/_static/img/icons/icon-news.svg create mode 100644 v1.14/_static/img/icons/icon-newsletter.svg create mode 100644 v1.14/_static/img/icons/icon-nsql-guides.svg create mode 100644 v1.14/_static/img/icons/icon-open-source.svg create mode 100644 v1.14/_static/img/icons/icon-operator.svg create mode 100644 v1.14/_static/img/icons/icon-overview.svg create mode 100644 v1.14/_static/img/icons/icon-partners.svg create mode 100644 v1.14/_static/img/icons/icon-plus.svg create mode 100644 v1.14/_static/img/icons/icon-pricing.svg create mode 100644 v1.14/_static/img/icons/icon-release-notes.svg create mode 100644 v1.14/_static/img/icons/icon-resource-center.svg create mode 100644 v1.14/_static/img/icons/icon-roadmap.svg create mode 100644 v1.14/_static/img/icons/icon-search.svg create mode 100644 v1.14/_static/img/icons/icon-slack.svg create mode 100644 v1.14/_static/img/icons/icon-stack-overflow.svg create mode 100644 v1.14/_static/img/icons/icon-summit.svg create mode 100644 v1.14/_static/img/icons/icon-support.svg create mode 100644 v1.14/_static/img/icons/icon-tech-talks.svg create mode 100644 v1.14/_static/img/icons/icon-testing.svg create mode 100644 v1.14/_static/img/icons/icon-thumbs-down.svg create mode 100644 v1.14/_static/img/icons/icon-thumbs-up.svg create mode 100644 v1.14/_static/img/icons/icon-tip.svg create mode 100644 v1.14/_static/img/icons/icon-training.svg create mode 100644 v1.14/_static/img/icons/icon-triangle-down.svg create mode 100644 v1.14/_static/img/icons/icon-university.svg create mode 100644 v1.14/_static/img/icons/icon-users-blog.svg create mode 100644 v1.14/_static/img/icons/icon-warning.svg create mode 100644 v1.14/_static/img/icons/icon-webinars.svg create mode 100644 v1.14/_static/img/icons/icon-whitepapers.svg create mode 100644 v1.14/_static/img/icons/icon-workshop.svg create mode 100644 v1.14/_static/img/logo-scylla-horizontal-color.svg create mode 100644 v1.14/_static/img/logo-scylla-horizontal-light.svg create mode 100644 v1.14/_static/img/mascots-2/2-monster-laptop.svg create mode 100644 v1.14/_static/img/mascots-2/alternator.svg create mode 100644 v1.14/_static/img/mascots-2/award.svg create mode 100644 v1.14/_static/img/mascots-2/care-pet.svg create mode 100644 v1.14/_static/img/mascots-2/cdc.svg create mode 100644 v1.14/_static/img/mascots-2/chef.svg create mode 100644 v1.14/_static/img/mascots-2/cloud.svg create mode 100644 v1.14/_static/img/mascots-2/default.svg create mode 100644 v1.14/_static/img/mascots-2/docs.svg create mode 100644 v1.14/_static/img/mascots-2/driver.svg create mode 100644 v1.14/_static/img/mascots-2/enterprise.svg create mode 100644 v1.14/_static/img/mascots-2/forward-2.svg create mode 100644 v1.14/_static/img/mascots-2/forward.svg create mode 100644 v1.14/_static/img/mascots-2/headphones.svg create mode 100644 v1.14/_static/img/mascots-2/heart.svg create mode 100644 v1.14/_static/img/mascots-2/laptop.svg create mode 100644 v1.14/_static/img/mascots-2/magnifying-glass.svg create mode 100644 v1.14/_static/img/mascots-2/manager.svg create mode 100644 v1.14/_static/img/mascots-2/monitor.svg create mode 100644 v1.14/_static/img/mascots-2/open-mouth.svg create mode 100644 v1.14/_static/img/mascots-2/operator.svg create mode 100644 v1.14/_static/img/mascots-2/plug.svg create mode 100644 v1.14/_static/img/mascots-2/repair.svg create mode 100644 v1.14/_static/img/mascots-2/server.svg create mode 100644 v1.14/_static/img/mascots-2/sleepy.svg create mode 100644 v1.14/_static/img/mascots-2/smile-learning.svg create mode 100644 v1.14/_static/img/mascots-2/stretched-up.svg create mode 100644 v1.14/_static/img/mascots-2/toolbox.svg create mode 100644 v1.14/_static/img/mascots-2/university.svg create mode 100644 v1.14/_static/img/mascots-2/workshop.svg create mode 100644 v1.14/_static/img/mascots-2/wow-up.svg create mode 100644 v1.14/_static/img/mascots-2/wow.svg create mode 100644 v1.14/_static/img/mascots-2/yummy.svg create mode 100644 v1.14/_static/img/mascots/404.jpg create mode 100644 v1.14/_static/img/mascots/scylla-3monsters.png create mode 100644 v1.14/_static/img/mascots/scylla-advisor-crystal.png create mode 100644 v1.14/_static/img/mascots/scylla-alternator.svg create mode 100644 v1.14/_static/img/mascots/scylla-cloud.svg create mode 100644 v1.14/_static/img/mascots/scylla-computer-3-monsters.png create mode 100644 v1.14/_static/img/mascots/scylla-computer-headset.png create mode 100644 v1.14/_static/img/mascots/scylla-cup-number-one.png create mode 100644 v1.14/_static/img/mascots/scylla-docs.svg create mode 100644 v1.14/_static/img/mascots/scylla-drivers.svg create mode 100644 v1.14/_static/img/mascots/scylla-enterprise.svg create mode 100644 v1.14/_static/img/mascots/scylla-forklift-boxes.png create mode 100644 v1.14/_static/img/mascots/scylla-forklift-migration.png create mode 100644 v1.14/_static/img/mascots/scylla-gear.png create mode 100644 v1.14/_static/img/mascots/scylla-hardhat.png create mode 100644 v1.14/_static/img/mascots/scylla-headband.png create mode 100644 v1.14/_static/img/mascots/scylla-headset.png create mode 100644 v1.14/_static/img/mascots/scylla-hearts.png create mode 100644 v1.14/_static/img/mascots/scylla-looking-down.png create mode 100644 v1.14/_static/img/mascots/scylla-looking-up.png create mode 100644 v1.14/_static/img/mascots/scylla-magnifying-glass-fronting.png create mode 100644 v1.14/_static/img/mascots/scylla-magnifying-glass.png create mode 100644 v1.14/_static/img/mascots/scylla-manager.svg create mode 100644 v1.14/_static/img/mascots/scylla-monitor.svg create mode 100644 v1.14/_static/img/mascots/scylla-movement-fast.png create mode 100644 v1.14/_static/img/mascots/scylla-movement.png create mode 100644 v1.14/_static/img/mascots/scylla-onpremise.png create mode 100644 v1.14/_static/img/mascots/scylla-opensource.svg create mode 100644 v1.14/_static/img/mascots/scylla-operator.svg create mode 100644 v1.14/_static/img/mascots/scylla-plugin.png create mode 100644 v1.14/_static/img/mascots/scylla-release-mascot.png create mode 100644 v1.14/_static/img/mascots/scylla-repair.png create mode 100644 v1.14/_static/img/mascots/scylla-server.png create mode 100644 v1.14/_static/img/mascots/scylla-sleeping.png create mode 100644 v1.14/_static/img/mascots/scylla-tall-measure.png create mode 100644 v1.14/_static/img/mascots/scylla-university.png create mode 100644 v1.14/_static/img/mascots/scylla-weights.png create mode 100644 v1.14/_static/img/mascots/scylla-window-cleaning.png create mode 100644 v1.14/_static/img/mascots/scylla-with-computer-2.png create mode 100644 v1.14/_static/img/mascots/scylla-with-computer.png create mode 100644 v1.14/_static/img/mascots/scylla-with-linux.png create mode 100644 v1.14/_static/img/mascots/scylla-writting.png create mode 100644 v1.14/_static/img/menu.svg create mode 100644 v1.14/_static/img/scylladb-logo-horizontal.svg create mode 100644 v1.14/_static/js/main.bundle.js create mode 100644 v1.14/_static/js/main.bundle.js.LICENSE.txt create mode 100644 v1.14/_static/js/runtime.bundle.js create mode 100644 v1.14/_static/language_data.js create mode 100644 v1.14/_static/minus.png create mode 100644 v1.14/_static/plus.png create mode 100644 v1.14/_static/pygments.css create mode 100644 v1.14/_static/searchtools.js create mode 100644 v1.14/_static/sphinx_collapse.css create mode 100644 v1.14/_static/sphinx_highlight.js create mode 100644 v1.14/_static/tabs.css create mode 100644 v1.14/_static/tabs.js create mode 100644 v1.14/api-reference/groups/scylla.scylladb.com.html create mode 100644 v1.14/api-reference/groups/scylla.scylladb.com/nodeconfigs.html create mode 100644 v1.14/api-reference/groups/scylla.scylladb.com/scyllaclusters.html create mode 100644 v1.14/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html create mode 100644 v1.14/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html create mode 100644 v1.14/api-reference/index.html create mode 100644 v1.14/clients/alternator.html create mode 100644 v1.14/clients/cql.html create mode 100644 v1.14/clients/discovery.html create mode 100644 v1.14/clients/index.html create mode 100644 v1.14/contributing.html create mode 100644 v1.14/eks.html create mode 100644 v1.14/exposing.html create mode 100644 v1.14/generic.html create mode 100644 v1.14/genindex.html create mode 100644 v1.14/gke.html create mode 100644 v1.14/helm.html create mode 100644 v1.14/index.html create mode 100644 v1.14/manager.html create mode 100644 v1.14/migration.html create mode 100644 v1.14/monitoring.html create mode 100644 v1.14/multidc/eks.html create mode 100644 v1.14/multidc/gke.html create mode 100644 v1.14/multidc/index.html create mode 100644 v1.14/multidc/multidc.html create mode 100644 v1.14/nodeoperations/automatic-cleanup.html create mode 100644 v1.14/nodeoperations/index.html create mode 100644 v1.14/nodeoperations/maintenance-mode.html create mode 100644 v1.14/nodeoperations/replace-node.html create mode 100644 v1.14/nodeoperations/restore.html create mode 100644 v1.14/nodeoperations/scylla-upgrade.html create mode 100644 v1.14/objects.inv create mode 100644 v1.14/performance.html create mode 100644 v1.14/releases.html create mode 100644 v1.14/search.html create mode 100644 v1.14/searchindex.js create mode 100644 v1.14/sitemap.xml create mode 100644 v1.14/support/index.html create mode 100644 v1.14/support/known-issues.html create mode 100644 v1.14/support/must-gather.html create mode 100644 v1.14/support/overview.html create mode 100644 v1.14/support/troubleshooting/index.html create mode 100644 v1.14/support/troubleshooting/installation.html create mode 100644 v1.14/upgrade.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000000..e69de29bb2d diff --git a/404.html b/404.html new file mode 100644 index 00000000000..fa7ae55164f --- /dev/null +++ b/404.html @@ -0,0 +1,31 @@ + + + + + + + + + ScyllaDB + + + + + + + + + + + +
+

404

+

The ScyllaDB monster ate your page!

+

+ Home +

+
+ + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000000..12aae904168 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +operator.docs.scylladb.com \ No newline at end of file diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000000..f316efcb47b --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 00000000000..92fad4b5c0b --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 00000000000..54b3c463811 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 00000000000..f1916ec7d1b --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 00000000000..2ea7ff3e217 --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 00000000000..dbe1aaad79c --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/css/main.css b/_static/css/main.css new file mode 100644 index 00000000000..2682ad8a319 --- /dev/null +++ b/_static/css/main.css @@ -0,0 +1 @@ +@media print,screen and (min-width:40em){.reveal,.reveal.large,.reveal.small,.reveal.tiny{left:auto;margin:0 auto;right:auto}}/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}[data-whatinput=mouse] *,[data-whatinput=mouse] :focus,[data-whatinput=touch] *,[data-whatinput=touch] :focus,[data-whatintent=mouse] *,[data-whatintent=mouse] :focus,[data-whatintent=touch] *,[data-whatintent=touch] :focus{outline:0}[draggable=false]{-webkit-touch-callout:none;-webkit-user-select:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{-webkit-box-sizing:border-box;font-size:100%}*,:after,:before{-webkit-box-sizing:inherit}body{background:#fefefe;color:#0a0a0a;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;height:auto;vertical-align:middle;-ms-interpolation-mode:bicubic}textarea{border-radius:0;height:auto;min-height:50px}select{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;border:0;border-radius:0;cursor:auto;line-height:1;padding:0}[data-whatinput=mouse] button{outline:0}pre{overflow:auto;-webkit-overflow-scrolling:touch}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block!important}.is-hidden{display:none!important}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;-webkit-box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);-webkit-box-sizing:border-box;box-sizing:border-box;color:#0a0a0a;display:block;font-family:inherit;font-size:1rem;font-weight:400;height:2.4375rem;line-height:1.5;margin:0 0 1rem;padding:.5rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s;width:100%}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:0;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}textarea{max-width:100%}textarea[rows]{height:auto}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type=search]{-webkit-box-sizing:border-box;box-sizing:border-box}::-webkit-input-placeholder{color:#cacaca}::-moz-placeholder{color:#cacaca}:-ms-input-placeholder{color:#cacaca}::-ms-input-placeholder{color:#cacaca}::placeholder{color:#cacaca}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-bottom:0;margin-left:.5rem;margin-right:1rem;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{color:#0a0a0a;display:block;font-size:.875rem;font-weight:400;line-height:1.8;margin:0}label.middle{line-height:1.5;margin:0 0 1rem;padding:.5625rem 0}.help-text{color:#0a0a0a;font-size:.8125rem;font-style:italic;margin-top:-.5rem}.input-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:1rem;width:100%;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.input-group>:first-child,.input-group>:first-child.input-group-button>*,.input-group>:last-child,.input-group>:last-child.input-group-button>*{border-radius:0}.input-group-button,.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label,.input-group-field,.input-group-label{margin:0;white-space:nowrap}.input-group-label{background:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 1rem;text-align:center;white-space:nowrap;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;min-width:0}.input-group-button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-bottom:0;padding-top:0;text-align:center;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;font-size:1rem;height:auto;padding-bottom:0;padding-top:0}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:.5rem;max-width:100%}.fieldset{border:1px solid #cacaca;margin:1.125rem 0;padding:1.25rem}.fieldset legend{margin:0 0 0 -.1875rem;padding:0 .1875rem}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;background-image:url('data:image/svg+xml;utf8,');background-origin:content-box;background-position:right -1rem center;background-repeat:no-repeat;background-size:9px 6px;border:1px solid #cacaca;border-radius:0;color:#0a0a0a;font-family:inherit;font-size:1rem;font-weight:400;height:2.4375rem;line-height:1.5;margin:0 0 1rem;padding:.5rem 1.5rem .5rem .5rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}@media screen and (min-width:0\0){select{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==)}}select:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:0;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{background-image:none;height:auto}select:not([multiple]){padding-bottom:0;padding-top:0}.is-invalid-input:not(:focus){background-color:#f9ecea;border-color:#cc4b37}.is-invalid-input:not(:focus)::-webkit-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-moz-placeholder{color:#cc4b37}.is-invalid-input:not(:focus):-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::placeholder{color:#cc4b37}.form-error,.is-invalid-label{color:#cc4b37}.form-error{display:none;font-size:.75rem;font-weight:700;margin-bottom:1rem;margin-top:-.5rem}.form-error.is-visible{display:block}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:inherit;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:400;text-rendering:optimizeLegibility}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}.h1,h1{font-size:1.5rem}.h1,.h2,h1,h2{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h2,h2{font-size:1.25rem}.h3,h3{font-size:1.1875rem}.h3,.h4,h3,h4{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h4,h4{font-size:1.125rem}.h5,h5{font-size:1.0625rem}.h5,.h6,h5,h6{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h6,h6{font-size:1rem}@media print,screen and (min-width:40em){.h1,h1{font-size:3rem}.h2,h2{font-size:2.5rem}.h3,h3{font-size:1.9375rem}.h4,h4{font-size:1.5625rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}}a{color:#1779ba;cursor:pointer;line-height:inherit;text-decoration:none}a:focus,a:hover{color:#1468a0}a img,hr{border:0}hr{border-bottom:1px solid #cacaca;clear:both;height:0;margin:1.25rem auto;max-width:75rem}dl,ol,ul{line-height:1.6;list-style-position:outside;margin-bottom:1rem}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-left:1.25rem}dl{margin-bottom:1rem}dl dt{font-weight:700;margin-bottom:.3rem}blockquote{border-left:1px solid #cacaca;margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem}blockquote,blockquote p{color:#8a8a8a;line-height:1.6}abbr,abbr[title]{border-bottom:1px dotted #0a0a0a;cursor:help;text-decoration:none}figure,kbd{margin:0}kbd{background-color:#e6e6e6;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;padding:.125rem .25rem 0}.subheader{color:#8a8a8a;font-weight:400;line-height:1.4;margin-bottom:.5rem;margin-top:.2rem}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}ol.no-bullet,ul.no-bullet{list-style:none;margin-left:0}.cite-block,cite{color:#8a8a8a;display:block;font-size:.8125rem}.cite-block:before,cite:before{content:"— "}.code-inline,code{display:inline;max-width:100%;word-wrap:break-word;padding:.125rem .3125rem .0625rem}.code-block,.code-inline,code{background-color:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;font-weight:400}.code-block{display:block;margin-bottom:1.5rem;overflow:auto;padding:1rem;white-space:pre}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print,screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print,screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:#000!important;-webkit-print-color-adjust:economy;print-color-adjust:economy;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.print-break-inside{page-break-inside:auto}}.grid-container{margin-left:auto;margin-right:auto;max-width:75rem;padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-container{padding-left:.9375rem;padding-right:.9375rem}}.grid-container.fluid{margin-left:auto;margin-right:auto;max-width:100%;padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-container.fluid{padding-left:.9375rem;padding-right:.9375rem}}.grid-container.full{margin-left:auto;margin-right:auto;max-width:100%;padding-left:0;padding-right:0}.grid-x{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.cell{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;min-height:0;min-width:0;width:100%}.cell.auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0}.cell.shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.auto,.grid-x>.shrink{width:auto}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-full,.grid-x>.small-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-full,.grid-x>.medium-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-full,.grid-x>.large-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.small-1{width:8.3333333333%}.grid-x>.small-2{width:16.6666666667%}.grid-x>.small-3{width:25%}.grid-x>.small-4{width:33.3333333333%}.grid-x>.small-5{width:41.6666666667%}.grid-x>.small-6{width:50%}.grid-x>.small-7{width:58.3333333333%}.grid-x>.small-8{width:66.6666666667%}.grid-x>.small-9{width:75%}.grid-x>.small-10{width:83.3333333333%}.grid-x>.small-11{width:91.6666666667%}.grid-x>.small-12{width:100%}@media print,screen and (min-width:40em){.grid-x>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.medium-shrink{width:auto}.grid-x>.medium-1{width:8.3333333333%}.grid-x>.medium-2{width:16.6666666667%}.grid-x>.medium-3{width:25%}.grid-x>.medium-4{width:33.3333333333%}.grid-x>.medium-5{width:41.6666666667%}.grid-x>.medium-6{width:50%}.grid-x>.medium-7{width:58.3333333333%}.grid-x>.medium-8{width:66.6666666667%}.grid-x>.medium-9{width:75%}.grid-x>.medium-10{width:83.3333333333%}.grid-x>.medium-11{width:91.6666666667%}.grid-x>.medium-12{width:100%}}@media print,screen and (min-width:64em){.grid-x>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.large-shrink{width:auto}.grid-x>.large-1{width:8.3333333333%}.grid-x>.large-2{width:16.6666666667%}.grid-x>.large-3{width:25%}.grid-x>.large-4{width:33.3333333333%}.grid-x>.large-5{width:41.6666666667%}.grid-x>.large-6{width:50%}.grid-x>.large-7{width:58.3333333333%}.grid-x>.large-8{width:66.6666666667%}.grid-x>.large-9{width:75%}.grid-x>.large-10{width:83.3333333333%}.grid-x>.large-11{width:91.6666666667%}.grid-x>.large-12{width:100%}}.grid-margin-x:not(.grid-x)>.cell{width:auto}.grid-margin-y:not(.grid-y)>.cell{height:auto}.grid-margin-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-margin-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-margin-x>.cell{margin-left:.625rem;margin-right:.625rem;width:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x>.cell{margin-left:.9375rem;margin-right:.9375rem;width:calc(100% - 1.875rem)}}.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.25rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.25rem)}.grid-margin-x>.small-3{width:calc(25% - 1.25rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.25rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.25rem)}.grid-margin-x>.small-6{width:calc(50% - 1.25rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.25rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.25rem)}.grid-margin-x>.small-9{width:calc(75% - 1.25rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.25rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.25rem)}.grid-margin-x>.small-12{width:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.small-3{width:calc(25% - 1.875rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.small-6{width:calc(50% - 1.875rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.small-9{width:calc(75% - 1.875rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.small-12{width:calc(100% - 1.875rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.875rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.875rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.875rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-x>.large-auto,.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.large-3{width:calc(25% - 1.875rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.large-6{width:calc(50% - 1.875rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.large-9{width:calc(75% - 1.875rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.large-12{width:calc(100% - 1.875rem)}}.grid-padding-x .grid-padding-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-padding-x .grid-padding-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-container:not(.full)>.grid-padding-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-padding-x>.cell{padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-padding-x>.cell{padding-left:.9375rem;padding-right:.9375rem}}.small-up-1>.cell{width:100%}.small-up-2>.cell{width:50%}.small-up-3>.cell{width:33.3333333333%}.small-up-4>.cell{width:25%}.small-up-5>.cell{width:20%}.small-up-6>.cell{width:16.6666666667%}.small-up-7>.cell{width:14.2857142857%}.small-up-8>.cell{width:12.5%}@media print,screen and (min-width:40em){.medium-up-1>.cell{width:100%}.medium-up-2>.cell{width:50%}.medium-up-3>.cell{width:33.3333333333%}.medium-up-4>.cell{width:25%}.medium-up-5>.cell{width:20%}.medium-up-6>.cell{width:16.6666666667%}.medium-up-7>.cell{width:14.2857142857%}.medium-up-8>.cell{width:12.5%}}@media print,screen and (min-width:64em){.large-up-1>.cell{width:100%}.large-up-2>.cell{width:50%}.large-up-3>.cell{width:33.3333333333%}.large-up-4>.cell{width:25%}.large-up-5>.cell{width:20%}.large-up-6>.cell{width:16.6666666667%}.large-up-7>.cell{width:14.2857142857%}.large-up-8>.cell{width:12.5%}}.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.25rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.25rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.25rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.25rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.25rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.25rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.25rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.875rem)}.grid-margin-x.medium-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.medium-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.medium-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.medium-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.medium-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.medium-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.medium-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.medium-up-8>.cell{width:calc(12.5% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-x.large-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.large-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.large-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.large-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.large-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.large-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.large-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.large-up-8>.cell{width:calc(12.5% - 1.875rem)}}.small-margin-collapse,.small-margin-collapse>.cell{margin-left:0;margin-right:0}.small-margin-collapse>.small-1{width:8.3333333333%}.small-margin-collapse>.small-2{width:16.6666666667%}.small-margin-collapse>.small-3{width:25%}.small-margin-collapse>.small-4{width:33.3333333333%}.small-margin-collapse>.small-5{width:41.6666666667%}.small-margin-collapse>.small-6{width:50%}.small-margin-collapse>.small-7{width:58.3333333333%}.small-margin-collapse>.small-8{width:66.6666666667%}.small-margin-collapse>.small-9{width:75%}.small-margin-collapse>.small-10{width:83.3333333333%}.small-margin-collapse>.small-11{width:91.6666666667%}.small-margin-collapse>.small-12{width:100%}@media print,screen and (min-width:40em){.small-margin-collapse>.medium-1{width:8.3333333333%}.small-margin-collapse>.medium-2{width:16.6666666667%}.small-margin-collapse>.medium-3{width:25%}.small-margin-collapse>.medium-4{width:33.3333333333%}.small-margin-collapse>.medium-5{width:41.6666666667%}.small-margin-collapse>.medium-6{width:50%}.small-margin-collapse>.medium-7{width:58.3333333333%}.small-margin-collapse>.medium-8{width:66.6666666667%}.small-margin-collapse>.medium-9{width:75%}.small-margin-collapse>.medium-10{width:83.3333333333%}.small-margin-collapse>.medium-11{width:91.6666666667%}.small-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.small-margin-collapse>.large-1{width:8.3333333333%}.small-margin-collapse>.large-2{width:16.6666666667%}.small-margin-collapse>.large-3{width:25%}.small-margin-collapse>.large-4{width:33.3333333333%}.small-margin-collapse>.large-5{width:41.6666666667%}.small-margin-collapse>.large-6{width:50%}.small-margin-collapse>.large-7{width:58.3333333333%}.small-margin-collapse>.large-8{width:66.6666666667%}.small-margin-collapse>.large-9{width:75%}.small-margin-collapse>.large-10{width:83.3333333333%}.small-margin-collapse>.large-11{width:91.6666666667%}.small-margin-collapse>.large-12{width:100%}}.small-padding-collapse{margin-left:0;margin-right:0}.small-padding-collapse>.cell{padding-left:0;padding-right:0}@media print,screen and (min-width:40em){.medium-margin-collapse,.medium-margin-collapse>.cell{margin-left:0;margin-right:0}.medium-margin-collapse>.small-1{width:8.3333333333%}.medium-margin-collapse>.small-2{width:16.6666666667%}.medium-margin-collapse>.small-3{width:25%}.medium-margin-collapse>.small-4{width:33.3333333333%}.medium-margin-collapse>.small-5{width:41.6666666667%}.medium-margin-collapse>.small-6{width:50%}.medium-margin-collapse>.small-7{width:58.3333333333%}.medium-margin-collapse>.small-8{width:66.6666666667%}.medium-margin-collapse>.small-9{width:75%}.medium-margin-collapse>.small-10{width:83.3333333333%}.medium-margin-collapse>.small-11{width:91.6666666667%}.medium-margin-collapse>.small-12{width:100%}.medium-margin-collapse>.medium-1{width:8.3333333333%}.medium-margin-collapse>.medium-2{width:16.6666666667%}.medium-margin-collapse>.medium-3{width:25%}.medium-margin-collapse>.medium-4{width:33.3333333333%}.medium-margin-collapse>.medium-5{width:41.6666666667%}.medium-margin-collapse>.medium-6{width:50%}.medium-margin-collapse>.medium-7{width:58.3333333333%}.medium-margin-collapse>.medium-8{width:66.6666666667%}.medium-margin-collapse>.medium-9{width:75%}.medium-margin-collapse>.medium-10{width:83.3333333333%}.medium-margin-collapse>.medium-11{width:91.6666666667%}.medium-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.medium-margin-collapse>.large-1{width:8.3333333333%}.medium-margin-collapse>.large-2{width:16.6666666667%}.medium-margin-collapse>.large-3{width:25%}.medium-margin-collapse>.large-4{width:33.3333333333%}.medium-margin-collapse>.large-5{width:41.6666666667%}.medium-margin-collapse>.large-6{width:50%}.medium-margin-collapse>.large-7{width:58.3333333333%}.medium-margin-collapse>.large-8{width:66.6666666667%}.medium-margin-collapse>.large-9{width:75%}.medium-margin-collapse>.large-10{width:83.3333333333%}.medium-margin-collapse>.large-11{width:91.6666666667%}.medium-margin-collapse>.large-12{width:100%}}@media print,screen and (min-width:40em){.medium-padding-collapse{margin-left:0;margin-right:0}.medium-padding-collapse>.cell{padding-left:0;padding-right:0}}@media print,screen and (min-width:64em){.large-margin-collapse,.large-margin-collapse>.cell{margin-left:0;margin-right:0}.large-margin-collapse>.small-1{width:8.3333333333%}.large-margin-collapse>.small-2{width:16.6666666667%}.large-margin-collapse>.small-3{width:25%}.large-margin-collapse>.small-4{width:33.3333333333%}.large-margin-collapse>.small-5{width:41.6666666667%}.large-margin-collapse>.small-6{width:50%}.large-margin-collapse>.small-7{width:58.3333333333%}.large-margin-collapse>.small-8{width:66.6666666667%}.large-margin-collapse>.small-9{width:75%}.large-margin-collapse>.small-10{width:83.3333333333%}.large-margin-collapse>.small-11{width:91.6666666667%}.large-margin-collapse>.small-12{width:100%}.large-margin-collapse>.medium-1{width:8.3333333333%}.large-margin-collapse>.medium-2{width:16.6666666667%}.large-margin-collapse>.medium-3{width:25%}.large-margin-collapse>.medium-4{width:33.3333333333%}.large-margin-collapse>.medium-5{width:41.6666666667%}.large-margin-collapse>.medium-6{width:50%}.large-margin-collapse>.medium-7{width:58.3333333333%}.large-margin-collapse>.medium-8{width:66.6666666667%}.large-margin-collapse>.medium-9{width:75%}.large-margin-collapse>.medium-10{width:83.3333333333%}.large-margin-collapse>.medium-11{width:91.6666666667%}.large-margin-collapse>.medium-12{width:100%}.large-margin-collapse>.large-1{width:8.3333333333%}.large-margin-collapse>.large-2{width:16.6666666667%}.large-margin-collapse>.large-3{width:25%}.large-margin-collapse>.large-4{width:33.3333333333%}.large-margin-collapse>.large-5{width:41.6666666667%}.large-margin-collapse>.large-6{width:50%}.large-margin-collapse>.large-7{width:58.3333333333%}.large-margin-collapse>.large-8{width:66.6666666667%}.large-margin-collapse>.large-9{width:75%}.large-margin-collapse>.large-10{width:83.3333333333%}.large-margin-collapse>.large-11{width:91.6666666667%}.large-margin-collapse>.large-12{width:100%}.large-padding-collapse{margin-left:0;margin-right:0}.large-padding-collapse>.cell{padding-left:0;padding-right:0}}.small-offset-0{margin-left:0}.grid-margin-x>.small-offset-0{margin-left:.625rem}.small-offset-1{margin-left:8.3333333333%}.grid-margin-x>.small-offset-1{margin-left:calc(8.33333% + .625rem)}.small-offset-2{margin-left:16.6666666667%}.grid-margin-x>.small-offset-2{margin-left:calc(16.66667% + .625rem)}.small-offset-3{margin-left:25%}.grid-margin-x>.small-offset-3{margin-left:calc(25% + .625rem)}.small-offset-4{margin-left:33.3333333333%}.grid-margin-x>.small-offset-4{margin-left:calc(33.33333% + .625rem)}.small-offset-5{margin-left:41.6666666667%}.grid-margin-x>.small-offset-5{margin-left:calc(41.66667% + .625rem)}.small-offset-6{margin-left:50%}.grid-margin-x>.small-offset-6{margin-left:calc(50% + .625rem)}.small-offset-7{margin-left:58.3333333333%}.grid-margin-x>.small-offset-7{margin-left:calc(58.33333% + .625rem)}.small-offset-8{margin-left:66.6666666667%}.grid-margin-x>.small-offset-8{margin-left:calc(66.66667% + .625rem)}.small-offset-9{margin-left:75%}.grid-margin-x>.small-offset-9{margin-left:calc(75% + .625rem)}.small-offset-10{margin-left:83.3333333333%}.grid-margin-x>.small-offset-10{margin-left:calc(83.33333% + .625rem)}.small-offset-11{margin-left:91.6666666667%}.grid-margin-x>.small-offset-11{margin-left:calc(91.66667% + .625rem)}@media print,screen and (min-width:40em){.medium-offset-0{margin-left:0}.grid-margin-x>.medium-offset-0{margin-left:.9375rem}.medium-offset-1{margin-left:8.3333333333%}.grid-margin-x>.medium-offset-1{margin-left:calc(8.33333% + .9375rem)}.medium-offset-2{margin-left:16.6666666667%}.grid-margin-x>.medium-offset-2{margin-left:calc(16.66667% + .9375rem)}.medium-offset-3{margin-left:25%}.grid-margin-x>.medium-offset-3{margin-left:calc(25% + .9375rem)}.medium-offset-4{margin-left:33.3333333333%}.grid-margin-x>.medium-offset-4{margin-left:calc(33.33333% + .9375rem)}.medium-offset-5{margin-left:41.6666666667%}.grid-margin-x>.medium-offset-5{margin-left:calc(41.66667% + .9375rem)}.medium-offset-6{margin-left:50%}.grid-margin-x>.medium-offset-6{margin-left:calc(50% + .9375rem)}.medium-offset-7{margin-left:58.3333333333%}.grid-margin-x>.medium-offset-7{margin-left:calc(58.33333% + .9375rem)}.medium-offset-8{margin-left:66.6666666667%}.grid-margin-x>.medium-offset-8{margin-left:calc(66.66667% + .9375rem)}.medium-offset-9{margin-left:75%}.grid-margin-x>.medium-offset-9{margin-left:calc(75% + .9375rem)}.medium-offset-10{margin-left:83.3333333333%}.grid-margin-x>.medium-offset-10{margin-left:calc(83.33333% + .9375rem)}.medium-offset-11{margin-left:91.6666666667%}.grid-margin-x>.medium-offset-11{margin-left:calc(91.66667% + .9375rem)}}@media print,screen and (min-width:64em){.large-offset-0{margin-left:0}.grid-margin-x>.large-offset-0{margin-left:.9375rem}.large-offset-1{margin-left:8.3333333333%}.grid-margin-x>.large-offset-1{margin-left:calc(8.33333% + .9375rem)}.large-offset-2{margin-left:16.6666666667%}.grid-margin-x>.large-offset-2{margin-left:calc(16.66667% + .9375rem)}.large-offset-3{margin-left:25%}.grid-margin-x>.large-offset-3{margin-left:calc(25% + .9375rem)}.large-offset-4{margin-left:33.3333333333%}.grid-margin-x>.large-offset-4{margin-left:calc(33.33333% + .9375rem)}.large-offset-5{margin-left:41.6666666667%}.grid-margin-x>.large-offset-5{margin-left:calc(41.66667% + .9375rem)}.large-offset-6{margin-left:50%}.grid-margin-x>.large-offset-6{margin-left:calc(50% + .9375rem)}.large-offset-7{margin-left:58.3333333333%}.grid-margin-x>.large-offset-7{margin-left:calc(58.33333% + .9375rem)}.large-offset-8{margin-left:66.6666666667%}.grid-margin-x>.large-offset-8{margin-left:calc(66.66667% + .9375rem)}.large-offset-9{margin-left:75%}.grid-margin-x>.large-offset-9{margin-left:calc(75% + .9375rem)}.large-offset-10{margin-left:83.3333333333%}.grid-margin-x>.large-offset-10{margin-left:calc(83.33333% + .9375rem)}.large-offset-11{margin-left:91.6666666667%}.grid-margin-x>.large-offset-11{margin-left:calc(91.66667% + .9375rem)}}.grid-y{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.grid-y>.cell{height:auto;max-height:none}.grid-y>.auto,.grid-y>.shrink{height:auto}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-full,.grid-y>.small-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-full,.grid-y>.medium-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-full,.grid-y>.large-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.small-1{height:8.3333333333%}.grid-y>.small-2{height:16.6666666667%}.grid-y>.small-3{height:25%}.grid-y>.small-4{height:33.3333333333%}.grid-y>.small-5{height:41.6666666667%}.grid-y>.small-6{height:50%}.grid-y>.small-7{height:58.3333333333%}.grid-y>.small-8{height:66.6666666667%}.grid-y>.small-9{height:75%}.grid-y>.small-10{height:83.3333333333%}.grid-y>.small-11{height:91.6666666667%}.grid-y>.small-12{height:100%}@media print,screen and (min-width:40em){.grid-y>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.medium-shrink{height:auto}.grid-y>.medium-1{height:8.3333333333%}.grid-y>.medium-2{height:16.6666666667%}.grid-y>.medium-3{height:25%}.grid-y>.medium-4{height:33.3333333333%}.grid-y>.medium-5{height:41.6666666667%}.grid-y>.medium-6{height:50%}.grid-y>.medium-7{height:58.3333333333%}.grid-y>.medium-8{height:66.6666666667%}.grid-y>.medium-9{height:75%}.grid-y>.medium-10{height:83.3333333333%}.grid-y>.medium-11{height:91.6666666667%}.grid-y>.medium-12{height:100%}}@media print,screen and (min-width:64em){.grid-y>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.large-shrink{height:auto}.grid-y>.large-1{height:8.3333333333%}.grid-y>.large-2{height:16.6666666667%}.grid-y>.large-3{height:25%}.grid-y>.large-4{height:33.3333333333%}.grid-y>.large-5{height:41.6666666667%}.grid-y>.large-6{height:50%}.grid-y>.large-7{height:58.3333333333%}.grid-y>.large-8{height:66.6666666667%}.grid-y>.large-9{height:75%}.grid-y>.large-10{height:83.3333333333%}.grid-y>.large-11{height:91.6666666667%}.grid-y>.large-12{height:100%}}.grid-padding-y .grid-padding-y{margin-bottom:-.625rem;margin-top:-.625rem}@media print,screen and (min-width:40em){.grid-padding-y .grid-padding-y{margin-bottom:-.9375rem;margin-top:-.9375rem}}.grid-padding-y>.cell{padding-bottom:.625rem;padding-top:.625rem}@media print,screen and (min-width:40em){.grid-padding-y>.cell{padding-bottom:.9375rem;padding-top:.9375rem}}.grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .grid-frame{width:100%}.cell-block{max-width:100%;overflow-x:auto}.cell-block,.cell-block-y{-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.cell-block-y{max-height:100%;min-height:100%;overflow-y:auto}.cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}@media print,screen and (min-width:40em){.medium-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .medium-grid-frame{width:100%}.medium-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.medium-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.medium-cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.medium-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media print,screen and (min-width:64em){.large-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .large-grid-frame{width:100%}.large-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.large-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.large-cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.large-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}.grid-y.grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}@media print,screen and (min-width:40em){.grid-y.medium-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}@media print,screen and (min-width:64em){.grid-y.large-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}.cell .grid-y.grid-frame{height:100%}@media print,screen and (min-width:40em){.cell .grid-y.medium-grid-frame{height:100%}}@media print,screen and (min-width:64em){.cell .grid-y.large-grid-frame{height:100%}}.grid-margin-y{margin-bottom:-.625rem;margin-top:-.625rem}@media print,screen and (min-width:40em){.grid-margin-y{margin-bottom:-.9375rem;margin-top:-.9375rem}}.grid-margin-y>.cell{height:calc(100% - 1.25rem);margin-bottom:.625rem;margin-top:.625rem}@media print,screen and (min-width:40em){.grid-margin-y>.cell{height:calc(100% - 1.875rem);margin-bottom:.9375rem;margin-top:.9375rem}}.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.25rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.25rem)}.grid-margin-y>.small-3{height:calc(25% - 1.25rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.25rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.25rem)}.grid-margin-y>.small-6{height:calc(50% - 1.25rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.25rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.25rem)}.grid-margin-y>.small-9{height:calc(75% - 1.25rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.25rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.25rem)}.grid-margin-y>.small-12{height:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.small-3{height:calc(25% - 1.875rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.small-6{height:calc(50% - 1.875rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.small-9{height:calc(75% - 1.875rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.small-12{height:calc(100% - 1.875rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.875rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.875rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.875rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-y>.large-auto,.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.large-3{height:calc(25% - 1.875rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.large-6{height:calc(50% - 1.875rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.large-9{height:calc(75% - 1.875rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.large-12{height:calc(100% - 1.875rem)}}.grid-frame.grid-margin-y{height:calc(100vh + 1.25rem)}@media print,screen and (min-width:40em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:64em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:40em){.grid-margin-y.medium-grid-frame{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-y.large-grid-frame{height:calc(100vh + 1.875rem)}}.button{-webkit-appearance:none;border:1px solid transparent;border-radius:0;cursor:pointer;display:inline-block;font-family:inherit;font-size:.9rem;line-height:1;margin:0 0 1rem;padding:.85em 1em;text-align:center;-webkit-transition:background-color .25s ease-out,color .25s ease-out;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle}[data-whatinput=mouse] .button{outline:0}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;margin-left:0;margin-right:0;width:100%}.button,.button.disabled,.button.disabled:focus,.button.disabled:hover,.button[disabled],.button[disabled]:focus,.button[disabled]:hover{background-color:#1779ba;color:#fefefe}.button:focus,.button:hover{background-color:#14679e;color:#fefefe}.button.primary,.button.primary.disabled,.button.primary.disabled:focus,.button.primary.disabled:hover,.button.primary[disabled],.button.primary[disabled]:focus,.button.primary[disabled]:hover{background-color:#1779ba;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#126195;color:#fefefe}.button.secondary,.button.secondary.disabled,.button.secondary.disabled:focus,.button.secondary.disabled:hover,.button.secondary[disabled],.button.secondary[disabled]:focus,.button.secondary[disabled]:hover{background-color:#767676;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5e5e5e;color:#fefefe}.button.success,.button.success.disabled,.button.success.disabled:focus,.button.success.disabled:hover,.button.success[disabled],.button.success[disabled]:focus,.button.success[disabled]:hover{background-color:#3adb76;color:#0a0a0a}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#0a0a0a}.button.warning,.button.warning.disabled,.button.warning.disabled:focus,.button.warning.disabled:hover,.button.warning[disabled],.button.warning[disabled]:focus,.button.warning[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#0a0a0a}.button.alert,.button.alert.disabled,.button.alert.disabled:focus,.button.alert.disabled:hover,.button.alert[disabled],.button.alert[disabled]:focus,.button.alert[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#a53b2a;color:#fefefe}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow:focus,.button.hollow:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{background-color:transparent}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button.hollow:focus,.button.hollow:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.primary,.button.hollow.primary.disabled,.button.hollow.primary.disabled:focus,.button.hollow.primary.disabled:hover,.button.hollow.primary[disabled],.button.hollow.primary[disabled]:focus,.button.hollow.primary[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.secondary,.button.hollow.secondary.disabled,.button.hollow.secondary.disabled:focus,.button.hollow.secondary.disabled:hover,.button.hollow.secondary[disabled],.button.hollow.secondary[disabled]:focus,.button.hollow.secondary[disabled]:hover{border:1px solid #767676;color:#767676}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3b3b3b;color:#3b3b3b}.button.hollow.success,.button.hollow.success.disabled,.button.hollow.success.disabled:focus,.button.hollow.success.disabled:hover,.button.hollow.success[disabled],.button.hollow.success[disabled]:focus,.button.hollow.success[disabled]:hover{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning,.button.hollow.warning.disabled,.button.hollow.warning.disabled:focus,.button.hollow.warning.disabled:hover,.button.hollow.warning[disabled],.button.hollow.warning[disabled]:focus,.button.hollow.warning[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert,.button.hollow.alert.disabled,.button.hollow.alert.disabled:focus,.button.hollow.alert.disabled:hover,.button.hollow.alert[disabled],.button.hollow.alert[disabled]:focus,.button.hollow.alert[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#67251a;color:#67251a}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear:focus,.button.clear:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{background-color:transparent;border-color:transparent}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{color:#1779ba}.button.clear:focus,.button.clear:hover{color:#0c3d5d}.button.clear.primary,.button.clear.primary.disabled,.button.clear.primary.disabled:focus,.button.clear.primary.disabled:hover,.button.clear.primary[disabled],.button.clear.primary[disabled]:focus,.button.clear.primary[disabled]:hover{color:#1779ba}.button.clear.primary:focus,.button.clear.primary:hover{color:#0c3d5d}.button.clear.secondary,.button.clear.secondary.disabled,.button.clear.secondary.disabled:focus,.button.clear.secondary.disabled:hover,.button.clear.secondary[disabled],.button.clear.secondary[disabled]:focus,.button.clear.secondary[disabled]:hover{color:#767676}.button.clear.secondary:focus,.button.clear.secondary:hover{color:#3b3b3b}.button.clear.success,.button.clear.success.disabled,.button.clear.success.disabled:focus,.button.clear.success.disabled:hover,.button.clear.success[disabled],.button.clear.success[disabled]:focus,.button.clear.success[disabled]:hover{color:#3adb76}.button.clear.success:focus,.button.clear.success:hover{color:#157539}.button.clear.warning,.button.clear.warning.disabled,.button.clear.warning.disabled:focus,.button.clear.warning.disabled:hover,.button.clear.warning[disabled],.button.clear.warning[disabled]:focus,.button.clear.warning[disabled]:hover{color:#ffae00}.button.clear.warning:focus,.button.clear.warning:hover{color:#805700}.button.clear.alert,.button.clear.alert.disabled,.button.clear.alert.disabled:focus,.button.clear.alert.disabled:hover,.button.clear.alert[disabled],.button.clear.alert[disabled]:focus,.button.clear.alert[disabled]:hover{color:#cc4b37}.button.clear.alert:focus,.button.clear.alert:hover{color:#67251a}.button.disabled,.button[disabled]{cursor:not-allowed;opacity:.25}.button.dropdown:after{border-color:#fefefe transparent transparent;border-style:solid;border-width:.4em .4em 0;content:"";display:block;display:inline-block;float:right;height:0;margin-left:1em;position:relative;top:.4em;width:0}.button.dropdown.clear.primary:after,.button.dropdown.clear:after,.button.dropdown.hollow.primary:after,.button.dropdown.hollow:after{border-top-color:#1779ba}.button.dropdown.clear.secondary:after,.button.dropdown.hollow.secondary:after{border-top-color:#767676}.button.dropdown.clear.success:after,.button.dropdown.hollow.success:after{border-top-color:#3adb76}.button.dropdown.clear.warning:after,.button.dropdown.hollow.warning:after{border-top-color:#ffae00}.button.dropdown.clear.alert:after,.button.dropdown.hollow.alert:after{border-top-color:#cc4b37}.button.arrow-only:after{float:none;margin-left:0;top:-.1em}a.button:focus,a.button:hover{text-decoration:none}.button-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1rem;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.button-group:after,.button-group:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.button-group:after{clear:both}.button-group:after,.button-group:before{display:none}.button-group .button{font-size:.9rem;margin:0 1px 1px 0;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.button-group.primary .button,.button-group.primary .button.disabled,.button-group.primary .button.disabled:focus,.button-group.primary .button.disabled:hover,.button-group.primary .button[disabled],.button-group.primary .button[disabled]:focus,.button-group.primary .button[disabled]:hover{background-color:#1779ba;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#126195;color:#fefefe}.button-group.secondary .button,.button-group.secondary .button.disabled,.button-group.secondary .button.disabled:focus,.button-group.secondary .button.disabled:hover,.button-group.secondary .button[disabled],.button-group.secondary .button[disabled]:focus,.button-group.secondary .button[disabled]:hover{background-color:#767676;color:#fefefe}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#5e5e5e;color:#fefefe}.button-group.success .button,.button-group.success .button.disabled,.button-group.success .button.disabled:focus,.button-group.success .button.disabled:hover,.button-group.success .button[disabled],.button-group.success .button[disabled]:focus,.button-group.success .button[disabled]:hover{background-color:#3adb76;color:#0a0a0a}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#22bb5b;color:#0a0a0a}.button-group.warning .button,.button-group.warning .button.disabled,.button-group.warning .button.disabled:focus,.button-group.warning .button.disabled:hover,.button-group.warning .button[disabled],.button-group.warning .button[disabled]:focus,.button-group.warning .button[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button,.button-group.alert .button.disabled,.button-group.alert .button.disabled:focus,.button-group.alert .button.disabled:hover,.button-group.alert .button[disabled],.button-group.alert .button[disabled]:focus,.button-group.alert .button[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#a53b2a;color:#fefefe}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button:focus,.button-group.hollow .button:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{background-color:transparent}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button-group.hollow .button:focus,.button-group.hollow .button:hover{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow .button.primary,.button-group.hollow .button.primary.disabled,.button-group.hollow .button.primary.disabled:focus,.button-group.hollow .button.primary.disabled:hover,.button-group.hollow .button.primary[disabled],.button-group.hollow .button.primary[disabled]:focus,.button-group.hollow .button.primary[disabled]:hover,.button-group.hollow.primary .button,.button-group.hollow.primary .button.disabled,.button-group.hollow.primary .button.disabled:focus,.button-group.hollow.primary .button.disabled:hover,.button-group.hollow.primary .button[disabled],.button-group.hollow.primary .button[disabled]:focus,.button-group.hollow.primary .button[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button-group.hollow .button.primary:focus,.button-group.hollow .button.primary:hover,.button-group.hollow.primary .button:focus,.button-group.hollow.primary .button:hover{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow .button.secondary,.button-group.hollow .button.secondary.disabled,.button-group.hollow .button.secondary.disabled:focus,.button-group.hollow .button.secondary.disabled:hover,.button-group.hollow .button.secondary[disabled],.button-group.hollow .button.secondary[disabled]:focus,.button-group.hollow .button.secondary[disabled]:hover,.button-group.hollow.secondary .button,.button-group.hollow.secondary .button.disabled,.button-group.hollow.secondary .button.disabled:focus,.button-group.hollow.secondary .button.disabled:hover,.button-group.hollow.secondary .button[disabled],.button-group.hollow.secondary .button[disabled]:focus,.button-group.hollow.secondary .button[disabled]:hover{border:1px solid #767676;color:#767676}.button-group.hollow .button.secondary:focus,.button-group.hollow .button.secondary:hover,.button-group.hollow.secondary .button:focus,.button-group.hollow.secondary .button:hover{border-color:#3b3b3b;color:#3b3b3b}.button-group.hollow .button.success,.button-group.hollow .button.success.disabled,.button-group.hollow .button.success.disabled:focus,.button-group.hollow .button.success.disabled:hover,.button-group.hollow .button.success[disabled],.button-group.hollow .button.success[disabled]:focus,.button-group.hollow .button.success[disabled]:hover,.button-group.hollow.success .button,.button-group.hollow.success .button.disabled,.button-group.hollow.success .button.disabled:focus,.button-group.hollow.success .button.disabled:hover,.button-group.hollow.success .button[disabled],.button-group.hollow.success .button[disabled]:focus,.button-group.hollow.success .button[disabled]:hover{border:1px solid #3adb76;color:#3adb76}.button-group.hollow .button.success:focus,.button-group.hollow .button.success:hover,.button-group.hollow.success .button:focus,.button-group.hollow.success .button:hover{border-color:#157539;color:#157539}.button-group.hollow .button.warning,.button-group.hollow .button.warning.disabled,.button-group.hollow .button.warning.disabled:focus,.button-group.hollow .button.warning.disabled:hover,.button-group.hollow .button.warning[disabled],.button-group.hollow .button.warning[disabled]:focus,.button-group.hollow .button.warning[disabled]:hover,.button-group.hollow.warning .button,.button-group.hollow.warning .button.disabled,.button-group.hollow.warning .button.disabled:focus,.button-group.hollow.warning .button.disabled:hover,.button-group.hollow.warning .button[disabled],.button-group.hollow.warning .button[disabled]:focus,.button-group.hollow.warning .button[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button-group.hollow .button.warning:focus,.button-group.hollow .button.warning:hover,.button-group.hollow.warning .button:focus,.button-group.hollow.warning .button:hover{border-color:#805700;color:#805700}.button-group.hollow .button.alert,.button-group.hollow .button.alert.disabled,.button-group.hollow .button.alert.disabled:focus,.button-group.hollow .button.alert.disabled:hover,.button-group.hollow .button.alert[disabled],.button-group.hollow .button.alert[disabled]:focus,.button-group.hollow .button.alert[disabled]:hover,.button-group.hollow.alert .button,.button-group.hollow.alert .button.disabled,.button-group.hollow.alert .button.disabled:focus,.button-group.hollow.alert .button.disabled:hover,.button-group.hollow.alert .button[disabled],.button-group.hollow.alert .button[disabled]:focus,.button-group.hollow.alert .button[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button-group.hollow .button.alert:focus,.button-group.hollow .button.alert:hover,.button-group.hollow.alert .button:focus,.button-group.hollow.alert .button:hover{border-color:#67251a;color:#67251a}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button:focus,.button-group.clear .button:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{background-color:transparent;border-color:transparent}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{color:#1779ba}.button-group.clear .button:focus,.button-group.clear .button:hover{color:#0c3d5d}.button-group.clear .button.primary,.button-group.clear .button.primary.disabled,.button-group.clear .button.primary.disabled:focus,.button-group.clear .button.primary.disabled:hover,.button-group.clear .button.primary[disabled],.button-group.clear .button.primary[disabled]:focus,.button-group.clear .button.primary[disabled]:hover,.button-group.clear.primary .button,.button-group.clear.primary .button.disabled,.button-group.clear.primary .button.disabled:focus,.button-group.clear.primary .button.disabled:hover,.button-group.clear.primary .button[disabled],.button-group.clear.primary .button[disabled]:focus,.button-group.clear.primary .button[disabled]:hover{color:#1779ba}.button-group.clear .button.primary:focus,.button-group.clear .button.primary:hover,.button-group.clear.primary .button:focus,.button-group.clear.primary .button:hover{color:#0c3d5d}.button-group.clear .button.secondary,.button-group.clear .button.secondary.disabled,.button-group.clear .button.secondary.disabled:focus,.button-group.clear .button.secondary.disabled:hover,.button-group.clear .button.secondary[disabled],.button-group.clear .button.secondary[disabled]:focus,.button-group.clear .button.secondary[disabled]:hover,.button-group.clear.secondary .button,.button-group.clear.secondary .button.disabled,.button-group.clear.secondary .button.disabled:focus,.button-group.clear.secondary .button.disabled:hover,.button-group.clear.secondary .button[disabled],.button-group.clear.secondary .button[disabled]:focus,.button-group.clear.secondary .button[disabled]:hover{color:#767676}.button-group.clear .button.secondary:focus,.button-group.clear .button.secondary:hover,.button-group.clear.secondary .button:focus,.button-group.clear.secondary .button:hover{color:#3b3b3b}.button-group.clear .button.success,.button-group.clear .button.success.disabled,.button-group.clear .button.success.disabled:focus,.button-group.clear .button.success.disabled:hover,.button-group.clear .button.success[disabled],.button-group.clear .button.success[disabled]:focus,.button-group.clear .button.success[disabled]:hover,.button-group.clear.success .button,.button-group.clear.success .button.disabled,.button-group.clear.success .button.disabled:focus,.button-group.clear.success .button.disabled:hover,.button-group.clear.success .button[disabled],.button-group.clear.success .button[disabled]:focus,.button-group.clear.success .button[disabled]:hover{color:#3adb76}.button-group.clear .button.success:focus,.button-group.clear .button.success:hover,.button-group.clear.success .button:focus,.button-group.clear.success .button:hover{color:#157539}.button-group.clear .button.warning,.button-group.clear .button.warning.disabled,.button-group.clear .button.warning.disabled:focus,.button-group.clear .button.warning.disabled:hover,.button-group.clear .button.warning[disabled],.button-group.clear .button.warning[disabled]:focus,.button-group.clear .button.warning[disabled]:hover,.button-group.clear.warning .button,.button-group.clear.warning .button.disabled,.button-group.clear.warning .button.disabled:focus,.button-group.clear.warning .button.disabled:hover,.button-group.clear.warning .button[disabled],.button-group.clear.warning .button[disabled]:focus,.button-group.clear.warning .button[disabled]:hover{color:#ffae00}.button-group.clear .button.warning:focus,.button-group.clear .button.warning:hover,.button-group.clear.warning .button:focus,.button-group.clear.warning .button:hover{color:#805700}.button-group.clear .button.alert,.button-group.clear .button.alert.disabled,.button-group.clear .button.alert.disabled:focus,.button-group.clear .button.alert.disabled:hover,.button-group.clear .button.alert[disabled],.button-group.clear .button.alert[disabled]:focus,.button-group.clear .button.alert[disabled]:hover,.button-group.clear.alert .button,.button-group.clear.alert .button.disabled,.button-group.clear.alert .button.disabled:focus,.button-group.clear.alert .button.disabled:hover,.button-group.clear.alert .button[disabled],.button-group.clear.alert .button[disabled]:focus,.button-group.clear.alert .button[disabled]:hover{color:#cc4b37}.button-group.clear .button.alert:focus,.button-group.clear .button.alert:hover,.button-group.clear.alert .button:focus,.button-group.clear.alert .button:hover{color:#67251a}.button-group.no-gaps .button{margin-right:-.0625rem}.button-group.no-gaps .button+.button{border-left-color:transparent}.button-group.stacked,.button-group.stacked-for-medium,.button-group.stacked-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.button-group.stacked .button,.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%}.button-group.stacked .button:last-child,.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child{margin-bottom:0}.button-group.stacked-for-medium.expanded .button,.button-group.stacked-for-small.expanded .button,.button-group.stacked.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}@media print,screen and (min-width:40em){.button-group.stacked-for-small .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (min-width:64em){.button-group.stacked-for-medium .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (max-width:39.99875em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}@media print,screen and (max-width:63.99875em){.button-group.stacked-for-medium.expanded{display:block}.button-group.stacked-for-medium.expanded .button{display:block;margin-right:0}}.close-button{color:#8a8a8a;cursor:pointer;position:absolute;z-index:10}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.close-button.small{font-size:1.5em;line-height:1;right:.66rem;top:.33em}.close-button,.close-button.medium{font-size:2em;line-height:1;right:1rem;top:.5rem}.label{border-radius:0;cursor:default;display:inline-block;font-size:.8rem;line-height:1;padding:.33333rem .5rem;white-space:nowrap}.label,.label.primary{background:#1779ba;color:#fefefe}.label.secondary{background:#767676;color:#fefefe}.label.success{background:#3adb76;color:#0a0a0a}.label.warning{background:#ffae00;color:#0a0a0a}.label.alert{background:#cc4b37;color:#fefefe}.progress{background-color:#cacaca;border-radius:0;height:1rem;margin-bottom:1rem}.progress.primary .progress-meter{background-color:#1779ba}.progress.secondary .progress-meter{background-color:#767676}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#cc4b37}.progress-meter{background-color:#1779ba;display:block;height:100%;position:relative;width:0}.progress-meter-text{color:#fefefe;font-size:.75rem;font-weight:700;left:50%;margin:0;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);white-space:nowrap}.slider{background-color:#e6e6e6;cursor:pointer;height:.5rem;margin-bottom:2.25rem;margin-top:1.25rem;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.slider-fill{background-color:#cacaca;display:inline-block;height:.5rem;left:0;max-width:100%;position:absolute;top:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.slider-fill.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider-handle{background-color:#1779ba;border-radius:0;cursor:-webkit-grab;cursor:grab;display:inline-block;height:1.4rem;left:0;position:absolute;top:50%;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;width:1.4rem;z-index:1}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#14679e}.slider-handle.is-dragging{cursor:-webkit-grabbing;cursor:grabbing;-webkit-transition:all 0s linear;transition:all 0s linear}.slider.disabled,.slider[disabled]{cursor:not-allowed;opacity:.25}.slider.vertical{display:inline-block;height:12.5rem;margin:0 1.25rem;-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);width:.5rem}.slider.vertical .slider-fill{max-height:100%;top:0;width:.5rem}.slider.vertical .slider-handle{height:1.4rem;left:50%;position:absolute;top:0;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:1.4rem}.switch{color:#fefefe;font-size:.875rem;font-weight:700;height:2rem;margin-bottom:1rem;outline:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-input{margin-bottom:0;opacity:0;position:absolute}.switch-paddle{background:#cacaca;border-radius:0;color:inherit;cursor:pointer;display:block;font-weight:inherit;height:2rem;position:relative;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:4rem}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;border-radius:0;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:1.5rem}input:checked~.switch-paddle{background:#1779ba}input:checked~.switch-paddle:after{left:2.25rem}input:disabled~.switch-paddle{cursor:not-allowed;opacity:.5}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{display:none;left:8%}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{font-size:.625rem;height:1.5rem;width:3rem}.switch.tiny .switch-paddle:after{height:1rem;left:.25rem;top:.25rem;width:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{font-size:.75rem;height:1.75rem;width:3.5rem}.switch.small .switch-paddle:after{height:1.25rem;left:.25rem;top:.25rem;width:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{font-size:1rem;height:2.5rem;width:5rem}.switch.large .switch-paddle:after{height:2rem;left:.25rem;top:.25rem;width:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{border-collapse:collapse;border-radius:0;margin-bottom:1rem;width:100%}tbody,tfoot,thead{background-color:#fefefe;border:1px solid #f1f1f1}caption{font-weight:700;padding:.5rem .625rem .625rem}thead{background:#f8f8f8}tfoot,thead{color:#0a0a0a}tfoot{background:#f1f1f1}tfoot tr,thead tr{background:0 0}tfoot td,tfoot th,thead td,thead th{font-weight:700;padding:.5rem .625rem .625rem;text-align:left}tbody td,tbody th{padding:.5rem .625rem .625rem}tbody tr:nth-child(2n){background-color:#f1f1f1;border-bottom:0}table.unstriped tbody{background-color:#fefefe}table.unstriped tbody tr{background-color:#fefefe;border-bottom:1px solid #f1f1f1}@media print,screen and (max-width:63.99875em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;overflow-x:auto;width:100%}table.hover thead tr:hover{background-color:#f3f3f3}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f9f9}table.hover:not(.unstriped) tr:nth-of-type(2n):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.badge{border-radius:50%;display:inline-block;font-size:.6rem;min-width:2.1em;padding:.3em;text-align:center}.badge,.badge.primary{background:#1779ba;color:#fefefe}.badge.secondary{background:#767676;color:#fefefe}.badge.success{background:#3adb76;color:#0a0a0a}.badge.warning{background:#ffae00;color:#0a0a0a}.badge.alert{background:#cc4b37;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.breadcrumbs:after{clear:both}.breadcrumbs li{color:#0a0a0a;cursor:default;float:left;font-size:.6875rem;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"/";margin:0 .75rem;opacity:1;position:relative}.breadcrumbs a{color:#1779ba}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.callout{background-color:#fff;border:1px solid hsla(0,0%,4%,.25);border-radius:0;color:#0a0a0a;margin:0 0 1rem;padding:1rem;position:relative}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#d7ecfa;color:#0a0a0a}.callout.secondary{background-color:#eaeaea;color:#0a0a0a}.callout.success{background-color:#e1faea;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding:.5rem}.callout.large{padding:3rem}.card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;background:#fefefe;border:1px solid #e6e6e6;border-radius:0;-webkit-box-shadow:none;box-shadow:none;color:#0a0a0a;flex-grow:1;margin-bottom:1rem;overflow:hidden}.card>:last-child{margin-bottom:0}.card-divider{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;background:#e6e6e6;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;padding:1rem}.card-divider>:last-child{margin-bottom:0}.card-section{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;padding:1rem}.card-section>:last-child{margin-bottom:0}.card-image{min-height:1px}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:none;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:10}.dropdown-pane.is-opening{display:block}.dropdown-pane.is-open{display:block;visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.pagination{margin-bottom:1rem;margin-left:0}.pagination:after,.pagination:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.pagination:after{clear:both}.pagination li{border-radius:0;display:none;font-size:.875rem;margin-right:.0625rem}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media print,screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{border-radius:0;color:#0a0a0a;display:block;padding:.1875rem .625rem}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{background:#1779ba;color:#fefefe;cursor:default;padding:.1875rem .625rem}.pagination .disabled{color:#cacaca;cursor:not-allowed;padding:.1875rem .625rem}.pagination .disabled:hover{background:0 0}.pagination .ellipsis:after{color:#0a0a0a;content:"…";padding:.1875rem .625rem}.pagination-previous a:before,.pagination-previous.disabled:before{content:"«";display:inline-block;margin-right:.5rem}.pagination-next a:after,.pagination-next.disabled:after{content:"»";display:inline-block;margin-left:.5rem}.has-tip{border-bottom:1px dotted #8a8a8a;cursor:help;display:inline-block;font-weight:700;position:relative}.tooltip{background-color:#0a0a0a;border-radius:0;color:#fefefe;font-size:80%;max-width:10rem;padding:.75rem;top:calc(100% + .6495rem);z-index:1200}.tooltip,.tooltip:before{position:absolute}.tooltip.bottom:before{border-color:transparent transparent #0a0a0a;border-style:solid;border-width:0 .75rem .75rem;bottom:100%;content:"";display:block;height:0;width:0}.tooltip.bottom.align-center:before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem 0;bottom:auto;content:"";display:block;height:0;top:100%;width:0}.tooltip.top.align-center:before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-style:solid;border-width:.75rem 0 .75rem .75rem;content:"";display:block;height:0;left:100%;width:0}.tooltip.left.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem .75rem 0;content:"";display:block;height:0;left:auto;right:100%;width:0}.tooltip.right.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.align-top:before{bottom:auto;top:10%}.tooltip.align-bottom:before{bottom:10%;top:auto}.tooltip.align-left:before{left:10%;right:auto}.tooltip.align-right:before{left:auto;right:10%}.accordion{background:#fefefe;list-style-type:none;margin-left:0}.accordion[disabled] .accordion-title{cursor:not-allowed}.accordion-item:first-child>:first-child,.accordion-item:last-child>:last-child{border-radius:0}.accordion-title{border:1px solid #e6e6e6;border-bottom:0;color:#1779ba;display:block;font-size:.75rem;line-height:1;padding:1.25rem 1rem;position:relative}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:"+";margin-top:-.5rem;position:absolute;right:1rem;top:50%}.is-active>.accordion-title:before{content:"–"}.accordion-content{background-color:#fefefe;border:1px solid #e6e6e6;border-bottom:0;color:#0a0a0a;display:none;padding:1rem}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.media-object{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;margin-bottom:1rem}.media-object img{max-width:none}@media print,screen and (max-width:39.99875em){.media-object.stack-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.media-object-section{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}@media print,screen and (max-width:39.99875em){.stack-for-small .media-object-section{-webkit-flex-basis:100%;padding:0 0 1rem;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.stack-for-small .media-object-section img{width:100%}}.media-object-section.main-section{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.orbit,.orbit-container{position:relative}.orbit-container{height:0;list-style:none;margin:0;overflow:hidden}.orbit-slide{position:absolute;width:100%}.orbit-slide.no-motionui.is-active{left:0;top:0}.orbit-figure{margin:0}.orbit-image{margin:0;max-width:100%;width:100%}.orbit-caption{background-color:hsla(0,0%,4%,.5);bottom:0;margin-bottom:0;width:100%}.orbit-caption,.orbit-next,.orbit-previous{color:#fefefe;padding:1rem;position:absolute}.orbit-next,.orbit-previous{top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:10}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{margin-bottom:.8rem;margin-top:.8rem;position:relative;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{background-color:#cacaca;border-radius:50%;height:1.2rem;margin:.1rem;width:1.2rem}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.flex-video,.responsive-embed{height:0;margin-bottom:1rem;overflow:hidden;padding-bottom:75%;position:relative}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video,.responsive-embed embed,.responsive-embed iframe,.responsive-embed object,.responsive-embed video{height:100%;left:0;position:absolute;top:0;width:100%}.flex-video.widescreen,.responsive-embed.widescreen{padding-bottom:56.25%}.tabs{background:#fefefe;border:1px solid #e6e6e6;list-style-type:none;margin:0}.tabs:after,.tabs:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.tabs:after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:0 0}.tabs.primary{background:#1779ba}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#1673b1}.tabs-title{float:left}.tabs-title>a{color:#1779ba;display:block;font-size:.75rem;line-height:1;padding:1.25rem 1.5rem}[data-whatinput=mouse] .tabs-title>a{outline:0}.tabs-title>a:hover{background:#fefefe;color:#1468a0}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6;color:#1779ba}.tabs-content{background:#fefefe;border:1px solid #e6e6e6;border-top:0;color:#0a0a0a;-webkit-transition:all .5s ease;transition:all .5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;border-radius:0;-webkit-box-shadow:0 0 0 1px hsla(0,0%,4%,.2);box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;margin-bottom:1rem;max-width:100%}a.thumbnail{-webkit-transition:-webkit-box-shadow .2s ease-out;transition:-webkit-box-shadow .2s ease-out;transition:box-shadow .2s ease-out;transition:box-shadow .2s ease-out,-webkit-box-shadow .2s ease-out}a.thumbnail:focus,a.thumbnail:hover{-webkit-box-shadow:0 0 6px 1px rgba(23,121,186,.5);box-shadow:0 0 6px 1px rgba(23,121,186,.5)}a.thumbnail image{-webkit-box-shadow:none;box-shadow:none}.menu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:0;padding:0;position:relative}[data-whatinput=mouse] .menu li{outline:0}.menu .button,.menu a{display:block;line-height:1;padding:.7rem 1rem;text-decoration:none}.menu a,.menu button,.menu input,.menu select{margin-bottom:0}.menu input{display:inline-block}.menu,.menu.horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.vertical.icon-bottom li a i,.menu.vertical.icon-bottom li a img,.menu.vertical.icon-bottom li a svg,.menu.vertical.icon-top li a i,.menu.vertical.icon-top li a img,.menu.vertical.icon-top li a svg{text-align:left}.menu.expanded li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.menu.expanded.icon-bottom li a i,.menu.expanded.icon-bottom li a img,.menu.expanded.icon-bottom li a svg,.menu.expanded.icon-top li a i,.menu.expanded.icon-top li a img,.menu.expanded.icon-top li a svg{text-align:left}.menu.simple{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.menu.simple li+li{margin-left:1rem}.menu.simple a{padding:0}@media print,screen and (min-width:40em){.menu.medium-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.medium-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.medium-expanded li,.menu.medium-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}@media print,screen and (min-width:64em){.menu.large-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.large-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.large-expanded li,.menu.large-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}.menu.nested{margin-left:1rem;margin-right:0}.menu.icon-bottom a,.menu.icon-left a,.menu.icon-right a,.menu.icon-top a,.menu.icons a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu.icon-left li a,.menu.nested.icon-left li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-left li a i,.menu.icon-left li a img,.menu.icon-left li a svg,.menu.nested.icon-left li a i,.menu.nested.icon-left li a img,.menu.nested.icon-left li a svg{margin-right:.25rem}.menu.icon-right li a,.menu.nested.icon-right li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-right li a i,.menu.icon-right li a img,.menu.icon-right li a svg,.menu.nested.icon-right li a i,.menu.nested.icon-right li a img,.menu.nested.icon-right li a svg{margin-left:.25rem}.menu.icon-top li a,.menu.nested.icon-top li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-top li a i,.menu.icon-top li a img,.menu.icon-top li a svg,.menu.nested.icon-top li a i,.menu.nested.icon-top li a img,.menu.nested.icon-top li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu.icon-bottom li a,.menu.nested.icon-bottom li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-bottom li a i,.menu.icon-bottom li a img,.menu.icon-bottom li a svg,.menu.nested.icon-bottom li a i,.menu.nested.icon-bottom li a img,.menu.nested.icon-bottom li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu .active>a,.menu .is-active>a{background:#1779ba;color:#fefefe}.menu.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.menu.align-right li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right.vertical li{display:block;text-align:right}.menu.align-right.icon-bottom li a i,.menu.align-right.icon-bottom li a img,.menu.align-right.icon-bottom li a svg,.menu.align-right.icon-top li a i,.menu.align-right.icon-top li a img,.menu.align-right.icon-top li a svg,.menu.align-right.vertical li .submenu li{text-align:right}.menu.align-right .nested{margin-left:0;margin-right:1rem}.menu.align-center li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu.align-center li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu .menu-text{color:inherit;font-weight:700;line-height:1;padding:.7rem 1rem}.menu-centered>.menu,.menu-centered>.menu li{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu-centered>.menu li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu-centered>.menu li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.no-js [data-responsive-menu] ul{display:none}.menu-icon{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon:after{background:#fefefe;-webkit-box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon:hover:after{background:#cacaca;-webkit-box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.menu-icon.dark{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon.dark:after{background:#0a0a0a;-webkit-box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon.dark:hover:after{background:#8a8a8a;-webkit-box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.accordion-menu li{width:100%}.accordion-menu .is-accordion-submenu a,.accordion-menu a{padding:.7rem 1rem}.accordion-menu .nested.is-accordion-submenu{margin-left:1rem;margin-right:0}.accordion-menu.align-right .nested.is-accordion-submenu{margin-left:0;margin-right:1rem}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a{position:relative}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;margin-top:-3px;position:absolute;right:1rem;top:50%;width:0}.accordion-menu.align-left .is-accordion-submenu-parent>a:after{left:auto;right:1rem}.accordion-menu.align-right .is-accordion-submenu-parent>a:after{left:1rem;right:auto}.accordion-menu .is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.is-accordion-submenu-parent{position:relative}.has-submenu-toggle>a{margin-right:40px}.submenu-toggle{cursor:pointer;height:40px;position:absolute;right:0;top:0;width:40px}.submenu-toggle:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;bottom:0;content:"";display:block;height:0;margin:auto;top:0;width:0}.submenu-toggle[aria-expanded=true]:after{-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.submenu-toggle-text{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.is-drilldown{overflow:hidden;position:relative}.is-drilldown li{display:block}.is-drilldown.animate-height{-webkit-transition:height .5s;transition:height .5s}.drilldown a{background:#fefefe;padding:.7rem 1rem}.drilldown .is-drilldown-submenu{background:#fefefe;left:100%;position:absolute;top:0;-webkit-transition:-webkit-transform .15s linear;transition:-webkit-transform .15s linear;transition:transform .15s linear;transition:transform .15s linear,-webkit-transform .15s linear;width:100%;z-index:-1}.drilldown .is-drilldown-submenu.is-active{display:block;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);z-index:1}.drilldown .is-drilldown-submenu.is-closing{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.drilldown .is-drilldown-submenu a{padding:.7rem 1rem}.drilldown .nested.is-drilldown-submenu{margin-left:0;margin-right:0}.drilldown .drilldown-submenu-cover-previous{min-height:100%}.drilldown .is-drilldown-submenu-parent>a{position:relative}.drilldown .is-drilldown-submenu-parent>a:after{margin-top:-6px;position:absolute;top:50%}.drilldown .is-drilldown-submenu-parent>a:after,.drilldown.align-left .is-drilldown-submenu-parent>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;right:1rem;width:0}.drilldown.align-left .is-drilldown-submenu-parent>a:after{left:auto}.drilldown.align-right .is-drilldown-submenu-parent>a:after{left:1rem;right:auto}.drilldown .js-drilldown-back>a:before,.drilldown.align-right .is-drilldown-submenu-parent>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;width:0}.drilldown .js-drilldown-back>a:before{display:inline-block;margin-right:.75rem;vertical-align:middle}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}[data-whatinput=mouse] .dropdown.menu a{outline:0}.dropdown.menu>li>a{padding:.7rem 1rem}.dropdown.menu>li.is-active>a{background:0 0;color:#1779ba}.no-js .dropdown.menu ul{display:none}.dropdown.menu .nested.is-dropdown-submenu{margin-left:0;margin-right:0}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.vertical>li>a:after{right:14px}.dropdown.menu.vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}@media print,screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.medium-vertical>li>a:after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}@media print,screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.large-vertical>li>a:after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{left:auto;right:0;top:100%}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{left:auto;margin-top:-6px;position:absolute;right:5px;top:50%}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{left:auto;top:100%}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{left:100%;right:auto}.is-dropdown-submenu{background:#fefefe;border:1px solid #cacaca;display:none;left:100%;min-width:200px;position:absolute;top:0;z-index:1}.dropdown .is-dropdown-submenu a{padding:.7rem 1rem}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{background:hsla(0,0%,100%,.25);height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;-webkit-transition:opacity .5s ease,visibility .5s ease;transition:opacity .5s ease,visibility .5s ease;visibility:hidden;width:100%;z-index:11}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{overflow:hidden;position:relative}.off-canvas{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:fixed;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.is-transition-push{z-index:12}.off-canvas.is-closed{visibility:hidden}.off-canvas.is-transition-overlap{z-index:13}.off-canvas.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-absolute{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:absolute;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-push{z-index:12}.off-canvas-absolute.is-closed{visibility:hidden}.off-canvas-absolute.is-transition-overlap{z-index:13}.off-canvas-absolute.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas-absolute.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.position-left{height:100%;left:0;overflow-y:auto;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-left,.position-left{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-left.has-transition-push{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.position-left.is-transition-push{-webkit-box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25)}.position-right{height:100%;overflow-y:auto;right:0;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-right,.position-right{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-right.has-transition-push{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.position-right.is-transition-push{-webkit-box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25)}.position-top{left:0;overflow-x:auto;top:0;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-top,.position-top{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-top.has-transition-push{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.position-top.is-transition-push{-webkit-box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25)}.position-bottom{bottom:0;left:0;overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-bottom,.position-bottom{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-bottom.has-transition-push{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.position-bottom.is-transition-push{-webkit-box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25)}.off-canvas-content{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-transition-overlap,.off-canvas-content.has-transition-push{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.off-canvas-content .off-canvas.is-open,.off-canvas-content.has-transition-push{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}@media print,screen and (min-width:40em){.position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-medium .close-button{display:none}.off-canvas-content .position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-medium .close-button{display:none}.off-canvas-content .position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-medium .close-button{display:none}.off-canvas-content .position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-medium~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-medium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-medium~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:64em){.position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-large .close-button{display:none}.off-canvas-content .position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-large .close-button{display:none}.off-canvas-content .position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}.position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-large .close-button{display:none}.off-canvas-content .position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-large~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-large .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-large~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:40em){.off-canvas.in-canvas-for-medium{background:0 0;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-medium.position-bottom,.off-canvas.in-canvas-for-medium.position-left,.off-canvas.in-canvas-for-medium.position-right,.off-canvas.in-canvas-for-medium.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-medium .close-button{display:none}}@media print,screen and (min-width:64em){.off-canvas.in-canvas-for-large{background:0 0;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-large.position-bottom,.off-canvas.in-canvas-for-large.position-left,.off-canvas.in-canvas-for-large.position-right,.off-canvas.in-canvas-for-large.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-large .close-button{display:none}}html.is-reveal-open{overflow-y:hidden;position:fixed;width:100%}html.is-reveal-open.zf-has-scroll{overflow-y:scroll;-webkit-overflow-scrolling:touch}html.is-reveal-open body{overflow-y:hidden}.reveal-overlay{background-color:hsla(0,0%,4%,.45);bottom:0;left:0;position:fixed;right:0;top:0;z-index:1005}.reveal,.reveal-overlay{display:none;overflow-y:auto;-webkit-overflow-scrolling:touch}.reveal{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;margin-left:auto;margin-right:auto;padding:1rem;position:relative;top:100px;z-index:1006}[data-whatinput=mouse] .reveal{outline:0}@media print,screen and (min-width:40em){.reveal{min-height:0}}.reveal .column{min-width:0}.reveal>:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.reveal{max-width:75rem;width:600px}}.reveal.collapse{padding:0}@media print,screen and (min-width:40em){.reveal.tiny{max-width:75rem;width:30%}.reveal.small{max-width:75rem;width:50%}.reveal.large{max-width:75rem;width:90%}}.reveal.full{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}@media print,screen and (max-width:39.99875em){.reveal{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}}.reveal.without-overlay{position:fixed}.sticky,.sticky-container{position:relative}.sticky{-webkit-transform:translateZ(0);transform:translateZ(0);z-index:0}.sticky.is-stuck{position:fixed;width:100%;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{left:auto;position:relative;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.title-bar{background:#0a0a0a;color:#fefefe;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left,.title-bar-right{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{display:inline-block;font-weight:700;vertical-align:middle}.top-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.5rem}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{margin-right:1rem;max-width:200px}.top-bar .input-group-field{margin-right:0;width:100%}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}@media print,screen and (min-width:40em){.top-bar{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.top-bar .top-bar-left{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:auto}.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;margin-left:auto}}@media print,screen and (max-width:63.99875em){.top-bar.stacked-for-medium{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media print,screen and (max-width:74.99875em){.top-bar.stacked-for-large{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.top-bar-title{margin:.5rem 1rem .5rem 0}.top-bar-left,.top-bar-right,.top-bar-title{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.clearfix:after{clear:both}.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.align-spaced{-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.align-left.vertical.menu>li>a{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right.vertical.menu>li>a{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center.vertical.menu>li>a{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-top{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.align-self-top{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.align-bottom{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.align-self-bottom{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.align-middle{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.align-self-middle{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.align-stretch{-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.align-self-stretch{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch}.align-center-middle{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-webkit-align-content:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.small-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.small-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.small-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.small-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.small-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.small-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}@media print,screen and (min-width:40em){.medium-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.medium-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.medium-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.medium-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.medium-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.medium-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}@media print,screen and (min-width:64em){.large-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.large-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.large-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.large-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.large-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.large-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}.flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}@media print,screen and (min-width:40em){.medium-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.medium-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.medium-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.medium-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.medium-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.medium-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.medium-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.medium-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media print,screen and (min-width:64em){.large-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.large-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.large-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.large-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.large-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.large-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.large-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.large-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.hide{display:none!important}.invisible{visibility:hidden}.visible{visibility:visible}@media print,screen and (max-width:39.99875em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media print,screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.99875em){.show-for-medium{display:none!important}}@media print,screen and (min-width:40em)and (max-width:63.99875em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.99875em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media print,screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.99875em){.show-for-large{display:none!important}}@media print,screen and (min-width:64em)and (max-width:74.99875em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.99875em),screen and (min-width:75em){.show-for-large-only{display:none!important}}.show-for-sr,.show-on-focus{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.show-on-focus:active,.show-on-focus:focus{height:auto!important;overflow:visible!important;position:static!important;width:auto!important;clip:auto!important;white-space:normal!important}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.show-for-dark-mode{display:none}.hide-for-dark-mode{display:block}@media screen and (prefers-color-scheme:dark){.show-for-dark-mode{display:block!important}.hide-for-dark-mode{display:none!important}}.show-for-ie{display:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.show-for-ie{display:block!important}.hide-for-ie{display:none!important}}.show-for-sticky{display:none}.is-stuck .show-for-sticky{display:block}.is-stuck .hide-for-sticky{display:none}@font-face{font-family:fonticon;src:url(data:font/ttf;base64,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AG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAAFcmFkaW8McmFkaW8tYWN0aXZlFmNoZWNrYm94LWluZGV0ZXJtaW5hdGUIY2hlY2tib3gPY2hlY2tib3gtYWN0aXZlBHN3YXAGdW5mb2xkB2FjY291bnQDYWRkCWFwYXJ0bWVudAphcnJvdy1sZWZ0CmFycm93LWRvd24OYXJyb3ctZHJvcGRvd24MYXJyb3ctZHJvcHVwC2Fycm93LXJpZ2h0CGFycm93LXVwBWJlYWNoB3JlZnJlc2gOY2FsZW5kYXItdG9kYXkNY2FuY2VsLWZpbGxlZBNjaGVjay1jaXJjbGUtZmlsbGVkDGNoZWNrLWNpcmNsZQVjaGVjawxjaGV2cm9uLWxlZnQNY2hldnJvbi1yaWdodAZjYW5jZWwFY2xvdWQKY29sbGVjdGlvbgRjb3B5A2N1dAVwYXN0ZQpjcmVkaXRjYXJkCGNhbGVuZGFyBmRlbGV0ZQhkb3dubG9hZAV0aXRsZQltYWlsLW9wZW4EZWRpdAVlcnJvcg1lcnJvci1vdXRsaW5lCmNoZXZyb24tdXAMY2hldnJvbi1kb3duBWhlYXJ0BHNvcnQGZm9sZGVyFUZvcm1hdEFsaWduTGVmdEZpbGxlZARob21lBWluYm94BGluZm8MaW5mby1vdXRsaW5lBmxheWVycwhsb2NhdGlvbgRsb2NrBmxvZ291dARtYWlsDG1haWwtb3V0bGluZQRtZW51B21vbml0b3IPbW9yZS1ob3Jpem9udGFsDW1vcmUtdmVydGljYWwMbm90aWZpY2F0aW9uBm5ld3RhYgV1c2VycwhhZGQtdXNlcgR1c2VyBXBob25lBXBob3RvDXBob3RvLW91dGxpbmUEcGxheQtwbGF5LWNpcmNsZQVjbG9jawZ1bmxvY2sIZGF0YWJhc2UHbmV0d29yaxBkYXNoYm9hcmQtZmlsbGVkCHNldHRpbmdzC3N0YXItZmlsbGVkDHN0YXItb3V0bGluZQttYWludGVuYW5jZQRzZW5kBG5leHQIcHJldmlvdXMPd2FybmluZy1vdXRsaW5lElZpZXdIZWFkbGluZUZpbGxlZAp1bml2ZXJzaXR5BXVzYWdlBGhlbHAHd2FybmluZwdzdXBwb3J0BnNlYXJjaARsb2dzEWRhc2hib2FyZC1vdXRsaW5lEHN0YXItaGFsZi1maWxsZWQHbW9kdWxlcwR3b3JrBnVwbG9hZAR3aWZpBXRoZW1lBXNsYWNrCWRvY3MtbWFpbA5kb2NzLWNvbW11bml0eRBkb2NzLW9wZW4tc291cmNlD2RvY3MtZW50ZXJwcmlzZQ9kb2NzLWFsdGVybmF0b3INZG9jcy1vcGVyYXRvcgxkb2NzLW1hbmFnZXIPZG9jcy1tb25pdG9yaW5nEmRvY3MtY2hldnJvbi1yaWdodAlkb2NzLWluZm8MZG9jcy13YXJuaW5nEWRvY3MtY2hldnJvbi1sZWZ0EmRvY3MtbWVudS1jb2xsYXBzZRBkb2NzLXRodW1icy1kb3duDmRvY3MtdGh1bWJzLXVwBmdpdGh1YghpbnN0YW5jZQVwYXVzZQRzdG9wBXJlc2V0A2V5ZQ5zdGFjay1vdmVyZmxvdxBkb2NzLW5zcWwtZ3VpZGVzCmRvY3MtY2xvdWQUZG9jcy1nZXR0aW5nLXN0YXJ0ZWQJZG9jcy1ibG9nD2RvY3MtY29udHJpYnV0ZQ1kb2NzLXRyYWluaW5nDWRvY3MtY29tbWFuZHMSZG9jcy1jb25maWd1cmF0aW9uEWRvY3MtZW50ZXJwcmlzZS1tAAAAAA==) format("truetype"),url(data:application/vnd.ms-fontobject;base64,DGoAAGRpAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAR6Y6mAAAAAAAAAAAAAAAAAAAAAAAABAAZgBvAG4AdABpAGMAbwBuAAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGYAbwBuAHQAaQBjAG8AbgAAAAAAAAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzJAI035AAABjAAAAGBjbWFwDQkD6gAAA/gAAAh+Z2x5ZrsuhAoAAA2AAABS0GhlYWQpKNtVAAAA4AAAADZoaGVhB9AEbAAAALwAAAAkaG10ePvQ//8AAAHsAAACDGxvY2GHT5u4AAAMeAAAAQhtYXhwAaMB3QAAARgAAAAgbmFtZcQVeswAAGBQAAACoHBvc3TAS12kAABi8AAABnIAAQAAA+gAAAAAA+j//wAAA+gAAQAAAAAAAAAAAAAAAAAAAIMAAQAAAAEAAJg6pkdfDzz1AAsD6AAAAADjEctQAAAAAOMRy1D//wAAA+gD0AAAAAgAAgAAAAAAAAABAAAAgwHRABYAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQD4AGQAAUAAAJ6ArwAAACMAnoCvAAAAeAAMQECAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOoB6oID6AAAAFoEQgAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPo//8AAAAFAAAAAwAAACwAAAAEAAACVgABAAAAAAFQAAMAAQAAACwAAwAKAAACVgAEASQAAAAEAAQAAQAA6oL//wAA6gH//wAAAAEABAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABigAAAAAAAAAggAA6gEAAOoBAAAAAQAA6gIAAOoCAAAAAgAA6gMAAOoDAAAAAwAA6gQAAOoEAAAABAAA6gUAAOoFAAAABQAA6gYAAOoGAAAABgAA6gcAAOoHAAAABwAA6ggAAOoIAAAACAAA6gkAAOoJAAAACQAA6goAAOoKAAAACgAA6gsAAOoLAAAACwAA6gwAAOoMAAAADAAA6g0AAOoNAAAADQAA6g4AAOoOAAAADgAA6g8AAOoPAAAADwAA6hAAAOoQAAAAEAAA6hEAAOoRAAAAEQAA6hIAAOoSAAAAEgAA6hMAAOoTAAAAEwAA6hQAAOoUAAAAFAAA6hUAAOoVAAAAFQAA6hYAAOoWAAAAFgAA6hcAAOoXAAAAFwAA6hgAAOoYAAAAGAAA6hkAAOoZAAAAGQAA6hoAAOoaAAAAGgAA6hsAAOobAAAAGwAA6hwAAOocAAAAHAAA6h0AAOodAAAAHQAA6h4AAOoeAAAAHgAA6h8AAOofAAAAHwAA6iAAAOogAAAAIAAA6iEAAOohAAAAIQAA6iIAAOoiAAAAIgAA6iMAAOojAAAAIwAA6iQAAOokAAAAJAAA6iUAAOolAAAAJQAA6iYAAOomAAAAJgAA6icAAOonAAAAJwAA6igAAOooAAAAKAAA6ikAAOopAAAAKQAA6ioAAOoqAAAAKgAA6isAAOorAAAAKwAA6iwAAOosAAAALAAA6i0AAOotAAAALQAA6i4AAOouAAAALgAA6i8AAOovAAAALwAA6jAAAOowAAAAMAAA6jEAAOoxAAAAMQAA6jIAAOoyAAAAMgAA6jMAAOozAAAAMwAA6jQAAOo0AAAANAAA6jUAAOo1AAAANQAA6jYAAOo2AAAANgAA6jcAAOo3AAAANwAA6jgAAOo4AAAAOAAA6jkAAOo5AAAAOQAA6joAAOo6AAAAOgAA6jsAAOo7AAAAOwAA6jwAAOo8AAAAPAAA6j0AAOo9AAAAPQAA6j4AAOo+AAAAPgAA6j8AAOo/AAAAPwAA6kAAAOpAAAAAQAAA6kEAAOpBAAAAQQAA6kIAAOpCAAAAQgAA6kMAAOpDAAAAQwAA6kQAAOpEAAAARAAA6kUAAOpFAAAARQAA6kYAAOpGAAAARgAA6kcAAOpHAAAARwAA6kgAAOpIAAAASAAA6kkAAOpJAAAASQAA6koAAOpKAAAASgAA6ksAAOpLAAAASwAA6kwAAOpMAAAATAAA6k0AAOpNAAAATQAA6k4AAOpOAAAATgAA6k8AAOpPAAAATwAA6lAAAOpQAAAAUAAA6lEAAOpRAAAAUQAA6lIAAOpSAAAAUgAA6lMAAOpTAAAAUwAA6lQAAOpUAAAAVAAA6lUAAOpVAAAAVQAA6lYAAOpWAAAAVgAA6lcAAOpXAAAAVwAA6lgAAOpYAAAAWAAA6lkAAOpZAAAAWQAA6loAAOpaAAAAWgAA6lsAAOpbAAAAWwAA6lwAAOpcAAAAXAAA6l0AAOpdAAAAXQAA6l4AAOpeAAAAXgAA6l8AAOpfAAAAXwAA6mAAAOpgAAAAYAAA6mEAAOphAAAAYQAA6mIAAOpiAAAAYgAA6mMAAOpjAAAAYwAA6mQAAOpkAAAAZAAA6mUAAOplAAAAZQAA6mYAAOpmAAAAZgAA6mcAAOpnAAAAZwAA6mgAAOpoAAAAaAAA6mkAAOppAAAAaQAA6moAAOpqAAAAagAA6msAAOprAAAAawAA6mwAAOpsAAAAbAAA6m0AAOptAAAAbQAA6m4AAOpuAAAAbgAA6m8AAOpvAAAAbwAA6nAAAOpwAAAAcAAA6nEAAOpxAAAAcQAA6nIAAOpyAAAAcgAA6nMAAOpzAAAAcwAA6nQAAOp0AAAAdAAA6nUAAOp1AAAAdQAA6nYAAOp2AAAAdgAA6ncAAOp3AAAAdwAA6ngAAOp4AAAAeAAA6nkAAOp5AAAAeQAA6noAAOp6AAAAegAA6nsAAOp7AAAAewAA6nwAAOp8AAAAfAAA6n0AAOp9AAAAfQAA6n4AAOp+AAAAfgAA6n8AAOp/AAAAfwAA6oAAAOqAAAAAgAAA6oEAAOqBAAAAgQAA6oIAAOqCAAAAggAAAAAAAABGAJ4AwgDmARABLAFIAZ4BtAIIAiACNgJEAlICaAJ+AsIC/gMqA2QDlgPoA/oEDAQeBDgEZASYBMoFWAWWBcAF/gYeBjYGSAZwBpAGwgcSByQHNgdmB4IHogfKB+IIEAhCCJIIsgj0CS4JWAmCCbAJyAn0CiAKTgp+Cq4LBAtCC3ILqgvQC/4MDAxWDKQM9g2+DnAOmA8WDzIPXg+ED5gPrA/AD+IQAhAgEGgQuhDSEUIRfBHAEfASFhJGEnQSphLmEyATmBPwFIoWQBcWF/IZ7hp2GyAbNBuuHC4cQhyKHOwdTB3YHhIeJh40Hngewh8IH4YgtCD0IZQjWiRIJMwnhCloAAIAAAAAA5UDlQAUACkAAAEiBwYHBhQXFhcWMjc2NzY0JyYnJgMiJyYnJjQ3Njc2MhcWFxYUBwYHBgH0cWFfNzk5N19h4mFfNzk5N19hcVtNTCwtLSxMTbZNTCwtLSxMTQOVOTdfYeJhXzc5OTdfYeJhXzc5/RItLExNtk1MLC0tLExNtk1MLC0AAAAAAwAAAAADlQOVAAwAIQA2AAABIg4BFB4BMj4BNC4BJyIHBgcGFBcWFxYyNzY3NjQnJicmAyInJicmNDc2NzYyFxYXFhQHBgcGAfQ5Xzg4X3JfODhfOXFhXzc5OTdfYeJhXzc5OTdfYXFbTUwsLS0sTE22TUwsLS0sTE0CxDhfcl84OF9yXzjROTdfYeJhXzc5OTdfYeJhXzc5/RItLExNtk1MLC0tLExNtk1MLC0AAAACAAAAAANrA2wADwATAAABISIGFREUFjMhMjY1ETQmAyE1IQMY/bgiMTEiAkgiMTF2/mABoANrMSL9uCIxMSICSCIx/l9UAAACAAAAAANrA2wAAwATAAABESERJSEiBhURFBYzITI2NRE0JgMY/bgCSP24IjExIgJIIjExAxj9uAJIUzEi/bgiMTEiAkgiMQACAAAAAANrA2sADwAVAAABISIGFREUFjMhMjY1ETQmASc3FwEXAxj9uCIxMSICSCIxMf5n0TuWATw7A2sxIv24IjExIgJIIjH9udA7lQE8OwAAAAACAAAAAANrAxgABgANAAABBxc1ITUhJScVIRUhFQEjpqYBJP7cAkim/twBJAIep6d9VNCnfVR9AAIAAAAAArQDawAFAAsAAAEXNycHFxMnBxc3JwH0hDu/vzuEhDu/vzsC9YQ7v787/oKEO7+/OwAAAwAAAAADlQOVABQAIQA0AAABIgcGBwYUFxYXFjI3Njc2NCcmJyYHMh4BFA4BIi4BND4BEyInJic2NzY3PgEXFhcWFwYHBgH0cWFfNzk5N19h4mFfNzk5N19hcSI5IiI5RDkiIjkiTUNBKQEuJz44Wzg/Jy4BKUFDA5U5N19h4mFfNzk5N19h4mFfNzl9IjlEOiEhOkQ5Iv2wJSM+Jx8bEQ4BDxEbHyc+IyUAAAEAAAAAAxgDGAALAAABIxUjNSM1MzUzFTMDGPpU+vpU+gHK+vpU+voAAAAADAAAAAADawNrAAsADwATABcAGwAfACMAJwArAC8AMwA3AAABESEVIxEhNTMVIREBIzUzNSM1MzUjNTMXIzUzNSM1MzUjNTMTIzUzNSM1MzUjNTMTIzUzNSM1MwLE/mCnAU1UAU39uVRUVFRUVKZTU1NTU1OnU1NTU1NTp1RUVFQCHgFNp/25p6cBof6yVFNTVFP6U1RTU1T+X1NUU1NU/bhUU1MAAAAAAQAAAAADQgNCAAgAAAEhNycJATcnIQNB/gXpO/6zAU076QH7Ah7pOv6z/rM66QAAAQAAAAADQgNCAAgAAAEnBxEjEScHAQNBOulU6DsBTQH0O+kB+/4F6Tv+swABAAAAAALFAl0AAgAAARc3ASTQ0AJc0NAAAAAAAQAAAAACxQJxAAIAAAE3FwEk0NABodDQAAAAAAEAAAAAA0IDQgAIAAABBxchFSEHFwEB9Dvp/gUB++k7AU0DQTrpVOk6AU0AAQAAAAADQgNCAAgAABMXNxEzERc3Aac66VToO/6zAfQ76f4FAfvpOwFNAAAEAAAAAANrA3oAAwAOABkAIwAAATcBBwM3JicmBwYHNh4BJQYHBhcWFzcuAjcHBhcWFzcmJyYCIzwBDDxZd1Fua2tuUVKrn/5jURwcHB1Rd0FIChwBDC8wYe5gcnABiTz+8zsB+3dRHRwcHFEbCkg2UW5ra25Rd0Gfq1MBX29zYO9gMC8AAAAAAgAAAAADvwNCABIAJQAAAQczFA4BIyInBxYzMjc2NzY1MyE0PgEzMhc3JiMiBwYHBhUjFzcDGKd9Q3NEPzY8UWBbTUwsLX39PENzRD82PVJgW01MLC19pqcCm6dEc0MdPTMtLExNW0RzQx09My0sTE1bp6cAAAAAAgAAAAADlQO/ABcAGwAAASM1IxUhNSMVIyIGFREUFjMhMjY1ETQmAyERIQNBKVT+YFQpIzExIwKaIzExI/1mApoDa1NTU1MxIv1lIjExIgKbIjH9EgIeAAIAAAAAA5UDlQAUACAAAAEiBwYHBhQXFhcWMjc2NzY0JyYnJhMHJwcnNyc3FzcXBwH0cWFfNzk5N19h4mFfNzk5N19hXzqWljqVlTqWljqVA5U5N19h4mFfNzk5N19h4mFfNzn9yTqVlTqWljqVlTqWAAAAAgAAAAADlQOVABQAGgAAASIHBgcGFBcWFxYyNzY3NjQnJicmAyc3FwEXAfRxYV83OTk3X2HiYV83OTk3X2HE0TuWATw7A5U5N19h4mFfNzk5N19h4mFfNzn9j9A7lQE8OwAAAAMAAAAAA5UDlQAFABoALwAACQEnBxcBAyIHBgcGFBcWFxYyNzY3NjQnJicmAyInJicmNDc2NzYyFxYXFhQHBgcGArP+7pY70QFN+nFhXzc5OTdfYeJhXzc5OTdfYXFbTUwsLS0sTE22TUwsLS0sTE0CrP7ulTvQAU0BJDk3X2HiYV83OTk3X2HiYV83Of0SLSxMTbZNTCwtLSxMTbZNTCwtAAAAAQAAAAADYwMMAAUAAAEnBxcBJwFurTvoAfQ6AVOtOukB9DoAAQAAAAACjwLuAAUAAAEnBxc3JwKOOvr6Or4Cszv6+ju/AAAAAQAAAAACjwLuAAUAAAEHFwcXNwGUOr6+OvoC7ju/vzv6AAAAAQAAAAADGAMYAAsAAAEnBycHFwcXNxc3JwMYO+npO+npO+npO+kC3Tvp6Tvp6Tvp6TvpAAEAAAAAA+gDQgAZAAABLgEnJiMiBwYHDgIVFB4BMyEyPgE1NC4BAyYOWD9CS1lLSSg+ZjtDc0QCHjhgODNZAkZHcyAhLi5MB0VtP0RzQzhfOTZcOQAAAAADAAAAAAOVA5UADwAUAB0AAAERNCYjISIGFREUFjMhMjYlFzcXIQMRFBYzITUhEQOVMSP+DCIxMSIB9CMx/jVVfKb+DPoxIwJH/bkBTQH0IzExI/4MIjExyXGb0QGh/bkjMVQCRwAAAAMAAAAAA4ADvwAIABgAHAAAASEiBhURMxEhFyEiBhURFBYzITI2NRE0JgMhESECsP4MIzFUAfR9/jUiMTEiAcsiMTEi/jUBywO+MSL9uQJHUzEj/bkiMTEiAkcjMf1lAkcAAAAIAAAAAAOVA5UACAARABoAPQBGAE8AWABdAAA3MjY0JiIGFBYBMjY0JiIGFBYnMjY0JiIGFBY3NjU0LgEiDgEUHgEzMjcXByYjIg4BFB4BMj4BNTQnNwEzNQEiJjQ2MhYUBgMiJjQ2MhYUBhMiJjQ2MhYUBgEHFwE1+iMwMEYwMAEdCQwMEgwM8SMwMEYwMLsPLU1aTS0tTS0kIGNjICQtTS0tTVpNLQ9iASR9/WUiMTFEMTEiIjExRDEx2AkMDBIMDAEb+lMBJKcwRjAwRjABOAwSDAwSDLwwRjAwRjAPICQtTS0tTVpNLQ9iYg8tTVpNLS1NLSQgY/7cKgH0MEYwMEYw/gwwRjAwRjABOAwSDAwSDAGM+lMBIyoAAAMAAAAAA2sDvwAVAB4AJgAAASMuASIGByMiBhURFBYzITI2NRE0JiEyFhQGIiY0NgEhETMVITUzAxiuDkBQQA6uIjExIgJIIjEx/roRGRkiGRkBNf24VAGgVANrJS4uJTEi/WUiMTEiApsiMRgjGBgjGP0SApt9fQAAAAADAAAAAAOVA0IADwATABcAAAEhIgYVAxQWMyEyNjURNCYDITUhNSE1IQNB/WYjMAExIwKaIzExI/1mApr9ZgKaA0EwI/4MIzAwIwH0IzD9ufqnUwAFAAAAAANrA5UAAwAHAAsAIwAnAAABIxUzNyMVMzcjFTMTIzUjFSE1IxUjIgYVERQWMyEyNjURNCYDIREhAXdTU6dUVKZTU1QqU/6yUyoiMTEiAkgiMTEi/bgCSAIeVFRUVFQBd1RUVFQxIv25IzExIwJHIjH9ZgHKAAAAAgAAAAADGANrAAkAEQAANxQWMyEyNjURISUjJyMHIxUh+jEiAU4iMf4MAh6SKtAqkgJI0CIxMSIB9H0qKlMAAAIAAAAAAxgDawADAAoAADchNSEBIzUjFSMB0AJI/bgCSKf6pwEkp1MBd/r6/twAAAEAAAAAAxgDQgAHAAATFTMRMxEzNdDmfeUDQX3+DAH0fQAAAAIAAAAAA5UDvwAQABQAAAE0JiclBQ4BFREUFjMhMjY1LQIFA5QVEv6H/ocSFjEjApojMf5f/qgBWAFYApsWJQzc3AwlFv5fIjExItDXysoAAgAAAAADbANsAAQADgAAExUzAScFNjQvASYiDwEXfZwBzZwBFQwMYgwiDE2dARmcAc2cIwwiDGIMDEydAAAAAAMAAAAAA5UDlQAUABgAHAAAASIHBgcGFBcWFxYyNzY3NjQnJicmAyM1MzUjNTMB9HFhXzc5OTdfYeJhXzc5OTdfYUdUVFRUA5U5N19h4mFfNzk5N19h4mFfNzn9j1NT+gAAAAAEAAAAAAOVA5UAAwAHABwAMQAAATMVIxEzFSMTIgcGBwYUFxYXFjI3Njc2NCcmJyYDIicmJyY0NzY3NjIXFhcWFAcGBwYBylRUVFQqcmFeNzk5N15h42FeODk5OF5hcVtNTCwtLSxMTbZNTCwtLSxMTQF3UwGg+gHLOTdfYeJhXzc5OTdfYeJhXzc5/RItLExNtk1MLC0tLExNtk1MLC0AAQAAAAAC7gKPAAUAAAEHFzcXNwH0+ju/vzsCjvo6vr46AAAAAQAAAAAC7gKPAAUAAAEHJwcXNwKzv787+voCjr6+Ovr6AAAAAQAAAAADlQNzABwAACUnIyYnJicmNTQ+ATMyFhc+ATMyHgEVFAcGBwYHAfQ8AYc0VSctPWlANWQiImQ2P2k9LSdUNYZ2N3o2VkNMSz9pPS4pKS49aT9KTUJXNXoAAAAAAwAAAAADawLuAAMABwALAAAlMzUjARUhNQEhNSEBoaam/twC7v2PAfT+DPpTAaFTU/7cVAAAAAABAAAAAAOVA0IAEQAAASMiBhUDFBYzITI2NRE0JiMhAaH6IzABMSMCmiMxMSP+swNBMSL+DCIxMSIBoSIxAAAABQAAAAADawNrAAMABwALAA8AEwAAASEVIREhFSEFITUhESE1IREVITUCcf4MAfT+DAH0/gwC7v0SAu79EgLuAXdTAaBTp1T+X1MCm1NTAAABAAAAAAOVA2sACgAAJTUzFTMRMwkBMxEBoabRff5f/l99p/r6AU0Bd/6J/rMAAAACAAAAAANsA2wADwAbAAABISIGFREUFjMhMjY1ETQmAyMUDgEiLgE1IxEhAxj9uCMwMCMCSCIxMSKnIjlEOSKnAkgDazEi/bgiMTEiAkgiMf4MIjkiIjkiAaEAAAMAAAAAA5UDlQAUABgAHAAAASIHBgcGFBcWFxYyNzY3NjQnJicmAyM1MzUjNTMB9HFhXzc5OTdfYeJhXzc5OTdfYUdUVFRUA5U5N19h4mFfNzk5N19h4mFfNzn9j/pTUwAAAAAEAAAAAAOVA5UAAwAHABwAMQAAATMVIxUzFSMTIgcGBwYUFxYXFjI3Njc2NCcmJyYDIicmJyY0NzY3NjIXFhcWFAcGBwYBylRUVFQqcWFfNzk5N19h4mFfNzk5N19hcVpOTCwtLSxMTrROTCwtLSxMTgLEU1P6AnE5N19h4mFfNzk5N19h4mFfNzn9Ei0sTE60TkwsLS0sTE60TkwsLQAAAgAAAAADawOVAAUACgAALQEHCQEnBSU3CQEB9P7NRAF3AXdE/s0BM0T+if6J5O40/twBJDWG7zUBJP7cAAAAAAIAAAAAAxgDlQAbACgAAAEiBwYHBhUUFxYXFhcxNzY3Njc2NzY1NCcmJyYDIi4BND4BMh4BFA4BAfRPREInKEw2ViwgHiYjMSUvGR8oJ0JETxwwHBwwODAcHDADlSgnQkRPYY1kcDgkJC0vQz5OQ089T0RCJyj+dBwwODAcHDA4MBwAAAIAAAAAAzADtwAaACUAAAEjNTQuAgYHBh0BIyIGFREUFjMhMjY1ETQmIyE1NDY3NhYXFhUC9R80XHJzJCYfFyMjFwH9FyMji/7rPjIhThocAndROWZCDTo1OD5aIhj+MBcjIxcB0BgiVTNSCgciHyMpAAAAAgAAAAADlQNrAAgAFgAAAQcXIRUhBxc3ASE1ISIGFREUFjMhNSECxDpr/lgBqGs60f0SAU3+syMxMSMBTf6zAsQ6bFRrO9ABJFMxIv24IjFTAAAAAgAAAAADlQNCAA8AFQAAASEiBhUDFBYzITI2NRE0JgcFJTUFJQNB/WYjMAExIwKaIzExI/6z/rMBTQFNA0ExIv4MIjExIgH0IjGm0dFT0NAAAAAAAwAAAAADlQNCAA8AFAAXAAABISIGFQMUFjMhMjY1ETQmAyERBSUFJSEDQf1mIzABMSMCmiMxMSP9ZgFNAU3+s/6zApoDQTEi/gwiMTEiAfQiMf25AaHR0X3QAAADAAAAAANrAu4AAwAHAAsAADchNSE1ITUhNRUhNX0C7v0SAu79EgLu+lN9VNBTUwACAAAAAAOVA2sAFQAZAAABISIGFREUFjsBBxUhNSczMjY1ETQmAyERIQNB/WYjMTEjfSoB9Cp9IzExI/1mApoDazEi/jUiMSpTUyoxIgHLIjH94gHLAAAAAwAAAAADQgJIAAgAEQAaAAATIgYUFjI2NCYhIgYUFjI2NCYhIgYUFjI2NCb6IjExRDExAdIiMTFEMTH+5CIxMUQxMQJHMUQxMUQxMUQxMUQxMUQxMUQxAAMAAAAAAkgDQgAIABEAGgAAATI2NCYiBhQWFyIGFBYyNjQmByIGFBYyNjQmAfQiMTFEMTEiIjExRDExIiIxMUQxMQKbMUQxMUQxVDFEMTFEMfoxRDExRDEAAAAAAgAAAAADQgOLAAYAHgAAJTI2NSMUFiU1NCYnJic1NCYiBh0BBgcOAR0BBxUhNQH0IjGmMAEdLCorOiU0JDsrKixTAppeMSIiMfrQQG4lJw0dGiQkGh0NJyVtQdBUKSkAAgAAAAADawNrABIAGwAAJSERITUhIgYVERQWMyEyNjURIwMVMwEXARUzEQMY/bgBJP7cIjExIgJIIjFT0Zb+ZjsBmlPQAkhTMSL9uCIxMSIBJAF3U/5mOwGalgEkAAAABAAAAAADvwMYAAwAGQAoADcAAAEyPgE0LgEiDgEUHgEhMj4BNC4BIg4BFB4BFyIHBgcGHQEhNTQnJicmISIHFhcWHQEzNTQnJicmApsiOSEhOUQ6ISE6/tQiOiEhOkQ5IiI5IjZASi02Akc2LUpBARgQGScUF/o2LUpAAh4hOkQ5IiI5RDohITpEOSIiOUQ6IVQQEh8kLGlpLCQfEhACHCIlLWhpLCQfEhAAAAMAAAAAA78DQgAMABgAJwAAATI+ATQuASIOARQeASU1IxUjFTMVMzUzNRciBwYHBh0BITU0JyYnJgJxLU0tLU1aTS0tTf62U319U336PkpUND0Cmj00VEoB9C1MW00sLE1bTC1TfX1TfX1TphMVIykzU1MzKSMVEwAAAAACAAAAAANCA0IADAAbAAABMj4BNC4BIg4BFB4BFyIHBgcGHQEhNTQnJicmAfQtTS0tTVpNLS1NLT5KVDQ9Apo9NFRKAfQtTFtNLCxNW0wtUxMVIykzU1MzKSMVEwAAAAADAAAAAALuA78AEwAcACAAAAEhIg4BFREUHgEzITI+ATURNC4BAyImNDYyFhQGNyERIQKG/rMdMBwcMBwBThwwHBwwwxokJDQlJaL+iQF3A74cMBz9PBwwHBwwHALEHDAc/JUlNCQkNCWnAkcAAAAAAgAAAAADawNsAA8AFAAAJRE0JiMhIgYVERQWMyEyNgEXNxchA2sxIv24IjExIgJIIjH992iSvP240AJIIjExIv24IjExAQh+vPoAAAMAAAAAA2sDbAADABMAGAAAAREhESUhIgYVERQWMyEyNjURNCYDBycHIQMY/bgCSP24IjExIgJIIjEx7X1ZfQH0Axj9uAJIUzEi/bgiMTEiAkgiMf6PoWyhAAAAAQAAAAADGAMYAAIAAAERAQFNAcsDGP24ASQAAAMAAAAAA5UDlQACABcALAAAATcnNyIHBgcGFBcWFxYyNzY3NjQnJicmAyInJicmNDc2NzYyFxYXFhQHBgcGAaH6+lNxYV83OTk3X2HiYV83OTk3X2FxWk5MLC0tLExOtE5MLC0tLExOATm7u+Y5N19h4mFfNzk5N19h4mFfNzn9Ei0sTE60TkwsLS0sTE60TkwsLQADAAAAAAOVA5UAFAApAC8AAAEiBwYHBhQXFhcWMjc2NzY0JyYnJgMiJyYnJjQ3Njc2MhcWFxYUBwYHBgMjFRc3JwH0cmFeNzk5N15h42FeODk5OF5hcVtNTCwtLSxMTbZNTCwtLSxMTUY/2x+7A5U5N19h4mFfNzk5N19h4mFfNzn9Ei0sTE22TUwsLS0sTE22TUwsLQId+oMzcAACAAAAAAMwA9AAJwA4AAABITU0Njc2HgEdATM1NCYnJicmBw4BHQEjIgYVERQWMyEyNjURNCYjAxQGIyEiJjURNDYzITIWFREC9f53PjIrTC5VNS0vOEI5OEMfFyMjFwH9FyMjFx8UEP6JDhYUEAF7DxUCX4IzUgoIIEQqKT8rWB8gBwYdHWtAhiMX/i8XIyMXAdEXI/40DhYUEAFPDhUTEP6xAAQAAAAAA5QDuwAiAEEAXwCEAAABJicuASIOAQcGBwYVERQXFhcWFx4BMjc2NzY3Njc2NRE0JwMGFQYHBgcGBwYiJyYnJicmJyY9ARYXHgEyNzY3Njc1BhUGBwYHBgcGIicmJyYnJicmPQEWFx4BMjY3Njc1BhUGBwYHBgcGIicmJyYnJi8BNzY3Njc2NzYyFxYXFhcWFxYVA2chPDePn49yIhQMDQ0MFCA8N4+gSUY4OiMTDA0sJQEFCBctMEBDlENAMC0XCAQCGSA3j59JRzgiFgEFCBctMEBDlENAMC0XCAQCGCE3j5+POCEYAQUIFy0xQEKUQkAwLxYIBAICBAgXLjBAQpRCQDEuFggFAQNmGhUSFBQlHBASFhj9uRkVEw8bFBMTCgoSExwPExUZAkctI/1pAgIHBhIPEQkJCQkRDxIGBwMBvQ0KExQKChMLDGcDAgcGEg8QCQkJCRAPEgYHAwK9DQsTFBQTCw1mAgIHBhMOEQkJCQkRDxIGBwQEBwYSDxAJCgoJEA8SBgcDAQAKAAAAAAOnA6UAFAAbACEAKwA9AE0AXABjAG0AdAAAJSInJicmNDc2NzYyFxYXFhQHBgcGEwYHNjc2NyEeARcmJzMWFxYXNjc2NyMlMzc2NzY1NCcmJyMUFhUUBwYFMzQ2NTQnJicjFAYVFBUWBzM0JjU0NzY3IwYVFBcWJTMmJyYnFgczJicmJwYHBgcjMzY3BgcGAfJ1ZmM6PT06Y2brZmM6PDw6Y2Y4Gz9PQkAk/W4kgVA+G04NGRkgIRgaDcUBH6cDBQEDAQMIpwYBAf7R6QYBAQTpBgLsqAYBAQSoDAICAhebJEBCTz/yxQ0aGCEgGRkN8JwbPk9CPzs8OmNm62ZjOj09OmNm62ZjOjwBGWtaETc0SUxnElprMDEuKiouMTBIDRcMExEeDhgQDzYPHQ0WFA82DxwOFRUPNg8dDRYUDzYPHA4VFTAkHg4Y30o0NhJabDAyLioqLjIwbFoSNjQAAAMAAAAAA2sDawAJABAAFwAAJSMiJjURNDY7ARMzMjY1ESElNTQmKwERAcr6IjExIvpU+iIx/rMBTTEi+n0xIgJIIjH9EjEiASRT0SIx/twAAgAAAAADewOFAEQAUQAAATY0Jzc+AS8BLgEPASYvAS4BKwEiBg8BBgcnJgYPAQYWHwEGFRQXBw4BHwEeAT8BFh8BHgE7ATI2PwE2NxcWNj8BNiYnBSIuATQ+ATIeARQOAQMeAgNVBQMDUAQOB2MiIg8BCwigBwsCDyEiZAcOA1AEAwZVBANVBQMDUAQOB2QhIg8CCwegCAsBDyMgZAcOA1AEAwb+gylFKChFUkUoKEUBzRMqEUIEDwaLBgUCKBkOagcKCgdqDhkoAgQHiwYPBEIWERYRQgQPBosGBQIoGQ5qBwoKB2oOGSgCBAeLBg8ELShFUkUoKEVSRSgAAQAAAAADlQOAAAkAAAEFAzclCwEFFwMB9AECReT+1HV1/tTkRAEEnAElxRoBFP7sGsX+2wAAAAACAAAAAAOVA4AACQATAAABJQsBBRcDJQUDDwE3Jz8BHwEHFwOV/tR1df7U5EQBAQECRL6dKoq2R0e3iyoCUhoBFP7sGsX+25ycASU7X7J4EKioEHiyAAAAAQAAAAADfwOIABEAAAEuAQcXBycGFhceATcBNwE2JgHxNJJBmmqaIBg0MYU+AVyD/qYZGwM8NRcgmmqaQpE0MRsX/qWDAVpAhgAAAAEAAAAAA78DawAFAAA3CQEDDQFUA2r8lgECcf2PfQF3AXf+3FNTAAACAAAAAALuAu4AAgAGAAA3LQEhETMR+gFi/p4BoVP6+vr+DAH0AAAAAgAAAAAC7gLuAAMABgAAEzMRIzcFEfpTU5IBYgLu/gz6+gH0AAAAAAQAAAAAA78DgAACAAUACQANAAAJASEJASElIxUzESMVMwH0ATr9jAE6/jYDlP5gVFRUVALa/eICxPzo0VQBTtEAAAAABAAAAAADQgMYAAMABwALAA8AABMhNSEVITUhNSE1ITUVITWnApr9ZgKa/WYCmv1mApoBd1P6VPpTp1RUAAAAAAIAAAAAA7YDZgAFAAwAABMVBSU1BRENASURMxHWAR4BHv7i/j4BwgFwUgHFpJ2dpJ0CPvb2yf7lAUgAAAIAAAAAA3oDegAPACwAAAEVHgEXFhUUBxc2NTQnLgEDIi4BNTQ3PgE3NQ4BBwYVFBcWFxYzMjc2NycOAQIbQWsfHxNmIi8uoYhKfkkfH2tBYaEuLzU0WFtqX1RRNmUnbgN6dgpMOjtEMjE8TFNkV1Rs/XNKfkpEOzpMCnYKbFRXZGpbWTQ1LCpKPDA3AAAAAAMAAAAAA5cDkwAUABgANAAAASIHBgcGFBcWFxYyNzY3NjQnJicmAyM1MzcHBgcGFSM1NDY/ATY0JiIGFSM0PgEyHgEVFAYB9nFiXjc5OTdeYuJhXjc5OTdeYUhTU1cmGgoNUxoXMxkxRTFTLUxbTSwUA5M5N15i4mFeNzk5N15h4mJeNzn9PFPwJxoVGywVIj0XNRdGMTEjLkwtLUwuGzAAAAAAAwAAAAADvwOAAAIABgAKAAA3IQETIzUzNSM1MyoDlP42KlRUVFRoAxj9ZVRTpwAABgAAAAADlwOTABQAHAApADEAOQBBAAABIgcGBwYUFxYXFjI3Njc2NCcmJyYTBy4BJzceAQEiLgE0PgEyHgEUDgEDFw4BByc+AQM3HgEXBy4BBSc+ATcXDgEB9nFiXjc5OTdeYuJhXjc5OTdeYcZ0EEEqMEFk/uMiOiEhOkQ5IiI5mjErQRB0GWR9dBBAKzBCZAGWMCtAEHQaZAOTOTdeYuJhXjc5OTdeYeJiXjc5/tcwK0AQdBlk/skiOUQ6ISE6RDkiAbR0D0ErMEJk/mswLEAQdBpkfnQQQSsxQWQAAAACAAAAAANhA2EAFgAjAAABIyc+ATU0LgEiDgEUHgEzMjY3FxUXNyUiLgE0PgEyHgEUDgECkCAMHyJJfJN9SEh9STJaJQvQPv42M1YyMlZmVzIyVwGWCyVaMkl9SEh9k3xJIh8MINA+0DJXZlYyMlZmVzIAAAQAAAAAA2sDlQADAAcACwAlAAABITUhNSE1ITUhNSEBNxc3FzcXNxc3FzcXEQcnBycHJwcnBycHJwLu/gwB9P4MAfT+DAH0/Y8/Pj8+Pz4/Pj8+Pz4+Pz4/Pj8+Pz4/Pj8BJFNTVFNT/Y8/Pz8/Pz8/Pz8/Pz8DQj8/Pz8/Pz8/Pz8/PwAAAAAEAAAAAANrA2wADwATABcAGwAAASEiBhURFBYzITI2NRE0JgERMxEhIxEzNSM1MwMY/bgiMTEiAkgiMTH9lvoBTvr6+voDazEi/bgiMTEiAkgiMf1lAkj9uAEkU9EAAAACAAAAAAOVA4AACQAPAAABJQsBBRcDJQUDBxEfAQcXA5X+1HV1/tTkRAEBAQJEvke3iyoCUhoBFP7sGsX+25ycASU7AYOoEHiyAAAABgAAAAADawMYAAMABwALAA8AEwAXAAABESMRATMRIwMRIxEBETMRISMRMxkBIxECY94BCN7eKt4BCN798N7e3gMY/vEBD/7xAQ/9uAEP/vEBD/7xAQ/+8QE5AQ/+8QAAAgAAAAADlQOVABkAHQAAASM1NCYrASIGHQEjIgYVAxQWMyEyNjURNCYhIzUzA0GmMSOmIzGmIzABMSMCmiMxMf7jpqYC7lMjMTEjUzEi/jUiMTEiAcsiMVMAAAADAAAAAANCA5UADQATABwAAAEhIgYVERQWMyEyNjURAyERIRUzBRc3FTM1FzcnAkf+syIxMCMB9CIxU/4MASTQ/l87QlRCO6cDlTEj/WYjMTEjAfT+DAKa0Po7Qq6uQzynAAAAAwAAAAADvwMvAA8AFQAjAAATFzY3NjIXFhc3JicmIgcGExc3LgEGJxc2NzYXFhc3JicmBwYqU0xjYNBgY0xTXXl1/nV58H19IltbyVQ4TUtLTThUT2xpaWsCcVNMKCcnKExTXTEwMDH+Vn19IhgYhFM5FBMTFDlTTx0bGx0AAAADAAAAAAPFA8AADwAfACUAACUnIzUnNzUzNxczFRcHFSMHNzM1Nyc1IycHIxUHFxUzNzI2NCYjAfeJvoiIvomIvoiIvohslmxslmxtlmxslm1TdnZTI4a+iYm/iIi/iYm+J2uXbG2XbGyXbWyXO3andQAAAAgAAAAAA5QDmQAIABQAHQApADIAPgBHAFMAAAEUBiImNDY7ARc0NjIWHQEUBiImNRMiJjQ2MhYdAQcyFhQGKwEiJjQ2MwU0NjIWFAYrAScUBiImPQE0NjIWFQMyFhQGIiY9ATciJjQ2OwEyFhQGIwEHM0czMyRWLDNHMzNHM1ckMzNHM1YjMzMj2SQzMyQCNTNHMzMkViwzRzMzRzNXJDMzRzNWIzMzI9kkMzMkAYUkNDRJM1glMzMl3SQ0NCQCQDNJNDQkWC00STMzSTRYJDQ0STNYJTMzJd0kNDQk/cAzSTQ0JFgtNEkzM0k0AAAAAAMAAAAAA7gDYgAPACMANQAAEyIGFREUFjMhMjY1ETQmIwU0PgEzITIeARURFA4BIyEiLgE1Ez4BFwkBNh4BBgcBBiInAS4BpRYfHxYCmhYeHhb88x81HwKaHzUfHzUf/WYfNR8GBxoKAZEBkQoaDwUK/l0IFAj+XQoFAyMfFv4MFh8fFgH0Fh81HzUfHzUf/gwfNR8fNR8CCQsEB/7nARkHBBYZCP7bBgYBJQgZAAAABQAAAAAD3wOJACQAMQA+AFEAagAAEz4BMyEyHgIdARQGIiY9ATQuAiMhIg4CHQEUBiImPQE0NgEiDgEUHgEyPgE0LgEHND4BMh4BFA4BIi4BAT4BFx4BHQEUBiImPQE0JicuAQM+ARceAxQOAgcGLgE2Nz4BNCYnLgFJG0knAUwnSTceEhoSFSYxG/60GzEmFRIaEh4BTSU+JSU+Sj4lJT7rNVtsWzU1W2xbNQJxAxcMQVISGhI4LA0NpgQWDSA4KRUVKTggDRYHDgwuOTkuDA4BXRweHjhJJ1MNEhINUxsyJhQUJjIbUw0SEg1TJ0kCCiQ+ST0lJT1JPiSGNVo1NVprWjU1Wv7tDA0DEWpDUg0SEg1SLkgMAxYB/g0NAwgkND5CPjQkCAQOGRYDC0pcSQsEFgAKAAAAAANsA8YAUABqAHcAhACeALIAygDkAP0BJQAAASIHDgEVFBcWFxYfAR4BNzM3Nh4BBg8BBiMHBiYvASYnJicmNTQ3Njc2MzIXHgIVFAcGDwEnFxUOAS8BLgI+AR8BFjY/ATY3NjU0LgEnJhMGBwYHBgcOASYnJj4BFxYyNj8CNjc+ARYBIg4BFB4BMj4BNC4BBzQ+ATIeARQOASIuATcOARYXFhceARQGBwYHDgEWFxY2NzY0Jy4BAxY3Njc2HgEHBgcGBwYnLgE+ATMTBi4BNScmJzQ2MhYXFh8BFB4BNzYeAQc3DgEmJyYnLgEnND4BFhcWHwEeAjY3Nh4BNw4BBwYHDgEmJyY+ARceATYnNzY3PgEWBycWHQEUBwYHDgEmJyYnJjc1NDU0Nh4BFRYfAR4CMzI2Jzc2Nz4BFgIKY1JOXBENGBEUEQMVDQEDBg8JAwcHAgQFGy4HEBURFw4RNDJYWmxRQ0FcMB8KCwoTEwcuGwcGDAMJDwYEDBYDCQwKHipROT2yAgQEAwUICCcrDgUGDgYKHBYBAwkLBwEKCP6WJ0QpKURNQicnQt8zVWFUMTFUYVUz0A0NAQkFDgcHBwcOBQkCDg0SJw0ODg0ncU9ESi0HFQkIGyMkJ0VdBwgCCgZFFjQkBwgDBQcGAQcNBhMdDwYPBQZUCissDAoEAwMCBQcGAQUIBgEOGBcGBBAJxAIDAgQKDC0rCQQKDwQJIhoBBggGAQkJAWcBAQEFCi8wCgUBAQEGBwYCAwMBCREKEBUBAQQDAQkJA6ArKpJXHldGaEpTRQ0OAgEFAw0QBAQCAQUfG0VTS2hHWyFjUlEuMBsaX4BKOvJMVEYDAwEbIAUBAQkPDQMEAQIODEVVS+84Q3JUFxj9RREhJhMfGRMTBhEGDgUGCxEOECs3HAUDBgImJ0NNQygnQ05DJ5ExVDIyVGJUMjJUmwMiJwgFBwMEBgQDBwUIJyICBBgYG0QbGBj+nwsVFzsJBRMJIBgYCxQMAQsMCP6lFgUqHS81GgQGBAMfPx8SHAUMBgUPBhAVEAwTGCAUUBMEBQEFAx48LQ8VBwkLCAENohRQEyAYEw0RFQcMAQcQBBcULDweBgMFBgccOCwPBw0JFxERFwkOCBANSyUDBgEEBBkxMxwQCxgRHEolBQQEAAAIAAAAAAPfA7AAGQAmAEcAVABhAHsAiACVAAABNhYfARYVETMyFhQGKwEiJjURJwcGLgE2NxcyFhURFAYiJjURNDYBNh8BHgEVERQGIiY1EScRFAYiJjURBxEUBiImNRE0NjcXMhYVERQGIiY1ETQ2MzIWFREUBiImNRE0NgU2HwEeAQ4BLwEHERQGKwEiJjQ2OwERNDY3FzIWFREUBiImNRE0NgM0NjMhMhYUBiMhIiYDHQgRB2YIGQsPDwszCw9STwkVCgUKbQsPDxYPD/7KDA3NBwkQFxCXEBcQlxAXEAgHdAsQEBcQENkMEBAXEBD+YwsMaAoGCRQKXUsPCzMLDw8LGQgHcgsPDxYPD6kPCwOdCw8PC/xjCw8CqgQCB2sHC/6yDxUPDwoBXlUtBgYSFQWXDwr+/goPDwoBAgoPAc4GBmcDDgf9lgsQEAsCWUv9XAsQEAsCpEv9pwsQEAsCagcOA2QQC/39CxAQCwIDCxAQC/39CxAQCwIDCxBrBgY2BRQTBgUvJP6lCg8PFQ8BUQcMBGcPCv7+Cg8PCgECCg/+fwoPDxUPDwAAAAUAAAAAA3EDuwAdADwAWAB3AJIAAAEuAScmIgcGBwYHBhURFBceAjI+ATc2PQEVETQnBT4BNzYyFx4BFxYXFhQHBgcGBwYHBiInJicmJyY0NwcWFxYXFjI3Njc2NxUUBwYHBgcGIicmJyYnJjUVFhcWFxYyNzY3NjcVFAcGBwYHBiInJicmJyYnJj0BARQHDgEHBiInJicmJyY9ARYXFhcWMjc2NzY3A0oiaUJGkURCMzYeJiYeaYWTh2sfKCj9ahldPkGNQj9hGQsFBAQFCxouMT5CikI+MS4aExMUHy80QkWSRUI1Lh8UGi0xPkGJQz0yLxoVHjA1QkaRRkE1LR8VGi8yPEOIQj0yLhoMBQQCpRMaYT9CjUE+MC0ZEx4uNkFHkUZBNi8dA3QWHwkJCQkPERUcIP14IRoVHhAQHRYaIQwJAoUiGiURHQgJCQgdEQcIBAcFCAgTDxAKCQkKEA8TDhQOWRUPEgoKCgoSDxWVCw8VEBMKCwsKExAVEApDFhAUDAsLDBQQFpUMERUTFQwMDAwVExUKCAcElv6QCQwRGwgICAgODBIMCZUXExYNDQ0NFhMXAAAACQAAAAADwQOzAQcBDgEbAScBMQE8AUcBVQFgAAABMCI0IwcmByInJicuAS8BNiYnNzQ3Nj8CMzI2IzU+Ai4CJwYHMQYjBgcUDwEGBw4BJyMHJyYnNSYnJjc1NDc1Ni4BBgcGHQEUFxYHFRYVBgcVIg8BDgEHJyMiJyYnNC8BLgEGJzUmIyYGBwYWFxUXFh8BFhceARU1FwcOARcHFA8BBgcmByMiBisBDgMXHgE3FjczNjc2MzY3MhczHgEXFhcHFhQHBgcVBgcGDwEGMjEjBhczBhYXFjMyNjc1PgE/ATY3Nj8BFjcWNzY3FxYXFh8BFhcUFx4BFz4CNzYnJicmJyYnNSYnJjY3Jz4BNxc1NjMWFxYzFhczFjcyNjcuASclBy8BNzMXNxYHJyYnJic2PwEWFycHBiYvASY9AR4BFyc3BxQGIyIvATYHHwEWDgEPASY2Nwc3MhYXFgYPAS4BBQYjIic3NhYXFh8BBgc3BgcnJj4CMxcGA6wDAgMICQQEGBgDBgELCBwiCAUSFAkPAQICAQUFAgMHCgYLCAMBBwUDAhATBAcDAQsjUWYFAgEDAwEJEREGCAMBAQMCBQ0aCTFXIggGBAQTEAMEBwMCAQgLBgsDBgMJBAcICRUSAgIIBCAZCAsHAxcYBAQRAwECAgYJBgMCAhAJBAMHCAcEBRYYBgUNDzsoERQHAgIJDQIEAQQEAwEBAgEBBQYKBAUJDgQBBAMDBwsEBwY6PyYlFhYGBwQLBwMBBAMEDwgGCQcBAwQBAgQGAgMOCQEBAgQ2URYLBAcXFQQFBwgIBAMJEAMBDgr+dCYlChoqGtkKBYYIBwcBAwRwFwpLaAsWBwQILFEg/CACFgoGBXQ2X20LAgUKCIsDFRYYhAgUAQEBATUlNwEsHR4tKzYEHggGBUMNDakhMz4BBw0PAokKAYsCAQEBAgMHAgUDAz56NQgHBhAMBAoEAQMKCwoJBQEBBgMGBwICARINAgIBBiA/CgsFBhgWCQQMCgkQBgQHCAwHCAgEBQMXGAcEDgUCCzIkBwMOEgICAwYGAQEBBwEFBQoWBwICBQQEDBACBwQCCAgydTsDAwUCBgIBAQIBBgkLBQoLAQEBAwMCCQQEMFMfDwoKAwcEFRMBBAMCBQcEAQEKFgUDCQgBAgILCxcUBwILFwEBCwUHCgIGFRYJCAcDAQcJAQEECAULCgMBCAYEAwMTFQQHAwsfXzsBAQQECAMEAwEBCwkKEAMnEhIoISEyKy0ZARAMCg0LUiYshlcDBgkDBgOKBSYgRwaMCA4DUjZqUBEIEQ4DHSxWJusoGQkEBwOAGEaDBg6BBgEFBAZ5AgR6MyF4ChEMDSIdAAAJAAAAAANcA6MAHwAvADMAQwBHAFcAWwBfAGMAABM0NjsBMhYUBisBESERIyImNDY7ATIWFREUBiMhIiY1EzQ2MyEyFh0BFAYjISImNTcVITUBNDY7ATIWHQEUBisBIiY1NxUzNQc0NjsBMhYdARQGKwEiJjU3FTM1NzMVIxUzFSONCgeoBwoKB5cCi5oICgoIqwcKCgf9UwcKqgoIAVcHCwsH/qkICiQBMv6JCgdnBgoKBmcHCiFGZwoHZwYKCgZnBwohRmbw8PDwA0wHCgoOCv0wAtAKDgoKB/0OBwoKBwM2CAsLCIkHCwsHd2Rk/t4HCgoHZwYKCgZXRkbgBwoKB2YHCgoHVkZG70SsRAAAAAcAAAAAA5oDowAQACAALAA8AEkAXgBrAAATHgEHBhYXFg4BJicuATc+AQEHBhQfARYyPwE2NC8BJiIHBh8BFj8BNi8BJg8BJjQ/ATYyHwEWFA8BBiInASIOARQeATI+ATQuAQU0NzY3NjIXFhcWFAcGBwYiJyYnJgU2Mh8BFhQGIi8BJjT6BgUDDwMQBAMNDwMWAxIEDgF9MQYG9gYRBjEGBvYGESsCAvYDAjECAvYDAkkLCzELHwv2CwsxCx8L/jg7Yzo6Y3ZjOjpj/qUnJ0FDnERBJicnJkFEnENBJycB0QUPBlIFCg8GUgUC1QMOBxw/GwYPBwMGI1IkBwX+1DEGEQb2BgYxBhEG9gZDAgP2AgIxAgP2AgJOCx8LMQsL9gsfCzELCwL9OmN2Yzo6Y3ZjOthOQ0EnJycnQUOcREEmJycmQURdBQVTBQ8KBVIFDwAAAAABAAAAAAMLA2sABQAAAQcJARcBAYtaASX+21oBfwNrWP7h/uFYAXcABAAAAAADqQOtABQAKQA2AFAAACUiJyYnJjQ3Njc2MhcWFxYUBwYHBgMiBwYHBhQXFhcWMjc2NzY0JyYnJgMiJj0BNDYyFh0BFAYHIiY1NDc+ATc+ARcyMxcWMxYdARQHDgEHBgHyd2ZjOjw8OmNm72ZjOjw8OmNmeGJTUTAwMDBRU8RUUS8xMS9RVGISFhYkFhYSEBgEAgQCChcLAwEHAwIIBAIEAgw/PDpjZu9mYzo8PDpjZu9mYzo8Ax0wMFFTxFRRLzExL1FUxFNRMDD+chYSnxIWFhKfEhagGBAMBAIIAgkFBgYCCAQQDAQCCAIMAAAAAAQAAAAAA88DogAWACoANwBUAAA3Ii4CNwE2NzY3NhcWFwEWFRQGBwYjCQEGFhcWMyEyNjU0JicBLgEHBgcTIiY9ATQ2MhYdARQGByImNTQ3PgE3NjM2MzIzFzIzFxYzFhQWFRQHDgGSIzghAREBYgwHCwstMy4hAV4RExIgNP55/qIKChAEDQLAERkCAv6iCiARCwYmExcXJhcXExEZBQIEAggECRADAgQDAQcDAgkEDQoOUyE7Qx0CTxEHDQUaDQwv/bUcIxkvDyYC3v20DyIJBBkQCAcGAkwPCAcFC/5wFxKnExcXE6cSF6cZEQwEAgkCCAQEBgIIBwwCEQwHBgABAAAAAAKqA2sABQAAJTcJAScBAlBZ/uABIFn+h31YAR8BH1j+iQAAAwAAAAADcQNsABMAHwAsAAABIiYvASY0PwE2MhYUDwEXHgEOASUhIiY0NjMhMhYUBhMiJjURNDYyFhURFAYBaQkSB7wODrwOJxwOm5sKBgsYAQ3+KBMcHBMB2BQbG6kUGxsnHBwBCwcHuw4mDrsOHCYOmpoKGxsQuxwmHBwmHP65HBMCjhQbGxT9chMcAAAAAwAAAAADiQN2AAoAIAA/AAABJisBETMWNjc1JgMRISIGBwMxBh4CNzMyFh0BFBcWFxMDDgEjIi4CPQEjIi4CNxM+ATMhNhYfAREHDgEnAy4OEj8/EhsDA7b+gg4VAjMCBQsPCNIQFRYNEcOLBBILHjcpF60YLSANAzMHPyoCBS5HBgEBBkcuAx8M/rIBGBH+Ef6sAWsSDv6yCBAMBwEWEJQfFgwGAQH+yAsLFio2Hm8UJS8YAU4qNQE9LgX+/AUuPQEAAAMAAAAAA4cDmQAjAC0ARQAAAT4BMzIeAh0BMzIeAgcDMTAxDgEjISIuAjURND4COwEHIyIGFREUFjsCITI2NxMwOQE2LgIrASImPQE0JyYnAwGzBRILHTcpF6sZLCAOBDMGPyr98hYpHxERHykWVgxKEBUVEEpJAXwOFQIzAQQLDwjREBUWDBKFA4IKDBYqNh5uFCUvGP60KTURHykWAQIWKR8RShYP/v4PFhINAUwIEAwHFRCTHxYMBv7UAAAAAAEAAAAAA6gDmQBdAAABIgcGBwYVFBceARcWNj0BBicmJyYnJicmJyY2FxYXFhcWNzY3JicmJyY1NDcmJyY/ATIXFhcWFzYyFzY3NhcxFgcGBxYVFAcGBwYHFhcWHQEUFjc+ATc2NTQnJicmAfd2ZWI5OyYmhlYPDkcnGgoFDA8MDwQFLhUNChoqHB4FFzklMBodLAcBAxAGCgwRFBkcNHE0MycUCQ8DAQcsHRowJjgNBwkPDlaFJiY7OWJlA5g7OWJldl1VUnkdAg0KUA0WDhwNEhcHCAkLAREMECoEAw4mFAYRFioxTUQwEhYlJgECBAkLEw4OIwgEAyYlFhIwRE4xKRYRBgsTFhx3Cg4DHXlSVV51ZWI5OwAIAAAAAAOVA2sABQAJAA0AEQAVABkAHQAhAAABNSERIREBIzUzNSM1MzUjNTM1IzUzASERIQcjFTMVIxUzAfT+XwNC/gz6+vr6+vr6+gGg/rMBTVOnp6enAsSn/RICR/4MVFNTVFNTVP24AaFTVFNTAAAAAAIAAAAAAu4DGAADAAcAADczESMhETMR+qenAU2n0AJI/bgCSAAAAAABAAAAAALuAu4AAwAAEyERIfoB9P4MAu7+DAAAAgAAAAADQgOVABcAKQAAATUHFzUyHgEVFA4BBxU+ATc2NTQnJicmATQ2NycGBwYVFBceARc1LgIB9KenRHNDN186UYUmJy0sTE3+qyciOy4ZGicmhVE6XzcDGH2np31Dc0Q8akYKVApdR0lTW05LLC7+sjNbIzsuPD5EU0lHXQpUCkZqAAAAAAMAAAAAA78DLQASAB8ALAAAASIHDgEHHgEXFjY3PgE3LgEnJgMiLgE0PgEyHgEUDgEDIg4BFB4BMj4BNC4BAfRmXVqJJCSJWl3MXVqJJCSJWl1mOV84OF9yXzg4XzkiOSIiOUQ5IiI5Ay0pJ45bW44nKQEoJ45bW44nKf33OF9yXzg4X3JfOAFNIjlEOSIiOUQ5IgAHAAAAAANbA7sAAwAHAAsADwATABcAHwAAARMHAwEhNSEtAQcFAQUHLQIHBQMTBwMTESERIxEhEQMdPkw+/i0Baf6XAXL+mAcBZ/7CAV0U/qMBn/7JKAE4WMtAy67+Jj0CVQO7/qANAWD8/UxiIUwhAQxcSl1EtUG2AZ/+2CsBKP5g/sgBOP6MAXQAAAYAAAAAA78DnwAPABMAIwAwAD0AUQAAAScmIg8BBhQfARYyPwE2NA8BFzcnNjIfARYUDwEGIi8BJjQ3ASIOARQeATI+ATQuAQU0PgEyHgEUDgEiLgETIREhNTQ2MhYdASERIRUUBiImNQFhAgYSBu0GBgIGEgbtBhftAu0gDSINAgwM7Q0iDQIMDAGxKkgpKUhURyoqR/8AOmJ0YTo6YXRiOjACbv2SDBEMAhz95AwRDAGhAgcH6wYSBgIGBuwGEQfrAuwfDQ0CDCMM7AwMAg0iDAHmKkZURyoqR1RGKpo5Yjk5YnNiOTliAcb8rYgJDAwJXwMBOAkMDAkAAAkAAAAAA8ADSQAUACkASgBpAIAAjQCaALUA1gAAAQYUFxYXFjMyNzY3NjQnJicmIgcGNzYyFxYXFhQHBgcGIyInJicmNDc2BzIWFRQXFhcWMjc2NzY1NDYyFhUUBwYHBiInJicmNTQ2BTIWFRQHBgcGIyInJicuAT4BFxYXFjMyNzY3NjU0NhcyFhUUBwYHBiMiJjQ2MzI3Njc2NTQ2ATIWHQEUBiImPQE0NiEyFhURFAYiJjURNDYBPgIyHgEXNjMyHgEUDgEjISImNTQ2NzYzMjciDgEVFxQGJyYjIgYUFjMhMj4BNC4BIyIHBiY9ATQuAQI4DAwOHThbVzAYDAkMDhk8oDwZEUCoQB0QFBMPGzNaXjogERcUEBgEBwwOHDuoNRkMCgYJBxMPHDivPh8RFgcBlwQHEg8cOVU/ODYbAwIGCAQXMjY8UTYXDQoGBQQHEhAcOFYEBwcEUzUYDAoG/nEEBwcIBwcBmAQHBwkGBv0gAjdaaFc1AxQUITskJDsh/hoyPRsZGiEb4DBSMAELBhofJzMyKAHmHDEeHjEcFxcFCi9PAwQLDwcIBgwMBggHEAsMChgYCx4aGQwOESUNCwcNDQcKDSURD50GBAgICggSEQgKCAkEBgYEEw4NCRISCQwPEwQGeQYFEg8OChYNDRMDCAgBAxAMDRUIDAkIBQZxBgQSDw0JEwYJBhIICgkIBAYBYAcE8QUGBgXxBAcHBP6eBAYGBAFiBAf+jDRYNDNWMwchOUI3IEIzIToREp8wUjAKBwYEET1XNRsuNS8cDAMHBgQwUjAAAAADAAAAAAOzA6wAAgASACYAAAENAQMiBhURFBYzITI2NRE0JiMFND4BMyEyHgEVERQOASMhIi4BNQFQAZD+cJAlNTUlAmklNTUl/Q4lPyUCaSU/JSU/Jf2XJT8lAtrr5gJ0NCX9myU0NCUCZSU0WSU+JSU+Jf2bJT4lJT4lAAAAAAcAAAAAA54DjQAPABMAFgAjACYAVgBjAAABPgEfAR4BBwEOAS8BLgE3CQEXCQEHNyc2HwEWBg8BBiY/ATYXBzcBNDYzITIWFAYjIREXMh8BNTQ2MyERIyImNDY7ATIWFREUBiMhFRQOASYvAiImNQE+AR8BHgEOAS8BLgECLwQPBlwHBAX+2QQOB1wHAwQBPP7uPAET/pcTb2QJCFwKAQpvChICEgIeCDH+/wsHATMHCwsH/uCkCAV2CwcBzYoICwsInQcLCwf+MwcKCwSQrwgKAeMFDwY+BgEJDwY+BgIDhAYDBDcEDwf+RwYDBDcEDwcBlv5mJQGa/oVuN0cEBTcFFgU3BQ0MbgkqMBgBygcLCw8L/dsCBXlsCAoCJwsPCwsH/bQICocGCQQCBJQBCwgCVQYCBTEFDwwBBDEFDwAAFgAAAAADtwOeABIAFgAjADAAPQBKAFcAZAB6AI0AoACwAMQA0QDgAO8A/wEPASkBLQE6AUcAABM3FwcOARURHgE3FwYnJicRNDYXJzcXAzIWHQEUBiImPQE0NjMyFh0BFAYiJj0BNDYnMhYdARQGIiY9ATQ2BTIWHQEUBiImPQE0NjMyFh0BFAYiJj0BNDYFNDY7ATIWFAYrASImATYyHwEeATI+ATIWFAcOASImLwEmNDciDgIdAR4DNzMWNjc1LgEnMhYXFQ4BJwYuAj0BND4CMwM3FwcOARURFBY3FwYmJxElJzcXFhcWFREUBwYjNTI2NRE0JgM0NjsBMhYUBisBIiYBNhYXFQ4BJzEiJj0BNDYXJiMxIgYdARQWMjY3NSYlNhcVNTIWHQEUDgEmJzU2NyIGBxUeATMxMjY9ATQmIwU3Fx4BFTEjMxEGBwYnNxY2NxUzJxURNCYvATcXBxMyFh0BFAYiJj0BNDYHNDY7ATIWFAYrASImZE8UUQ8TBQ4TAyYTEAce/jkVOc8IDAwQCwvzCQsLEQsLHQgLCxAMDAEZCAsLEAwMLwgMDBAMDP3wCwjICAsLCMgICwFEBhAGAgcQEhEMEAwGDB8iHwwCBjoLFRAIAQgQEwsCFyMDASQZKTsBBTomEiIbEA0bJBN3RRVIDxIXEAEgLgEBKE0MURoKBQwPIAwICPoLCNQIDAwI1AgLAYcoOwMDOygnNzdSEhgXISEvJAIC/WAdKCc4N1A7AgNiGCQCAiMZFyEhFwI9FE0aHRQUBw8TJQITDQUTExIQ5zkVOLkIDAwQCwvMCwnHCAsLCMcJCwJiLiIvBx4R/tEaDwEnAhQQKAE1HC8QJSEl/tkLCNEICwsI0QgLCwjRCAsLCNEICwQMCNAIDAwI0AgMBAsI0QgLCwjRCAsLCNEICwsI0QgLYggLCxAMDAHeBgYCBwcHDAsQBgwNDQwCBhDJCREVCx0KEw8HAQEdFhwZIic4KSIlMAEBDBkiEh0TJBsQ/vAsIC8HHhH+zg8WAScBLCABMjgZJRoNHBEf/sseERUnCxIBNRkX/p4ICwsQDAwCZQE2KCEnNwE3KB4nNzcQIBceFyEgGB0YLRsBExM3Jx4oNwE2KCEoDiAYHRggIRceFyDNIi0NMB3+zCcRFAInAQ4bAgMBAS8SHQgmJSEk/vkLCNEICwsI0QgLYggLCxAMDAAAAAAHAAAAAAPBA7EAFQAnADAAPQBpAJkApgAAATQmIyEiBhQWMyERISIGFBYzITI2NQUiDwEGFBYyPwEXFjI2NC8BJgEyFhQGIiY0Nhc0LgEiDgEUHgEyPgEXIiMhIg8BJyYrASIGHQEGHgEfARUXHgEyNzY3FhcWNxY2NxMzPgE3NDUuAQceARcOAQcjIgYVEQ4BJyMGJicuASIGBw4BIiYnNTQmIyIuAj0BNDY7ARcWMj8BBSIGHQEUFjI2PQE0JgPACwf9cAgKCggCfv2mBwsLBwJsBwv+pggGkQULDwWFhAUPDAWSBf5VHisrPCsrix0yPDIeHjI8Mh25AQL+/gsFEREFCzcZJAEIEAsFAQUpNRQEAwQEFRsbKwIBlBsnBAQnHw4UAwMUDqMHCwIUDQMNFAIBCg0LAQIVGxQDCwcFCAYDDwotGwUVBRwBeAgKCg8LCwN6BwsLDwr+TgoPCwsHqgWcBQ8KBo2NBgoPBZwFApIqPCsrPCpIHTIdHTI7MR4eMU8IHR0IIxn2CxcRBQLyAxohEAMEBAQQAQEjHAHOBCcaAwMbJiACFA4NFAMLB/4jDREBARENBgkIBg0REAz/BwsEBgkE+AoOLQkJLfoLCMIHCwsHwggLAAAAAAcAAAAAA8MDdgAPABMAIAAtADoATABZAAATNDYzITIWFREUBiMhIiY1ExEhEQEyFh0BFAYiJj0BNDY3MhYdARQGIiY9ATQ2BTQ2MyEyFhQGIyEiJgM+AR8BFhQPAQYuATY/AScuARM0NjsBMhYUBisBIiYlDQkDcgkNDQn8jgkNLANG/dkJDQ0SDQ30CQ0NEg0N/rANCQGSCgwMCv5uCQ1PBRIIyQsLyQgSCgQIra0IBPINCb8JDQ0JvwkNA18JDg0K/ZIJDQ0JAlj9vwJB/bQNCYEJDQ0JgQkNBQ0JaAkNDQloCQ2WCQ0NEg0NAlQIBAWCBhkGggUEEBIFb24FEv7aCQ0NEg0NAAgAAAAAA8EDsgBkAMsA3ADrAVEBtgHDAdAAAAE+AR8BHgEPARYXNzYWHwEWBg8BFh8BHgEVBxQGDwEGBxcWBg8BDgEvAQYHFRQGDwEGJi8BJicHDgEvAS4BPwEmJyYnBwYmLwEmNj8BJjcnLgE/AT4BHwE2NycmNj8BNhYfATY/AQcOASMiBwYmLwEHFxYGBwYHDgEvAQcXHgEVBhcUBg8BFzc2FhcWFzkBFhceAQ8BFzc+ARcWFzIWHwE3NTQ2NzY3NjIfATcnLgE3Njc+ATM/AScuAScmJyY2PwEnBwYmJyYnLgE1NwcmDgIeATY3MT4CJicxJic2FhceAQ4BBw4BLgE+AQE+AR8BHgEVFxYXNzYWHwEeAQ8BFh8BHgEfARYGDwEGBxceAQ8BDgEvAQYHFxQGDwEGJi8BIicHDgEvAS4BPwEmJwcGJi8BJjY/ASYnOQE1Jy4BPwE+AR8BNjcnJjY/ATYWHwE2PwEHDgEHBgcGJi8BBxcWBgcGBw4BLwEHFx4BBwYXFhcWBg8BFzc2FhcWFx4BDwEXNz4BFxY3NhYfATcnNDY3Njc+AR8BNycuATc2Nz4BPwEvAS4BJyYnJjQ/AScHBiInJicuAS8BByYOAh4BNz4BJy4BJzYeARcWBgcGLgE+AQFUAgwHSQcJAQIXFCYGDQQuBQEFHQsGKwcIAgkHKwcLHQUBBDIFDQYlFBYJBkoHCwIOFxYdBA4GPwYFAxIJCAYGLwcLAhgCBQYpAwMpBgQCHAIMBysOEQ8DBQZBBg4EGRgZLA4CCgUhHgYMAxclDgIDBBgRBAoGKA8lBQQFBQUFJg0rBgoDCAkKDAUCAhEkGwQLBR4fBgkCDCoHBR4ZBQwFIh0bBAEDEAcCCAYoASgGCAEGDwMCBBsbIgUMBBkfBgYDNhAeFQQPHCAMCQoCBgYKOBo0EQsKBBIOFTYwGAYjAYYCCwc9BgoCEREaBg4EKwUBBBQJByIGCgEEAQgGHgMHGAUBBCUEDQYeDhAEBwc7BwwDDRISFAQNBjgGBQIKDQwjBwwDGQMEBh0CAiIGBgIRAgsHIwkLEAMEBjIGDQQYEhIpCAEJBhoZBQsEFhgPAgIEEQsDCgYgCB4GBgEBAQIEAgQGGwwgBgsDDxQFBAIKGxIECgYZGgUKAwwcAwUFGBMECwYbEhYEAgILAwEHBRsCHgYJAgcPAwQSFBgFDAUWGQYHAQETDRsSAwwYDhMZAgERMRgvHwICLCIZLBYGIAKMBgcBDwELByoLEBYDAgU6Bg0FHxcZBwELB0kHCgEFGBYjBQ4FNgUCBBgNCS8HCgELAQcHLAIGIwYCAyUEDQYqCgoICAgBBwdGBg0DFRcYFwQNBkUGBwIKFBAqBg0DJQMDBSEGAg0mBQcKAgMFHxUmBgsEFRsFBAEJJxUDCgYfHwYKAxMpCAEFBQwLDQwECwUnFSEFAwIKAgcGKAYrBgkCCxMEAxcfIAQMBRwfBggGKQcBCQUhHAYLBRwhFAMBBBYMAgoGJ8wFCRggHBADCgYTFBQJDCkHEBUOIyMfCxEEGjA2KgHqBwgBBgEKByEGCRMEAQQsBA4GGhESAgEJBz0HCgIJExIYBQ0GMgUDAw8MCSMHCwIPAQYGIAQeBgMCGwMMByILDgoCBgY3Bw0DFAsMDw8DDAc7BggBBA8OIAcNBCEEAgUYBgMKHwYHAQMKAgMEFhAdBQsFEhcFBgEEHQ0DCgUMCw8OBgwDEhoJAQMFFQ8DCwYfDRwEBAEGAQEGBh0HIAYKAgwSBAECDhgVBAwFGBoGCAIIHgIBBwUaFgUMBRgUEQQDDwcCCQYeqQQHFRwYDgECHBMOFigHECcZIjQCAhgtMiYAABb//wAAA+gDXgAYACUAPQBKAFcAZABxAH4AiwCYAKUAsgC/AMwA5QDyAP8BDAEZASYBMwFAAAABNh8BFhURMzIWFAYrASImNREnBwYuATY/ATIWFREUBiImNRE0NiU2HwEWFREUBiImNREnBxEUBiImNRE0PwEyFhURFAYiJjURNDYXPgEfAR4BDgEvAS4BFz4BHwEeAQ4BLwEuARc+AR8BHgEOAS8BLgEXPgEfAR4BDgEvAS4BFz4BHwEeAQ4BLwEuASU+AR8BHgEOAS8BLgEXPgEfAR4BDgEvAS4BFz4BHwEeAQ4BLwEuARc+AR8BHgEOAS8BLgEBMhYVERQGIiY1ETQ2BzYfAR4BDgEvAQcRFAYrASImNDY7ARE0PwEyFhURFAYiJjURNDYXPgEfAR4BDgEvAS4BFz4BHwEeAQ4BLwEuARc+AR8BHgEOAS8BLgEXPgEfAR4BDgEvAS4BAzIWFREUBiImNRE0NgM0NjMhMhYUBiMhIiYDCAYFoQUjBQcHBS4FB5VXBQkEAwRiBQcHCQcH/v0GBaYFBwkHmqwHCQcGvQUHBwoGBioDCQRGBAIFCgRGBAIDAwkERgQCBQoERgQCAwMJBEYEAgUKBEYEAgMDCQRGBAIFCgRGBAIDAwkERgQCBQoERgQCAQECCgRFBAIFCQRGBAICAwkERgQCBQkERgQCAwIKBEUEAgUJBEYEAgIDCQRGBAIFCQRGBAL+gwUHBwoGBroFBmAEAgUJBVmuBwUuBQcHBSMGvwUHBwoGBikCCgQuBQMFCQQvBAMCAgkELwQEBAkFLgQEAgIKBC4FAwUJBC8EAwICCQUxBAMECQQxBQOBBQYGCgcHkAcFA9AFBwcF/DAFBwK5AwNfAwf+nQcKBgYFAWlYLAIDCQkCLQcE/jQFBgYFAcwEB6MDBGgDBv34BQYGBQIBYV39+wUGBgUCDAcDWQYF/ZwFBgYFAmQFBm8EAgMuAwkIAgMuAwlYBAIDLgMJCAIDLgIKWQQCAi8CCggBAi4DCVYEAgIvAgoIAQIuAwlYBAIDLgMJCAIDLgMJ6QQBAi4DCQgCAi8CClkEAgIsAwkIAgIsAwlWBAIDLgIKCAIDLgMJWAQCAywCCggCAywCCgGiBwX+CwUGBgUB9QUHIgMDOgMJCAICNl/+mAUGBgoHAWMHA2cGBf4rBQYGBQHVBQZsBQMCGAIJCAMCFwIJWAQDAhQCCQkDAhQCCVUEAwIXAgkJAwIXAwlZBQMCFwIJCQMCFwIJAQsGBf6jBQYGBQFdBQb+UwUGBgoHBwAAAAASAN4AAQAAAAAAAAAmAAAAAQAAAAAAAQAIACYAAQAAAAAAAgAHAC4AAQAAAAAAAwAIADUAAQAAAAAABAAIAD0AAQAAAAAABQALAEUAAQAAAAAABgAIAFAAAQAAAAAACgArAFgAAQAAAAAACwATAIMAAwABBAkAAABMAJYAAwABBAkAAQAQAOIAAwABBAkAAgAOAPIAAwABBAkAAwAQAQAAAwABBAkABAAQARAAAwABBAkABQAWASAAAwABBAkABgAQATYAAwABBAkACgBWAUYAAwABBAkACwAmAZxDcmVhdGUgYnkgaWNvbjJmb250IDxBYmRlbGhha2ltIFJBRklLPmZvbnRpY29uUmVndWxhcmZvbnRpY29uZm9udGljb25WZXJzaW9uIDEuMGZvbnRpY29uR2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20AQwByAGUAYQB0AGUAIABiAHkAIABpAGMAbwBuADIAZgBvAG4AdAAgADwAQQBiAGQAZQBsAGgAYQBrAGkAbQAgAFIAQQBGAEkASwA+AGYAbwBuAHQAaQBjAG8AbgBSAGUAZwB1AGwAYQByAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AGkAYwBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAGYAbwBuAHQAaQBjAG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAAFcmFkaW8McmFkaW8tYWN0aXZlFmNoZWNrYm94LWluZGV0ZXJtaW5hdGUIY2hlY2tib3gPY2hlY2tib3gtYWN0aXZlBHN3YXAGdW5mb2xkB2FjY291bnQDYWRkCWFwYXJ0bWVudAphcnJvdy1sZWZ0CmFycm93LWRvd24OYXJyb3ctZHJvcGRvd24MYXJyb3ctZHJvcHVwC2Fycm93LXJpZ2h0CGFycm93LXVwBWJlYWNoB3JlZnJlc2gOY2FsZW5kYXItdG9kYXkNY2FuY2VsLWZpbGxlZBNjaGVjay1jaXJjbGUtZmlsbGVkDGNoZWNrLWNpcmNsZQVjaGVjawxjaGV2cm9uLWxlZnQNY2hldnJvbi1yaWdodAZjYW5jZWwFY2xvdWQKY29sbGVjdGlvbgRjb3B5A2N1dAVwYXN0ZQpjcmVkaXRjYXJkCGNhbGVuZGFyBmRlbGV0ZQhkb3dubG9hZAV0aXRsZQltYWlsLW9wZW4EZWRpdAVlcnJvcg1lcnJvci1vdXRsaW5lCmNoZXZyb24tdXAMY2hldnJvbi1kb3duBWhlYXJ0BHNvcnQGZm9sZGVyFUZvcm1hdEFsaWduTGVmdEZpbGxlZARob21lBWluYm94BGluZm8MaW5mby1vdXRsaW5lBmxheWVycwhsb2NhdGlvbgRsb2NrBmxvZ291dARtYWlsDG1haWwtb3V0bGluZQRtZW51B21vbml0b3IPbW9yZS1ob3Jpem9udGFsDW1vcmUtdmVydGljYWwMbm90aWZpY2F0aW9uBm5ld3RhYgV1c2VycwhhZGQtdXNlcgR1c2VyBXBob25lBXBob3RvDXBob3RvLW91dGxpbmUEcGxheQtwbGF5LWNpcmNsZQVjbG9jawZ1bmxvY2sIZGF0YWJhc2UHbmV0d29yaxBkYXNoYm9hcmQtZmlsbGVkCHNldHRpbmdzC3N0YXItZmlsbGVkDHN0YXItb3V0bGluZQttYWludGVuYW5jZQRzZW5kBG5leHQIcHJldmlvdXMPd2FybmluZy1vdXRsaW5lElZpZXdIZWFkbGluZUZpbGxlZAp1bml2ZXJzaXR5BXVzYWdlBGhlbHAHd2FybmluZwdzdXBwb3J0BnNlYXJjaARsb2dzEWRhc2hib2FyZC1vdXRsaW5lEHN0YXItaGFsZi1maWxsZWQHbW9kdWxlcwR3b3JrBnVwbG9hZAR3aWZpBXRoZW1lBXNsYWNrCWRvY3MtbWFpbA5kb2NzLWNvbW11bml0eRBkb2NzLW9wZW4tc291cmNlD2RvY3MtZW50ZXJwcmlzZQ9kb2NzLWFsdGVybmF0b3INZG9jcy1vcGVyYXRvcgxkb2NzLW1hbmFnZXIPZG9jcy1tb25pdG9yaW5nEmRvY3MtY2hldnJvbi1yaWdodAlkb2NzLWluZm8MZG9jcy13YXJuaW5nEWRvY3MtY2hldnJvbi1sZWZ0EmRvY3MtbWVudS1jb2xsYXBzZRBkb2NzLXRodW1icy1kb3duDmRvY3MtdGh1bWJzLXVwBmdpdGh1YghpbnN0YW5jZQVwYXVzZQRzdG9wBXJlc2V0A2V5ZQ5zdGFjay1vdmVyZmxvdxBkb2NzLW5zcWwtZ3VpZGVzCmRvY3MtY2xvdWQUZG9jcy1nZXR0aW5nLXN0YXJ0ZWQJZG9jcy1ibG9nD2RvY3MtY29udHJpYnV0ZQ1kb2NzLXRyYWluaW5nDWRvY3MtY29tbWFuZHMSZG9jcy1jb25maWd1cmF0aW9uEWRvY3MtZW50ZXJwcmlzZS1tAAAAAA==) format("embedded-opentype"),url(data:font/woff;base64,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) format("woff")}[class*=" icon-addon-"]:before,[class^=icon-addon-]:before{clip-path:polygon(0 0,100% 0,100% 59%,95.5% 54.5%,88% 50.3%,80% 48.5%,71% 49.2%,64% 52%,58% 56%,53% 62%,50% 69%,48.8% 79%,50.5% 87%,55% 95%,60% 100%,0 100%)}.admonition-title:before,.icon,.search-box:before,.secondary-side-nav__content li a:before,.side-nav__content .scylla-icon--expand,[class*=" icon-"],[class^=icon-]{font-family:fonticon!important;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400!important;vertical-align:middle}.icon-radio:before{content:""}.icon-radio-active:before{content:""}.icon-checkbox-indeterminate:before{content:""}.icon-checkbox:before{content:""}.icon-checkbox-active:before{content:""}.icon-swap:before{content:""}.icon-unfold:before{content:""}.icon-account:before{content:""}.icon-add:before{content:""}.icon-apartment:before{content:""}.icon-arrow-left:before{content:""}.icon-arrow-down:before{content:""}.icon-arrow-dropdown:before{content:""}.icon-arrow-dropup:before{content:""}.icon-arrow-right:before{content:""}.icon-arrow-up:before{content:""}.icon-beach:before{content:""}.icon-refresh:before{content:""}.icon-calendar-today:before{content:""}.icon-cancel-filled:before{content:""}.icon-check-circle-filled:before{content:""}.icon-check-circle:before{content:""}.icon-check:before{content:""}.icon-chevron-left:before{content:""}.icon-chevron-right:before{content:""}.icon-cancel:before{content:""}.icon-cloud:before{content:""}.icon-collection:before{content:""}.icon-copy:before{content:""}.icon-cut:before{content:""}.icon-paste:before{content:""}.icon-creditcard:before{content:""}.icon-calendar:before{content:""}.icon-delete:before{content:""}.icon-download:before{content:""}.icon-title:before{content:""}.icon-mail-open:before{content:""}.icon-edit:before{content:""}.icon-error:before{content:""}.icon-error-outline:before{content:""}.icon-chevron-up:before{content:""}.icon-chevron-down:before{content:""}.icon-heart:before{content:""}.icon-sort:before{content:""}.icon-folder:before{content:""}.icon-FormatAlignLeftFilled:before{content:""}.icon-home:before{content:""}.icon-inbox:before{content:""}.icon-info:before{content:""}.icon-info-outline:before{content:""}.icon-layers:before{content:""}.icon-location:before{content:""}.icon-lock:before{content:""}.icon-logout:before{content:""}.icon-mail:before{content:""}.icon-mail-outline:before{content:""}.icon-menu:before{content:""}.icon-monitor:before{content:""}.icon-more-horizontal:before{content:""}.icon-more-vertical:before{content:""}.icon-notification:before{content:""}.icon-newtab:before{content:""}.icon-users:before{content:""}.icon-add-user:before{content:""}.icon-user:before{content:""}.icon-phone:before{content:""}.icon-photo:before{content:""}.icon-photo-outline:before{content:""}.icon-play:before{content:""}.icon-play-circle:before{content:""}.icon-clock:before{content:""}.icon-unlock:before{content:""}.icon-database:before{content:""}.icon-network:before{content:""}.icon-dashboard-filled:before{content:""}.icon-settings:before{content:""}.icon-star-filled:before{content:""}.icon-star-outline:before{content:""}.icon-maintenance:before{content:""}.icon-send:before{content:""}.icon-next:before{content:""}.icon-previous:before{content:""}.icon-warning-outline:before{content:""}.icon-ViewHeadlineFilled:before{content:""}.icon-university:before{content:""}.icon-usage:before{content:""}.icon-help:before{content:""}.icon-warning:before{content:""}.icon-support:before{content:""}.icon-search:before{content:""}.icon-logs:before{content:""}.icon-dashboard-outline:before{content:""}.icon-star-half-filled:before{content:""}.icon-modules:before{content:""}.icon-work:before{content:""}.icon-upload:before{content:""}.icon-wifi:before{content:""}.icon-theme:before{content:""}.icon-slack:before{content:""}.icon-docs-mail:before{content:""}.icon-docs-community:before{content:""}.icon-docs-open-source:before{content:""}.icon-docs-enterprise:before{content:""}.icon-docs-alternator:before{content:""}.icon-docs-operator:before{content:""}.icon-docs-manager:before{content:""}.icon-docs-monitoring:before{content:""}.icon-docs-chevron-right:before{content:""}.icon-docs-info:before{content:""}.icon-docs-warning:before{content:""}.icon-docs-chevron-left:before{content:""}.icon-docs-menu-collapse:before{content:""}.icon-docs-thumbs-down:before{content:""}.icon-docs-thumbs-up:before{content:""}.icon-github:before{content:""}.icon-instance:before{content:""}.icon-pause:before{content:""}.icon-stop:before{content:""}.icon-reset:before{content:""}.icon-eye:before{content:""}.icon-stack-overflow:before{content:""}.icon-docs-nsql-guides:before{content:""}.icon-docs-cloud:before{content:""}.icon-docs-getting-started:before{content:""}.icon-docs-blog:before{content:""}.icon-docs-contribute:before{content:""}.icon-docs-training:before{content:""}.icon-docs-commands:before{content:""}.icon-docs-configuration:before{content:""}.icon-docs-enterprise-m:before{content:""}:root{--white:#fff;--gray-50:#f7fcfc;--gray-100:#edf5f7;--gray-200:#d8e5eb;--gray-300:#c3d5de;--gray-400:#aec0cf;--gray-500:#95a7ba;--gray-600:#7b8ba2;--gray-700:#616d87;--gray-800:#4b546f;--gray-900:#383d57;--gray-950:#2f324b;--black:#23263b;--primary:#42c4e6;--secondary:#3a2d55;--success:#43a047;--info:#1976d2;--warning:#ffab00;--danger:#ce291f;--link-color:#3c4fe0;--link-color-hover:#3c4fe0;--text-color:#23263b;--code-color:#23263b;--text-emphasis:#23263b;--text-muted:#95a7ba;--border-color:#f1f1f1;--header-border:#4458a3;--bg-color:#fefefe;--well-bg:#f7f8f9;--navigation-bg:#f6f8ff;--card-bg:var(--white);--admonition:#6f7071;--scollbar-bg:#b3bac5;--tooltip-bg:#383d57;--shadow-lg:0px 4px 25px rgba(0,0,0,.15);--border-width:1px;--border-radius:5px;--border-radius-md:8px;--line-number:#5a7184;--logo-url:"../img/logo-scylla-horizontal-color.svg"}.dark{--primary:#42c4e6;--secondary:#3a2d55;--success:#43a047;--info:#1976d2;--warning:#ffab00;--danger:#ce291f;--link-color:#42c4e6;--link-color-hover:#42c4e6;--text-color:var(--gray-200);--code-color:var(--gray-200);--text-emphasis:var(--white);--text-muted:var(--gray-300);--border-color:var(--gray-800);--header-border:#4458a3;--bg-color:var(--black);--well-bg:#1e2031;--navigation-bg:#1e2031;--card-bg:var(--gray-950);--admonition:var(--gray-400);--logo-url:"../img/logo-scylla-horizontal-light.svg"}html{box-sizing:border-box;scroll-padding-top:100px}body{background-color:var(--bg-color);color:var(--text-color);font-family:Roboto,sans-serif;font-size:16px;line-height:1}*,:after,:before{box-sizing:inherit}a{color:var(--link-color)}a.reference:after{font-family:FontAwesome;font-size:12px;padding:0 4px}a.reference.external:after{content:""}a.reference.download:after{content:""}a:hover{color:var(--link-color-hover);font-weight:500}.headerlink{margin-left:5px;visibility:hidden}.toc-backref:hover{color:var(--black)}h1,h2,h3,h4,h5,h6{font-family:Roboto,sans-serif;font-size:16px;font-weight:500;letter-spacing:.2px;line-height:24px;margin-bottom:16px}h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{visibility:visible}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}h1{font-size:32px;font-weight:700;line-height:40px;margin-bottom:28px}h2{font-size:24px;line-height:32px}h3{font-size:20px}h4{font-size:18px}h5{font-size:16px}h6{font-weight:400}img{max-width:100%}button:focus{outline:0}blockquote{border:0;margin:0;padding:0}blockquote,blockquote p,cite{color:inherit}cite{display:inline;font-size:inherit}cite:before{content:""}.show{display:block!important}.centered{display:block;margin:0 auto}.break{flex-basis:100%;height:0}@media screen and (min-width:1024px){h1{font-size:36px}}.dark .highlight .c{color:#6272a4}.dark .highlight .err,.dark .highlight .g{color:#f8f8f2}.dark .highlight .k{color:#ff79c6}.dark .highlight .l,.dark .highlight .n{color:#f8f8f2}.dark .highlight .o{color:#ff79c6}.dark .highlight .p,.dark .highlight .x{color:#f8f8f2}.dark .highlight .ch,.dark .highlight .cm{color:#6272a4}.dark .highlight .cp{color:#ff79c6}.dark .highlight .c1,.dark .highlight .cpf,.dark .highlight .cs{color:#6272a4}.dark .highlight .gd{color:#8b080b}.dark .highlight .ge{color:#f8f8f2;text-decoration:underline}.dark .highlight .gr{color:#f8f8f2}.dark .highlight .gh,.dark .highlight .gi{color:#f8f8f2;font-weight:700}.dark .highlight .go{color:#dfdfe6}.dark .highlight .gp,.dark .highlight .gs{color:#f8f8f2}.dark .highlight .gu{color:#f8f8f2;font-weight:700}.dark .highlight .gt{color:#f8f8f2}.dark .highlight .kc{color:#ff79c6}.dark .highlight .kd{color:#8be9fd;font-style:italic}.dark .highlight .kn,.dark .highlight .kp,.dark .highlight .kr{color:#ff79c6}.dark .highlight .kt{color:#8be9fd}.dark .highlight .ld{color:#f8f8f2}.dark .highlight .m{color:#bd93f9}.dark .highlight .s{color:#f1fa8c}.dark .highlight .na{color:#50fa7b}.dark .highlight .nb{color:#8be9fd;font-style:italic}.dark .highlight .nc{color:#50fa7b}.dark .highlight .nd,.dark .highlight .ne,.dark .highlight .ni,.dark .highlight .no{color:#f8f8f2}.dark .highlight .nf{color:#50fa7b}.dark .highlight .nl{color:#8be9fd;font-style:italic}.dark .highlight .nn,.dark .highlight .nx,.dark .highlight .py{color:#f8f8f2}.dark .highlight .nt{color:#ff79c6}.dark .highlight .nv{color:#8be9fd;font-style:italic}.dark .highlight .ow{color:#ff79c6}.dark .highlight .w{color:#f8f8f2}.dark .highlight .mb,.dark .highlight .mf,.dark .highlight .mh,.dark .highlight .mi,.dark .highlight .mo{color:#bd93f9}.dark .highlight .dl,.dark .highlight .s1,.dark .highlight .s2,.dark .highlight .sa,.dark .highlight .sb,.dark .highlight .sc,.dark .highlight .sd,.dark .highlight .se,.dark .highlight .sh,.dark .highlight .si,.dark .highlight .sr,.dark .highlight .ss,.dark .highlight .sx{color:#f1fa8c}.dark .highlight .bp{color:#f8f8f2;font-style:italic}.dark .highlight .fm{color:#50fa7b}.dark .highlight .vc,.dark .highlight .vg,.dark .highlight .vi,.dark .highlight .vm{color:#8be9fd;font-style:italic}.dark .highlight .il{color:#bd93f9}.contents.local>ul>li .dark a:before,.dark .contents.local>ul>li a:before,.dark .scylla-icon{filter:brightness(0) saturate(100%) invert(100%) sepia(4%) saturate(10%) hue-rotate(140deg) brightness(106%) contrast(100%)}.contents.local>ul>li a:before,.scylla-icon{background-repeat:no-repeat;background-size:contain;display:inline-block;filter:brightness(0);vertical-align:middle}.scylla-icon--about-team{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMntzdHJva2UtbGluZWNhcDpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik00LjY2IDkuODEgMi42MyAxMWEyLjA4IDIuMDggMCAwIDAtMS4xMyAxLjgzdjcuODFjLjE5IDEuMTEuNSAxLjUzIDEuNSAxLjQ3TTcuMDYgOS45NGwxLjQ0Ljk0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMy41IDE4LjV2NS4zNE05LjUgMTguNXY1LjM0TTguNTQgMTguNDJ2NS4zM00xNS41IDE4LjV2NS4zNE0xNi41IDE4LjV2NS4zNE0zLjMzIDIwLjUzaDUuMDhNMTEuNDUgOC44NGwuMDYuMDZhMS42NSAxLjY1IDAgMCAwIDIuMzQgMGgwIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJNMTIuNDIgNy41YTEuODEgMS44MSAwIDAgMS0xLjkyLTEuNzdWNWExLjk0IDEuOTQgMCAwIDEgMS45Mi0yIDIuMDcgMi4wNyAwIDAgMSAyLjA4IDJ2Ljc3YTIgMiAwIDAgMS0yLjA4IDEuNzNaTTExLjQyIDguNzQgOS42MyA5LjlhMi4wNyAyLjA3IDAgMCAwLTEuMTMgMS44NXY3LjgyQTEuNDcgMS40NyAwIDAgMCAxMCAyMU0xMy43NSA5LjE4bDIgLjY1Yy43LjM1Ljc2IDEuMDYuNzYgMS44NHY3LjljMCAuNzctLjIzIDEuMjQtMSAxLjI0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNOS45MyAxOS41aDUuNCIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTE5LjQyIDkuMTJhMi4wNyAyLjA3IDAgMCAwIDIuMDgtMS45M3YtLjc3YTIuMDcgMi4wNyAwIDAgMC0yLjA4LTEuOTIgMS45MyAxLjkzIDAgMCAwLTEuOTIgMS45MnYuNzdhMS45NCAxLjk0IDAgMCAwIDEuOTIgMS45M1pNNS41OSA5LjEyYTEuOTMgMS45MyAwIDAgMCAxLjkyLTEuOTN2LS43N0ExLjkzIDEuOTMgMCAwIDAgNS41OSA0LjUgMi4wOCAyLjA4IDAgMCAwIDMuNSA2LjQydi43N2EyLjA4IDIuMDggMCAwIDAgMi4wOSAxLjkzWk0yMC40NCA5LjgxbDIgMS4xN2EyLjA2IDIuMDYgMCAwIDEgMS4xMyAxLjg1djcuODFjLS4xOCAxLjExLS40NyAxLjUzLTEuNDcgMS40N00xOC4wNCA5Ljk0bC0xLjQ0LjkzIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMjEuNiAxOC41djUuMzRNMjEuNzcgMjAuNTNoLTUuMDgiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--about-us{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6LjhweH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNi4yOCAxOS40OGMtLjEyLjA4LS4wOC4wNy0uMjMuMS0uNTguMDktMS4xMi0uMjgtMS4yNS0uODQgMCAwLTIuMy05LjE4LTIuMy0xMS4xMUMyLjUgMy42IDUuODguNDQgMTAuMzguNDRTMTcuNSAzLjQ4IDE3LjUgNy41YzAgMS45My0xLjMyIDExLjIzLTEuMzIgMTEuMjMtLjEzLjU2LS42Ny45NC0xLjI1Ljg0LS4xMi0uMDItLjEzIDAtLjIzLS4wNyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1Ljc1IDE1Ljc1Yy0uMTcgMS4xNS0uMjIgMi4zNC0uNTUgMy40Ni0uMzcuODUtMS42MyAxLjA2LTIuMjIuMzMtLjI1LS4yOC4xOS0uNjguNDQtLjQuNDMuNDYgMS4yNC4xOCAxLjMxLS40NGwuMDYtLjM0Yy4xOS0uODkuMzUtMS43OS41Ny0yLjY4LjA1LS4yNC40Mi0uMTcuMzkuMDciLz48cGF0aCBkPSJNMTEuNSA3YzAgMS45LTEuNTYgMy41LTMuNDYgMy41UzQuNSA4LjkgNC41IDdzMS42NC0zLjUgMy41NC0zLjVTMTEuNSA1LjEgMTEuNSA3IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNOC41NSA0Ljc1Yy0uNTkuMTItLjcxIDEuNDItLjM2IDEuNzguMjMuMjMuNzEuMzEuNzEuNDdzLS40OC4yNC0uNzEuNDdjLS4zNi4zNi0uMjQgMS42Ni4zNiAxLjc4LjcxLjE0IDEuNzgtLjcxIDEuNzgtMi4yNVM5LjI2IDQuNjEgOC41NSA0Ljc1TTYuNTEgMTIuMmMyLjEyLjMxIDQuMzQtLjIgNS42OC0xLjk2LjMyLS40MS45Ni4xMS42Mi41MS0uNzYuOS0xLjc4IDEuNjMtMi45MyAxLjk1LTEuMTQuMzMtMi4zMy4zMS0zLjQ2LjE2YS4zNC4zNCAwIDAgMS0uMjktLjM4Yy4wMi0uMTguMTktLjMxLjM3LS4yOVpNNy45NyAxOS41OWMtLjk5Ljk2LTIuMzYuMDgtMi4zNi0xLjE1LS4xMi0uOS0uMjctMS43OS0uMzctMi42OS0uMDEtLjExLjA3LS4yMS4xOC0uMjIuMS0uMDEuMTkuMDYuMjEuMTUuMjIuODguMzggMS43Ny41NiAyLjY2LjAxLjc4LjY4IDEuMzggMS4zNS44My4yNy0uMjcuNjkuMTYuNDIuNDNaIi8+PHBhdGggZD0iTTkuNzUgMTkuMjdjLS40Mi45LTEuOC45Ni0yLjMyLjExLS41LTEuMTMtLjMxLTIuNS0uNDctMy43MiAwLS4xMS4wOC0uMi4xOS0uMjEuMSAwIC4xOS4wNy4yMS4xNy4xNy45NS4yOCAxLjkxLjQyIDIuODcuMDEuNDUuMjMuNzQuNTcuODUuMzMuMS43MS0uMDUuODgtLjM2LjE4LS4zNC43MS0uMDUuNTIuMjlNMTQuMDMgMTUuNjZjLS4xNiAxLjIzLjAzIDIuNTctLjQ2IDMuNzItLjUyLjg2LTEuOTEuNzktMi4zMi0uMTEtLjE3LS4zNC4zNS0uNjEuNTMtLjI4LjQyLjcxIDEuNDguMzggMS40NS0uNDkuMTQtLjk2LjI1LTEuOTIuNDItMi44Ny4wNC0uMjQuNDEtLjIuNC4wNFoiLz48cGF0aCBkPSJNMTEuODUgMTUuNTRjLjAyLjc5LjAxIDEuNTguMDEgMi4zNy0uMDIuNDEuMDcuOS0uMTQgMS4yOS0uNDMgMS4wMi0yLjAxIDEuMDItMi40NSAwLS4yMS0uMzktLjEzLS44OS0uMTQtMS4yOSAwLS43OSAwLTEuNTguMDEtMi4zNyAwLS4xMS4xLS4yLjIxLS4xOS4xIDAgLjE4LjA4LjE5LjE4LjA3Ljc5LjEgMS41OC4xNSAyLjM3LjAzLjI3IDAgLjgyLjEzIDEuMDQuMTMuMjYuNC40My42OC40Mi40NiAwIC43OS0uNC43Ny0uODdsLjAzLS41OWMuMDQtLjc5LjA4LTEuNTguMTUtMi4zNy4wMi0uMjQuNC0uMjMuNC4wMSIvPjwvc3ZnPg==)}.scylla-icon--about-us-m{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNi4zOCAzMi40MyI+PHBhdGggZD0iTTYuNTUgMzEuNjRjLS4yLjEzLS40My4yMi0uNjkuMjZhMS44MSAxLjgxIDAgMCAxLTIuMDYtMS4zOVMuNDkgMTQuOTkuNDkgMTEuODJDLjUgNS4xOSA1Ljc3LjUgMTMuMTkuNXMxMi42OSA0LjY5IDEyLjY5IDExLjMyYzAgMy4xOC0zLjMxIDE4LjY5LTMuMzEgMTguNjlhMS44MSAxLjgxIDAgMCAxLTIuNjIgMS4yIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIvPjxwYXRoIGQ9Ik0yMS44NiAyNS4zNmMtLjI4IDEuOS0uMzcgMy44Ni0uOTEgNS43MS0uNjEgMS40MS0yLjY4IDEuNzUtMy42Ni41NS0uNDEtLjQ3LjMxLTEuMTEuNzMtLjY2LjcxLjc2IDIuMDQuMjkgMi4xNi0uNzMuMzItMS42Ni42NS0zLjMzIDEuMDQtNC45OC4wOS0uMzkuNy0uMjguNjUuMTFaIi8+PHBhdGggZD0iTTE0LjggMTAuNTdjMCAzLjEzLTIuNTMgNS42Ni01LjY2IDUuNjZzLTUuNDctMi41My01LjQ3LTUuNjYgMi4zNC01LjY2IDUuNDctNS42NiA1LjY2IDIuNTMgNS42NiA1LjY2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6LjlweCIvPjxwYXRoIGQ9Ik0xMC4zMSA2Ljg2Yy0uOTguMi0xLjE3IDIuMzQtLjU5IDIuOTMuMzguMzggMS4xNy41MSAxLjE3Ljc4cy0uNzkuNC0xLjE3Ljc4Yy0uNTkuNTktLjM5IDIuNzMuNTkgMi45MyAxLjE2LjIzIDIuOTMtMS4xNyAyLjkzLTMuNzFzLTEuNzYtMy45NC0yLjkzLTMuNzFNNi44MiAxOC41MWMzLjQ5Ljg5IDYuOTctLjUgOS41MS0yLjkzLjQ3LS40NCAxLjE2LjMxLjY4Ljc0LTEuMzggMS4yMy0yLjk4IDIuMjktNC43OSAyLjg3LTEuOC41OS0zLjc3LjU4LTUuNTguMTRhLjQyLjQyIDAgMCAxLS4zMS0uNWMuMDUtLjIyLjI4LS4zNi41LS4zMVoiLz48cGF0aCBkPSJNMTYuNzMgMTYuNjdjLS4xMi0uNDYtLjUxLS44My0uOTktLjgzLS43NS0uMDItLjU5LTEuMTcuMTQtLjk5LjgxLjE2IDEuNDMuODUgMS41IDEuNjYuMDguNC0uNTQuNTQtLjY1LjE1Wk05LjAzIDMxLjdjLTEuMjYgMS4zNi0zLjYyLjQ1LTMuOC0xLjM1bC0uMDktLjU1Yy0uMjEtMS40OC0uNDUtMi45NS0uNi00LjQ0LS4wMi0uMTguMTEtLjM0LjI5LS4zNi4xNy0uMDIuMzIuMDkuMzUuMjUuMzkgMS42My43MSAzLjI4IDEuMDMgNC45My4wOSAxLjAyIDEuMzggMS41NCAyLjEyLjgxLjQ1LS40NCAxLjE0LjI2LjY5LjdaIi8+PHBhdGggZD0iTTExLjk2IDMxLjE2Yy0xIDEuOTgtNC4wNCAxLjMtNC4yMS0uODgtLjE1LTEuNjktLjMtMy4zOC0uMzktNS4wNyAwLS4xOC4xMy0uMzQuMzEtLjM0LjE3IDAgLjMxLjExLjM0LjI3LjI4IDEuNjcuNSAzLjM1LjcyIDUuMDMuMDkgMS4yIDEuNzcgMS41OSAyLjM2LjUxLjMxLS41NiAxLjE2LS4wOS44Ny40N1pNMTkuMDMgMjUuMjFjLS4wOCAxLjY5LS4yNCAzLjM4LS4zOSA1LjA3LS4wNC4zNy0uMTcuNzUtLjM4IDEuMDYtLjg2IDEuNC0zLjExIDEuMzEtMy44My0uMTctLjMtLjU2LjU1LTEuMDMuODYtLjQ4LjU5IDEuMDggMi4yNy42OSAyLjM1LS41Mi4yMi0xLjY4LjQzLTMuMzYuNzItNS4wMy4wNi0uNC42OC0uMzMuNjUuMDdaIi8+PHBhdGggZD0iTTE1LjQzIDI1LjAyYy4wNCAxLjMxLjAyIDIuNjEuMDIgMy45MS0uMDMuNjcuMTEgMS40OC0uMjMgMi4xMy0uNzQgMS42OS0zLjI5IDEuNjktNC4wMyAwLS4zNC0uNjUtLjIxLTEuNDctLjI0LTIuMTMgMC0xLjMtLjAyLTIuNjEuMDItMy45MSAwLS4xOC4xNi0uMzIuMzQtLjMyLjE3IDAgLjMuMTQuMzIuMy4xMSAxLjMuMTcgMi42LjI0IDMuOTEuMDUuNDUgMCAxLjM1LjIxIDEuNzIuMjEuNDMuNjYuNzEgMS4xMi43LjQ2LjAyLjkxLS4yNyAxLjEyLS42OS4yMi0uMzYuMTYtMS4yOC4yMS0xLjcyLjA3LTEuMy4xMy0yLjYxLjI0LTMuOTEuMDItLjQuNjYtLjM4LjY2LjAyWiIvPjwvc3ZnPg==)}.scylla-icon--alternator{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMTcuNSAyLjkxYzAgMS4yOC0zLjY3IDIuNTktOCAyLjU5cy04LTEuMzEtOC0yLjU5UzUuMDkuNSA5LjQyLjVzOC4wOCAxLjEzIDguMDggMi40MU0xNy41IDcuNjZjMCAxLjI4LTMuNjMgMi44LTcuOTYgMi44UzEuNSA4LjkzIDEuNSA3LjY2TTE3LjUgMTIuNDdjMCAxLjI4LTMuNjcgMy4wMy04IDMuMDNzLTgtMS43NS04LTMuMDNNMTcuNSAxNy4yOWMwIDEuMjgtMy43NSAyLjMtOC4wOCAyLjNzLTcuOTItMS4wMy03LjkyLTIuM00xLjUgMTcuMTlWMi45MU0xNy41IDE3LjE5VjIuOTEiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--apps{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTS41IDEuNWgyMHYxNEguNXpNNy41IDE1Ljc0djIuODlNMTIuODMgMTUuNjN2Mi4zMk01LjUgMTguNWg5LjE0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMy42NCA1LjU2IDQuNTggMi45MS00LjU4IDIuOTJNOS4xIDEyLjA4aDQuMzIiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--architecture{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTIsLmNscy01e2ZpbGw6bm9uZTtzdHJva2U6Z3JheX0uY2xzLTF7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMiwuY2xzLTV7c3Ryb2tlLW1pdGVybGltaXQ6MTB9LmNscy0ye3N0cm9rZS13aWR0aDouOThweH0uY2xzLTV7c3Ryb2tlLXdpZHRoOi45OXB4fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0iTTEuOSAxMC4yN2ExMC44MyAxMC44MyAwIDAgMSA4LjczLTguMzhNMTAuNTEgMjMuMDhBMTAuNzkgMTAuNzkgMCAwIDEgMS43NyAxNE0yMy4yMyAxNGExMC44MSAxMC44MSAwIDAgMS05IDkuMTFNMTQuMjcgMS44OGExMC44MSAxMC44MSAwIDAgMSA4LjgzIDguMzciIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjEyLjI1IiBjeT0iMS43NSIgcj0iMS43NSIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iMTIuMjUiIGN5PSIyMi43NSIgcj0iMS43NSIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iNC45MiIgY3k9IjQuNzUiIHI9IjEuNzUiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOi45OXB4Ii8+PGNpcmNsZSBjeD0iMjAuMDkiIGN5PSIxOS45MSIgcj0iMS43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk5cHgiLz48Y2lyY2xlIGN4PSIxLjc1IiBjeT0iMTIuMjUiIHI9IjEuNzUiIGNsYXNzPSJjbHMtNSIvPjxjaXJjbGUgY3g9IjIzLjI1IiBjeT0iMTIuMjUiIHI9IjEuNzUiIGNsYXNzPSJjbHMtNSIvPjxjaXJjbGUgY3g9IjQuNzUiIGN5PSIxOS42NCIgcj0iMS43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk5cHgiLz48Y2lyY2xlIGN4PSIxOS45MSIgY3k9IjQuNDgiIHI9IjEuNzUiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOi45OXB4Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--benchmarks{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDozcHh9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV8yIiBkYXRhLW5hbWU9IkNhbHF1ZSAyIj48cGF0aCBkPSJNNS41MSAyNC45MXYtNS44NU0xMi41NyAyNC45MXYtOS43NE0xOS42MiAyNC45MVYxMC4xNSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibS45MSAxNC45OCA1LjEzLTcuOTQgNi4yNSA1Ljg4TDI0IDEiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1saW5lY2FwOnJvdW5kIi8+PHBhdGggZD0ibTI1IDUtNS01aDV6IiBzdHlsZT0iZmlsbDpncmF5Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTkgMTUtMi41LTEuNSA4LTEyTDE3IDN6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNi41IDEzLjUtLjUgM0w5IDE1eiIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTkuMjUgMi41aDQuMjV2MTZoLTEzdjQuMTdMNi40NiAxOC41bC00Ljk2LS4wNFYyLjVoOC4zMU0xNC41IDIuNWwxLjY3IDEuMzMiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--careers{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTEuNSAxMS41NXY4YzAgLjU2IDEuMDcgMiAyIDJoMThjLjg5IDAgMi0xLjQ0IDItMnYtOCIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTIzLjMxIDMuNUgxLjgxYy0uNDggMC0xLjMxLjU1LTEuMzEgMXY2bDEwIDJhOC40NSA4LjQ1IDAgMCAwIDQgMGwxMC0ydi02YzAtLjQ1LS43Mi0xLTEuMTktMU0xNS42MiAzLjV2LTFjMC0uNzYtLjYxLTEtMS4zOC0xaC0zLjQ1Yy0uNzYgMC0xLjM4LjI0LTEuMzggMXYxIiBjbGFzcz0iY2xzLTEiLz48cmVjdCB3aWR0aD0iNSIgaGVpZ2h0PSIzLjk5IiB4PSIxMCIgeT0iMTEiIHJ4PSIuNTUiIHJ5PSIuNTUiIHN0eWxlPSJmaWxsOmdyYXkiLz48L3N2Zz4=)}.scylla-icon--chevron-left{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTguMDkyIDE2IDEwIDE0LjExMyAzLjgxNyA4IDEwIDEuODg3IDguMDkyIDAgMCA4eiIvPjwvc3ZnPg==)}.contents.local>ul>li a:before,.scylla-icon--chevron-right{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTEuOTA4IDAgMCAxLjg4NyA2LjE4MyA4IDAgMTQuMTEzIDEuOTA4IDE2IDEwIDh6Ii8+PC9zdmc+)}.scylla-icon--circe{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzOCAzMCI+PGRlZnM+PHN0eWxlPi5jbHMtMiwuY2xzLTN7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH0uY2xzLTN7c3Ryb2tlLXdpZHRoOjEuMTFweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik0yMi4xIDEyaC02LjE2YTEuMDYgMS4wNiAwIDAgMS0uOTQtMS4wNy45My45MyAwIDAgMSAuOTQtLjkzaDYuMTZhLjkzLjkzIDAgMCAxIC45NC45M0ExLjA2IDEuMDYgMCAwIDEgMjIuMSAxMiIgc3R5bGU9ImZpbGw6IzRkNGQ0ZCIvPjxwYXRoIGQ9Ik0xMy40NCA0LjQ5SDkuNTF2MjRoMTl2LTI0SDI0LjUiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0xMyAzLjQ5SDguNWwtLjA4IDI2LjFIMjkuNVYzLjM5SDI1IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNMTIuNSAxOC4zOGgxM00xMi41IDE1LjQ5aDEzTTEyLjUgMjEuNDNoMTNNMTIuNSAyNC40N2gxM00xMy41IDIuNWgxMXYzLjk4aC0xMXoiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0yMS41LjVoLTUuMDR2MS45NWw1LjA0LjA1eiIgY2xhc3M9ImNscy0zIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--clock{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PGNpcmNsZSBjeD0iMTAuNSIgY3k9IjkuNSIgcj0iOSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTEwLjUgMy41djZsMy4wNiAzIiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNCIgaGVpZ2h0PSIzNCIgZmlsbD0ibm9uZSI+PGcgZmlsbD0iI2ZmZiIgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBkPSJNMTEuNjcgMjIuMTNhLjU2NC41NjQgMCAwIDEtLjM5OC0uOTYybDkuODk2LTkuODk2YS41NjMuNTYzIDAgMSAxIC43OTcuNzk3bC05Ljg5NiA5Ljg5NmEuNTYuNTYgMCAwIDEtLjM5OS4xNjUiLz48cGF0aCBkPSJNMjEuNTY2IDIyLjEzYS41Ni41NiAwIDAgMS0uMzk4LS4xNjVsLTkuODk2LTkuODk2YS41NjMuNTYzIDAgMSAxIC43OTctLjc5N2w5Ljg5NiA5Ljg5NWEuNTY0LjU2NCAwIDAgMS0uMzk5Ljk2MyIvPjxwYXRoIGQ9Ik0xNi42MTkgMzMuMjM3QzcuNDU1IDMzLjIzNyAwIDI1Ljc4MiAwIDE2LjYxOVM3LjQ1NSAwIDE2LjYxOSAwczE2LjYxOSA3LjQ1NSAxNi42MTkgMTYuNjE5LTcuNDU2IDE2LjYxOC0xNi42MiAxNi42MThtMC0zMi4xMWMtOC41NDIgMC0xNS40OTIgNi45NS0xNS40OTIgMTUuNDkyUzguMDc3IDMyLjExIDE2LjYxOSAzMi4xMSAzMi4xMSAyNS4xNiAzMi4xMSAxNi42MTkgMjUuMTYgMS4xMjcgMTYuNjE5IDEuMTI3Ii8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgzMy4yMzd2MzMuMjM3SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+)}.scylla-icon--cloud{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8yIiB2aWV3Qm94PSIwIDAgNDMuMDQgMzIuMDMiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMWQxZDFiO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iTGF5ZXJfMyI+PHBhdGggZD0iTTQyLjU0IDQuMDZjMCAxLjY4LTMuNjMgMi40NC05IDIuNDRzLTEwLS43My0xMC0yLjRTMjcuNjcuNSAzMy4wNC41czkuNSAxLjg5IDkuNSAzLjU2TTQyLjU0IDkuNjNjMCAxLjY4LTMuNzYgMi45MS05LjEyIDIuOTFzLTkuODQtMS4yMy05Ljg0LTIuOTFNNDIuNTQgMTUuMzRjMCAxLjY4LTMuNjggMy4yNS05LjA0IDMuMjUtNCAwLTcuNi0uOTYtOS4wOS0yLjA0TTQyLjU0IDIwLjY1YzAgMS42OC0zLjcyIDIuOTctOS4wOCAyLjk3TTIzLjU0IDE1LjQ2VjQuMU00Mi41NCAyMC43N1Y0LjEiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0yOC4xMSAyMS4wOGMtLjg3IDAtMS42Ny4yMy0yLjM5LjYxIDAtLjA3LjAxLS4xNC4wMS0uMjEgMC00Ljg1LTMuODMtOC45LTguNjgtOC45cy04Ljg4IDQuMDUtOC44OCA4LjljMCAuMTcuMDIuMzQuMDMuNTEtLjg0LS41Ny0xLjg1LS45MS0yLjk1LS45MS0yLjg4IDAtNC43NCAyLjU3LTQuNzQgNS40NnMxLjg2IDQuOTkgNC43NCA0Ljk5aDIyLjg2YzIuODggMCA1LjUyLTIuMjcgNS41Mi01LjE2cy0yLjYzLTUuMjktNS41Mi01LjI5IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--cloud-docs{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTYuNSAxMS41aDh2MWgtOHpNMTUuNjUgNi41NWEzLjQyIDMuNDIgMCAwIDAtMy4xNSAyIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTAuMDYgMi44QTUuMTcgNS4xNyAwIDAgMSAxNSA2LjM1aC4yNGE0Ljg0IDQuODQgMCAwIDEgMCA5LjY3aC0xMWEzLjQ1IDMuNDUgMCAwIDEgMC02LjlBMy4yIDMuMiAwIDAgMSA1IDkuMiA1LjMgNS4zIDAgMCAxIDQuODYgOGE1LjIgNS4yIDAgMCAxIDUuMi01LjJtMC0uOGE2IDYgMCAwIDAtNiA2di4zMWE0LjI1IDQuMjUgMCAwIDAgLjE4IDguNDloMTFhNS42MyA1LjYzIDAgMCAwIC4zLTExLjI2QTYgNiAwIDAgMCAxMC4wNiAyIiBzdHlsZT0iZmlsbDojNGQ0ZDRkIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--comparison{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTIsLmNscy00e2ZpbGw6bm9uZTtzdHJva2U6Z3JheX0uY2xzLTEsLmNscy0ye3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMiwuY2xzLTR7c3Ryb2tlLWxpbmVjYXA6cm91bmR9LmNscy00e3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik00LjUgMTMuNjN2Mi44OGg2LjA2TTIwLjUgMTMuNTR2Mi45NmwtNS41LjAxIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTIuNSAxOC41djIuNzJNNy41IDIxLjVoMTAiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjEyLjUiIGN5PSIxNi41IiByPSIyIiBzdHlsZT0ic3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7ZmlsbDpncmF5O3N0cm9rZS13aWR0aDouOTVweCIvPjxwYXRoIGQ9Ik01LjA2IDEzLjU4SDMuODhBMy4xIDMuMSAwIDAgMSAuNSAxMC41aDhhMy4xNiAzLjE2IDAgMCAxLTMuNDQgMy4wOE0yMSAxMy41OGgtMS4xN2EzLjA5IDMuMDkgMCAwIDEtMy4zNy0zLjA3aDhBMy4xNiAzLjE2IDAgMCAxIDIxIDEzLjU4TTcuNDYgNS4xMmMwIC41Ny0xLjEuNDYtMi43OS40NlMxLjU4IDUuNiAxLjU4IDUgMyA0LjQgNC42OSA0LjRzMi43Ny4xNiAyLjc3LjcyTTEuNSA5Ljg1VjUuMzFNNy41IDEwLjM1VjUuODFNMjMuNSA1LjEyYzAgLjU3LTEuMS40Ni0yLjc5LjQ2cy0zLjA5IDAtMy4wOS0uNTRTMTkgNC40IDIwLjczIDQuNHMyLjc3LjE2IDIuNzcuNzJNMTcuNTQgOS44NVY1LjMxTTIzLjU0IDEwLjM1VjUuODEiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.scylla-icon--contact-us{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDZweH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJtNi4yOTggMTAuMTggMTMuODMtNy4xOTcgNC42NzYgOC45ODYtMTMuODMgNy4xOTd6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNi4zIDEwLjE4IDguNjMgMS41NmExLjQyIDEuNDIgMCAwIDAgMS41My0uNzRsMy42Ny04TTExLjAyIDE5LjAzbDEuNzQtNU0yNC41OSAxMS45N2wtNS4wOS0xLjQ1TTcuMDkgMTcuNTggMy45IDE5LjM0TTYuMDYgMTUuNDEuNTQgMTguMzYiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--developers-blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJtNi40OCAxMC41OS0uNS4xNy41LjE2TDExIDEyLjE2VjE0bC03LTIuNDlWMTBsNy0yLjV2MS44M1pNMTQgOS4zMlY3LjVsNyAyLjV2MS41NEwxNCAxNHYtMS44M2w0LjE0LTEuMy40NC0uMTMtLjQzLS4xNFoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0xLjUgMi41aDIydjE2aC0xM3Y0LjE3TDYuNDYgMTguNWwtNC45Ni0uMDR6IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6Ljk4cHgiLz48L2c+PC9zdmc+)}.scylla-icon--docs{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNMy41IDIuNTFoMTYuOTR2MjAuOTFIMy41eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTIyLjQ1IDIxLjUuMDUtMjFoLTE3YTIuMTYgMi4xNiAwIDAgMC0yIDIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik02IDZoN3YySDZ6TTYgOWgxMXYySDZ6IiBjbGFzcz0iY2xzLTIiLz48L2c+PC9zdmc+)}.scylla-icon--enterprise{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTEsLmNscy0ye2ZpbGw6bm9uZTtzdHJva2U6IzAwMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye3N0cm9rZS13aWR0aDoxLjA3cHh9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0ibTEzLjYyIDcuNSAxLjg4LTEuMDggMiAyLjA4djdoMU0xNS41IDE1LjV2LTUiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik01LjUgMTUuNXYtMTJsNC0yIDQgMnYxMk05LjUgMTUuNVYxLjZNNy41IDUuNXYxME0xMS41IDUuNXYxMCIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTUuNSA4LjU0IDMuNDYgNy41bC0xLjk2Ljk2djcuMDRoLTFNMy41IDEwLjV2NU0uNSAxNy41aDE4IiBjbGFzcz0iY2xzLTEiLz48L3N2Zz4=)}.scylla-icon--enterprise-m{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIGlkPSJMYXllcl8yXzAwMDAwMDE2NzY4MDY2MDE5MjYzMjMyNzcwMDAwMDA1NDc1ODA5NTExODI4NjY2MDM2XyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQzIDMxIj48c3R5bGU+LnN0MHtmaWxsOm5vbmU7c3Ryb2tlOiMxZDFkMWI7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PGcgaWQ9IkxheWVyXzMiPjxwYXRoIGQ9Im0yOS42IDkuNSA0LTIgNi45IDQuMXYxNS45aDJNMzMuNiAyNy41VjcuNk0xNC42IDI3LjVWNC44TDIyLjUuNSAyOS42IDV2MjIuNU0yMi41IDI3LjVWMU0yNC41IDUuNmwzIDJNMjQuNSA5LjZsMyAyTTI0LjUgMTMuNmwzIDJNMjQuNSAxNy41bDMgMk0yNC41IDIxLjVsMyAyTTM1LjQgMTEuNmwzIDJNMzUuNCAxNS42bDMgMS45TTM1LjQgMTkuNWwzIDJNMzUuNCAyMy41bDMgMS45TTE4LjUgNS44djIxLjdNMTQuNiA5LjdsLTQuMS0yLjUtOCA0LjR2MTUuOWgtMk0xMC41IDI3LjVWNy4yTTEyLjUgMTEuNmwyIDFNMTIuNSAxNS42bDIgLjlNMTIuNSAxOS41bDIgMU0xMi41IDIzLjVsMi4xIDFNNi40IDEyLjR2MTUuMU0uNSAzMC41aDQyIiBjbGFzcz0ic3QwIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--events{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye2ZpbGw6Z3JheX08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMjIuNSAyMy41aC0yMXYtMjBoMjJ2MTUuMjEiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik00LjQyIDMuNWMwLTEuMzYgMS4wOS0yIDIuNDUtMmEyLjQ2IDIuNDYgMCAxIDEgMCA0LjkxIDIuNiAyLjYgMCAwIDEtMS0uMjFNMTAuNjcgMy41YzAtMS4zNiAxLjEtMiAyLjQ2LTJhMi40NiAyLjQ2IDAgMCAxIDAgNC45MSAyLjYgMi42IDAgMCAxLTEtLjIxTTE2LjkzIDMuNWMwLTEuMzYgMS4xLTIgMi40NS0yYTIuNDYgMi40NiAwIDEgMSAwIDQuOTEgMi41IDIuNSAwIDAgMS0xLS4yMSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTcgOWgzdjNIN3pNMTIgOWgzdjNoLTN6TTE3IDloM3YzaC0zek03IDE0aDN2M0g3ek0xMiAxNGgzdjNoLTN6TTE3IDE0aDN2M2gtM3oiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0zLjUgMy42N3YxNi42Nk0zLjUgMjAuNDNjMCAxLjI5LjQ0IDIuMzMgMS43MyAyLjMzczIuMzMtMS45IDIuMzMtMy4xOWwxNi45NC0uMDdjMCAxLjI5LS41NSAzLjEyLTEuODMgMy4xMkg2LjMiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--exclamation{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PG1hc2sgaWQ9ImEiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiIgeD0iMSIgeT0iMSIgbWFzay10eXBlPSJhbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEyIDIzQzUuOSAyMyAxIDE4LjEgMSAxMlM1LjkgMSAxMiAxczExIDQuOSAxMSAxMS00LjkgMTEtMTEgMTFtMC0yMGMtNSAwLTkgNC05IDlzNCA5IDkgOSA5LTQgOS05LTQtOS05LTkiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTIgMTNjLS42IDAtMS0uNC0xLTFWOGMwLS42LjQtMSAxLTFzMSAuNCAxIDF2NGMwIC42LS40IDEtMSAxTTEyIDE3Yy0uMyAwLS41LS4xLS43LS4zcy0uMy0uNC0uMy0uN2MwLS4xIDAtLjMuMS0uNHMuMS0uMi4yLS4zYy4zLS4zLjctLjQgMS4xLS4yLjEgMCAuMSAwIC4yLjEgMCAwIC4xLjEuMi4xLjEuMS4yLjIuMi4zdi40YzAgLjEgMCAuMy0uMS40cy0uMS4yLS4yLjNjLS4yLjItLjQuMy0uNy4zIi8+PC9tYXNrPjxnIG1hc2s9InVybCgjYSkiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoMjR2MjRIMHoiLz48L2c+PC9zdmc+)}.scylla-icon--expand{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNi4wMDEiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik01IDEzYTEgMSAwIDAgMS0uNzEtLjI5bC00LTRhMSAxIDAgMCAxIDAtMS40MWw0LTRhMSAxIDAgMCAxIDEuNDIgMS40MUwyLjQxIDhsMy4yOSAzLjI5QTEgMSAwIDAgMSA1IDEzIi8+PHBhdGggZD0iTTExIDlIMWExIDEgMCAwIDEgMC0yaDEwYTEgMSAwIDAgMSAwIDJNMTUgMTZhMSAxIDAgMCAxLTEtMVYxYTEgMSAwIDAgMSAyIDB2MTRhMSAxIDAgMCAxLTEgMSIvPjwvc3ZnPg==)}.scylla-icon--forum{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItdXNlcnMiPjxwYXRoIGQ9Ik0xNyAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyIi8+PGNpcmNsZSBjeD0iOSIgY3k9IjciIHI9IjQiLz48cGF0aCBkPSJNMjMgMjF2LTJhNCA0IDAgMCAwLTMtMy44N00xNiAzLjEzYTQgNCAwIDAgMSAwIDcuNzUiLz48L3N2Zz4=)}.scylla-icon--help{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWhlbHAtY2lyY2xlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIvPjxwYXRoIGQ9Ik05LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgM00xMiAxN2guMDEiLz48L3N2Zz4=)}.scylla-icon--home{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl81IiBkYXRhLW5hbWU9IkxheWVyIDUiPjxwYXRoIGQ9Ik0zLjUgNi4xNHYxMWExLjM4IDEuMzggMCAwIDAgMS4zNyAxLjM2aDExLjI2YTEuMzggMS4zOCAwIDAgMCAxLjM3LTEuMzd2LTExIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMTkuNSA3LjUtOC02LjI1YTEuNTkgMS41OSAwIDAgMC0xLjk0IDBMMS41IDcuNU0xMi43MyAxOC4wMnYtNy4yMUg4LjI3djcuMjEiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--getting-started{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTcgNC41IDguNTEgNS4wNUw3IDE0LjV6IiBzdHlsZT0iZmlsbDojNGQ0ZDRkIi8+PHJlY3Qgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiB4PSIxLjUiIHk9Ii41IiByeD0iMi40MyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzRkNGQ0ZDtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjwvZz48L3N2Zz4=)}.scylla-icon--glossary{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIuNSAyLjVoMTN2MTZoLTEzeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1LjU4IDE3LjIxaDEuOTJWLjVoLTEzYTIuMzQgMi4zNCAwIDAgMC0yIDIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik00LjggMTMuOTNhMSAxIDAgMCAwIC43NS0uNDMgNiA2IDAgMCAwIC41Mi0xLjA4bDIuODctNy4wN2guMzZsMi44OCA2Ljc5YTkgOSAwIDAgMCAuNzIgMS40Ny43Ni43NiAwIDAgMCAuNjguMzJ2LjMySDkuNHYtLjMyYTMuMiAzLjIgMCAwIDAgLjgzLS4xMWMuMTMtLjA2LjItLjE5LjItLjQyYTEuNiAxLjYgMCAwIDAtLjEtLjQ2YzAtLjEyLS4xLS4yNy0uMTctLjQ0bC0uMzMtLjc4aC0yLjljLS4xOS41MS0uMzEuODUtLjM2IDFhMi40IDIuNCAwIDAgMC0uMTcuNzNjMCAuMTguMTIuMzIuMzcuNGEyLjYgMi42IDAgMCAwIC42Ni4wOHYuMzJINC44Wm00Ljg0LTIuNzItMS4yNC0zaC0uMTFsLTEuMTYgM1oiIHN0eWxlPSJmaWxsOiM0ZDRkNGQiLz48L2c+PC9zdmc+)}.scylla-icon--infoworld{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTB9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNMTIgMi41SDYuNVY2YzAgMyAuNTUgNy4xNyA1IDkuNXY0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNi40IDQuNDRoLTRTMi41NiAxMSA4LjUgMTNNMTguNSA0LjVsNC0uMDZzLS4wNiA2LjU2LTYgOC41NiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTEyIDIuNWg2LjVWNmMwIDIuOTQtLjQgNy4wOC01IDkuNXY0TTkuNSAxOS41aDZ2MmgtNnoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik03LjUgMjEuNWgxMHYxaC0xMHoiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXkiLz48L2c+PC9zdmc+)}.scylla-icon--integrations{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTE0LjU2IDEyLjctMS4yNS0xLjU3LTEuMzEuNzZhNiA2IDAgMCAwLTEuNjUtMWwuMDgtMS40OS0yLS40LS41MyAxLjQ0YTUuNyA1LjcgMCAwIDAtMS44Ny4zMWwtLjg4LTEuMTktMS43NyAxTDMuOTIgMTJhNi4zIDYuMyAwIDAgMC0xLjIyIDEuNDFsLTEuNS0uMzUtLjc0IDEuODcgMS4zOC44YTYuMiA2LjIgMCAwIDAgMCAxLjgzbC0xLjQxLjcyLjY0IDEuOTEgMS41OS0uMjhhOCA4IDAgMCAwIC40OC42OCA2IDYgMCAwIDAgLjY3LjczbC0uNjIgMS40NiAxLjcyIDEgMS0xLjI0YTYuNSA2LjUgMCAwIDAgMS43OS4zNWwuNDYgMS41MiAyLS4zdi0xLjZhNi40IDYuNCAwIDAgMCAxLjYyLS44OWwxLjMuODVMMTQuNDMgMjFsLTEtMS4yYTYuMiA2LjIgMCAwIDAgLjY4LTEuNzVsMS41MS0uMTkuMDUtMi0xLjUxLS4yNmE2IDYgMCAwIDAtLjYyLTEuODFabS01LjM1IDUuNTFhMS45MyAxLjkzIDAgMSAxIC4zMS0yLjcxIDEuOTIgMS45MiAwIDAgMS0uMzEgMi43MSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTI0LjMxIDguMDUtLjEzLTEuNjUtMS4yNS0uMDlhNS4zIDUuMyAwIDAgMC0uNjctMS40NGwuNzUtMS0xLjE2LTEuMTctMSAuNzRhNS4yIDUuMiAwIDAgMC0xLjQzLS42NmwtLjA2LTEuMjQtMS42NS0uMTctLjMyIDEuMjVhNS44IDUuOCAwIDAgMC0xLjUyLjM4TDE1IDIuMWwtMS4zNy45LjU4IDEuMThhNC45IDQuOSAwIDAgMC0uODYgMS4yNWwtMS4zLS4xNi0uNDUgMS42IDEuMjIuNTVhNSA1IDAgMCAwIDAgLjY4QTQuMyA0LjMgMCAwIDAgMTMgOWwtMS4xMS43Mi42OSAxLjUxIDEuMjgtLjM3YTUgNSAwIDAgMCAxLjA3IDEuMDdsLS4zOSAxLjI2IDEuNS43MS43NC0xLjA5YTUgNSAwIDAgMCAxLjUyLjE0bC41IDEuMTkgMS42MS0uNDEtLjEzLTEuMjlhNS4xIDUuMSAwIDAgMCAxLjI3LS44OGwxLjEyLjU3IDEtMS4zNS0uOTEtLjg4YTQuOSA0LjkgMCAwIDAgLjQyLTEuNTJabS02LjIgMS40M2ExLjc0IDEuNzQgMCAxIDEgMS42LTEuODYgMS43NCAxLjc0IDAgMCAxLTEuNiAxLjg2IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--knowledge-base{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkfS5jbHMtMXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye3N0cm9rZS1taXRlcmxpbWl0OjEwfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl81IiBkYXRhLW5hbWU9IkxheWVyIDUiPjxwYXRoIGQ9Ik0xNi4yMSA2LjM4YTUuMzYgNS4zNiAwIDAgMS0xLjUxIDMuNzMgNSA1IDAgMCAwLTEuNDUgMy4zMUg4LjQ3YTUuNCA1LjQgMCAwIDAtMS4yOC0zLjExIDUuMzcgNS4zNyAwIDEgMSA5LTMuOTNaTTEzLjIzIDE1LjY3SDguNDUiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0xMy4yNCAxMy40aC00Ljh2NC4xNmEuNy43IDAgMCAwIC43MS43aDMuMzhhLjcuNyAwIDAgMCAuNzEtLjdaIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTAuODQgOC4yMWExLjY1IDEuNjUgMCAxIDEgMS42NC0xLjY1IDEuNjUgMS42NSAwIDAgMS0xLjY0IDEuNjVaTTEwLjg0IDguNjd2NC42NCIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--less{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNyIgZmlsbD0ibm9uZSI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiBmaWxsPSIjYjNiYWM1IiByeD0iMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMyA4LjVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMSAwLTJoN2ExIDEgMCAwIDEgMSAxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEzIDguNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxIDAtMmg3YTEgMSAwIDAgMSAxIDEiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTMgOC41YTEgMSAwIDAgMS0xIDFINWExIDEgMCAwIDEgMC0yaDdhMSAxIDAgMCAxIDEgMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMyA4LjVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMSAwLTJoN2ExIDEgMCAwIDEgMSAxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEzIDguNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxIDAtMmg3YTEgMSAwIDAgMSAxIDEiLz48L3N2Zz4=);filter:none}.scylla-icon--live-test{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtNntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWxpbmVjYXA6cm91bmR9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTUiIHI9IjkuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MS41cHgiLz48cGF0aCBkPSJNMTAgLjVoNXYyaC01eiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMXB4Ii8+PHBhdGggZD0iTTUuOCA4LjIgNC4xMyA2LjUzbDEuOC0xLjgxTDcuNiA2LjQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjExcHgiLz48cGF0aCBkPSJNMTIgNlYyLjUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjEuMTNweCIvPjxwYXRoIGQ9Ik0xMyA2VjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MS4wOHB4Ii8+PHBhdGggZD0iTTEyLjUgOC4wNlYxME0xMi41IDIwLjA0djEuODhNNy4xMyAxMC4wOGwxLjc5IDEuODhNMTYuMDQgMTcuMDhsMiAxLjg4TTcgMTguOTJsMS44OC0xLjg4TTE2LjEzIDExLjk2bDEuNzktMS44MyIgY2xhc3M9ImNscy02Ii8+PGVsbGlwc2UgY3g9IjEyLjUiIGN5PSIxNC4zNiIgcng9IjEuNSIgcnk9IjEuMzYiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJtMTIuNjMgMTQuNTQgMi41IDYuMzgiIGNsYXNzPSJjbHMtNiIvPjwvZz48L3N2Zz4=)}.scylla-icon--mail-list{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItbWFpbCI+PHBhdGggZD0iTTQgNGgxNmMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTIiLz48cGF0aCBkPSJtMjIgNi0xMCA3TDIgNiIvPjwvc3ZnPg==)}.scylla-icon--manager{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtM3tmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOTdweH0uY2xzLTR7ZmlsbDpncmF5fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGlkPSJDYWxxdWVfMiIgZD0iTTE4IDJoNXYyMkgzVjJoNC45MiIgZGF0YS1uYW1lPSJDYWxxdWUgMiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiLz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik04IDBoMTB2NEg4eiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDdweCIvPjxwYXRoIGQ9Ik03IDloM3YzSDd6TTcgMTZoM3YzSDd6IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNMTIuNSA5LjVoN3YyaC03ek0xMi41IDE2LjVoN3YyaC03eiIgY2xhc3M9ImNscy00Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--memory-management{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH0uY2xzLTJ7c3Ryb2tlLXdpZHRoOjEuMTNweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxyZWN0IHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgeD0iNS41IiB5PSI1LjUiIGNsYXNzPSJjbHMtMSIgcng9IjIuNzQiIHJ5PSIyLjc0Ii8+PHBhdGggZD0iTTkuNSA5LjVoN3Y3aC03eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTguNSA1LjV2LTRNMTEuNSA1LjV2LTRNMTQuNSA1LjV2LTRNMTcuNSA1LjV2LTRNOC41IDI0LjV2LTRNMTEuNSAyNC41di00TTE0LjUgMjQuNXYtNE0xNy41IDI0LjV2LTRNMjAuNSA4LjVoNE0yMC41IDExLjVoNE0yMC41IDE0LjVoNE0yMC41IDE3LjVoNE0xLjUgOC41aDRNMS41IDExLjVoNE0xLjUgMTQuNWg0TTEuNSAxNy41aDQiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--monitoring{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTUuNTUgMTAuODlhMy44MyAzLjgzIDAgMCAxLS4xNS0zLjc2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIvPjxyZWN0IHdpZHRoPSIzLjA1IiBoZWlnaHQ9IjEwLjgiIHg9IjE3LjYzIiB5PSIxNC4wMSIgcng9Ii41NyIgcnk9Ii41NyIgc3R5bGU9InN0cm9rZTpncmF5O2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk1cHg7c3Ryb2tlLW1pdGVybGltaXQ6MTAiIHRyYW5zZm9ybT0icm90YXRlKC00NSAxOS4xNTggMTkuNDA1KSIvPjxjaXJjbGUgY3g9IjguNSIgY3k9IjkiIHI9IjciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjJweCIvPjxwYXRoIGQ9Im0xNi4wNSAxNi4zOS0yLjI4LTIuMjgiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48L2c+PC9zdmc+)}.scylla-icon--networking{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTB9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTIuNSIgcj0iNCIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6Ljk0cHgiLz48Y2lyY2xlIGN4PSI1IiBjeT0iMyIgcj0iMi41IiBjbGFzcz0iY2xzLTIiLz48Y2lyY2xlIGN4PSIxOSIgY3k9IjIwIiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjIyIiBjeT0iNi42IiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjQuNSIgY3k9IjIyIiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Im02LjgzIDUuNSAzLjI1IDQuMzNNMjAuMjMgNy44NSAxNS4zMyAxMU05LjgzIDE1LjA4bC00LjA5IDUuODRNMTQuNTggMTUuMzNsMyAzLjA5IiBjbGFzcz0iY2xzLTIiLz48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTIuNSIgcj0iMS41IiBzdHlsZT0iZmlsbDpncmF5Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--news{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTMgMTUuMTcgMTYuMzEgMy44MmExLjQ4IDEuNDggMCAwIDEgMi4yMi40Nmw1LjE1IDkuNjVhMS40NiAxLjQ2IDAgMCAxLS45MyAyLjEyTDUuNjkgMTkuOVpNOC43MSAxOS4zM2wuNzYgMi4yMmExLjUxIDEuNTEgMCAwIDAgMS44NSAxbDMuNTgtMS4wNmExLjUgMS41IDAgMCAwIDEtMS44NkwxNS40NSAxOE01LjU0IDIwbC0xLjgzIDFhLjkyLjkyIDAgMCAxLTEuMjUtLjM3TC42MSAxNy40OUEuOTIuOTIgMCAwIDEgMSAxNi4yNGwxLjgzLTFNOC41IDE0bDcuMzgtNS41IiBjbGFzcz0iY2xzLTEiLz48L3N2Zz4=)}.scylla-icon--newsletter{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMntzdHJva2UtbGluZWNhcDpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik0xOS41IDkuNWgzdjEyaC0yMHYtMTJoMyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTIuNjUgOS44NCA5Ljg1IDYuODggOC42My02Ljg4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNS41IDcuNS0zIDJNMTQuMzUgMy44NmwtMS40Ni0xLjA5LTEuNDcgMS4wOU0yMS41IDkuNWwtMi0yTTE5LjUgMTEuNXYtN2gtMTR2Ny40NyIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--nsql-guides{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHJlY3Qgd2lkdGg9IjEuMTUiIGhlaWdodD0iOS43MiIgeD0iNC4zNyIgeT0iMTMuNzEiIHJ4PSIuNTQiIHJ5PSIuNTQiIHN0eWxlPSJmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOjEuMDlweDtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIgdHJhbnNmb3JtPSJyb3RhdGUoNDUgNC45NDggMTguNTcpIi8+PGNpcmNsZSBjeD0iMTIuMjUiIGN5PSIxMi4yNSIgcj0iNC43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MS41cHgiLz48cGF0aCBkPSJNOC41IDIwLjV2M2gxNXYtMjFoLTE1djIiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOm5vbmU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDZweCIvPjwvZz48L3N2Zz4=)}.scylla-icon--open-source{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNLjMxIDIxLjUxIDUgMTkuNjlhMi4zNyAyLjM3IDAgMCAxIDEuODguMTlsNS4yNCAxLjY4YTIuMjMgMi4yMyAwIDAgMCAyLS4xMmw5LjUtNC43NWMuOC0uNDQgMS42NC0xLjMxIDEuMTMtMS45MWEyLjM0IDIuMzQgMCAwIDAtMi42NC0uNDJMMTggMTYuMDkiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Im0uMjUgMTUuNjkgNC44OC0xLjIxYzEuMjUtLjMgMi4xNy0uNjMgMy40NC0uMTNhMTUuMiAxNS4yIDAgMCAwIDQgMS4xaDQuNTJjLjg1IDAgLjk1LjU0Ljk1IDEuMTNhMSAxIDAgMCAxLTEuMDggMSA2NiA2NiAwIDAgMS03LS4zMSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTguNTYgOS42OHYtLjgxYzAtLjkxLS4zOC0xLjIxLTEuMjktMS4yMUg3VjYuM2guMzFjLjkxIDAgMS4yOS0uMyAxLjI5LTEuMjF2LS44MWMwLTEuMi42Ni0xLjkyIDIuODItMi4zdjEuMTZjLTEuMjQuMzUtMS40My42OC0xLjQzIDEuNHYuODdBMS41MiAxLjUyIDAgMCAxIDguNzUgNyAxLjUyIDEuNTIgMCAwIDEgMTAgOC41NnYuODdjMCAuNzEuMTkgMSAxLjQzIDEuNFYxMmMtMi4yMS0uMzUtMi44Ny0xLjEyLTIuODctMi4zMk0xNy40MyA0LjN2LjgxYzAgLjkxLjM3IDEuMjEgMS4yOSAxLjIxSDE5djEuMzZoLS4zMWMtLjkyIDAtMS4yOS4zLTEuMjkgMS4yMXYuODFjMCAxLjItLjY1IDItMi44MSAyLjM1di0xLjJjMS4yNS0uMzYgMS40NC0uNjkgMS40NC0xLjR2LS44N0ExLjUzIDEuNTMgMCAwIDEgMTcuMjUgNyAxLjUzIDEuNTMgMCAwIDEgMTYgNS40M3YtLjg3YzAtLjcyLS4xOS0xLTEuNDQtMS40VjJjMi4yMi4zOCAyLjg3IDEuMSAyLjg3IDIuMyIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--operator{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjQuODEgMS4wMSAyOC4zMiAyNy42NCI+PHBhdGggZD0iTTMyLjUyIDE4cy0uMDkgMC0uMDktLjA1LS4wOCAwLS4xNyAwYTIuMiAyLjIgMCAwIDAtLjUxIDAgLjQ3LjQ3IDAgMCAxLS4yNi0uMDUgOS4zIDkuMyAwIDAgMS0xLjQ5LS4zMi41NC41NCAwIDAgMS0uMy0uMzFsLS4zNC0uMDhhMTEuMyAxMS4zIDAgMCAwLS4xOC0zLjc5IDExLjYgMTEuNiAwIDAgMC0xLjUtMy41MmwuMjYtLjI2YS42LjYgMCAwIDEgLjEzLS4zOSA3LjcgNy43IDAgMCAxIDEuMi0uODZsLjI2LS4xMy40Ny0uM3MuMDkgMCAuMTMtLjA4IDAtLjA1IDAtLjA5YS44NC44NCAwIDAgMCAuMTctMS4yLjc4Ljc4IDAgMCAwLS42LS4zIDEgMSAwIDAgMC0uNi4yMWMtLjA1LjA1LS4wOS4wOS0uMTMuMDlhMyAzIDAgMCAwLS4zNS4zOWMwIC4wOC0uMTMuMTMtLjE3LjE3YTUuNiA1LjYgMCAwIDEtMS4wNy45NC42LjYgMCAwIDEtLjI2LjA5LjI1LjI1IDAgMCAxLS4xNyAwaC0uMDVsLS4zNC4yMS0xLjA4LTFhMTEgMTEgMCAwIDAtNS42NS0yLjI3di0uMzRhLjYuNiAwIDAgMS0uMjItLjM0QTggOCAwIDAgMSAxOS42NiAzdi0uMjVjMC0uMDguMDUtLjM1LjA5LS41MnYtLjMxYS44Mi44MiAwIDAgMC0xLjQ2LS42Ljg2Ljg2IDAgMCAwLS4yNi42di4yMmExLjggMS44IDAgMCAwIC4wOS41MS42LjYgMCAwIDEgMCAuMjZWM2E5IDkgMCAwIDEgLjA4IDEuNDcuNi42IDAgMCAxLS4yMS4zNHYuNDNjLS40OCAwLTEgLjEzLTEuNDcuMjJhMTAuMTYgMTAuMTYgMCAwIDAtNS4yOCAzTDExIDguMjRoLS4xN2EuNy43IDAgMCAxLS4yNi0uMDkgOCA4IDAgMCAxLTEuMDctMWMwLS4wOC0uMTMtLjEzLS4xNy0uMTdzLS4yNS0uMi0uMzMtLjMzLS4wOCAwLS4xMy0uMDh2LS4wNWExIDEgMCAwIDAtLjYtLjIxLjY0LjY0IDAgMCAwLS42LjMuOTEuOTEgMCAwIDAgLjE3IDEuMnMwIC4wNSAwIC4wNS4wOS4wOC4xMy4wOGE1IDUgMCAwIDAgLjQ3LjI2bC4yNi4xM2E2LjYgNi42IDAgMCAxIDEuMjEuODYuNDcuNDcgMCAwIDEgLjEzLjM5di0uMDVsLjI1LjI2YTMgMyAwIDAgMS0uMTMuMjIgMTAuMiAxMC4yIDAgMCAwLTEuNSA3bC0uMzUuMDljMCAuMTMtLjE3LjIxLS4zLjNhOC42IDguNiAwIDAgMS0xLjQ2LjI2LjYuNiAwIDAgMC0uMjYgMGgtLjUyYy0uMTggMC0uMDguMDUtLjE3LjA1aC0uMDhhLjg0Ljg0IDAgMCAwLS42OSAxIC43OS43OSAwIDAgMCAuODYuNi40LjQgMCAwIDAgLjIxIDBoLjIyYTQgNCAwIDAgMCAuNDctLjE3LjY1LjY1IDAgMCAxIC4yNi0uMDggNy43IDcuNyAwIDAgMSAxLjQyLS4zOS41LjUgMCAwIDEgLjM1LjEzaC4zOWExMC4zIDEwLjMgMCAwIDAgMy41MyA1IDYuMyA2LjMgMCAwIDAgMS4xNi43N2wtLjIyLjNhLjUxLjUxIDAgMCAxIDAgLjQzIDYuNSA2LjUgMCAwIDEtLjY5IDEuMjR2LjA1YS44LjggMCAwIDEtLjE3LjIxYy0uMDkuMDktLjE3LjI2LS4zLjQzczAgLjA5LS4wOS4xMyAwIC4wNSAwIC4wNWEuODguODggMCAwIDAgLjM0IDEuMTYuOS45IDAgMCAwIC4zLjA4IDEgMSAwIDAgMCAuODItLjUxczAtLjA4LjA5LS4xMy4xMy0uMy4xNy0uNDdsLjA5LS4yNmE3IDcgMCAwIDEgLjU2LTEuMzMuNjIuNjIgMCAwIDEgLjM0LS4yNmwuMTctLjM1YTEwIDEwIDAgMCAwIDMuNzUuNjkgOC41IDguNSAwIDAgMCAyLjMyLS4zIDEyIDEyIDAgMCAwIDEuMzctLjM5bC4xOC4zMWEuNjIuNjIgMCAwIDEgLjM0LjI2IDcgNyAwIDAgMSAuNTYgMS4zM2wuMDkuMjZhMS4zIDEuMyAwIDAgMCAuMTcuNDdjMCAuMDUgMCAuMDkuMDkuMTNhMSAxIDAgMCAwIC44Mi41MSAxIDEgMCAwIDAgLjM0LS4wOC43Ni43NiAwIDAgMCAuMzktLjQ4IDEuMSAxLjEgMCAwIDAtLjA1LS42NC4yLjIgMCAwIDAtLjA4LS4xMyAxLjUgMS41IDAgMCAwLS4zMS0uNDMuNjUuNjUgMCAwIDAtLjE3LS4yMnYtLjA5YTUuMiA1LjIgMCAwIDEtLjY5LTEuMjQuNTEuNTEgMCAwIDEgLjA1LS40M2wtLjEzLS4zNEExMC42OCAxMC42OCAwIDAgMCAyOSAxOC44MmwuMzQuMDV2LS4wNWEuNTQuNTQgMCAwIDEgLjM1LS4xMyA4IDggMCAwIDEgMS4zOC4zOS42LjYgMCAwIDAgLjI2LjA5IDIuNCAyLjQgMCAwIDAgLjQ3LjIxcy4wOSAwIC4xNyAwaC4wOWEuNC40IDAgMCAwIC4yMSAwIC45NC45NCAwIDAgMCAuODYtLjYgMSAxIDAgMCAwLS43Ny0uOVptLTEyLjQzLTEuMzMtMS4xNi41Ni0xLjE2LS41Ni0uMy0xLjI1LjgxLTFoMS4yOWwuODIgMVptNy0yLjc5YTggOCAwIDAgMSAuMTcgMi43MWwtNC4xNS0uNzVjLS4zOC0uMDgtLjY4LS45LS43MS0xLjIyYTQgNCAwIDAgMSAuMjEtLjc0bDMuNDUtMi41NGE4LjYgOC42IDAgMCAxIDEuMDQgMi41NFptLTIuMzEtNC4xMy0zLjIyIDIuNjlhMS4yOCAxLjI4IDAgMCAxLTEuMjUtLjM3Yy0uMDktLjA5LS4zNy0uMjUtLjM3LS4zOFY3LjQzYTguMDcgOC4wNyAwIDAgMSA0Ljg2IDIuMzJaTTE3IDcuNTZsMS0uMTgtLjA2IDQuMzFjMCAuMzgtLjY0LjY4LTEgLjY4YTEuMSAxLjEgMCAwIDEtLjM1LS4wOEwxMyA5Ljc1YTguNCA4LjQgMCAwIDEgNC0yLjE5bS01LjI0IDMuNzggMy4zNyAyLjQ3LjMyLjUzYTEuMTQgMS4xNCAwIDAgMS0uMjUgMSAuNzguNzggMCAwIDEtLjM4LjMxbC00LjMxLjlhOSA5IDAgMCAxIDEuMjQtNS4yMVpNMTEgMTguNjFsNC4xLTEuMjNjLjM1IDAgLjg0LjcxLjg5IDEuMDZhLjUxLjUxIDAgMCAxLS4wNS40M2wtMS42MyAzLjk1QTguNCA4LjQgMCAwIDEgMTEgMTguNjFtOS43NiA1LjMzYTguNyA4LjcgMCAwIDEtMS44NS4yMSA5LjYgOS42IDAgMCAxLTIuNzEtLjQzbDEuNjYtNGMuMjEtLjI2IDEtLjIgMS4zMSAwYTIuNSAyLjUgMCAwIDEgLjM0LjNsMi4wNyAzLjc0YTYgNiAwIDAgMC0uOC4xOFpNMjYgMjAuMmE4LjQgOC40IDAgMCAxLTIuNTggMi41OGwtMS45Mi0zLjcyYTEuMTUgMS4xNSAwIDAgMSAuNDEtMWMuMjEtLjI1LjU5LS41OS43MS0uNTlsNC4yMiAxLjA2QTYuMyA2LjMgMCAwIDEgMjYgMjAuMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiIgc3R5bGU9ImZpbGw6IzRkNGQ0ZCIvPjwvc3ZnPg==)}.scylla-icon--overview{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIyLjYxIDMuNDVDMjIuNjEgNS4wNiAxOCA2LjUgMTIuNSA2LjVzLTEwLTEuNDQtMTAtMyA0LjUtMyAxMC0zIDEwLjExIDEuMzMgMTAuMTEgMi45NU0yMi42MSA5LjQ0YzAgMS42MS00LjY0IDMuMDYtMTAuMTEgMy4wNnMtMTAtMS40NS0xMC0zLjA2TTIyLjYxIDE1LjUxYzAgMS42Mi00LjY0IDMtMTAuMTEgM3MtMTAtMS4zNy0xMC0zTTIyLjYxIDIxLjU5YzAgMS42Mi00LjY0IDIuOTEtMTAuMTEgMi45MXMtMTAtMS4yOS0xMC0yLjkxTTIuNSAyMS40N1YzLjQ1TTIyLjUgMjEuNDdWMy40NSIgY2xhc3M9ImNscy0xIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--partners{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTE4LjUgOC4yNmgtNC43MmwtMS4yMyAxLjI3TTIuMzkgMTUuMDkuMTUgMTMuNzRsNC44Ny04LjQyIDIuMjQgMS4zNHpNMjIuNTkgMTUuMDlsMi4yNC0xLjM1LTQuODYtOC40Mi0yLjI0IDEuMzR6TTEwLjcxIDE1LjI2bC0yLjkzIDIuMjFNMTIuMTggMTYuNGwtMi45MyAyLjIxTTEzLjY4IDE3LjUzbC0yLjkzIDIuMjIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik02LjM4IDguM2gzLjc4YTIuMjcgMi4yNyAwIDAgMSAxLjM3LjQ3YzEuMjYgMSA0LjA5IDMuMTggNC40OCAzLjU2cy0xLjE0IDEuNjgtMi4yNyAxLjFhMTggMTggMCAwIDAtMi4xMS0uOTIuNTcuNTcgMCAwIDAtLjU2LjA5bC00Ljc5IDMuODlMMTIuMzMgMjFsOS40Ni03LjA5TTMuMjQgMTQuMjJsMy40IDEuODUiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--plus{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNyIgZmlsbD0ibm9uZSI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiBmaWxsPSIjYjNiYWM1IiByeD0iMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSA1YTEgMSAwIDEgMC0yIDB2Mi41SDVhMSAxIDAgMSAwIDAgMmgyLjVWMTJhMSAxIDAgMSAwIDIgMFY5LjVIMTJhMSAxIDAgMSAwIDAtMkg5LjV6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgNWExIDEgMCAxIDAtMiAwdjIuNUg1YTEgMSAwIDEgMCAwIDJoMi41VjEyYTEgMSAwIDEgMCAyIDBWOS41SDEyYTEgMSAwIDEgMCAwLTJIOS41eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS41IDVhMSAxIDAgMSAwLTIgMHYyLjVINWExIDEgMCAxIDAgMCAyaDIuNVYxMmExIDEgMCAxIDAgMiAwVjkuNUgxMmExIDEgMCAxIDAgMC0ySDkuNXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSA1YTEgMSAwIDEgMC0yIDB2Mi41SDVhMSAxIDAgMSAwIDAgMmgyLjVWMTJhMSAxIDAgMSAwIDIgMFY5LjVIMTJhMSAxIDAgMSAwIDAtMkg5LjV6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgNWExIDEgMCAxIDAtMiAwdjIuNUg1YTEgMSAwIDEgMCAwIDJoMi41VjEyYTEgMSAwIDEgMCAyIDBWOS41SDEyYTEgMSAwIDEgMCAwLTJIOS41eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+);filter:none}.scylla-icon--pricing{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0ibTIxLjczIDctMi40MS01LjEyYTIuNTIgMi41MiAwIDAgMC0yLjgyLTFsLTYuMDggMi4wNEExLjY5IDEuNjkgMCAwIDAgOS41MSA0TDMuOTMgMTkuMjlhMS4wNiAxLjA2IDAgMCAwIC42NCAxLjE3bDEwLjM0IDMuNzZhMSAxIDAgMCAwIDEuMjItLjQzbDUuNTgtMTUuMzNBMS44NyAxLjg3IDAgMCAwIDIxLjczIDciIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjE1LjczIiBjeT0iNS44OSIgcj0iMiIgY2xhc3M9ImNscy0xIi8+PHRleHQgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZpbGw6Z3JheTtmb250LWZhbWlseTpSb2JvdG8tTWVkaXVtLFJvYm90byIgdHJhbnNmb3JtPSJyb3RhdGUoMjAgLTQ4LjI0NCAzMC42NykiPiQ8L3RleHQ+PC9nPjwvc3ZnPg==)}.scylla-icon--release-note{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOTFweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzIiIGRhdGEtbmFtZT0iQ2FscXVlIDIiPjxwYXRoIGQ9Ik0yMS41IDI0LjVoLTE3VjUuN0w4Ljk1LjU0IDIxLjUuNXoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOXB4Ii8+PHBhdGggZD0iTTQuNjUgNS41SDkuNVYxTTcuNSA4LjVoMTFNNy41IDExLjVoMTFNNy41IDE0LjVoMTFNNy41IDE3LjVoMTFNNy41IDIwLjVoMTEiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--resource-center{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNNS41IDIuNWg2LjkxbC4wOSAyMGgtN3oiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik04IDRoMnYxMC45N0w4IDE1eiIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTUuMzYgMi4yOSAyLjUgMy41djE4bDIuNzkgMS4xNCIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTEyLjU3IDIxLjg2IDEuNTcuNzUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouNjhweCIvPjxwYXRoIGQ9Im0xNC4xMSAyLjUtMS41NC41NyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOi44NXB4Ii8+PGNpcmNsZSBjeD0iOSIgY3k9IjE5IiByPSIxIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJNMTQuNSAyLjVoNi45NGwuMDYgMjBoLTd6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTcgNGgydjEwLjk3TDE3IDE1eiIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOSIgcj0iMSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTEyLjYgMi43M2gxLjY3VjIyLjZIMTIuNnpNMi41OCAyMS41bDIuNzUgMS4xVjIuNzNsLTIuNjYuOTR6IiBjbGFzcz0iY2xzLTIiLz48L2c+PC9zdmc+)}.scylla-icon--roadmap{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5fS5jbHMtMXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOi45OHB4fS5jbHMtMntzdHJva2UtbWl0ZXJsaW1pdDoxMH0uY2xzLTN7ZmlsbDpncmF5fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibS41IDQuNSA4LTMgOCA0IDgtM3YxN2wtOCAzLTgtNC04IDN6TTguNSAxLjVWMThNMTYuNSA1LjVWMjIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0yLjUgMTMgNyAxNi41TTcgMTJsLTQuNSA1LjVNMTguNSA4bDQuNSAzLjVNMjMgN2wtNC41IDUuNSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTEwIDEzaDF2MWgtMXpNMTIgMTJoMXYxaC0xek0xNCAxMWgxdjFoLTF6IiBjbGFzcz0iY2xzLTMiLz48L2c+PC9zdmc+)}.scylla-icon--search{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTEwLjUgMThhNy41IDcuNSAwIDEgMCAwLTE1IDcuNSA3LjUgMCAwIDAgMCAxNU0yMSAyMWwtNS4yLTUuMiIvPjwvc3ZnPg==)}.scylla-icon--slack{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tISBGb250IEF3ZXNvbWUgUHJvIDYuMC4wIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIyIEZvbnRpY29ucywgSW5jLi0tPjxwYXRoIGQ9Ik05NC4xMiAzMTUuMWMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZTMCAzNDEgMCAzMTUuMXMyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNmg0Ny4wNnptMjMuNzIgMGMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ2MTE3Ljg0YzAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNnMtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZ6bTQ3LjA2LTE4OC45OGMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2UzEzOSAzMiAxNjQuOSAzMnM0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnY0Ny4wNnptMCAyMy43MmMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2SDQ3LjA2QzIxLjE2IDI0My45NiAwIDIyMi44IDAgMTk2LjlzMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZ6bTE4OC45OCA0Ny4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZTNDQ4IDE3MSA0NDggMTk2LjlzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2aC00Ny4wNnptLTIzLjcyIDBjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2cy00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlY3OS4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ6TTI4My4xIDM4NS44OGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZTMzA5IDQ4MCAyODMuMSA0ODBzLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2di00Ny4wNnptMC0yMy43MmMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2czIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDExNy44NGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2eiIvPjwvc3ZnPg==)}.scylla-icon--stack-overflow{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIzMSIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJtMjEuOTQ5LjExMyAyLjA0MyAxMS42Ny0yLjUxNC40MzJMMTkuNDM1LjU0NXptLTE3Ljk3MyAyNiAxMS45NDUtLjAwNS0uMDAyLTIuNTMtMTEuOTQ0LjAwNnptMTIuMjMyLTUuNzc3TDQuMzE1IDE5LjI1bC0uMjM1IDIuNTIgMTEuODk0IDEuMDg1em0tMTAuNzUtNi4zNzUgMTEuNTM1IDMuMDc0LS42NjIgMi40NDMtMTEuNTM1LTMuMDc1em0xMy4wNC4xOEw4LjIxMiA4LjEyNmwtMS4yOTcgMi4xNzggMTAuMjg5IDYuMDE3em0tNC4yMDYtMTEuNTYgNi43MyA5Ljc4Ny0yLjEwOCAxLjQyNC02LjczLTkuNzg1eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTE3Ljk1IDE3Ljc4OVYyOC4xM0gyLjI4MlYxNy43ODlILjI0M3YxMi4zMjZIMTkuOThWMTcuNzg5eiIvPjwvc3ZnPg==)}.scylla-icon--summit{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6IzRkNGQ0ZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0ibTE2LjUgMjIgMS02LjUtMTAgLjAzIDEgNi40MyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTMuNDYgMTJBNS42OSA1LjY5IDAgMCAxIDUgNy41IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MS4xcHgiLz48cGF0aCBkPSJNMTQuNjIgNWEyLjMzIDIuMzMgMCAwIDEtMi4yNSAyLjVjLTEuMzMgMC0yLTEuMTItMS45NS0yLjQ0cy43LTIuNSAyLTIuNDhBMi4yNyAyLjI3IDAgMCAxIDE0LjYyIDVNMTcuNTggMTJhMy4yMyAzLjIzIDAgMCAwLTMuNDYtMy41SDExQTMuMjYgMy4yNiAwIDAgMCA3LjUgMTIiIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjQuOTQiIGN5PSI2Ljk2IiByPSIxLjAxIiBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjFweDtmaWxsOiM0ZDRkNGQiLz48cGF0aCBkPSJNNy41NCAxOC41SDQuNWwtMi02aDIwbC0yIDZoLTMiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--support{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTE4LjE5IDcuNWExMCAxMCAwIDAgMSAuMjEgMi4wN2MwIDQuMzYtMi42MyA2LjkzLTUuOSA2Ljkzcy01Ljk0LTIuNTctNS45NC02LjkzYTEwLjUgMTAuNSAwIDAgMSAuMjItMi4xMiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTcuNjcgMi4yM0E2LjU4IDYuNTggMCAwIDEgMTIuNS41YTUuNjUgNS42NSAwIDAgMSA0LjI5IDEuN2MxLjkzIDEuOTQgMi4zNSA1LjA3IDIuNDMgNi43MmExLjUgMS41IDAgMCAwLS43OS4wNSA5IDkgMCAwIDAtLjA4LTEuMTZoMGE1LjUzIDUuNTMgMCAwIDEtMS43Ny0yLjM0TDE2LjQ5IDVsLS4zOC4yMkExOSAxOSAwIDAgMSA2LjggNy4zOGEuNTIuNTIgMCAwIDAtLjQyLjE2Yy0uMjMuMjQtLjE1LjY1LS4wNyAxLjA4IDAgLjExIDAgLjIyLjA1LjMyYTEuNCAxLjQgMCAwIDAtLjU4IDBjLS4xLTEuNDUtLjA2LTQuNjggMS44OS02LjcxTTYuMzggOWMtLjY1LS4wOC0xIC4xLTEuMTQuNzlhMi4wNiAyLjA2IDAgMCAwIDEuMzcgMi4yOU0xOC41NiA5Yy42NS0uMDggMS4wNS4xIDEuMTQuNzlhMi4wNiAyLjA2IDAgMCAxLTEuMzcgMi4yOU05LjUgMTguMjNWMTUuNU0xNS41IDE1LjV2Mi43M00yLjUgMjQuMTZjLjI0LTIgLjU5LTMuNjMgMi40My00LjQ5YTI0LjMgMjQuMyAwIDAgMSA0LjgyLTEuMzdNMjIuNSAyNC4zM2MtLjI0LTItLjQyLTMuOC0yLjI2LTQuNjZhMjQuMyAyNC4zIDAgMCAwLTQuODItMS4zNyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1LjM5IDE4LjM5YTQuMzcgNC4zNyAwIDAgMS0yLjkxIDEuMDcgNC40MiA0LjQyIDAgMCAxLTIuODktMS4wNSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTExIDEzaDN2MmgtM3oiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTguMDcgMTJhOS4yIDkuMiAwIDAgMS01LjUzIDIuMDciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48L2c+PC9zdmc+)}.scylla-icon--tech-talks{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTguMzkgNC41SDIzLjV2MTNoLTE1IiBjbGFzcz0iY2xzLTEiLz48Y2lyY2xlIGN4PSI0LjUiIGN5PSI2LjUiIHI9IjIiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNMS41IDkuNWgybC44Ljg2LjctLjg2aDUuNThhMSAxIDAgMSAxIDAgMkg2LjV2MTAuODhhMSAxIDAgMCAxLTEgMS4xMiAxIDEgMCAwIDEtMS0xIDEgMSAwIDAgMS0xIDEgLjkzLjkzIDAgMCAxLTEtMXYtNmMtLjc4IDAtMi0uNDctMi0xdi01YTEgMSAwIDAgMSAxLTEiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--testing{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTYuNSA2LjVoMTJ2MTJoLTEyeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTQuNSA0LjVoMTZ2MTZoLTE2eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTguNSAxMC41IDUgNSAxMS0xMiIgY2xhc3M9ImNscy0xIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--thumbs-up{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXRodW1icy11cCI+PHBhdGggZD0iTTE0IDlWNWEzIDMgMCAwIDAtMy0zbC00IDl2MTFoMTEuMjhhMiAyIDAgMCAwIDItMS43bDEuMzgtOWEyIDIgMCAwIDAtMi0yLjN6TTcgMjJINGEyIDIgMCAwIDEtMi0ydi03YTIgMiAwIDAgMSAyLTJoMyIvPjwvc3ZnPg==)}.scylla-icon--thumbs-down{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXRodW1icy1kb3duIj48cGF0aCBkPSJNMTAgMTV2NGEzIDMgMCAwIDAgMyAzbDQtOVYySDUuNzJhMiAyIDAgMCAwLTIgMS43bC0xLjM4IDlhMiAyIDAgMCAwIDIgMi4zem03LTEzaDIuNjdBMi4zMSAyLjMxIDAgMCAxIDIyIDR2N2EyLjMxIDIuMzEgMCAwIDEtMi4zMyAySDE3Ii8+PC9zdmc+)}.scylla-icon--tip{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEyIDI0QzUuNCAyNCAwIDE4LjYgMCAxMlM1LjQgMCAxMiAwczEyIDUuNCAxMiAxMi01LjQgMTItMTIgMTJtMC0yMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDIiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTEgMTZjLS4zIDAtLjUtLjEtLjctLjNsLTMtM2MtLjQtLjQtLjQtMSAwLTEuNHMxLS40IDEuNCAwbDMgM2MuNC40LjQgMSAwIDEuNC0uMi4yLS40LjMtLjcuMyIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMSAxNmMtLjMgMC0uNS0uMS0uNy0uMy0uNC0uNC0uNC0xIDAtMS40bDYtNmMuNC0uNCAxLS40IDEuNCAwcy40IDEgMCAxLjRsLTYgNmMtLjIuMi0uNC4zLS43LjMiLz48L3N2Zz4=)}.scylla-icon--training{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0iTTE3LjUgMTUuNUguNXYtMTNoMThNNS41IDI1bDQtNC4zIDQgNC4zIiBjbGFzcz0iY2xzLTEiLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjQiIHI9IjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjxwYXRoIGQ9Ik0yMy40MSA3LjVoLTEuNTJMMjEgOWwtLjktMS41SDEzQTEuOCAxLjggMCAwIDAgMTEuNSA5YTEuOCAxLjggMCAwIDAgMS41IDEuNWg0LjV2MTMuMjRBMS40MSAxLjQxIDAgMCAwIDE5IDI1YTEuNDIgMS40MiAwIDAgMCAxLjUtMS4yMiAxLjUzIDEuNTMgMCAwIDAgMyAwdi03LjExYTEuMTEgMS4xMSAwIDAgMCAxLjA5LTEuMThWOC42N2ExLjE4IDEuMTggMCAwIDAtMS4xOC0xLjE3TTkuNSAxNS40NHY1LjM4IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--triangle-down{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI1IiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSIjM2EyZDU1IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0wIDAgNSA1IDUtNXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==)}.scylla-icon--university{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTEuNSA4LjUgMTEtNCAxMSA0djNsLTExIDQtMTEtNHoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik01LjUgMTIuNXY1YTEyLjQ2IDEyLjQ2IDAgMCAwIDcgMiAxMS4yIDExLjIgMCAwIDAgNy0ydi01IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMTMuNSA5LjUgOCAxLjIzdjguNzdNMjIuNSAxNi41djMiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--users-blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIzLjUgMi41aC0yMnYxNmgxM3Y0LjE3bDQuMDQtNC4xNyA0Ljk2LS4wNHoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOThweCIvPjxwYXRoIGQ9Ik0xMC44NSA4QTEwLjQgMTAuNCAwIDAgMSAxMSA5LjVjMCAyLjQ3LTEuMjEgNC0zIDRzLTMuNS0yLTMuNS00LjVhNC4yIDQuMiAwIDAgMSAwLTEiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik01LjIgNS4wN2EzLjIyIDMuMjIgMCAwIDEgMi41LTEgMy4xNiAzLjE2IDAgMCAxIDIuNCAxIDYuMjIgNi4yMiAwIDAgMSAxLjMgMy44MS43NC43NCAwIDAgMC0uNDIgMGMwLS4yNCAwLS40NC0uMDUtLjY2aDBBMyAzIDAgMCAxIDEwIDYuOXYtLjI0bC0uMjEuMTJBOS42IDkuNiAwIDAgMSA0LjczIDhhLjI1LjI1IDAgMCAwLS4yMi4wOWMtLjEzLjE0LS4wOS4zNyAwIC42MXYuMThhLjkuOSAwIDAgMC0uMzIgMEE1LjM3IDUuMzcgMCAwIDEgNS4yIDUuMDdNNC41MSA4LjkzYy0uMzUgMC0uNTcuMDUtLjYxLjQ0YTEuMTcgMS4xNyAwIDAgMCAuNzMgMS4zTTExIDguOTNjLjM2IDAgLjU3LjA1LjYyLjQ0YTEuMTcgMS4xNyAwIDAgMS0uNzQgMS4zTTYuMzEgMTQuMTN2LS44NE05LjI1IDEzLjE5di45NE0yLjQyIDE4Yy4xMy0xLjE1LjU4LTIuNTIgMS41OC0zYTE1IDE1IDAgMCAxIDIuMzEtLjgyTTEzLjUgMThjLS4xMy0xLjE1LS41MS0yLjUyLTEuNS0zcy0yLjUtMS0yLjUtMSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTkuMzQgMTQuMjJhMi4yMyAyLjIzIDAgMCAxLTEuNTYuNjEgMi4zMiAyLjMyIDAgMCAxLTEuNTUtLjU5TTIxLjUgNi41aC03TTIxLjUgOS41aC03TTE4LjUgMTIuNWgtNCIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--warning{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PG1hc2sgaWQ9ImEiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMSIgeD0iMCIgeT0iMSIgbWFzay10eXBlPSJhbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZmlsbD0iIzA2MTkzOCIgZD0iTTMuNSAyMmMtLjUgMC0xLS4xLTEuNS0uNEMuNiAyMC44LjEgMTguOS45IDE3LjVMOS40IDMuM2MuMy0uNC42LS44IDEtMSAuNy0uNCAxLjUtLjUgMi4zLS4zczEuNC43IDEuOSAxLjRMMjMgMTcuNWMuMy41LjQgMSAuNCAxLjUgMCAuOC0uMyAxLjYtLjkgMi4xLS41LjYtMS4yLjktMiAuOXptNy42LTE3LjZMMi43IDE4LjVjLS4zLjUtLjEgMS4xLjQgMS40LjEuMS4zLjEuNC4xaDE2LjljLjMgMCAuNS0uMS43LS4zcy4zLS40LjMtLjdjMC0uMiAwLS4zLS4xLS41TDEyLjkgNC40Yy0uMy0uNS0uOS0uNi0xLjQtLjQtLjIuMS0uMy4yLS40LjQiLz48cGF0aCBmaWxsPSIjMDYxOTM4IiBkPSJNMTIgMTRjLS42IDAtMS0uNC0xLTFWOWMwLS42LjQtMSAxLTFzMSAuNCAxIDF2NGMwIC42LS40IDEtMSAxTTEyIDE4Yy0uMyAwLS41LS4xLS43LS4zcy0uMy0uNC0uMy0uN2MwLS4xIDAtLjMuMS0uNHMuMS0uMi4yLS4zLjItLjIuMy0uMmMuMi0uMS40LS4xLjYtLjEuMSAwIC4xIDAgLjIuMS4xIDAgLjEgMCAuMi4xIDAgMCAuMS4xLjIuMS4xLjEuMi4yLjIuM3MuMS4zLjEuNGMwIC4zLS4xLjUtLjMuNy0uMy4yLS41LjMtLjguMyIvPjwvbWFzaz48ZyBtYXNrPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjMDYxOTM4IiBkPSJNMCAwaDI0djI0SDB6Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--webinars{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTEuNSA1LjVoMjJ2MTRoLTIyeiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjxwYXRoIGQ9Ik05LjQ3IDIwLjV2MS44OE0xNS41IDIwLjV2Mk02LjUgMjIuNWgxMiIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0ibTkgOSA3LjUgMy41M0w5IDE2eiIgc3R5bGU9ImZpbGw6Z3JheSIvPjwvZz48L3N2Zz4=)}.scylla-icon--whitepapers{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTggOWg4djJIOHoiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTQuMDYgMS41IDMuNSAxLjUyVjIzLjVoMTdWN3oiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0xNC4zMiAxLjQydjMuMzdhMi4wNiAyLjA2IDAgMCAwIDIuMDggMi4xaDMuNjciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNNi41IDE5LjVoNE0xMy41IDE5LjVoNE02LjUgMTYuNWg0TTEzLjUgMTYuNWg0TTYuNSAxMy41aDRNMTMuNSAxMy41aDQiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--workshop{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkfS5jbHMtMXtzdHJva2UtbWl0ZXJsaW1pdDoxMH0uY2xzLTJ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTEuNSA1LjVoMjJ2MTRoLTIyeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTkuNSAxOS41LS4wMyAyLjg4TTE1LjUgMTkuNXYzTTYuNSAyMi41aDEyIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJtNCA4IDIgOCAuOTctMy45NUwxMSAxMnoiIHN0eWxlPSJmaWxsOiM0ZDRkNGQiLz48cGF0aCBkPSJtNi40NyAxMS4zNCAzLjM3IDQuMjgiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.button{background:transparent;border:1px solid var(--text-color);border-radius:4px;color:var(--text-color);display:inline;font-size:14px;letter-spacing:1px;line-height:21px;margin:0;padding:12px 14px}.button:focus,.button:hover{background:transparent;color:var(--link-color);text-decoration:none}.button--reverse{border:0}.button--reverse,.button--reverse:focus,.button--reverse:hover{background:var(--bg-color)}.tooltip{background-color:var(--tooltip-bg);border:0;border-radius:4px;font-size:12px;max-width:50%;padding:6px}.tooltip:before,.tooltip:empty{display:none!important}.has-tip{border:0;cursor:pointer}.content .has-tip{cursor:help;font-weight:inherit;text-decoration:underline;text-decoration-style:dotted}.scylla-dropdown{color:var(--text-color);font-size:14px;line-height:20px}.scylla-dropdown a,.scylla-dropdown a:focus,.scylla-dropdown a:hover{color:var(--text-emphasis)!important;padding:0!important}.scylla-dropdown__item{font-size:16px;padding:15px}.scylla-dropdown__title{align-items:center;color:inherit;display:flex!important;position:static!important}.scylla-dropdown__title:after{display:none!important}.scylla-dropdown__title .chevron{min-height:5px;width:10px}.scylla-dropdown__content{background:var(--white);border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);font-size:16px;list-style:none;margin-top:15px;overflow:hidden;padding:16px 0;width:max-content}.scylla-dropdown__content li{padding:7px 16px}.scylla-dropdown__content li a{align-items:center;display:flex}.scylla-dropdown__content li i{font-size:24px;margin-right:10px}.enlarge-image{cursor:zoom-in}.enlarge-image-reveal{background:transparent;border:none;cursor:zoom-out;padding:0;text-align:center;width:fit-content}.enlarge-image-reveal img{background-color:var(--white);padding:15px}.header{background-color:var(--card-bg);box-shadow:0 2px 22px rgba(0,0,0,.1);justify-content:space-between;padding:12.75px 0;position:fixed;width:100%;z-index:99}.header,.header-logo{align-items:center;display:flex}.header-logo{margin-left:20px;width:auto}.header-logo__img{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0ze2ZpbGw6IzRkOWJiNn0uY2xzLTR7ZmlsbDojM2IyZDU1fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8xIj48cGF0aCBkPSJNMTg1LjYgMTAzLjFjMi4xIDMuMSA0LjggNS41IDggNi45IDMuMyAxLjUgNi42IDIuMiAxMC4xIDIuMnMzLjktLjMgNS45LS45IDMuOC0xLjUgNS41LTIuN2MxLjYtMS4yIDMtMi43IDQtNC41czEuNi0zLjggMS42LTYuMi0xLTUuOC0zLjEtNy41LTQuNy0zLjItNy44LTQuM2MtMy4xLTEuMi02LjUtMi4zLTEwLjEtMy40LTMuNy0xLjEtNy0yLjYtMTAuMS00LjVxLTQuNjUtMi44NS03LjgtNy44Yy0yLjEtMy4zLTMuMS03LjctMy4xLTEzLjJzLjUtNS4yIDEuNi04IDIuOC01LjQgNS4xLTcuNyA1LjMtNC4zIDktNS45cTUuNTUtMi40IDEzLjItMi40YzcuNjUgMCA5LjEuNiAxMy40IDEuOXM4IDMuOSAxMS4yIDcuOWwtOS40IDguNmMtMS41LTIuMy0zLjUtNC4xLTYuMi01LjQtMi43LTEuNC01LjctMi4xLTkuMS0yLjFzLTUuOS40LTggMS4zcS0zLjE1IDEuMi01LjEgMy4zYy0xLjMgMS4zLTIuMiAyLjgtMi43IDQuM3MtLjggMi45LS44IDQuMmMwIDMuNiAxIDYuNCAzLjEgOC4zczQuNyAzLjUgNy44IDQuNyA2LjUgMi4zIDEwLjEgMy4zYzMuNyAxIDcgMi4zIDEwLjEgNHM1LjcgNC4xIDcuOCA3IDMuMSA3IDMuMSAxMi4xLS44IDcuOC0yLjQgMTEuMS0zLjcgNi4xLTYuMyA4LjNjLTIuNyAyLjMtNS44IDQtOS40IDUuMnMtNy41IDEuOC0xMS42IDEuOC0xMC43LTEtMTUuNi0yLjktOC44LTQuOS0xMS43LTguOWw5LjUtOC4yWk0yODYuMSA3OXEtMy0zLjE1LTYuMy00LjhjLTIuMi0xLjEtNC45LTEuNi03LjktMS42cy01LjYuNS03LjggMS42LTQuMSAyLjYtNS42IDQuNS0yLjYgNC4xLTMuNCA2LjVjLS44IDIuNS0xLjEgNS0xLjEgNy43cy40IDUuMiAxLjMgNy41Yy45IDIuNCAyLjEgNC40IDMuNyA2LjJzMy41IDMuMiA1LjggNC4yIDQuOCAxLjUgNy42IDEuNSA1LjctLjUgNy45LTEuNnEzLjMtMS42NSA2LTQuOGw3LjcgNy43Yy0yLjggMy4xLTYuMSA1LjQtOS44IDYuOHMtNy43IDIuMS0xMS45IDIuMS04LjUtLjctMTIuMS0yLjJjLTMuNy0xLjUtNi44LTMuNS05LjUtNi4xcy00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4xIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4zIDYzLjhoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN0gzNTZsLTI3LjIgNjkuNmMtMSAyLjUtMiA0LjgtMyA2LjgtMSAyLjEtMi4zIDMuOC0zLjcgNS4zcy0zLjIgMi42LTUuMiAzLjRxLTMgMS4yLTcuNSAxLjJjLTQuNSAwLTMuMi0uMS00LjktLjMtMS42LS4yLTMuMi0uNi00LjgtMS4zbDEuMy05LjljMi4yLjkgNC4zIDEuMyA2LjUgMS4zczMuMS0uMiA0LjMtLjdjMS4yLS40IDIuMi0xLjEgMy0xLjlxMS4yLTEuMiAyLjEtM2MuNi0xLjEgMS4xLTIuNCAxLjctMy45bDMuNS05LjEtMjMuNy01Ny42Wk0zNjQuMSAyOS43SDM3NVYxMjFoLTEwLjl6TTM4Ni43IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi44IDcwLjhjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczgtMi4xIDEyLjEtMi4xIDcuOC41IDEwLjggMS42YzMgMSA1LjUgMi41IDcuNCA0LjIgMS45IDEuOCAzLjQgMy44IDQuMyA2LjFzMS40IDQuNyAxLjQgNy4ydjI5LjJjMCAyIDAgMy45LjEgNS42IDAgMS43LjIgMy4zLjQgNC44aC05LjdjLS4yLTIuOS0uNC01LjgtLjQtOC43aC0uMmMtMi40IDMuNy01LjMgNi4zLTguNiA3LjktMy4zIDEuNS03LjEgMi4zLTExLjUgMi4zcy01LjItLjQtNy42LTEuMXEtMy42LTEuMDUtNi4zLTMuM2MtMS44LTEuNS0zLjItMy4yLTQuMy01LjQtMS0yLjEtMS42LTQuNi0xLjYtNy40cy44LTYuOCAyLjUtOS4zYzEuNi0yLjUgMy45LTQuNSA2LjgtNi4xczYuMi0yLjcgMTAtMy40IDcuOS0xIDEyLjMtMWg4di0yLjRjMC0xLjUtLjMtMi45LS44LTQuMy0uNi0xLjUtMS40LTIuOC0yLjUtMy45LTEuMS0xLjItMi41LTIuMS00LjItMi44cy0zLjctMS02LTEtMy45LjItNS41LjYtMyAuOS00LjMgMS41LTIuNSAxLjMtMy41IDIuMS0yLjEgMS42LTMgMi4zbC02LjUtNi44Wm0zMC43IDIyLjdjLTIuNiAwLTUuMi4xLTcuOS40cy01LjIuOC03LjQgMS42LTQgMS45LTUuNCAzLjQtMi4xIDMuMy0yLjEgNS42YzAgMy4zIDEuMSA1LjcgMy4zIDcuMSAyLjIgMS41IDUuMiAyLjIgOSAyLjJzNS41LS41IDcuNi0xLjVxMy4xNS0xLjUgNS4xLTMuOWMxLjMtMS42IDIuMi0zLjQgMi44LTUuNHMuOC0zLjkuOC01Ljl2LTMuNnpNNDczLjggMzUuNWgyOS44cTkgMCAxNS45IDIuMWM0LjYgMS40IDguNSAzLjIgMTEuOCA1LjVzNi4xIDQuOSA4LjMgNy45IDQgNiA1LjMgOS4yYzEuMyAzLjEgMi4yIDYuMyAyLjggOS40cy44IDYgLjggOC43cTAgOC4yNS0zIDE1LjljLTIgNS4xLTUgOS43LTguOSAxMy42LTQgNC04LjggNy4yLTE0LjcgOS42LTUuOCAyLjQtMTIuNiAzLjYtMjAuMiAzLjZoLTI3Ljl6bTExLjYgNzQuN0g1MDBjNC45IDAgOS42LS43IDE0LTJzOC4yLTMuMyAxMS41LTYgNS45LTYgNy45LTEwYzEuOS00IDIuOS04LjYgMi45LTEzLjlzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC40cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40djYzLjhaTTU2MS43IDM1LjVoMjkuN2MzLjcgMCA3LjEuNCAxMC4zIDEuM3M1LjkgMi4yIDguMiAzLjlxMy40NSAyLjU1IDUuNCA2LjZjMS4zIDIuNyAyIDUuOSAyIDkuNXMtMS40IDguOS00LjEgMTItNi4zIDUuNC0xMC42IDYuOHYuMmMyLjYuMiA1IC44IDcuMiAyIDIuMyAxLjIgNC4yIDIuNyA1LjkgNC42IDEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjRWMzUuNVpNNTczLjMgNzFoMTUuOGMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4ydjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yIDEuOC0xLjEgMy40LTIuNiA0LjctNC40IDEuMy0xLjkgMS45LTQuMyAxLjktNy40IDAtNS4xLTEuNy04LjktNS0xMS40cy03LjgtMy44LTEzLjQtMy44aC0xNy4ydjI5LjdaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNODYuMyA0LjJDNTMuNCA0LjIgMzAuNCAyNC43IDMwLjQgNTRzNC45IDM0LjggOS4xIDU1LjhjMyAxNS4xIDUuNiAyNy4zIDUuNyAyNy42LjggMy43IDQuNCA2LjEgOC4yIDUuNWguOGMwLS4xLS42LS43LS42LS43LTEuMS0xLjEtMS44LTIuNC0yLjMtMy44LS4yLS44LS4zLTEuNS0uNC0yLjEgMC0uMyAwLS42LS4xLS45bC0xLjUtOC45Yy0uNi00LTEuMy04LTEuOC0xMS44IDAtLjMuMS0uNS40LS41cy41LjEuNS40cTEuMiA1LjcgMi40IDExLjdsMS43IDguOGMwIC4zLjEuNi4yLjkuMS43LjMgMS40LjQgMiAuNSAxLjUgMS41IDIuOCAyLjggMy44LjEuMS4zLjIuNC4zLjguNCAxLjYuNyAyLjUuOS45LjEgMS44LjEgMi42IDAgLjktLjIgMS45LS42IDIuNy0xLjJsLjMtLjItLjItLjNjLS43LS45LTEuMS0xLjktMS40LTMtLjItLjgtLjMtMS41LS4zLTIuMnYtLjlsLS45LTguOWMtLjQtNC4xLS43LTguMS0xLTExLjkgMC0uMSAwLS4yLjEtLjMgMCAwIC4yLS4yLjMtLjIuMyAwIC41LjIuNS40LjUgMy44IDEuMSA3LjggMS42IDExLjhsMS4xIDguOWMwIC4zIDAgLjUuMS44IDAgLjcuMiAxLjQuMyAyIC4yLjcuNCAxLjMuOCAxLjkuNS45IDEuMiAxLjYgMiAyLjIgMCAwIDAgLjEuMS4xIDEuNCAxIDMuMyAxLjQgNSAxLjFzMy4zLTEuMiA0LjUtMi41Yy4zLS4zLjUtLjcuNy0xLjF2LS40Yy0uMS0uNC0uMi0uOC0uNC0xLjItLjEtLjYtLjItMS40LS4yLTIuM3YtNC40Yy0uMi01LjYtLjItMTEuMy0uMi0xNy42IDAtLjMuMi0uNS41LS41cy41LjIuNS40Yy40IDYuMy43IDEyIC45IDE3LjZsLjIgNC40YzAgLjggMCAxLjQuMiAyIC4xLjUuMyAxLjIuNyAxLjh2LjFjMS4yIDIuMiAzLjYgMy43IDYuMSAzLjdoLjFjMi41IDAgNS0xLjQgNi4zLTMuNy4zLS41LjUtMS4xLjctMS44LjEtLjYuMi0xLjIuMi0xLjlsLjItNC41Yy4yLTUuMy41LTExIC45LTE3LjYgMC0uMy4yLS41LjUtLjQuMiAwIC40LjIuNC41IDAgNi42IDAgMTIuMy0uMSAxNy42djQuNGMwIC42IDAgMS41LS4zIDIuMyAwIC40LS4yLjgtLjMgMS4ydi40Yy4yLjQuNS43LjcgMS4xIDEuMSAxLjQgMi43IDIuMyA0LjUgMi41IDEuNy4zIDMuNi0uMSA1LTEuMWguMWMuOC0uNiAxLjUtMS40IDItMi4yLjQtLjYuNi0xLjIuOC0xLjkuMS0uNi4yLTEuMy4zLTIgMC0uMyAwLS41LjEtLjhsMS4xLTguOWMuNS00IDEuMS04IDEuNi0xMS44IDAtLjEgMC0uMi4yLS4zLjEgMCAuMi0uMS4zIDAgLjIgMCAuNC4zLjQuNS0uMyAzLjgtLjcgNy44LTEgMTEuOWwtLjkgOC45di44YzAgLjctLjEgMS40LS4zIDIuMi0uMyAxLjEtLjcgMi4xLTEuNCAzbC0uMi4zLjMuMmMuOC42IDEuOCAxIDIuNyAxLjJzMS43LjIgMi42IDBjLjktLjEgMS43LS40IDIuNS0uOS4yIDAgLjMtLjIuNC0uMyAxLjMtLjkgMi4zLTIuMyAyLjgtMy44LjItLjUuMy0xLjMuNC0yIDAtLjMuMS0uNi4yLS44bDEuNy04LjhjLjgtNCAxLjYtOCAyLjQtMTEuNyAwLS4zLjMtLjQuNi0uNC4yIDAgLjQuMy40LjUtLjYgMy44LTEuMiA3LjgtMS44IDExLjhsLTEuNSA4LjljMCAuMy0uMS42LS4xLjktLjEuNy0uMiAxLjMtLjQgMi4yLS40IDEuNC0xLjIgMi43LTIuMyAzLjhsLS41LjUuNy4yYy40IDAgLjguMSAxLjIuMSAzLjMgMCA2LjMtMi4zIDctNS42IDAtLjMgMi44LTEyLjkgNS44LTI4LjUgNC4xLTIwLjkgOS00NyA5LTU1QzE0MiAyNSAxMTkgNC41IDg2LjEgNC41WiIgc3R5bGU9ImZpbGw6IzU3ZDFlNSIvPjxwYXRoIGQ9Ik0xMzMuMSAxMDkuN2MtMy4xIDE1LjctNS43IDI3LjUtNS43IDI3LjctLjcgMy4yLTMuNyA1LjQtNyA1LjRoLTEuNmwuMy0uNGMxLjEtMS4xIDEuOS0yLjQgMi4zLTMuOC4yLS44LjMtMS41LjQtMi4yIDAtLjQgMC0uNi4xLS45bDEuNS04LjljLjYtNCAxLjMtOCAxLjgtMTEuOCAwLS4zLS4yLS43LS41LS43aC0uNWMtLjEgMC0uMy4yLS4zLjQtLjggMy43LTEuNiA3LjctMi40IDExLjdsLTEuNyA4LjhjMCAuMiAwIC40LS4xLjZ2LjNjLS4yLjctLjMgMS40LS41IDEuOS0uNCAxLjUtMS40IDIuOC0yLjcgMy43LS4xIDAtLjMuMi0uNC4zLS43LjQtMS41LjctMi40LjhzLTEuNy4xLTIuNiAwYy0uOS0uMi0xLjgtLjYtMi42LTEuMmgtLjJjMC0uMS4xLS4zLjEtLjMuNy0xIDEuMS0yIDEuNC0zLjEuMi0uOC4zLTEuNS4zLTIuM3YtLjhsLjktOC45Yy40LTQuMS43LTguMSAxLTExLjkgMC0uMy0uMi0uNy0uNi0uNy0uMiAwLS4zIDAtLjUuMS0uMS4xLS4yLjMtLjMuNC0uNSAzLjgtMS4xIDcuNy0xLjYgMTEuOGwtMS4xIDguOWMwIC4zIDAgLjUtLjEuOCAwIC43LS4yIDEuNC0uMyAyLS4yLjYtLjQgMS4yLS44IDEuOC0uNS44LTEuMiAxLjYtMiAyLjEgMCAwIDAgLjEtLjEuMS0xLjQuOS0zLjIgMS4zLTQuOSAxLjFzLTMuMy0xLjEtNC4zLTIuNWMtLjMtLjMtLjUtLjctLjctMXYtLjJjLjEtLjQuMy0uOC40LTEuMi4yLS44LjItMS44LjItMi40di00LjRjLjItNS4yLjItMTAuOS4yLTE3LjYgMC0uMy0uMy0uNi0uNi0uNy0uNCAwLS43LjMtLjcuNi0uNCA2LjUtLjcgMTIuMy0uOSAxNy42bC0uMiA0LjVjMCAuNyAwIDEuMy0uMiAxLjktLjIuNy0uNCAxLjMtLjcgMS44LTEuMiAyLjItMy42IDMuNi02IDMuNkg4NmMtMi40IDAtNC44LTEuNC02LTMuNnYtLjFjLS4zLS42LS41LTEuMi0uNy0xLjctLjEtLjYtLjItMS4yLS4yLTJsLS4yLTQuNGMtLjItNS41LS41LTExLjMtLjktMTcuNiAwLS4zLS4zLS42LS43LS42cy0uNy4zLS43LjdjMCA2LjMgMCAxMiAuMSAxNy42djQuNHEwIDEuNS4zIDIuNGMuMS40LjIuOS40IDEuMnYuMmMtLjIuNC0uNS43LS43IDFhNy42IDcuNiAwIDAgMS00LjMgMi41Yy0xLjcuMy0zLjUtLjEtNC45LTEuMWgtLjFjLS44LS42LTEuNS0xLjMtMi0yLjItLjMtLjYtLjYtMS4yLS44LTEuOC0uMS0uNS0uMi0xLjItLjMtMiAwLS4zIDAtLjUtLjEtLjhsLTEuMS04LjljLS41LTQuMS0xLjEtOC4xLTEuNi0xMS44IDAtLjQtLjMtLjYtLjctLjYtLjIgMC0uMyAwLS40LjItLjEuMS0uMi4zLS4yLjUuMyAzLjguNyA3LjggMSAxMS45bC45IDguOXYuOWMwIC43LjEgMS40LjMgMi4yLjMgMS4xLjcgMi4xIDEuNCAzLjF2LjJjLjEgMCAwIC4xIDAgLjEtLjguNi0xLjcgMS0yLjYgMS4yLS44LjItMS43LjItMi42IDBxLTEuMzUtLjE1LTIuNC0uOWMtLjEgMC0uMy0uMi0uNC0uMy0xLjMtLjktMi4zLTIuMi0yLjctMy43LS4yLS41LS4zLTEuMi0uNC0xLjkgMC0uNC0uMS0uNy0uMi0uOWwtMS43LTguOGMtLjgtNC0xLjYtOC0yLjQtMTEuNyAwLS4zLS40LS42LS43LS41LS40IDAtLjYuNC0uNi43LjYgMy44IDEuMiA3LjggMS44IDExLjhsMS41IDguOWMwIC4zIDAgLjUuMS44LjEuOC4yIDEuNS40IDIuMy40IDEuNCAxLjIgMi43IDIuMyAzLjhsLjMuM2gtLjRjLTMuNy43LTcuMi0xLjctOC01LjMtLjMtMS4zLTMtMTMuMS01LjktMjcuNmw0LjIgMjhjMCAuMi4xLjUuMi43di4yYy4xLjIuMi4zLjMuNSAwIDAgMCAuMi4xLjMgMCAuMS4xLjIuMi40IDAgLjEuMS4yLjIuM3YuMmwuNi45Yy4xLjIuMi4zLjQuNS4xLjIuMy4zLjQuNSAxLjYgMS41IDMuNyAyLjMgNS45IDIuM3MxIDAgMS40LS4xbDMuMi0uNWMuNS4yIDEuMS40IDEuNy40IDEuMS4yIDIuMi4xIDMuMiAwIDEuMS0uMiAyLjMtLjcgMy4zLTEuNWwuOC0uNmMuMi4yLjUuNC44LjZsLjIuMmMxLjcgMS4xIDQgMS42IDYuMSAxLjNzNC4xLTEuNCA1LjQtMy4xYy4yLS4zLjUtLjYuNy0uOSAxLjUgMi41IDQuNCA0LjEgNy4zIDQuMWguMmMyLjkgMCA1LjctMS42IDcuMi00LjEuMi4zLjQuNy43LjkgMS4zIDEuNyAzLjMgMi44IDUuNCAzLjFoMS4zYzEuNyAwIDMuNC0uNSA0LjgtMS40IDAgMCAuMSAwIC4yLS4xLjMtLjIuNS0uNC44LS42bC44LjZxMS41IDEuMDUgMy4zIDEuNWMxIC4yIDIuMS4yIDMuMiAwcTEuMDUtLjE1IDIuMS0uNmwyLjcuN2guMWMuNS4xLjkuMSAxLjQuMSA0IDAgNy42LTIuOSA4LjUtNi44IDAtLjEgNC4yLTI4IDQuMi0yOFoiIGNsYXNzPSJjbHMtNCIvPjxwYXRoIGQ9Ik00Ni40IDE3LjdjLTEwLjEgOC44LTE2IDIxLjQtMTYgMzYuMnMxNC41IDgyLjggMTQuNyA4My41Yy4zIDEuNSAxLjQgMi42IDIuNCAzLjYtMy42LTE3LjQtMTUuNC03My41LTE1LjQtODYuNnM1LjItMjcuMiAxNC4zLTM2LjciIHN0eWxlPSJmaWxsOiM5M2UxZWYiLz48cGF0aCBkPSJNNzEuMyAyNS42QzU3LjkgMjUuNiA0NyAzNi41IDQ3IDQ5LjlzMTAuOSAyNC4zIDI0LjMgMjQuMyAyNC4zLTEwLjkgMjQuMy0yNC4zLTEwLjktMjQuMy0yNC4zLTI0LjMiIGNsYXNzPSJjbHMtMyIvPjxwYXRoIGQ9Ik00NC42IDQ4YzAgMTMuNCAxMC45IDI0LjMgMjQuMyAyNC4zUzkzLjIgNjEuNCA5My4yIDQ4IDgyLjMgMjMuNyA2OC45IDIzLjcgNDQuNiAzNC42IDQ0LjYgNDgiIHN0eWxlPSJmaWxsOiNmZmYiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=);background-position:50%;background-repeat:no-repeat;width:110px}.header-logo__img img{opacity:0}.dark .header-logo__img{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZn0uY2xzLTN7ZmlsbDojNGQ5YmI2fS5jbHMtNHtmaWxsOiMzYjJkNTV9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkxheWVyXzEiPjxwYXRoIGQ9Ik0xODUuNCAxMDMuMWMyLjEgMy4xIDQuOCA1LjUgOCA2LjkgMy4zIDEuNSA2LjYgMi4yIDEwLjEgMi4yczMuOS0uMyA1LjktLjkgMy44LTEuNSA1LjUtMi43YzEuNi0xLjIgMy0yLjcgNC00LjVzMS42LTMuOCAxLjYtNi4yLTEtNS44LTMuMS03LjUtNC43LTMuMi03LjgtNC4zYy0zLjEtMS4yLTYuNS0yLjMtMTAuMi0zLjRxLTUuNTUtMS42NS0xMC4yLTQuNXQtNy44LTcuOGMtMi4xLTMuMy0zLjEtNy43LTMuMS0xMy4ycy41LTUuMiAxLjYtOCAyLjgtNS40IDUuMS03LjcgNS4zLTQuMyA5LTUuOXE1LjU1LTIuNCAxMy4yLTIuNGM3LjY1IDAgOS4xLjYgMTMuNCAxLjlzOCAzLjkgMTEuMiA3LjlsLTkuNCA4LjZjLTEuNS0yLjMtMy41LTQuMS02LjItNS40LTIuNy0xLjQtNS43LTIuMS05LjEtMi4xcy01LjkuNC04IDEuM3EtMy4xNSAxLjItNS4xIDMuM2MtMS4zIDEuMy0yLjIgMi44LTIuNyA0LjNzLS44IDIuOS0uOCA0LjJjMCAzLjYgMSA2LjQgMy4xIDguM3M0LjcgMy41IDcuOCA0LjdxNC42NSAxLjggMTAuMiAzLjNjMy43IDEgNy4xIDIuMyAxMC4yIDRzNS43IDQuMSA3LjggNyAzLjEgNyAzLjEgMTIuMS0uOCA3LjgtMi40IDExLjEtMy43IDYuMS02LjMgOC4zYy0yLjcgMi4zLTUuOCA0LTkuNCA1LjJzLTcuNSAxLjgtMTEuNiAxLjgtMTAuNy0xLTE1LjYtMi45LTguOC00LjktMTEuNy04LjlsOS41LTguMlpNMjg2IDc5cS0zLTMuMTUtNi4zLTQuOGMtMi4yLTEuMS00LjktMS42LTcuOS0xLjZzLTUuNi41LTcuOCAxLjYtNC4xIDIuNi01LjYgNC41LTIuNiA0LjEtMy40IDYuNWMtLjggMi41LTEuMSA1LTEuMSA3LjdzLjQgNS4yIDEuMyA3LjVjLjkgMi40IDIuMSA0LjUgMy43IDYuMnMzLjUgMy4yIDUuOCA0LjIgNC44IDEuNSA3LjYgMS41IDUuNy0uNSA3LjktMS42cTMuMy0xLjY1IDYtNC44bDcuNyA3LjdjLTIuOCAzLjEtNi4xIDUuNC05LjkgNi44LTMuNyAxLjQtNy43IDIuMS0xMS45IDIuMXMtOC41LS43LTEyLjItMi4yLTYuOC0zLjUtOS41LTYuMS00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4yIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4yIDYzLjdoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN2gxMS42bC0yNy4yIDY5LjZjLTEgMi41LTIgNC44LTMgNi44LTEgMi4xLTIuMyAzLjgtMy43IDUuM3MtMy4yIDIuNi01LjIgMy40LTQuNiAxLjItNy41IDEuMi0zLjItLjEtNC45LS4zYy0xLjYtLjItMy4yLS42LTQuOC0xLjNsMS4zLTkuOWMyLjIuOSA0LjMgMS4zIDYuNSAxLjNzMy4xLS4yIDQuMy0uN2MxLjItLjQgMi4yLTEuMSAzLTEuOXExLjItMS4yIDIuMS0zYy42LTEuMSAxLjEtMi40IDEuNy0zLjlsMy41LTkuMS0yMy43LTU3LjZaTTM2My45IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTM4Ni42IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi43IDcwLjdjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczguMS0yLjEgMTIuMS0yLjEgNy44LjUgMTAuOCAxLjZjMyAxIDUuNSAyLjUgNy40IDQuMiAxLjkgMS44IDMuNCAzLjggNC4zIDYuMXMxLjQgNC43IDEuNCA3LjJ2MjkuMmMwIDIgMCAzLjkuMSA1LjYgMCAxLjcuMiAzLjMuNCA0LjhoLTkuN2MtLjItMi45LS40LTUuOC0uNC04LjdoLS4yYy0yLjQgMy43LTUuMyA2LjMtOC42IDcuOS0zLjMgMS41LTcuMSAyLjMtMTEuNSAyLjNzLTUuMi0uNC03LjYtMS4xcS0zLjYtMS4wNS02LjMtMy4zYy0xLjgtMS41LTMuMi0zLjItNC4zLTUuNC0xLTIuMS0xLjYtNC42LTEuNi03LjRzLjgtNi44IDIuNS05LjNjMS42LTIuNSAzLjktNC41IDYuOC02LjFzNi4yLTIuNyAxMC0zLjQgNy45LTEgMTIuMy0xaDh2LTIuNGMwLTEuNS0uMy0yLjktLjgtNC4zLS42LTEuNS0xLjQtMi44LTIuNS0zLjktMS4xLTEuMi0yLjUtMi4xLTQuMi0yLjhzLTMuNy0xLTYtMS0zLjkuMi01LjUuNi0zIC45LTQuMyAxLjUtMi41IDEuMy0zLjUgMi4xLTIuMSAxLjYtMyAyLjNsLTYuNS02LjhabTMwLjcgMjIuOGMtMi42IDAtNS4yLjEtNy45LjRzLTUuMi44LTcuNCAxLjYtNCAxLjktNS40IDMuNC0yLjEgMy4zLTIuMSA1LjZjMCAzLjMgMS4xIDUuNyAzLjMgNy4xIDIuMiAxLjUgNS4yIDIuMiA5IDIuMnM1LjUtLjUgNy42LTEuNXEzLjE1LTEuNSA1LjEtMy45YzEuMy0xLjYgMi4yLTMuNCAyLjgtNS40cy44LTMuOS44LTUuOXYtMy42ek00NzMuOCAzNS41aDI5LjlxOSAwIDE1LjkgMi4xYzQuNiAxLjQgOC41IDMuMiAxMS44IDUuNXM2LjEgNC45IDguMyA3LjkgNCA2IDUuMyA5LjJjMS4zIDMuMSAyLjIgNi4zIDIuOCA5LjRzLjggNiAuOCA4LjdxMCA4LjI1LTMgMTUuOWMtMiA1LjEtNSA5LjctOC45IDEzLjctNCA0LTguOCA3LjItMTQuNyA5LjYtNS44IDIuNC0xMi42IDMuNi0yMC4zIDMuNmgtMjcuOXptMTEuNiA3NC42SDUwMGM0LjkgMCA5LjYtLjcgMTQtMnM4LjItMy4zIDExLjUtNiA1LjktNiA3LjktMTBjMS45LTQgMi45LTguNiAyLjktMTRzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC41cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40VjExMFpNNTYxLjYgMzUuNWgyOS43YzMuNyAwIDcuMi40IDEwLjMgMS4zIDMuMi45IDUuOSAyLjIgOC4yIDMuOXEzLjQ1IDIuNTUgNS40IDYuNmMxLjMgMi43IDIgNS45IDIgOS41cy0xLjQgOC45LTQuMSAxMi02LjMgNS40LTEwLjYgNi44di4yYzIuNi4yIDUgLjggNy4zIDJzNC4yIDIuNyA1LjkgNC42YzEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjR6TTU3My4yIDcxSDU4OWMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4zdjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yczMuNC0yLjYgNC43LTQuNGMxLjMtMS45IDEuOS00LjMgMS45LTcuNCAwLTUuMS0xLjctOC45LTUtMTEuNHMtNy44LTMuOC0xMy40LTMuOGgtMTcuMnYyOS43WiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTg2LjMgNC4yQzUzLjQgNC4yIDMwLjQgMjQuNyAzMC40IDU0czQuOSAzNC44IDkuMSA1NS44YzMgMTUuMSA1LjYgMjcuMyA1LjcgMjcuNi44IDMuNyA0LjQgNi4xIDguMiA1LjVoLjhjMC0uMS0uNi0uNy0uNi0uNy0xLjEtMS4xLTEuOC0yLjQtMi4zLTMuOC0uMi0uOC0uMy0xLjUtLjQtMi4xIDAtLjMgMC0uNi0uMS0uOWwtMS41LTguOWMtLjYtNC0xLjMtOC0xLjgtMTEuOCAwLS4zLjEtLjUuNC0uNXMuNS4xLjUuNHExLjIgNS43IDIuNCAxMS43bDEuNyA4LjhjMCAuMy4xLjYuMi45LjEuNy4zIDEuNC40IDIgLjUgMS41IDEuNSAyLjggMi44IDMuOC4xLjEuMy4yLjQuMy44LjQgMS42LjcgMi41LjkuOS4xIDEuOC4xIDIuNiAwIC45LS4yIDEuOS0uNiAyLjctMS4ybC4zLS4yLS4yLS4zYy0uNy0uOS0xLjEtMS45LTEuNC0zLS4yLS44LS4zLTEuNS0uMy0yLjJ2LS45bC0uOS04LjljLS40LTQuMS0uNy04LjEtMS0xMS45IDAtLjEgMC0uMi4xLS4zIDAgMCAuMi0uMi4zLS4yLjMgMCAuNS4yLjUuNC41IDMuOCAxLjEgNy44IDEuNiAxMS44bDEuMSA4LjljMCAuMyAwIC41LjEuOCAwIC43LjIgMS40LjMgMiAuMi43LjQgMS4zLjggMS45LjUuOSAxLjIgMS42IDIgMi4yIDAgMCAwIC4xLjEuMSAxLjQgMSAzLjMgMS40IDUgMS4xczMuMy0xLjIgNC41LTIuNWMuMy0uMy41LS43LjctMS4xdi0uNGMtLjEtLjQtLjItLjgtLjQtMS4yLS4xLS42LS4yLTEuNC0uMi0yLjN2LTQuNGMtLjItNS42LS4yLTExLjMtLjItMTcuNiAwLS4zLjItLjUuNS0uNXMuNS4yLjUuNGMuNCA2LjMuNyAxMiAuOSAxNy42bC4yIDQuNGMwIC44IDAgMS40LjIgMiAuMS41LjMgMS4yLjcgMS44di4xYzEuMiAyLjIgMy42IDMuNyA2LjEgMy43aC4xYzIuNSAwIDUtMS40IDYuMy0zLjcuMy0uNS41LTEuMS43LTEuOC4xLS42LjItMS4yLjItMS45bC4yLTQuNWMuMi01LjMuNS0xMSAuOS0xNy42IDAtLjMuMi0uNS41LS40LjIgMCAuNC4yLjQuNSAwIDYuNiAwIDEyLjMtLjEgMTcuNnY0LjRjMCAuNiAwIDEuNS0uMyAyLjMgMCAuNC0uMi44LS4zIDEuMnYuNGMuMi40LjUuNy43IDEuMSAxLjEgMS40IDIuNyAyLjMgNC41IDIuNSAxLjcuMyAzLjYtLjEgNS0xLjFoLjFjLjgtLjYgMS41LTEuNCAyLTIuMi40LS42LjYtMS4yLjgtMS45LjEtLjYuMi0xLjMuMy0yIDAtLjMgMC0uNS4xLS44bDEuMS04LjljLjUtNCAxLjEtOCAxLjYtMTEuOCAwLS4xIDAtLjIuMi0uMy4xIDAgLjItLjEuMyAwIC4yIDAgLjQuMy40LjUtLjMgMy44LS43IDcuOC0xIDExLjlsLS45IDguOXYuOGMwIC43LS4xIDEuNC0uMyAyLjItLjMgMS4xLS43IDIuMS0xLjQgM2wtLjIuMy4zLjJjLjguNiAxLjggMSAyLjcgMS4yczEuNy4yIDIuNiAwYy45LS4xIDEuNy0uNCAyLjUtLjkuMiAwIC4zLS4yLjQtLjMgMS4zLS45IDIuMy0yLjMgMi44LTMuOC4yLS41LjMtMS4zLjQtMiAwLS4zLjEtLjYuMi0uOGwxLjctOC44Yy44LTQgMS42LTggMi40LTExLjcgMC0uMy4zLS40LjYtLjQuMiAwIC40LjMuNC41LS42IDMuOC0xLjIgNy44LTEuOCAxMS44bC0xLjUgOC45YzAgLjMtLjEuNi0uMS45LS4xLjctLjIgMS4zLS40IDIuMi0uNCAxLjQtMS4yIDIuNy0yLjMgMy44bC0uNS41LjcuMmMuNCAwIC44LjEgMS4yLjEgMy4zIDAgNi4zLTIuMyA3LTUuNiAwLS4zIDIuOC0xMi45IDUuOC0yOC41IDQuMS0yMC45IDktNDcgOS01NUMxNDIgMjUgMTE5IDQuNSA4Ni4xIDQuNVoiIHN0eWxlPSJmaWxsOiM1N2QxZTUiLz48cGF0aCBkPSJNMTMzLjEgMTA5LjdjLTMuMSAxNS43LTUuNyAyNy41LTUuNyAyNy43LS43IDMuMi0zLjcgNS40LTcgNS40aC0xLjZsLjMtLjRjMS4xLTEuMSAxLjktMi40IDIuMy0zLjguMi0uOC4zLTEuNS40LTIuMiAwLS40IDAtLjYuMS0uOWwxLjUtOC45Yy42LTQgMS4zLTggMS44LTExLjggMC0uMy0uMi0uNy0uNS0uN2gtLjVjLS4xIDAtLjMuMi0uMy40LS44IDMuNy0xLjYgNy43LTIuNCAxMS43bC0xLjcgOC44YzAgLjIgMCAuNC0uMS42di4zYy0uMi43LS4zIDEuNC0uNSAxLjktLjQgMS41LTEuNCAyLjgtMi43IDMuNy0uMSAwLS4zLjItLjQuMy0uNy40LTEuNS43LTIuNC44cy0xLjcuMS0yLjYgMGMtLjktLjItMS44LS42LTIuNi0xLjJoLS4yYzAtLjEuMS0uMy4xLS4zLjctMSAxLjEtMiAxLjQtMy4xLjItLjguMy0xLjUuMy0yLjN2LS44bC45LTguOWMuNC00LjEuNy04LjEgMS0xMS45IDAtLjMtLjItLjctLjYtLjctLjIgMC0uMyAwLS41LjEtLjEuMS0uMi4zLS4zLjQtLjUgMy44LTEuMSA3LjctMS42IDExLjhsLTEuMSA4LjljMCAuMyAwIC41LS4xLjggMCAuNy0uMiAxLjQtLjMgMi0uMi42LS40IDEuMi0uOCAxLjgtLjUuOC0xLjIgMS42LTIgMi4xIDAgMCAwIC4xLS4xLjEtMS40LjktMy4yIDEuMy00LjkgMS4xcy0zLjMtMS4xLTQuMy0yLjVjLS4zLS4zLS41LS43LS43LTF2LS4yYy4xLS40LjMtLjguNC0xLjIuMi0uOC4yLTEuOC4yLTIuNHYtNC40Yy4yLTUuMi4yLTEwLjkuMi0xNy42IDAtLjMtLjMtLjYtLjYtLjctLjQgMC0uNy4zLS43LjYtLjQgNi41LS43IDEyLjMtLjkgMTcuNmwtLjIgNC41YzAgLjcgMCAxLjMtLjIgMS45LS4yLjctLjQgMS4zLS43IDEuOC0xLjIgMi4yLTMuNiAzLjYtNiAzLjZIODZjLTIuNCAwLTQuOC0xLjQtNi0zLjZ2LS4xYy0uMy0uNi0uNS0xLjItLjctMS43LS4xLS42LS4yLTEuMi0uMi0ybC0uMi00LjRjLS4yLTUuNS0uNS0xMS4zLS45LTE3LjYgMC0uMy0uMy0uNi0uNy0uNnMtLjcuMy0uNy43YzAgNi4zIDAgMTIgLjEgMTcuNnY0LjRxMCAxLjUuMyAyLjRjLjEuNC4yLjkuNCAxLjJ2LjJjLS4yLjQtLjUuNy0uNyAxYTcuNiA3LjYgMCAwIDEtNC4zIDIuNWMtMS43LjMtMy41LS4xLTQuOS0xLjFoLS4xYy0uOC0uNi0xLjUtMS4zLTItMi4yLS4zLS42LS42LTEuMi0uOC0xLjgtLjEtLjUtLjItMS4yLS4zLTIgMC0uMyAwLS41LS4xLS44bC0xLjEtOC45Yy0uNS00LjEtMS4xLTguMS0xLjYtMTEuOCAwLS40LS4zLS42LS43LS42LS4yIDAtLjMgMC0uNC4yLS4xLjEtLjIuMy0uMi41LjMgMy44LjcgNy44IDEgMTEuOWwuOSA4Ljl2LjljMCAuNy4xIDEuNC4zIDIuMi4zIDEuMS43IDIuMSAxLjQgMy4xdi4yYy4xIDAgMCAuMSAwIC4xLS44LjYtMS43IDEtMi42IDEuMi0uOC4yLTEuNy4yLTIuNiAwcS0xLjM1LS4xNS0yLjQtLjljLS4xIDAtLjMtLjItLjQtLjMtMS4zLS45LTIuMy0yLjItMi43LTMuNy0uMi0uNS0uMy0xLjItLjQtMS45IDAtLjQtLjEtLjctLjItLjlsLTEuNy04LjhjLS44LTQtMS42LTgtMi40LTExLjcgMC0uMy0uNC0uNi0uNy0uNS0uNCAwLS42LjQtLjYuNy42IDMuOCAxLjIgNy44IDEuOCAxMS44bDEuNSA4LjljMCAuMyAwIC41LjEuOC4xLjguMiAxLjUuNCAyLjMuNCAxLjQgMS4yIDIuNyAyLjMgMy44bC4zLjNoLS40Yy0zLjcuNy03LjItMS43LTgtNS4zLS4zLTEuMy0zLTEzLjEtNS45LTI3LjZsNC4yIDI4YzAgLjIuMS41LjIuN3YuMmMuMS4yLjIuMy4zLjUgMCAwIDAgLjIuMS4zIDAgLjEuMS4yLjIuNCAwIC4xLjEuMi4yLjN2LjJsLjYuOWMuMS4yLjIuMy40LjUuMS4yLjMuMy40LjUgMS42IDEuNSAzLjcgMi4zIDUuOSAyLjNzMSAwIDEuNC0uMWwzLjItLjVjLjUuMiAxLjEuNCAxLjcuNCAxLjEuMiAyLjIuMSAzLjIgMCAxLjEtLjIgMi4zLS43IDMuMy0xLjVsLjgtLjZjLjIuMi41LjQuOC42bC4yLjJjMS43IDEuMSA0IDEuNiA2LjEgMS4zczQuMS0xLjQgNS40LTMuMWMuMi0uMy41LS42LjctLjkgMS41IDIuNSA0LjQgNC4xIDcuMyA0LjFoLjJjMi45IDAgNS43LTEuNiA3LjItNC4xLjIuMy40LjcuNy45IDEuMyAxLjcgMy4zIDIuOCA1LjQgMy4xaDEuM2MxLjcgMCAzLjQtLjUgNC44LTEuNCAwIDAgLjEgMCAuMi0uMS4zLS4yLjUtLjQuOC0uNmwuOC42cTEuNSAxLjA1IDMuMyAxLjVjMSAuMiAyLjEuMiAzLjIgMHExLjA1LS4xNSAyLjEtLjZsMi43LjdoLjFjLjUuMS45LjEgMS40LjEgNCAwIDcuNi0yLjkgOC41LTYuOCAwLS4xIDQuMi0yOCA0LjItMjhaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNNDYuNCAxNy43Yy0xMC4xIDguOC0xNiAyMS40LTE2IDM2LjJzMTQuNSA4Mi44IDE0LjcgODMuNWMuMyAxLjUgMS40IDIuNiAyLjQgMy42LTMuNi0xNy40LTE1LjQtNzMuNS0xNS40LTg2LjZzNS4yLTI3LjIgMTQuMy0zNi43IiBzdHlsZT0iZmlsbDojOTNlMWVmIi8+PHBhdGggZD0iTTcxLjMgMjUuNkM1Ny45IDI1LjYgNDcgMzYuNSA0NyA0OS45czEwLjkgMjQuMyAyNC4zIDI0LjMgMjQuMy0xMC45IDI0LjMtMjQuMy0xMC45LTI0LjMtMjQuMy0yNC4zIiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNDQuNiA0OGMwIDEzLjQgMTAuOSAyNC4zIDI0LjMgMjQuM1M5My4yIDYxLjQgOTMuMiA0OCA4Mi4zIDIzLjcgNjguOSAyMy43IDQ0LjYgMzQuNiA0NC42IDQ4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.header-logo__bar{background-color:var(--text-color);border-left:1px solid var(--text-color);height:11.56px;margin:0 7.5px;width:0}.header-logo__text{color:var(--text-color);font-size:10.11px;letter-spacing:.722408px;line-height:12px;text-transform:uppercase}.header-navigation{display:none}.header-button{display:none;margin-left:15px;text-transform:uppercase}.header-search-box{display:none;margin-right:20px;width:200px}.scylla-dropdown__content{background-color:var(--card-bg)}.scylla-dropdown--header .scylla-dropdown__item{font-size:14px}.scylla-dropdown--header .scylla-dropdown__title{text-transform:uppercase}.scylla-dropdown--header .scylla-dropdown__title .chevron{font-size:24px;line-height:.5em;margin-left:4px}.contents.local>ul>li .scylla-dropdown--header .scylla-dropdown__content a:before,.scylla-dropdown--header .scylla-dropdown__content .contents.local>ul>li a:before,.scylla-dropdown--header .scylla-dropdown__content .scylla-icon{min-height:20px;width:20px}@media screen and (min-width:1024px){.header{padding:18px 0}.header-logo__img{width:152px}.header-logo__bar{height:16px;margin:0 10px}.header-logo__text{font-size:14px;letter-spacing:.722408px;line-height:12px;text-transform:uppercase}.header-navigation{align-items:center;display:flex;justify-content:center}.header-search-box{align-items:center;display:flex;flex-direction:row;gap:20px}}@media screen and (min-width:1200px){.header-logo{margin-left:30px;width:357px}.header-search-box{margin-right:30px;max-width:20%;width:318px}.header-button{display:block}}.side-nav{background:var(--navigation-bg);display:none;height:100vh;left:0;line-height:24px;max-height:calc(100vh - 50px);overflow-y:auto;padding:20px 20px 0;position:fixed;top:50px;width:100%;z-index:100}.side-nav__title{font-weight:700;margin-bottom:20px}.side-nav__title a{color:var(--text-color);text-decoration:none}.side-nav__title a:hover{font-weight:700}.side-nav__content{max-width:90%;overflow-wrap:break-word}.side-nav__content label,.side-nav__content label i{align-items:center;display:flex;margin:0;padding:0}.side-nav__content label{color:inherit;font-size:22px;line-height:1;width:12px}.side-nav__content .scylla-icon--expand{height:5px;vertical-align:top;width:10px}.side-nav__content .toctree-checkbox{display:none;position:absolute;right:20px}.side-nav__content .toctree-checkbox~ul{display:none;margin-right:20px}.side-nav__content .toctree-checkbox:checked~ul{display:block}.side-nav__content ul{margin:0}.side-nav__content a:not(.current){color:var(--text-color)}.side-nav__content a:not(.current):hover{color:var(--link-color-hover);font-weight:400}.side-nav__content li{list-style:none;padding:0 0 24px}.side-nav__content li.has-children{align-items:center;display:flex;flex-wrap:wrap}.side-nav__content li.has-children>a{max-width:calc(100% - 15px)}.side-nav__content li.has-children.current{padding-bottom:20px}.side-nav__content li.has-children:hover{color:var(--link-color-hover)}.side-nav__content li.current-page{color:var(--link-color)}.side-nav__content li ul{margin-top:18px;width:100%}.side-nav__content li ul li{border-left:1px solid var(--link-color);padding:4px 0 4px 13px}.side-nav__content li ul ul{margin-left:0}.side-nav__content li .label{display:none}.side-nav__versions{max-width:90%}.side-nav__search,.side-nav__versions .dropdown{margin-bottom:20px}.collapsible-button{background:var(--white);background-color:var(--card-bg);border:0;border-radius:8px;border-radius:50%;bottom:10px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;display:none;font-size:0;left:300px;overflow:hidden;padding:13.5px;position:fixed}.collapsible-button i{display:block;font-size:20px}.side-nav--collapsed .collapsible-button{border-radius:0 30px 30px 0;left:-10px}.side-nav--collapsed .collapsible-button i{transform:rotate(180deg)}.layout--has-banner .side-nav{max-height:calc(100vh - 92.5px)}@media screen and (min-width:1024px){.side-nav{background-color:var(--navigation-bg);display:block;height:100%;left:auto;max-height:calc(100vh - 80px);padding:30px 40px;top:80px;width:286px;z-index:25}.side-nav__content{max-width:100%}.side-nav__search{display:none}.side-nav__versions{max-width:100%}.toctree-checkbox{right:40px}.layout--has-banner .side-nav{max-height:calc(100vh - 150px)}}@media screen and (min-width:1200px){.side-nav{width:357px}.side-nav--collapsed{background-color:transparent;padding-left:0;padding-right:0;width:126px}.side-nav--collapsed .side-nav-content{display:none}.collapsible-button{display:block}}.dark-theme-toggler,.side-nav-toggle{cursor:pointer;font-size:22px}.side-nav-toggle{display:flex;gap:10px;margin-right:20px;position:relative;z-index:300}@media screen and (min-width:1024px){.side-nav-toggle{display:none}}.secondary-side-nav{display:none;height:100%;line-height:24px;padding:20px;width:100%}.secondary-side-nav__content{overflow-wrap:break-word}.secondary-side-nav__content ul{list-style:none;margin:0}.secondary-side-nav__content li{border-bottom:1px solid var(--border-color);display:none;padding:10px 0;word-break:break-word}.secondary-side-nav__content li:last-child{border:0}.secondary-side-nav__content li .label{display:none}.secondary-side-nav__content li a{align-items:baseline;color:var(--text-muted);display:flex;font-size:14px}.secondary-side-nav__content li a:before{content:"";flex-shrink:0;font-size:8px;margin-right:10px;min-height:10px;opacity:.5}.secondary-side-nav__content li a.current,.secondary-side-nav__content li a:hover{color:var(--text-color);font-weight:400}.secondary-side-nav__content li a.current:before,.secondary-side-nav__content li a:hover:before{opacity:1}.secondary-side-nav__content li a.current{font-weight:700}.secondary-side-nav__content>ul>li>ul>li{display:block}.secondary-side-nav__content>ul>li{border:0;display:block}.secondary-side-nav__content>ul>li>a{display:none}@media screen and (min-width:1200px){.secondary-side-nav{display:block;max-height:100vh;max-height:calc(100vh - 80px);overflow-y:auto;padding:60px 60px 60px 20px;position:fixed;top:80px;width:286px}.layout--has-banner .secondary-side-nav{max-height:calc(100vh - 150px)}}.layout{background-color:var(--bg-color);display:flex}.pre-content{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.content{margin-top:50px;max-width:1440px;overflow-wrap:break-word;padding:20px;width:100%}.content .line-block,.content p{line-height:28px;margin-bottom:20px}.content ul{list-style:none}.content ul li:before{color:var(--text-muted);content:"•";float:left;font-family:FontAwesome;font-size:20px;font-weight:700;margin-left:-1em;margin-top:-2px;width:1em}.content ul ul{list-style:circle}.content ul ul li:before{content:""}.content ol ol{list-style:lower-latin}.content img{margin-bottom:30px}.content .inline-icon{font-size:22px}.content .inline-icon.icon-check{color:var(--primary)}.layout--full-width .content{max-width:100%;padding:0;width:100%}.layout--full-width .content .hero-wrapper,.layout--full-width .content .topics-grid{max-width:1190px}.layout--full-width .content.content--collapsed,.layout--full-width:not(.layout--sidebar) .content{margin-left:0}.landing__content{padding:0 16px}@media screen and (min-width:1024px){.content{margin-left:286px;margin-top:80px;min-height:calc(100vh - 260px);padding-bottom:100px;width:calc(100% - 286px)}}@media screen and (min-width:1200px){.content{margin-left:357px;padding:60px 40px 40px;width:calc(100% - 643px)}.content--collapsed{margin-left:126px;width:calc(100% - 412px)}.pre-content{margin-bottom:10px}.landing__content{padding:0 60px}.landing--floating .landing__content{position:relative;top:-70px}}.contents.local>ul{margin-bottom:30px;margin-left:0}.contents.local>ul>li{border-bottom:1px solid rgba(90,94,154,.1);padding:10px 0;word-break:break-word}.contents.local>ul>li:before{content:""}.contents.local>ul>li:last-child{border:0}.contents.local>ul>li ul{display:none}.contents.local>ul>li p{margin:0}.contents.local>ul>li a{font-size:14px}.contents.local>ul>li a:before{content:"";filter:invert(38%) sepia(71%) saturate(6789%) hue-rotate(231deg) brightness(90%) contrast(95%)!important;margin-right:10px;min-height:10px;opacity:.5;width:10px}.contents.local>ul>li a.current:before,.contents.local>ul>li a:hover:before{filter:brightness(0);opacity:1}.topic-title{color:var(--text-muted);font-size:10px;letter-spacing:1.5px;margin-bottom:0;text-transform:uppercase}.notice{margin-top:40px}.footer{background-color:var(--card-bg);box-shadow:0 -4px 10px rgba(0,0,0,.1);padding:30px 0;position:relative;width:100%;z-index:50}.footer-group{margin:0 auto;max-width:1030px;padding:0 20px}.footer-top{align-items:center;border-bottom:1px solid var(--border-color);display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:20px;text-align:center}.footer-logo{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0ze2ZpbGw6IzRkOWJiNn0uY2xzLTR7ZmlsbDojM2IyZDU1fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8xIj48cGF0aCBkPSJNMTg1LjYgMTAzLjFjMi4xIDMuMSA0LjggNS41IDggNi45IDMuMyAxLjUgNi42IDIuMiAxMC4xIDIuMnMzLjktLjMgNS45LS45IDMuOC0xLjUgNS41LTIuN2MxLjYtMS4yIDMtMi43IDQtNC41czEuNi0zLjggMS42LTYuMi0xLTUuOC0zLjEtNy41LTQuNy0zLjItNy44LTQuM2MtMy4xLTEuMi02LjUtMi4zLTEwLjEtMy40LTMuNy0xLjEtNy0yLjYtMTAuMS00LjVxLTQuNjUtMi44NS03LjgtNy44Yy0yLjEtMy4zLTMuMS03LjctMy4xLTEzLjJzLjUtNS4yIDEuNi04IDIuOC01LjQgNS4xLTcuNyA1LjMtNC4zIDktNS45cTUuNTUtMi40IDEzLjItMi40YzcuNjUgMCA5LjEuNiAxMy40IDEuOXM4IDMuOSAxMS4yIDcuOWwtOS40IDguNmMtMS41LTIuMy0zLjUtNC4xLTYuMi01LjQtMi43LTEuNC01LjctMi4xLTkuMS0yLjFzLTUuOS40LTggMS4zcS0zLjE1IDEuMi01LjEgMy4zYy0xLjMgMS4zLTIuMiAyLjgtMi43IDQuM3MtLjggMi45LS44IDQuMmMwIDMuNiAxIDYuNCAzLjEgOC4zczQuNyAzLjUgNy44IDQuNyA2LjUgMi4zIDEwLjEgMy4zYzMuNyAxIDcgMi4zIDEwLjEgNHM1LjcgNC4xIDcuOCA3IDMuMSA3IDMuMSAxMi4xLS44IDcuOC0yLjQgMTEuMS0zLjcgNi4xLTYuMyA4LjNjLTIuNyAyLjMtNS44IDQtOS40IDUuMnMtNy41IDEuOC0xMS42IDEuOC0xMC43LTEtMTUuNi0yLjktOC44LTQuOS0xMS43LTguOWw5LjUtOC4yWk0yODYuMSA3OXEtMy0zLjE1LTYuMy00LjhjLTIuMi0xLjEtNC45LTEuNi03LjktMS42cy01LjYuNS03LjggMS42LTQuMSAyLjYtNS42IDQuNS0yLjYgNC4xLTMuNCA2LjVjLS44IDIuNS0xLjEgNS0xLjEgNy43cy40IDUuMiAxLjMgNy41Yy45IDIuNCAyLjEgNC40IDMuNyA2LjJzMy41IDMuMiA1LjggNC4yIDQuOCAxLjUgNy42IDEuNSA1LjctLjUgNy45LTEuNnEzLjMtMS42NSA2LTQuOGw3LjcgNy43Yy0yLjggMy4xLTYuMSA1LjQtOS44IDYuOHMtNy43IDIuMS0xMS45IDIuMS04LjUtLjctMTIuMS0yLjJjLTMuNy0xLjUtNi44LTMuNS05LjUtNi4xcy00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4xIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4zIDYzLjhoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN0gzNTZsLTI3LjIgNjkuNmMtMSAyLjUtMiA0LjgtMyA2LjgtMSAyLjEtMi4zIDMuOC0zLjcgNS4zcy0zLjIgMi42LTUuMiAzLjRxLTMgMS4yLTcuNSAxLjJjLTQuNSAwLTMuMi0uMS00LjktLjMtMS42LS4yLTMuMi0uNi00LjgtMS4zbDEuMy05LjljMi4yLjkgNC4zIDEuMyA2LjUgMS4zczMuMS0uMiA0LjMtLjdjMS4yLS40IDIuMi0xLjEgMy0xLjlxMS4yLTEuMiAyLjEtM2MuNi0xLjEgMS4xLTIuNCAxLjctMy45bDMuNS05LjEtMjMuNy01Ny42Wk0zNjQuMSAyOS43SDM3NVYxMjFoLTEwLjl6TTM4Ni43IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi44IDcwLjhjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczgtMi4xIDEyLjEtMi4xIDcuOC41IDEwLjggMS42YzMgMSA1LjUgMi41IDcuNCA0LjIgMS45IDEuOCAzLjQgMy44IDQuMyA2LjFzMS40IDQuNyAxLjQgNy4ydjI5LjJjMCAyIDAgMy45LjEgNS42IDAgMS43LjIgMy4zLjQgNC44aC05LjdjLS4yLTIuOS0uNC01LjgtLjQtOC43aC0uMmMtMi40IDMuNy01LjMgNi4zLTguNiA3LjktMy4zIDEuNS03LjEgMi4zLTExLjUgMi4zcy01LjItLjQtNy42LTEuMXEtMy42LTEuMDUtNi4zLTMuM2MtMS44LTEuNS0zLjItMy4yLTQuMy01LjQtMS0yLjEtMS42LTQuNi0xLjYtNy40cy44LTYuOCAyLjUtOS4zYzEuNi0yLjUgMy45LTQuNSA2LjgtNi4xczYuMi0yLjcgMTAtMy40IDcuOS0xIDEyLjMtMWg4di0yLjRjMC0xLjUtLjMtMi45LS44LTQuMy0uNi0xLjUtMS40LTIuOC0yLjUtMy45LTEuMS0xLjItMi41LTIuMS00LjItMi44cy0zLjctMS02LTEtMy45LjItNS41LjYtMyAuOS00LjMgMS41LTIuNSAxLjMtMy41IDIuMS0yLjEgMS42LTMgMi4zbC02LjUtNi44Wm0zMC43IDIyLjdjLTIuNiAwLTUuMi4xLTcuOS40cy01LjIuOC03LjQgMS42LTQgMS45LTUuNCAzLjQtMi4xIDMuMy0yLjEgNS42YzAgMy4zIDEuMSA1LjcgMy4zIDcuMSAyLjIgMS41IDUuMiAyLjIgOSAyLjJzNS41LS41IDcuNi0xLjVxMy4xNS0xLjUgNS4xLTMuOWMxLjMtMS42IDIuMi0zLjQgMi44LTUuNHMuOC0zLjkuOC01Ljl2LTMuNnpNNDczLjggMzUuNWgyOS44cTkgMCAxNS45IDIuMWM0LjYgMS40IDguNSAzLjIgMTEuOCA1LjVzNi4xIDQuOSA4LjMgNy45IDQgNiA1LjMgOS4yYzEuMyAzLjEgMi4yIDYuMyAyLjggOS40cy44IDYgLjggOC43cTAgOC4yNS0zIDE1LjljLTIgNS4xLTUgOS43LTguOSAxMy42LTQgNC04LjggNy4yLTE0LjcgOS42LTUuOCAyLjQtMTIuNiAzLjYtMjAuMiAzLjZoLTI3Ljl6bTExLjYgNzQuN0g1MDBjNC45IDAgOS42LS43IDE0LTJzOC4yLTMuMyAxMS41LTYgNS45LTYgNy45LTEwYzEuOS00IDIuOS04LjYgMi45LTEzLjlzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC40cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40djYzLjhaTTU2MS43IDM1LjVoMjkuN2MzLjcgMCA3LjEuNCAxMC4zIDEuM3M1LjkgMi4yIDguMiAzLjlxMy40NSAyLjU1IDUuNCA2LjZjMS4zIDIuNyAyIDUuOSAyIDkuNXMtMS40IDguOS00LjEgMTItNi4zIDUuNC0xMC42IDYuOHYuMmMyLjYuMiA1IC44IDcuMiAyIDIuMyAxLjIgNC4yIDIuNyA1LjkgNC42IDEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjRWMzUuNVpNNTczLjMgNzFoMTUuOGMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4ydjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yIDEuOC0xLjEgMy40LTIuNiA0LjctNC40IDEuMy0xLjkgMS45LTQuMyAxLjktNy40IDAtNS4xLTEuNy04LjktNS0xMS40cy03LjgtMy44LTEzLjQtMy44aC0xNy4ydjI5LjdaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNODYuMyA0LjJDNTMuNCA0LjIgMzAuNCAyNC43IDMwLjQgNTRzNC45IDM0LjggOS4xIDU1LjhjMyAxNS4xIDUuNiAyNy4zIDUuNyAyNy42LjggMy43IDQuNCA2LjEgOC4yIDUuNWguOGMwLS4xLS42LS43LS42LS43LTEuMS0xLjEtMS44LTIuNC0yLjMtMy44LS4yLS44LS4zLTEuNS0uNC0yLjEgMC0uMyAwLS42LS4xLS45bC0xLjUtOC45Yy0uNi00LTEuMy04LTEuOC0xMS44IDAtLjMuMS0uNS40LS41cy41LjEuNS40cTEuMiA1LjcgMi40IDExLjdsMS43IDguOGMwIC4zLjEuNi4yLjkuMS43LjMgMS40LjQgMiAuNSAxLjUgMS41IDIuOCAyLjggMy44LjEuMS4zLjIuNC4zLjguNCAxLjYuNyAyLjUuOS45LjEgMS44LjEgMi42IDAgLjktLjIgMS45LS42IDIuNy0xLjJsLjMtLjItLjItLjNjLS43LS45LTEuMS0xLjktMS40LTMtLjItLjgtLjMtMS41LS4zLTIuMnYtLjlsLS45LTguOWMtLjQtNC4xLS43LTguMS0xLTExLjkgMC0uMSAwLS4yLjEtLjMgMCAwIC4yLS4yLjMtLjIuMyAwIC41LjIuNS40LjUgMy44IDEuMSA3LjggMS42IDExLjhsMS4xIDguOWMwIC4zIDAgLjUuMS44IDAgLjcuMiAxLjQuMyAyIC4yLjcuNCAxLjMuOCAxLjkuNS45IDEuMiAxLjYgMiAyLjIgMCAwIDAgLjEuMS4xIDEuNCAxIDMuMyAxLjQgNSAxLjFzMy4zLTEuMiA0LjUtMi41Yy4zLS4zLjUtLjcuNy0xLjF2LS40Yy0uMS0uNC0uMi0uOC0uNC0xLjItLjEtLjYtLjItMS40LS4yLTIuM3YtNC40Yy0uMi01LjYtLjItMTEuMy0uMi0xNy42IDAtLjMuMi0uNS41LS41cy41LjIuNS40Yy40IDYuMy43IDEyIC45IDE3LjZsLjIgNC40YzAgLjggMCAxLjQuMiAyIC4xLjUuMyAxLjIuNyAxLjh2LjFjMS4yIDIuMiAzLjYgMy43IDYuMSAzLjdoLjFjMi41IDAgNS0xLjQgNi4zLTMuNy4zLS41LjUtMS4xLjctMS44LjEtLjYuMi0xLjIuMi0xLjlsLjItNC41Yy4yLTUuMy41LTExIC45LTE3LjYgMC0uMy4yLS41LjUtLjQuMiAwIC40LjIuNC41IDAgNi42IDAgMTIuMy0uMSAxNy42djQuNGMwIC42IDAgMS41LS4zIDIuMyAwIC40LS4yLjgtLjMgMS4ydi40Yy4yLjQuNS43LjcgMS4xIDEuMSAxLjQgMi43IDIuMyA0LjUgMi41IDEuNy4zIDMuNi0uMSA1LTEuMWguMWMuOC0uNiAxLjUtMS40IDItMi4yLjQtLjYuNi0xLjIuOC0xLjkuMS0uNi4yLTEuMy4zLTIgMC0uMyAwLS41LjEtLjhsMS4xLTguOWMuNS00IDEuMS04IDEuNi0xMS44IDAtLjEgMC0uMi4yLS4zLjEgMCAuMi0uMS4zIDAgLjIgMCAuNC4zLjQuNS0uMyAzLjgtLjcgNy44LTEgMTEuOWwtLjkgOC45di44YzAgLjctLjEgMS40LS4zIDIuMi0uMyAxLjEtLjcgMi4xLTEuNCAzbC0uMi4zLjMuMmMuOC42IDEuOCAxIDIuNyAxLjJzMS43LjIgMi42IDBjLjktLjEgMS43LS40IDIuNS0uOS4yIDAgLjMtLjIuNC0uMyAxLjMtLjkgMi4zLTIuMyAyLjgtMy44LjItLjUuMy0xLjMuNC0yIDAtLjMuMS0uNi4yLS44bDEuNy04LjhjLjgtNCAxLjYtOCAyLjQtMTEuNyAwLS4zLjMtLjQuNi0uNC4yIDAgLjQuMy40LjUtLjYgMy44LTEuMiA3LjgtMS44IDExLjhsLTEuNSA4LjljMCAuMy0uMS42LS4xLjktLjEuNy0uMiAxLjMtLjQgMi4yLS40IDEuNC0xLjIgMi43LTIuMyAzLjhsLS41LjUuNy4yYy40IDAgLjguMSAxLjIuMSAzLjMgMCA2LjMtMi4zIDctNS42IDAtLjMgMi44LTEyLjkgNS44LTI4LjUgNC4xLTIwLjkgOS00NyA5LTU1QzE0MiAyNSAxMTkgNC41IDg2LjEgNC41WiIgc3R5bGU9ImZpbGw6IzU3ZDFlNSIvPjxwYXRoIGQ9Ik0xMzMuMSAxMDkuN2MtMy4xIDE1LjctNS43IDI3LjUtNS43IDI3LjctLjcgMy4yLTMuNyA1LjQtNyA1LjRoLTEuNmwuMy0uNGMxLjEtMS4xIDEuOS0yLjQgMi4zLTMuOC4yLS44LjMtMS41LjQtMi4yIDAtLjQgMC0uNi4xLS45bDEuNS04LjljLjYtNCAxLjMtOCAxLjgtMTEuOCAwLS4zLS4yLS43LS41LS43aC0uNWMtLjEgMC0uMy4yLS4zLjQtLjggMy43LTEuNiA3LjctMi40IDExLjdsLTEuNyA4LjhjMCAuMiAwIC40LS4xLjZ2LjNjLS4yLjctLjMgMS40LS41IDEuOS0uNCAxLjUtMS40IDIuOC0yLjcgMy43LS4xIDAtLjMuMi0uNC4zLS43LjQtMS41LjctMi40LjhzLTEuNy4xLTIuNiAwYy0uOS0uMi0xLjgtLjYtMi42LTEuMmgtLjJjMC0uMS4xLS4zLjEtLjMuNy0xIDEuMS0yIDEuNC0zLjEuMi0uOC4zLTEuNS4zLTIuM3YtLjhsLjktOC45Yy40LTQuMS43LTguMSAxLTExLjkgMC0uMy0uMi0uNy0uNi0uNy0uMiAwLS4zIDAtLjUuMS0uMS4xLS4yLjMtLjMuNC0uNSAzLjgtMS4xIDcuNy0xLjYgMTEuOGwtMS4xIDguOWMwIC4zIDAgLjUtLjEuOCAwIC43LS4yIDEuNC0uMyAyLS4yLjYtLjQgMS4yLS44IDEuOC0uNS44LTEuMiAxLjYtMiAyLjEgMCAwIDAgLjEtLjEuMS0xLjQuOS0zLjIgMS4zLTQuOSAxLjFzLTMuMy0xLjEtNC4zLTIuNWMtLjMtLjMtLjUtLjctLjctMXYtLjJjLjEtLjQuMy0uOC40LTEuMi4yLS44LjItMS44LjItMi40di00LjRjLjItNS4yLjItMTAuOS4yLTE3LjYgMC0uMy0uMy0uNi0uNi0uNy0uNCAwLS43LjMtLjcuNi0uNCA2LjUtLjcgMTIuMy0uOSAxNy42bC0uMiA0LjVjMCAuNyAwIDEuMy0uMiAxLjktLjIuNy0uNCAxLjMtLjcgMS44LTEuMiAyLjItMy42IDMuNi02IDMuNkg4NmMtMi40IDAtNC44LTEuNC02LTMuNnYtLjFjLS4zLS42LS41LTEuMi0uNy0xLjctLjEtLjYtLjItMS4yLS4yLTJsLS4yLTQuNGMtLjItNS41LS41LTExLjMtLjktMTcuNiAwLS4zLS4zLS42LS43LS42cy0uNy4zLS43LjdjMCA2LjMgMCAxMiAuMSAxNy42djQuNHEwIDEuNS4zIDIuNGMuMS40LjIuOS40IDEuMnYuMmMtLjIuNC0uNS43LS43IDFhNy42IDcuNiAwIDAgMS00LjMgMi41Yy0xLjcuMy0zLjUtLjEtNC45LTEuMWgtLjFjLS44LS42LTEuNS0xLjMtMi0yLjItLjMtLjYtLjYtMS4yLS44LTEuOC0uMS0uNS0uMi0xLjItLjMtMiAwLS4zIDAtLjUtLjEtLjhsLTEuMS04LjljLS41LTQuMS0xLjEtOC4xLTEuNi0xMS44IDAtLjQtLjMtLjYtLjctLjYtLjIgMC0uMyAwLS40LjItLjEuMS0uMi4zLS4yLjUuMyAzLjguNyA3LjggMSAxMS45bC45IDguOXYuOWMwIC43LjEgMS40LjMgMi4yLjMgMS4xLjcgMi4xIDEuNCAzLjF2LjJjLjEgMCAwIC4xIDAgLjEtLjguNi0xLjcgMS0yLjYgMS4yLS44LjItMS43LjItMi42IDBxLTEuMzUtLjE1LTIuNC0uOWMtLjEgMC0uMy0uMi0uNC0uMy0xLjMtLjktMi4zLTIuMi0yLjctMy43LS4yLS41LS4zLTEuMi0uNC0xLjkgMC0uNC0uMS0uNy0uMi0uOWwtMS43LTguOGMtLjgtNC0xLjYtOC0yLjQtMTEuNyAwLS4zLS40LS42LS43LS41LS40IDAtLjYuNC0uNi43LjYgMy44IDEuMiA3LjggMS44IDExLjhsMS41IDguOWMwIC4zIDAgLjUuMS44LjEuOC4yIDEuNS40IDIuMy40IDEuNCAxLjIgMi43IDIuMyAzLjhsLjMuM2gtLjRjLTMuNy43LTcuMi0xLjctOC01LjMtLjMtMS4zLTMtMTMuMS01LjktMjcuNmw0LjIgMjhjMCAuMi4xLjUuMi43di4yYy4xLjIuMi4zLjMuNSAwIDAgMCAuMi4xLjMgMCAuMS4xLjIuMi40IDAgLjEuMS4yLjIuM3YuMmwuNi45Yy4xLjIuMi4zLjQuNS4xLjIuMy4zLjQuNSAxLjYgMS41IDMuNyAyLjMgNS45IDIuM3MxIDAgMS40LS4xbDMuMi0uNWMuNS4yIDEuMS40IDEuNy40IDEuMS4yIDIuMi4xIDMuMiAwIDEuMS0uMiAyLjMtLjcgMy4zLTEuNWwuOC0uNmMuMi4yLjUuNC44LjZsLjIuMmMxLjcgMS4xIDQgMS42IDYuMSAxLjNzNC4xLTEuNCA1LjQtMy4xYy4yLS4zLjUtLjYuNy0uOSAxLjUgMi41IDQuNCA0LjEgNy4zIDQuMWguMmMyLjkgMCA1LjctMS42IDcuMi00LjEuMi4zLjQuNy43LjkgMS4zIDEuNyAzLjMgMi44IDUuNCAzLjFoMS4zYzEuNyAwIDMuNC0uNSA0LjgtMS40IDAgMCAuMSAwIC4yLS4xLjMtLjIuNS0uNC44LS42bC44LjZxMS41IDEuMDUgMy4zIDEuNWMxIC4yIDIuMS4yIDMuMiAwcTEuMDUtLjE1IDIuMS0uNmwyLjcuN2guMWMuNS4xLjkuMSAxLjQuMSA0IDAgNy42LTIuOSA4LjUtNi44IDAtLjEgNC4yLTI4IDQuMi0yOFoiIGNsYXNzPSJjbHMtNCIvPjxwYXRoIGQ9Ik00Ni40IDE3LjdjLTEwLjEgOC44LTE2IDIxLjQtMTYgMzYuMnMxNC41IDgyLjggMTQuNyA4My41Yy4zIDEuNSAxLjQgMi42IDIuNCAzLjYtMy42LTE3LjQtMTUuNC03My41LTE1LjQtODYuNnM1LjItMjcuMiAxNC4zLTM2LjciIHN0eWxlPSJmaWxsOiM5M2UxZWYiLz48cGF0aCBkPSJNNzEuMyAyNS42QzU3LjkgMjUuNiA0NyAzNi41IDQ3IDQ5LjlzMTAuOSAyNC4zIDI0LjMgMjQuMyAyNC4zLTEwLjkgMjQuMy0yNC4zLTEwLjktMjQuMy0yNC4zLTI0LjMiIGNsYXNzPSJjbHMtMyIvPjxwYXRoIGQ9Ik00NC42IDQ4YzAgMTMuNCAxMC45IDI0LjMgMjQuMyAyNC4zUzkzLjIgNjEuNCA5My4yIDQ4IDgyLjMgMjMuNyA2OC45IDIzLjcgNDQuNiAzNC42IDQ0LjYgNDgiIHN0eWxlPSJmaWxsOiNmZmYiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=);background-position:50%;background-repeat:no-repeat;height:36px;margin-bottom:0;width:156px!important}.dark .footer-logo{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZn0uY2xzLTN7ZmlsbDojNGQ5YmI2fS5jbHMtNHtmaWxsOiMzYjJkNTV9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkxheWVyXzEiPjxwYXRoIGQ9Ik0xODUuNCAxMDMuMWMyLjEgMy4xIDQuOCA1LjUgOCA2LjkgMy4zIDEuNSA2LjYgMi4yIDEwLjEgMi4yczMuOS0uMyA1LjktLjkgMy44LTEuNSA1LjUtMi43YzEuNi0xLjIgMy0yLjcgNC00LjVzMS42LTMuOCAxLjYtNi4yLTEtNS44LTMuMS03LjUtNC43LTMuMi03LjgtNC4zYy0zLjEtMS4yLTYuNS0yLjMtMTAuMi0zLjRxLTUuNTUtMS42NS0xMC4yLTQuNXQtNy44LTcuOGMtMi4xLTMuMy0zLjEtNy43LTMuMS0xMy4ycy41LTUuMiAxLjYtOCAyLjgtNS40IDUuMS03LjcgNS4zLTQuMyA5LTUuOXE1LjU1LTIuNCAxMy4yLTIuNGM3LjY1IDAgOS4xLjYgMTMuNCAxLjlzOCAzLjkgMTEuMiA3LjlsLTkuNCA4LjZjLTEuNS0yLjMtMy41LTQuMS02LjItNS40LTIuNy0xLjQtNS43LTIuMS05LjEtMi4xcy01LjkuNC04IDEuM3EtMy4xNSAxLjItNS4xIDMuM2MtMS4zIDEuMy0yLjIgMi44LTIuNyA0LjNzLS44IDIuOS0uOCA0LjJjMCAzLjYgMSA2LjQgMy4xIDguM3M0LjcgMy41IDcuOCA0LjdxNC42NSAxLjggMTAuMiAzLjNjMy43IDEgNy4xIDIuMyAxMC4yIDRzNS43IDQuMSA3LjggNyAzLjEgNyAzLjEgMTIuMS0uOCA3LjgtMi40IDExLjEtMy43IDYuMS02LjMgOC4zYy0yLjcgMi4zLTUuOCA0LTkuNCA1LjJzLTcuNSAxLjgtMTEuNiAxLjgtMTAuNy0xLTE1LjYtMi45LTguOC00LjktMTEuNy04LjlsOS41LTguMlpNMjg2IDc5cS0zLTMuMTUtNi4zLTQuOGMtMi4yLTEuMS00LjktMS42LTcuOS0xLjZzLTUuNi41LTcuOCAxLjYtNC4xIDIuNi01LjYgNC41LTIuNiA0LjEtMy40IDYuNWMtLjggMi41LTEuMSA1LTEuMSA3LjdzLjQgNS4yIDEuMyA3LjVjLjkgMi40IDIuMSA0LjUgMy43IDYuMnMzLjUgMy4yIDUuOCA0LjIgNC44IDEuNSA3LjYgMS41IDUuNy0uNSA3LjktMS42cTMuMy0xLjY1IDYtNC44bDcuNyA3LjdjLTIuOCAzLjEtNi4xIDUuNC05LjkgNi44LTMuNyAxLjQtNy43IDIuMS0xMS45IDIuMXMtOC41LS43LTEyLjItMi4yLTYuOC0zLjUtOS41LTYuMS00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4yIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4yIDYzLjdoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN2gxMS42bC0yNy4yIDY5LjZjLTEgMi41LTIgNC44LTMgNi44LTEgMi4xLTIuMyAzLjgtMy43IDUuM3MtMy4yIDIuNi01LjIgMy40LTQuNiAxLjItNy41IDEuMi0zLjItLjEtNC45LS4zYy0xLjYtLjItMy4yLS42LTQuOC0xLjNsMS4zLTkuOWMyLjIuOSA0LjMgMS4zIDYuNSAxLjNzMy4xLS4yIDQuMy0uN2MxLjItLjQgMi4yLTEuMSAzLTEuOXExLjItMS4yIDIuMS0zYy42LTEuMSAxLjEtMi40IDEuNy0zLjlsMy41LTkuMS0yMy43LTU3LjZaTTM2My45IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTM4Ni42IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi43IDcwLjdjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczguMS0yLjEgMTIuMS0yLjEgNy44LjUgMTAuOCAxLjZjMyAxIDUuNSAyLjUgNy40IDQuMiAxLjkgMS44IDMuNCAzLjggNC4zIDYuMXMxLjQgNC43IDEuNCA3LjJ2MjkuMmMwIDIgMCAzLjkuMSA1LjYgMCAxLjcuMiAzLjMuNCA0LjhoLTkuN2MtLjItMi45LS40LTUuOC0uNC04LjdoLS4yYy0yLjQgMy43LTUuMyA2LjMtOC42IDcuOS0zLjMgMS41LTcuMSAyLjMtMTEuNSAyLjNzLTUuMi0uNC03LjYtMS4xcS0zLjYtMS4wNS02LjMtMy4zYy0xLjgtMS41LTMuMi0zLjItNC4zLTUuNC0xLTIuMS0xLjYtNC42LTEuNi03LjRzLjgtNi44IDIuNS05LjNjMS42LTIuNSAzLjktNC41IDYuOC02LjFzNi4yLTIuNyAxMC0zLjQgNy45LTEgMTIuMy0xaDh2LTIuNGMwLTEuNS0uMy0yLjktLjgtNC4zLS42LTEuNS0xLjQtMi44LTIuNS0zLjktMS4xLTEuMi0yLjUtMi4xLTQuMi0yLjhzLTMuNy0xLTYtMS0zLjkuMi01LjUuNi0zIC45LTQuMyAxLjUtMi41IDEuMy0zLjUgMi4xLTIuMSAxLjYtMyAyLjNsLTYuNS02LjhabTMwLjcgMjIuOGMtMi42IDAtNS4yLjEtNy45LjRzLTUuMi44LTcuNCAxLjYtNCAxLjktNS40IDMuNC0yLjEgMy4zLTIuMSA1LjZjMCAzLjMgMS4xIDUuNyAzLjMgNy4xIDIuMiAxLjUgNS4yIDIuMiA5IDIuMnM1LjUtLjUgNy42LTEuNXEzLjE1LTEuNSA1LjEtMy45YzEuMy0xLjYgMi4yLTMuNCAyLjgtNS40cy44LTMuOS44LTUuOXYtMy42ek00NzMuOCAzNS41aDI5LjlxOSAwIDE1LjkgMi4xYzQuNiAxLjQgOC41IDMuMiAxMS44IDUuNXM2LjEgNC45IDguMyA3LjkgNCA2IDUuMyA5LjJjMS4zIDMuMSAyLjIgNi4zIDIuOCA5LjRzLjggNiAuOCA4LjdxMCA4LjI1LTMgMTUuOWMtMiA1LjEtNSA5LjctOC45IDEzLjctNCA0LTguOCA3LjItMTQuNyA5LjYtNS44IDIuNC0xMi42IDMuNi0yMC4zIDMuNmgtMjcuOXptMTEuNiA3NC42SDUwMGM0LjkgMCA5LjYtLjcgMTQtMnM4LjItMy4zIDExLjUtNiA1LjktNiA3LjktMTBjMS45LTQgMi45LTguNiAyLjktMTRzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC41cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40VjExMFpNNTYxLjYgMzUuNWgyOS43YzMuNyAwIDcuMi40IDEwLjMgMS4zIDMuMi45IDUuOSAyLjIgOC4yIDMuOXEzLjQ1IDIuNTUgNS40IDYuNmMxLjMgMi43IDIgNS45IDIgOS41cy0xLjQgOC45LTQuMSAxMi02LjMgNS40LTEwLjYgNi44di4yYzIuNi4yIDUgLjggNy4zIDJzNC4yIDIuNyA1LjkgNC42YzEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjR6TTU3My4yIDcxSDU4OWMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4zdjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yczMuNC0yLjYgNC43LTQuNGMxLjMtMS45IDEuOS00LjMgMS45LTcuNCAwLTUuMS0xLjctOC45LTUtMTEuNHMtNy44LTMuOC0xMy40LTMuOGgtMTcuMnYyOS43WiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTg2LjMgNC4yQzUzLjQgNC4yIDMwLjQgMjQuNyAzMC40IDU0czQuOSAzNC44IDkuMSA1NS44YzMgMTUuMSA1LjYgMjcuMyA1LjcgMjcuNi44IDMuNyA0LjQgNi4xIDguMiA1LjVoLjhjMC0uMS0uNi0uNy0uNi0uNy0xLjEtMS4xLTEuOC0yLjQtMi4zLTMuOC0uMi0uOC0uMy0xLjUtLjQtMi4xIDAtLjMgMC0uNi0uMS0uOWwtMS41LTguOWMtLjYtNC0xLjMtOC0xLjgtMTEuOCAwLS4zLjEtLjUuNC0uNXMuNS4xLjUuNHExLjIgNS43IDIuNCAxMS43bDEuNyA4LjhjMCAuMy4xLjYuMi45LjEuNy4zIDEuNC40IDIgLjUgMS41IDEuNSAyLjggMi44IDMuOC4xLjEuMy4yLjQuMy44LjQgMS42LjcgMi41LjkuOS4xIDEuOC4xIDIuNiAwIC45LS4yIDEuOS0uNiAyLjctMS4ybC4zLS4yLS4yLS4zYy0uNy0uOS0xLjEtMS45LTEuNC0zLS4yLS44LS4zLTEuNS0uMy0yLjJ2LS45bC0uOS04LjljLS40LTQuMS0uNy04LjEtMS0xMS45IDAtLjEgMC0uMi4xLS4zIDAgMCAuMi0uMi4zLS4yLjMgMCAuNS4yLjUuNC41IDMuOCAxLjEgNy44IDEuNiAxMS44bDEuMSA4LjljMCAuMyAwIC41LjEuOCAwIC43LjIgMS40LjMgMiAuMi43LjQgMS4zLjggMS45LjUuOSAxLjIgMS42IDIgMi4yIDAgMCAwIC4xLjEuMSAxLjQgMSAzLjMgMS40IDUgMS4xczMuMy0xLjIgNC41LTIuNWMuMy0uMy41LS43LjctMS4xdi0uNGMtLjEtLjQtLjItLjgtLjQtMS4yLS4xLS42LS4yLTEuNC0uMi0yLjN2LTQuNGMtLjItNS42LS4yLTExLjMtLjItMTcuNiAwLS4zLjItLjUuNS0uNXMuNS4yLjUuNGMuNCA2LjMuNyAxMiAuOSAxNy42bC4yIDQuNGMwIC44IDAgMS40LjIgMiAuMS41LjMgMS4yLjcgMS44di4xYzEuMiAyLjIgMy42IDMuNyA2LjEgMy43aC4xYzIuNSAwIDUtMS40IDYuMy0zLjcuMy0uNS41LTEuMS43LTEuOC4xLS42LjItMS4yLjItMS45bC4yLTQuNWMuMi01LjMuNS0xMSAuOS0xNy42IDAtLjMuMi0uNS41LS40LjIgMCAuNC4yLjQuNSAwIDYuNiAwIDEyLjMtLjEgMTcuNnY0LjRjMCAuNiAwIDEuNS0uMyAyLjMgMCAuNC0uMi44LS4zIDEuMnYuNGMuMi40LjUuNy43IDEuMSAxLjEgMS40IDIuNyAyLjMgNC41IDIuNSAxLjcuMyAzLjYtLjEgNS0xLjFoLjFjLjgtLjYgMS41LTEuNCAyLTIuMi40LS42LjYtMS4yLjgtMS45LjEtLjYuMi0xLjMuMy0yIDAtLjMgMC0uNS4xLS44bDEuMS04LjljLjUtNCAxLjEtOCAxLjYtMTEuOCAwLS4xIDAtLjIuMi0uMy4xIDAgLjItLjEuMyAwIC4yIDAgLjQuMy40LjUtLjMgMy44LS43IDcuOC0xIDExLjlsLS45IDguOXYuOGMwIC43LS4xIDEuNC0uMyAyLjItLjMgMS4xLS43IDIuMS0xLjQgM2wtLjIuMy4zLjJjLjguNiAxLjggMSAyLjcgMS4yczEuNy4yIDIuNiAwYy45LS4xIDEuNy0uNCAyLjUtLjkuMiAwIC4zLS4yLjQtLjMgMS4zLS45IDIuMy0yLjMgMi44LTMuOC4yLS41LjMtMS4zLjQtMiAwLS4zLjEtLjYuMi0uOGwxLjctOC44Yy44LTQgMS42LTggMi40LTExLjcgMC0uMy4zLS40LjYtLjQuMiAwIC40LjMuNC41LS42IDMuOC0xLjIgNy44LTEuOCAxMS44bC0xLjUgOC45YzAgLjMtLjEuNi0uMS45LS4xLjctLjIgMS4zLS40IDIuMi0uNCAxLjQtMS4yIDIuNy0yLjMgMy44bC0uNS41LjcuMmMuNCAwIC44LjEgMS4yLjEgMy4zIDAgNi4zLTIuMyA3LTUuNiAwLS4zIDIuOC0xMi45IDUuOC0yOC41IDQuMS0yMC45IDktNDcgOS01NUMxNDIgMjUgMTE5IDQuNSA4Ni4xIDQuNVoiIHN0eWxlPSJmaWxsOiM1N2QxZTUiLz48cGF0aCBkPSJNMTMzLjEgMTA5LjdjLTMuMSAxNS43LTUuNyAyNy41LTUuNyAyNy43LS43IDMuMi0zLjcgNS40LTcgNS40aC0xLjZsLjMtLjRjMS4xLTEuMSAxLjktMi40IDIuMy0zLjguMi0uOC4zLTEuNS40LTIuMiAwLS40IDAtLjYuMS0uOWwxLjUtOC45Yy42LTQgMS4zLTggMS44LTExLjggMC0uMy0uMi0uNy0uNS0uN2gtLjVjLS4xIDAtLjMuMi0uMy40LS44IDMuNy0xLjYgNy43LTIuNCAxMS43bC0xLjcgOC44YzAgLjIgMCAuNC0uMS42di4zYy0uMi43LS4zIDEuNC0uNSAxLjktLjQgMS41LTEuNCAyLjgtMi43IDMuNy0uMSAwLS4zLjItLjQuMy0uNy40LTEuNS43LTIuNC44cy0xLjcuMS0yLjYgMGMtLjktLjItMS44LS42LTIuNi0xLjJoLS4yYzAtLjEuMS0uMy4xLS4zLjctMSAxLjEtMiAxLjQtMy4xLjItLjguMy0xLjUuMy0yLjN2LS44bC45LTguOWMuNC00LjEuNy04LjEgMS0xMS45IDAtLjMtLjItLjctLjYtLjctLjIgMC0uMyAwLS41LjEtLjEuMS0uMi4zLS4zLjQtLjUgMy44LTEuMSA3LjctMS42IDExLjhsLTEuMSA4LjljMCAuMyAwIC41LS4xLjggMCAuNy0uMiAxLjQtLjMgMi0uMi42LS40IDEuMi0uOCAxLjgtLjUuOC0xLjIgMS42LTIgMi4xIDAgMCAwIC4xLS4xLjEtMS40LjktMy4yIDEuMy00LjkgMS4xcy0zLjMtMS4xLTQuMy0yLjVjLS4zLS4zLS41LS43LS43LTF2LS4yYy4xLS40LjMtLjguNC0xLjIuMi0uOC4yLTEuOC4yLTIuNHYtNC40Yy4yLTUuMi4yLTEwLjkuMi0xNy42IDAtLjMtLjMtLjYtLjYtLjctLjQgMC0uNy4zLS43LjYtLjQgNi41LS43IDEyLjMtLjkgMTcuNmwtLjIgNC41YzAgLjcgMCAxLjMtLjIgMS45LS4yLjctLjQgMS4zLS43IDEuOC0xLjIgMi4yLTMuNiAzLjYtNiAzLjZIODZjLTIuNCAwLTQuOC0xLjQtNi0zLjZ2LS4xYy0uMy0uNi0uNS0xLjItLjctMS43LS4xLS42LS4yLTEuMi0uMi0ybC0uMi00LjRjLS4yLTUuNS0uNS0xMS4zLS45LTE3LjYgMC0uMy0uMy0uNi0uNy0uNnMtLjcuMy0uNy43YzAgNi4zIDAgMTIgLjEgMTcuNnY0LjRxMCAxLjUuMyAyLjRjLjEuNC4yLjkuNCAxLjJ2LjJjLS4yLjQtLjUuNy0uNyAxYTcuNiA3LjYgMCAwIDEtNC4zIDIuNWMtMS43LjMtMy41LS4xLTQuOS0xLjFoLS4xYy0uOC0uNi0xLjUtMS4zLTItMi4yLS4zLS42LS42LTEuMi0uOC0xLjgtLjEtLjUtLjItMS4yLS4zLTIgMC0uMyAwLS41LS4xLS44bC0xLjEtOC45Yy0uNS00LjEtMS4xLTguMS0xLjYtMTEuOCAwLS40LS4zLS42LS43LS42LS4yIDAtLjMgMC0uNC4yLS4xLjEtLjIuMy0uMi41LjMgMy44LjcgNy44IDEgMTEuOWwuOSA4Ljl2LjljMCAuNy4xIDEuNC4zIDIuMi4zIDEuMS43IDIuMSAxLjQgMy4xdi4yYy4xIDAgMCAuMSAwIC4xLS44LjYtMS43IDEtMi42IDEuMi0uOC4yLTEuNy4yLTIuNiAwcS0xLjM1LS4xNS0yLjQtLjljLS4xIDAtLjMtLjItLjQtLjMtMS4zLS45LTIuMy0yLjItMi43LTMuNy0uMi0uNS0uMy0xLjItLjQtMS45IDAtLjQtLjEtLjctLjItLjlsLTEuNy04LjhjLS44LTQtMS42LTgtMi40LTExLjcgMC0uMy0uNC0uNi0uNy0uNS0uNCAwLS42LjQtLjYuNy42IDMuOCAxLjIgNy44IDEuOCAxMS44bDEuNSA4LjljMCAuMyAwIC41LjEuOC4xLjguMiAxLjUuNCAyLjMuNCAxLjQgMS4yIDIuNyAyLjMgMy44bC4zLjNoLS40Yy0zLjcuNy03LjItMS43LTgtNS4zLS4zLTEuMy0zLTEzLjEtNS45LTI3LjZsNC4yIDI4YzAgLjIuMS41LjIuN3YuMmMuMS4yLjIuMy4zLjUgMCAwIDAgLjIuMS4zIDAgLjEuMS4yLjIuNCAwIC4xLjEuMi4yLjN2LjJsLjYuOWMuMS4yLjIuMy40LjUuMS4yLjMuMy40LjUgMS42IDEuNSAzLjcgMi4zIDUuOSAyLjNzMSAwIDEuNC0uMWwzLjItLjVjLjUuMiAxLjEuNCAxLjcuNCAxLjEuMiAyLjIuMSAzLjIgMCAxLjEtLjIgMi4zLS43IDMuMy0xLjVsLjgtLjZjLjIuMi41LjQuOC42bC4yLjJjMS43IDEuMSA0IDEuNiA2LjEgMS4zczQuMS0xLjQgNS40LTMuMWMuMi0uMy41LS42LjctLjkgMS41IDIuNSA0LjQgNC4xIDcuMyA0LjFoLjJjMi45IDAgNS43LTEuNiA3LjItNC4xLjIuMy40LjcuNy45IDEuMyAxLjcgMy4zIDIuOCA1LjQgMy4xaDEuM2MxLjcgMCAzLjQtLjUgNC44LTEuNCAwIDAgLjEgMCAuMi0uMS4zLS4yLjUtLjQuOC0uNmwuOC42cTEuNSAxLjA1IDMuMyAxLjVjMSAuMiAyLjEuMiAzLjIgMHExLjA1LS4xNSAyLjEtLjZsMi43LjdoLjFjLjUuMS45LjEgMS40LjEgNCAwIDcuNi0yLjkgOC41LTYuOCAwLS4xIDQuMi0yOCA0LjItMjhaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNNDYuNCAxNy43Yy0xMC4xIDguOC0xNiAyMS40LTE2IDM2LjJzMTQuNSA4Mi44IDE0LjcgODMuNWMuMyAxLjUgMS40IDIuNiAyLjQgMy42LTMuNi0xNy40LTE1LjQtNzMuNS0xNS40LTg2LjZzNS4yLTI3LjIgMTQuMy0zNi43IiBzdHlsZT0iZmlsbDojOTNlMWVmIi8+PHBhdGggZD0iTTcxLjMgMjUuNkM1Ny45IDI1LjYgNDcgMzYuNSA0NyA0OS45czEwLjkgMjQuMyAyNC4zIDI0LjMgMjQuMy0xMC45IDI0LjMtMjQuMy0xMC45LTI0LjMtMjQuMy0yNC4zIiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNDQuNiA0OGMwIDEzLjQgMTAuOSAyNC4zIDI0LjMgMjQuM1M5My4yIDYxLjQgOTMuMiA0OCA4Mi4zIDIzLjcgNjguOSAyMy43IDQ0LjYgMzQuNiA0NC42IDQ4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.footer-links{margin-bottom:0!important;text-align:left}.footer-links__link{color:var(--text-color);font-size:12px;font-weight:500;letter-spacing:2.4px;margin-right:16px;text-transform:uppercase}.footer-actions{align-items:center;display:flex;gap:12px;justify-content:space-between}.footer-actions__link{color:var(--text-color);font-size:26px}.footer-bottom{color:var(--text-muted);display:flex;flex-wrap:wrap;font-size:12px;font-style:normal;font-weight:400;justify-content:center;letter-spacing:1.4px;line-height:23px;padding:20px 0 10px;text-align:center;text-transform:uppercase}@media screen and (max-width:510px){.footer-links{margin-bottom:20px}}@media screen and (min-width:1024px){.footer{padding:30px 0}.footer-group{padding:0}.footer-top{padding-bottom:30px}.footer-logo{margin:0;width:auto}.footer-links{padding:0 40px}.footer-links__link{font-size:14px;margin-right:28px}.footer-actions__link img{height:28px}.footer-bottom .footer-bottom__copyright,.footer-bottom .footer-bottom__last-updated,.footer-bottom .footer-bottom__version{padding:0 10px}.footer-bottom .footer-bottom__copyright{border-left:none}}.not-found{background-color:var(--navigation-bg);height:100%;overflow:hidden}.not-found__icon{display:block;margin:40px auto;max-width:300px}.not-found__text{text-align:center}.not-found__text h1{font-size:60px;line-height:1}.not-found__text p{margin:30px 0;width:100%}.not-found__button{text-transform:uppercase}.admonition{background-color:var(--body-bg);border-radius:4px;box-shadow:0 4px 4px rgba(0,0,0,.12);color:var(--text-muted);font-size:14px;line-height:20px;margin-bottom:30px;overflow:auto;padding:20px 20px 20px 52px;position:relative}.admonition:before{bottom:0;content:" ";left:0;position:absolute;right:0;top:0;z-index:-1}.admonition-title{color:var(--primary);display:flex;font-weight:700;left:-32px;position:relative}.admonition-title:before{background-image:none!important;content:"";font-size:24px;margin-right:8px;width:24px}.admonition p{margin-bottom:0!important}.admonition.tip{border:1px solid var(--success)}.admonition.tip:before{border-left:8px solid var(--success)}.admonition.tip .admonition-title{color:var(--success)!important}.admonition.note{border:1px solid var(--info)}.admonition.note:before{border-left:8px solid var(--info)}.admonition.note .admonition-title{color:var(--info)!important}.admonition.caution{border:1px solid var(--warning)}.admonition.caution:before{border-left:8px solid var(--warning)}.admonition.caution .admonition-title:before{content:""}.admonition.caution .admonition-title{color:var(--warning)!important}.admonition.warning{border:1px solid var(--danger)}.admonition.warning:before{border-left:8px solid var(--danger)}.admonition.warning .admonition-title:before{content:""}.admonition.warning .admonition-title{color:var(--danger)!important}.breadcrumbs{margin-bottom:0;text-transform:uppercase}.breadcrumbs .bread__item,.breadcrumbs .bread__item:not(.bread__item--last):after,.breadcrumbs a{color:var(--text-color);font-size:12px;font-weight:400;letter-spacing:1.5px;line-height:2;margin:0;padding:0}.breadcrumbs .bread__item:before{display:none}.breadcrumbs .bread__item:not(.bread__item--last):after{content:"/";margin:0 5px;opacity:1;position:relative}.breadcrumbs .bread__highlight{color:var(--link-color)}.breadcrumbs .bread__highlight:hover{font-weight:700;text-decoration:none}code{background-color:var(--well-bg);border:none;border-radius:4px;font-size:14px}code,code.download{color:var(--code-color)}code.download{background:none}.highlight{background:transparent!important}.highlight pre{background-color:var(--well-bg);border-radius:8px;color:var(--code-color);font-size:14px;line-height:26px;margin-bottom:30px;overflow:auto;padding:16px}.highlight a.copybtn{right:1em;top:1em}.highlighttable{background-color:var(--well-bg);border-radius:16px;box-shadow:none}.highlighttable tbody{background-color:transparent;border:0}.highlighttable tbody td{padding:15px!important}.highlighttable tbody tr{border-top:none}.highlighttable .linenos{background-color:var(--well-bg);color:var(--line-number);width:50px}.highlighttable .linenos span{line-height:26px}.highlighttable .highlight pre{background-color:transparent;margin:0;padding:0}.highlighttable .highlight a.copybtn{right:.2em;top:.2em}.copybtn{background-color:var(--card-bg)!important}.hide-copy-button .copybtn{display:none}.sphinx_collapse__label{color:var(--text-color);display:flex!important;flex-direction:row-reverse;font-size:medium;font-weight:700;justify-content:flex-end;margin-left:0!important}.sphinx_collapse__icon{border-top-color:var(--text-color)!important;margin-left:5px;margin-right:0}.sphinx_collapse__input:checked~.sphinx_collapse__label,.sphinx_collapse__label:hover{color:var(--link-color)}.sphinx_collapse__input:checked~.sphinx_collapse__label .sphinx_collapse__icon,.sphinx_collapse__label:hover .sphinx_collapse__icon{border-top-color:var(--link-color)!important}.sphinx_collapse__content{margin-top:10px}.contribute{margin:0 0 20px}.contribute__item{font-size:14px;list-style:none;padding-bottom:10px}.contribute__item a{align-items:center;display:flex}.contribute__item i{font-size:1.2em;line-height:1em;margin-right:5px}.content-navigation{display:flex;justify-content:space-between;margin-top:40px}.navigation{max-width:50%;word-break:break-word}.navigation,.navigation__link{display:flex}.navigation__title{color:var(--text-color);font-size:12px;font-weight:500;letter-spacing:1.5px;line-height:24px;text-transform:uppercase;word-wrap:break-word}.navigation__title .colored{color:var(--primary)}.navigation__button{background:var(--white);background-color:var(--card-bg);border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;display:none;font-size:0;height:fit-content;overflow:hidden;padding:8px}.navigation__button i{font-size:26px}.navigation--prev .navigation__title{margin-left:15px}.navigation--next .navigation__title{margin-right:15px;text-align:right}@media screen and (min-width:1200px){.navigation__title{display:inline-block}.navigation__button{display:block}.navigation--next .navigation__title{text-align:left}}.scylla-dropdown--versions .scylla-dropdown__item{background:var(--card-bg);border-radius:8px;box-shadow:0 28px 32px rgba(0,0,0,.06);width:100%}.scylla-dropdown--versions .scylla-dropdown__title{align-items:center;display:flex;justify-content:space-between}.scylla-dropdown--versions .scylla-dropdown__title .chevron{min-height:12px;transform:rotate(90deg);width:8px}@media screen and (min-width:1024px){.scylla-dropdown--versions .scylla-dropdown__item{box-shadow:none}}.feedback-container{font-size:16px;margin-top:40px;text-align:left}.feedback-container__title{font-weight:700;margin-bottom:5px!important}.feedback-container__button{background:var(--white);background-color:var(--card-bg)!important;border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;margin:4px;overflow:hidden;padding:8px}.feedback-container__button.active{border-color:var(--primary)}.feedback-container__icon{font-size:22px}.feedback-container__message{font-size:16px;margin-top:10px}.hero{background:var(--navigation-bg);margin-bottom:30px;overflow:hidden;padding:30px 16px;text-align:left}.hero__title{font-size:28px;font-weight:500;line-height:38px;margin-bottom:14px;max-width:229px}.hero__text{font-size:16px;line-height:26px;max-width:343px}.hero__text a{border-bottom:1px dotted var(--text-color);color:var(--text-color)}.hero__text p{margin-bottom:0!important}.hero__img{position:absolute;right:-18px;top:20px}.hero__img img{margin-bottom:0!important;width:124px}.hero__button{margin-top:20px;text-transform:uppercase}.hero__button--bold{border-width:2px;font-weight:700}.hero__button .admonition-title:before,.hero__button .icon,.hero__button .search-box:before,.hero__button .secondary-side-nav__content li a:before,.hero__button .side-nav__content .scylla-icon--expand,.secondary-side-nav__content li .hero__button a:before,.side-nav__content .hero__button .scylla-icon--expand{margin-right:5px}.hero__button .icon--right{margin-left:5px;margin-right:0}.hero__button .icon--link,.hero__cta{color:var(--link-color)}.hero__search-box{box-shadow:0 4px 25px rgba(0,0,0,.02);margin-top:20px}.hero-wrapper{align-items:center;display:flex;justify-content:space-between;margin:0 auto;position:relative}@media screen and (min-width:640px){.hero{padding:60px 16px}.hero__title{font-size:32px;line-height:42px;max-width:482px}.hero__text{font-size:18px;line-height:26px;max-width:482px}.hero__img{display:block;position:static}.hero__img img{height:100%;width:295px}.hero .hero-wrapper{flex-direction:row-reverse}.hero .landing--floating .hero{padding:30px 16px 100px}}@media screen and (min-width:1024px){.hero{padding:60px}}.label{background-color:var(--navigation-bg);border:0;border-radius:4px;color:var(--white);font-size:inherit}.label--default{color:var(--text-color)}.label--note{background-color:var(--info)}.label--tip{background-color:var(--success)}.label--caution{background-color:var(--warning)}.label--warning{background-color:var(--danger)}.last-updated{color:var(--link);font-size:12px;letter-spacing:1.5px;margin:10px 0;text-transform:uppercase}.last-updated__icon{font-size:14px}@media screen and (min-width:1024px){.last-updated{float:right;margin:0}}.panel{border:0;border-radius:4px;margin-bottom:30px}.promo-banner{background-color:var(--header-border);background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDQwIiBoZWlnaHQ9IjcwIiBmaWxsPSJub25lIj48bWFzayBpZD0iYSIgd2lkdGg9IjE0NDAiIGhlaWdodD0iNzAiIHg9IjAiIHk9IjAiIG1hc2stdHlwZT0iYWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9IiM0NDU4YTMiIGQ9Ik0wIDBoMTQ0MHY3MEgweiIvPjwvbWFzaz48ZyBmaWxsPSIjNTA2NGFlIiBtYXNrPSJ1cmwoI2EpIj48cGF0aCBkPSJNLTE5MyAyMDEuODg0IDEuNS0xMzUgMzU3LjQzNiA3MC41bC0xOTQuNSAzMzYuODg0ek0xMDkyLjkyLTM4LjAwOSA5NzIuODAzLTI0Ni4wNTcgNDAyLjk5NiA4Mi45MiA1MjMuMTEzIDI5MC45N3oiLz48cGF0aCBkPSJtMTAzOC0zOC4wMDkgMTIwLjExNy0yMDguMDQ5IDU2OS44MDcgMzI4Ljk3OS0xMjAuMTE3IDIwOC4wNDl6Ii8+PC9nPjwvc3ZnPg==);background-position:50%;background-repeat:no-repeat;background-size:cover;display:none;overflow:hidden;position:fixed;top:0;width:100%;z-index:900}.promo-banner__icon{margin-right:15px}.promo-banner__icon img{height:40px}.promo-banner__title{color:var(--white);font-size:12px;line-height:16px;margin-right:15px}.promo-banner__button{background:var(--white);border-radius:4px;color:var(--black);font-size:12px;min-width:max-content;padding:5px}.promo-banner__close{display:none;position:absolute;right:16px;top:16px}.promo-banner__close i{color:var(--white);font-size:34px;height:34px;width:34px}.promo-banner__close:hover{cursor:pointer;filter:opacity(.8)}.promo-banner-wrapper{align-items:center;display:flex;justify-content:center;padding:5.85px 20px}@media(min-width:1024px){.promo-banner__title{font-size:18px;line-height:23px}.promo-banner__button{font-size:14px;padding:8.5px}.promo-banner__close{display:block}.promo-banner-wrapper{flex-direction:unset;padding:16px}}.custom-scroll-bar::-webkit-scrollbar{background-color:transparent;width:5px}.custom-scroll-bar::-webkit-scrollbar-thumb{background-color:var(--scollbar-bg);-webkit-border-radius:8px;border-radius:8px}.search-box{align-items:center;background:var(--well-bg);border-radius:4px;display:flex;flex-grow:1;padding:10px 15px}.search-box--hero{background-color:var(--well-bg);padding:12px 14px}.search-box:before{background-repeat:no-repeat;background-size:contain;content:"";display:inline-block;font-size:24px;margin-right:8px;min-height:18px;min-width:18px;vertical-align:middle;width:20px}.search-box .er-dummy-search,.search-box .er-dummy-search-box,.search-box .er-search-form,.search-box ci-search,.search-box input{margin:0!important;width:100%!important}.search-box input{background:transparent!important;color:var(--text-color)!important;font-size:14px!important;padding:0!important}.search-box input::placeholder{color:var(--text-muted)!important;opacity:1!important}.search-box button{display:none!important}.er_search_suggestions{background-color:var(--card-bg)!important;border:0!important;border-radius:var(--border-radius);box-shadow:0 4px 25px rgba(0,0,0,.15)!important;color:var(--text-muted)}.er_search_suggestions strong{color:var(--text-color)}.er_search_suggestions .er-cse-suggest-query{border-bottom:1px solid var(--border-color);padding:8px 20px!important}.er_search_suggestions .er-search-result-box{border-bottom:1px solid var(--border-color)!important;padding:0!important}.er_search_suggestions .er-search-result-box .text-container{padding:0!important}.er_search_suggestions .er-search-result-box .text-container>a{display:block;padding:12px 20px}.er_search_suggestions .er-search-result-box .er_highlight{border-bottom:1px solid var(--primary)!important;color:var(--text-emphasis)!important}.er_search_suggestions .er-search-result-box .title{color:var(--text-color)!important}.er_search_suggestions .er-search-result-box .text{color:var(--text-muted)!important}.er_search_suggestions .er-search-result-box:hover{background:var(--well-bg)!important}.er_search_suggestions .er_more_result_btn{color:var(--link-color)!important;cursor:pointer}.er_search_suggestions h3{font-size:16px!important}.er-search-content{background-color:var(--bg-color)!important;padding:32px!important}.er_search_results_count{border-bottom:1px solid var(--border-color)!important;color:var(--text-color)!important}.er-cse-shimmer .er-shimmer,.er-ecom-shimmer .er-shimmer{background-color:var(--well-bg)!important;background-image:linear-gradient(to right,var(--well-bg) 0,var(--card-bg) 20%,var(--well-bg) 40%,var(--well-bg) 0)!important}#er_search_results h3.heading{color:var(--text-color)!important}#er_search_results .er-search-result-box{border-bottom:var(--border-color);color:var(--text-muted);display:block!important;margin:10px auto 0!important;width:100%!important}#er_search_results .er-search-result-box .er_highlight{border-bottom:1px solid var(--primary)!important;color:var(--text-emphasis)!important}#er_search_results .er-search-result-box .title a,#er_search_results .er-search-result-box .url a{color:var(--link-color)!important}#er_search_results .er-search-result-box .text{color:var(--text-muted)!important}#er_search_results .er-search-result-box .text,#er_search_results .er-search-result-box .title a,#er_search_results .er-search-result-box .url a{max-width:100%!important}#search-result-input-form{box-shadow:0 4px 25px rgba(0,0,0,.15)!important;max-width:800px!important}#er_search_button{background-color:var(--card-bg)!important;color:var(--primary)!important;text-align:center}#er_search_input{background-color:var(--well-bg)!important;color:var(--text-color)!important;margin:0!important}#er_search_input::placeholder{color:var(--text-muted)!important;opacity:.5!important}#er_clear_input{color:var(--text-color)!important;right:0!important;top:0!important}.er_gcs_facet_ul::-webkit-scrollbar{background-color:transparent;width:5px}.er_gcs_facet_ul::-webkit-scrollbar-thumb{background-color:var(--scollbar-bg);-webkit-border-radius:8px;border-radius:8px}.er-facet-header{background-color:transparent!important;border:0!important;color:var(--text-color)!important;padding:0 0 8px!important}.er-facet-val{padding:5px 2px!important}.er-facet-val input{display:block!important;margin:0}.er-facet-val label{color:var(--text-color)!important}#er_search_pagination{margin-top:20px!important}#er_search_pagination li.er-paginator-list{color:var(--text-color)!important}#er_search_pagination li.er-paginator-list.er-active{border-bottom:0!important;font-weight:700}.er-suggestion-sm .er_search_input_dummy{margin:0!important}.er-suggestion-sm .er_search_button_dummy{border:0!important}#er_gcs_mobile_model_container .er-facet-values .er-facet-val{align-items:baseline}@media screen and (min-width:640px){.er-facets{display:none;max-width:300px!important;min-width:auto!important;width:auto!important}}@media screen and (min-width:1024px){.er-suggestions{left:15px!important}}@media screen and (min-width:1200px){.er-facets{display:block;position:fixed!important}.er-facet-count{display:none}}.sphinx-tabs{margin-bottom:30px}.sphinx-tabs-tab{border-bottom:1px solid var(--text-muted);color:var(--text-muted);cursor:pointer;font-size:14px;font-weight:500;line-height:13px;padding:20px 25px}.sphinx-tabs-tab[aria-selected=true]{border-bottom:2px solid var(--link-color);color:var(--link-color);padding-bottom:19px}.sphinx-tabs-panel{margin:30px 0}.table-wrapper{border:1px solid var(--border-color);border-radius:4px;box-shadow:1px 1px 2px rgba(0,0,0,.25);display:block;margin-bottom:30px;max-width:100%;overflow-x:auto;scrollbar-color:var(--border-color)}table{color:var(--text-color);font-size:14px;line-height:24px;margin:0;overflow:hidden}table p{margin:0!important}table caption{border-bottom:1px solid var(--border-color);color:var(--text-emphasis);padding:10px 25px}table caption,table thead{background:var(--navigation-bg)}table thead{border:0;border-bottom:1px solid var(--border-color)}table thead th{color:var(--text-emphasis);font-size:14px;font-weight:700}table td,table thead th{padding:20px 25px}table tbody{background:transparent;border:1px solid var(--border-color)}table tbody tr{background-color:transparent!important;border-top:1px solid var(--border-color);line-height:18px}table:not(.highlighttable) tbody tr:first-child{border-top:1px solid var(--header-border)}table.thead-border thead .row-odd th{color:var(--text-emphasis)}table.thead-border thead .row-even th{font-weight:400}table.thead-border thead th{border:1px solid var(--border-color)}table.thead-border thead tr:first-child th{border-top:none}table.thead-border thead tr:last-child th{border-bottom:none}table.thead-border thead tr th:first-child{border-left:none}table.thead-border thead tr th:last-child{border-right:none}.topics-grid{display:block;margin:0 auto 30px}.topics-grid__title{color:var(--text-emphasis);font-size:24px;font-weight:700;line-height:32px;margin-bottom:6px}.topics-grid__text{color:var(--text-color);font-size:18px;line-height:24px}.topics-grid--scrollable .hs{display:grid;grid-auto-flow:column;overflow-x:scroll;padding:20px 10px;-ms-overflow-style:none;scrollbar-width:none}.topics-grid--scrollable .hs::-webkit-scrollbar{display:none}.topics-grid--scrollable .hs .topic-box:last-child:after{content:"";width:20px}.topic-box{align-items:stretch;display:flex}.topic-box .card{background:var(--white);background-color:var(--card-bg)!important;border:1px solid transparent;border:1px solid var(--card-bg);border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);display:flex;flex-direction:column;font-size:18px;margin:0 auto 30px;overflow:hidden;padding:20px;position:relative}.topic-box .card:hover{border:1px solid var(--text-color)!important;color:var(--text-color);font-weight:400}.topic-box__title{color:var(--text-emphasis);font-size:16px;font-weight:700;line-height:24px;margin-bottom:0}.topic-box__title img{bottom:0;opacity:.3;position:absolute;right:0;top:0}.topic-box__body{color:var(--text-color);display:flex;flex-direction:column;flex-grow:1;max-width:80%}.topic-box__body .container{flex-grow:1;margin:0;padding:0}.topic-box__body .line-block,.topic-box__body p{font-size:16px;line-height:19px;margin-top:10px}.topic-box__anchor{color:var(--link-color);font-size:14px;font-weight:700;line-height:24px}.topic-box__icon{display:block;font-size:50px;margin-bottom:20px}.topic-box__icon i{min-height:50px;width:100%}.topic-box__icon img{bottom:-12px;display:none;height:140px;margin:0;opacity:.3;position:absolute;right:-5px}.topic-box--product .card{box-shadow:none;padding:20px;text-align:center}.topic-box--product .card .topic-box__title{color:var(--text-color);font-size:14px}.topic-box--product .card .topic-box__body{display:flex;flex-direction:column;max-width:100%}.topic-box--product .card .topic-box__body .line-block,.topic-box--product .card .topic-box__body p{font-size:12px}.topic-box--product .card .topic-box__icon img{display:inline-block;max-height:84px;opacity:1;position:static}.topic-box--product .card:hover{background:var(--white);background-color:var(--card-bg);border:0;border:1px solid var(--text-color)!important;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);overflow:hidden}@media screen and (max-width:1024px){.topics-grid--scrollable .topic-box{width:280px!important}.topic-box--product:nth-last-child(-n+2) .card{margin-bottom:0}}@media screen and (min-width:1024px){.topics-grid{margin-bottom:10px}.topics-grid__text{font-size:16px}.topics-grid--scrollable .hs{display:flex;overflow-x:initial;padding:0}.topics-grid--scrollable .hs .topic-box:last-child:after{display:none}.topic-box .card{margin-bottom:60px;padding:45px 30px}.topic-box__title{font-size:20px;line-height:32px}.topic-box__body .line-block,.topic-box__body p{font-size:18px;line-height:26px}.topic-box__anchor{font-size:20px;line-height:26px}.topic-box .topic-box__icon img{display:inline-block}.topic-box--product .card{padding:20px}.topic-box--product .card .topic-box__title{font-size:18px;line-height:24px}.topic-box--product .card .topic-box__body .line-block,.topic-box--product .card .topic-box__body p{font-size:14px}.topic-box--product .card .topic-box__icon img{max-height:111px}.landing .topics-grid--products{margin-bottom:40px}} \ No newline at end of file diff --git a/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css b/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css new file mode 100644 index 00000000000..eb19f698afc --- /dev/null +++ b/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/_static/design-tabs.js b/_static/design-tabs.js new file mode 100644 index 00000000000..36b38cf0d91 --- /dev/null +++ b/_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 00000000000..4d67807d17d --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 00000000000..7e4c114f212 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/_static/img/banner-background.svg b/_static/img/banner-background.svg new file mode 100644 index 00000000000..f8520d5b3e4 --- /dev/null +++ b/_static/img/banner-background.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_static/img/favicon-228x228.png b/_static/img/favicon-228x228.png new file mode 100644 index 0000000000000000000000000000000000000000..f30770c7edd4c0c8356c8f3c2ce60d84c395f9c7 GIT binary patch literal 4428 zcmb7HXEYlQw2v8kkD4`WqzFolXw9aiA~vmB32GC&YEyy|t3|6?v-WDWh*4tC+C{b0 zirPU5<@tYnAKr&|&b{|{?)cqvKizXL1_6gM((%#(002h)`?@AqxbmOUP+Zw|OmO=Z zP`YRtY5@Rssr2U#R9C(b^1g{70Pyq%01z1q0FbUiksAO&02lz+vuKt1NYpM%vvYRpl%+Hk!hIxyqD!=g`Y+Sr=V)~_GST{tpmh^!^_Ld_0`R}*`JNI z?Qzetg1r;LazS%fW3l*~z)b;QO`pir_R*g;EcW?Ay9ik*|L9eY%n=6F1&KAS&|En{ ze|KZBb_aM>|0>=wnr*o80B)i~tp0 zlZ~dI@;h-)~oWBOZU5FSd@t!ApL0cWHNGcf=GWivgFerJ3rfD)&b}fRG z;$vg2J=)X89;?Krs&bF>-Dtyw8v*Ic*c!YVTflbeZe}}b>ovB7qZ~8poL;tP+gPdd zPF5G4oP4PFzLIiqR{SNg82VK0AqTroIEyqLra|r@O!Lq}pGE|B7Fd2rw#MkV73-63 zUt={K3fj*9W9#qBMxJChHg@us;})1sgHfAt*~URuaQ8D$4a+~oD-Q6Bv)RzDeskj( zL?H(l8q}fEHvYmQfv`9vwNdt`n}3CiKT-Q1+pm_bA?rY|FBP?Xn92ooeqeREB&~Xe zd9Sqkuz3Jypwy|O?1g`mK$YZ{MRdTiN6VfP@O$9Lm|DMm#jddGpDB+Pw9M(Vj?}bN z2dx5l7NO)76q%|$lDOCSIpdKX9o4)7e$=%X@cCuIQ1H>>wJx73)>W7h*mee8GCblN z8o8fn60=QQ7^+B1^~^le6Rh7?_?Cz!^Xhdr2HfdEIZcExPJ9Z}(3~J1(9TNml=!X1 zsYYjYkD6JxQFAgwf)8>^iW=6QxGrF^e#n#6WE-CY{o6(6*JGOcoX<$dZR&$(^M3-3 zo&lIAj6RFo-#=!4WtA~69gYhZOc7TNYx7D>orz*PkdMsDa>}f!Mm2<}3*;P_|B7wg zR7Cz`HM8d7Q)qJA3=FDF+x5IacHDVFSyn66@br-KRW%JhX$zg*u><49hdw9Ep-vMx z&Q}4siQprv{10cXT>G%YSOb&sA0L)e^|nmqksZrn_}Wg^XX6Dh1H zSIQ&mknc_VdN;=V&!Aj!`fUZ|O%yMb^kjL8f)JB^wmT2xyYaX}rZ_#%Yitqv6tHV# zNPlXvFXauo%(}P^cbJH;W}yvnn3XKsz6|sDgmuc43a1RRDA5Ba_D{z;PkV~ig-`59 z{F=QPBu3ff8CQGMsy%l(o3xYBC0+CQa3;AOSJ z1JKlTq-~#b(h;8Fi6_%auTP7D#kU#SRiq3RH@cT;zBTJ5+favK)H5eJHE;Ik#WXAY=8{H)3c3Fw> zdy;e=^d%7)hkP+}6eiVu*gN%dqBSByK@jY9v7-(`g?NjUsa%rsqqt~42`}3f-CSMP zqJPq#r1Hxeww9;1y0rmkH^MX`sU;^2RkI-CGm|eD8Zmy^N?cpOlafrD4mbh2jR6MY zmBq<5q@d|Ic4Hhd#LQ-3T#8~71A*m|r{hfH50Y%$5u>O2DK;{^sHB9`o=QKxz;|#b zx01f^>Isc8^Z4}k+lGg9)Z=M|mNE4~J}~U737@Xpc3N5n;}!jsO{$HV`CgjO(TiLf zz?Q&?``Un}`W16?(v zIN&X|#Pv_>C`va*&B)|AD@c4QwcQ`~$z}b&Y?OTnNiFQ41wJrfmjR6j5HQr#*{;!$ zBY5!5L#)C2zqi}?5$mUO*O!Gtr7OGQgjO3v}cz>nE!_CAHqpBvZL;u099op>? zX)UCEa(XW+5Ye+hH{rZ{id7%Ez8mkh0X%p7C`ykWSq=G0+WPJK_o7vOY)R(CnE}?s zE~YN|BbTG~bbixAZ=Ld!212w6eVKP6JWD=_5>O3&VwL9-W zw|DzDTK%2OyT!e6A(<{)UBRg2V7iCCKh=9!Q53v?Qxt&CYFSq-J34(vQjU!*Z@$Bs zL-wvf^CI#6SDZ<3;r4mT#_Ns|+>LvZ;I#ZBRr7{O{!@CY-_H&9@y)iRCy^n+gNzg$ zKIWZmG0Y~v>Sus#s}!0jJKz*-KRMeOH?f zeh+4DAb+c=Tq)w-V*L3;l+Vh^dL;Hv=+MQs<65<8QjAj91BPW{t1HNTvM&3u1o zw1t%3rst2he2gvGMOgyGKHo&MpPy;lu&`6uJb9UnLhFS-qI6V${vtfwYf7imhqlVV z4di+bI;(j!tkbDFKxYs=+%Z>z_C~O_f0sst?<+4n4gyt@9_P6OR0U zZ+Cofe^CCabK@HF?v~Bui)IjUVO>K`fG0rv`H#oq(Z2*(yLR4+{5aGx#lw>T*8=QW z)vIt6V|)Kr1xxK*($tO;^1}7s*`_!iW`|^o1}w|2hK2M}c4R;1W+c&$D@WPhk{>fI znB#LXv6SYzr2`-yb5lTMCqORsQkFj6)>`}U{2U-Y$79_jQ0^t|-?_5I=1i>Ie#p45 zM5!GvgEPwN(tDAW(fQvLZo+OYZL8`eNIsQz<-u`Ih{*j#0*DBpsv`*uJ$wz8o7xNj z)4vR|dK`Kggqs)ztATe96_c5U)c>Ib?H36WL;w+fHwTy-MCyb5!c9Qe$kqjv)@WJU zGXeURJdwl{7UD_Yy4s%d&(G@{&{$sS@Q#ppN5PfxNSj3yV%p@hkIuohQP72{`1L$G zqHd*T<=~@DUMy?}T1lS;5=pO#3MwD!qQj$iL#89~3#pKv&)+HUGvZ901gAMzSaJ>4It&b$YMV!TF1Q6o4KauyF`aDR@ z(BTa!HPP?;qA`FOKG1UX#VR{cxUS?Ghzl1mGc>FTdVsJA&Pu5#e*e{V@lUYpZpA31 zlM@j80vVK$X{vg&u4GrV=9@`NcdY-HMd3g?`&P6mV}s7b0~^KlX(2+sZV`$3V-!Do zX6{&VTecqptu^O?O*Z7W^uN!yYbLwWV28lWMe07oa&c-)29nQe&^Bi7cz#p#R{@HD zzQ9tX@7MO#j18)1$wUO?*ebEF}Q*qc$$3m;g>AKm_n`>FiDqG8(I|+?g zcX3KK7C|EuaV_fBo;O6l?zZbrrgz~f_-5^DPADZieNMBqDdlRM1azEH zeTH7)N9Ii6Ey1bW9;9-Gb$v@j)og2#V`6Dv+9xm5cVjczwV9r7iwV;0^48wt11%>f zFO2ZQ_r@dKr>BX+^<~57u7z0&^Kqj zeEy0nCO)3YIB_uNphi+(b+-y+;6R}Jo#W_U(wJ?2_i>S~ynto6PdfZ>_Xh?(okHs0 z#KZTBIU}?}VkO<@kfc{30b+g*ecz4f_(GM1<6WlG^ax}Sf9Z+u5OYoB`MLw?sD*qNB<8;j8(M& literal 0 HcmV?d00001 diff --git a/_static/img/favicon-32x32.png b/_static/img/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..aae1708f26fc93bd9b9e40284a4376a0e41f0494 GIT binary patch literal 837 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10qB_7Q#1%+e>xNqCh5|_t zGKc_@HWu;D2~9wTV{o~HZ=q*yubpE$L=BMZ-Mcby)2Wc7w?a?d58i(@VAUay>RI6z zp9bwXA9nunvb2athiah++x|x-ey3NdwQMqSUB14g?3w9~1u}nE7wzJ(aG9FkUgPBu z6ej3@WxA~3GgE^*Tl)K|TjKs|Z)Cdr<*>n*^B1)*nukA7a!tSNY;NlRhGAyDLkLsc zJO0Zid*!AopSkuX_Qci$27bZcP52T%vRepWTH|2v_xQp66_fc3TK!uqXFXFdXK;*W zeQCNy_p_*(!bUxleBM}lFZPb#Y0Z06ZeL%0FyxifpM2x! zQqN^u6{NCv-t3)weP!vs5U*kz`#ro5=J2c&S|Sl0H+kph zNZmh2R*>;5!~2>T^>Z6najoJC6zvf^bnfks`okQmFWMgIcy6jLaxNFCHLCa0bqLSi z_>Bh`k*X!G5hW>!C8<`)MX5lF!N|bKP}jg**T5pgz|zXp(8|mdKI;Vst0JRQDYXATM literal 0 HcmV?d00001 diff --git a/_static/img/favicon.ico b/_static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6c7484f082f4dd44edbb9bccb87391e6fae208cd GIT binary patch literal 1150 zcmaizJ4gdT5QZlxSl9#v>y$QvwH7&oCW;S4jJ6?-k|?nWYUP!_Km@f@I}tk2UcB zP3WLEc>CrgsM*uK0lkm-W{g6?k*kY z-PJfx5Bb=v1$rkh?<#*i$#1WDE|;D;pUrXkabMShGdc4^FT6TS3woWq2=n{f3uDa3 zrf^0+O&)XUVdoo*JkWzf4rML$v~a(sS=`VA@R7hEzm_k5@YQ!){bZBRet;;dPM!+w6lJ2q1FIruC9NrA9`V7aRz*U(m&lh)kE~p+#5RRoqRP% zNZy0Vh+nNcWU}HTFTM@@C-S|+!bjZP_qK*e=AnzIGK;CNXChlAmnm^D#X6!7=ZqzD literal 0 HcmV?d00001 diff --git a/_static/img/icons/icon-about-team.svg b/_static/img/icons/icon-about-team.svg new file mode 100644 index 00000000000..5448c7f007b --- /dev/null +++ b/_static/img/icons/icon-about-team.svg @@ -0,0 +1 @@ +icon-about-team diff --git a/_static/img/icons/icon-about-us-m.svg b/_static/img/icons/icon-about-us-m.svg new file mode 100644 index 00000000000..09107d9520a --- /dev/null +++ b/_static/img/icons/icon-about-us-m.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/img/icons/icon-about-us.svg b/_static/img/icons/icon-about-us.svg new file mode 100644 index 00000000000..1b1fcc83e30 --- /dev/null +++ b/_static/img/icons/icon-about-us.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/img/icons/icon-alternator.svg b/_static/img/icons/icon-alternator.svg new file mode 100644 index 00000000000..7c2b4ebae0d --- /dev/null +++ b/_static/img/icons/icon-alternator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/img/icons/icon-apps.svg b/_static/img/icons/icon-apps.svg new file mode 100644 index 00000000000..7e93612026b --- /dev/null +++ b/_static/img/icons/icon-apps.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-architecture.svg b/_static/img/icons/icon-architecture.svg new file mode 100644 index 00000000000..67ebbc2f38c --- /dev/null +++ b/_static/img/icons/icon-architecture.svg @@ -0,0 +1 @@ +icon-architecture diff --git a/_static/img/icons/icon-benchmarks.svg b/_static/img/icons/icon-benchmarks.svg new file mode 100644 index 00000000000..e1ce2c1d784 --- /dev/null +++ b/_static/img/icons/icon-benchmarks.svg @@ -0,0 +1 @@ +icon-benchmarks diff --git a/_static/img/icons/icon-blog.svg b/_static/img/icons/icon-blog.svg new file mode 100644 index 00000000000..f4096cbf111 --- /dev/null +++ b/_static/img/icons/icon-blog.svg @@ -0,0 +1 @@ +icon-blog2 diff --git a/_static/img/icons/icon-careers.svg b/_static/img/icons/icon-careers.svg new file mode 100644 index 00000000000..2a7c6ea0b74 --- /dev/null +++ b/_static/img/icons/icon-careers.svg @@ -0,0 +1 @@ +icon-careers diff --git a/_static/img/icons/icon-chevron-left.svg b/_static/img/icons/icon-chevron-left.svg new file mode 100644 index 00000000000..3afa25c4812 --- /dev/null +++ b/_static/img/icons/icon-chevron-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/_static/img/icons/icon-chevron-right.svg b/_static/img/icons/icon-chevron-right.svg new file mode 100644 index 00000000000..44eb829cdcb --- /dev/null +++ b/_static/img/icons/icon-chevron-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/_static/img/icons/icon-circe.svg b/_static/img/icons/icon-circe.svg new file mode 100644 index 00000000000..875e4216707 --- /dev/null +++ b/_static/img/icons/icon-circe.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-clock.svg b/_static/img/icons/icon-clock.svg new file mode 100644 index 00000000000..8c924698089 --- /dev/null +++ b/_static/img/icons/icon-clock.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-close.svg b/_static/img/icons/icon-close.svg new file mode 100644 index 00000000000..d1162b73e73 --- /dev/null +++ b/_static/img/icons/icon-close.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/_static/img/icons/icon-cloud-docs.svg b/_static/img/icons/icon-cloud-docs.svg new file mode 100644 index 00000000000..a9069bb6e5c --- /dev/null +++ b/_static/img/icons/icon-cloud-docs.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-cloud.svg b/_static/img/icons/icon-cloud.svg new file mode 100644 index 00000000000..cfb2318daef --- /dev/null +++ b/_static/img/icons/icon-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/img/icons/icon-comparison.svg b/_static/img/icons/icon-comparison.svg new file mode 100644 index 00000000000..49d809a5df4 --- /dev/null +++ b/_static/img/icons/icon-comparison.svg @@ -0,0 +1 @@ +icon-comparison diff --git a/_static/img/icons/icon-contact-us.svg b/_static/img/icons/icon-contact-us.svg new file mode 100644 index 00000000000..9df3145dd21 --- /dev/null +++ b/_static/img/icons/icon-contact-us.svg @@ -0,0 +1 @@ +icon-contact-us diff --git a/_static/img/icons/icon-developers-blog.svg b/_static/img/icons/icon-developers-blog.svg new file mode 100644 index 00000000000..ee804197a0b --- /dev/null +++ b/_static/img/icons/icon-developers-blog.svg @@ -0,0 +1 @@ +icon-developers-blog diff --git a/_static/img/icons/icon-docs.svg b/_static/img/icons/icon-docs.svg new file mode 100644 index 00000000000..5501492f3e0 --- /dev/null +++ b/_static/img/icons/icon-docs.svg @@ -0,0 +1 @@ +icon-docs diff --git a/_static/img/icons/icon-enterprise-m.svg b/_static/img/icons/icon-enterprise-m.svg new file mode 100644 index 00000000000..97be900b501 --- /dev/null +++ b/_static/img/icons/icon-enterprise-m.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/icons/icon-enterprise.svg b/_static/img/icons/icon-enterprise.svg new file mode 100644 index 00000000000..ee1ac26283d --- /dev/null +++ b/_static/img/icons/icon-enterprise.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/img/icons/icon-events.svg b/_static/img/icons/icon-events.svg new file mode 100644 index 00000000000..ba5f2118644 --- /dev/null +++ b/_static/img/icons/icon-events.svg @@ -0,0 +1 @@ +icon-events diff --git a/_static/img/icons/icon-exclamation.svg b/_static/img/icons/icon-exclamation.svg new file mode 100644 index 00000000000..a7eb4b77a42 --- /dev/null +++ b/_static/img/icons/icon-exclamation.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_static/img/icons/icon-expand.svg b/_static/img/icons/icon-expand.svg new file mode 100644 index 00000000000..38065653675 --- /dev/null +++ b/_static/img/icons/icon-expand.svg @@ -0,0 +1,50 @@ + + + + + + + + + diff --git a/_static/img/icons/icon-forum.svg b/_static/img/icons/icon-forum.svg new file mode 100644 index 00000000000..37a709f7a8f --- /dev/null +++ b/_static/img/icons/icon-forum.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-getting-started.svg b/_static/img/icons/icon-getting-started.svg new file mode 100644 index 00000000000..702500be409 --- /dev/null +++ b/_static/img/icons/icon-getting-started.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-glossary.svg b/_static/img/icons/icon-glossary.svg new file mode 100644 index 00000000000..e8329c2afee --- /dev/null +++ b/_static/img/icons/icon-glossary.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-help.svg b/_static/img/icons/icon-help.svg new file mode 100644 index 00000000000..51fddd80de7 --- /dev/null +++ b/_static/img/icons/icon-help.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/img/icons/icon-home.svg b/_static/img/icons/icon-home.svg new file mode 100644 index 00000000000..f0b9c25419c --- /dev/null +++ b/_static/img/icons/icon-home.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-infoworld.svg b/_static/img/icons/icon-infoworld.svg new file mode 100644 index 00000000000..906e87279c2 --- /dev/null +++ b/_static/img/icons/icon-infoworld.svg @@ -0,0 +1 @@ +icon-infoworld diff --git a/_static/img/icons/icon-integrations.svg b/_static/img/icons/icon-integrations.svg new file mode 100644 index 00000000000..1ef0920d49e --- /dev/null +++ b/_static/img/icons/icon-integrations.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-knowledge-base.svg b/_static/img/icons/icon-knowledge-base.svg new file mode 100644 index 00000000000..884451270d2 --- /dev/null +++ b/_static/img/icons/icon-knowledge-base.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-less.svg b/_static/img/icons/icon-less.svg new file mode 100644 index 00000000000..3094127decf --- /dev/null +++ b/_static/img/icons/icon-less.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/_static/img/icons/icon-live-test.svg b/_static/img/icons/icon-live-test.svg new file mode 100644 index 00000000000..dcb5916c264 --- /dev/null +++ b/_static/img/icons/icon-live-test.svg @@ -0,0 +1 @@ +icon-live-test diff --git a/_static/img/icons/icon-mail-list.svg b/_static/img/icons/icon-mail-list.svg new file mode 100644 index 00000000000..0e6192a352c --- /dev/null +++ b/_static/img/icons/icon-mail-list.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-manager.svg b/_static/img/icons/icon-manager.svg new file mode 100644 index 00000000000..02b4e425beb --- /dev/null +++ b/_static/img/icons/icon-manager.svg @@ -0,0 +1 @@ +icon-manager diff --git a/_static/img/icons/icon-memory-management.svg b/_static/img/icons/icon-memory-management.svg new file mode 100644 index 00000000000..e34eb4504f7 --- /dev/null +++ b/_static/img/icons/icon-memory-management.svg @@ -0,0 +1 @@ +icon-memory-management diff --git a/_static/img/icons/icon-modeling.svg b/_static/img/icons/icon-modeling.svg new file mode 100644 index 00000000000..97fa3a0e213 --- /dev/null +++ b/_static/img/icons/icon-modeling.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-monitoring.svg b/_static/img/icons/icon-monitoring.svg new file mode 100644 index 00000000000..80b3787f668 --- /dev/null +++ b/_static/img/icons/icon-monitoring.svg @@ -0,0 +1 @@ +icon-monitoring diff --git a/_static/img/icons/icon-networking.svg b/_static/img/icons/icon-networking.svg new file mode 100644 index 00000000000..40a3fd5f6f1 --- /dev/null +++ b/_static/img/icons/icon-networking.svg @@ -0,0 +1 @@ +icon-networking diff --git a/_static/img/icons/icon-news.svg b/_static/img/icons/icon-news.svg new file mode 100644 index 00000000000..a952b59937d --- /dev/null +++ b/_static/img/icons/icon-news.svg @@ -0,0 +1 @@ +icon-news diff --git a/_static/img/icons/icon-newsletter.svg b/_static/img/icons/icon-newsletter.svg new file mode 100644 index 00000000000..5b8d47eb157 --- /dev/null +++ b/_static/img/icons/icon-newsletter.svg @@ -0,0 +1 @@ +icon-newsletter diff --git a/_static/img/icons/icon-nsql-guides.svg b/_static/img/icons/icon-nsql-guides.svg new file mode 100644 index 00000000000..60ebab37953 --- /dev/null +++ b/_static/img/icons/icon-nsql-guides.svg @@ -0,0 +1 @@ +icon-nsql-guides diff --git a/_static/img/icons/icon-open-source.svg b/_static/img/icons/icon-open-source.svg new file mode 100644 index 00000000000..98c2ea7d5bf --- /dev/null +++ b/_static/img/icons/icon-open-source.svg @@ -0,0 +1 @@ +icon-open-source diff --git a/_static/img/icons/icon-operator.svg b/_static/img/icons/icon-operator.svg new file mode 100644 index 00000000000..bb7d8d3ea86 --- /dev/null +++ b/_static/img/icons/icon-operator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/img/icons/icon-overview.svg b/_static/img/icons/icon-overview.svg new file mode 100644 index 00000000000..515c1528a2a --- /dev/null +++ b/_static/img/icons/icon-overview.svg @@ -0,0 +1 @@ +icon-overview diff --git a/_static/img/icons/icon-partners.svg b/_static/img/icons/icon-partners.svg new file mode 100644 index 00000000000..d0146fc4972 --- /dev/null +++ b/_static/img/icons/icon-partners.svg @@ -0,0 +1 @@ +icon-partners diff --git a/_static/img/icons/icon-plus.svg b/_static/img/icons/icon-plus.svg new file mode 100644 index 00000000000..5757435085a --- /dev/null +++ b/_static/img/icons/icon-plus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/_static/img/icons/icon-pricing.svg b/_static/img/icons/icon-pricing.svg new file mode 100644 index 00000000000..74b01db1684 --- /dev/null +++ b/_static/img/icons/icon-pricing.svg @@ -0,0 +1 @@ +icon-pricing$ diff --git a/_static/img/icons/icon-release-notes.svg b/_static/img/icons/icon-release-notes.svg new file mode 100644 index 00000000000..80c490c7b01 --- /dev/null +++ b/_static/img/icons/icon-release-notes.svg @@ -0,0 +1 @@ +icon-release-notes diff --git a/_static/img/icons/icon-resource-center.svg b/_static/img/icons/icon-resource-center.svg new file mode 100644 index 00000000000..6e3ab08e792 --- /dev/null +++ b/_static/img/icons/icon-resource-center.svg @@ -0,0 +1 @@ +icon-ressource-center diff --git a/_static/img/icons/icon-roadmap.svg b/_static/img/icons/icon-roadmap.svg new file mode 100644 index 00000000000..c8cbf67c8cf --- /dev/null +++ b/_static/img/icons/icon-roadmap.svg @@ -0,0 +1 @@ +icon-roadmap-4 diff --git a/_static/img/icons/icon-search.svg b/_static/img/icons/icon-search.svg new file mode 100644 index 00000000000..81aae93eef6 --- /dev/null +++ b/_static/img/icons/icon-search.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/img/icons/icon-slack.svg b/_static/img/icons/icon-slack.svg new file mode 100644 index 00000000000..fc164ea1e77 --- /dev/null +++ b/_static/img/icons/icon-slack.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-stack-overflow.svg b/_static/img/icons/icon-stack-overflow.svg new file mode 100644 index 00000000000..bebe9b82742 --- /dev/null +++ b/_static/img/icons/icon-stack-overflow.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/img/icons/icon-summit.svg b/_static/img/icons/icon-summit.svg new file mode 100644 index 00000000000..4b900bd0c0a --- /dev/null +++ b/_static/img/icons/icon-summit.svg @@ -0,0 +1 @@ + diff --git a/_static/img/icons/icon-support.svg b/_static/img/icons/icon-support.svg new file mode 100644 index 00000000000..a4228b34e86 --- /dev/null +++ b/_static/img/icons/icon-support.svg @@ -0,0 +1 @@ +icon-support diff --git a/_static/img/icons/icon-tech-talks.svg b/_static/img/icons/icon-tech-talks.svg new file mode 100644 index 00000000000..df42b5522ba --- /dev/null +++ b/_static/img/icons/icon-tech-talks.svg @@ -0,0 +1 @@ +icon-tech-talks diff --git a/_static/img/icons/icon-testing.svg b/_static/img/icons/icon-testing.svg new file mode 100644 index 00000000000..2fe54efdbc3 --- /dev/null +++ b/_static/img/icons/icon-testing.svg @@ -0,0 +1 @@ +icon-testing diff --git a/_static/img/icons/icon-thumbs-down.svg b/_static/img/icons/icon-thumbs-down.svg new file mode 100644 index 00000000000..3e7bcd6d905 --- /dev/null +++ b/_static/img/icons/icon-thumbs-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/img/icons/icon-thumbs-up.svg b/_static/img/icons/icon-thumbs-up.svg new file mode 100644 index 00000000000..226c44d853c --- /dev/null +++ b/_static/img/icons/icon-thumbs-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/img/icons/icon-tip.svg b/_static/img/icons/icon-tip.svg new file mode 100644 index 00000000000..bf7aa6af840 --- /dev/null +++ b/_static/img/icons/icon-tip.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/_static/img/icons/icon-training.svg b/_static/img/icons/icon-training.svg new file mode 100644 index 00000000000..08b95a88eda --- /dev/null +++ b/_static/img/icons/icon-training.svg @@ -0,0 +1 @@ +icon-training diff --git a/_static/img/icons/icon-triangle-down.svg b/_static/img/icons/icon-triangle-down.svg new file mode 100644 index 00000000000..e8ae088106f --- /dev/null +++ b/_static/img/icons/icon-triangle-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/_static/img/icons/icon-university.svg b/_static/img/icons/icon-university.svg new file mode 100644 index 00000000000..f7547ab9599 --- /dev/null +++ b/_static/img/icons/icon-university.svg @@ -0,0 +1 @@ +icon-university diff --git a/_static/img/icons/icon-users-blog.svg b/_static/img/icons/icon-users-blog.svg new file mode 100644 index 00000000000..47e56cddcf7 --- /dev/null +++ b/_static/img/icons/icon-users-blog.svg @@ -0,0 +1 @@ +icon-users-blog diff --git a/_static/img/icons/icon-warning.svg b/_static/img/icons/icon-warning.svg new file mode 100644 index 00000000000..e4b1d40331b --- /dev/null +++ b/_static/img/icons/icon-warning.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_static/img/icons/icon-webinars.svg b/_static/img/icons/icon-webinars.svg new file mode 100644 index 00000000000..5e9f5cd4270 --- /dev/null +++ b/_static/img/icons/icon-webinars.svg @@ -0,0 +1 @@ +icon-webinars diff --git a/_static/img/icons/icon-whitepapers.svg b/_static/img/icons/icon-whitepapers.svg new file mode 100644 index 00000000000..3351e51d23c --- /dev/null +++ b/_static/img/icons/icon-whitepapers.svg @@ -0,0 +1 @@ +icon-whitepapers diff --git a/_static/img/icons/icon-workshop.svg b/_static/img/icons/icon-workshop.svg new file mode 100644 index 00000000000..5206e58e986 --- /dev/null +++ b/_static/img/icons/icon-workshop.svg @@ -0,0 +1 @@ + diff --git a/_static/img/logo-scylla-horizontal-color.svg b/_static/img/logo-scylla-horizontal-color.svg new file mode 100644 index 00000000000..0feee9e1373 --- /dev/null +++ b/_static/img/logo-scylla-horizontal-color.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_static/img/logo-scylla-horizontal-light.svg b/_static/img/logo-scylla-horizontal-light.svg new file mode 100644 index 00000000000..6c6758f7d72 --- /dev/null +++ b/_static/img/logo-scylla-horizontal-light.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_static/img/mascots-2/2-monster-laptop.svg b/_static/img/mascots-2/2-monster-laptop.svg new file mode 100644 index 00000000000..b0cdb2caac8 --- /dev/null +++ b/_static/img/mascots-2/2-monster-laptop.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/alternator.svg b/_static/img/mascots-2/alternator.svg new file mode 100644 index 00000000000..066e2390aeb --- /dev/null +++ b/_static/img/mascots-2/alternator.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/award.svg b/_static/img/mascots-2/award.svg new file mode 100644 index 00000000000..dcb4be862ce --- /dev/null +++ b/_static/img/mascots-2/award.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/care-pet.svg b/_static/img/mascots-2/care-pet.svg new file mode 100644 index 00000000000..dd528340c76 --- /dev/null +++ b/_static/img/mascots-2/care-pet.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/cdc.svg b/_static/img/mascots-2/cdc.svg new file mode 100644 index 00000000000..4b6530d7c7b --- /dev/null +++ b/_static/img/mascots-2/cdc.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/chef.svg b/_static/img/mascots-2/chef.svg new file mode 100644 index 00000000000..4705a253c36 --- /dev/null +++ b/_static/img/mascots-2/chef.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/cloud.svg b/_static/img/mascots-2/cloud.svg new file mode 100644 index 00000000000..94e535b44be --- /dev/null +++ b/_static/img/mascots-2/cloud.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/default.svg b/_static/img/mascots-2/default.svg new file mode 100644 index 00000000000..41939b5aeab --- /dev/null +++ b/_static/img/mascots-2/default.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/docs.svg b/_static/img/mascots-2/docs.svg new file mode 100644 index 00000000000..1edb30b2d84 --- /dev/null +++ b/_static/img/mascots-2/docs.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/driver.svg b/_static/img/mascots-2/driver.svg new file mode 100644 index 00000000000..5b1a3c4011e --- /dev/null +++ b/_static/img/mascots-2/driver.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/enterprise.svg b/_static/img/mascots-2/enterprise.svg new file mode 100644 index 00000000000..6bf7d4ab0c7 --- /dev/null +++ b/_static/img/mascots-2/enterprise.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/forward-2.svg b/_static/img/mascots-2/forward-2.svg new file mode 100644 index 00000000000..11c53943a2f --- /dev/null +++ b/_static/img/mascots-2/forward-2.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/forward.svg b/_static/img/mascots-2/forward.svg new file mode 100644 index 00000000000..e2d7559db39 --- /dev/null +++ b/_static/img/mascots-2/forward.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/headphones.svg b/_static/img/mascots-2/headphones.svg new file mode 100644 index 00000000000..09845dd9fa8 --- /dev/null +++ b/_static/img/mascots-2/headphones.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/heart.svg b/_static/img/mascots-2/heart.svg new file mode 100644 index 00000000000..5f397de2c22 --- /dev/null +++ b/_static/img/mascots-2/heart.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/laptop.svg b/_static/img/mascots-2/laptop.svg new file mode 100644 index 00000000000..debb3f5dde5 --- /dev/null +++ b/_static/img/mascots-2/laptop.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/magnifying-glass.svg b/_static/img/mascots-2/magnifying-glass.svg new file mode 100644 index 00000000000..5668fc4844d --- /dev/null +++ b/_static/img/mascots-2/magnifying-glass.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/manager.svg b/_static/img/mascots-2/manager.svg new file mode 100644 index 00000000000..523d5a0c859 --- /dev/null +++ b/_static/img/mascots-2/manager.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/monitor.svg b/_static/img/mascots-2/monitor.svg new file mode 100644 index 00000000000..2aa1a147ab9 --- /dev/null +++ b/_static/img/mascots-2/monitor.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/open-mouth.svg b/_static/img/mascots-2/open-mouth.svg new file mode 100644 index 00000000000..062f25b7772 --- /dev/null +++ b/_static/img/mascots-2/open-mouth.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/operator.svg b/_static/img/mascots-2/operator.svg new file mode 100644 index 00000000000..3a794489398 --- /dev/null +++ b/_static/img/mascots-2/operator.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/plug.svg b/_static/img/mascots-2/plug.svg new file mode 100644 index 00000000000..e06ac69f3e3 --- /dev/null +++ b/_static/img/mascots-2/plug.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/repair.svg b/_static/img/mascots-2/repair.svg new file mode 100644 index 00000000000..8a2f27b3166 --- /dev/null +++ b/_static/img/mascots-2/repair.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/server.svg b/_static/img/mascots-2/server.svg new file mode 100644 index 00000000000..805b85f4626 --- /dev/null +++ b/_static/img/mascots-2/server.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/sleepy.svg b/_static/img/mascots-2/sleepy.svg new file mode 100644 index 00000000000..376ada21206 --- /dev/null +++ b/_static/img/mascots-2/sleepy.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/smile-learning.svg b/_static/img/mascots-2/smile-learning.svg new file mode 100644 index 00000000000..46fd91af9f6 --- /dev/null +++ b/_static/img/mascots-2/smile-learning.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/stretched-up.svg b/_static/img/mascots-2/stretched-up.svg new file mode 100644 index 00000000000..3d24b2c671c --- /dev/null +++ b/_static/img/mascots-2/stretched-up.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/toolbox.svg b/_static/img/mascots-2/toolbox.svg new file mode 100644 index 00000000000..218d7c0ceb3 --- /dev/null +++ b/_static/img/mascots-2/toolbox.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/university.svg b/_static/img/mascots-2/university.svg new file mode 100644 index 00000000000..086914cffcc --- /dev/null +++ b/_static/img/mascots-2/university.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/workshop.svg b/_static/img/mascots-2/workshop.svg new file mode 100644 index 00000000000..27d50a3ca5a --- /dev/null +++ b/_static/img/mascots-2/workshop.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/wow-up.svg b/_static/img/mascots-2/wow-up.svg new file mode 100644 index 00000000000..bea380c19a1 --- /dev/null +++ b/_static/img/mascots-2/wow-up.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/wow.svg b/_static/img/mascots-2/wow.svg new file mode 100644 index 00000000000..d809f8f074a --- /dev/null +++ b/_static/img/mascots-2/wow.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots-2/yummy.svg b/_static/img/mascots-2/yummy.svg new file mode 100644 index 00000000000..f93596e8cfa --- /dev/null +++ b/_static/img/mascots-2/yummy.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/_static/img/mascots/404.jpg b/_static/img/mascots/404.jpg new file mode 100644 index 0000000000000000000000000000000000000000..769fa0889f8b33a7edfa1b6903e9bb33bd27da3a GIT binary patch literal 29400 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 *o#A4Bm2Pwzp|eK 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

AsHsQZ?@8G~>-T9LgVg?Qm;9iIbZON|N- zsvdP=9KCgteSoXpEXS%qsG(6q&QuR(!#s_bf7uX-lf6Bb1Lu%mdRAN2r<-S3j6D1g zUMpq*#bP++qDk_PU%m!r%+c#EY0kFt3MAGEA31nCH7znU9481WyQ`*OeJj6XQM=PQ zs(OWryGKDK0zD{haSo(e?uV+IcEY_2!Q;oY%QG7Hv)$9%c}FW7pEpgVbpH+> zTf2_#aMw5D6K(#z9j|>{jQ7Xsap?Q1dNnEPj4w%l?&y|z`R{^)uH%AtYyYiNPyZ29 zit1;AnTLFQB_K-)U~TlA0_>CQeCl70B&vyJ&2AOI=~^;VR_X53cYt%5K5*3(o@wGL zLM4@37&xoH_(U?ZDlxa01f85>x3Iw1h;Em%uSd=1clGlhsdGe2Or+KyQa)Di0Nmv| zW;<_i!-4NboQx2ljYcTnbkHdsmZib0Ks4TF%0EEh@mWrgMb;E$;h#P#lIZPyV+ON) zdh77}Op1;1FD$TCQpZy0A>iVe9ursp2)vajY+QjxhC0*exu;#PleNUmWzh+@aHi^3 zoRx~T{|75QJQ57T+j>6l>3T{gZ{CG;9L?y^W(3eO2zh*_&hxWIG zaDA05Xf|}IKOF?NW z5dsS&+t!mfWfZ*L`nhqRGw-H#EQ-b|M0rZhYW1}VjnB8H6D1KVUC!c>zeUxnvV({D zN1#!{!oOMl^lsP(OA2Ok2XmtClh3R7)sk|_lkKl)p*%hRg8u15H+mDJ#t!_Y^)tD+ zRIS@yL!CyF!Nh7(ZU4}OoXM=w!I_DSwL(icZ}30O@zJy6nEuw+Lw?E>U&Q^MzpWGS zo!b6gE5lC?$|zEH*3S`S0s@VF2O)=gPA$T7!E4lQf8Y!&iyrc6jD} zXE=6HBtqvaZz*M^(%$Axno#1K1#7!iVry&!5xj}FoU=4Pn{xG`KEC zn?aU}CrQ^+IL8P>E*PaZYM);_B6$j5^<4mgA;DT?`>~U z9)-WRV1Mwj_Uq4vFIgGU1-P)?HjjfX#t|WS!PYuC>QN?(s14giOo{B&F~@&g+?v#_ znPYRu=JSqEI99!4ZEc4}5?&1HW8kDm?%jzLX-rc48&5Q0X|Fpc66{gZH}#p8*;eS) zRbgaJp^T>vyRTMP;Ro;4H9m){pa?-5D>Nm4d6{%NmSY=xX~z*(wR4|{n`XcTP~NAt z<;>C!UvnmR9i3HI1dP?8HEdpN!ZS=Ep^ih(yQcQzTv1~<3nkfdSL?|{Bhs01!p164 zmF!wz8sEuFW{j6GxR1J;4j$!&a#nuMV=nv~k2xoR;$M_|!#Ko1-$g*}`hju}ucb40 z3?2TM-oHhtZk$04yb`AdtIkUDtuA_of59D>ja0~{L7=pwg24u|FB>Gh(K859?1l*y zH!>)dUc&l^XC{R%Q)R9AkJW4Xxy>@xGjz4K4>Jv`d{{Orhf35>uCKWn5pVY-uAC8 zB(OZX{&Zg6dP=kc^wbJ}4&43w#^0L)4Gduym@On1|%X!OnfnrTvp zVC-L>(flN{e}#e?a^J8?$GxAOSYmoUE{+^4v&g{RpUN=ipntC&{5EB0Cg=94QW|}H zwJ(5tb|Mb_1rR6b)S)!{+I&yvd+wW~kt8hGut=;{hm^ydRdg(}6UO|Hqc+Kby`lpf z&t?Pl`dtboe`Q*R%f{jUxVHbH>Z`+|>b`JAI;4^AMnLHX=@5qQk`77fmXhv{8M;9_ zr8|diq&uZc;2uAJ_qorVf9J&BEB4-Jt#`dkwsx(FfxNG!^B!9(VabaaC2g(AK5VX# z`b$8^9yKoT%a`hOkR@hO$!V#@{e7lq+s?0yCGFh|)9xn}Pf~lA{&vTiowivh_@UlO>`s*Pon9fIXvM@=PYjKTY;F`E7~dm6oVQX})#_Zz>jd z{%~H4ZNL-!7d1DbbgNI#%|1C7aN*1rrg3u6LWk2;v!Ec zsAX^3YS_JkldRw0*z4PygNHE=8M>(>N%T$SRXZQ`Blf|YqRGhRu%!!dlk~5@YL9gl zah&Avw-F&KcJaqvxO6(xjrX8HsUgA?r4}SuJG;PjG{%RBi>jR8Z247Ws-t5~3geKx z-a7MbHCwnxe)aM^7_FI$L}8x23}^9X{Z?*I?bYaPzt^K#6PCfB&+T8dGjE{N#4((>y-`St+ie|FL_w{K^%*cHhx1qRtKmisS)6(Yii2 zeRs)i8~!Nx86q@nwfbkT5jzlxfbtgr83wJQo+78KDVGMk2n*G{Po1r-@vpWecHg;P zA64`foOgl~C}hHT`gmvdsF%g*Pvq@;kQweO5P10(3ZTj4xRfpQ^KPGpE@UKV!Fe!6 zE4%kXn3xM83841q6OYyPiQKl2nfh$H&wyt z32gKx$DlzgKI>Pfn-Vn<4V z+93M65sotozceXA!&ehPzq_I9WMX&5`g3eruvq6s8$=3BmjTowK0{~H<8=!3PPaAW zOc=t>w&O-3<7o4*=0tqm{uFq$9k;uNFWK7gkz{umvhB^qu0=s zSfJb zb2`0`SEnb~>Bq!riEm*)=DX1_t;`Ht{LP{8bLV^iz3$(2sU9ICbl8ESj|IGsChC91 zLqd*+iR$m10K%^rXqF*Uv$ z*ff%2bq)<@#UDbEb9eBIm&;cB;s!wZ)VuwAJS7o0Dq=&kEE0K>*o3jspCJ=DpN<5( z8g{U%n$Aig^^<#J4jP+DQolEswuDI*&rxj;K9Q7bH@cb>1P6yL!0-R;BC1~uLBNV& z{&DKrb1r=(uB`@>gXylDM03Zz6UrHCV$B$G{7RL+oetYv z=v{%TvDXr|C2YhUjmHN9Rit~6MjC!~frD7p6%!KQ@9&S{+kcEeEs$UPxHN&Le@ybm zL+W94bi4?R>2& zuER9%$hieMKW=)aN7@8Y2efEr^`BXtO1dSlHSYA)`#1@^3Z+ZYl}bp?T01Jt*|xe? zv;Kx>6MV1N=&(KPy!l=3b4woA7ybei5WIDFE&r~^H|j?F>xWUO4iJP^w$jiL4cn`8 z3Xgf;O>hf~v*8f6epN^~LQ?suT(VrYT*2@)x4Rw1*SHf7@N3>?F09c){U~@PW z5TGl^Bf^_%pL@T!JT{PajdzRGW0zlqrIiTx33C+>9RL62B0PT&h*LbG#Jxe4#7m zxA?CRNV{KWP#gwY&?ow)y+TBrzXo7RyRO59s}50(RwfbjrbXDe49jI-QAnZPztM)sPrb9+8vhk0-5pq)dcJ9mN!jUmOn((A{EnXjhr@BBbr6f2ua)yHes$iTu;i-H z`NFaC4|4WKsv&S^(W4eEP1rxJPl2iw>aJCfR0HkBcgypX4KROGGLb^|CtMGY z0GgYmpw|9HXs>|J0j__nndU3S>SE2#*WY!aU2*KbI5qBa}qqPq%c2nhDKoxJ@#^PueDri;~M(Lu<)T~ll zZ{#lx1AkL?IH(8W{Nq5-j6nqxv2r8tLw|iIgCQIWy6uV$4YP5aC%fgePRw~M+QJ;~ zyFa=)szP>u2up04ZWxFW#aeLxPHDpLE0EyUoj(i}i$zQPx@LQ;{IUF84bYs5NxlLb z_YxiL#}AP$bjCKRye@C2+4ZD1KQ}2AMOU_>>v*$(!lvHt7k3S%R(&>Lv^rxZNl~nX z3WO-7Z7`HMPS#h2N}u%;w#)f^9|;i_*ZwlcxtvFA{dsvP<%jI5N-5P1igykt>OA*& zOVD6wkbOzkUbm&6L%mc2!uyYEl$as$eFSh7Xs9mlpnBQ zi_D5(4t4?bclzD!Z+?Lk)(Go?h|+>cQqETHnzx}<1yNebH@|_3bTB&lz-SSBC@1fz z(v{qo(jUg;hCsz6zjJI>3<+Mgys6J7CUdR=W*8NV`Msm8ik<|1p z^e?APoT|obKbOJ_9D3c+*yYdjvpw%)Pvzpd`b7*7W~PC6mv-2k-JQDm_Jz-+)5g$h z0ekTKIZ~=_y7}Jx`?szp_EmIDB7|=Dw9WJBrcUR4rPxEZhADT zh8BuLp!UbTFi5DJ1^D%@)f(02KXv>bC_XC$OC;wYxNA&Gf4<}|wXxI2@v-5BfaR;bU`UzNG7vKog-1Ol(T;!)n}R1HRq;RsD!&2@#=8- zIeWfkwtyRol0f$-cO(ta{`u&>Nl%h_ecA4>A})qI9CX*IyH@u(4{iGWLM)=vu_!oM zbkWo2Fm$7@YgJ=y<_VC&l4xR3krZr|RUu}y5+QApRqO-9XV@c%ZG^4WPtppN1$Z-8 zpACbwnRju8h}BM6*H~yQGVd4|07W8&vBNQ358<4U@}nIb8X>?F4>tR?&{RWlC&}df ztwprL)dG8#4X46h=`sW(bKtt@DGKDil1?rb3WBo<9bXhJiRqrdWRUsnT>8{HZeT80 zFYA(Bj$tP59=%S!4|*s}1i?7uGBRQ%Bshx!&+=9#6;Ht$!psRBL-cQ~%a_u9aR?q-CX z<%EO8RlkWde6IDQDwL*WNasH&srf?ZUC36|MRQnIL#Z@53P^erg`q+aZ&xINJ056qYItnmR#K>o}4nxmP9r4eC~W8&(h+A?=HrdA7vME znFKh*r^C4!vgnt1JA&cZ5mTcH&H^zT1Ujm1v`WY%{vsZb$&e(2IZu%N_CjKQsJBaD z?Redl(-lCO9f4C4&1GQ)5fC-(8YmVHjR3y9f-_EOBct6Z8G2Qc6wnQRNM9>}JTEY2 zAmp}^0+*&#KU!SdzYebeba+Ya!c`?zhG6Iy(t&{o`SdABLUfYD2jdlLq=D8;-`qb3 zKn+C992;oJZd_v@J%r_O6xaKv&bT|j^)E}H3V%H8b@H+H|<|E|-M`VbcTJI)|q1LiRv>k&$=azs-`O7U^@b z2~bc{pakh_lw{Ez%_DLeNQ)tgjS><`in!2l&OXG3NQ?6Ycv^Rrn~$_tbU}|Y$*&~6 zPp2T#&r@2a1F8w(&g-MZ{8G_#<4^zHK0aVh$&Y;oEO#8hxhL&-F2J) ztpp-4a_m(Ki)b=(#b;$$kTyDLH^zkR?OAV!-N^b`F?T&cWelKHBA(@q9~)962P!UZ z?1yQhV^~7FCWQBU;cjw)N~3xeG2)odiX1~#`n?X;*ne|C)YL`tWV=XqYY!Jy@rX#M zp(x&zy8dilvL#!2%8dPA=)o8^xV*4|1#qr11o+EazY7eN*3RYwYn)UZNFEx|X3YkU z%FFPAZ%Rnsy?t|s)4kEQKmLoJRC{^d1LCtNU7pM_+jkzIuz9C-8!7DeP(^pwB=Sm> z9$z&g)+}5uTr6WkTLX8Rk1ZS^X%u6BMZHA$6!clkd0Kt5gV1^|lboy0h$f5G1PfN& zx11|CIplmHXWg;7210{6IzQPtut<>StgwwIuD-U zmoB;Vh>}DH(o;d(rpLz-d5I1JgMt*WIXHNjSbyPPOl)kUizuW_oV%iGvB#DV^xVzf zzgXV?IDuSNA0^!aDYCdA>?&^Q^LoztDsGCcR76G`?UZldIEA@&h#M!M3vgcwM_q7Y zjOg=Kj5AZdsr7Z15#gkS7>io>eqXrj-aADC)?Hl=dm>(}L{r2`)f~>k_s)0oc)#B! z8Wb|=D6V{yHxvYY?f+$n0)2UJhzIY_NyhO;1P4wwWnw~4Qf-HO(sCLB2_zP}*8l;Y z4?hz_=40t@diyuAJrhev4hL5RMHeO$&%E#=z^Xn<aH{;5j#7}FJH=`Rwj?cE&Oib+qV zJ@0m9`-Rlin#DNpktt(#_=um^o$OEdc0C*mbTz62piaOFk;OS6UV8E#qTazyQ37Bi zmMzU0ktogXEn4C7!*gHLQcv6I<0k3uKa&N)rGNCmR60i++%k?}azk<6(_5EV8Rm`a z&WRupoIr*{044ONfaLGi3CgrC@7D64N$>tlH7x*J#oR?&3TSLD5g%JD)G0NGA_=~B z{yf+>#6LRJNx8Ns?6~~P@YEdMAJ-PxzAzv^zmoKrzf2{`NwN){91`(%wsqL4zvMth zoJ~~+e{?(lQ(B|NU?fL`_(o|rh|zxPy7cHH{K1S(qR>Wj*>E~t&_)lG0x%s@8iFuvNFpaz>LmIWif=uk}Q6(h2G$wYC0 zbU8?iR})hpBoO#G;y*?s{PRNE$b!d#BQCbny%gh>Jlw}QPD&ZX8%(PhgjwdUaSG>o zNWnmbDCnHHwpe4kkjNx)Wnp*|w=Rx9CjazP4N*8+xN?C}RNPE){9VR2B~yFLHl@jA z@M`Ij{fgM4DyMdonPN~ZHjqZbG{zer21|%;^z3Vy1d>Jxw~HQlQ|DH`!?8y6K`HGJ zC=609C|Yr^um2K=tghf#sC^@W1gyM4GjD3W|KxAQC$)`$9@dSE-@l0Obkk zjgUm^h(rH*i$^U=b*kkQ9~!e4)n98DvknW{0kO%we{_c*fxJowDp{SFnVg02mK)p3 z1(87E?)WfrSvBD(dLclxda6nM*Je!-==UGevi%miAhiX$b8Jj8o1C!dWc5?rT1FtS zO1k2f9Y4>W32=BNN09?ZmzS>ATiwLU_2$)5w#sV+0@5QT# z;7IgYne@XwYE&w!M}NOXGg7}rusPvEm0Yi;pL>@jPWDy$zd5R5bE2V^Gu>A(J~Bj~ zt?27-37M&=?baUUkTWP|N@WGv5vd5YM`}wFVzfK3H>tErJgPzf1;NLRfG1La<>83AVB)DH*iCf^0gK+&X2l1UGt`XQ|JJP7VSjd1 ze|1P}pWQ4^8LzNwDy6hy-w97h_vWXr(2@f>F3NZ3#J4O~-it~*@WB(0Qyn`V1|(uK zMpfHknDK`4HfuRfqne%<++ONyz4=AVlRo64eqDbfIKwRzVo_vRSDNcD%1h2m3qST1 zy$#5GH83cU97P1ivpRhSZVzi3{tcrA6@^cr`iBd85JqeE106KCIO9u{3LWU)3Y|$5 zOC$wYUSp{~58+VK;5*W&t;@!&me#}=JG{WGN~qY1Qp&e>JC&rrl0y2s4r5k+#8q?9 ziA~em8+ly0*j%!ky;UxiEQ(O`q_$5IV(e?r6ru_GyYGh52N-+N4ug$7)d2_FxMV_buZ5YVUaYEp#IzvQ?Vxhie<$RtEj!I6?r z!%Y%)3D`@aHvRXO3%KBw$TsMFEj^rpl23w#ax6a^h{0=0aNwWr9Hrl+S1&8yCp4KWlJ=$EFOD>yMKwxUZU4qrJ zYXiwt_;2pG40Ls43-69-7!cga;Q#->zV8P8O2YfnZ@2emmS+)=?Dv_>v4sD5nAo?# z3db5v^}9S5Ri#+EYyrNEBk+H=;Rwx%GRCdNrZ@Sblq|U6ATXDl&_c;&@daZ4&$_nh z`QeWE&N0h()Sqo~2o6z$U{3)~?y(F->%Jg(r=+!kO9hyJ!{Zg_SVV^24HJ1waGNKX z+uWE8gyLkS7W`X6GAA3AGu1nO;B8d$598D#dc1`%p;U3Y5zuWo-^3IHKF}#|_*#9W zXA~)_TItAZb+5;^>}!;hW@6az^)Z11Y=70+7T;M>@xRB}BuL7P0N%tN#nC0QS z|2~t1j9Oq2zUSfi&j-CS7yLf(GTma8myYb&fOB$~fAK#IAL$|GyJjCFKjHSwKYqcT z`e%1S=;dn^Pe^&jnsdinOtmZn2YPYo?8>Qky}LI5>>7oDGVB@IU!CjEV20Y7X*{8>d0_?&C8hgrVOr5MzJ~^zR-fg zn{WT*+|woMnyy^^iP!-d@Uj__Q)w9%AgcP~B3obqb^-q1+w#SnVoB4Jjv!zp=O@a{ z8wu+ZxFF-r$VL2&rT<;hs@N^+I`V~|Nkg*nFvDh)&cy=Yfk;~069rBWfH%u9VWZdR zE@pqq5snE!T!~8$3_Q(ehR106H_*C|GFL^n?@u7 zsQm$qccD|0MF><|YpH4^XH=<*ErSz=#F+=6lMnF`VG285>_Yvwr58_f>bvqV3v~6{ zOabgyzF{R`ivPxtF8`8j3&8g`wFV2`v@!oGwXXplBBq3d_^S)lX#g}^02ZxnTy$GZ zFZx*UzTLi=kqNgI=TtBK-xJ~AHD8q%Fq#&2i29p$PGF8v2mo|a)NN3u)9&BRG@IEZ zw#UB!Q%w5b6&9NT&4sRk|LNWeJCxm;WV=A2og26rj@opOsTQ}2cvR(|D!Ksf!vbv3+u=PD@#WDyiOPC5HHzU;$09}kJFf|!qyYX2?WL`bzb2M)mPDjdB2z`e$ zuv^=cm>8p<8nz-tSjL(s|J!o-WW`*KX=`zM_BDJszL;>6>}$^vxT)Wdq9@}s3DGaIIu>f_Wk%LQx_Oz zt0>rrV~O{bQy5rrb0A3b+v_MV7+P9s$+5rIj> zN+F>X-g=CeUXkh9j)rgxmp#gVYCcTVvLCgJx!Ckg+z16P>=j+^Ek9lqATNg;!LjAk zhWQY4YYvmqE&7t*P=s?nu&SF%=!$+(8x z1_y|JTSSK8G#>|$ak+s>eGq_8i4ngYS^t-zw+=y!~X0@KN2p9FyZ{C`C38nwYpi|WqRn~YYX`|V^Vl!!Np#!^I zQ4588JM&MPwer~LogC4HGvHeynMi4W#Z3hdM$PsgLmzeKL_G$Cjxl~$=yeWU1pCKB zMP+M2k5~Sv)chxQ%F$mQkEDDog!(W*`?z6dts!+VaWLZuf&lPQ`yhntmz|Q*c7FLo zPmRiyRi*6XW8nGK&eKL){X9ZXaq{` zqU*&|zP6%%a4Tq!UwzR$LwN&4jP$70t5yf{^0VxzEm)a{j-QU`^!nK2>$@8Y-+Csx z{3`t{z`%e;z+BQ*S!?uzAu#JZD3Cb{=4zwO1#hNtg3)@32ShMVW&J^5q%>bVzlJyJ z?+dL>8cNBFLdS|OUHJGL(w$cuspKGPM>uU}Og83>bj+DvrA~$)kx`F*erhp|7@e-X zcn`xlKfDPM;@@cJs8!dXYZ#&}sK>=MlU(P=uTqSP0fS-{&nhlE>)Crj78TZ5#;=Jr z_IwC=_ORb|WGsgLY2s!3$Kt{bNV!8 zvS-4>mJ2cdEwn1W{Ny>=6mK?9>QTo@R5_XbB$DD@MJ1mM8 zjV+~iIQmb+{;(VHW0qopq<&8gxYA?mBL>D?m2^}mXm*XbnE*qnKVmx)DLH(~p)X!_2Z^6k z3eXWGu3*0|M3N+To^YmXkI{Nq?eTf*3*EH0i`I22`>F?jL3be(sz zFhI0lb2?vz);Du|mT|-kf9z0Ht08f(SVYR&lcs6*+B-+}_--jdeP$!4N3J3@rx@SN z25A5ny`MmFIQ%=0sp0w#M9tZaFyaw`gKVl(rz3>63%|h zu7>)myYZUn>IzEES33Qy>`bZNCa8+@QeO@>O{347QiFzE;ym@o?Dv0FhdwNLXq%ji z))A?&$dwm)wfMUFbZCo5!?Z6Ims&4`E-6n=8%0-P20XS{mGy(TKp@c0eJnTc zw>|_yo`)*{F;(REAvQN=WcVteVK#A~cQzH@aBCVQ;VNiJ!3Pg+hI9N zbU(Gue%3@Na_6yxu;&!7o;LWAib{uCAU!)RXM*qSIf*%+uVU#MLPt8oWX7nnP@q=) zDV8Kfh!J39E)t4TPJDYGU$C!Zu;>0QJXu- z#wC%pM_=hR5f@9OCK|eqgQ!J~-ic$O9v1>lZ0KPwJxg7Pw}d}A4t?<7xkyuvLLabT zyl7TF32B%2BC0@=f1q#$X&$ecnYyMgrTz+yr=MSZtscG-f)+e{cgN1&z#*yQ%$Qut zw&c>BV0{r5Wo~0mzmof96k4NQ@|~)QwU)4;*z2Y~E}mwMe!dHT)^p~~r31JiwaH=C zp?Z_oBzp-XocZLuxy~~3tB(G?v9!-_^m3T1K3UWTz*X4YtT`&!7*+}zzy4DAHC=!T z0h5nfa4=JX-p^I9HusSp-Im~V4%B$dv+? z)9@f2=?Er`Q(8f1`>fSFeRAibB@DI4@46N)?pARaJDg4A;G?d;Q))<_l-@X+QA7zx zAuv>jvoakbM49b58QCs@G3%}1O{zR(anwJ}|N21BoSE@>%PycyFh^9YKDk3hRO_>L z<*w2|lw|1w9#gLv$bSMVp~cMJKXNx^+~qTQbuTe|^(p?b7kBb(&N%!QkEtUfO$#Ml zj;&axBngcCyLm-+M-P8dBxfl|FIk`j8WPG~mPv?ZV>1fEl`0^vRkymo6+FrVkXF`e zw?o(3V%i~*^3CVgle>E^$DiMaa9P-UtXg3z*T2X0pbNebM6vH5V0vJXV;xet*AJv6 z*}OLp_nNV$XBbw>12b}wKhUdTxTYY!S^V$}&QK?O!YLga-Z?6H;JWbLeNqf{T2($9 zKbC+Apen;8C}9X=UUDT}YtC@1e~s&tl}HE_MYmS%s2DDEWoo0S_fru4*q8`YSM>61 zuky+{%nOzKE|gk4vtu>wUi1S0QocW&RJf#J&LGFx4uu0*+VD$84}aiN-Ynj|3R);|5%RKyXG=6wM6bmyjmyfsQhTF@rIA8gU+Q8RFA8D4QdvkH z&9BMe9xjQLl=s(uZAj{-PB9TehLQB*64?dhxKc7oK5YpEJmE;4RSc>y?=0e=kAT%e z_7*Ms=Oi9u!CF$&yFtU;=4ErloCkx16m!K+#mvN$<7e!TP%qNCU3+ z&9-4>0LT(Oaium}r;Ig_i^=ijOS0fBY|>Y^19^;7Rf(9wJ9-9hKEK>Ztk4sT=EJ2X zz#wh2J*4{z2SHbpZ=AYOt!zQq0J4~t)BI71eiON=rKyAST;iqJHZ<9OhS4EI)PWgNK7 z0GO<}^Sg6-kkfl-8Lm=cQ-&F_qNdw|bm&IS%E7l-@F4Z)SnGLS!B1&m2f3K-Z|O^9 z<^Izs!n5jpdB5^31(9*1m8z*t)Q=Q(%4EH&O^bd%3DSzk2cB_$%5iT4VppiTh{Mdm zh#@PozLIHqI?@bY4C&yfg6zTV75p+WBTn^bi8Ko(wFBp4O7W-3?x3vU;wC1y?iMBF zR7a8b%GqBJ%9Pf@C|7`qi*mbHd?u zZ1~uv$GL#ZBC>E?aP}xb>OuobN_RWRE}kPJ2K?XTLP4+Q+%pet1Uw~(QDx#mROk3c zZ9JxoS&~pYF5l~Pq-4=VFhh*?-Y^giqNJ1xz^$6(F&?=$WVu*1!tHPs7K=>YWmJ#=bgrs}N#E)=FpKQVSYK!wAC zq{P=PrBNg5%?UGmu|4jQBEZ-!dC^-evC}(x9z@Of2oR0+J%OmMnefTB2l!8z4D!R zTpL64&ws_K&BLTCHe%I0{e2_D6k={;3gL`vJpCJP+@01!o2rLSrLtV>G=IHN9}5>; zf!eFx4$MwqSp7=7f$KIX(AOMnF|V)<5mJv@*H|>v1?64Hhwp{+@#)qZK76&lAsF`* zR5SAg*sZfaY_4)4lR~`pE;J<<-HP~my?y(nzXDr; zl{j}upfUrHHV!tMOSlR}1-?WMdhw!3V5sesA8O16~eXgRiZ>(SpI)24hYX z(eL|*>tDOM;V8I{*pC{crE07=lsX;d&lUBRQOMjJ25V_qB6 zt(f?PgHDP++cKikUFLzVA)EWU5E)h7;|S z`nW94iFE~>WSq4Y*G365W|%UMkk^Dr&S2)p?MT*a+)q2}pQ2p2_i>;tgPyEI&j1n4 zd%O<<%0wz@+Q~f$`7^C$`-d`$ptvMh>K!RgpW(S;ud5YK(@#fZ&JGBxwc9em<8OlQ zrjno7tKB^5r7WSRYZt9JMIa_GrcHSiMi~ZmhQyOzam%Dx&L6;bl)X0ByUGdj7;Zg3 z1{F+<;HsFk3i;(0J64asU18u_nXv(rmnDXypEdfWtAtH{ooALol7zgA#jXN)8x&ajwF zfVk_p*549na<_d$Ry-LWsYxbPU7BRh1zAI(9HMeZGw*KVa-sRZS#VIJgi%w9MtIYRG@mNXNoth+T7OS8I zRnSX}NI7-K)TY&KjM7zT!@M>AM>4+FkdjPBTy4(@im-f)Y2y*y?RejjS;p@xozlGm zvw_5M%wxl3%b%w9`q8oKCmugI;1@*HZ~H^Sw$7GN;s6RR#dq@1Z#Um8# z=Db`bIYk3Df#=42s2NHIGoI6`s%}3KtXNodPk$o`KE;yoXuLu*6FLUf{A86H%*~g= zgP&h;_#*RYxtJ?*B*4g{ERqnod$9rTr&$f@1Yr)+n(U3#JM!9 zZ}QZyxXr4+Xrup3NUsG)#i}2_n<7)|b<(@3qc4fcMayBuXkE_-7#Cs)R{TC5NW49( zD+`Xof5JiO(FmHT_G!|avQV>C(N3@S2-T-OP!_N>pX9aLdiNE_93$B9&f!b})^uQ6 z!JR)iSsw@E=Loi==Axk{wP}G*A8_Ed`*u?sBeqxBl+WPE5l?S6|49iAg)5$wioXsl|cIboo3a$d8H4wb8!*-pDQf$%Rc!gV_uF;Z9HBR1&;!Qu{K=*s8WU)uI6I zHo^zC+jO>!`o8&HDn_xR7D@r@cGYrNe87$X5|Ob5WD{dRlSOs8Wj<36gGbvxYpmL{ zk`=-QXa)Fx=~qML`y$NSZt2W46Z!|qIB{RAIC1-?M3BKA$fL|Zp;?SR7f(Lx7UGCp zwf{MwXDIEhwelxQ7E~uN+#85^vlxw0m!Pu5It<=cu1+CZ6aPi&x?%1mqS-R~PIhI4-#EKi7Y8Qwy!vej`AROFwyWz3Z;CU}f)VyaLXVj5Blam?{yDLEcGr*u=f zmc&xn;Fn5rCc_85snMxm%pyqCNsEpY_^e~!778q~y2VTN0b<-uT^PO$SW>R#I2e+A ztD=)9X~8&y_>e^0ca?*n--5w9>{f7X#=ikn)f;@c$*a_6-({eg>qqJS(ll0rtc zYGjzcG|rCDFK&|QI5HAmz!^mtE`(){MmB?rPU|}I%+3=1L`Db}kx^&&B%1aM2;Q4Y z=qc)702DFmfAGBgk&G@ZzPHmWV3wo=h>a7M+P9~4@ud*?gN_?ToSFs`Y;9Rj*$sb= zIDX%pKyYDNc5P1JWa9Q@=`lYJstz3msll4bA|BQ&1fXq(_VAo6<5`)!=dW=Ga?w+g zYU%SVo&j0TpZMQCBg6i=dokC8k>qIo5L{OLffs9J*%JB1J> zzpCJp*Cs_kHqRK4h$9%gzxM{N*GuP3K^yn6sPYafb>RbBoM|0{&9LM5{CQIC-}hpY z$i%WpsmVpwa~?4VAH$M=;S3C>U(t4wl|9@zi{^}u&m_ujhN|EfIX8-k$6GQ*!I<)3OglJeCvO{R#7s=#MLJ2o)jBOh(P=#&ynoV+BzJH$7UqfGRL$xP)~`a zSmrtr$r2N;@S-Em)wRhh5gk@R_ACC5QswL3 zr~X;m@+=8&mhWN~pCjX-$76PdS_k+I9ha=OH9ocJ_{1GNYn(x2q%g_>*9fnTX3MDw z>IG`9xlhk=VgK1lMfXO7u)K#(Q8a}q0UkX>$LiKUxsbm}roi0iTlHWBvr*@FW@$K9 zXG_k8FswMN_NZQ9drEO42rOU*6 zN;I-AU%mVf^Y^bLBZ#f^TT&kwDyXL|-kxc05vv)0jKBymZgzH5Aiv}2MJSjrC&sWU z4YZQu#^C)e?RJ-Bg`-P$^FxbzH32KyIyP^La)U!ILk7YSR0os6X|ly{H8;R=HC875 zF1M8PPAiM<=3|W!B8$L+N>8a39PioXyCf9Tw8I3vUv*rq9l6KNiOrFj-Xqh8=sK9J z$mkPtsA+S$^0&kZ^>#}MaUhDa+t;cBpSOFF5%1Fs=rx5u+GwJ`#if}5pK$s{|6;c+ zCm;HrmaIn~dI|IbIp8*tplqStTQODj-ztr8UsO9P9!rdNS$j-<3?Z1OWendFlSva+ z!$FfSAtJ0An1ME*ywP$~q@KJ1wf9v9>JbvaChASG|Uuh?#GL^;k5RH4B; zp;jkhBVxa%vd7;>YXh$%;l;6ZUC)`(+kghU_~Vab>z?J0D_IbW%`oO=$HjFJ)f?wF z_LudJ;@urj@MVO&CGTIga3#%V)t=y+I$k6|v>CI*=Gl<*>F%6 zIE>zMvndU%GtE__XQYd1sZtWB&oKUVXFhL}Uj11)-?T8Il%bbduW9N4#9*q|B$MNe zoueeTJTxqa?<39=$NCVY;y@jPV68&z!9puf)CD>7+RLBMc-&j@8gIKi9o>Uv7dJlT zyLI#JIJ*ZL2xXnz=8oF|od7w0Z)|_fo;bSJ3-CHR99VtX74h>FX}O)0&V@znAkmXi zOR2lf;!UxNP-+0Vnv-`tWn2Y~E_k2!O~WAC;pc&I4Y5N&tX?cwvF~w_`pXJopGmDe z8rg^now_w^O_z*CDS`v4a*Sc2h9ze{&`^SyQ>sBuMBHLlN0vF zX=OjrlpL?c7B-AR&Y2G}|~_G?9?1xi6`q_**k4RwC(v21q007(cIM8&Ye$dIw(owRy*CqXbi({ z{b%Xq^@N99@m5%63GqX zw$A%LM64_#SR8r9h+rQ__?wFf-(L%)`E}fFS|8{dOe_8LsXMP7?Fu@+TX!1wTrBzg zA!o4_UuNKE446RsLx->i{e4=moYVyle==7YpU}eRqNF?Z*I8VI6T8`BhIGTww`EV9 zvboQ+a3GV5Q!o-2pGy9Gy7F~(<-lj-p8du9PDhu;UiGym5tqXx$B#A_w#r{uW~Z`m zN(q$`@uNtoiO5q8v!Gwa;CuB8bHd^DqZrQzQ7mtnU6x!x6e=N=k8o4`TkaMNSdW_< zh)nb?31jwWXg0r3x9N(sbKi-^#g+(PVvv_Hr=u{q^q0nrmj~HYENW!AzC&p*ql=9I zMJPR;3VY@!D=8qt;B(B+4ZB9X2SZuJZC!sM=|KjyyY3pivz)!{KXV?pS@LJJq$bHT zAk3!iy6{iY>N_Ov2A*rNdPXY-`1R1JXjhXk`GW1#^e;A?>rN$Nr?JLxHAP>3{P_N0 z8F?~fy)5)YT-%n}&}%(p?Y(#O1Nnh3y3StPTo5F!sm0VOFu0XQzhO86@jm9^nNv6D z>e{dUX?dk#79||>x!hgl=iMPYwm*;Fxq`*4W}ub16|F$?=jdKFa0mz9%6J zpZYn|yqJoZ){9ogE#XQFSq#*r6G9H&j+KIEd%HQNtGn|e10E5Bkw-sHl$l7mNi$>N zthsAu(noD`rwUzE?VHzh$hVZL_G>=yrvy6s-3g5zlVQz{?Ku6uA~EdA`n@>DZIyE` zk3SeQN!%VDMdn(*^wjIl_17~~rj{GAdb|&tgFTuyNn0dn9M2h?OXnKR7`yb2M!*?a z32nRmz*cATq^?%ykbEriu1Mp4tiAUs8Jy$yIrtpb7DFT>Z&H$3QDDS0 zaQnrAQ1^?{X+nZ$L&j;IXWJK_wH0QKVS2`B#9-_z*xNOpW|n2X{LGhRtGXjvZklF= zUbmtZnlj}!0gU$3LMlyrWSI+VS0OK*xezmca1P$3BjIB+x?~E}^4E=jZ_?GN*8i#Q zT)dfH064A)b+axi%Io$}$7@8)b1T%!GuLIC*|OF=X6DU_kX)}_OSv8$q@9S!Ja+jp zj3%L(;Y`?m^SE5?dd*D_d9~a9Gw$~f_?*u_@Ht=PaADTW_~Hy=?YP*xF->E77o0tx z9_VMWaO?TLykx}ijcb=a!?(p}uq%nP?t^DvWozg(NY(%$QI*qI%vH*ujTj!K`jS|& zCFZ!T4_PSPJ|b_6o!mccV&FONmKv~mb=7e?KDw3I%K9~nt<(onp#Z6E=}on~FsonbWgw*(k1>+ zU_xchiBuL2J3z19wZ^`WDU7}w?2=In-5Pkv?fb?BJ{|;RIAIfjc28hTP>0OKX4X(< z1#``(Gn)nG0-x(EqphjU-HISI+)R37CCqBY27v*#+^~Qwz?3d*X$rqfC^ku4G)U8f zf0~1(h9LnCWXiYXpYpuw@TeaB=eij>qg!|jL0d)JKEdwvtEotESDas3HvH%seCdIc zUkX1>%Yz*YNcyjC_?w!?^&xEPgYr&K!KR4j&k6P%Su-S#Y~TC!M6wbU;bs?a&Y+g_ z?V+NnHL`oc5ZxVA!Lj1e6s}CpA`OqUH-?^zpY&oZp##+@_^9s8ZLfl)5-qemrHvrh z6X^z7)o=>60xje3AWHQE#tPFSMckn~JKeai#+FS1wtpw3!6u7n@YLPfccC3V4X{c` zb48r0uk_f*g}^y`lhBdsl%m1rC(4=uaR2r{o2zo_rMWpqZ6P3~^#FFHF0E=p>x)4` zZ9h9pMI0YTa;iXMr){-tQwM-@x<V36kn^YfVENWx8dTM zW0yTD{Kkz$m*9TQ0>Ouinmw41EKqr)E@i#$nPtm*7v`A+uYi5o^+N>!$GKc8XCkdZ z{tzr^7Gf$u&(>)i@frZuV(SFGZ0S+M(@-w1R=wxU%g!=VL4M(1a~|}^^?D`g7h60# zk1(g7s?J453N~UqR}5;x5BDki?<9Y*wpB&1!+#a;=@Np<6e&dKwVI#$x z_!qUaSU`YHW=58+kl!$yHY09066Ebq=P5BtDZx6o<4;eBw!brUrTXaf8DK;Q_2Q#j zeR-lWBhFDWfez?^Xpp|?id^6Wwta<Z{lD~OmS@M4P(eVTM4qFcMI9_oBQAppBg^i$qhjG^ep<8ABes0CNMjM9Wq?!iWOF+e-0&_Sdg?xi&Zl-TxQqt-Hkl literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-advisor-crystal.png b/_static/img/mascots/scylla-advisor-crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..d33fddd62f0900fceaf8bc7785aad0dd6badf111 GIT binary patch literal 67593 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 HdEoy8fIc?4 literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-alternator.svg b/_static/img/mascots/scylla-alternator.svg new file mode 100644 index 00000000000..0462f893d5f --- /dev/null +++ b/_static/img/mascots/scylla-alternator.svg @@ -0,0 +1 @@ +scylla-alternator diff --git a/_static/img/mascots/scylla-cloud.svg b/_static/img/mascots/scylla-cloud.svg new file mode 100644 index 00000000000..a6c6a26fc99 --- /dev/null +++ b/_static/img/mascots/scylla-cloud.svg @@ -0,0 +1 @@ +scylla-cloud diff --git a/_static/img/mascots/scylla-computer-3-monsters.png b/_static/img/mascots/scylla-computer-3-monsters.png new file mode 100644 index 0000000000000000000000000000000000000000..d0368a7027b1ee216abf8d8a1a83cb13dcf732c7 GIT binary patch literal 44539 zcmd>l^;er+uyt`OPH_$H#WlDVx8m+@p_Bkci(7Elphb$7qAkVUU5Yyt4bGSMe)qq) zKO|Y}S?kG}nKNt7o;~|SYpN?^W0GUOdGiKaSxHX&%^Re{H*XM<&{5$}rW5JR;Xh;` zc>|D+yB)~a(#!UZw2ix!Ev>SvrM<1Tt)-2h=a8-Vn>RIi%5u`WpO;TMu~YTt0$&5= z>`1k2KI0=GsW$1dCBMb2#FFplFbrZ${E&@U+xy~IuV!WO&P1cgAO*4JBc>^~jr96F zz08s1I|rj)=4`I#0qIoc`!L>lDOq&8By>VjGet{_N%4LEGoVM-l79ir`&MHA(Q-|| z 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 literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-computer-headset.png b/_static/img/mascots/scylla-computer-headset.png new file mode 100644 index 0000000000000000000000000000000000000000..0cdadaa2167503eaedfd33ca50de93801b46b4d8 GIT binary patch literal 22297 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

k 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 diff --git a/_static/img/mascots/scylla-drivers.svg b/_static/img/mascots/scylla-drivers.svg new file mode 100644 index 00000000000..6012e71679b --- /dev/null +++ b/_static/img/mascots/scylla-drivers.svg @@ -0,0 +1 @@ +scylla-manager diff --git a/_static/img/mascots/scylla-enterprise.svg b/_static/img/mascots/scylla-enterprise.svg new file mode 100644 index 00000000000..a1aa0b46ac1 --- /dev/null +++ b/_static/img/mascots/scylla-enterprise.svg @@ -0,0 +1 @@ +scylla-enterprise diff --git a/_static/img/mascots/scylla-forklift-boxes.png b/_static/img/mascots/scylla-forklift-boxes.png new file mode 100644 index 0000000000000000000000000000000000000000..f64c29e6c7c37c8d30c704311ef9269553e87e81 GIT binary patch literal 29196 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 QE6QPBsOhT0m0w5vAK^}|lK=n! literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-forklift-migration.png b/_static/img/mascots/scylla-forklift-migration.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f645c645adae7e881e0cb9cc099ec7a80faa34 GIT binary patch literal 24191 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 literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-gear.png b/_static/img/mascots/scylla-gear.png new file mode 100644 index 0000000000000000000000000000000000000000..0f53b26afa5a7e94e2e87b8baa568dd6c7dfb2da GIT binary patch literal 64841 zcmd?Qi96Ka`#=61JK0)9vbNc>C5(Nm=vBy;oeu zUpgA_Kib*9XTd)gyl)YEr_V@f{uLwa0#JjiD z4E;uz$4|XC8c18+r`P`vMos064}Z2C^k3}c zXrSF+tQitpH*ZGVzhD>lNqg0@W^kg+<#6y=<+z^%Nc{hcKL`vHOpIbI05AaiP~Ew=LUtJ$QXsc3X~p zcS2dzkHscV|L-#dTV+i&VP$&1$-QxZfi?EB56kM_Hohgag3aR^-MT2(H874s9%@2u zvxZP-Dd>IfnNa$f*rZ_OfAT}vx#+c4cUaI*PYSudyx(5d&Lu3Aibj4Aq^e3AHmgzD z|t-G-0Aw0Efz_8-hNIJCjdqT$pL428%VKaOaj>@LAA(3)k+Hi#M=cyy##YrmE z|Gs`l>lwLH{fDH!e)l%lbA`%^a}j|Tqp2Z?wFfpU`U=JJ=W}R(a%|2Av$;gJ2JDqm zO0uY7*CYQXPu;VtkeK+X2g~Ayps+Azz6lAdanWbiHu6EuJ2{{4>NE%Yd+O8>a|7^%Tqo7H9nlqfj_e zK+A@2DB!Otl~?BVr-vi%PlMT`sZNHdSB3A~Z|3ykyKB~5e=AFgjwm9>bu#Jf<@lj< z&3;1frR?h%ad4L}iwc>?o=4_$p2x=`I4WWG(*GWfaA1?UH@nD%-^x|0k`txI7 z$K$7K%7QU{?|1Yc$rrwn7Z=3Episk$2v3KP+ z?bG^mOQ(+Ucf#uw42NJ41mo877aTJ4GWxaoLD-)q0>x1p%_0>nvLAgc$~f6PQ|Lgr z&GDy#O+BcshIs0@(4=OgRMNm=EUc=@j zJ@I5C!yfRwp{NM2pr{-SC5j9nDj8PfFqP3ZN_0yxezGSJVpU2?RNqa#ew>PanSuRp zXQx>6nHQhVIA+<5kRIW@k9D_6gCS22Y=iH;%f(W>_MN;U%ndBejbUcmc(h;5QCHnu z@{7u^LAR4pTo>A1UOu&Gti5(mC1tel9%<3A_03=pHep8{(fv5EmSXQ+quXiXz=`8MeJK{@h;e9?E!BC_1H&E#w$vr?RPgZ47)Jg?xP3BdltO0m9`= zR4z1_tnkt{YYIrQNs}kz@4Jn}&@Eq&io2KJQ$E`~_iVFI#x0KZ_sK!k(a%e_t~Yu- z^MV8zh&5Jwue)6a>6cDc-JnHkTMW(m(A2@;ANs zk#Ig`3A)(c47ge7t9h!d_5_!B(7>O!B{)RR#-rL zmYQNp)M%j0GDXv6fDJdWbwpRhd;%Bo)NcBE#bphNp(|VHD52cFQ%r^(u$-6WE(S)H zHskN;*W6k%>z^Cbk~KbHnJ;+>Y+#Y_NqBe4$)KsO1I9<%Iu}u0?zaBDeQK+VFTY}~ zoh({dXk#swqx0gs5V6u?%AYs7M<>~O2si$6pUguyKhW|>S>P8TYtV-p$rM6F%|Ec> zfIjAJZF6@Y_9ZT^nx%xOL;y-c<;_=x2+6qX2XPTQV6$n1xvP5vUc7?^Qd-O>7^0hh zQ6yz7!RtFN{Y9KM%w28#o!h8M1~b{A*wf83%%0K?Cw9`$LkMS1K`{Tbh`o}Q%!yVJ z3i61RaDOM2^}u%l%$z$iuC3CHA(Ua>)IMc(;&keJ!L^)ZbUot5oppO6kVL6^Ej%Da z=zgHb^uP&3CTQ1_Z6z{pOVC2$)t6)LXOYsJ0AwlTdzuke&QHYmy?w*wpvTJjQlt~L z16VtW_igAbEUOx1nzAM~+H*M6p|d~7;90t*Q3cC^jSsbF z$YT8C=sa7HoEYxE$uXQZ;56AINy~>g zuJ#xRN+*ui_q!gBtUFA$56m468ur70fU}p91oWk!+)#jWjN3*xZEhbv+Hds=bwMwZ z7rSv0cTxKzW}Xw0J=nY8@W@hB9D;IEuhn}ng$H~b$}`ZW1zNlzAEuBYt|J_Vfa0}3 zt9gwk7k1|7QUb_m1xtwU*UzI9;wnREh@CLL=2GRu=E#`lt?e7mlFKRNBfb22+Je|= zBwZxdwr!xW|Ff#Z^a(R0_X*~O580|+WTXiExXj=_$*8_}DOMQ(JoYBAo_|lm&F$ps zc}dGqya#<*or(*?z=mZl1zGGMCc^6$gjE7s4*VMSmI@q4I6jesj}{Wl>xWY<*uX>K zJO8>H3q!{y?~#_X-P5^OoUjbQwd@5-_>G=3kPJ#%^h4F{R+fmYcof9+hDwJRx@ByM zx|sO^#xkc$&7H?EFP-~9TD*g=QeQ!#kqbgxat<7tSgf%Q#8^z~!w&D2)}H8pBenZR zq!6jNqBO&E&_wE>LyCif7Fv)jtMM?cthCUW^<~otIHk!0v9gHsBo$Aol?i3|~(@H~?6eI`m({e*oh8Zszq^3&V-Ji=T>3Uj5?8=Iz^bAq3 z?5qzt$RB0FSA5~mp@hZ`L}yrMm6M268pJNbkHfnBWJ;+0bLYUu?G9tx*2nmIus>@ezriARAMScyo8=G8u zGlxlT_;s3$Y|q+9Rtbk)7pQ0b#&MmOcmLAGuxf89+*cenin=~V;>DpVT>k?Z^6;w){OJLrVaB`m%( zbI*)f2IAYiIkoZXuU*&Cz-p`XT-~|8$tO(;z(mrE5ZKN6^*@R)2R^t~5sXW=8P&%Cpf$17r>qcyUuj1r2sH$N{X z10XGe^C))QMbB4pIRXEoR5Ptu?)Lk4A65;)Ne6-m&oVv5UbNbSIK6v_{WE7L$P&9o zu5%jXr?#EJmHCYR-a5gR#Dr)fmnzjViwo;C7jo z6AJtEbhFGx^JBSfjGEKMa_dqL(~^(bOwjHvYNfR4Ae}XP8?Ly*vvHoNv8DjP6LlT| zM>yXc+2vVyFYhgIICrSi5FttGyLl@I9SB|%2towyDacKg5I)9+1`cs8!Ke17?|s-P zBbg7@Huus1N8`nT6A{q9Y3I=}k}8w)l9CDfF0^s#$cj1LS8sUbh_`0@2V37Hi@N*= zZ?d1$owg9*uye2ZwNa2irAi6)XzbOPN^dqvWb(RBo@=W}x~)Y^p7k6~`txDu@unH` z4G21|Q61Ih<2HF0{KnctPv~{h-;Wm&o8zN|9^K`yv)%cM2;<@>$0C8$?WAjEadn57 z>0cmmL1;8Tq(5=v)3wIa7Wn+l40w73Bc#g6Uk7NunwGU4Fpx{YcIg(Lt9|3T}qXu zv9|I&tgLn}3dYeBfcX-8j+jfPvv^Y?NEa+>>bI6+k$@*?!3(9!v)aFGBHe8rZqQe>7JK69zn=fdigOOcGh#1m35@^F55O zENC2nGF<;_P6P9H0v=*W>IVnQHKj!fBB&Azfnmh_IuZnjBy+;gNr{okKZ; zoUVZ1ph$1(4P2MGrSkG_}frCq}mz z93DT>befE=SSG?Ywe|dI9MBUb>E4)|<+)1BpQhAD{@$I8=sBCjIJvLb!B_QjB3u@L zqAdzYiO?-}fGJw_$Wu($ejVC9CC0n{s-!hpvSOU$NRk$Uo^9|v+pwnM50=ur00j1D zAtVn^OxnYFQEj5Rt6~2!OOVH;_xL|Aw+?(u8iKxi1j|tsM&E zS}Q-tbzD~@8TkoDw&i=>9MOSk#JHQ}4GvmB&G*2MR)*M6?_rSN%k$eD=Z<%}ytr{9 zQ7ki46i|F(ymC%Er|X4zs>u^N|bl?T@-$JU+6pi}~)x*M#FgsA)ZkBOCRT8>ucFV}Y&H z4=VMLPg2lM?4Agz^FNxM{SXENH7@4UlTHsAmKj#j^+b_IZfFeu_u!sG8?wQBH(n%$ zKbT#U9XjZV)0pZM5o_N4O2qP~=B1*i7-mBm>(N*14B5IljSe=EJeDNmnuA3(6BWB4 z*5U3HEk{}ikBqoroPu>z=v*0^@Y;-DI_UpaEAHtH`_5w6!!5`hnKHBVmxi`6Xm)Ib zYxq6A#!?NjxxG@naIqd_Zq4Sbqaz<6D8QpxBd+F10eK8eZQJuPz*c%B0{dviRWOyJ z)AV@Lm-+frMby(Y(^F87)RM*MT2GuM%0cobGeAxO3&EKQIXH^_+GIsIT4ES_T_hW5 zZp_OwPgC)qTJVEl(zMe*C~W3fdv9u$z4E|3$7f+vP0M3ufdYh)*V7hR7H9D;7K%Lh zg55xh998UMm8qr1ib$aiF9(%Rm+jOx1r+eLbRF_k6-md-d{$ z8ISAaV_)&W%YJD?N%f7ZY--%9=?g)hj(_|mn@ZK*zKlG4wZI+N2|Jf1BsfEmi_Uyv zv5LaB%fT*%paliLI=NX9w$ixbxq5F)lr*ax98INIG8Mm?In3?SD2=~az1|e4`I==p>uF6ragGbqz zEKm94-obCiUXNjXA%;D=SvFq%!HtQ5mWl~xqiy4!r%2^g>pTS+X68HcbK!RCemkpE z^L-Oa`<>NgtL#U0=Ev@*j>q@rlh=sVsL`h5jO!0nd1Yoe!{x&|^|wv-C&dv}wZs(Q z?p2yj0PuFYw)dPFzVJg-Q?KnkiB;^mYPP0($I7TaDye+u%!+Q)r*-G1eDJk4#AylL z2eeSA_6-d;Z2OZG$dgt97qux{U8~vB!PB+t=Kn z7!k1~n3QL~lVbLpt!Z;$8|{~xRp-;P)SNZGecqqi=MejikyvW#-qG(ISE$K}Bg zoU^$MyK}}mOd4`ydOnAdS4C|cw}rmAgr$ZgR`t;Ek+_O9L$A;+OwN)uQNkfszLZ(I zm}=4pY(5V;lf{ov{vsuA)J{LQ%S`0FWPBJ&GnhxIRmQ}kwDRpTshuyU0$~U|6OSew z1-#9mNudJaR{i$x@I1`Ea%qXkE8Pa{n+NF{kbU+_u`m>H4jX~heEFF@_boy~OS|8I`#shH1o(v<_l%ID3|n^td)kVZeBOiCy* z60+N3r&_f5BiBFQOZYgS7m_|~=0goi7a$w&`|)?srL>wd>~h}RA@qvZXy5u(L;*=& zju(l4ojVyXJYl4i>Aagut(#OQG9k9V{qW*GX`PUyu)2E+c~^tGa9PNA??PV6Xm^^6 z!{l1tG_a!8qp#IgI%z2tQLA>AnHUaS4hmZA$@_HaU~F{8A@6-}r``e3jhc!v0U^Fn4f1*CN< zx^QLmtYzVf8xqoR=AgYPd9m!f<=aso@S)o>QD$XKu^N-~7$n3!>Ru~{Pun@QykkeX^D97qFwRPT zK~+JY!P6F_`ary6d*JR0h^063;x5?e@G8A!rwH5L)8+C2uDH2HBTWTxM7)|-XmmCM z)I0mFWqdB3P+FdmY)1I4Zj5_$M?@hu;TBN=q^EsN(>;SS297?HEqc^p6CL){!NC3V zQd^6a1#_9NE{ zwQt#ZhT7H#zx%!|XY;K5Ll9q2(*s6@wj%`qhTUeVG?sUPgBGewtYO&O(JSkwvc7{? z#sU68zpc{x_xQVq#oDt)uab(TyH3Hy!t>}?&K;teva4yBA~!mbMdDy9 zM&9%8E>w_m-@`ZPOw4}U(`ryANk1|3!)Kh=WV=2OO$#Hvc#@4B2E6{r@xnAx}s z2auR*<6R{3b0zzIn~SU>420_TSC`#PE8$!>&dQdRV4SV?tJdKQ2z6rL6Eesfr0NK6$HNP3c-g1NpNoV9SmAA5}K? z=dQU+{`JWA1z~nwS9grPoSjm+*EeKo$*;jJdv~htHTbeB^TkRmO{){W%$`gr^C?ty zChgh~Dc4?fJoQvl z4Nbkw0Ld{f0Kc|!s=o7EFc(d83oq`TDCu)>K5Vj}`7$m6WrU$ygo36KkH!{&`vUp= z-hX6e1v6=5)Kn~^F zuM1CJ)6<$&b8xUzZBTRRK|l3Wc~#I`4OG_kj{ERzkKO+&w_YN6bm7L-`qM$3Cgq9h z@&$7sonB23o=#r`N}GQE9FoVB&zLxEg3f&jN)`+YSTuoLYU**hNKcTAL>9^(4_0{C z{ikqa`fZfFl*2OJ`jUuGi(q zjeBAkDVLB6-12aJ$D&;c^+kx+aWO-9!3Gt_ZPd$~2XxbHH={nZB2wPS>|;#v^uado zMn#9XGLu#jJh;%cA9cAQ?bHW@{QWm~9<2HV`)FH=8ur1ixDEU0pcj^WbI3FNx=&qa zqGbJeAFfeU*9S7q9E*C;4RJ8Z>(}WIH-2FH`+%=`D*obh$l{QW)M|y>P2Spy-bFji zTWpr+VU(d~ChUrO3!^qt1(0)m^e6J1p{))JPl~bW#;J0@4MVf|6FsOR|7oin+`T?+ zG4KOEI7gw}A9(asbA>UlwkB7M-KPdp)&K35pXvTWSRQN?sMi_~te+mTegYy(Mu%*; zFafK(Lr+k(QBWhjt9N%xDQWv1^qgFA0u^7q%FWZz`xNCsd}5E zyr6?77&ZQK=KXpYP?X8Ot#tgv zu4=UkP4G{Rt^L0W@Qh-rNc`6}xwRK?;l<uOPbZBuD|l{{V6YKqTl>BqXjt<8lHhDAcU_1W5tYtL2-kWHaOk5_iyhZrY_ zIeBg+nP-Gdq=pP~sLO|a>-T>z|L^9-W_9i6*<3l05{Ul+3zaB4h5T!z-POT|DLbz$ zk5O-s`K4{$@agH)r-%neJAk#NScBv&?`dsbR$a&v_53=Zw3u$wfDB-RZK+Y-k?Wv( z_~+C3IViyX|LOtd!Aa$OnW4$q^nBg=_&-?8m&Qb*8;{1o`WrRX?z4qP1H5`oauzh} zn!G`ML9%oy&iJDlUWGK}dY;vYZJA_aYg3!_0NcAeO7bke$&xd7aza?Mh`uPMSNk*b zg}Fp+@Ws|I`jp{Xi@xvm%Z$hX<_pek?)_{f`!>qV|Smpul^j%GX5 zuXE%9Jn|o~Y!t{7uQc42%Q?Rlc zVNMEVr3P?gE!~dpPp53LG?LB*F=E3o)hb81EXr-KD=^j`r2&a5r`Y1uF)XIaKR+E~ zJMYzij9l*(;w+~|83rG%D8<DSqD{cxQAa}Zc7S|ee*Yx+mGc>9Pvx)Of$)e|nuW>|vyiSU&JCk|cy1M~_ z%kb{DWR45>-uPry7l5uQBjpVAzIlp9VEh#l{uZeGE7=}Nkiv0ZocPu`@CZ(gEH`Y{ z@2=ny5h$yg46ezDn7MhmX<*RBoZE7WGVGlm^>|}~OKBA)U#7rk8?Sdw{;#|29tXQf z8`WEoobJ0QfM$%n)Bk<&=GCYc%dc|uK~>$Nfpl`wHZMsUzo`k)KIF67c-&dK*GOX+ zWghtW8l|mQDU1Ob?l%o-N5?0=#83rrP=XyFX;hrZ-1wxt&uInZJs4}d6s8MAej ziT~F>1iX;lr`W-Jud@{~d`>kmu-ox@x+JZ^ zGC?pcN?-MxsP8i}X=uM8cCHj_(yX?SwK}n$EHx2=eKeMJ+rMx^#kd zPm%HpbCQQ#e!WbIcmigr3RCzo{te>j8i}OmIDVAPBKB`dE|`d~FjJv10=|7J6ObGk z6ga#c(=w3)FRKsJTfXcANTXp3*N$h5)Lp1iINfQ{5a$A8cDM!8D}2d;wv`1`>}B{M ztBV`dx*Q&oNTd6T7z?9rC%3jD_)}?F|)&T8(5>^v*Mbve;$f zmM^WbZQbv(;Jgu1X7ZeEu<$ocmjWBYK%((8S?kK-&rgNr!z!7)`**cc6hIN|zN3c< zjQztG5IUMS3sg~z&yku&-qvR0mPWm(hE_9gNHYCdwGg(4JpW2^%+?mav30^PcCE7? zwy~uwdS8^<{w|N##YIdlnb1rh^wMT*%8W>n=(c)SBNS$$b8Eb`%DV9lm8vQ#XE@=v<2uKOch?;LwTx7F z`M~pkMO~}NP$-B($;Y~!g^kPkTy+ff=B+f3!F`28k|7V}9FYV;z$G^)i_`XZ!VJqMwF4c{=>Wq%x6P3?~CZv zlGXox^Z>qH@DeL`PDY+PhzItaUiZ#Nppg}|H-;hL;ZR16qflDcD3VVS{b~PO>*Q^L z*D<2>zm>%%eEkN4OB z0LR}Nz2th|3qZTi+&{s*)0il{H)pKPq~NlwoB~>A{}@PyUpR zn7$=ZxcZ&wP(JVtFK{H`>)oVbcP3y4@)((%FFGERc;|`_Z_G?a%$U|Xima`sTk02< zzUX0UUI!PtR?zS%Gou&4zW~#E*+#0}Q%3}JDt<*80B0>ucmI=a18zl1o$|U9l9rX7 zmYPH78M)2}dZ^zGrVrf;>7x|3yuY`BtN*ZNP?mSL2PR(kHK!$pK;FYw3}C;1eEz3M zWC*ZCq?>k;(X+~pIkz~~jK5b7jFjM4I``fI`a4|eiIL?G-n(C;)&^YubJ7oQ)z2|9 z+jnBG0Lxi5N#l0#36#cfZ7mKJ*U(LseC`%q|KmR_76}YqHC0$3Ep5U78Z;}JX%0qu zf{_TZ^5%?q@dz{xg0=mNPm8m7xrG8s|Mh12f>^>V^xd<29e1*!Rx&M{gf~MpPW!K~ zyB9g&Z!Fnb3jMpy&oo!DQ;-q(S21ax`8&v7oNR}e+@Jc8!$Vz<<9=4!ZP2T0K7PDz ztgl4dHwBE|@2{dOer(_mHcbHHONiGYBcaaq%OJI!N#ZPb+Jduo9@8lPG_@uBT%L`m z@-uI+Iey$dq*FJ(XaLu`nsp~d;fd!l62DZHTXD9ORVXLTx>-%@JEmwy?{-Dq*P-Gq zmf9pJh-u+9*KGhC1M+qDO;&&H_$}oMi+8hE@i5Os0Jog>BI~WInbxj8$90B1upd7f z<#>sp>AEK{vv;LA;QlphD&i)gwBquoJt1}k>zS{pZe{V&vCTca_oO3}JiZY2JSM_t z!RKU=cXo$WGYG77PPXXKn@bI?YZG^0iMy?A8j!^LhC`xY-(Pg^pG1bZlz|VO*L4u9 zenTs>3DbzLk^y5{%Wq^ftpQ> z&EKP}79}BPq(`vSuJjn^4X4cuTVgP7RmFVJ(45)Ufer|%J~T4arK~1Vp(xHTJJyI^ znHfk7P1!;AoVk$lnHg;26jIA0Y3zr*H+c=m`~N8AQ>If%15PqYW`G|VFeCbx;4U4JZ_o+TE_|Ey)=1P7n!(~;+Zy4mm zlHkLQ1ohZU5XIhK>Cv%|412|n+EJ$%IqyFtz8rX=LW>uB89_?%d20n(J8(MKvv(cX8T0fR?I-D=oF`efK|cfDOvSlqTMp z(gZes?(UyYPtv|v5m3y0$kidnP;O4inkdz3o>qZsiA^y1TwRE!(|SuMc{PwPT+)OQ23aT z(n?Bzl)EbcWUM{+04sNbTg=}4H~{mMA$CV*Ss}EEJ#I9S{M9}#liR>rgRoqWG18D{ z+Luw5moBs9a1a{4wCg$ST6{<3#viZsp=2=qn*D>+LthtAdi#rz5R3&C9H8IfPW5#R z!BFlrJ9^=lX+^o{U&12=LEKge6Qtv(?5HA$jmoAA3$uD8os^wndGB4Ke8ouGkJxLf z{C7~H1Q}*^3Kzk|4cu6z{Lho;?2(c+|(k%U8yncJnDy5bCbiQL>i@@ zgR)^yciLmwg`~SH&>wxtvFb-ie$CUsoHHetxJ#;!4nWroX1_oDRi%@td<0zw2ISf= zRHD_4D4Wd<)5!bsLS9(&S-R2+_5O+VqAKH6^c3f>d$qMP zL1V(W|0dDMig?V-hIeeH{6?#js{sE0aJf)qakRYAv2P0M)~tv(Rqq>pD>LT`YZ zIWGy@uPEJr5r14o7Vdk|vf}Sz#?PTJ>-x~oVAWNH%+PBraH7;3Uv%aqD4=z*q*un3 zEymj0Fv&wd3cUJmrPTEQVdiUqjr;05fF?*O|L-h5!-d_7s59fHYZ3GOj&6Gu;a`=b z9uS_fxb(RBd^w~PzY;cVINT+Go~NVu>84t7$hvGkl3`4Mn;f5-v`{FKWL%OBEqt+^ z=cc;-Slm0I4_Y&7m~Q^EGD#*I*>rqGu<<2I35-h*ONeTW!Z*!E3z#LbpMI%#_Zz!B zwA0?02?wsj>tau#A!GOad6#H;`Ad_D=<|K&emezs3;3cTR^khn&zqU>!7NH3K||9# zZuu#5jzT_Wvu?MA_snktt#xYXyC$>nf(HC0^pCSgR5@tGmg(n9{Rcz8QPrwCg#bug zR1m!P1rZV^dnY~VJI8BXD`Ayn=Q6~fX!zl~UxH>l}9&>&zeIn204lnA%o{$*n zh0?U}%-C}aqxJ71pzp@OFlWUx@$NR$nZfj`FT?k$-Z{hhli3@G)$Qd7;w%c29)HTH5}oBLmezW>s(8aYLdf<%kP&0VUYJy z8e3?NcK{UzDe|i73Dn%+HI~OF@-Ph4)*L-(S%00nXVw``n{hL6d%1%o`3TMfZA?)m z0J8P!Wp=oGnNJJ2M3^>$dEI$>fc2l0ovb4iTSOymz_=ep;3XN8CM+y&Z+Gk2-ouCg z(4dFf*SAovJ5XZ#*Ti`3dFWvNk;5B`fQy=ERCy=@n4;Of7v!f|PN&)+j(WMEi{9$6 z=Z91YSxw-q=ja#MnoAC!VnpiG@Tfc09>f$EzqU&QhF3#3=h&#$UlA3;bOgb(F>8wI z@w4qaY`r1P*|gq#U5yrQ%cb8kMl;bcaG1}n?GP^065zUu^5^TWixo6k2Ly-3xAvgb z!}g^DlxjAY^Wx;pd8*@^Iaz3A`L)RtfCK>{q5soCj)_D9YlKj5{KS7r^Bf%Rg&#y4t1ja;5~s-VFz%o?Wjt)6o4$#ED9Z)*)R6_U&N@VA+GI_3$@nWd|{qeG8!|vU(=TKf|Zh2tp0B`=s&-b zSEQ?(3$R>!DOIuA4xQZXmfXEBaSizK?UfM^pU|iu;OW*a&6vQCBP;m33X*T>-S#^z z*LiLfiabP0*xn2n`}rfI8F;xbE8U#lkdR(8KQxtH&lT=%TCo+(OwoRj?jjX>)Y5P* zHSsAgn|Do27--l0r%oYws)OWDPqtLSuLYkVR zp13Vva1@~w0idSN$?U|!9AF=c*$3wLA>z4-6R6tP)&}KgdQ3QOkJwi6oCC-5Wnt&< z7o3DhcS=%BgnQtbd(_;X0XBC}QBHet_Q;yjcn?N^{n}yc>CFyvuh5l%aeL|w1T{wJ zdhxxbTObJV_PB|6&dyyD0qeq)?$HLTem4620t83a9TV#0ISK*;PcFIN>zI*Hi%7FK}vF&siw{xQg#dg4R89hof1!KuJSh7dLZ( zm$O3S#ohs3?fP(c1-{smy`czj9x0Fb#&q7IZ_rsQ3QgcVlXw$9avr!o^7EMj2c$a2 zncyItj+g}$9kAU$8k-ho#=~Wm;H*yO{}<+7#Vb$jnGO@%=$S}=q?(~mYzh4CpvpG@ znl3^1v1Ftpk6!|pbA9v7fepC<>8`5X-}jJc&^`-x;J3o~w{Um-TLwBx+IKS@d&p~* zpau1@RAy0W)q3OB>niyj`2vzc=8b=c(!XB>V{Eu_9Pp$hP?$`9u?+zd0zoX4d!P}p z#&sn$e@1o1Dy)5dS;zIl3iZY6@6CJbLA2g@(Jf){qU2=Hm1(?h(JhqY3+wKtD7ZF_ z>~lSP_UeMdC09>f&VKxf(g<&_jxcc(YHwc(tyi)nlE-LyMMhT)J>O|dyf1Cu~iXHiz^;c!Ow(xaHN z$2&a}V&ziTY0RuFsGy60)J*XK=hUoJ_S{)C;H|(Y)ZU!9r zs=$kytPt$*J#T4>*S`Aj!(MBXzNVTBT2FH?9{mQ^gP#Cz-3Fb%Uxlu`3cdsLE3jsa ztGZq(eWz+B>yW!Dm>->M`PjE^Bjx9|cv)2(k3u*~I^Y@1^H-AcI)iw6ThT|*Kb^O+ z{CQI|qkr(6htlTHFGJ=i&nvJi7kW;sIn_v~#GI3#P7iMOX1+G%23`$;Wb)dPqD5&1 zi|wIY7?o*xMM{Y-UUnL%zJopGKG5if3-Dd@Eo2tI~$ce=Bs z^0&#^Y8k6Cr_NQCp z0}{XGEBXrt@d~<%coSu=&`s~jS9_-dt_^yQES`2*B(=<#>P3u{&doGUdc;TJ(} zW(ymCX*RarS>6>4;>-L+@Jg^~l8AmfQCcA$?EZ1!(8+`LftcOH!@<;&<1@1r?jj4AhA#sJfPIM8tXQ=Y&M4E>7g}ym}_{!u0#5}cztJ7j}8m)&E`rpAR4vX zyR!D^a^U(2*R1rQ7gQVIxrmcz1^oi(E@}EEZ*R^|ITed0)KhJ==pK$85wd{nAM?Z0 z`H|^$rS(z9Y^o!a)rAqfuAPT5w&u5uBkzB>0sS(7Z`-&?_nzUnIJ%z-oXMQTV~v!8 zh2g|9UZSs+DRdV^K(`e@^1O~eRXXwqgECcZji>%eNx@d772KbeZM68p$G`(VKRwv{ zmbJ-a^YfwCje0TuKCmmNdoEX0Z9lf|_|ngMZQS)>v@yrw@kRXKmhQZz-9LE=qld*D z51hc2!1ox2%+$Zh&ybPe3OSmQDO!QkZ3T4FBf-m+l%~kn{*9!%sfMzp zhW;1iI!awvR@uxa{ek62eCNU(OINE@29W#R;rt2gOt8$n*2g6QR{92v>2M#owO{IS z0d{ASZIIo0Uq1Fc-GaR;TV0Qi{IHiOncj_fF$ox{e0VWdoN5uvJv}h!Oujx|lC-#9 z0}D&%oc7!dS`)O3(iR*O&K^RHc#&qogPenDgM)?-38!k$92_?oyG9mGFYuq*YuTuL z7?@SUT&K#08851{-{deu1&})LFkgFclDv7O$HY8+GXR{+d%Y^!A40Ct(}CUy+c6co z2@PfXNru@ykG7I&H@k;Q?2G0y!q0F3-&c#aJezk#TA&F7=@!)@pC!@8A%V>YjeqTl zPgr|uiuWQPy$w_=aJKK)%k;@J3pG=ToYsL4R=vCS4F9i@+vn=ezx~{$UHuL*&ZuUX zpnzLpuIM1>M!|sbS+cPTrfOvi1dtpe=$c5yb;``Qcj;p;d_yFYI={-I2f7wr)OI zKafJ0`4oWtEW;R0`9Msjd77DaHCY!uRnC84=qx5Pf4o1Wg&N2#@z9@B;=-}DXB0CM z+PG%^cn(TF)C#=;pAhA8+Yw8UUH}*H{oiJ^K195;Gtx4;O&i<#(8b+pe0QPva;=}3 z7@D9Ss1WA$vbt`R&05xBRJ7G1C|i;cRR3T+Rv|T}UibF#PgF*mNC-R?<7LI(UjYxO z+iPxl7{I3j8-Lg~sqlUjHxQu+y z5K!QwM2{X8$a$$=oo| z>*w_L4tx`iQ2yB%e+|9Bm(vE^U`A|q%;aYK-LuUX!Nu$EO+xmytNXP^brpWh6$E&y z2v_&t*+s!rk(|}*<=>HB&+gM~{3Q0Uke?xoCz z{qNoMZnyOghl|T=yKNVgS=I-3+YQF)oerA#`i>^dE9Tqr?yoH&aRJLKUrlH;Fv0=F zAA)Qc($VQpoW726g=oBq44ZI35^!!*8+OVE+=jifZez~pRm$E+ylBQ{h4UP~az4_w zDl2!vJ&Oq@Sq2S4svft-kAsplLz|pG72WRE-VxE!wNCn$SBM&E(tjYXlSccGy{90P zx5J)|-0j5m;MqBe5th2`+-}#KLo~7(ihFS}%erqPx<3ljW=KIj7xjiR_IoC*Y>Vg2 ze0YRQ$IA`wxqL4ava)#a;7N>P&W+5~Z&gSEP^t-i&ShAB4(H^fiP|)9Las7d{@!T~ zYVd9A4SE48YqdMCU}07Qzn>GkF?V*?rSbk7Cga&PbH!jX2kxgAWFBbV`P1s1<{ur()HjertD$ZCL@# zd_sDI83I+uyDxrATwl3$vv}OO2w6ACKIzyApq@K@9urIbM7&~ga1ZApS0sm<}7VPXHu6KL#kH5W_ zi3O|Gs#F4TneE4M|FSL(#S&b%9+xCOX1cS=K&0{k1=m(vOc`aZya2d%!IirRUQqI- z+RxhlUQr*6K^d$L(9hVeWp61y@lpu8!uVo%LfP+qhDzLRlTM3D5t_k3H}bnG0W(~t zJv9T-c+zyoxmcjCBopT$9mKrwhTC=WCkA;2G`BZza6fQ5ggeLBKjQj-Jbi^<6zv!9 zQc?nnAR-OYlF|*5A}t}XAR;0qvA_z;(nyzpbVy4|!xAe>H%oVStmM*r=l$K!y??;Y z%+5UXoO8Z49Ss4tZAY$L89rzvY^#fNhX>Rppu$wz)JI(1`d08i z>|L*$3x0jP&EV~msss#%m3WAx{}7E3?Oebq56H)W>cKiMPkX7Fetl#IZ;M^=0W{r1 zp4Lx9p<)6e{vFCcbFLfjTAGPRG0NFV@m8*rE9ULtNow9O2N@+U-eSy|L_aQ1H>pnBq3wd-~O$_AsQNF&2Go2IVnh; zKd0eLE(gYFMNPuT&pPnxWbYE_3}<=g?cZM)uOi&0PSdtssVC1o{&D$Y*01)m(g+MAfbwVbUU{E>9?@$Z~}n~xzRa`1MBwAI#} z3`(MNW#=(08lpFud(AKeuCM3KXg1-%TVB7nKmDE`TZFaezd~a_@JMYN?eXvWHs-~ZWaUp%DAWGkq9Ed*Uj&zHVnk9Bq%0;v?;{`1@D?{AE#k&FqWjeoojyA zubzxkPwNS~bWf_YR7Bw+Sq*yVY2p2qZwyD9$wD*@CFHNpc*+e0PIM)6_Hkt0($%KK zaJ_Y!W<8^S9*+EK+>u;x(~`&F#m?_INf>X;caD3~N;ZUxOFzgPZfTUbzX=2YWUJjk z%NyEuuc0YIrM~@&!lOLfhTNv&<`7^9E_7nJdeP;^WvSX`Q1Y>VeewW>X z9b4c;(d{;hFzKuJN*%At&Xsjk)G4xx&ZV4dz3v;9F;wC~DaWOAMN5GZa*^<~!Rc^b zMIC*~grkPH)?rgXzLU_v1E7=d?xHUtEpXpm$5Cxk{x=ztiR~^5_utSOUn2scI%d<< zs~*`c6`HZatzeYVL|J&-#;g`M(H0_1aClRw*2t3Dfysk0%w7CkF%$zJlUlPH=`gh1 zI{ksIIT3zr6{BqT8!K%|80I zH~-qhnBW#*nb&hR6HB(=F4DC6+LvE43EUY-R4v$=e$KVw7r778|)tICsOLM^_0X|Ub^XrOA*TBHz<{C+er*6H{R~7 z=KK>rF>!?|&@?rP&9VmgTE=&IcjodJ$*@-RgAoLv;WJ;~{OhYwK-&rYsc?PiW}Yqn zxv{e^Ub7K=eg2JBk5HF2rf)`VuP#ogrZUZ(2#Q<|A>ti}6l_aLqTBzZa|A3W9I5{U zbqQoqOt_((t0Y8aYQvSyNQlEn(}iw8xaa$?1OD?#V9^Hqto|T%2*h*_Q0E=&%f=U# zPv_R26?yFOM#_%bQk(U{Nwy~UhJd|tr*+z`k7obOXfo$7+TVgoa)DuYd)Y8Tf%Ux{OWf2hbO#Tyb_quc>Xl?FG&JtfRU`vGM3XjZ5NbJuOf(+ zBe`f;P>6%1jjZj(+NNd`XhkITBYq(e>gkB|WW|iCeT?+jmIJdlm_oAv zLn%xwS^NaFLB4I|AVhvp6v22I+de-tG;2!xG}(EUO-2ha&zqO;4+`7~QX8I74*HDj z6B?^Z-P{Kq7uFVeePfX<-9zQw$=H?Wgl2b-&du-ne1cG9{e^eEUug0@?*#&7NT9Vt zK|q8Gfc1ZXZ2h;{7qISbHF_5==g6Ysb(T{640yhF?I;Cu)D~HldqD;8k(L!-|Ac$G zyG*Fyt!w{iI`7F`%T^B<*{xLC&4?*k};CiryygJ%~_rAb;{i5 z^=Oh)l&yvN{u%xm3gK=zKF0q_{P*(cj$iB!>&p&}Q;qs22d<0>1jKL{vI>{eh>!UH z6~KOQkoa1?d+xa%DObH^f2E7S5$7Rk=r4A~^7ADUTp$le6vQ9hZcf#QCihJ?Cx16y z{g}@gXXHi5&mBMOA-|)YH~41d8dIIYB9X$+_zw;aLgn-F8k)qvUpL9Y>{{y$BIhkC zZHQ;lGSLX~e=}kC2~Tr-V7S#2X>=tyu`Z2grgqiREV4)uAFY?uRFnOq`W2Bl1qUei zG51Rm^r*!Z!z@7F0}ARxGRL3yPR;G$Q1kM&*}bNf?|<5c`FGwcnTB?&9O(A+waq*( zUwqL||KF~IfM_}D>@A)(%SXA3Ye!g>ThbzvIhw>(o7i5i&i_pF)N_#$PXi0wcG>+l zp$aajH4?Pa!2!2l{->@n=mCRk^)4#1y#sz`>(lva{q;vI-W@i!{4NM^`O9Dtj8|PI zLd0L;=^8>Aa*WaytP^vH{59FxE%hK=??uU8mRlBLH4s}L2 z9Wt~EfCovGPIx;ZyN7rw&{Q4I*Y@dW-le7T&y4`r$3j!5Zc8m|4x1s4>@nSUr^$H~ zaf=e7RCbeEWc=_hi1Sd(L-f(Pl_|B;!fDnga23b>?1Hxh<-FR9LniWdx@U%l7D>mD zp~~Jj%(2oL4#*RshU!E5ZDPZI(I2uEb(>q}4}%jTW1V`92reQj=}zXdl`DoAFt($* z%~Qy$hRr-zQEtgQv41MK&ymLE|dzOvw{DOxTq zzjd+$hf8_VG7G``&Y}T|c83P2zypoaci#>I=}{`N=Sa(CcTn~pDi#KbI`qOx%2?}= zsM-5@h6V`+eBuvDB}4XPu|c>Ows(->!strxp%gOb=Icekcl0gmYh1CI>H&zd1 zb*sr24oI0YMq=9zREu7&nd{`y@se$#3Fa5;Bz8B5=6Wlr&#P*$-5!q2*bnLe2lX!g?*@MJ zrP&l4gfb2h0v7P;s8Y$_zcr%Xp3RvQ)!RbQn1>qUv7yJGjiTY7#uj@!zs4GgqH^c%UPew-MLp&*;T~C=Fke zXlDvvR$e+=?46xUg`*TDVmUJ$xaj@Y44924<~>RqN=q)ol@KMdX&|(4z5^Jc11nJb znPvOdsAPLqpD&U|&wIydaa7$}p+QR1rnxQ!t3Kf5CijV_!XNkIGvqZ*vB2Uq?BeU|(;#$Koz=1-arQS@w(=d$Wo@b-$K{Rd(Ci<#fXG)5Q zb}L!=0PYwOm~n;VCTpqOu!o+mB^dgTIeXQ9&&cCf299$1;nRphrz|Ok*9rU~?gvS2 ze$ze5mU&e`8%ZZ>O~c4BJg~S&d4#D5fr^+*l$ZHQs7;ix>|YgQm;`qm>nS7N0$Dr; zqGw7cqm@g7Oi)ir*u4B*)mY0_UxZ8SDd6qw4^aKsdUZ?!nQ94rPr7Ayb$|X0HVP% zilQ}e7#PAtOKvZ(9{)(fP3gs zYj=H_$H`MpMNQ$Z5BpaoC0hs1Du}%V`D@IelMf}E6An22!$9~=xBZO?&$bQ84xSv$ z!Uc6BUBm)jG-(rdyluTH`APrj!_a?JXscf{a|`pv?DQPc{y)D=n)Q$0t+!a;AI6xS z`Id=&v!+?VM9F?1jo{J~^5JrRewuASY8T~8alq$J0xey3d6Va)*yrh$-CsYI_9AKV z-92^H5V+nz7>|>pI#OWw_S(oOtt3)l-H`N3HtUMo4Ht!1cKj)$HT zxXjiVR$O_5v(Sl{mUxMXX;tz9pTrIpSzb^5!%kvq?(WMhrL5T6V&J7yUtacgMH*5; z8H;d@W{Hl|!aIp|Q$bG|*z!&*gnhqaun<|(Xau(-t{x{aCwm$Ou zoAQ_MK+eeFuiX+nYUZfz);dY)Dobx|U~%~)^|;h|h*eA5<AoKaS)Uj|*0r!$@5?K97#Wm>K$&oxzKtS)@CN$>u$=*wS1a?2Kdrm^-Jq(pjVomvA&H3%quMl z?J_Y=LefFqw=OHIF5v5b0>kf`9>w^*hY#7ZEj5S~ENsCuL|0nf!h}k*YJdpUPX`aN zlg4+mJ}yT|t!JUekVU+p!%&=ugWj2?)G$XAt~|3C;FdsF_KL0f+cC=aUk; zqCdtxV`w0n#$)(NzKy6|_yjplE+p;>K20zQb;# zB=kg3-8m9UDhe)M_&2il|6<;X+?pjjwtym9SmXAtlDCm$YwWW|_i%AvNuc@Od+|q$ zng(bXC92M2A$X~c^6RnN=Q$&dJn*pg?zJDv&gJyniDY+0IGowXlTqZO+8n21oA{fi zspHt^kr%MKC@3?Eex$rBV|zW;KdU^BKQi0YezF|CB=fI_VI?2>+n8iM_FlV>-Gh;} zZ<8*JS@>iVKU~BEC5oTQ9DkM9bdpGZ$-uBuZ?|!2 zLHMT*ur4wwNs-evS~~zp4NrK<>mqI#I~;rW+yrZy-@G^s zD28AP*)(T&fc2X;xI?4GjX3l)Xm4)NZ+~&^=BQ3K$u!ikpd}xOJ|lN7?thsuE8bnZ z*it*}H7md5e)JhrE#7w}Tek^Lx&~av``IyZv%g?_18E-`-b6k{$$MC_NnJJoU z;&Zf}R|4^szr|?`rk%K-v!-H_zm9X)PMNAccc{CgaKsb2$sM#Nwu^qCe-WNm{N1bCj)OD!;o z;XlD{aJk}=@?B3!JGpSVgmJ5aE&m(+-!f?9VPz6FyZJs%Gk3d6cViZ?!9TF0;Z_7s zvuN_aHdU|UR`6We*(AU~BD+R|YKG5(+nm?$Mk-PWAGBvH{P0|D(mMIu#~z0des*;t zaOdG@RvhvpM`DRZb1u|S^cmz~ouI;D_x^>V0>#u1%vDDVU#mO>xtcYeCyaV$GVA&J zZx8?7l9x`Nk5sN!pZ!`-d%@VZi$cKH<|}mJ=9_q3!t(-%A^EZ)Gg8zj(8^;BIJi5{ z;kAnmfFfyAUaQ>3pS~~mji?{Mf>i-zb?8aN%3ooRn_5Pnr9ROrkLipk(|u9Smzu7{ z`CG;l-=nQyp3cQrWv`r;e0OeAfebGfeN5;M><-Z=c$fRf`^4q;Bwq<8inpq(jkJ8s zo$o+#$|>m$ED3B>)wF#%pyg;M=1Z7|3;k*nYjJS{Drgm)qWl^RIINz0-z}PS8+k}) z*pIxMxE@4L)puUQ42&JR<~^-HHV{X`Xz#NyaFUgRGdB&&`(be8u1o;nur zECVJS>uW}mt&;p2F$UKWl^nocVX|*{B8YDef7_U3`kgQ>Ny<^g3d|tpx_>j05NF|W z6tbU`^)fUNlU+}+S6*B3QpZ4DUMjKlRn}w$!H419Po+HBfDwF;zIDyKsj;^0>Pjb? zmVrJSOizZzLwuXaD8@`ZgVv89#m;&dYQ;Lx)qi7{gQl_%BJa<|ImkmRByXd}BrksD z>Q=ZgLMLQoB*_9V0aG#r;&}E}c0EG#HMXWZG<)GHW8~McTvvyjx_0)oOOD)u7TlJrLvPjUO{6(ehDic1@!I8SxK9YM zcLWB9unHahrA8p-p<54aW=|H9UCRL!!TdVByNXx~p_ zowXjO(6?#hhx&GrwZKMaeLb-3tSV=h{_E&ry;<|>UI>fL+oK`m)3I~aOQf^i$Xw&F z&E6N*W)Yz40MqYOytHjyOuHs=eb84Ye|%6l!VW)mhMT#RZb@7+jX)W8b$TF>L>*n;+sWhn{gdUE;czDwUhC_#p8w~FPAmY! zjM~5;`R|ACl{34a_wEUi{ue>)uChcmZ?AoXtpK-FJj>5E{YIwh9se|MUXPmQLQC-j z5DB$;%ACSg++7aH(NE5nJ%J3F!T<6?0FBf?*5xOrkAHZcyM0~||1ztxg2wg!N4NuI zYlTf}!G5B@93~G1A{ZTjU?g|J^`3f2E*aH?T+dt5?SgF1ia5EFCw*$#tMJg%*+=C# z&FrB+%n6JPdky(2_d3C6*y|`IDRg~;G~Z8W8Q(YM7WtZN*{5Q!e>_dXz2%IdC^~fL zFL1jbeg)Y4tuC&xGcY>l(!Li<80zMbdvz$s><$+kRI^B45 zgiqLrLQcS8T=O05fIzFJ8CHn_!_a3(*M@x1pt1!Aa_6K#Fgbw0b_BUO68U6fR))yGsfcD|$Ak;$Y00-U8 zNrDS6>6{bsMvtZ>32EjkV3(p^mWobLq3ro+w`F>t?RL;PZyK2Jwxbblg&u1)UgC#9 zhpk*}o02Uv@$qgm5PPnBi$bdk^mdH8JX1kMsZP@?oYNN{o#P%qXPD1E?)YeC+O5pJpOw=#H8<(y*D@6x znL^Q}gudlhKWSuto3m$A(7K)8^Nd%K>%F1hZQbQ}%_JT@qS|85F8WZ+c z>-#@4@;GgGPhXrJ4zFkHy$c;!JukbhxV#mxjJat&yJ5lOm7YF-nJl5>Kvq|-Zk*_| z*bR5JkWX?TMTNXF^PGcklxgGz!Q^Sq{e*lKMD0t}RMwzg)>FL`P`L?nj5{L5M(JMf z%esORyoKx7Shdf%qEBx3V&uK9^=npZvU62s3%1SoWE{qZsi|?ZmK{v$WU?3V$P@C5 zvInOklM~>3V(&!K9y;!gV9@`9x5;)Gk_AO~t{R?_W=yjTo=(qwFHp^(vG1p57wG)Q zM>6S!tZBA^sPP&vH@%tg7%7-|s(sk2O8Pu43@U$}ZFqT`-O?(FzKYS+Av~tPI5KcD ze7MSfJLk44zyI|i1!EfL+}1bPBty< zpKxqU^o8ld>Z!5aoF|9qIGJ_PU!#vUD7PjQhFNSvdIs+A|5P6LVSax6F_d@C?}OaG zb;QVZLDhn(5S0prK5T+RE8A<5HCXaPWO?kh-66kJ1M@h9m~xYH-70hX;STMC?dnL!H8XAw}zzNuGO%RRLv15vFN`O&0~nC}q}P6$2T zi0+C_)J*BNqt&*CO3I?vSVlZ>jvWt)QW>5azREp_YDJ*{8<;V?py@2dNeqhYpjlCBDf0r5qnZ>N`_XgkTxyd&ME{}Kn zsqZ^!_v|R-cPr%Vz4sdO#D+J(pELCap6c2CEnfMul%aYOK9@d7mi11pEIFAu zV%7}?E>{-RXlc=Mv=eNRZ zgmE7|<+Y^trou@67Uzb%YW}p@cDf8RK z!P41jXK`FM;P>Wc^r$I79%_xd^;*=2y*7^0QxRQVxnQkoA(r{*yBn3F@iW;|nT^lZ zU1Ea1AiK?NIqP~^n}K+^&8?_S_ILk_9(f`qk&7ss~-b9D3s55BhtK0<#! z-3gO@yDd)kA*ivi=UmNc?t`G3dut;z`eMWRM9;0&Xl&bw>)CkXc@$2;Tp4uIPW~`iatbq;n)LJWX9na|`Q<{4`96V{ zzp&f0altHiwjR%)AKpehHY_YN_2nR`D87xSvAAD{%-xRryuQjWj`=k%{seNn5XGcm zv@N}&=Fdi%5@eNm%t&Zeam-X_lPJhkCTbnb3fIaon<_BOsXVoqoH>*~(1cpeC+fv` zKXRF00?GHRZt3}fzs0@13KuCL!R-7iq?e-M7xeV^IK?(-`13yH z*K31f?rxUY9|n7gyeU2XAQ9{TOV7Q!sye_a?YbpBI@N;#IHO8m#`z-nL3X(-^(Jt! zgqds^|5Ut{Bk7^{MYV}eKM^4KMI3AjwwrRdK^io>FT(^3qt=+e95g2r6(Wtw$8eFd*1vY{I^meiuxB)U13NMWKA%5^0hzo@Dws?hSv` zU&R5(6u-zS$GY=SHno#@3V#sata?~^HCwjr8|2KZ2iZ169b?WXRO~B++1${xLRTS z5-mQPUKWE)JOYCIFWsG!n#~`)b@K2l^q$KkaOHOrDfyPISs=r7^Fsc;1>KP|qu!dl zJm$0bX6@XmqS~a-R>2rROwPe{^3S9qBNZ&STc6k8RXe3+XPe`kZsqN(!%xNVy)W?*MiEA{hkm2A+>K}@jRX%cr{YyJ$`XcY>;Ih(3UAWzyCZ(F zQ3Fkhq~Xi&ntwR)9eLf#d9vDq!h{Vi1nWHSkA(15H07?zA6=yrxl0hviC{<_qEg-2 z*9bwjdb{UaN`Uk{C1vv#=QZ-HLuJYl#2Dm??<9!)O@_`I8>@ z3v#%yYvDJF7kp-zyweE$2T%D8tk~F zpHIjz^lzsSjois%wipwlQ>{5MPl30;%qx71G#;n;2b_^D6XVnwp*R}0{$>eY!nd4D zS+#RS^n8#0lpeE_QbOX$t@zoH+@(f|?2qiDpsk4r3DC^SzbI9R&uZex=R>#8--Qw# z=2$@LD;aKy0#au_(?_pot_njbH*1{#0TCI*G5vb^u>xVIHn(Qu?3tu%Zp;!*FDIDF z*19%BmV$LewhWfl#wSx2F$msWBeI~#qVQ}JPmYkx+2d_pvp>*D-zj>mmT_n08FME1 zU@%wRRzS7Q_coC9SQYy6N22$DYE7q#Z1-S(=3M!CQWYggLFhxh(O@FxcRVoC^Ck&~<~ z@DE>D;#4b^#J;cp*#O1ezb(V&!v6RnxhH*by|%wmzZcjOyz!jfhk(i z^2b1hJVAmYihb8ZThYBvKQjblAss$~wQZUwVvZ-MLSIIbb((k2P zOE2rMd2wGxuqM*+;cs+$E7rbrS7+w#e2Wn(jNPH$^m>WZSu#z6(0|cBb#MKsI(}Ig ze=PJ4hpT!1VtFaWwHadcs4rhD5GP0Klb(*<{KhLUof1L$t?L=O^zv9bNC)4y3Mx$h zSllinXTaiqtBh?kQh%PB9jBNoqUWsT%G;vYA>m6XN^hYG|J&7gsrHlj#Lre0C#ANv z2rf_u0c|IIx!2x{R!@7kfW(ze>-U|9FdtNrfdKZtOpWjOj_ zp4!IPcv3ZEm|Jm$V5L!W?cJ10-R=O+pW~rG6(d~P2I>HE&`PRscgmi;rFS3ffD8MU z%{7al76f#5FAEjh&e9tAG0J1# zyV(_TN`Xw^&}_lYB-?vX0g7O+HCAM|_vDuq=^@c;2U9U7`VQy+&~f=EPy1|}qL%-&X?DjOj6`9hSsoW#`6TnfeX0?n z-TfabX+b*JmR;5006``!r>3BPkaCT~s4#Cpg{i(ud-anAT>nqHiRQx(XnTJ8UA4qs zSEgp8V=y#4^!f|Uq-Lw?$qIf6fOT74!0m%E4~$-hbX?wiXFpL&;i-fmtW8qR_0{5p z?EQ%S{k>e^J~aNY4Vx9Oo`ycIGlRIdSSE~TZC6olr`J2}TU5Vmx`*QVkyjbAgO?V2MqbK_=?H7FH z#fiCA6C}Zs`QML#H}1N(Lp|niem*WpIp{`~TuL$__4?b*r2+d$kOrTsD=6+wVwdlF zh^1j`TMJS!`^#SUKPmq=kU~I&=8Ce1g7FfX`a*(b(FbUIq}Q4!uMFH7R7az~<4}mC-P| zOxS5|QoY0LfXgyNC-tu=0cbf;%4**c>Kz$sCI)pcw2{&09Knm%79j$a1n5u4dfbT_ zY478(sZOOv(pZED4hz=Fb`L~TEN1)33c`FXilM`wL_%%N51pb58$Q1-k;gVJH1%{` z<~DySzjve(uRd{dPJfOy7avNw`e|PCK*!=Tb?h*rxl&{7ONZhA{#rPzx)rvSbBG
%90&7&QY-OLdp4x6kqN4z3{I;IIQ5flG~{&*>btcJqdVc zO!lh+LhR|qtNv>$>b?07pPssfs;$cskr>VA1c=gvYwoC35OYv&i+rnlt-tT7j#Dg2 zL6pPZlA3wEM?p6)sv^4-JjNIXVJPAagM__^P$vIA$++A6_mSo`;>IZ*vvqY3sTqI| zTlmsNo68nBeqP6yF70MVpPu%FDZNgQ{*eKwCzp$m>uc`P--3Fz%jT=1ZeBhMrQ3xT zmuyQ{%$I^XHI|``$ry=Hi5g_747xPzCf+v6YlF5!N?8s6=Rszcgk|RBQFx7lvpBi- zp_@)cI)niDP{s%SL=3~bAC&V3b6`Ew%YpLiVdWWWJ$c^gN`42^7CFpsQ*Sd@?QBSx zbSq~+R{CDV+1si3dla4$h4qn!c8u8)q^B8s%5PlpFR~5czI_#xtWLqY2m1R^(H>Ufon`wf=Y=GJ ze|sD=#cb|TnSX8Wc2%%_#*Vb!2 zT;Aky&sN6n)O}(&O_pEy`XC!F0Ja5P`%5|3_oHSqP_tkf_GcV&wSf*q-+K4y zWN;E|_ChT915G^&M8)}!L!=7bX4bal^ykK&jbvub>j0xtFSo+0co5p_>@1MWPd5IZ zGv#u>{5AJU?_6?PWOtUOgS1B%m9|K*s*>n#)|RXCdzoTU;{!w~ZB|Eayf0A|?QGM=i%+Jnv zmiWR>yaH*q@tT0gHuN=8!U?lkQ~_C#nN%YOP_N2EH=Fin;5b4mO)J8%GzytZ@E)96 zF>88TEC0O9R@jo*UhUHEAPir90^cuj>HPW9)&4y!I_CV*-Yh*^8j;77$6(u-8G2Np zgD@1^b-66&G&kM!q1|ooc5Hm?3G=}xMZRr~tntLN04}9A0Ms3bJbur;|F;T?@#VkI zMSFHzU*7&*-O1GTv%|B3e0wD(<>ga|DCg;hQZ~#HZ;B$H3A|-ZTId99IGk}EHAFO!GZnPE_Ff}PRnNKHm z$xV!|4;FN$<#cdL19h(e)4;Khcl~&8c=k$d`Ci0%zS``@q&6K_58|EitCo($4#eTk zEjY8}L+M7QbjvtFedC$w8;O`0zBG z-#P+lKOOb_t-L+z$9t6S0#5&EhBo0D``_~^YiA(ieh$Jgd5+~L9^Ph-&_h{&1ww_W zWSvA_)0i2$H;<<30ii20h|65C%J><7v1_!0Z1e8Hjt9A*gzfIsb-0IGJ2i={xEQ<} zeNaK5ygQZ<^!Tl(%-W4uD$o~xQ*b`1CoB{AX1s%UUzhwUz444eA_XgX&_ zC1G4xuyG72*;kuI9dQ%2VY*G_>{WP-q#?4`)3@Ky@>l7iMa%){fp!`1nYj}9Y&EGb zvDfK{=3cRm4mr^J*YHn%5UrEdz+JHW%CiCjkz+<+p~tCQluH5e=^c&u-jBno3uT@o z<-O;3Uy|z8WsF$~ z`)|~#p zlL~$OKv}_}ZzdG?OT7D1#wB3fg)SgH!FpW|%9Q@z`SPLx;$CmLTKUzb?t-h23L7Ku zqaQobzwK1#U<>4*Z7H8IQcyaj-<$tTE^~C6Gc*^msKGow*d&bILSU|K?j_Q_iG3%; zj-7?Dp0KvaE6RF})ty*R6y0FdV&9_8`jy`9rq)85JxxZkCeC7XnxUN-Jhl& zZ7J_3JYXHh?=hCQlLsqucC4I|8w1xn6lIv`nw@WtDX11GyhSlId-V^c3Qqh!5lr1z zkQ`-AxnT%A#ki&QaYvhSxG9fW3){L@N;{u)T>g#vP>qim zCH}$!kP}(hrlD)E&C@@_c|(%fc2uXg-37?)??r!RvMCA*pFzPYU&%}3XIn^QmI+M*~3zWpB?w9Ohvx9v8h1huP4%^{k=L3P=@`mi$~a4G37 z5HW50)Wq{)e&$P?or{Tc6VlVn81lm}iurWO+n4jPoUqkOt;DIav%54Pgo#?R58!Be53+mwQMs z?Giz-V76zqR(@!WqHK8y?dm+AgRz2j5ySr_?hhRLwD70 zEYDZ+ej){5gsLvI;=4UYD2Q1xs`AJ#|TuIG+(`jg3QeG z#y9?)HR7W0sWb79LWn1y=X(R|M0pgns`iefh@jT3*89x|<9lw+^@5Wdt4W`BhwOfe zO=C;~W9k-6>P`EX%D|Ng$FuhIwLNg`b3fDYiU($LhAUF&mXJ!U#+u02*?KUP3W_ZK=`HmgGmDp z@2wGTC`HQCkUdyWYUGgiy_}nl4)M+|mCJ%r-xI!C_T6jSir`9S(+38T2>UTxpB$O9 z9m;QNnAKxOY95BLoI@XAGMIXiMs(UzBPL<-JS(gOd6%X>TZZ%A-037S_YlRQ^WNfm zHjU=h{nDi`V|B)zAAQU_o0hWTh`gVsV#dg{AH4(lH&Tul^>6FNqqB%)Tk(>it?~>E z^tI!}e)J4_;~9vP+W%p3^?YxC&3pUJny3Wr`q@10{-UH|*$AnS;O#jvJC)rNu=tWR zmOCnNXYEjie--ODeJH~iCl{85r|>vM|6iZ(ER6rp)8oa!#>9a9tnden(b?9tN^OT3 z-|e|6w+U)@t4DxYPJxkt()h(8a&G^!sC#%vk9j%5$2JFPo+S_MJevr~0KVRZ#lRt3JMt!;hx(wwsg@J{yD{ zzi&hTX7Qdd4r^J?5?P4?4QJOV2^>9JqO(rhlqNov$Zt{ugb9syax`AEhi`RKENAZ6 zO5xP-KM#mODE}-QP2_%&soKUVV@mhRKRKD`$eRJYP`4nD#rmlD*F_4$P5aLki6+?8 zLl|EZ@$@l%A;4#~002Rw3oNH#5uNH6!nHE4-7tinZI{f@!++}dSAR+e+L`Wvl~vGW zJT?ff+oEg3tf_b5pgL=v%*yk&YLbP0L2<03!hO*9#>4KCt!msTY7Mn~3fXfWViy-z z=g$CKi2~rtq|w)@3QM(4)5J}v4V8&s{2B@C!}kslb9ShoiQjhkBVeTCuhBTy*j;(C&pBx6b9B?m zkQ#J*w|(?&aSfvuvw?*R{l|M34yEX?zHi^o{rZ9F@;8ZgHQp--+V@<(9AkWovBVy1 z9Y;zgDes(Bv<`Pp?^SNFs?!R8HGqlIJ*~990Wr4%@(~68l0>Mow_Oi~0{_K#3sBn4 z;+|6}ZSN`ZskT`FW7w&Evv!c|Sr$>%!|hj0-_@D8+WtsE{Z6|mk~bjSowVizyQ12- z3p6_imwWm8T%~JB>=JhUM$Wr%r7~XbquFE@X~rB5^BHSl+%bPLR1L2NqKwdQvUx?= zi8LEWjQ!|X4w&rJ+5={V^(TYvwDG^K7dNU;xUYV2S_Ds+N*rktsaX9n=|js9q$9@WnS)5MWK)cKLUSqe}VK{=&-U>nlyFx%PDv!USj@b#lvlX?P?Kdf!O zzm`VZNk#l0*&sETg{S7C&cBBJ5MD=XWS+OpfSex+kM_SJ3btpjc*uvVd1PWq%k3o!aVUVYLBgiC0Sh_5$nn)g-O}i_c(r#m%SrlCKd z;5X{MI&T!#OZ57n7NxL|!Q1rY-h(H^h#W3&NfkuYy(!mwMrM*M>9Is2^>at?eC;7>Ym67F`qKl#T{f2&0>+ZTLnq1D_gWwLu!UuRE}7yj($tHxC_&ZFP&TJu)djE; z{SylTgiku%iQPFXRdctwzi^ogw@XD-5EbH^WayGM{EBLEd`hGA&@mc+Sd!^sQz=Hx z?!fXcaw0w)Vneb#pXHmldADkN*LMl0Qc(kL_V+mTY-r8(H8YA(Et2^av>`v9%Nv1@ zNYFC}0{tPI2LATWVEfUv4^PBR{LWaM7ZFnYf$hL!#c&~faPC&j_ShsDTXhlxEvMjk zqbCEuY}<2tl&{*sQJkO;gpx6u#cC|5ofy508O=;j&WJ45|HjHD^l!x>9}-=v1+j@% z`iJ@sET2*r0XD+LJPQ9h?=>lnF*I||upcXS92Fhju$YLvW07uY`t;Tp;=Aa`Oo9)Z zQPNxFQkGf}x|f%BZB@r>@4KB ze?Zz=$+}Gw%V53fw+uJDy>DMvXJgQqA7>ic8UEZw(W(5>+A@1*$8GrgWhVqVV9Be+ z)YfM%a-93EvfS@t()zOJvK@n9yLB{8Nj;vCUwdZzKm|47>vXDky`Md{nCFJ}wB{H- z&&sBGQ3#47+bz1{n>IHq%9QyyP=$#~70VWqwe_Kk^4glZgGLdoWdq_c>!|mC2oV49 zy=yS2Pc>+!82SQHy@=pxf;!R7i*w`h^JKxh?Pw;kxTceqU+Pdm%ec3t2d*f zz^97*{wywUTWG^xJ-E9q64;J-QNy2Y@urxU*Sfzjc@SB4+je=4gpHRtS^-N?aBUI$ z;@dt*y+Yl2delmlq0aJxSQ){QLQdWS0;N*zP;SeHM%$(QO}V$-ynf15)?fS--QsTA z%!z_TeNbF_cJ@2@xk=j)?5$lh*2c2AJN>uL7Ku8sGaOznc{wR< zPv@&Y7=Bt4eb>j*Gu&*1bWf(OiL<#b z10+4Z5CAqxpJf#PtEeI~9#ecTo*YEWT5_JCC)rsC4ZZ{8+PU|< zB&bxdfI>~I2$swD#9$VInhxUI6*D5`j z1ioF%xrdWkp7%UgPV zt-7C5_kU>m>aeK3@9U991nH1&5Ts)Ohfa}}E|L1s(gM;TT}nweCa_$kMJM&S$n%+zLKKss@{O{pr5O;BC<$HoQW19z{yeNF6#H;V5#y+Y_X=Aq?U&$ z&-24hirBRZjWuLB;$>ZmVp71#Wp-TW^d&qCHYpKsVtlk5xI*bGbt2XAdrYcRr9t}4 zcdsaF(*SY$*Ss4KfuLO^LTEmI=1uSZ$5hbSdvwd6FCIOJyCBuhKHJM9_u3CRKhHOp zo>rt-XFelU{*Fy2TXrCOSL9`jS3= zwdXE@XK6|FtB1zzRw*lzHzf(b9rikNu6IPznN#C$$c4j05TsqiHs-G!v z7=67bJ*#<|SQ8l!jr34RNPC-OTdK(=VNL!bxPd7!?Wp1A=J0XKKFW4>zNVR3#4AvR z0*Tj_M!?pk84L2nZfn_pX151T zF^uO55_lqO>95(mHKLP0-jkJG^G5y}g)D6?#jq=kH#ZPqqYMGNZ&wx<_ReylLxIjV*~v;1UwT{Er!yzH z$5AI{bT!MlWmaDD=}cQ2k;#ug-?TT!A!f>ME4ggF_6H0~9O^W3$ATW6Qqqx1l_Z&3TD8NTjNVg({4kx6@39e8N7zt_f(J7p)pJS*RW~ z`7yV1YL?R%xWfvzyplOyNKr14aG%K}5_U#&_3mMZ)37y_M#u{_Nwn*yr;-P!E4gIZ z2_?U#KyG@4k1C$n?xQxf1=)XwDvRoe84QKVEkC+khmz7APj@&X?CfG8?^b=Dz&^B8 zpJ{_ov>>*~p{7{bceYR#Y^+{R{GdI(djX5iV|gZ#;2I>>hD`mvei24 z&*2SPi$04SX%RT8L`H%Yn@G*_c>9E>>$Ch}6dA`;sllx*O7i{-R zJ?tZS@!hY8bEn94T^5w)Q9Vj{R$~sO6&f-_+AjcKeA$>{X29x z^#*BjB4vI)`F{URtWvf3u@H!Z3!CN>0zR-4{1tVY+c~fErW(|}f6h=wMj?!VXdb8p zj8(s7fjv&D6jzJ#@GX{`ly81s!Sa1w!1ZAa27F)YNivZsZ^uBgUDgxTj^U7JCKUJ~ zxkts^eyZk_uU~#-pIn@LJWhXTwqL&-*mrH7M?gDzT@&z2!TnE!6mR)dOTp%c{Z?UK zAO`>G*KSw`5t{s^%W#tt?xrwuH5ln;! zow-j8*Kv<$u5Z`6>K^<63-+ir&Dilw-{_!>%f@Y^Q*18mB5@9sfIHrMg3UYW{t$Ffb@1HMN(nZz7)MM>ey4ZxHUXQ^X^)_hjV{ z*7Q~yt3OrRJ)K!2LW9A|96O2YjU|}Jd7n?^0bFR+qvK`}vhp^QQ#b*s(*)4z{TSmL zpBdF+7We!5@JqQDKUMf4o_ldk$5qGGg&QSJN_V5fY6)tiGHBHLWGJf zZ}y68LvX=2*ZoU6+vIRfhmYY5wOx{xbJKjiqmzynAaLxfyMHVq8r&XHejftKqj%vk zBLAq&?n|&C?Ya3GU5`^?VWC*plE%8IANo#?70unHVNoBCrTI&&g;8Ql3+sp-8B(ki zTW8L}1OQDS3i20$Z#QoF+dM5RR^=vGF~sHL?B9?OpQmVO8(Zwe9tD5qy~0bl5Z=}l z_idjM{jpbG%@&>G6WlKJmr<9^6(DYg!MgpOZuq(>H~gjG$|DDI{tpTJWKQIU93!7dk(lC_f!{Pm`$13YOD$hC z(B9?XnXI43ImQAX5>^lwou!{YYNF$e>*7OKA5Qd3?pK?}pZ2~79CN$uE17r&ZO!lL z4L;&Vm#7xi4v0LB&atl@M1Grq!H}0c6q4x06D_M0zGI=ILidlo(jwBf$L+E)ArQ?h z6^X`(6{W4c=lh*x#gOt*lcc`;1>eSWCckGu^)Cd^NKj7K@-3UqjXQyv_vL@o6CO@t zp(spk&26(;ZFuWr3b@uD7s|=|9!@Z+jaJIbpLspT^c}Uf6>Da`lP->qIa9-)0%iKflS_q$JtUVa>=2k>gQGKo|2>30YC=L-x_g0(X3a z0`89yQyFW{Bb-KGz_UoLFGM8DEhZN`F%`&WqCXFF?!CX+0RS)}PH(~;BWZ&#YFpJS zJ21>nGx8TlRmt8_9@s?heP0kW9CdyD@7}YnoN6@@x06PbBD>kZ$;~yMLTG8k<1e$o zc%lXE5H1y`%pn8~90g@{rvlOLxJ$Y#Ud`-YDAo5+UZz=zHnm*qkj5|k@rK2r`R@6o z&QG$WU6UBdsd%X>T~;~pZ~XH#%oiAQZe>)F@^1{r&j=OH2m>WMu1#XXpiV7RWUqw=^EJ_xDd zaE)5alk-2M?&!Pv#hp;4z1rsFDO1+SG|9z0zD?bQDiy!I-$)YXmUXLGzTC$=4sdx8 zh#cr<++5iJP)S(t%ztb7b!AYqWQM}{gXFGe$qOIdEZ)gx)eG_s^hfJkAAXscHN zjxSb#jOs7xVH`nQ9^{C>8!`xeCJvm9Rk)B+g3>HY$-rUJ=E~?uL{X$p(;U^tEf{ZI zaIGM&{@d2h#Hw*MV0)Y-L5)_N=vW3*98f?Ykl7PNTrBN_I1H1pFVl3V@|yw$o9aw$ zwG5MUN^Sv*Lks?n~F_4`YR@6k!D{cl2m|DG$*}cq9`u>dzH1fn!yX@YW+Shp74mRpDPq%E`5Md%?A=r55!ig#NS1Po zw0Dgz(&xmp5}XS#@Krjn+g@sNF`u%fL7o^_K1<)M$Xk(daz=oAM^;C6Wb<4(Ljnz^ z28Fd=643mPMuP+m3j}x*1QR6X!H;kjoEb++cqUV1l05TOGW<@Ra~(l zkgq*#Apnh4(6!5nfV=njJe9wo$527yRt%m(9C2QXaIx7fYH| zuVkK1yeeA2wRhipkp%8Hh)~Y}b8q#KI<#p)>({b9W7}@PyrE{DkL({wMS+G2w~w|; zul-rbi<=kW&2p`pY>`GdkL~GZP5?+tW)bvF7T;qI{adb~c}DIE!>r#=>@z|Al;%Ri zh}LwGEEFD^6w3>u7`QQos7jF(!bwlnT_V6{_{7`R{R)r)xsaqEXZmFSd#bsk3`6)b z^UReE4*az%nfR}k8Jzb4No4CIlmGiWgrkvcz4sdf!RYhW2Jup#@1&KPNwICpsAG9} z4bANQF7J`F!laXN0xQ)_{$kO&>hzd&o<3PNdJ5_|c?&m%EO^C^YdpLF3Bt0`85{^C zssLD@q5Xsw_|L zdnwO?aO|r!&ChbE(Co-j}?Ym2$ zj$DP_G1tT9nc8MZw!{NREY4Dp(_Nz#J2mX%PS6^PU^8b69(w#IGzv}-eT*l{l~3w; zhCkp2w*%L)50b2%Zezp893jAPHC-o+%NWxbavPjLFZWzJojZiB{&H_o+Ac@Y-tSP0 z^cp{tmNl}5ZM?qh(=hYLjc`U6QYBhn!*M3d@UZ6pP8u$sy5>kA-~;1txT04aYuC5d zVdvt<8LDirXV4(hhE)1|9+~^Nhi;j01ze{V{fBuvW=yT)giw;RgZ0cE|*Y{2;mv9fCs) zjrLtvXEO|;_JZC9Lnm}}1J=jnt~;l>i2+xjg=4e{=y7m8%i8xxNIsGK`arz^bKz~##0)FO}>txf)pKcg=Iff$e! zRRYwPN$+B=E*cZ^xz`h|7~Vr9^odd!^H5vmi%Taw}Erp?We|n25XkAn%KYmb3`w3F79ZD z{Uln&#A`x+E??CBRUsm$EcLI6Az?vWyo+c%!%{u$cUvRdkptco1jTjF7 zOQ9&##iyI{FflD^5JH+sZ?3!i9N)u+DD7@v+02A+Q8}vF{88!H+7HQhuQ-)B~08o$#NPmGP@*Q_d2lmMT~_D3%*v{`B7k zB6c;0le5HaC$88q3mnn?^uxfj=yz|++s*YA(kb?A zyG-nMTg)r}Ryhj>WcwH=yJT?wTa4-yh0x-=vp86SFJwKQ5^fw1g}ePsT)8no3u|6$ z)OZweI3Q5)-vu_z;_KskX@iy`X#VDX7`_IDP$T1u&18wi?B|c22B`oyFO@ql<3Wz9 z!UVu4{tM&?&1EF5of&0Uf*2wW*ArJ(sLn|DLZE@8UZVz#dgKpw_9NXzLgb(4$C;Fc zc}DTf5Zi7TmSkM=5&h(TV)j6Oy-4WvG3ACzdKG75Gbw~Y?cHuT* zO1MeJ$u(FY-OmA@#3a`?%2h-76Za3N`&E=-Hw}i^3;KxT(;pe#tk1Kskp?Nz9o&8W zf79cn^+{o>vL5>*H#?e4rmOepjgs0BYM0Eq=RjA$uB6L}p!ShWV+pEF?kzJqL|Or- zr-^AJ9WJxI&_WM@T^QRyAz-unSo9s+Y942)qUuJIR2(wJqQRbU$V z(<4!}Kk zMRL|U(lge=E0JMHyQMxT&ja@Y_t=$;2&qf9`H>8XS+O&&8wx&_kk9#y+WABLK|AHc zFfr-xn7-Uoi+KK{^va!|l3M(XpVyM++~*n(b#Ur?voEIH!8Zn%9;1plW>uI_0<33M zDhOm4Fv{dmh04t|Z&-&_Oe0v_JgSyipz-^A;qW6*PBGz5+bBzzZ{|#WL&7C~4dXDn zq7|UeQuSsR(1Y*|%Ah5AiPa;!wc2XvX!n4LgAbw0W=XEdNdfl)8DME+|HA&= z)zbRAhOXt3{e+VmnuuStT#2YHd-N*d-rPFhfOgoK2cfM8#B?G3vi8#IxVKVpVu(l z?Z@rXtLC4gu%zE_0WCG|k?|k>d$sR!0(C+O3}4CjNp*bC$`S!@8dNbpm7S3=nUz09 z-Z-`}n2ix6P5+?OmjiH}LGZ;H>^#5!SY7>l_{9`Ta>~%wfe+aWi7;H_Ab9id~lhx#|PIjSa4h6d{!FTB#;OWNUt6e zAXs@4B^W(acZa1Ti2u$3^2dEta5(`LDzQq0DId7!tRh49+Kl z6`Mbz?7h46fy&b7h`U%F!#CDv-r5#WIR5t+Oo#7G$Cb510Nk zU9w8i(uz0>DA|&*XmjwMl;lENwoMxvm7lnK8Dcpe2l^%;)?pk=(Et5Ip7T>M5@I!D z7YiCoAv9>q{aZcRvUzuQk5%UKb+O9RRmVNH$9|RxY4rfYF#e(U&Oex(mV%S_Kr|kl zq4nvU!--1V$(00|ue0Q!!6S%uz zAeliF4f)is&E2c@3YHo?Mb3X8V4*qy?wa15^fGi`;%h;(r|Xosi-UX~dm5;F{QHmyHGKFFMAT8*)1({J z!$-C2RF=MQDph5ylhgQx5&kRa!%Ppw2{M>DefRqPJ%v1S2ha6pR84%bN|wQvlM9PV z8QA=L2RZghuYo}_RD3&QqiufDS10vq7;lx|=4?ovgea&+$C5Yw6=EfOjpM?fA6B{f zRbu=Veh<;vK0EO?ZH}@zZMPdW#sy(r^X_v{-eK^g$%Kl*aR-33#PxW(Ejlj~JuDLSc1(+C_TyD={f+dq&hByP9A|!Lw5U zRg))HnL9|*AP{Su`*W&>E&kKqbp&*m;847bs`naeR4~DGC^>Fps zlW5Sc-!7PVvE6yP8PXk@5pgVcLY-i`=OOFEHDOW5C*k4YPssFcLZ8 z`G5r?-KR>{xJU?>|l&y6r=Z|R1)i^u1F|ViO z55@#yQFFBmrLH2lcfz9g;(+s1(6JI7pMg2Q+J$xi?%a|55*cn zbA!PaaR-1HcD~heEZn~LjQ+(7*pKZ#_x+b|g!og>f>}vkEfMe1+~=%(_;I^sywPWo z7Wa`T?vbeDY1=S8LH;!s`7$y@L|xQ8F+L zkaQrRU`ea{5J;HBJoz}p32(ogyU9H{lmB7Cr)aio&IMO@bWQ;D_{G$)u`ODJnTuaV z^u)1=4B?eN3aZYsals)!CO3z|O416_o+zlPq)Kt6UEZ;cO(8-xru((+T!y$k?T*Z& zuow*4cyugU!Aq!-HP&>CclYC@)^+TYwvD&OlAkMcKM0&_S;5LI_30fU`Qn-im5%bI z>`-2f1;mp&bNJliK0o=FZf?LzHk)Jj$XfYI#r!dtal8{V#cgZ;#l6rM%Y{ZyW1a&) zgiWy(;YbhvEY$(Dm$1OL^-h7wAKust!)&KK_xP)5UZ;_7?rJlEVPNB$TJfv^AV_8P zA9aKqOz))|we9h{I2w^W70GxI!9%6n5T6BCaf#sgQQu3k-L^3%G2y=3&hcG?5E+Vh zjEI%X)>;>Bx3}l{_)Qul+jbwcHL?KaJ?e6$HM7h&RZF77-&C)KO(5D#J~kd`9TbP3 zTUrh@BDoy}Mjce2#hvr5Tadx@f140_1eIyxsyml^mS|9VtX8_28p!26pQdrJX~%lR5JtFbqK?pi4BI-*=WNn)-I>4)oVP2RHe-zKOw0(u}n|E*MuJiEUQ9 zpexJ6AHUBhgo!xq6}hy}Pgp@{Mxn}wDi6#b`nE2@TQ^aJyFtkCl`UPDA2s*vsIV-hF6dOkB=w`EMog< zBb%w+^KKK%cv`*^#B0LBqa>)+CV6Jl2Yh;cZ@PYtt8dJU zQ$-DC9@toKgdU|}H~}Hy5#l4$b}CkSF~d=lu#6CGuw<)r;3#xDUo>F7ykzq|?wucD zdG>V-bcvA{o>@!zQUv}Jn3em3goxS7y{CcrtIk>4ZS1IhIeQ>Uq8IP zUaL78Y+SLx0PzYD2W`OJW-#Yn@m-=jVgo7JM>x8c-cYgI%MQB-%}I*=0-bC20TnL5 z*mDiD%F~W5Aq(hJ+AFKMidJ;l(NqMgfN#W?F)rv72|-xfUmf+K8}Eulok&NSDmq@I zshEdL{F0EF%9v&J3x(zjV!?)BnJ}w-x7cEHp7Kw>&~c6h@Q!mT=O|?$5M`Qv_Jw*} z)@Xw3B=%s-Iy>upe~KO)R91!H4O%o=wBl%cFn9-T!S7>)+CGY=RBmqxk=_5g5(hhZ z6-bHKkun&NpdQzkr*F%z;~B;oeHl*^*>Us*GOCFXv)7~OEY9|d{HckK$*gt1j{-z+ z(Ao|SlqNvU$x59b^>092X>ukgeRD&_`tV1sXFYG^XOld0_#AD7%6UdvhqJ#EJSuFa zgS-kR&q(GZwFc8-W)sZwFH5(&e>~KUcWfF{tymh}ZcC&jqq9z~d}D&g_tIhXF!)WnQr1kK=h zMAC@SDN*YBONUG@_6gREcD-$F^rY;UMBEeapU##`6@!Cvvikq-$QM6eCn*i1K#KJd zyiz>EgxcqnVW$CPb1I<3Kg6>*#)>L1bQ9F39Kj|G5lVTJdBO1tVrscjEMC-huCv z&)$dm6gI*T*MFs7pgy@rSxN+TD63(#UH$K?*CA-M?^!1mVjA0iMU9awdTYA!q?=zDrk%z)$%IV4gPA<_V9-iXshaV%g z7l;rLge3_~DK7%M5PDZU5Yal$aSlW;D^R8w=}Rc78g*OnV+5K%Q!Jy*!c%ft=vfKH zhV}%(bpP8L$~7Yha4ELdg1PUX$nMn5U|O^bY@eku(yY-i)Sx;{TPw$<~8+~W|uCT{pnE||=EBPF!bkC}PHqP-MD0MGCCuU^M z2bVU>)0_46^XDly%6S@w^)&f(-R?U7hsbhuChiHI*N-4awy|GvT!49}4^#TIf1(pN zf6)~9Bt@%C>L>1^9_oZ&qpXqbMLLk6leA^>u;x|t4+ZupY6FbEGC8=9zKagQ=A;*hz( z6^eJ(ibS@}?evEY5x>21AX+O->!P%^XZ@ZV3-HU$YYg!g%}!WSid}=Fm<0$=zz)+5o85%df=Waxh~mPJt#y zv#4OeOO53>pu6NW9B&&t=)`$hrSrlR)`dC=tGXcMD7Z;x8w0u6=Y_Pq#C9H{_UUB) z@HWarjJy?^JjXSYI_B{`JHb@0<9xP#m)LO3Ho*YU(G<#lA z#qCHukR9%m_l!;=CEmzJrjp~PD}-TgskVC3va&bn;g_E`m>gu-?$f~jV3fU`Vt1Oa zQ`ftJIV7BbmfHUDE#gaLd`(Oo$&w!@RMhClni(gr5ua9r?5zUHIplfko~6z1$=rjM zKtPMT6OExY%EIQ@R^eicL_4SAzOLb&JkxDgm1amszeoH0a|^(%EM`547{<4Ks!#ZH z{j#kw;O3=Fq&}>-{XksG-b^rhhak_&^yQiGJS{iq;_rRqAQ=7ne}v(&OFsoi&q~{+ zKv6b>M77`*Ipe`52Ca5PE}c}>lJq?LWvi`$#+-xA_s?XZ`@C8KBWLv0)@&X8^ZH~0Vy8fbr|Ex8^O$Y)vJjC@P8P%Ow5WGo9_XaPnP@1tF0@-TO|7B!Hsz3D zhCCLP*oO9T-2mYdL5i@IzbK&?^HVnk#Ji(l_BjPF?iTZs56N|T0Zs)2623i&C6Za zmx*qHIos{?KfiwQ`)Zldh{^7KsgTN7%0+Z+DhxAp)}hpVqjW#n&&l^pSasAH)lr0Bz&^t6gGrkpr_Dl%}}u z9=h@}h3=fg1K9^i3C)EgrTG2Nf@#n+<%H-3*$aL&$m6KVl?}<2rh)V&J*m&?^4Ar7 zb3Zg29}+$xkmT9}+K$TES|*&=(czN}L`Ylqy5dNe;hMF3SaFF8&rBJz=31oOT+LR0 zN;u8MA)ZQmhQmdoj!lhgj0-D?AyICi`0n$XFVaCFPf7Yw+}gA3p6s`HN$#6i880%V zd3*D4caeBW+0u)=1CNR&tI|w7#!YS`Li^<3#3*BopV6$zGpGwkr5dbWyIn}t3K%4} zG1+mNj!XPcP@}MLq-cPna{9m5pOU+p>kv@f z2JOPmo9d1`8C2L2MG(30GkhpfTX=fp=R)}M9F?$geK);)s*0lC`qQgtE9 zv@Gbja}1v=FFa-v9)HexQ60~LT~;aG_?r{Mx31_rMj0@z{!Q#-Vt-v z8I|)CXIRS!X)X|%vwSBLOVG~ZV&Zg-=L=#f=q)y!J2zg%m8z-4ZER@D7}`o_?F)^C z?8B7N;JK4X)tbPFIfd_tHn!dI{@%WiG`Vqp>3ABS?GQr&E~-hN*MUBEfVp-nG#RWh|q(j%ds$Z+0a zRW=5KdkhT^Dr7p~n`O-h1>VeLi0MqZ1+6-lzQ1c9-b9_e4B;{9@nh&ZD(EIzt7mSL z@_SY6Op{H>K)ZW$avmtE`9sh0UPUzU<3nOgT z{vd67&usACmu_tu#@N=Ci22EWssr;^90e`k+_a*;a(S|Rl)JX$J*+%epFdjly(D*W%L$HaXw|R0NL^Tk? zXK~IJ53t5Xe%wmuwR`{*!>4tugL6D?h+Sud9`ww$bJ0a8;(l)i^3}*AF@H zSMEcSU?>uZtfgJZV*TVA&fq`;n&SQ zw6>5?*tC2DuVT{7S0W3xHH$G(&RLxP<8Ij(0=>;)=S!JX`Vh$LP~>@D-NUno_LPOn z*e&zc0@Sm4UrfRha8UdJvoNq5RfX?Rakjnlk*=!jliw{_K1vwUa~_2F!C{`hJ`JX; z5~?`n9{xoNug&T014*N5%Ma9--!v9QevZk(8-US9xMy6ZhaXuU$T$K#3^%l!r-HB( zGpH%befTG+X*~A2U9daT?VkDXVbNWqLq4MN;?Jmk0zDdx4Grc(>b;{DMVjR*e##<^ zK>-1N9+Iedp-x%r5OcEcWYOFFb)J1xGn9_#4r@y#)!V6E*ZXN^;kbv+Pq-|b)LAAJ z7yxF?jfrvyRG+$jM=AjdnySbFC*hL06=yqq=1A#;M>`z8@8j0iymnLA9Q*ElnI()j z4APGO8{@7py3;3E32YdDCNhV4+yc5_>J_iE?XEUZ#%H(q?m!lb#_}v{Y8}i}K^RgD z4HjQiLJz=szsm5PNR>d^CY=S^!s4%EbG(T`Y~Qb)hZvcC6_TQ5@(wrCl>y-wR41D% z`?R;&sLV7_^v+BQ`uTm^Q;FpB(!#l^drv$Vp+tPKQavcccTg#=QHrI$bWm|Sz8i92 z6tjZSILB`9?*lN;=S7G3*7LC>~?fjWXkbh6uYCRMzU5*0ZzRo+o zZq*?2$^**IsJ(>0j`?$LT|X?2%0eAm2{98z=@ zVZ8?&J6)+CUlbR+RpgJO%>wJqzdf9h?w~g%42b7@&FJ!DL`X7LT18j#0us?PLQ946 z`p>~CG(8{noeeG8T)Js`#2}F5-0U$wcf*}Tmb-V|a21G-i5d99=+t86Xo9*2iT*{b zAXSra0O~)7OqNYc<&!SJpB&wXBuXAQrwiBME$puxk3(Vd1-hwLD9 z2+9(attw?rtKeOM531zQhs_OV3+zFU-$c1fptXI5>fXzVR{8wqZf4II1!!z4IB+3B zYfbVKDFMjz5YTyhJ$e>h*gxnGehPl~Q^I!cB+it*tZ`rc*A?iKOdynKX&e`$UO?3p zQed(8aM^>%X@(H#%0Q;*>h)zd@_yR=PqT@NZ?NS5#xmUXbaeZw5zXHy34+c1fhbnl z5Y)CM&}6%*`%&)sha*SDai!_-Dw+O@3h|$L=KBZus4tolc4+9LKY9ijquXPQKz-u1 zbl1{B3k#wkiV#UC%()doXI5l8!7*x+6`7}x{g!wwLajkvFA=K0C`^6oDW(JizM^|N z4y13PQ^rERi*m6nXfU3lE{@T@Y?^y7wxLP)A3(Z~zCYorI4kA_ozbR0j3}-$ujDD? z3P53>?owtNUzg6zd=nEfP|q(lRG^g=mrv(33&|sm*T{OcVp2D3Z{EC5tNRQLp$YY>W z&2swV1D_tOirBRRYx-7>_+Q^_#;S8~^aNQ1XC5z)2eft*rU{X)#kmA-+2BpNo0(B)Nz`~>o)MH5x_FZ@W58~1nTJtciIKG z$4y1Q7LNapzPf)f@Nudc$vCB1qZL3Z(->D!&I|8xoD_qPrJEYZf;5~T^v7<65!dGf z?MLAfpRVulb22-^+RFf*(hDbm@z||V_NHi!|MWE_Q$Kr2j6K-P8r@zC^U2khH4bS7 z-Q3%oJpRn~^|(&K;wK`=Bf8~&VRQ)LCy_rr=OK$(D?s%A9vJEzXfPecJzEl)v4X#K zb}DHUG0TXGm}ZXD6=aro7lKnVW1Xx%!+u};G4MW&H9L{ed z^U#Cv{ljhh1G6%$)NdyCxnPkTL&C5|)*GiE1+uxGXG11(5Qx?qa$DWS1MEVtg`*|N zV)Pum+Qw_yB$cM;XYxO|;eR5GwF-TaywdeXHLK%?XwE&{L4xP&0D4wDdiglRAGokG z(Tgtb1W*>OF^KVqT7sq<%|{-8-C9wx{r$WpJa(#I<8=h!elpK9kQG<0zHt#3o}jt0 zd=g5$=?nWMF?8l32%=uCe6Q3Ke07%tLNwaP;l>$$4~$$b26QDU3%|dw4`){X^o`~# z!{LVyI+Ub%NtJr9{VS4yP;XzzVz$>9bsyt+J~61d=~6Eu|9pCIa^A2P9srM+XM}`V z=1C122bKwTTz02Fj|(;$X=@$;hnPP&Bn7fK=n(ntA6S-;s@#3?sQRpHyznT_zQ2D{ z*klxeb7A1F#-?85gzpOqC4Ec2B;L4?Q$)X$9JJ&Pto{o+S4b|@dN@)F^9Py;y z5Xu+aec#xb9Z0$S#jpAw)qe6W0O=Ka)a}~{TcOSHHw*(Oh|V_$f`QhOK&AGML7>ib zonrfz;uY9?rt$aNCaftN8vqE0M`yjSSjY8F$IeD+=FxY;0X-I_U?-^~?wLyg#UO*Q zXZ$}324dRQM=p7u+VHgSiN&zVcwAL5xD4N#reB+14W}J3nND~Zhs-+Mv1vdgAJ;y* zm}+e|Oo&V=ozly@B>Cz6`SE!8mxUUkc{+e{4K5>`G5dq|+M-DTcA|J| zvTR)a^c0l3v!dd?5$4oKfr#i81nABP%)Px`R7Wu<(aDrEKp=cKA-0#yvn@k>mCfJ- z7H`K^mirBSXuas9zCC~Wtu>4gl3>0=wAp>3w#IgnxX-Yt*40GP@$<*v%PPxI+NVJW z5W&97t9^gEw^aMXONgwa)@;OOlJmQl``LbDM{Z-NR^ss_veNLiX}NlAKwoyFn!o>Ea^m3OC6Ep}#9M;&Ek;~7lCk5uJ(n@++kK6N!jxz1Pw(-yHsVxq_3O`AL)fiJ2}&VYVvA@l zS6Kdfk0bFCN!ECa?5&=xCjt`%t}%2{zn7r- ziIpq#Bl#E*gUtwq5j#1R?$Yp(J6ze}d${bCFN#L+dAF;_@P2-g z(DZevtFpgCx6<>mz8&iBan>ENUkVeEMee9kmoSew1_Mc#$&32B2$vcqaYkCmuK#ay z#Z{FvBPrOH0zIC%((4S;E;~BkiS8vbNhfrqPlH7U>}RXmw?Q3t_cy_lIUSrzTMu$f z7vDU++~O75{LkS(I344=quCu}M*ly%DRH?x?-K(qC=qm!AKJ{N>u@^n2s1^DJh>=gAEjIJg^>^sF~6^L^^o1?Re$-MfcUr2X$rapf&&BI(;6zH31iuog@C4ILJTt zZ;rni9C!N$hYAdD?Azow4f8#ul}=qnUlukL4zyqJ%2QGHR=As3BR=Qr{%o@~YA`;X zuIYZ&GK~&1&xX!S6Bze-$bPy%M~5VCT(_`Yjy7KAyimTq5j#`)9p(XfUFbCDt7jnP zzxZ>r-3i0vuh;m-pu*Tj18rA!g{%hVn^b{UyvN6)0z<+?KlQ0fR;NoU45cjM-CZ{i z&wHn}s~E5U5`CwJXwRjrJI&ExNKj-4nPoAiu~RIE?*G5`zVn|A?+p~Clp6ion=Y;0 zs+vKmYD11}dGq=YTXZYU9`DAk-d z(VK3Ue;I53-M9QDF?YUd4HO@?B0d;FuEZSbY5YFz6O7!VA&j&O`hWIfocL?j4ZcS4 z*yW^rVj>i$DU!`OXg_T>2FEtC!{@}=Y~kbNCeq@&JW2XjA1_7IZ%VaWx6iDd&foW? zs4kdVm>RXe-wg7ig4BcqGyM>M$n&j!wCW)C?`j23XLl)k88Sy}uQO(=?93ZkO;EJC zp=s(M7Yb!dMK24wjLEs=RYWe7Z9Ejl$~qdgF5eBG$yt#UgQ2XVgpwkq#b6l2??pLu z?A^xSJQr0bFKTlg^5TE4}O)rn|>j$S7+)|37p6(NFYSE~SHBd6TKUbA?l**ZiVuQiYYHEQQN6L3w*(=Z6l-a9_i?bh_ja{3g@`-@%DRlfpkNkHC z_`ylAb|G83B#L~q`EY`wxYyci;k)uw$uSaKwj~P%dQ096r1V|0jK}X zIqbfW&+>BhnlU{@ds0Eb&4=0ThKuK;QJET+M+0{iC$`;~sEk%7LlG{{e{3dBd~*h; z9pK_jwAmVs8gokD%a1C1HvGabZ(=>Y6h#6#TJzjg*gC-)YEr?=V^!5{G6#myv>UdBOEkqpV=Hzhl@MXy*E>O?>oQQXXm&6Q%BMYjAm?P*KsPA8ghd($D~g_>yw}# zv1QG^Eo$i-8A}V^16#h;@_a!syM{vzB6#zLuBLF41AapG=~9=pzqi*8lc=g2cVhUe zx_b|eMUwDNjuac_wQwOVKyYYNvtR_(wC!k-vm1)uBz|?4we`2Z zmT*)OARYR)#=`pQsYbFdnJPqzj`FrD*91;kd`Y!dQUnj9tzeJzs`ea~xzW)}-H6Mj zY5(ypUzQQdq1)W!m2SYR4nm`Qr?rx|i?$~xlb3@#PoCRhSSjJk;pr~d?;i!+$v3$I zz)}=OjNaTCGa9wmNE=*nGYL%aWcjroqhc^bh7~WM4FrMoMRR=WDVb|XSo@xNZ!X(-HUhbqAew$_B_m*ytcvYa( zf~*5|4lUi{caj@eaij2i0U0i9gr}fg4W3vqp!knuR8^Zbm&qq=)N^Zmheo!RuZ^$} zOxJ_Bxs8e zU(WX|LtKl#1-HEUHJSUdi}>*|3g}rv%Kf9j2AEV@u;oJ)ZGGm5n>Ztghbk^F+%$3T zzcK3XwoN$!E#j;geiaQLmFc5nnp_5M``A5|2!ss*YTq56c^*Y|J!s=EmJORB)3j}6 zHB5;<<4Q#!ca;v}pLJG=#Vn5H$>EU25j(!TD$BmZjM0zxCW~*ZMQ(48hJtSHtGin_ zBBfeHQhP?vOulVCp^bB!y#g1*2C4XVg^_v8Li{_$WnG&gVh^z`*Vma~w2KYzhhFX!hm3MU z#i4W+zOzHY)A8<12SXA;T!H$(UElyrV3o|hxNh5;+M-gae6 z4Vqe(B){t4p(HS#d9zsT7sxRc8iJ{<1^+kMFa>NC@Ho%lQBYpbxoF9ZrzZUPXOJ*B z4XI>v%4v-?6v?lhBucV>Ag>*kC%Ux7;F+FyrtFM2lp+|qXLtN7bGB7X9$eK2v5Ls} zpVY`F?~XV?tFhkf7wnUsrq6ZjMO#Cfc^?a?yECO?^AwR0i% zdq{)!*Uu=Kgh4){*05?*$DU8N%0qJOyaQI#1fI^yu@P3FISg(a(0y~|NA}MB^w=pt zI_v1*puK6>O(?ZR2o{!v?azPDl+B+Mu9!rlJm}K6+q#Y~jK_m> zV#fB0TbbOn>#k=-^I4}}YL{Vf%jOXj?wAaggl~9KAJ*IqX|a|kDr#i~F;#_YG0R&_ zYF_;(Qt5Lm&950epdDcU@u%;0RJX;)%CYxN-t(`-E6jIc;ROyo>zquFBTD|8G?3Fq zeFAe&EmloQ;~ySUaMsB3E~f_xJjBJ<|IVIYe|zJ)w?K&mGIuB8PsOj~-Opv^T&ippeCQ`6$1E#vXZXk@c~Qr|dJ#w%>z>>?2+J?}qO zL#FfP`bbKDjihxnM)ob-Vi`!{Y9H_LsHfku)@y50mwCe9an-9;fUsXGX=nT+8*N$8 z%SffzT|s+Z5J}b~SQg)-FSH*|ZkjD<2oG`mNDleFMe4Nq)LH~9E?~yYb;(Q6KxhuT zNYM)J33z5|!gJRtRbqX%%5(B7tvR~#Xcvq<0uiZVFxIE@t?l!5O$onsGvVvrns!MZRQh_FO-!kZnwDx9HBj z!;}7-?#>92GbUHd#$J1N%V&$xkwyQxa@T^kr#LP|0YP_o=9S`M_>ol$Zki_!ixR3DcPdN_%{(EPMEBSW+E&ECZIV6B-#qfZfIG$N{XZUOZU~jw{V&Q zoXuZ_v>2B!u>#m8NpG%tuXBetu#R>~D?`*o+7IJ?+{AdaR;=kVE3Q+i0f}nN?%(BQ z-!?kd165p0A9MpMM#G!R`dXZV-!crA)conQbiGgx`0U8L&Uz}zB+zxL#y6=noBL|n z4{FqucPrbvk+sz$XTONT9SW({G|#ec&*uBbf#OAAEQWzca);*`l2(3bk$jv!Dn$a= z^i%!bL+P49HJ{*c+{FQlVpk<)BOZyOe%NNgP{)5z9c}jAD#LkRKR*#}tcR@Gk0r|k7jIy zv@0=%xZDhz$;u~o%WVuB;WV2~CKIDaEa45JGY*G@{>bq8+vRc`4Kl;_wDj6yC^?KXig~Tpey*KP{0$3WBtbg&bp+gvG7{=rre9I`=dGPZyhJ?hy=NT*!?`-*>O)P}s zJSrEff4KxV+pzPaD@PSitBEHY6(lxhCYPOgw(~Ow!i*7C_E$P#rLt*%1Lm`0N8obQ zm3{Z#hgSh1I9 zc2k}elRFCOyN=f|j1mm0n^D@HFZ<-LbQR##94XrN;x|qT!bo2JXUYNv?xIXv!c{Fx zbqhOSGMF3PuXZ?svgt%Szyha{dKaLJ;F3OPBhEuEsaY>pt-!gO{Jt6hnaW2;1X~$C z^m#k>gyAabD|P0ERoh{>`a@iaud&sKu4(N4*Mq=|ZyRYuN6Xce3v1;puUG*Cmf0KU zXSElpV)d!Qz&E$p8mE*p32{Z-1$%$nQL+O-5-jjOCid@XBuN@S$jjW^f} zs5rq-I&Nwl1FNb)N1~7HD9HgG=k6nIeNQe~WyRfrR2+J82n}1H@i9tr&FIj%If};9XG? zpwivML5HO#Oj^n9qMyjpHH%07H0)L9DV+7ZHIK9bBNU9jk-_v6{eEVQ`19$wV&XM*;xaiL>L``uO*7`szC60Y=KDq<#eG{M-zf^# z}s%ha7LI${2Ko_bo8 zhhZ!%<%K;`aY+P0KRs==6yYgnzlC=`^vvPSJ2MMS}TF=-ujj=UP^ zL))s3lk5i(XSA58!XM#5p=e7pt4~n!#?j>!G-;C3{{YyGI<1M^6|400d9R$lYS3%J zN49fd3jW@lV@k>5Y+6ExoG%}-rS+`TUc0lEW1S3*2=43xA0sG;n@6nAvU~*g*XHES z9@`_@AFZ9|)S1XZru@gzV-Y)eRX$TdF*jp@V5ES5qgcZ&!M<3-OBv}&exYpCto~Rc z;wDuIa}NaU_rovVQOPgSx)RPa zs(}UQ71!8{2K9z#u9Fqv`aA303^dsp1wZe$d-Fm4t|$E_C(F!?AS-WA7UCckj}Bq(19Pi}2iy3>ui$vX0{s zXB)ZPS3QS;4}Z?X+xv8(6H^T3ApAG=p?7>Eq3Nyy>d3!dcLe@Z**Qp=;r)l$@1BF7 zZotP>sO+D^u@2SPqiR>;*WL3kVk@-+&7?1k5*%7m5TD=|(LOnc2apo>%TF`lt;iiQ z3(D=_omE8EqqjOo;tygk(=Ht@z_#r~VhW*9EU1Y$rUK+CA)RFKX|_UQNc7Q?viB|Z zt9guD0;7F8o)&q**cv&A9fPv$-cXdlZj-{ZYZYTG??dV1iXAI?41D8YcPM^4!jQNES~Mc$2dWj-wx$92ab_ff{SP%>J<~DF*M% zM!QrVPn>K4EHC<(7z%a#9$l5)X_(;I1}&Uc4e|22JWjjBSSI&~#E{@BF^@x!Ph)u} zpd@JUoxGeOdQ&B_8AlZm5oh7ZvNnm8{x6Bxv4$Kwc{tgDuMh9Ae%vlS%X{9HwSr(G zGy6JaQjla-AO;%!QXABv3s9t2s)YXlx9^Hqd=VY5WG4rjrlJsA3|Y&i&qaS5fRBqO zMQ*Vf2W-T%Ib5}ww*%7O(>c9oF36x7PPWZ#_FJs;Tx8OhCXdM86Z&%5G0@(Hgu8T^ zj#1e>gqM-&NTV#m5b%||V!R^!^g`d*e)rL_=?JqVe?$*u-w>4a8#kjW+ZD*`t{}&@ zLMunyj=K1iw2d)`k0mGKU`Y8SaNaG@D%Udlw$3#Yzxo0GE;M}4u^2k#HH-YUB}+jGKO)d< zpWR9Ftu}Az(GxQ2QTeR4RW_!s5x%r1%~wA#c`Hq`D;iX{6SZ$++URZhU#u5O$yHA zD|A>p?Wi72)t&tte`6K{g_?-lj!)|1AWMD{TloS-agDj!8gE2uf$Nr4`~$^|WmhAw z4;nLSV?Yu8&JRDy z$QX~IYTj7nh~T}4b>4l<#IK&m%u7K{FxwxGLX%gjAF`B=uQ_rRhIH*ygbR|=BS;X& zt{4?pfoL6irZ)l*#WLeY@T1T0gCyc~t&=73(UvA0BmCDThXkt%m-a`_piLS~PMI(N z27aiuZPEN$BCKfoxWxTL+Y-dS@(|U6H3xX$jDynjO#^diR6E`F2CDu=i1wQV>R_@LFKfdK+eZdFVTUOsf zDCn@sZx*5u^C;Z9(R~w|()m>%HQ~<$BTGV)HxO%8^!qzif`pBEVXehtpvbbHS!meq z)ZZl#OtA`0@V{Fg_U9vGhJBX)p}^Y+E3^$AW<+DLVOvOJk&+6Mq2A(x)=&|Pt0X0I z8q}0So)h6oF!f(ES!bGVU5oL{9hw1^`k^1V3!i^BYdi%?U7i3ygT_RLEaJD)2z)uO z_z&1-JFxXZRCNo0Uai%!o@Vw-$qiXaof*Md=)i%(%6IF$_2P*9bVQV}ec!2X-v1$4mYF~HUwd7*4$KYFdg$@}~yGbV@B zok~y4#Hnm6rITFNoG^#WT_5+te1|k_s~-1BiF*aW^LE7rR3E`=rI6C(en1kp%+-*=J>_d=xG{LWHPm8PB(ZP?g(KX@TzOiCwRHp&&9JWB$3;G;Lz z^fIM)b#=kz3+)bfGcOZiH%rThaXXch?uG?WkZ%&0w26Vk3kQs&B_P|HC~_fIq$za-Zq2A^TqtF zyH)V4Cc)!8)gb~pebzmC?X%4NfZemvz>Ak3iGJ{1)Fsh(I8D`V1N&yzC#|UP zXPW0n1kB;WbV7D_(QE0=?uc9JKH}NM5v_MwoigDP#7kOxbU5*UdUCgX^JFBr$KkB?a#} zDENzdAUm%lk66PJNsd#j*Cy{zL9cj*=N7!oVfJUqa$bXzx5T}2oLQyWtmv0a#p9=U zt1d587eFv*T4j9i^AHq>crj-Zux@EP{k-ryUzIRnIPX8 zg}nLiXYE3~ihXnO%UIXfIjWYyIU_u<9O;r#!!Us*(Zq@!Mp5&OIwQJ*e!E!l5Ifv% z@yjkv99$wQTu6c*1GQ@Y{7j8cP=2)8cjTDgej~-Qy>3RCyjM>=P1Rn71u%!cwF1Ix z#ETuK_qO4aVpZSFcOVRY&2yY%UwN13xgk9Ky;btUJsb}Y7<`J(0rZ`BR016Q&xno4 zK)hWYCmd>UqQXly`Mf@{`_IN|30o*R2aNg7yn?*rbZtXJU0cE(N{c|zl%~`oVdLdI zTz*DWmgh&7>;L`yAz;ZrxWim7Zu7^$=6K3g)ee0YpaAu;y?!&=YF5w2Cu0)s#QxG7 zKm-Q9x<6>_IULLU*A<8aCsgoA4xs=1JR}bjhHeL*y}r7{+itJ(YLxDaZfrq#tEybX zWSd`3UwLLAT0Dg~(sMaI?wENt)lN1T^l<}zYlk3XM&qJ^hdWn?PFa zDPO<$>#kbvCr>yxYFkkaK`J08Mx8})S~ zZC+rIoDmGD1i7Kl{w$>ClPh;b&JE|~@>uHOtP38~>>7^v3{*>M(A zCDD#~pDA@L%}<}tn!x#e!}eKY&-?{Y{c2v(1m0wFjSDna(6>mjos%0+vMlSxK-Wt) z_I$L>W&`tY_8BanRS%wD97!dL1?Hi*FBwv7HRrZ=;hY46bdf?9BXdeB(xdE7MRKEsLD#YA_>WgeshrDj2 zk2iU`jw>^8Y^-%=x`uR)Ie89jTy>w_i40iCLP?=urJj#*wMO7lptnR)NwBkG7+x$l zPGAfE%6w?^6X_VC;EgQ;%hs}tNHO}%uaI0tvo0na{1Bl_^=J~%yv(_3rpBvfschK> zC&)WtwCCp)?ZX8fPv&I$Z}f?pRwE?)o8}4|7-7*4n9tT+fOXn=%J%!wY%W z`}05zh~rzmN^6S=NkG5oAbzf8|98|z#dlj#Fh2>=bO)0hAexRDzLPG3isWJQP|4I7 zJFHp!rI4Le(bSN^suc}Bc!De1{T70LM-z+j%@b5Aufj$55*AH|$dv}-^c#AQv;gu# z*`Yx(2jK+c7dFz@gff`+jS61iDWZ0qr%4%06BEg}x#LSYkeu}$P}JL3aQED?GUGzw zDumc61FFLL^I)Zsn5}qxzOonJA*MtQEw16ZYO~yijZ-n1Z4|Q%i(2Ek|6=xW;q|9B zN)I(=IsO~Rh?<`VTFhUIR(w9Nzo4xcC=vpXiGOx|k-X+r)YT2e9ml!ucg^n@>vfi;VDO%tyYeN#8p-@XD^UpFyL>P5L$eFXH_2be$-1^3Q`#- z5c_ym+a2`2$+7C4AF!TooTUfc@2&jH8wh^U^@l?9d+E^YG(~d+b1vF6!sr*RIyqL- z4Q*EP4=n8?c|}AuZ7u#7{vjo7>7};tfyR^k$$@h)pp14O)#+~b>nnSCnU!m+aKf1T zve8URGvN}P-HaPLOk;g1ScX%Hq zSBpnajaYYzzvRfTeOveQpA^<{XkJIOg=)18XY2sxsSq){FD9}LLvhWe#LUI(wnUCU z^$j+qF~QTIsa%DlOlD0=S14o5zQsNq@CDjz9|Pf9-J+r7*Q7qQaHrcWctn5su$o@m zJ$W)|rSg|(9~6(B&B$|tuGTWzclWCS8?9-QoWI;+zq+E|=MA)Ikvxq;5UIJ)M_f@? zk$RW*3g~t+FFGHMG}?c;KikkQr)YcySVNX&*}Bq1@{X2>{#G$ihm@wY>zl^;mD$#K`D(GAeveWC8cB{U7$OGat+4D_tU`%o58>}Uo8A&VOF^4X` zX?%w+B+n|r{B5L9bhhUDz+q!PhWm66(G=Z7ToVO~Tyd8!^2l^{t4qy0t5J$Jh1bjw zb$7ukeJ$A#uC5ufGARgwxbls+I}OO{Sv=XXI!_mHS%p=+SXJj1s}FV8bd&B|Z7%DM z=HzS_8Wa$iPryaW`z36jCJQ87Eo*Ex^4on;xr+V)>SM;tPViXvWy!2N$!FBuxQEdF z5uWtWLgbbNQGg?GP^!5A)bIbl#L5a<29BBTYbnQ%@g7PWTa%@vaM&S|orTc5TD|X< zT784q>t9K2tuk=O2jus< z6m#k9qnjGqi0m|cU7^Aj7xVz8Q@l0k=Ut#*SK!?dU zbIA4h+Tn+WG2Iw*kBZNr#x%2$`B!ASY^rkg6*uisehwiUL-IJdfC82xdJFwyCm-KV z6tA|ALRr{n=AB?nmgazCa9c0}Keh?*RY5D7#iqRHsf@ReW0r2>qxPBv)K}TTZd7IE zQB@2~^#2^#`vd}%y7x$zu%PD-5EFifvE7ywrzI9jTBX2i-(oFaUo~HC*L|}r=m_SE zj@^8_2rXSV1E@6{i*!d&fgf{-+UAIs7=l6f&j!SM&8i7A(`SBBbnbUCc_hZ#7 zSC7$cx$6L_tkq9E$*QS;SAY7>gyzoUwDF621&% zC|;w(lA8+EBCNI-ZwBo4WFDclFWc*J{^YVe_sLV#7&PF-9rgQbt1@CO*?uSY!S6N? zmj8`HZOuM%d{Y6aoyaBnZCF=Tpnw~BVqZk?1Kc*@1Grpr3m}Dl^>=bT1&C??+oW60 z)znA$v3O^`YwJS)28~i=+CS;#4-RM)4sS&2;Jf~X7$137X~dQPx{xL%h6a&a{wO|h zz0d1g3=VhuuNyy_!{x@qlNWBMY-Ol|-Yl42|oNqY>d8J|t zA;z@MoVM}awfq-ZbCZvW^OR>Gr;Hp;Unx&1WQV7+Cvb0l6W$?zb1!t1Ba&Chu8@`Z zbHX~tEKTp<^wn(YO!~j%3;~~-1L5CYv#%eeeB3PwS8$CEbSd4k%^~syF>d_toB9=S zKm8Vbe|1{E%~fpE-1t^kgSgAppnum7QVb*Bt{3}N6&vUhdBxA*=-IL#Gr3uclArt^ z)I=g=F}^wz6$geO$-yM@XtW@vE@&0F3T2T4;C{G!>(_2f=ZVTo?*IGyJ=PUl2As@= sTzKO@=>7lC|A)Z;0|cZuE*YdLtX@#C*^OZw{vGf_Q}=15`n!<-12Z-W;s5{u literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-hardhat.png b/_static/img/mascots/scylla-hardhat.png new file mode 100644 index 0000000000000000000000000000000000000000..630f2d909427ebd1cf94b141b405c30e8a84f6ce GIT binary patch literal 20163 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 literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-headband.png b/_static/img/mascots/scylla-headband.png new file mode 100644 index 0000000000000000000000000000000000000000..c87abe684d5b67e5972edef5ad41990dcb2a6686 GIT binary patch literal 40533 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 CA}Z$q literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-looking-down.png b/_static/img/mascots/scylla-looking-down.png new file mode 100644 index 0000000000000000000000000000000000000000..75cccbfdf12dfe20458552b79aadb3c21ad21d33 GIT binary patch literal 70044 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 HDWM4fznpb_ literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-looking-up.png b/_static/img/mascots/scylla-looking-up.png new file mode 100644 index 0000000000000000000000000000000000000000..6f10405f2182a1f8359cb01cc51910d1ef88be41 GIT binary patch literal 69083 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 VQ?0M~bpRiX>}QZKi0@A5;BPd-mKvHm| zQhxXT{1x9H7LR++x%Zs=y03FyujlLejD4)DP7P!O5)cqjYakH@1O$XB|9t>t_#chA3qx}2LdH~cUuRDhO5mp2LlHi`vA{j2YCVll?4ril9B)7K^|=i z(@f_!dmbwph?QltfKDA9Z{*=CF!h=#(JtSJ0tI@)6=gYow`ie{IbGtrqLgH2^n%NM zy<^}|I^vTs@kebgs8z2-N&19bFP>lKvPDh}9Kg8|lN&G6JHR+g#!u;zflTPyo`X6oLrC_m1`bg_0_^ z>sf`Od|73WALEaM{35~&d^s{H!?Im!`=i1Gl?kD(U@AbLi@C&8enA#yYA$=K4%@fe zb9pPxYky95?`d#&#r#FPE20dw@%=Z4N5as{4nb*jOstW7It`(^wIQ?FFv2>4f0k%C za^moz_083CYSBPz?_k2o&!d-PYiEo9O0z*g0CZK=u1l1I+NL{nW@uf__XeN^`h6sH zvPS%o<*M%S4v7dDpppFdr0ND>iiYrwLIuVSV2mK;sWK2{OYZM7scK5g=$_=Q>CUTQ zt;Z7ww-AwLma4R^4=IfP>hwUsl;wRkmoI2gmg8qqW4kz#ke(i7JKDd_s7(hdXBVdl zh#=A`9&ggj9#$2AAcWT)o2nB(ygQnCW~wdmO1qWsltnc+9P@S&m*rW}B8(ZO#1dZ2 z3bi%kXU*&C`guCc|Ib8zgsPwzeW=%~kVWJMKq zpCkmVQmS*7`9MpIkpZAVFdC(-ECAs(m=P$B)s`k}j9yR8h{r`j#ZuDA_0^`09&dsxRC5Fd_|T;+Bf;bC?BJ z(*Xg)IsW&TQ0kG)>tU4@6(O?Z666`vp-^72@H_R{JnDqd1tuDweoH5RK#HO4@pvoG zU_zwuT$`^mRAt`{Rc{DKHboUpG|8F?a`e&Oaqd&)x9(FhL(Aab+XWD6C1EL4XwC%h z6bU8ajL2WkD=iJyu~k@%J{)6(im9X$ZmUEZea`fC+%l696TNS5F+f)oma^GjG}ZKg zE$yuXl#2uM~pvMuJPZ(aL`TtT9B~j}ogoh*eMjyW!CL#UYxi(v$K? z#)&^+`&}xcoK5;WOVBv)M$xZ_iQT99={Kw^ri>u^I=lh1)T{T7K-=(_VwNa`44vH7 z7psly*mOp`fn!bOQyd!6XELCKy6Pu&Y!LdwB8-LChVMX5^J)pEm}CGxEzVI>F*4Qb zw5;-^Xhx}lybjcd;BZo9VR%oftPG;Em<2Z&}!f7A@8`Nr^(eyu$}w}nkmSz zjfesRa6DX&TFOXNIhWk>OM$jO(%C3v-t*||+#*#%s8~O7<`&QPIM%wKAom}q=}E-j z6Y8R;*RrFX%GgE(2(8}VM$%IMA{TZ{qaIJBjPn4|7Vpxu-+*aQRPWCGx8r7J71#XV zt~M@}ZOjkSV4(_E=j@$%G4`QeXN+0b*1qDA{X*Q*j_%1JL5kB)C^{ zNEJntriF8S=f4x}DDHmFsO5oWlOJl)UI8^sU2}l{PdRNfUbU3)A%FboquCg*e_nrjjp z#(TK5&rWvQrm212pwLmDc1H@s>`mn%9MwWN>s0Fwh{HvhAOt3yLM?PwR1wnhJXRn& zuSNujQLe?5cI0>VGH2;qq)z%mZ?hc?be5*RvPhYeyG8mL>Me_qxStz*h!s^#TynT17B> zT(#p=Kn4S`rG{BNx~LgSS`Q|aUf zSHFJ|smFmahj96*8sR>L`3)f}iE{k(Jj?~_{gERcjzO(q&pR1GE7i&UuZlHn@tbr) zAa9tqJSc|kOU8@C7^Ir-G5zY$?w)g)Pb3aPWZ{d^8d@S@ev)|1Anb zeGhMBGl;JxG-YtcEr=uJkkn?tc$nV4le`*a24w{0RneZ#J*Qu5VUV-w2iS7eCkR`R z^GSXMrlO$-sj7rilb6=+C4U~5?0dbjCK5)hx7llolk(E-7cHb5NC5majBh+>45;2I z6^d9gANESFS>yO56KuYf)D4ln*eeO+{Q_Gk?*AMRg!S~;GTS|wx64=7CD;own%U)m z0+DZL2W>OYzA(9;LeL@p&o^6OoF9{=jQf$QgyW{MD(xyzYn8Cw3ia~T^P%-0wOt()wDG) z)0t?WTF~*UNtC=MN@LW`G2u1E!N0x*F(E4+GlD0!0s8Pld%9}co4&~1wmwRgQcLl` zxGz3Hr2VWqLp7~J|9^+m!?NQQ$i4|e8WaV%viv11U;C@lX+PtLBBF0QBOEQ#I9)Db zOh)t(TgO|+k>es^EBTqbj45ADA?Adi4tZE{@b{3H9CTQ65qZY=Ugr=%N%9@A2YSs~@)oridtPgYUDX z{b(&yI9&)P7ps+Tvw9gFxkJ=o=SNRVZ~^9uii$4evzIo1^OcAq?rTEh%f0&#j-&zc zBn(`Bd>P5KP46>Z$?hHw^mx8HmrRm=ZS3n<&)*Q^7%MQ-B0f6th{+2+Q(T5vxRvj9=*vWC*I5lsNMh$h*u31gc6^6Au z#fLlNKa(E{h0q@p~cN?Y;WQi2~W@Z|9F6ZrFNvIO78z9i0s8_nsDSUp#p> zLC&sCw_6+rY9=~vfdbyq=6EGmW-L1yIzk|!iYviijsnj)A2;d^ad?<=hMYeU-Ph_5 z4wV`FGuu0!^;nirm{i$oxI`tv(!J~1>FKG^KdwqmbX4uFH77lci1H!28to65cLfd| z2|)Vj+WmI~r@YG)%2*$ctXRL1v3Gb1BI+o!^1I@CPP$;6H<~Z0%QTatUn|XZxf&|@ zbJe?adonxd*UZ3y+_%L1Pn`ob|1R>6-Pd*HPiEVFp3~h?_>f7Z7anG22uB&hG3@)q zHI)H{+iIb|xaN+C--Aq{rGA~xRGoE_pK3%%Y9C!Mh}#RdCMyMPaED%&;Y_}<1&4w~ zz#UwkY0Wy$n>(puyK7i~P-OTWWjZL#`n~2}9NSocO{*Ymg%O11h0LR`K4o^t?C+(q zcj~;DIpet`OI!hjee<+mgx3nq3#p^vI|ANkV^^ca)Yl~w6{ zcKUN2n|yZ)OTvm$4{02h{oXY@wMT&Q74cv_`VA!dRjYP;)KqwPh-MC^8U9b7Am?bO2 z+6VbTPg9MXQ+fXc@zZ_zEBP=!=r~y3I+&l-Cx@s${D0TbbZnn!88<5-Bb+7O1ErMk zdR@WMAmQ+Kt(cMLB!iw+js}4A)oKsOEN>s|}Z{j2NcOI%+YCZxf$lyX1=oYsjD@>Ml#?++iy5$8jS_@|~LLNaNsz=li zD4X|Dj-ZQrAu$qn^YbP?b3^g){YQO-7Y$g;aYS&v!qvTI{~f8aP&F;d*Jts3nObiY z*%!Az>k#?Hj?w?^V+&Yus+M^7VWg~vo9lTHN#RuEuEWOHPyd{5MbJOn-~8~WD4taO zJ7zoTS`t44{gh;MD3b6HYovs=uiS}`ZDzt40|)Dv~uYKE15 zAK6H5J#+U`SLPK zGqW+}z%bbx%a26UZ-@{FwxkCYB8$3{zyLw@ow+JD)?XurQgWG2LWhCYNx0QRn#xx; z`|eFz!RH}xZMzZbg59ee=v;=0!~lzVg7+PCIBYf}dSbYbJ?_slu?+|#DA`DTrwx8Z z6&tYJ{O>~Ho;doBx!9d6KT!I_4S6E*6|Lz4qGWcbB zp0pgGv=}H_``7k8)AvtnA|uEQvUUHR_XQro+p4I8ks>ClJMFOpFE1rXNC1w6p%I3G;>u5bd^lGdzah|B>BuDM0%+eKW;0yg}K^F+AZJ zAD9&JrNMc-uPF__5+iaFH>>`jDkXhs^#{QgfHAcmmPb^G$Extq9@R}`o3wk$St|X{ z<-pS47ifZ(6^nTLKHz)yc%nk$(l{*a^Q1$ICDJTMZXdNPl`2YtlrB%b=pD@rtEJ)9 zz|GfbvB?*ByG!ibeH)0tEv>o8JkUqCwD)Qf4{Z94ZoAj^#i~ZGe)(f_V0C{G)c|6V za|e?P@*5>*d^lOtB!tGAahC{rKe9F~=6+N+Qh^jNHA+ls;`dk7a-H8G=@Fw(neGx= z7UvZQ11!;DVpUP1Ai8^pPRC~<$-zhb1Ab<&PZ?O1qF)3cu9zAlnHS^x|9!yvQ)BvD6CK0S|Ab+ z9t_7RYn(rJ`Q>qkGzu}m8haLgUtfH|#KTgRFyeRebY6-52z9!GC>8R&ERz{5v*|!3 z0HOFQYFhG=j`n*1;`tpoVrRktfPvA#w2~mKZ{*46M)C_O;}J0~nQ_(jEA&nKnj|E9 zYrm+U)5v2j@_q-V|S_!|n$ux4=giX@_8d9g)Skn+0a2rta zvX9<;nE9HhFqQP~ti$DDJUg(COI&D<)#zw)rT|Qd6gLcb9{rVQSjrL`yY6U@C0za< z3gIKHgt&!V_c^UHWfH;a;Pzm?;X+baVkEwy@Y1SF3>C5$&=*pTa*YxyeT@M9!@r#KcZ@a-<{PX znkrIs#N6)Hrq#mek{imVTX?Kpbx`n7yjzCQ z<^?r$Q<-qs-B9&E50-?+_idihMs23b%NQ4jA?MG3wuvox>tm4Hw~^&6ug!xF=5zt? z!!}bRc3vx)CS6?d)r{29ywK$*$#2BpQ{hk{i60YqKWVhAHaVK zZ>#c~2yD+A)m=Vhrq4W+yx;;N56jbs*41XKeA-g=;CLFvoo-|I$_?( z5omtHuti*O%{@pyM~zzZukjhXTbulV=2-=GoQPFFRaH=-W7&Ml*2#yk7Q1*P z{CYsCR$29{&L&as$n5jNJWmtDAR=2}Kc`GH8bxA|c!O5-AIC3Y=)>m0*Ehj@7PjW0 zpDbYzs(0ITL8W@X<})7>+EDd%l1|h1DP7M-4)L)q^cm6coydNwv$laFBihD)bA>+K zU@zAT6-|u6n3+L%^|F{_KC|{IQE4b(>}S?7V`pdPuLF}NTQ4TQ>vpYmbc@cw3gbfY z-hz+x7lAl)TG&aZUBt?sGUDk(n^a@XyM}nom?nNz<-tQdw9-Q&phvqMj-imzS&3lex==pI6%@>eX|+LmcNFbP)K+)3;_3%?;f5K-zT>O}E-M;s%=>25#@@u?BJlEX)4g+rQ4@i-Mic zzzLxxUFdxW6o%Vg7}e}1@;z!y`|mABEj+|J4rzwII*6ZkE_X6ykRFtFJM>%Qv}nyT z7h?co2BHoJ()yL{88U}}8i8gaeO{HLo8iU%x<9?*mx6tjZC&4dYG(g>ATd1tp@#sA+u%nz2L?ILz$o)+J9jV9$*R5|B^eSP!%x+A29zIsT+_~O zTXF~At~xPedw}7Tl-0`9G<=Shet!*P16EGWZ6DIuTMQcvLb;YTU*mg`fswEM9d^Vi zpJpTA9cZXyXj-(Dq1&Vh`@Y@ccQn5%$>j53JY1rw-&&{pN4uyYXeTYhsu>0Nb9m96 z|I#EY2{m-gkNQjhPqsR_WkaIa>-uCtJCz7a`~DMGxK6iVC(l!z*NPYO7pRt(v@P{q zH~7VfdwI<%Bb5}F<$!@kicQS^651~kQ-ku{tiLkoi)S*B;O(rt277;@hMA8S#;%W) zF1Nn;pnapgw*lSHzgb)47)@rHRln&FceDv6$RX9jFRXf5@gWqHeeM#RD2xaXr7zUY z^5M{krgu1$#E@JDj4(%Cgj1L^@ADkWQsMpY2lDj?%QwxJ?JOVshb&By-e(4NH~4_7 z^d&#swEeUt%%jTqdvKXWlBYShCl@8Y2dFl3SD8-k?;d;Cg;or^R#Sa{@!ks_!9JDS z-5k|&COVm`UiH`tb!IHJXU!klrbp`gk&oebF<%o&ak6;KwQH>*WL0F>`}c7BFY6^{ zqkk`j%=4_5mWv-JO7;c&CkTfutJha}n{nfP!A+QiU55!VnFsjF%Jhc5d|HLu)e_tG zi~PS@kLkRcG);Pp=H!xD~RP67yvt)OzUb9xo z3w!>NE_QWK-;ZoSD)yd7$e&i`;+n5`Q{n52g>}j(R=hoD_NH(>*$jQzhhbC zv`W4h%8F!lAme177K@I!p^Z_l=@6M- zL7Bd}If_HLv29OTR%>0&x#wgV(e{tuxy(V&F6opBHBy6?W zNY$f9e>||2@-)@(FfVt~1wF%j(tui+xZV8|@$`S4Vwt8LLZ%|C!1$8s%u}Th1c|F& zNb9b~uZr0X$9{vjfQ~Yjd-ihutQQ^|ZNQT*7_R`cH=xH3j}Q%xbAJ*J{r7s+dq8z& zW*T3aiyQjk%*V>@y7s)Y08socsq^}-UifitxYU4XLH8FgR;KaHKkEE?{10C32wczk zX~$d0gHHT^%@m%xTjLU4J0Hz@|NH%{TVeu_Go7u)cs@z}of5!y9{lG8J86`x?W%yP zA)+>@hM|>DEKgeMYgUnQ?<=-Oh8iQXpHNsfa5nVj(rzT1yw46_3%f^_o$hV%nR9FK&P?EDw!Yt$==HHaoIYHv>i6?h1w1;u z_}M)P)~ip`?;;R&l@w#!>m?EXaj5||+o}3n4l{@l<#HTfmA|kt!P0H7VxL|7lA-yy zAQ0S@@dpAM0ux1jC7PN9?n+dH#-gZix(f}&+CUP5+CU+c(r(8=a=f%{9TuH z?T#Bw*w1+O!2Aazzs{eM43)^Wu zd~_fs*7@AY`U1fBP+s@wr3o8@+{@z8Kh6J6DwwvzQvR%uREjm*^8N=G-UOD(?H18n zNzpwFr>Ycx(=&BWTRo6bKBXH}+XGgpUq)|#jk-&LBM5!z5GGK`8N z{8{)ebouAxvx%>XnG$FYO_EJcJU;g9tb_dbw0bW-0TPi4ZHUWPagC{ff33W-`m4zgJX>uQ*fDmZDa(YVct}pZ4k}EPtuUej(#njIZR+A z)oQ8`XR|+t%ah6~>6ous?KKiVLm#SiY;0!!`^|~^!0!@%@Z>mSr@RNBFRo2ye92{vRK}HXKVdkC=1(X#$@|-^A zewEpqoIP?!M%wI%!rP40mIpATi~#XoFxbygzolJVR*`*+y|=?7b@-mVsx6nduUC-$ zX!lttgemS~^%p4a(IL-lByS9iY&vy|1)r5oMK-K*zWSUQov+?F%N(lg$o*>Mc?Z8x zZr-KfmugaH5;p;Ri+z@j%hAW5wj7zL%Ue9{{U@OJ*Kgvf3K?YWh~J+&t|Bn!+QuQeeCO-o+nB@ z3NN;3yX_iHJ(hxK)1`8$u!OHErroPUObs6~IA2%+*p^+oZ^mDkDB(0yEW&QKdVT2B zpj?hmcbkAuveGQZsj3kAK_AcU|8@vMBcUDc>tUjN1hx_5`Co(RYHB2*sFdCcc--F6+HP%Bud7ATnht(d*s6$APU#FY zvMjwt2{4|fp*ro_Wdp@xvuU6rya}v^hnQpdvtw`L^2I{~qA22y`B z*e@e~qt<`4=mX#HIDa{wiZ%RTeIO~C7}?dYtiDd5s~S<_*(2TSR{a3Y?YAuA*7&Nb zo>#QGgP8J3eSpQAR(}g^%BU#Prv!h5FI($Vq@rWh8<}4UFn5NuWX47fH#wi6Ha08W zNfu2Cc>xuPIfW#srP^H?XDA2Cz4DHpaQuVO>W2-PgZNt@5L*L9{&>7*6?L3=jtI(w zmVK(-mADK_AwAJ=h`;iYeZg@tTE8t>H`tjvRgSmTAG~Ml1U(=SrdG1Uyb?<4EVRpu`tIRwsuX-O`mQM3y1s!cF}?Blif8t{)9@jp+@ZY+tlk)CYj6SlOCrKC zaS-z4^t>idub*!cMf4^k(i_|dzcj8*HizUDMco?z+>r8)I7(1LgggsDMM7g^KC3c5 zz4F7ldWHGR{%X~Cnn%mrfK8~`@zp1pSF7`mT}Omk@0P>-M|M8m^2e!blJs3$H9P$6 zVDPh9s7u;*U??R+v#azou}cmT<5Kt*PN;GR$S={*+4apDAydw>HQd9xUa41;D$*tn zkF5rCnZ4fowr!^lI)ITM+Jkw`VhsXah{#c4&to|EEAsNpPCLslk^&y9`6c}3Ej>IL=@AUk#(wHzR!Cba9BH_^K+Zk;+~o8V<|D`O5NiC+O5oZ`pe~Q z1?|Jijy~=bZ)%hDzbzxzM~oecn|942{N^M)y}CSII=1l_}{28|g|hL3g=!7L1)pc1c@GAsqFh zPgQlOC4W-A+-ClcL%yRFw(mIIKy$7~b*%2hCs)x9)0?uLeO|C_)0BFCxeyO?o>d!G zh;DhsjDw#jAJAZ8oI;NqC%fj4{Hn$w^lkMa5p@)p&b^Cz>=ULf+-F+}?y^=#iuGT) z<0tVd2(z~clElknpoMWrIc z2t`@_A_86ri!hd{k4J{494DY4cV*TV3%VVDU6Q{qW2BeAh&;L}{>Kb3#wIeR$n%&t z*tb%;$I9A4tcd37Xyohj#)i3J^bI8=1}DLB`hLgJn0ZOM_tu$h9ky#H^5L-@F#SvA zjWv831RWTkab)d({-U*=)_g!&03?e~dG<6+a#4dz)4_5P4dPJVUwzZ1{m*GV2>q5k z`#9Ye$70sD}3~ADBzQqpCM26f?!!lH#}A->ypk;E#i4KLL;{Jn+mJDK{jb!^0*Bb$?iT)*!SlbIVyn2VR}un#Kk_CU zmy4Ud?U#QWYC+_cH#jU=_k~siVdh#XjI&c+tCEkym|MS34BR2qb3N9|BDXZ*og_S! zB`t>PMAD~W8q_Vztvss?UN5XmiPvt$8i4rF5d=_u2P2!;N)6vi{Zr@z-0W}aC%VtXt0$>y_(B(Cx{C7 zW1fzdW3pGns&BvQZT3SdRTUNHhDF!?4cXbk5q$lK!>m>Mg0Gob@=LyO?=zj|D*8Bb zy71^%Q8Yk+r;FoGL`fTm^C~4ZMJ%4;_t)Rn%Hhw)1oyb2&$S2Wxk>~{^ee{`B>+Vd ztZ66HE@%$W;j{@d$zBTCacMqUl)wIv)Y{H4s zM5x)4S*1(%kg-fel@#Se%Aq0#MzoJEh@KHC2Zh~tH-o&KF53@VNUvX8Od_S=aE}p% zDS!1(#etNA07EvrsA+Qn$U1hWxLtQ!>C?Tu>+JGG&jwjK4)-rjZ=)bwJ;5^+I5Im( z13cpE&lBI1bXl|^0*t4hJitPBa#R7Hw00021;!-3Mlwm!09v(o)9}_^_xCc$h;02v)ReU3~cz zAAP+nLP;Fg1My zk{N{%UM-|Op}|U;Unn(Hc6P=gEvLmET(!I&?ZN{C0J`)G=|c@PprG&Ug5^8bonsmTpvcNkBk z!5V-euY!-}84VXM^0?`}ue9`}R9kBLrnMR#X3H#Yh5lyWCr&`7Oo{fU@(02l{_^{IBrw7G3YHHzE=@ssIXz*^2 zCJKIFB-34aHk)7y)nTJ}_x(W>lk!_7@j8WMdAI*kySnYAWanqCncQpKOIcI(r!B2H~4K3aYK=hAGJ z*EIx)b>t61&l$>m(N<(i+8RKWAU`fR5x_A2B0TAvF>-k zpJtjJML9mtAW+S8V}t|y7MKWq`eU`1CxH~SVseQ$PXG4)V~ZA}Z;}f6;a9NxGTqmHLVXR1k04IX%WvB!u%Sh-iYj|;&LdbHU>3+LISB|^=PGklNM!$V_iwlwF{ z2d@P63G3{jqy^&cQmXdSrBTRvh`HR$yo`2XK9O!z!bYNe3ravp!#f|AHJ^=ko4XrN z_>U%6{+&nSG?4}-n$T(~|CNHu^sDJa<5NBYyvktnoRS5DuMRM@h$rzWW+|{?vfcWm z_zD#slIi6BxVowJx1|*sC+X7-w)}ar<=ce$Uh;=+=jBHAg<}t8Ii2=_XGx0C^$f2P z)=TtN@C_5#Ro&|2mTE4C`kVDfffV4OlWVhA6X3cq|C9Ie7FwRBWS!~)5KnZdQZf(5 z_+6pb`@4?Qeek0>(e8`*fX>ne5U5lXWf>-PcAjBHjHmKMxEOEWd84{%_MlycO9m{O zGLjkUhaChx6Y`&rDEIHq!*}wjgKLIdoDr@TnljL}&h)N1nFkf`i5<)U%h}|vBmSvx z5hn|;VqKZ8yOc(%da@Cm%Er4wluo+>howZM2wJlQ>stgTqEAa+&F@?Dj{&J42;UnF zg3tH^ZZBpiSTHV~v@FuqLGwQYGjdZJHH?pF#+(wz0>Bi45u3m%D2=i(Qi0B7 zhL$#<<7!a2f+&tr_^Tlw^ZZc}v}o2{X15tx>R``0T`S#xhS2qpCQO1fJGV zS2dC@V#a&Of3c%l(d}y?itZz!;{{@F!N_bFk(sM=v0!1Z<&SlDlM;d7sNXFxZ&y|c zEup_Nq0 zF&PsMP93E9vTV&&nYT}Jv#0_;!r>LfEyFBuy}B?21olc{;UD2{7gWmbblR*-G`cd& zmNDJiZzw&`NK`UnT8A#(j7%TmB}1yQZrq~e_wy##DkFt_S0}{oG%m($t$MAZm#5qf)d*E;^I2xVCa8{lpGN>L}{qz2E!eqqfEF@Y)OmS^JM%uo6jQkE(M za}I7ok}7@*eiU6c6oxp!yfQ^$`Uj+UmqOsY2;oGsUh}4zLF{|yHQ{bBhM75QC>o^t zn7J-%WFul9VRC_*X7KL-BTpr>YlT+=v%4y-SU%w1jn;oc^`EBdIM9B?PT9n(JGslw zXpa6W<`o9V+Zot3z2@5Z%B~`unV&)lU^<*6Ix5QmA~g_W)AVigM{bVQCK6 zH?2c+gwGV4tR{RJs*YR?3-oDW-G_*3GosGHR#S|W$efgSzlIrA){?S+v9_8Jkxxf2 zO}ttzC|7&jFr?`bU90|84I#iKc}E*l#nBB0B;}Asu`+|q5phizk#E0$*DlOpsi?ep z!%u5XwwWmvBRk8Cveq$ZMgF85ND4LqtBf;cd6UFujmP{z{S zYF3upjl?vv*n6drYWKQ4hiNTn-=$GzHj`H^s`orkAE1m+B#n{-rvRbh=9J0CYAu-u zR?i!R=kDEsxZNwaUy$%@xI}tA0kwVYi%+P%vW``>OPLfAA9y4H$y6qqL&g7vBdEn{ z9JoyAIhzQof&K#3l81Wq(&1+9qkIVxCZ%`%NcnNaqA5l1(PUQq!QFx#RsTHHjk)v| z&$mN^c;;O-G_P{zj4@>$rdaI~Q)ntl8r@~aq{D=7i7a)0gam8lXc)-%%Pq)D%fIv;s`*(52bdy}_S zTc@{WPp`*^>T*^}^I0Fh``Iaothp1AQNU;wb4iOQ=TJ)1gp2>U1+r;rILjj(qg%$0 zQ+3#E;)XtFU%JJLzB3aQ4dYE+VP}rn=}Ds~#`pVg{`w#LpjvY834r( zRigV5lz1Xq2~*k!f8;w`aH z<((W!o7Ot}uCo&gGe|&F$OK~fIehl?t26MU%2nFgTReM3zj|m%`DJ@UpGs7}QD@9b z>w9}n^rUKsouytx&SQmx7$!%r3vbKL55I-*G6J4AJ^JwbOsU3DGbkozr;EZ^J%z%| zOq9z&^(DH?mp;N5LN~Dox`4{D8!%g`UW(!2BIIU6^dGD7519MTK{fr58ldUuS*-|3 z&e4@Nl@9xGG-8Di-o!}&7PK<-XCmtPLr%(Ti~^vYE_SAI79~GB-k8NZ#a>0YP8JoJ zusL$E?{1GQr`fdD+LPv55$^zT1f;7<|A{E@18P_rXE(HqZt+wZe)%-Iwbh78b+0GZ zA}yNfg}Oy^fw?7jQW(-a+n=$_P_^|cZnquZ&kR}%_o=3($cSa~9i`1lRw(}vx9y!9 z&E$I%D?fnMhwpUZl`3C>glz*V=Om`}o_BMR$MWqFr+vkZs+^0zy zsCNH(SX-aUg9z=cdJV;dVU(1{RzTo_h^O=q-I$71lmE4QFIsq^BhO_^S?m#g^fXia z&E}-%_UFg3ZKHK_6p9Jbd=;v%-aO64e5&(LAxe8DOd>L4{V#>4yYf00-N$NIU-3_3F}n=R>Nc^z*)->%2mO?SpCwYP3e=|r-W7nj33VBN`7UwS z-+n<>e>Otk(9N4tVZ#upLmAIP%mWSrh$X|2}{FgZP^xH2RIQzWSM^DK}m()Ax44gfYd!6bc#c z{2pJg@c_wzShw|Xr%qt*mPryGVI$3vP!qJcYc!`Mt!U$6(A7h0fhb#iIhz>9v34Ez zJvXcW3}2}jMIlupO8FG{WrPpShV3ILU^~2zkg179xj!N(F&!Amk;yZ~RK0}Fd&Xx> zHbGD4epXL!lj-Fg$a2M@zk5v>F{X5wK{Y6f?(h7k8yK9U&6761T$W`1Xc8W*ZUojf zQu+mr(>QSa?0rl$p(mYcXHl^iqki0qm!YaUol$va|5!nD^FIkz3F=g*F)@S4e&}_! zO4&>Mi|!YUBT6$7=GBOLp8WgX!`LvXR1Km6Oc9CiRT;@19@U}{v8c~%dLv0eIrEqL zO^7#dK`cereu+s?Y$f}D)k>yPE%)4tpkH6k8-<$pyvQc;auVe0h2lm2lrJ1)F z({GtiE+L(DuU36J@0U@B$2r~QesMLfDa^ZyZ9=3Q@@BK3WZwr`4Xkm_K z92|du4W*K!mdF@BIC(>7HY0{r&R)vQhE*sMq-)K?BJ5BzZ_quCKxh2_6OU|>>Pf10 zZk9fkOgZMhOOLkOmQb~jUCQY>+qX>b4kM!@6kmI&{>#9hh$krD!z(X_%h;qF)=tpXJk3vj*7WQ@TI~9E-9DP=lw2)A zW@KWn8tvbiV9+LYgcc`B#?h&{n2xgG0o}3y)yXJx#!C6&T3=%ySKlE z21#HMbA@8P$<7pFxi^nqj?j}fXOJvNJbL0Ix~zK$(kx|}nV@NGP zaL;SCDrA;3iE{2sIO|XBKIeqmE$e3}lBS*2HZZKYMQ5;w|D#J$*Q*suPR@U56;pHxcRhVfC)Oys1` z2&&#mbZio#Z}C`$WrB8?%=eqSr_Vjp=M6st@*kUcU%c6jS-n4FOa>mH@7es2PFQo* z64P~#JNuITqtP<%KK8DeOS3SZ@u!Qh4iNeNm-2@iVuat>h`*?xl#dwAYQ<;QL6)xJ z5Pi=Uq!4&Po{y&}OMUQtyh`%BLr%$NEnNUhv9%rbf@kZ>Jjz%1E=V|{{iBx%F2JAU z*LJkCWq@u;-Dz7M4$m4f--!B|U6IQihu>cJVbk{U$jJCd;`3O2?JohX;8c$P8^cBS zWm2=^kKNq8Cd0l$Rzq&#VTlel&@MvYR`VKQvaI&%)_#2G28Y^w(`^M?6t7K~^!e6; zuFfYNe2dTD-*-=@KYsTAe`{)c7qbaJt#_H!TAP3N+(*+FTCvRMEP(65cj>IT#Mk9J z%TLFxC5(~DD)(tATiN%N2&J`x^MbvfrewymN3`||*5(-=`p$Q#s(Gs%aI1NhV&*pW zb8NmX$vZ!KvKHMCt~w~z*OX*4>&^LGuHSP)Ca1DoUwGK=dgwQ{^tZEg#AMbpE^L_a zg_AQzvs|)PPjtQZ|F7R%ZptKViq@T#l6#s#$;ke|lU-cz-=|*Mq}$ADcig$sPmiV6 zkzqBX*zux3AH|kpEz_4dp9*zt;+cV4&R>d5R;!-0BgiN)LFs1ZdbRGQoR{Xk`M4|k zE$4?SK8|`!w0;i*@f8{rwlqcszMqckwHY-*=oYv~bN;{3wE*5`(TSB2mXsEF!1`u2<)79 SK@E5k2!p4qpUXO@geCwl#5%|T literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-magnifying-glass.png b/_static/img/mascots/scylla-magnifying-glass.png new file mode 100644 index 0000000000000000000000000000000000000000..74ad66950056c9952006d05ff406e4f74966322d GIT binary patch literal 16651 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 zwzscylla-manager-2 diff --git a/_static/img/mascots/scylla-monitor.svg b/_static/img/mascots/scylla-monitor.svg new file mode 100644 index 00000000000..48bec7dde32 --- /dev/null +++ b/_static/img/mascots/scylla-monitor.svg @@ -0,0 +1 @@ +scylla-monitor diff --git a/_static/img/mascots/scylla-movement-fast.png b/_static/img/mascots/scylla-movement-fast.png new file mode 100644 index 0000000000000000000000000000000000000000..956d1dd0e227eb1a2ca927bfafe1551890c1ba57 GIT binary patch literal 18439 zcmb5VRY04~^EO<;-JKQ*?p~l+aCdjt;;sdP7YZrv8bWaQ(xSy3iWiD&Db}Lz-RJi| z_)fnAl922@Gdnwb&F)B?hMGJ!1_j2mXV0(|6=bxYJ$pV2{3WBI0N-5k#=8M;WC7fj(5t8JPPj@+D&Q*@Eu^ zMKr!Ewu0@EatB*{N@LThQQj%R1d85W(P4aREF{`464(>HG2w7K>7M+VKP0{v+|%q@ z)85*4lN&Ozw(Po?`0pwkj*Yb7{<*^P6Di1ylrV^pU%V~^R~Td-&e!OXD!aSsyeP4;;8 zzQ$4s(+TSY`Z_FPLNE`5FwumPgD>pon*^7%?0sJ<_WtI`EhV&pR2zLs+UyIe=c*=e zEP^ z1^Rya_sOmyO*Cp@@JGtni!yW0Fp0<0@1K94g!$|LeULs^G|8Z^ao#sVFUo{^qwRNz zzo4MR8{zphvK6<-d`?$N2t(ruaIGz$jBL~ECn*Toa`-Ds=UsiYX~bb^I@y^HsH5op za<8zZQtcVuI}MsZJgvO%0_t~jDGRL2ww4^mu2*voj3DrjJuK3KZ^Z}9qte!-*ZE#dFaayr>s5p|72pvj)L#)`bkEt8 zy_nA#JEPYK(P5~;yYEYH>;0M!SHo^;4 zWT2L=hz8)eDofPct}<7b ziwu6V3-#3F0Dr`ztBvEsgH49DFOukJ_bX(yJ2xcjz0APSyyB}%(ID8ta~GBV0!%T^ zNM^-}SObl=AC>N~8U9>mn25>fE5{~U(H?ovM$X8QDgHuh3rR$DL?^YTsiGzWzz?5e zu|F!7O)+zw1qB%vO@F0`A6f+qPKVwNcI)ja zTX_1qh7Pa>yGAma>u1k<=!~)^br_JlKbKjEb%o&cwljiGzD4Iq2_@5b zz`V8&$%i2<1kgz%UFoQ7KwQG!<*V8w(M^*snGYWWOmc3Z^$g%lXz1p0*UiHfDXgsArfNK+%>!vB1BgvlPLj)2Z2oz*TQ*|deJRM282ap1rSd-mHN}+XNbc4Qr|Ke$> z$N7@3)X~cW?TD_cQmM|;f043{iv}T1khWYsq}8DVpaKl-z;h_E;{~dSt!v!}BOzMV z*?R|bZ)fYin){D}S8b)R6_1KlcrISNqZOUgU*&TMsSrj{q%q_T($|D!Sbg$y zleyiP%x=o4m6*bg@yZ*^ZhC}w1t5_%vDTzlNi&I}JE2zW1Tp3eImUb*b%_w+D-K^15pJ> zhiV>M3L7T^vgm;0-8p+Z#$CfGjdje;@s5p3iNwAcko!isO-t_sN>ou_O213+$X)EG-wmGA=VokyGI z54|Pk6EH@yH^{g*+>13dM^QeyT_-vOu;2wyse4h)QitVOqMl?g+JcFlp@L5&vYtph z>1(fwv1^7>T&#;gQZ2N7Um;rA7M9))OEi{Tid}qNNlDFD+$S~Id98={8mk5UsOe4t zCR$OD&hd$7p8zn+`SK~bMHq}Qy^gSY@oKNYB%JSypc89MavFC1rjjmk;8Z+5H;{S*M#ONUAwUILh zYf&aaT5?OkfkW@{<))l&j-|c~$67Yi>mAL`_{IrSSy~EdV2s7fvZ(3f{)i+chElY~ z5KAdvq}@Eujv0QfEP0=z@wj6=Fi%8+;C6xc-PBIcR0YlDv3S#|ZHm#x1LwZ+s=TJ!f2O3W~# znMn-CRNZJ_7oA!r*>d7tXin+ZfX|g4Wmk#!nlR*#J(&Ndtff#wss-`WMP8?6f3;h# zg$!Oog!e_67qh9B6b2el$N@}eKQxLc()wVYsb%GKzc^!%jU|1T7uDPtfD|c?JKx3( z2X?NeK4NW3H0j0fj$fSMPD4V{sv=!oA1f5Mj&pQU?pc) z&VUS68k?-B_2<-Wutr9`7C}*_owUNav>CKCxi|6g_d#%!pT`8EOu_``lbDo`B1pQd zG{A)e%%fVHOcDii2r&tYJiJaAv+^h1C-_LVHJ%R$Oxm5@IS%X?ktiaGRVJM?eJFD= ziPji7U8KGbmZ7PAh4R~x849DV01J$>TgWF(bwDfz@bdnfnL!GljQ z4M$bpj?@-9Igsp>IRg7zJHi)T#U#gtey&1E1dM-I#kjf8`ikeA`7YwHL9Zi9*$$vY zUE|$8#UB0@SFDD+#MQZZxO&OQ0ntxC=Wn~EdHvOAP)(9zIdfB)8D@v+sOcbhGl=`P zrdz6>NUjy%S8sHmwyRR)j3ptH{B78UFLbTpAMLtf^NG!HR=&WDhgy(lqKp*?HkJW1H%xWBR(K!Fw)riAE%Cwt z>Ivf|+hU0Q_CagZw&c`L1sD>jAODxcQH~~eYOjZ?mT<0pM!6^VoqnJ{sdSgjBl>ncg0N}FDK7B&kM2$4ah>CYmTT{JLxMO)DzQbPJEmIDg}KWl#kg}N2m|&8scB*+8X*7i9_k*B=7I2yZs$f_Nwmy2 zXkMdmJ}02&+*}vjyHNwwK&Q{jP*KLjsvobh@Q12X%UC5VSccyp{iY!e_%&ERz7%4& z6ogimqyqSBeHg)~bKxb|WA_S4T88kiXL??>M21eu8Y+FnGjj9H#1U72Atnc%**n|; zXy=Ey2XMP+|2QE$-5IR6Ss!GWVYDywSs$br+A&9sjpu8s#8D-}#?lZdgx;`zHcm=O zeoR#l62LdEo3ezev?Bk(m*WJDG^cR{c$6Ko?*;~i_G z566)RedS#IS;od-`FS&u5eoc2{Hm93Qvb1dIb~POHebszuI{hBqjI36SnYnAS{feC;!*ZzdeyF!&354R zP!>iM-%c>g`Ow{K9K5H`dyShPBKOcdOrRW3^~|e+A;0f&q}9vj+O19F^i!>zvf1A8 zkEccWnWw}EF{uoz`+ouiW`7Jh!#igR<5N2p<^6UfA=Oj2GzR$ z(VMa?q#>vb^W!^?c9qf3`ws2p|KiW^|9Z~=&s{9bWSj))%bU;b(lkQ9iX*^sDL_OmJTs4l1V zrjXd4F_^wF%NWQh$E$TZ)8cl)3bW{co#09Zt+;6aRg6xp0vE%j0KH!qqp*tL=vKg!*I90V6ljaLH9 zpn_=z3~QQR8x!$-X{|5!lojzXtnK0|tRb0!J7tE#Wh1$csI{&wJc46KpjV2GKeDmE zQ>N0I$*XK=3u{kg5IkMJTFDxiWj!C!Qu$<4)b(kBq$g=O(PKmHy`aW;R#Gt^gH-?J zm3)J*(n%CJ+$#I!2doPb;*Yz->wHD-T}~SlUE_q;%qA?$@9#38l2*6tcIW2{8^lrP z)nNV)+K+4GRSMqr7&1FyKqU3|l6+Ed>Qsnl+ga}4r6;zZu$r{L&M|H6)wE#r%N@X1TXdn)tDm~_v#E@ z#!0I%{XLV9P2soS3{oNbCjc*PyZnyIg`SA|-V^`|TVHJ7i)C=6Qgk%_607ilF+%)( zF3JMDU`yL@M~s?4LB00TqE*c-dZv?leE-ibf zkzmlCvV?5&iP3}mH5SO#Z~3TFf_Ct$@GQ4Si?Ord(%%XskQ?nfVYV^U3kGuKe~@mR zt;LIEA;QSyI*Hw^eD&dXpDM-$Nts&t^amWHRyX_g-Y%vjErmGYAD^WqipaK$%pL97 z$hqK+fk8nTu?`J&9`;rBpXq0kdlao$^SA`cEIJU9U*S|qLAuWG$hR02!$Y_7Ty1-R zV?#_~O;f%e?COtdHeZ^^Yzk~FgB8if00)x@?mJe*$Dmkrz!dL74W;CnAJ53%QkgFr zzh`*O^C=^9UxnCxJ#~8|tL2+n|JzuWdGFL=d0}rD;;(gdfTC90B{7E!E!3GuKo;&j zEFXaNj(1F1Ygf&_!AHTYUnf7<=36k!r;p;Y%?s&Q{)#gWF!FsB#fiKMTD3hHp+@~R z6UUbWsUS|+Nb5iT0X#m?m!+olEJs4RuIwMtg%HsAzP1wzMKaSc%PT(ba?r)ZoP$0_ zlHc7c^u39!Yz@&Yym7aNtZM1sEHD&dYTdtGZ#(K=?cDQZ4B)-&_x{im8lB7@cR;k1 z00TAc^9BHBs56m@M>us!sr_99bY!*c(l9IRrM1)lJD|_q%iD@KJG2BK*T4z;9f2Kf zGtz*=ValSI!bg2tTR;mUv_i05*eYe}GtdN>=r8qMwe)-Qyu(`9z=QhQvv#+ujzD$M z6+-9^IapX*d*renerK;a{<@KqiwAxDH`#gxsL?80 zX;J>129)+ILz$NiCcBjIGA48S4I;ZMVCT&!E0l=)0|PR8o+J5etJ$b?^K0EiD@Gdp zPd^?Mm|_3ISp##ThzDd<3f+8*%*C|832+M0T83Vaw#`v;m9X}~iL2IC38DN>?Vd*` zkFFixr~25qU!Oq%1ls>1VOC1O3toH$31_0mP^zs8K#)g(NcV--tBgT73JK%52cec! z<3iK71zJPG+2YC9&lSBbG%e_p=e{(ohr#fAFzH-ZXP}b z)RMJYSN?ub?pbBaF0Uu_q;4~M5qJ?o+CU2}8zq>na6u7pRFs5@EEaKO1U$aapU5EM zJTut<-`?-Oi$iDm{y0;a)x$ISN^tHK|DX1BSpCV-2EiKP9Nn+wS>zx`d=I}ekcSbw z_UxFQLQkerkgf#nI&R1Ii*0>{uge84N=-c1r@|JZtyNy*KKd*rSoS#7Jdc0W7jcP= zKR=jO7g{}DcIO?(HodIu`1lc_``LS}-B`jfna^sw*0f6BE)=ZCYr8O-wJc@Q|u%PRhv2OI!C(&xfV%^p z6|JjM-r-v4WG%rWG|m#zrStwyttkP9RZjzZ@a6JTLlkq{rHlQNEv8ZYkiNdYz6&mr z^vf2oH`<%d3Jt!8Q17Pk1i4NxhSQug<9emZ#Z?R@mJa7dyd*W}G`qcRO+C|(7pYUy zBDN3wjsj>3bCzk+O|yG%J}dwGUl?z2_;k(d7Pp`@zYkIofl53Iyje3%M<&Qu<_isQ zY4gC16&FK445wc2sWjM1mQpo6$w`px{3Z(exog;gz&Z~)_Z4C^7&~=_2Hsf}6EDr6 zr+AB%o*deBJ@rncah&IGo76^IoxM)I!>{(A_V@!Um zWg&KzAENzLjpIGd21n5Y6X{AVyDQW*cs?SEyY$&bS%3q1vvz9toA1_{q{H(5e@+T* zGxdD-y~I&p8v2woZLEJfyZ}en8f&6ru+r{YyJYHT1aJFHTyCFs7qxdRhUxOc-bH}a zZKYIfEq%x0f;iSK>C#vgg;ww6i#LCTmKEmn!Sr+a7RJ0JPfTVprh2@-2Pz!CrF!)L zC1XmPi6*JK;;Mu_z^|C?jIZUsJ7sxrWIZJCS3L73D2Z~GdvVwO{Pz3#@8?qoL@@z( z7*4j>tiCxZ;S78Rkxto#k3UEEVuKz-U9y3zctF2wE5mwY+fSuy9^o-IAJ})6!NyEh zB{a2eRt3gda!a$enSqVmf=)`^oqpZLH}7cXj>?o~&?DdCtU8Q9_|Y|l_t6Dk0M; zs|xc%vOO)f=lBd(yhzvYv;iY2fg*U{-h?QN(PN*a)Fpo+`TT_5H*v-%g3?Z+KP>JA z#Q0L-XEek)3V{LL{v{5<<)!S0@5MA|;c+BB@YhU_R%;va%@S*%{4iHaE~B0e*T}Z( zj!JH{e0}D(4XHp>BQdYe*IWHAczKSEs}XYf(Q9YqTe*J)RA<8gk91N+P6HErhb05q zJjYrh7HTIbbxocO%b8UFjjy3Ek?n9FB{g`88`|{&oE<6kDXFHGeSySBa=5D>*g}80 z^xxPk@dzASNM~{(Ghz~9C{>vS6&Tzn{_PTFP%{;GSk77Usv+{>u2+JZa^3t=?&4Vs zNLEb_QOV=uP{LgpqR^&hHae5n_=$*2V7Knj6hJh8js$mbsgTYIkGg7-`25+K9oA92 z{X^QrhB0nV7**f+!HKVGD6M+9TC}x-|MDJFiAQ7xI|^Ks*JBo6p@~JYQ#)H#;GN=a zk55#6^J$83s6!1+FpB?&>RTt7-N|}7ID%C%tr$m9NAZy3VJi~#xN zcO*ORAlDSI(xu>#bs9)JUIcJ&s;>^jVV2`rC_YJ=4cAOLZRV`!Ab5uWoakThHzcKo zhx(W=M<01t<$<8|&F2kkqoyCe=iQxQ%=sH*0zsB0ja3oFIA#bCJ}|t9`_KJFX)UV9 zdk>ECrKWo6)%NXB9_x`8=hYjAw0dFs*kjv8l%?*s%TLpW!7Jc!h%jp%8u1`{=mx%o`X{|0)gQ@@z z%EhDW(xbO`woP%!M|_wTF7?$^`E)Y4g{`maG~#x$$1lbc+euabGhws-Bm8jU4#}ID<4jRlmkD32rYh z#;JnJC|nQl^XpJ^?vh2KAu5W@eqD^O@Cy4O5NK)9+a>X_r{>Lixx)USDf=HAx5PSJ zy3j{kj)Z^adBp(t^t-+HdRn}(A9u`iJPrUWH0s4`_=!uGXHznK$z|G=bjF|lOci{r zxN!l;n=@UI9w;KH1k8~K`)eKw{wqkJYK>%5$cl4Thwr3B>-gd`7Dw*duwV6wzW#cG z`sSm1bTS|8B`mNJY8v&AsS!Y;VU7?R12vNUJB>5{-WUf(P>sZ7CZBHJ$GDoy{t2Oh zQwdX+B=I{ir~o%6p&!&E`OgIr>X7&VskTFm23p-C{DS4F&AW>qDwBNt&Ll#YL3JVFKggjT2Tem8EE1p>meK@^aZrR49 zLTtn-f-EQ^*FU}`^G0M2$tVc13bFoFc;;tR0rd{H`J|`Oj*^z_5_dqdlu-VH-KLh? z+&1br4YiWqh(_ynO%#~vrY83Sr4ecrr z5TH0Gj~+OPBlo#w(uQ<*xxt^<4Ybz|)>9|5tn$52)CE~g9ic&)`NH1)z9nLLTnx){ ze;y0LI8tjc!$=INkbr+{3`OSQPz>9SaZ*10(p7<=$AQKoo!*{ScO`&P%J6}3ZC{NV zClHpA?bNTjBw9!;(ON(?twnik4PsOWPz?N=71nI01Xj?c1w)7ja z*cnE)&-b+58D>H1MKj%@rJE_P#5zFGRdojOulWc6|L*QjA3H9$D_Wh^g98Dt)dGKc zEeTv5pk_QL&~7rh1yH&Uyg@2*A`h%U3kQkl$NThp#Q3val$c@6PC9a2dzEO4&ek== zcIzkxhF~J6CC|k<0uhxp)(kupdSf?@&o@&cC*k6RMeFhOv|s)AKMN@7BRcIgE%f<* zb4wVJE37fZsrA=Wn;AqbU!@H!7vt2rSpuq<*;kQj9pR8UP^*_CEE=S-s2PKBEKewJ z=EGvq;OTu9HT-J&MrIPXu}43!CkS1M4A&4hCA&X=ZrY&f{yQ`h&_4GW_+c##Z#C!g zx&4u%f!O%)`LCR4Fw+rtJ=cD7`YhHK`>EmIp)KQ{M!M-`#d#5jaA}IPsOF?t03Ld6+c1L!^tpKVgd&gA-ZwE84nhIx=tW^c$77Z0{ zE|2iWwVBd==He)lmwEQt@1}3$246U~qfm?>v1@Kow)62pJ8bhP5M>xkNKwNFuqE09 z{MjUU9*ZQJ$Dgais{}uecJnOD!+|2YZAyEs8JEZ#qw3uWhOio}DEb2jnSS!FP=Z8m z?%$#cORe@{2vJlbpDA5Mr6b4s6{Y|}ZAT0#B2n)TbC96vrIJ}(C0UK1%<&)3vS&s3 zh=pF6NPrJ!avF-vay$K{N;f_}$ZNvaF=N$`;xz8>+xLZ>UQgk@W5h!uj-uv$0i{@M zTw&6*@MipaIeZahTWfx~coX$#nij&MOA~ZaLxIUha~xA=rxT}$cRa9>>2|Lg!*S+4 z593xxB#_L3ZHGv?qR0?yEGV*OYb?d&J>u4y+waH++@uEEsEuVW7RE=|&B>*4Pe`$2 zO1$>u15wlDh}43pcW6+pZI2c>cmF~axW#fvB~o_}NqHuTeWRIr8R{drrDS6Mnlubm%51yC1sPwXdHdme$&MEl(T(Z zqt)f1tl`2FaHw`y8)@ptN?DCNtHqLL5l5Hjq@eo*TMD$Z?EJ5ow6Z*yy1b;jibElL z=?X|MXiXu$Ymg?#^B0{nGt>6w8gk6qPL+%eEPlNZRgfhzRV_O3Wv69@^t$u$ zjRdH&f}paO5g~|~QyKa@^4qH8>t&AccyH)3fd(4mZE2M5DIc191+K`DDFLto^_j)3 z%O(#ZyYYID&Eip7RHW@7G_f&DW;F#$KAv>ty=>4pkFiunjgh$E_^ZmR3nD?KjsConwn{3;G z7=^9KbQCfS)ZGR^rO$>smT%X`o2i6~GH*#{wegAE&{*MU=gk~#Yx!qmqG>Ypt?WC@ z5TZCa_tFkl!yTD&H-EL&uRPg|@HeP7)aB@Ne^26D-xhI1r*r=$kUlyyt{U3ef)kG z$n@J*0)%RHh<1p-1jqL>_i&-&cKu(2?8XHb$k? zi{;NTiw=C%wny@+ZA?zI!$IOIoTvU;Du0()ufGt@jk)Vl;QWr@$$02UP9>)D{Q5@o z#+el4sgl|FoA)D7Sb~PTV2mSb?{IvVBS&8>(L{Z4CpKjI^lBc#EpJ4|&)j7F-lF?P zU&1HvwOH5^0neW<*!N|Wp~!$MX48Xjv8`nZ34Pp* zNeG>p$jD5U;i=YD!QXmtx;l#0EYQB!Djtf~phNn}e)P9bXv25>8UlAcIVLz-6k}Tt zb^b^u`e?%A)RZ+kLX({%=!!r3bfk3TUvS=)PIB?dI_$~0r~^Ef@cHIf$=08qQ*Xam z`-xcmM*D$vGrY5(z@_Om^%43*qsK=93bPoYDKXyz9iHoq71=c&lBaXDhEJ^q5k^+p znX*Q^DmhVf=;#ddy}1dM$ZgtVImk4FjJ&<}y#mF! zKHD@OeX5B%yo2ftIul*M+IsLC)SOXjDZl;t7uNH&A~;8qdqvuCPcy&|FWkyl0ML*? zMaB3_(st%Uk-G_fDrFntf&!-weAzn1A#XZQ-Vx z-%OmGYchEu+HdmKvAFx=?spGW0ZeuouZ{c%UlLB=@(SA+!dPbT$Nl}jBpiRkS>vVd zoh$RS+joO`b0N=f?iX77R*YMCpK?g8sy2@n(XC=g9eDzER2%YL3D47BRn^5d2aj7? z#3%VAsHkkdP{j@{8o_!=+OP5{CW7hl%1y?9IGvI^60e z1J&k1N9Mua2EZ2~r5w$1VbSFBi8g0zl;000XzLKx;jEI4mY znODA#zUAxf_?}9A7aNGbTMEZ4%42<(udhM&G_cXxM>3mUP#xcSPqVr{Q;05()@>Al z(b{1&_c`uOQKsCkTEaY6sDp4fziw3cili3$D|gG+-rY_TIdoO-c@FBJUlx_M@W!%k z5IJpC$mEDbdb(ZeI6V{bE;8Ch?*M8Z+fa`@wWXGCMQwUg-1*ZlKAw;%OP(%wk;6w@ zS+bxax=UwtRsx8iJTsiqKSo0(vO$&+#yFYNVTno7phlX8{G-kE;%fYR-y*z*4~XDY zS+~D!36EO@l>jkDw;119q~1-`mykfVi&7Z-4R6%b&9w0KPlZI zDsxNqMI-I|v8-%7#sMRJF0W0ZndO0z15yzcaXEPn&0ttMyZM{L9RK-oYe|fc0SP1L zc+#f*ja;!n{N$)&tk|@$cW*+(KzhY3)j?9qzfHT<)Qq{bo$$d3K_aDK&(o#MgPm~Y z$rD0PJgV{=3FS@aY1>e~=w;wLjp1+WhC`^#k#MgwMNO84A|hkuUo60*I-Osn--pE? zDr>Wp?m|1bYa7>zgmg-(E(EL9+{|PzV;SgN<17(7^kKd?xF>r{)v}9c-~gE{zG`Le z`;)RQT_Q@@r#Up%g`x@KbykMWT{9wI7*A2A-ag*UOoW?;3L(+}GYy@qqEMPA1fExE zWQ`$pav*%#0kWGnulW@3ZQ_cXbO!|4cdDF^Hf@vUwgYECf+WJxg>d|7;;L?CoU!=I6XtdOIv&})fPS}$E0xB^>7b>xZm@hYGwgXYcoW85V?hKGE#P-zW*U5 z)3rb>_dTR-hsa0SpOw5i=rjY9HT|>XTU%PwEbbuz+=FW|_d+0UB83kW@H%ygp0rNW zn-C1}Q;;6oQwrx1&Z8qTn&BO1AG{{0aL8_qcl_DX%92eWNX*e*Kz%7JoP(DKdl{cl z04?v#ym{dh4P8B2F$rkSb+N45rzj7-%2=zIK&x%$O$8MfEu_>?MO4R4QX^}g@>RL% zszaGUn8BusO^2XCf!}^Tlj)u{tplE>nH!MV<$snZy5OT;@b-0)8D~mdChcB%$o z>!DZWA+kPbwG6cVm!Z5nLtGpjv7juFP|Ux1*{IvgwCtO6DxSee_3m`84a#IRbZ@!N_V3a0}Shm01U*B z1K$_@$7$AmU!(nhIqE~~=)nKRITv{ib@&#cU0rwm;jIMZfp&1=`PV=8IocrKz@ACgXt~+LQ0}+h>eKw>IIv@K=zXb#q z19tx7xc1MeMgv)g*N*~H{*O@hD$6M5|70yUy{3btdi{^ozbV#$h(w1ky&Lp^g$B~< z`lUtdgrXZ30aE{I>!bTP%YVAz_=k}kL_5eIdHzpgJ`=D1>99of1n>VoQzVKGbg?Yv z{*PCQ>6P4Mf(fJaKUE*bH}2|W$Id+*Uvv=yUm)38OiYm8Rg`-}CGN zBfdy_O+H9ixk`C98Ao))j#~)6{OxZ&VrD}}K#Ae;f95{;x|>qbR}4nn3Brz*)KfUhS**ALWC-11V=N)4)#m9WPtjTI#?650dA z*8iM+Vv2pI-a`}mxGH!aI_V*(@WI4uP1j28NX6s2uBZ_s3XE#pZ-TP>XLY4|2zp4G z63c(POF8g9I&hsDV({S=uf~`w$1*OI%po|w;w#p-^L94E6d)Y@;tUHMtC;#7iAbA% zT32Rk!37dLax1px0~IH*YDN9>?GMu6LUAo1U0D<+`dVhE(6TkHLcKUJyk&Qe;a}p`wFaJSo=R~&JmS842U@vTR39)_v}?tgBe$EH}DaN zj<4mlV9KWb(=!CG*qSD%ut3yQ?}09TICr&M9!ofk$~ZO|O)|81crB>xEKiS1GbgiH zwXrkTMjon(;S!-&W59SNmpwU;VTRlsal- zW`U0i2HSl5ySH=TEexdZ%0!XzW^g;&RHBooL<*w=J*M4=ygX`Dt>v08;_XQpX;?H) z82Q{U(Rj|+MVBNYkbd*f%@_4MuR}Ti&qU70@;3fIrGLs%;7zcZN4(>Df75uN5eKy; zrx{JOX$S*lTrx$wjX_@91+@O}fjfu)d?R{a7lyYiRiFr<)?{w~yFV3g^EmfZSYYk4 zMpk&TRLM~aXcdV+Ux%2Tx=Ld@pWZv|TLXa#=H zw&Et3rb~Ah*GutZ9ZP(c2>BK3op{r(O0P`FNoK4RN57`QOtc)(+=%(}h7+jPdwPE4 z7f79ZVBMc1dQvF*pP^Leq3WJC z?aAuN0>%-~a=xWj@8Pd_s#akC5`e~mRDT%}zrfue_@jBejew;A&nAez({I-%@c>{F zXw~{3m9qc6sS-K^1+=t~XRcpKsCKSh+{=M%1n(SIq@*+)wLn4*D=*NHo#}fk%|P9O zK4XhC&UMm*`yQngP!Utq>YV-&+oweH)KgNr+s8%!`=rO3kO6D-9_Wk`V9Qbn*#9Z8 zm#o(gc(X)hnJ5=R%kgF&Di=b3KMk#SaFa-_0r$ykx&3ERES$j(vUFC>dyn$svn}*S zZrpMTs$zn_YJ6PYF#h^_tv}Fqwn{L1bKUKhWO#GhA9Q9DBgKo`*VWuP>$*fK56%@m zIS3YRm|RF0pwxAxfBbb76OvRkBb*a4JcLqIi{`jvG^krvc^0BgZt!2Xh94`DZpu^< zWIj$ubQP%T>7S9J^{ybidLwDjxqS8WUbV0zL`9@Us^l(4PyKX#^fd?2Fm&IcJtnH_ z#UCB7EN#qrBqSLd^rUA9Url{?hKTxntT*m%*$^<|#6(S6jzw+(Z0hlLQQ08_iG$+F zu4v&pcvSVRsMHPLdAh31j7sxMe%ZQc11qDvIqR9nmieLdROekrJfL_B%d=enGKk|) zpjyH6kckAH=(3i?ClGOdOsD|OQ4R&aGv~H95p%=Hu@o2Fr0@sg;TWPzaq`btI#%a>-KJ zj#GeYxUJ?CAO*v-Q}?%`980@2n5yMaB>4dFN2E9VJs zD`|kv9G;0ht4EE60C{0QR?MqG4m;o)mz@m(iPnH1iC!>3=^wny6Bo@1JGE15yh3)P zzEkMzs(5^6B+AI3HqI4ohUYn&hS@7+C;*%BRENW*rA@Z&REOj+u`xKGHP;FJJVs<- zy;(7)$aaGNFkXh8Iq>xieUtt;*V7Dj$A%HtiX4;zLTd#72MlCvdNrSa= zpql=!n)>VbnjhVP`RPDS?6_<{uHUk-U{cu&tY`Xin*A zYGbIS!%~-Hs-@Xdw-lgf$S}q{Wi#6AhQPAokx`ps^lk*WTfQK%oK7n*Jgd=YF}HB4GS_N#Yp|3F zXzj9W(776X)OCIt<^ZHH0by7#5moa!zX-BQD`_iCyr5u-O!97E1M%&vbyk)8E(K-k zV^RcaGtfn8c4#ocJ%y;c3oED!(dUzO%8)-9(UllEQ}|`x@VAE26KNChjOPj;g-<-E&0r%^EioKd<7kV0ok*lsJC^_Y7QJ# zV_C~LMju`basL|+pK_fh0fEruOFd;ZZ8`u2dQ=MwH2>;$tO=Nc;}g9BTtJp@c@gQ? z*P(q_QN|yH{t?sG1~it$RwE@R;6eIH1AE_~;GdW}5z94Rx+Pbhh;B9AqV+cmxxLRB$?X;} zyM>nqO=;AZ3o>RyiUjpr-5k$x%Y0W=n8zw<+I@R5~X=<3U0 zgk@pvqUw%v6|e6#O?;t4PkWw-P*o!Xv1&pBQQ3M&0E1AZV#XAv3Jxv_T{!bJwfbeZOQ&!{Ir! zp}D%ZnYn-+GVppV;w6ceEcPD(M$az+5SM)R5Y3?*r=V%G>?GZtH*J5VL|s@kKzS@R zxN>es>BS}ptV4ij`7#&>^>x_H;@$y43Y{Ti3C5M&TQ`KrP^l2s;&@Je{NFYm_J!t9?kqXKE2G&^Ks^>S^A9tv4`Ukf3w<7SbWy00?;Kk%r* znI?RhDdC4um5Jw@qx1j(E>Z|#aLGK3f^Zt*lCfI zFUrX#fPO=(WKj-uSzhQy8Sibp0$0o-na@RrCP*yAlg~MRlqqYz(#d$f#X%F_-oVgj zqT|?(xEz;fB@N z<-EbaAX<2bl#=PQ z43e}j*i^(VnInCNp`%zGSaM3ov;gY-!JqTRpQ+(R$N*lX&zrDA!%gb~rkMI`7X43h z=FuV|sZ88PbJ6zQQT)?gm))A0nDf7*8!4NP8&%*~5HFMy|3Kl}sSfdBl)HSpirh{- z&#zc7N0i7a{uP9g;B!cnrok)m@-3Isn5FZQ5^U0bD|h zq`oq6*3XEAOqpb!>MSb8Q0ob920aApQ&E-&iKTN75Z!zPI&>7G3Z5gO&}HMDpH<5U?PRd~tKL7fum zA-fi_5hC}2J_h6)gi&=;3O=sR8-31n#5}=*pZl=URv+h`=}CR^*ygdT?jt&;S*HgD z$bGNUih|P*g(MZAxdV&}q@5c<)jxqOPqX3ElEK5e{7_*3u#lf~0%Ne}X7z-sK!M-y z@z#?v0?RqifxW`q0w>|IyA?D1f7!d2F}Rq`dCB|5o}d3;0Nn&4`=~s0;$Qzwoc+Zq zqA+Ms=t8>Z{vUZ>{&RZY0sC*mp0}(FjP|blvFJU0Mjkn^u1(XTn?w07v~~AWo0ad6 zm_5sLq7%a3n)!P~W`4{19k6^9p_r1|u*CEg>#0rZb`F*I$wXGGPADLh$1O310Ly^T zh9#&2M~_s_52B-wLQw6nw>2nGf%6VqP%A>}*KMD2*4~CGs5k~3i_U?My|pcr^`#KL zLqB^;bNxqH-?h-QknUflb?bLJ`2&PdOi9h|v}6ft!TQgls&n=t6hkh$Kpflh3+4L| zR4>Bp#hv1q;KFo*I(Tf87<^t+&4TvcU;VA8E#Dxh_+ES7utp(AICbxXKUSWj7eR%C zufOD?nzMZ25)o!rIns*2js9wDC~d8~hx~{(Lf$SJ@_p_q~|1r_05h-tG* zD2{E}sud^*2*SO`|8=LflZW7(r76{?17f`I;YYRK(N|FMeRUU23?wLUHG5aC@>LfW zAzz3AjuW9_zu$|0hxt7uZh0tNkEEGPbf0Ap0<5+`Tl*crK+q3Zg5)M{mGeeqVvu!j z1aYTj!G6@Wtw*-r;5zMq<9^Q)f0ug%;obkl@Gdcx0-GScOrJa-^QM@nYSH~2oY(N{ zXDGvna0FiV{Dhlny#5;db95P?a4dE@02z>7o8ITTVtF(rwJs;3a5A(Wg)F^2D2X?4g;oi@VvJs~7Ziy{z$ zrA}RC)%AkNE{ka(AyPKj>aZS*oVC@27!Qj!WC$mec#}|6Niqm*D>v0T-dRFZ)hQ&w zzNsRlP8*?l^qTT%j&KSosRcPuv8|Fqa2$@A8C3L1FX@?5e zwZwYd7J~!xD>6%~!*o9Hf(kxIE}K_vLi-mE&y=@LgR_ zhrHfThwO;zLg)N~hyu=UO&IlJtz&6(M71SgTemxHUGmV@w>jrrb6Y#d9poNCn{DuW z%?P2GlB9&S*>PZao~ih=ElwxdA?w&2aYko3#p&#uB^_~x)2YAWd`?He<85({cZ%~J zEmcC-?Hp@YpYJM#&`w3?duKY|*CG*-Znw4yX&}_Mt*eiva{i@0=ie1lTUTG#u0G%A z+SX1RR*rc}pX*k+FYM1^B_l!zA%qY@2qAki9{f^+}?002ovPDHLkV1i-u1RekY literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-movement.png b/_static/img/mascots/scylla-movement.png new file mode 100644 index 0000000000000000000000000000000000000000..7ee2b043384aff3efefccd431719dfe2fce9569d GIT binary patch literal 14720 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 literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-opensource.svg b/_static/img/mascots/scylla-opensource.svg new file mode 100644 index 00000000000..299e9cb9955 --- /dev/null +++ b/_static/img/mascots/scylla-opensource.svg @@ -0,0 +1 @@ +Plan de travail 1 diff --git a/_static/img/mascots/scylla-operator.svg b/_static/img/mascots/scylla-operator.svg new file mode 100644 index 00000000000..655a450b2a4 --- /dev/null +++ b/_static/img/mascots/scylla-operator.svg @@ -0,0 +1 @@ +scylla-operator diff --git a/_static/img/mascots/scylla-plugin.png b/_static/img/mascots/scylla-plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..b28dc857ccfefaf6b20f893ae11c51d827c70e0d GIT binary patch literal 52683 zcmeEug;$er*#F4UpopNfg@TmS=m{z)DIwAz(lr<`H@ZYc0gD{nH4qrxh$1nN&H)mm zhf=~Aybpfg_pkW}{VTy?)p$fk1uk5AWSIdNH{% z!}!T~B$Y_|QGCswhcrZcJaX=eN{!|V$lnC&5iacjjb=&Qlk>@DZNhPeg}49 zhqHWpqCNa^i>KAA_lL29iE~uq+bXlQ5FhZA@KP9s(Hkx5E1sdk_~|`!tX#ZOj!R!1 zezu=WG4fl}1a^PYc)jNI^f3J!Kp_BOfBqRw--J>Y5-uqq^kMId;-fv3F3 z+P{Wj`hJYQn;({8)3f@-(QK0f1fp934f3}$=9<^dph0OTpjjug$+e#OrWkc95C{qd zvjww>N5KM{%6A>rUYtnBdoY)_`-gMl5nfLJkuXjBTdjCI(DqhbB@2(E0j7REuln$T z@YcVhLGG*zOWT3Y#R68H??cs>o**OrX#9#c|9u!D5v0Z??rp^O@xjjH+|&VB$)Vm@4f#4A=g?_4y=SF+E=uAwnjFem|YgG|xSq zwg1_M<)_*2nDR@$I%OVj#_#ST8+BS$w@XAIPlJSnw5D$5Buve7%k%u>&~w$eV&5j7 z?tJfiDj35Sl|1;Vu($<6kq^^jyrD}jIzHv!L^v%tz)O%V{Bx}C(*_KOMBdZW7}-sN zKp=V)qiX9E`Hy)5@XW>m;ZL0ObE0<}mYyt;;r#80Ftq^r@|t6~)aD*Pwq12Ta*q~w z;UDt`xw}30Jw}j6_z@Il4NR{!w~b*wacvT zJpO#Qi2Nn*d+XC2lN_VwCyi3#ZK>t|qzY|ULn3t!H%(cVio!(ViWyEG`=SM6^jNlv zs$Bd0d&c@q`ONamF*57XPb>f1vD?--`rKzArM;H&h5Xy0WEPX|(mzGzj*u$3Du(rj z7b6sBra~w5iBm_5RIi3KzSt}jNqjS}PPd?`?KI|d$fWaGyr#9XU*Vtfu&5#1NCxH% z%aPK-;w}%zP+rDeJ#9RiS$`Dv<6H56WR{E`T0ehU1{_Yo3(c^xVp-~}3Su>r!bo5Q ztgO^oaz2OEt2GF3+~QZu4^f$|+W4Z&2>1{{FZ1b_Xol`==*%nmif%B>eI7~QFJ7Sb zW*cYMo3|(>?i3bLomtZMV+j)hJxeT_K_2F9Gdo+Z@J{r%(SO&dV_Bm4*zSU~-_ulm zTWp{!0M^w}Up6wGo!#F5O`b5!vM^5X@pC`Z+E69xooBZa^Pl-w{gJ5guzPT4n3=9X z$xU};?*g`CEGd2;aijI$fp<8%iywssR6lIH=2x@`ePL!Y#xZVKo@<`%>>TW94akpf z1zHqd*Z!i^xiC?v`km!e`mIkQajx9bWT_CRf_i+_F|%s9P$Nfkqw!S0MJ<6&4~SYz0r=aG+CRGut1Ebfaj9#U57`i5O>{jWb3aU>)zb%`fnCJqZuUCkGQKE_m6X_GxUoPW8|6>mRu&Z9{$J`*;dR1`$}JF_r(J#|FO-dez_7}&PG4BW zKKzeKj!esDb|?Dh!;o5xB>TK)f7z_KK)6rEYc8RBA+$t4Fsb05h|It{SpXL}7XtW7 zM8RyI|CsGHomME(PhoFm^k4tCMx!|#(A)}%EgP$}uNW8$=&?vm3;)wfm96}Wf(ygk zNaHhpUsY|h7#bhxw&Eu2=nD`fozbh_CjwR%Kwk{62lm6ouV<12F$n*0#iiYiYX+Hv^kF2MODc&Y(pD z)qbWT$r{Z#v<*v024DRHq93C>@k|BYZ`kmeD=N0}fbJ@LS2dmSQiC!a>9)B+4F|oF zDJb5w^v_rAE&d0~zoT}Z=2f!yQV2Z0YdM4;*~hp3_rXu_j@qq6z3Yiopu0`?KKmFC zBYq42J6akr+zl7!ST{O!wbpvzf-mq`r>MmJ$DYzm@2LPiiy8PQm4SN@>VLpIw#Pp4 zod1euAcRE)1j&G%=@j1G^wZs@ zpZYrBGk4_J2DmBYw+3U4Jw$wXotgruHBjF~#?p9??(u&sdSHCcBaIcPoYlaE=PjkY zAU2FTw;buNa{FEHcQ0KO&J3VRF_BX{!nN-b2n_l?F7XuWu(xKCW+ zx{}}K<%0BF1Wbo+r3(d#&B?W-nnPKtzNcaVUCM%CTu{{Ni%!ThhQD96v647fRpt8E z+<23jDU>RN$q;IyADfY^+oO0UqyU!y(>0m2oF zl%OciLH^}eXEbUWLdwJTz%iBw7a)F z^WD+`m+Y6S3dks=8dBv|Ir|4wCO8;39 z+7i6=KFc9gpvj=egAEC*vis-Z8w0j*C-S%QljK59v{aGH0=PK1=NuSxjhSONAQJFR z=%@<(Kl5=UNrOU4>1ew|?=Zzu0USRETz0SdHq-iVtZ#C)J{73-^VKOtGH)#TPH#No z<#!5zA+MCsQL;?BqMMT{r4^`a;L9L32Iklywz@cJRE@Zl63dybUzoQr-kFr(ONsXb zL5BEW2t0`xfArdyF6(7-Rx-uTOQ06_XjjceXQbhF7b z`5DSmF_elK^lCpVS9*!O66N2)u$sKxYzthdFy~A*u=6;M?qK2!1BSmLH#e}p@VFPo zA`KF_IN5Fp*HiE#Ily$ANG;Vf#K^^*8!3KF6Kft zuPQt%XpyxfR>aN% zO8fG62?z*!B<_JaxMQiod{ASnIJzO7GqlA5qT}H3X|F3Q+NXWlMgh8WpTp}W)^Q;!!s|~tKp`c?C485@$+`g?15u>HJos_O^2F&DRxlSRE1L0mqp%=rySz1V_0@bEeLc?Jg4}>iMe===R6%1NH@xT^jCH$Yy`unZ456}1R|+@wehgN zQ=6dUm1If{P7qANXuxic>^=I##nAF4JP%6+n)`d@N8oi!=av_3^4V#Vf7{l`Jhq_L z*993G{5VIXwF^A~I450rH72;f$bain%x%z|5%3{5j-!`f=!_A3sbCg~)T2E~5;xv& zFOFvapXn?x6OO(fn|%9eMff~&RVTe{rYn>NBtTh|qsX#4;?@F4F5^2pPKGNF51CxI z;G_?9)RjBKu{lZ*o2@2syeUP#+$FU*YIxtZ4B*lGY(`KV3s0D4dtJ35{LUBUh{6g` zoT*02eo9C1M-wxQ)?R%_hm6!%-}bwqe)FbEOg({j^VP zCl7admRghdgvh~11K6|Fu!MClyy3(&ly5aduoM;8Q}*S$@5Cw5}0k%}pK{JiZkBfwI26e)8Ae=hn2_$#&&?&FOVYjx8IJ zyN>b|XONfz+w!?-LF6uzQoiwSp_Q`BqTsQB$$E{Nd}t#%w5j4~D9B$)EB#kK>t~~f z2p>LI-XkvY964`*77>m}dqfB+d;!)d8JonZsFkMm*MG|1}Ywfb{`6oDXjY*b23y?_^!t;u z)t5n%qqn*lkD^bl{nOdv;B7}LpOwL+3_eQUF--PL()WqbP<*NPKd%iuk>{9Yp6zKQ z+;JU;)zv4ZQb7%P&jNCCLOgbqh&l&dNL{_8jW{PaW+ zfhm$IZZ|G7(=%pt_)6QZtykH)(D`9rZ-{gZ`6q<{cpR(@5hA6Ed^$))vd{BCuY}i` zOp0>HV$8`m->luOd~R$Y9sCcE!6hX%2E5FE$czy8hKxRDgzZ0I4tSKRK z|7gqv85)SS4%NHz@&`=~xy?F}%5}8iML|?kNDx@#0uZ+#nF%yQ6}id2t_|(-Bpl_d zXyK*g+nYD9L8J^iLO)7$4^C=HT!-S(LCYu37 zy{km)6A520+$>Q9vvJZ;x+g3bbdJ&+|0qi}*rh~jO)01(siEXcYWR#eg^Yjt&q5}w z>m#eZYWbReR+VVvj{rPbsbe6(0c{1i^?xx4t=k@b|6 zGB1Dr+7YAH+IjX-({#LwnN=2RFHgq*J)kIgY)U0&@)Xy6syhjyxF>vTbE7CmFGVFu zKP|i*qboUypL$Tb72^OMSYrX`o~HH@D&5>bun4%Y2t5F2$t<~8r*F(W)#Kx3PBwgM zU4N~)F;5tkZtgL6fWLGT?dpUM$HhNTFIEH;8_tF!aDhuVi>~c9|5jkR8PX+o1SCVQ z3JpbzA5V)`g6{`NQ&@5A<)>R*o@!n{BImzR7}*^%Olg>$;r)-~Bo+eAf{jZ<9@ce6 zo>K^v#bz>M;lA!-n{Sq;?e%1&FfTo+qjb#ZzUSO4N)Ux|GzHn7sP%K-Yutbtdf``5 za`C&sZ>2IpB8ne8d-6(yG);_^*OW(rZE0rHsLy7!nY2s$-m^Y{k zuER1=46!%G3F+BsTTDtwD784g4cNtCBm+tW$XFiDPZwdE)?W$c9q1TB5m7|*Htz#9LyTIkKlF16HVTZcs-Ha z4Pa@`-)W@?LbT0`j%u-}5G}`)zWfd!A;}k=g>j_kP8RtDs&qpJ!dlwjU)Tk5{6YD_W0M{d5a((G73Zo(ZpYFsVF=GQ zC5qQk8qm(6i#WzSdzXe0ym<1Ym8lN*O;FA7pCT9r#C~Jb_GE4Wknv@~A8m0~op zL74tAk3}0w*rUyjL(mcSOHnPUL0@rEl+<2YEIY5B#pV{HhZ?Txdz2<aE4T4D34>9YiiZW_{J}gzSfF zBBUiS$?ju72Aal&7tf8vCxrFcNpP`14LXo@xv6(yugnugiAa{!RFX;3GKYvef8HF; zt`I~EaO`}=273W9|F^vEhV$uhf@)SS@9V61#HPUZq?QO;7uoNsNmPP`%r1M>O{s?p zD}b&Uen$tkuuiD70`cQQ2}N8j4CD7JGMXR>?37;q^WNb-B4|zhT0%RXEKtZ}8Qr_w zOC7TKLx(2tEVLx{$hq@nlWKdkW9id@?Q9TjCjqqU(%v%k!)iyixRoOAuzpwR$)Mui z){@DXU8(F!+^_|=D2vI7qC{Z0@)z@ws!0{}V)cMm7uxfRn2z#t~M{YzDTG--7^ z4oMHkVhEtC9Np`KHExqGqovN*a;A8C=GAqEii69^Nd}uVyNBo`0CHlD3Q<Um-GsZX0*u)BDi?BvV7y=_S3uKK#%(ToQ&gY^oJTf>w49K4_p*Tr22 zN=Ho#QD+rO+(pnPE3?&21TPL7V=_Ozhq4lQG?b^epWs;QW7BsuP%Wl?#WH2(@^zf+ zHBg9oQdverLE1sH^P560l!_x`2y}khd-Bh%4*8Fh?`b;3#QqX?TSWbbCL$2NB`ZxP zhe`8EszF6r2&LkLiP`Pyz7GBS;1KE`>NGQJALn(+M~iuuEFtEK{K12MuZI46%ykz8 zBG8KH?^V}gr^dH(`Tm%&mz4+wX!?f_&CJ8S<8SNQ2|Hk~JdhJ7cEaolmX6T%4p6LK z>tlN?^0!=1s`237$q>67 zf4L(1dSO8p6#xsrAC2q)N?3qm0d0P1vBgf1hj$|20u+RX(JUem5b8!r-!LX}3r(rq zYisaJ?lz?Z{qA;)ZrE%lSZXjyHeu4gUZTwCGb)@q{41Wi>6^9$Yew{|RJtrFo&=58 z%alB|xAI3u9uQM{V>TPe!TF~TO8dJw$2PaVCm#@=kz}xcTzh1CGCxtt1(hGs)w5R=>$`_OO zl>t@$e$fA5e>LE6|83m~SVqiAtD*$)?N){->4&%*|8fzK{fv3h0#G<(4-K9m88D%O zjr&P~2cGhZpsJ)vrxCm^#Pc^`N5^k!+y6RF}(X#NhzShw6OemV< zzGMAx3>-PhidReJ94Py>K^5}iIi_=lk-)GFcjL?M7Y*KgHqH=&9?*x({NclKFdYAPkQRLT#%y+D&$22)v9;(&l3w*%-S9%K6XKj>G1DEP9inwH_!d<40_>*)fr7HLAj>3=pun!qr|vhLe!HBNDMy4VGh~M zV)5=9*Yng9a7jv5X3_YnM!dDZXXYT|iWYy@ZY+fIpl%)R^L`Kcn2uBlsK99eBlFC1KVKHtdPHeAiO8lz)(Y)2^ z6I10omEU{XnpZ}Eh-HmlJckHy5rAcz+%=@{0LgWBr?S~w#*rpOcH%Hr?{Eadxr|F$ zG6@@ke*QCo=#x9GE)lG7IZUe34w-d4c@`ieYU8}@=!nS`z< z*5t(>c*m*BI=^YbsdMsjgP)Y{n9nHs5#xW@Efu^ufddp1dZ|L_f`c4a{FChAj##W? zV1)=sF2-%v`7HhU_}xGvT{h4=tHs(_w1qrUw@j+!gDJdMW-8ip)lsU@(z;74pEy@` zUAW;QS)ua#!!hZ2t$m}viQSjLfOE|7sIG$p$)>j~$cddfa;UROv{bHz)SUF1wJ|ub z&wUf$pro68g_y;B`9}_t`JlgL=!Y(NGN#v9NZUZYK6e7`1>mJ;&F^eimnQMZR&b{O z^)sne5b6?+_lm{TUJ8dk%q=<;l|dX*D8JikCQ~^2J6=WZ&W~;)W;PbT_^IwSemw9w z546s3E#JQA-*mTT1ijLHvd{J9NOZ<-@CA+<$rD~T8@_Bb7 z^Z93@FcVL%b&j1+NNuH}#2^RT5i<_Sqdk@@GXD`NAsa zn-=HCQbpoaf6?sZUNY+_4Z*ZM>k{kJfPJCP2HJ0T>ZWz1q)v{>>EkNBY~s|?-qjR1 zxb{!do!krU(HB{bO&Ew;jR!8g8nQDL1HXbA`ckp1!t*?>Nd=TkSI{E2Z%Cp^;d2hX zeMXQ3jb+hai+#2Hs>jMgGdD?A7Ryl+C0^3hHSto+FwX9#DK%mqKSVqw{_fcQo+#0H zK7zfn$LjBBp3P4u)4GTB82ao}OL@f=yWLczp+n76in*6!lUTyx7xk!8K8=t0`~k-v zhCi`a9?zyvMzlzh!9kk+$xZ&r$7OC!@s=pnclAECd%HnREv%=`@EeYUD+>9}hupHP zkH>++<00BT#Mq;-X%79k|5KO`Rwqb4ynAqAojBxPb8wQ&tfHe@X?Sw%s?#GY5b6Uo zv-}v(gXA;z3dQoO85n-~e-CMJ6{!(XTxI;^H}mk^=p`M&f=#;@qrum^NF` zOVc%jj0s>%qD%sV#b{p(PDoF+b^32~5Hxz*OQON(?Xz@IZg*F$|RUYm-W05FSh;3406C+-fx-G^zjQy20GSdn6eK-_2%{3Ke z^OOhX4Y5xA<7p=-m>S}-bK@pg^yoQvsb_T~bRlnh%v=@ckFSja zK{U`N0qZ^{T&(I&VymhPhozOm@CrGcNMHJu_a_GB7XCB>3l>#Xcyhc{fg6rPvQc4978ka_}s;F;KgBqAk@h2Tnv-jv_ zEA`Fz1>PCFOYE5<)=#*wsMo#01H%JJ@?w)7qu%nd3YYnpnW*Nc-?iT-B>zhImi*od zB+jIK@b)xt!Jn8i;@M=k7F5$N-Arm;&(CJ4-}i0_H&I48yLz!s<1u>CA}?9zIl!<- zVnqa(T%C3s2ypB@i4yc+AW>;Ir$Uec!F?N+tV|AgbLn-YpM0gPar1IK*&mw&OLpecSeSVT_ zz&gKA*|T{k-L-Tp9gAIIAjHFwMb2>Wyb=UkEb_GfcxyJ1g0PE4-JY?I&Hg^LpimWO zk{)vMuw;M6r<^Dh^49yYGU5wvB$5=o&9#o3noCuc^=9*aP$~HBEwB9^*F|QtB4s^dd(FSr@5l}+?26)<554;X{iZPXrEhdo6k*?B80>g|ElR0WDqWcypPgg;@`9STJ&b=jBB zeH2yI?lI%A?D%ziU^%8FYA3<{PFG<&(tIq@{4`L#-kKF(3tw2V4S5ec(EKTZ1UH14K4c8+Z#tjx>TZf69l@Q6pp5c~-X#sp z5^m-UiK;^p2OYC_Nf$%jDggcJO6%q22ca{#fh0QhtidM|rrdN z&}-s0`3^_Vi%D{)C+~WB7|*WQ?+3Wv<0TRIEvv;6!3==f*1EiiE13szeQT)qJQ!7Q|&kkS;pn!b2 z-jA?xsgRy<=g$Yda|84%q10(Ma~V2}&<7JNzR9xW`lsoqVc$7-t|;WNDuJew&R6$1 zd}wd`1D%|H-vGmOBW+je3Kdw6B<_kHQtT~jcY8uvE$$*DR;Z!0ypy#PMT5E6A}Uc~ zcd_`zHFj4fFYYwHg3?vFbvpFO1a9ZEf+}0Rc~LS{IZ%imxHJV!(WFdSQ&Wt!6x{;B zuB7Y{yjY`#^lO3g?EHOdHSbPiKO(Wj=qIn+WAjBfwf1&oD2#=&zNwYN=Vb>4gkx&o zk2xy(W4rvvsZchm`lWKn6ve04brKs^&gLtLtrHQ{k?_brj&uYe5ew-=_J|PtvYbI% zdDCUkcei5mYV{m9(Yz+!SJ!gDpG##C#llBMxNFyLqKmz^p7;5T3KQNDJ$_vi%&18k zF)m+%v4bwz8_rw?`WUmn{s2y&%YpV@t6##)jjB3x4#lEJ>wy&Q@^SA&_-bVyZEnU- zg@d{TruO%1iwRn%bupahUWNEMmmf-q0Sf2hRnwRz{EvTbqe-m9r^XsMpxDv0$^S&-o2OxG{wviMx(6IGOo6&?2 z(NwtWAWVH~-yQ-1K_$_gv;0kvO&{tsysfJL>*{b>Y;dL1gm}Cf?=QyE)U9$_f`7!lA zLv}bZ-fzHi0WHGbdB{4u_PXMZUBC9AR0L0gaFcA0;U&2iQEW(#gUzDW~Bo+ z7E0Ya4ka_%DZl`8&sPf`OLG}fR-OSY3)vQz*VR#^wziooV9D{v8W_8-Y-%ydbZPVIkF?=i|f{FGqXNqF9?zfter-Qs!L07I~ z$`9*4UW*@lavztYS(feEloICBgeZO|fKJyO+h#@9q~dp;KCQTd$56QvRq$Nm=Dv%G_OXRqf9n4JN*EVx?I3u2NmMpf@!_+H)TbQxHLoU)Y43R` z%wJ4i47i!aN;evHX_%hSCK~joMivnqiLh*@M9qoHKMiJS-Me3r=O0_A)Xbo;xfucf z>e{=MO*w1A&*H+1n*2PLX@1lDM&!lbVl9px$G7C8Kjq;^XoC#h=a7Vy7D*Y-`GD2R zvT>vSB~yIhA;U`O>~nxZm~d6i!bc{h1PU)mlgMrGJ>XdvpZeXj>Q1`w2$F7RW;PLh z3)y{H*o3G|%nB#YAR+08GcA%p7$UYqco$Y@zt{La^^*66f&MD+LQ?q&Pix`0TbYBQ zawXP&=*i^NRVWRwZ_(Th%o=~EILgM6fDucrOv9|7|L3)DU+1w1v#vP;n9nJywAegHs zE@nmq$w2{Wx)}qnms{`e$RCr#U82&QJye6%2*12wu@$NV>DSN%6#NRhC!mP%a~-`L zg4^{2VZ`4oSfw1}_z#u2s$KIh$kRFbLu(QrzW*G8347&nQPFP2tSqLoP-i|scYOZ1 z-J@@LNckX{QRE=ygab?t-omeTJv^PM4(D(vM)><%>s4mf4K_B_dHkPRxtO?^tvjN5={`h%pxV? zK8H3DJFPx~zKq1~V_F~K6%bmXc3(L<#Ol>1vMd|LSAW(tvSoA{>yM0P%nQ0-z9eMI zutMUd?C+}mRJrnYzHv?g-TgTbkyuRf+@Y#3&M2D#oNuqImF8*iNkELXz224fy3dO7 zr54kzic(P&O;tB;ZI8e@VZd3selN_o8Bl2R66Y|*_G}vrF#noB+eyQ`BFn4%FbmVE z+)vZ282$^_yQ)GcLIp1zzjMdLgS{d-PkgnW=?kIFk>iYn=oebc(iz-6fQG@=7=N|8 zCrYxuvJ3N1EJ(W=lg=p0tITc~%%rea*&Rc@t0xiU({~$a*LK=DivlX^=ueEO0%h zbD0ZHLnqoiR8y(&Mz%+qs(W5P#rcHRaU-ac?flsoX>`qr4b+{8xNuod9u@;jONQa< z;gt3CO7C8W0AW~+47i1>x{eMJO5ruHKXMEt{EJWliE1;r_onfjw!(Fwe?RJ1Ds%dC z8~f#@-Onhh1B+cur3^6w-Y!p}j0#oNu@6%WF_bTN2)xZXU+v_{+7Fbsc>EF6gPsF( zbNq7?w;LXQz!6Mo0MQC@sn+K?@wf>Ag@C;sxf{zQV6s^uNAKhhbvqK)e;!A_QpypI z|LHAy0SMVAFC2%pE>lil+}xb6B{U~(__GMnrukRjhxUKVfb=jZe4N&En3+tgf?4G~ z3NjM3Y-`--HUu!-$v|-)9fHr2Zc~M*@QB{`s~H|WS%@NDLw6+E zUZpJSmWrye&k4iNu1yxVn(lsCw;{tSjwn74!}#nqO&}&fg02LEw75)kcQ(AxI6u$> zq&RUmzdQkgNS1J;wqu|(0tW^Wc$gq|l~m9t!YlDpQ-i-wyyT{)>l!(cgOO+E9|5OC zg;6R1<-vTrO4>l1w-l)i_1quxFOXrlWO%Kt!$v{t0oD}tQCfD)M%!C8h-a6oX!OSJ zH)T=ftvFqX5ZcicP09doaa_%yf{EhR>dI+nPWDJRORQ1fdres_&+~}+@s@6f6<(?c zv!|koC*AVFvSbmKyftpIs9pXh|MwFE)9+yT2gS3fC|H_$RV`H)Q_901UKmwQ;gvS$ z;2oe{bq;q$^?gS+8KQ2uFC9}AJC%iY2ai%34sax-k&7p*Mb4v+ z`kit$6u$j%x`9uIw69=(5eRPIL(Hc|DHVXQcKR~>uxtFpV;|~CaFy}<#NWLT&=<1b z)vdAuR7@_r4v0=psm{R5g0&h1Hn;xM!RNB-YPW+WfqG1dn>}@y{0D!Q(XywX*X?X3 zI-kznzGE1M|DAj?bqCJYElAG%7KZfq)N7ZY=kWsj*hyadT7hMNzWn)1R|5QD?aY)c zI-dGTo*$sXbnxqY4FpslY-#hp^42_!dPhhBAnQ7s9d{0X7X8=o=u(36nM1vP_}}01 z0p5ZLJ8Vr9+Mp71`p~eX^6Pb`$2WEEaGkud%WmQl(#yYj%2x&Y%pjhd>jcl;mNc&a z)r+cv3}94vS(C$^VA5|}-gHsqX6)kb01fMkV_@Pc75o|C0@wk=_}L)6!fP51jHkc_ zSkNh=!+kG+FfSz}%_Owt;5Ji~E6|qwJK;+APuZ9#O$HQwvcp*BhFLIyvEfh&aNN(h zWC{S<9a&a+6Q!F&3jfJR&cRAj8}&R-`ZZ$?AHYMLiPC(RBW;=aM;5Y&ecPE$AAU)#N!_ms@XZmcp{uB2F>mYhQMA zF&8G&_hRhTwy)d{mYyO9C}#w(OzIud6I+6UF15~Cu>smANDaqU zwz!#@^?uyHo0itEjta7^Y5IO{fRPpio6g|bq&VqnyuTcI-M4Y2i?{j>Iq^zV#%48d z$(%sW?VN-T6IDNhBGg7^YMFW;Llc0` z9M@-`Mcq+h+-*gsYx=d5s8=Crc>uJrUcikgoVJ;7?8=H36YB~7wRFMmG&qGbOg$NZ~-)vHrw=+0nL1+iky}RX| z*_fcRjOZ5ARSGDyKQC8ntuf<7w53S*KCfm^zq#2o72R;rh)>SPGZ4*2DD?T;v93n! zOuyXGS3`Y&W&Mg$^*#tBB&_#B++>)3O*0EvfJk>jNeegjLZgyFLt3LhrPs;cgWq>{yLj-c|p%0s`fYcPW)%|4#pN%e)9-VmS_lNP(gb+ z@xXxS9F0K1)ea-)Zx1;)>Kbp{jx7I{ad4WRLJR-%m1|I)fl$MSo6>dPz|OkSkDgVB zb&~h_G-6Gp$d^xl^CG)Q_;7b|oVXmw^s%H;ld2FcGhZtsmqfv=0i3gAkxk)7t)fZS z?*qQtHz&jff2p6!d2xKtAl9Gefme3!pgF}9#(MpC{T==c(`PEpCa;>LOze2pMs&g(!x@%aoIJ^=he*p*EKWSR>Ij=OYbbY?jSF^_ABL=1-^MgXU9C+cG3Ft}d zh&ZFy2Ta4a(yaPD`vr13n1QGVlIy|}n&e6Xx%dj@M6nNY;MRi;U{!96!)%U+WVor!t&TSVJ^RS5 z2SS{kAFTdbIUnw(xkUiHv^R8Z%%O(8X}$|E!L5_pNBS}KP>=%|Gk zz%Y3GVUk*Xq^u`i_e}hQj1W1-{(On!6RcW+)&6h<-2tM6A z(CP2a&Rg5Dq+g}DnIn!SvyaUOh|Mc0&Nm+O`0p|)y{***o@Fk}{&B$#?)bsK_5$v# zs{^Lo+>hy`Mo=nbF%aw{c5P0)2|aoK`B%mG|M(I2Fw07~2M}>?Qe^8C#u)3%s{p)3 zy*zHg_Feu*ATUeO_(IUUJ_qM!tLj?yQHLf~baX&?*eHq@N59%;IbJ$34gc97re6P2 zx)F_y+fqQgGFDbaz*RG1NpJgRrhLSJ*CW{m%&lLU8+E%e^C*Sf^*Z zm}=HUO47+oqZqceIFwu+0asHHR2H4LAid4+E6`Hm*u}U{x`YDXo&a~dQRj)T`h3^x zQvR5U;Y?_CxwB{gA8N!kRiL%UereE^p0LV7I60hGJ`Hj50>|l98y5p54mrCD3`C9Wx*ze+&29=?uQF6&-e|zsO7kxjsS!!K$o&P`U|}%cE+-L8Eyz2~J}Yin6e#&f>Wu_pU{r1rUoT{FZMyomRV6##4u=10=Tm~79@I*%84ZuH z0ndq;gs^uxvAP`(ECqN!Wag0&O;vxFK7O{}Jn>~@l}p}qW z1`fdd=ql_tkObU2fI89j(ON5jhvfVTo9morQK%^PfGj9&_^hqY%n357ktDw$ModzzQEDr5&9 zi_+7--7=h-E=(FP7*IB$1-^ST#%E%oO%3I?io6uQi(fDw!xy94fjO~eG8?dUUgECX zwe5`V3bmQ?nao0VK<(p6?~wz46+6|N0?^7z-PCiKT^NzMk;V67yp^DS%1}Uu znTiKSrUPfrt;fCSDF9)e{7b$M)EoF33i|g0(81>EnV9$o#}Y(0$$k23ShMNKMpkzk z&o(10Z>ZPp0dNC$k_u}Rh3^{l7P-t4Z$D}`A;cLToJ}4EJ?LfgApq7vaT zF2`J5GEpE0h1k%mJ3z@)?co5H4l}P*K84@gyVF&~*98VfW^N;aQGFy1c*@h8K-1b5 zRCz-=O7`lxEGj`=&6MH&bQyb0$Q3?s=8WI|=%(O|lP!d@)1$SXtZYa+>HDoN2o~JI zuz}C>bfyu!Lw{$QZgF4a_nV&g^}XFp&X&zXS@?1wxF|z=KGL2Ist2gMH}G1Ad(4F- z${q99tylY-+o5A_aSj69_`kq|`u5e;yVmMkpUY&uSR)4Pu|w1`#;G8gCh+Z)KH>1t zPvh($AE1JT9)-FgpIuE^PqnM=74bdG`}MuNCQHg18BJ{46CMW~I^E*?%m^T7WYPAuuQqEX^={ z>*|7hpv1)AS2&QZ37cctWd0E{H%asw(6;cbhRI*Caj&vTQkd;QZLN6r6KT7>@i~DQ zakt*RCW&duw^XkrI|y~4H;3Fehk*|Fzs0=NlGY&=09E1NFu4z)o+WSZ5SU-0#a5|M z%+v*2`GX{)BmM#Ne$OKk?IFp3xU+TCcCQbRO!&lsT0P|^vH^Ee7hY>L;xiAZ8c?ll zVYfHLk1}F@>8bd;|9ekD!P6sZ*7fG(<5o~?{dX5no#n>X;`Jq^=^j1JQwyhG^17C3s ztZY12r(+uK2)X$EGZK*PHprN7nlh;=(4Bqg0^|q*e54-qgInXV6^l%mG-rTZAOhjx z#7>%h2EW2@4# zXpUyVo13ZEx=jp$;ds#Mff+>q=CD5dutUg^JJ3|jE(quJ+#Y0Qpy2jv>|QjlvS=vw zKz2&X0APQA;}sqHc!sMr?)HoN?Y6#EV$pAMwHrX>!O~%GU~D^tvVh6h9l;#%CIO<# zHRxJ0W$%Hw6~=M^4=ETsPtjE|%9bHrdIx~X@{_MnQ3w>N=8G?H{znw`%kF7DiIq8X z9RrSsEr3=EhG4xT@$(C3X+kh(^C#Q!iraRRFUg5Og^%D<1`*GdZdWRkzFsQiPjg<*d2L9s}cG*jfDW_Va4S7h^sRkxO zc(_fMWJLnY)jRsqy&0S*21o{;dUCj@57B0oCQL6Fp5Ci5kgIKgP&YJ2B>k6hblfBp zMF6N|A*d=7pv(KaOdF)UR54O;kn=tLZ>Fe({Pzmg&|nHoO;!jjT$Al1tJ@lmo_Vg` z4qC3I4Y^m#z)C&Z*D$COft()JK{PeA2e3fe(?bNRcA+*T)u;QQd41o^X8r!x!K~%m@p{qNa%}^Rqkc>4DqXy*qW{ z`3O01Jz3N`wp+>yCTg#!;f^Ys zXib!*+~0FNZdpZ6U%}z>cqRkv{^`J0SI*tjquTI5c09HjxFz+)rt`rlF~)=+9+CT^ zQ9fM|LKnn^c=pc?(IN#HTAhnwC0RH2@kx_?gC`N$(IPV%~hZ68dwbcP*vWf56G7SFPJqOIwK_8u@ z6d8%8ijLwB$Lj7iz++O z^Y9S3d|8#?QyxKC9^g99dW58=Yuq||X#NQ0*H2kMGz-pppi~hsNeD@6 z6~hvAU+;aU%=yP!a+Kxj+`8Yga*cNNAu04xWpDTdtg->&u%c%f@LwAMs|>Sb-cK+X zB7Uamtm`^$ZaC0-Ns-9Ae%iM*FByfGZ8~zul_&Ea0yJ-O$*yDC-CoSOMz5h$;owwT zNezZh_Gz}c-Hu*fj3V&0j5RvZnZv!D3d^#7QougJBm!{ zsi?3QnqjR)G@4jUi~rpDOlmkN$QIN|z3Kg)S$3g99-W#5`;i1Y`fqiX{e%}@6!c=Q zt#+*vP$`3%P@L_DGcGYvZJzUwA8bW-vmArv#_%q~F&6&li?D+*l!OgzEy=1e^dzqD%=-g=wFGRJiku z!UigH4mb=~VC@=H#Nx~2eiDUi%~|ULXxP&UjaWBhMh~$Si_|qy!;yo9t_Ie;7kNhO zvO~aHLJf$mm(3K=d=ODOt^M_M0C;b^1~{D@1xOITkMF;cGd?nx_by4mDbVP;wyCa>Z=MHC zYh9=XxRFvDqFBIkC51LaR%$$_qR%V;05fG-eRY#v{=3OsmD--*a4O_(4BfyDKOAid zhS^bvl-^eT@~=l-$AYW(zVc~>CdAs@H2Qma0f3$L@dS4hv{vVTD1Vbpl);^6Wdh>Z zoFrBnKsD3KR#xVV0j!IDhr5>2<%P@vt_G5W!HC#ZvpemLIe`50-`r`iTY$)|nY#Vc zlQ!h)pLW~T9RYbC$Hc}&#^!CG?CS9hpf{luC7&`Ba|3v!w_4Aq zuw?~v!-NZw&AfYu<60Ix;Zgaoj&~crdC~q2nJI#hL=B*#;w|{#Mag_baJ-|#V z^U7s>eT3zS^ga)2;niF)PxksPPIhinA*MHVc%5kRrDbCK(l;wL%SDHdB3~>LMwp>yv z5#<(0(xG`1*iaSi<7gS05ix{Js>%PiTW7>41u*yKk{WFDJ_FH2Khbu8`XeblxLVC< zV-w(G|MgWD)Hk$n?&{Y^Z&+DvQ9LnJ`cDYFNq&6DvMe`ODj*OL9`w0omh`V5*&7=`>z@huFUXWfnV_$%5PEP_T`lo-B^GK;x#SkkCIKRgrJ8{< z*RhmW)y4jQC-^x02Dc(JQG-Or7TtFJZ1S2d&v_{ZDGrE^h5f5cLv>7!=}CYxcFHmQ zi-+Ii+6K0}A@KBTEhC-sk>X0y<^WO)5#qeHCrbia2KY^XTdyg2g_KFV6_1f^m^p1f zpPiTFrd%-B)PbS{I4Q;t7iYFj`PaiNZ$HilEk+^r)WI9yZ_qvqOPYiI@B|2o**#om zw}C7UFlXr8jSL?Vd8l-k5daZfZjHYoZ*CGmi=8enw%~l?;bGH0;KT|UCC+8?&(TY~ zX^~(wvLFw{Vqj~Iw@)MS_1CTr-Q&h{qOidS9B*eUH6sBhwCMoP5ybFGj2+}nU3K+< zn59DaqcyqKZ$^G|Z%@UP;HOu~OkF{c@+^DO>y(b@dek@qUNe7l_!F;b*X~v=k~fDh z!@l&jQ=_r%I~g9%L!i5YApk07==xRvr%!ZGyr`8+w>arPwBEc3oP)~PaLL1uFXVjK z+BSA`U_W4THf(#%UDR`h+im-34|)%YbLdCR>;f(~ZJJ>mgUM;*-5;g%Bp%#0{O)xd z0SIZ3TzCM(CzySn4MxAvrY=fo9J|WUx%CLx6TmeGUs>s6#(8r6jt;Zu{Ht5OW{+rpo&;*2QHDX=MwgXEc>YoGJ6gMi zJ01wo@7sO;;Dex6^aQ-N3tA95A6+ls$T1AuvVjkgKZj??26Q~)J-7t=XT8`)cH}}n z5_@tNnPKO!?^`eh{uVL&Q4ks|=dHsal1pwtg<2$$;U2of{AOAw#KwZ$NL`089%~b| zpB8TBeb#_gNdC;%5aa2_fb4eAC;MO%+c0;vZ@{*#eV|+euKY0D-zPEjoTVOfXQ#_e z@E9paQ^P(S3fc*wdP*M&ml+-2_5$cMveIe45`VM6yu@nRt^>K21a1~S@u&sfNkK0V z_0|w>aSbne@%Xw(5m4gX7%#r-XX;*q_rRA_N8(4X`BW}afWs87lHsrj{h$O{$C^Vd zH8-|i^(>+lblo?9`rGRM+2aQ>`!#o?B||s&;673JxSy}jHDAv4oE@y%_;}GH3vH#A zO2hA72a?3Br@A1+U?KBy3}gfGiTIvoi_=xSydM%DV9p~K*ZIYxDCt?hOu$y`e@KriF!i+cXv;=ZJ^0{S;lF($#9lWJ}d zTu7kx>m-+Vz6@}xQycyjyDqR!hXm9-x$8^gfN$4XJ{Oa#uZkF_0IJj!7j(m!+om)m zSc$#ly+~c=A{T(zDcJEK&_&Njz7>#C+-*;i=kMPbN?{o!y;LX#meiJ<$ikNakV0~( zVjjWDZb?8S*kNwjh_+injI;5KC(7S} zOs~U!hPgfM1;P|}?SlE2M!>C7#G7NRqPEW_10?ym5^GvWTOZXG0I7zs1ZL+2T*Msk z+(vF1*Nusd2_$fTuhGm)h};iQhW=ZX4~K{>Sw_*DV?T;7t>*+2XgO3)f5 z!q!!j@!c;@nr}yn{9?gL3Q*URHz-E~%l?)*suj*fu`gS+`Qwl1fG+;tNRJ_p3XesP z_+O3Vis*|2v8K$cIvgMwX2TFrkC)x0bZ+$)RvEYPdo5RXc`Vn`>D98U1Yk>WZmQ9! z7XMH+OAq6ieNMqG2{k&drLg+DMVD){v45ji-NfmNnfz(uTBE|au8g2000W|1YwhCQ zFNpq`|JkCmPxL1Dq6v1UTvYb9(9@3zlaIT8s!VUF1}Hu-6bDya&KB>g8Dvc{z0F9V zg`xL&Hebxj{H#H>VyMF{{T4-a9Z&VzgYQc-k7-Iaa|SWRpv`dcFB6U0Cbeb68ij*v z>!iX_9@SvOY<}hqzB6HV|IE-A^}ZGvA`;^1k4kR5L7$)+00GxssbeX9+EqR3o1>=| zAcdh}fZU?I$R-7x?ZPKK=Lt%MErDAeBLL&UQ2ofw`@5HU^3=$!V~W!SSA(JO2U}Mf z`okF&p$W#rE6HewF<(yJDoLk|fVArRqwCq=@~dfdu=Mozl?XVW6EK{oThoj5Mqo_b zVK2l%B)^S&Zy2%%W3x9D+hm?1HhfT(w z@;Amlv8Y_C1M#!@!-P-w%`Y!EXK9kS#)5Gtcb_t_A@XmktKJFg5l*9dmj1~q+4(-@ z-Tc0U56m~6HWBvjvd>ReU*)(Y)o`MH-Ch^@T41g%#V%{*v{JIiziuZpoE-}U?lb;qyk1QDJydBb2Jhh z5{x_nQA(&Jwe*l3IFWg?O6@);{zYQ1etISt)M&sj`1wPe>SO79W(8x{&mJnzD60Ff z6DHM0)tFgk1Et~Vhle)@@hZIj+(g3lv*WtXncX343w*``Pe~~yUMkd-HJ~Zi$-LR^ z)LV0!UZ~;IZNi(O@AEP(edvd02?zXE@iA@e&2^7Y7a2ej>r?#h=4EW&l%g;6>fAdr z>p1>oQagk9{87f|xuu7kx_41qFGp%E42;*PFYd_uYs*TU@0+Q;z{EAasDNsIO-Yh> zKt4V|`k!-9+$rMrIxd5*)i##Zs(v}^?U-abKmDe3;bvZZJ^?OR4cVg=vo~d@=(6?V z6kk&bJ??aFbrxupA+#Qp(X^;y5FKBaGXSdF=LovMBh2B$^C)>G zExAJJDb+E&`@q=wZCq^oWe%bI*k(dMr+^bvES=Y?T86{`$B!1|ozs|D2#{J?vvYHL!J+ ziI47l%|@({U?;cz3DlOffo9g5db$MqF9 zkVPPk6G5FWtuBeH0TfsO$~8gz&l>WLY5^eOA0C&X6xa~sfldr&tsNo>zi^>!m&5Ef zj`<3F^#o1{xA$}y2WQAxVANTzPp~g^q>lVf`Nt>v^dC31+{q3K*L$Bd95-w#OH?GD z>og5kZol78>-S75zpgUy1QctD_s9)+`0tMA)Wyl|8^3tK`$bLLMgpPwa{G0aKIl39 z=-_#8Izp?D|6aXw%_BR?JNX|!uE~M;x3u!0lN@PQ&U#bXmdi8y--y4p7zH2N*DZe8 z`I9Ki4I$uQhUnud)r0s`!V(*?%7CD|YAxiSUDl_^dF74)r!`v6$}V6STW-bn1@9{o zrGziBu>EnbnNbm^wNamj&}SPLLpLo*#km4p{RgeypaTaRL?5-(`A{WML_}xb#8Rel z*+3)}YRxwkH4al5Kgl#N=<$h3X9bS&=4&PrYUd^k=kRmdv`M_ek>|Y~<-fodw)L8< zByhdf@t8U9>cgdZ#T(28VLKW+P|cb=UjsS(>I&Q)_cDCE>w&KVh;xzhK@tV_gYOXg z^owZAc0%##l31t1te=QtKDqD;rVo6fBrCSCHZq<2#GX&N8U$JEJx+~2um`n0z4$QR zt4v3^gmMW+#_9?zhflVp`imf{?oB|LT_r$Mi84oxB6OTlk^AHz_e5nvc|_?X&(d+{ zjPi5N=HK`7-S6jP!k%x3h1vzQ3etivd^p4fPk(ZH(mfT>9@ol);J-_jwaTXr*jTKV z37!tptQ)0;K7h5hCw`!a7o%E&!bo2yi zm9y_t(ml7r6JzuA0sk=9LcN4>bcd#O`ke2H$*()!j@;Hzdw=Rg?rzbo1iQHBl=5HKn8+Cm84%a0P)b=H5D|uz*o(BlB@wP445f?zf z@!ZKUQX8lE);Q%NH5j5R^tCBBj8;h+F!3|rEMKPmmspnG_c|xv z4KfAo`nor#-S1}@?U{n#?j5?qf^)KlGw!#X|1!zB4sfrwAoQK$DNL2RL|f>`cYY_M8Z=wEww z5-ng!Hm<2A)-s=Z$6mmCphS)5=aXirQjgJL-FEqQR{|N%C^7trKp#Q#HSA53+ z0b324P<<-p*xAoW&gJtt;>CFqj<`^h8yWZ6_I+Rh6Ji^%LJ&m0nw8*Ki44OhY3o2$ z5<`im%g)I@1DBMu`Y>M;6)@g1w}Te&4pv_Z)8U_x>XlvJQexv(BVR8CS zhu1&=%UfM?_C_V{2)5@+X6kgwA7ouUE4rDa@YlGBUF7Mfbi_02w?;%bEPo}(yWY{D5P!Vg~Llhl_j$m zc2{4ZecrF$x@{JLQ|!1G8Q%tE=@l$SsamxUCHUnNO@`%zRis`I>?B6xlAV%d3q+83 zby@S*A9ljuQHIQ6GXx5s2b=ikI?0SmDS6*%^c@<#8SH2`wwwry&ZAXkAw2RDQ>$td z3qyKN5zCDo4nNW0Oda_neg4H@0gS-lBi8fR9=Wq#^9{3NXnFm5t!}vMpOixV(Jn~g zI=oWb!>f}@Um&yKjrnwmHf?*gHVCZ0j(UVgb>P>PW}Cn(O9y3f#OH-WiAPxRo#Ic| zJ0It(HAPcWRrDUY%ynGmjeT}Jq*(cb`%K}=AgO84l~XIr{ak?o<7`~J}Sf9YC@G}5nk%5-r^BzfI+Aw z=oo@dI&HLR>4&Kf|7NFGhDytp`b-qQit=Jcmy2TPdtW*e{nbFt)H^d(DAR!a9v^M@q|1K(0pJVA(IKhpBj;qa!-D zS@b*5qC9V8{HEm;|H9eR+@t4rRoM=RHj~3Pg}K#HhYLM<0xls?k$2FLdsUjc?qo*@ z?Sxvvq8M2&a#e0Mv_o(iVWjAoGfvqt!Lh>%B?|p!wLd6<~Iah&NHff!YW^D+pPY66ZuOYWmOWgbSN>l z$yzFP?4T^wkSDpsmqH9s9G@p>0HnuX%@Up>h4(pU{AC{G z*qP6eG0fGfjZ=6(x48Nv<<=6p8RfczYC;~(X1q|S5G7A{3yj_In2Dj2eR}Hp!d}WL zeUQCzkhg|lRE;p?bO*TLfV4ftCZ2*PA}HhsUIr!zUPWaULe&MC+v-GC4adOANqe(h5XLq^}r9GY%eQi)IlUsG0K4*z1D#cW&*T1(>{g5#4cX^qdB-FxI=qK-w)I zbgfH@-cS89mh^Z3>srBn&$fG?X%JU&K`n3l)M0jyD#$tf#x)^qZyGtj9n5RU*{vU) zVsoT+vCTUEl48EPi3_51ikS9yH3ifyXHS>b#SadLM4WsibGo9@5Z^C^1&^5C+A_6? z0>RW3mRGOew=PVw#3X!(3b3J1?R(Zn~Qm^#hNi@il8b zq>Uly)>>&rNwu9KzF^FpUxQtr4X)|nMA>`H|5~l+xtMdm&)GYyB6w$Nd%?N3&C_r{ z(RArq@zbE*8L1%K@Q+!-)lX^~)=&iw?Upsua;N<7m`=g+z2GPFKIA?AWHj z1w^#0#l_Gk_6IO0ab!_*?E)u;1bz0PjRPU|8HOD!y-Y16HjG)jAy_C%nR;zv!!oXT zsDJ7w(S54*Qnd79{TpDxyntOkhuFSf8^I!C6bcE;(7O}zS{sF7mV(gi*7U=g_aSFS zT~b02NuBeN1*xl^;~>1nT?&oFbwFAOBcYJecn^VBsuTI3TZ6OLd@@7lN++pxDx^p| zj}PzBj!!DkA+mlB9hD($zw(w3 zsg&NEbr}0YXQ^A7$m!p1(L>?aBUsE854!WW4PvrnLqZg%tV-7MHqjA2u{=;Wty6h9 zddjxI5sBAO=aGUG+a0&=S6G2h*Ca2u;v{GKL){_AglFqR&XC&)p6`hfHK)IC32rT! z(R8w5%VDRzGK)Nz?+GnB!(ZinSK}m$P-}45SK4{m=)$lYRBIYINNF$b_%*I_eKuCx zV-PTRVfh#JYtaq9Sl|Kd9a~M8C#^uf8pRuKxUO>tSfJ|J7fB)})+K5bux)3Bbervw^tM=c;E)GBU~*s> zkBam)d8JJvL-#cNk$Ka#2*B<%@WtGj43L(P%DfYqsfJV-9*X^QLnn389q?wfKyKX? zgvO@%QUGFP{>}1&Re_Zht{1qbdvp39qP|Jrv1aD3{9btXddaW594_?8ZhigRS>Bdu zVFDCd&hp79Zx!Os^yt<$JIec5EuFw|)*E!6dophp&YSYT6*0(0NX{1(1Z%r3J649%OgSR$lmNYRR<}udayqDG%79xMXD*ExX`k z2fuYnsEEG^n@^Tl4!#LdJ&GR=Z1csu1RVLmmN?CowMYy_J=ptQP0B9|Ja14UrTN|!p`_AT2m-duBp1tn<{2c7M`j? zQHqjaK|x>0*{2ogclgJs`98M6Cah%}>nd%h0}kR|N{FZp5`dOB8=aq;<>BS4Zv6}Q zAQNso*PfN|LkC1gP~b8^==iOB3XO?m&dYTOYXTv6V@Z1nj@vV#U7 zYEIGSCdfO5?oX);@#R~EarqGOJdf$r)PYCtCv_15!Y$Nwb-JMh6j2-PT8l(g3KzIq zTKVdDp`!3_G<2=*)~?Ci=fC&oLF#Qdx`A3;t@g=YiqtAEz|&vmm2RnL|KR1Fyb^Ks zCL(vN*u88_rKWMHSAS!(|14(F>y}2kk7nghfMxF93LTp4)P75`dBggB>tT*bbW?;! zh>awOPt8^PUEO}wQQ7bJsb&qfdOC31;OnLQsSDJf9QC&w#1 zu{pn$cVT?Sb~d@OYkr{H4fPISVduWS6~@V9;2}Y|Ch>%80eA|qEg1`at-H3#Hy`I} z*#vKsp*32VHr@N|d_N*?4vySX-nb(W4_*b6JV=Q$deY2Yr5WDBi9)cPIj{@XmjW@m z@p)Ls@<&>(HWFqV$${EegKy@F@Fo6MzDffy&#bF$3t#3jM|9$3o-+;lSNxv&P~fgh znpgA%Q{%7tN#ydTEV3YhKVYj z{)@TKusyZv|5JIT6zP)q?yT$BVF~TvAAz=*t2nZfH+v z^SjQ>4@L?qG@X`;p~nOpXYUk-J0~J++j4e@<^~axD&#r#Apdf?$G2fKLV^*Fzz(~1 z9Q|q^risdX!A8W#wv}|)*1!8X{mh$<3>z*%H@{c6i|c8?{qWkHJ0?V|e?*0*CAsa$ z3F!jiq5(RX8A_Wc2S+Fe<9AQQLyP|&Sq{K>^8-~@)qz{hIgUumo9UMIA!;On!+zu; zR(+;>*l%}cCz|+aFjKiO$eNZb6Qh#q_d4KS1;9SV( zOL5dzQqo02?S=eZP#n_xiSHqI(rj>cje(9FxW`Y@N;?W@)@zr^wuTTIKq$_j@HxM& z5wbTN;x4a-*F9F_g1!u1Y7e2^W^oj3duxdb7Is9PO|rWS|Gb#FygUm-4-cH)>E7#! z#(ukBnaO?hTjcIthtR~tyGXm%1o`u-Ec~vS)WcXR%+(Y1TWQmy6>jrdJ|30KaS!!m zTHr{%u{P~PN?4=E4-y+UCm|r+8eAy)>oN4+Fr8@!e?GRK%gO5f&Ny^ulv@f;Hau^51n+i*xK7M~= zTVcm<+tuiDfqjA=sW%xWpAUqlr$ql=zx>+QB=p#O&|V&1!)hTRB*C&HoKKK*9r5?`*{NI8 zH?S*tr=ycX+=37PJfwSOGRGj^o9z5&ZuRMZ8!lsM*N(et2nRjxl%4?ZoFRdJUH&;{ zDx%Mp2xy1IN#GjXXn_?wLeT?U#qzvzOp%~5U*j$JGq)!h=E zk`;L8&BUPO1FR|eRI~aAIqUGniu;rAv(A7aM81(&KHcx`r^KC+SXm#+UoYim#UQ%Y z!h9j$&$$7-_7Z)Dj-%OP_?KxG7wZ_Z6QR^~B1BBgf`LJTDhL}m%Nnlp(*)TNIUw(H ziEcskM9GN%-JoVr@SO+^c~c1jI@cp}J5E1Y%eTzJkK0?)bF+BfUes9Zo}j+p6&B{G z7N+lVIKvpNDXMuEO_)d5({cUf)xHUE-F{T6)CK~IH1p&k$sSm+q6`b&#inn=P6fF( zID+y02=7Rgixw-JV13?(4XCIIQSieYI&cNB%P3bOYz=-O*1`m~;IJxp=z%pm1zSsh z%Y>}lCGHMjIiXw{yp(hewjZG9$r1)p=&+Q@j|Gme5|9c{b3&pWsG)-^cns&@vY4M~ za^$|q-5%88_q>@pqj*{xkq$Wp?DaUTCR5Lmz0_Q~`H*5Y3qLX9?Dov%j!Yx6+}EME49b0=)XguX6lGm2uAg zV)oUL5 zpiHclXPO?ybNR4(Q7I`MtdDs%w^-rZv9xm_m^rTZiJ zMYeXoj#Y~RB5;V3RduGBKg%3HD>|+{ifHj&nI}&%Ah`3vpa1KV1 z`Iy|ARS|?w?i{ke+a%UfUb0(wS}m%Rlz05k>Y_zwcjd^K!2LWW_Qv)U9hn`C6N$77 znRlkc#VFo;??QiXHu+>#>`=OoWw1eT_3G4jf7B53$EsXbg3$)Y=KCG9FR8o&0&fmK z$KN79k!ZiLE_s9p26`TiuS0E3TF*+3`p|5(JJx3%moqZRQ*_AQ5}fcm_?!)Mb`Z2H zCn3%Fiu~w774=$8)WuP&Lpi$nT#Ht^9zaa z;tVF3Y#nI|!pWMC+M4RVx`zDr2nbA7&ib2&WEkXSY0dgA#0pVQNtJE0mh-wqoJZ?X zG*|9$^V#W)OZ0NsV9(7Zaf}r0kd8JlNAqX6yP$yB+^2xsy2CHSNvbN_uTqp41E-#- zqw(ROZ`676H;0M;37`7m?ep6SG3duGf%XuIlmpaAfmJHv6Y}qPehSP9{YPr2NL3*{ zMsFvt%Eh|Vko?FM?tX?mY~k2{x^M=*_=WoAU5+zvm8?+`pnF;&!1?>49E>%vy4X-r ziN=rVx!JIaeFo?AIl8fz7UDUB0W_PPnPV*O0q;nF#uTQ!6-4btJw<~nx zB*mVBrg>cvU3IF;S`dfthQJ?ZoPCBZ>YVq=EL~b0rdDlO@a|=HoK>sr%Ku{_-~SO2 zMf0FWt=3*o$f_svLvMZRCjO6BQ4DZ08>B!TV{f(gRXsw4xmICFBP9RhzCE}574j4& zX*WhDaW!cp?9M&l?Qu3m9=bQid9u{^HLF@4S*HF~PFEPoJUP7`rAujJ2tq#jajGMZ zu zh8UaTu>fMAsB+#f$d2AWIC3?ZK-7vfoviKAcNVD`eOxq@E9#Y=GtsbV1}1brVz<%@ zBBfcRZeHuYvF+QFEr?jF^qG60oL$eW`{2dUif(>w@-Xc%`m?y7VAYc0t8^6F>$ z!Un_d72;=SEi<1K1iS|%`11>hbDwV$wb>LhTXf+s3E9qLm%BzsrgT_goH1ao^eBK| ztXS@J&nx1RkoA&_%;zC>(^3nwNQX|vVO8z#`52AZAwvb|kn8Dl^0 zAwNC|JNUDCIO1uYo{kE)Ac4SV_a1rtBiKCv^wV(a?qQ2G<+NwXJl50`q}H+3miui= z@V_$RSh>=7{t=A5{p+cDi0$^9AkIM6FJEktJ?=|XT-UpK#~WK_{8DVT?`)|EE+uWX zb)ArRxZAC_%pF8V9&FS|-;6p)@oWe>Il3c8ax8k_#Mnhq5Sj)#Oo*=5DT0yV*^Iai zW&r&+I;mb?A;lbH6|KUpu=ua!H5WwDa-&Czu>iQb<+zU}sg0*ZO z1Ch%o%Qsk8SpYZu-J#hvn*J*IiKX(i9j9wKeeJaOl*{TszhozNz$ZklBy1a6E(TG^ zmqCQj;lGl}|Fqaws|_qPia};C&7o)O7D?Vl;yEra{*2azPwnQo8`(*=GKN?3ch+wi zccJP>hP0@Oev551W-nQ)nH6EY?QzTvP#fR`>9k>AS{dxfqxX4Z>%`s^o`cukX0)Dd z)m|**IUUXKKF(XzJK3PXEhc;Fg3MS9^+uquLhIJ%}A@~hY14)VPQuqGng*JytL zL{3ZWTC2>qR#WlK`iZjIiy?`nP$a{qYgP9X@*NK(fZe|dN!0cfXTQ+&L9QXgfhk;~ z=U38~?-sVo8&rw?fJr1!MWuNm+`C#t_RfV&g8EA?1z|cDtL#H7?tP464#*c`=fhY}y6VT6 z2J9EU(Q~U4&4cr5l*viA1cCMe})Q)vA^$eD0eaLSKCzmo8%mE+FD z(GSd_1*eBo;S+w~&2G&5Mq5cIwC|&VhjEMZ3ysIT{V_L@HY|VbADs5BwQ*ScbJG=T z76>y|1UlA6`c$_(->c7D2qfC$UQms0b)fZna_yj*&%#@4V;m&(Qx4YVk-Ee>X=wGJEBZqzEbrFk832GpdfOSsTCx}B454Zi z=1S7`y}xlu6A2ESFLS=a6f$e6vOYZu3NlHod?6-OU4(uF3BVTzw!Z;%uz%MXX&CSJ zlitmCEtkFLJv5Ph!9|G`=F9a+VA42`Sn1XE0|2D8YxNUbKy3aq-G;uXAD^16(GV&< z3VJPFSPMJLHob^H=~f#9JzFquIt+_DvwjslLY9&+UWO$ z-dgNKjb5Hr{}xdE)F(Ze1@y6V$*@2C@|PwDzb8P{>scc1E3+JJ8f$TJNnAeVx4!}v zS4)(4`BbeLqc+m;p~w3jmP42(%b{;bHMMW(UsV85A;MNK(ChX>_) zkw<{d)Fq0LDs12Ti&(1cz@2;eV_Dz44RrRYmW`YTyM*B%4EYI$gUa7Y+m9x5 zfShn4sa28X~{bYY(@Z=moW`u0dyPp42o@(8Od(gaiQ5=aT;AX9ynI4V6lWV zPwUY={JRj8?0tu(3!@SJJ9Z!Q1iSLH%adIfv)a=S200PX*H|hNzGuB$rDL`bMXt5` z{{Wo}$XzGONw)k~5IAB#_mq6$ug15bFQ*_;0w++u=GO#Tl|oU0GJ@Av0WOZ~lh38g z3-p>5shBAqx)agfr1=$C{nD!kRGJl&_iPZSzwdh15?Yya|8o4ZKPG_HzL-OMn{cpH z{|8MB$R}JV0kK{6_cn>?hoslnm;}jWKCh0n_JfZeLT?gD@-3VJK~}YPtL2(6b{DaE z%YVmu_|C&K=DzojyC5wb05NQ6!*RArQ)Od}tA0Vc5F}#|t~~8qtUS-#mPoV7@S8WX z1L~1g$vfNzyj0fI=g11tn@`;0&M`vu$^~l8ZEKPrDPeN6lPq_SOGC3&B`L12U08?=xVcf|$>w!*(~|@Q zGp!ye8{4xqAkFo$yy*%8KjOIXXXakN+Kv}ukl&pny)#%ig|o6Yf-*dT=G!EyH0Ex( zt0W}`2tvS{ge0aUSV0qauZ4+Pmuf0L$5mCy@+g<-_j)pcm}vCf&CDsc_p4RkEv9DZg(LSq=YqVuoZQb zvu7tDr-1b0I;yzQCC5QGu-+rLka&WEepu0KW<_g%4ag8?Wk(`ZkAHJ2{mwIHmZ5<_ z(r(=!05T*I1G-`0Im0W@ct*kZ?D@#Z(9)ZC-9bn0S$Q7aoTy^t!n?<;W8{Ff<_j`3?Z{A2hW)M$^SrZ3+3~& zeR$vrfgrz7QGQb+S2&7;>q~qB)ADi_oF4U@w#OYCDIyv}laky0Lkvy2zEi2XFP}Vbxqp$xQu%B7h zXNn(Ki*^I)OAyGTp7Ihs)$)M~oOv|t%ko_?7YX(fqi@L5LI{EUN(0KHOCVBIuLP+% zP>c%_F&qJ{m^$);iE{9#`S%QKf1YgQY^wfKl!t0+$OKHnV!gd->C>@R2+q|Y{`dU| zcPm^W?W5VYgadxoczrcxCxdJTDH!?QIqQDi_l8Sf;PLzUy%y#W-;%b)L$Ljjf(0%% zTDyP%0tuo*E787O@5A6Kzc7NYyEU>Zg<$xNZ-;Sg;g)u!j&uDiGIC*HTiGNtA_yek zdPcM-aC2uX9~C_EHjX(&q_2p89eEYBe1$;T*rGdTok?7NJ9z!ez-AJ$Ba_LZeuGKw zJn52xAi>RC(JfBBcqEV}EX?x8j0~DK2COJ6@gMM3n*)L+P6h}5&+km$&`_r}qmn=# z>b>S*85I@?0V*g30l*sJcQozko@~5sIWtRlimpC!Ho-B2;q+m^s{w(W-TM+N%p5hh z$SfxCc789G*%y$GSB?%d1VWZ-Q_wCym^S5bi0dJW3W<{h_m;RoRT1-W-ExgZ&yL@$ za~7B@e+gWQzEW_365K4sCNMAa&nI1G8i3gn^%Zl+g%q?B*s7F)|2%c|5{@n@bOEAX z3}BI*)h>ur7zBI$dV_h^!o9O{Wf+9l{dkWjW-&5QdHFKP<^xYI+{SW0K*8X1b9Of+ znpSUN6>xskiBp_g3_xu(!Q8X^R+$8+*Jc-`SC@YQ#BY&PbP|AiTM)8yXg^~XE9u(Z zp8YyPieK>Jml#s4DeLSws@mvl!{+kD^?5v;IWBU>ICr44%8#>%-0}b&qp1$DaPk47L2Dir)w%xB?0g)M~c750&{q z=s7Ds3P3o451T?R5s!@oO3*O1_UvxkK9>TUD@~Zs-2z~#-0=wz8F2(7P!?)Ff4{io z?TbsYU)L(@6GqN5|JK@;03R6YaszUB@zn!9cP3r?8N7uy5Aofyh_NxkWdBiE=XDlF z(SSg{f`PU2lj8&LJb>9^%_cqWi<4cxt5HIk9}yUvOAWx~IwN+sgX;&tKuL{6|D+t7 z)~EgDc0ZV8>>UU(h!wB~yyw%d1_#`=GsfK>3YgojKJ4={r@)g1$4fV2U;CZv$(>iC z;L7s^!Dex3la7D=FDO1PKU@Dl#2xflNsy?DiWb~+LQWEum0 zyD%~COZfS5yca)ntIL-`4?I`BzJU|ka3cFI-S4n@20-hO@zYi`*bOASD`AndL1e?7 zx_~WI_F^^Mgl3|CU+`7!8yW_ge`R#lAARF!0XX*T@b&@XxcH!c) zGH5YREV$XdYZuFPgt?7Jwp0~v_S=-~YsJapk5?qom`wj@O0EZMEx45Il_T*mn)-SEzd!4oM=rqQ7jma39$e|LO9^qLvN>6wH7h14=A00 zg&v6qJ-0dgde-WpnEN7LqjVY1Xh-tU0^l%{U|nfMfB4B;wd0jVTm_IPUx42GN|+W} z`krI|@i{*THT|zc%P(HAWpLZb)7i5of3MqsD*oKP;Io{MwQOF-$<2nfh)LmoJOuvR zn2ZxS#q8F&**f-xY6kw5VMR+7PY6U8>*+4Fw@Ckji6f_g zHZkzV11=+t<>IGxknDFBFk10TV;3i8c2*M%@GB*bA29yz0(IRM$n~tZHJpfrhL|ca zWt8P}YAzEW1X6gZl!dM5O1M5V_zV~e?WGrPX@FA=;1@M&qq+bzWw*hosL)*IcFZw?cIAR>U4nz`Y?*|F<{j~Wa zuWm+4t)d=I(|VN2o#*ed0&r=RcCd5rVzYEYU`@YG?lSiwUxoem8xtOsVeSN|t;4Q$ zql0Agt9UR5iU$HP-uX|S!=i6)`W>D8$T>)Ov9}KlA8IOJfQK^CO-pP-;02%3^8y)Q zTcUr6&GA<*GfYW=h=PV=PEFMh<)z3UO_xw{nun)7|7*7hgWMlctvqN z;kSq0twDL2>Y?V~sZRsEtx!rK*y+8M-2bf9G}p5u=r|gMNXijz{L_T3YYL4 z1_*I>YC#bG5Om2cc%7>y0T<+>HQ=U$GGmsGb*J}w#fx|l|e!grs>n;Cd?v*?M z_T)8EJtNYNay&gDQ?*#G-$H87e>b%lUd{7h1{dfVXP!$3iV*ofbs60c%|64ky^#xv z&Y2sWaKBjsu$g?tx0z1P^;~*}QJfM7>NOYuO(5eUq9W!13=Q^=p&`IxB!oM2pbB$5 zAHav}E(C7Jr{IJSX~K9`D7@AI#qQ@hGzh)V@l=Y&vgoRA|Ir`;x^3?hhgeTzZrXid zKJp{=*|l;}oQ8A9lqU&HIq_!@hdbbqDb?;tT$VFk^8k=~zz?=~GFY@#$DLPpS3Ixm zNeSK{5p-O*t77#DJYB)x_c_rm1S|2iCOw*Z>U zTT83}&nA)CLGGWbhjhkDO=w$ns6NUC{`*^iPtkjMZlaMPp*YZ3Vm5I2uVjNA8MU5F z03Yrm$LQ)L#kYu%4=Sl4nim*O%}r`*FyPRN@-Rsq`3}GO^AXAx;p7&ah10xys3c8H zw^(}X-+idS^tt1+EL0P5rReRl`z30`kO+>g12-CFdVBatc#qmY zCIM!Ok7GRNt<@^@hvG-rs)Xp*wnHtKS|Ll`Wd-s-mpCjM7`FH&4Rd>siN1UUyt73Q zzD&pad=f}K4rzMIotFv{cLwftbB*_OUk)JS6gYHPIYYeKAEKnhq_Mbu<()`L18N$; z3m17XkPt?bg6Q}|1P&+R#7XPLSEa7ZM>ThD9dy>GdO4s+t`!u)F_h?_!UlH^t|`K? zjdzZ^LR8X*Kch8)pu|P{Ws5V`EWWq2aD1o^D{Iah>DO@Qt$loT~h=*z+SVNwC zJwJcGf4xXUnX$WXb%Z2(wl*O*ou{zuO~@DTdU8kiBZ@fEu)Ew>9OxB)-kA;=a|Ar1^|GJm$G})7ETW8WuhHxoL62E3O0OS zV*VGw1-th>P&M^h92T=!hpA1ey~q1gbloU60K=cGkYMS9(X{Hg4Eno+{)KnD4l%)3`QmrFn7QcY!Gi8%+C- z2z>tdb96%i$KHO~$>*aV?x(Buf|u!DFq!hGepgKXeeVj1y~oqMnuZgh4^2gJGEKSp zm$v&*6CP4)L3iFL9?4%Bb&eCu*B6QD?it2u#ZdvCI;&0OL>6>Z=Ob>+i8^j{2g#9d z^ry9ov)Vz1+dELN!Nc8M{oJA$CbcViR5>D(Kz1S8_l`JF?SYYc^f4a~Gs)n3iV1y-tMj5sUOj@Id^(y${t_%{R4Em+XN z$>HtdY=c-o#AB|Fe(XQCK%+QDnBHa*VpXBu(bu!ia8d8?kKQ;&oY1AX{ej| zql00^7MsngI4EEDqDK1CCO6kVW_wyEIogxFnb8&!_nbokWpyaLlz{~99vc%t5JF!@ z5Z_IT7pq2g3ZDubjep$aJN2iX;=SfQjH0^UO*?G1{jGRS$hkz8dC*H>&nD2djwfCs z5B9LkzV|KfHnA@-#a`1tceI#bnd|0@8k&5)c1hlhJhtlxImtcqUNVnR8rVpr?8mz# zzfFVV*ZK~$fb*iW?hn9(*Yd*A-o*m+Vg^=(?!_{~hAb(vEaRhiOQmA@RQYp3z^*btbQ0QH(w;SspQNMlB$JC?J*#?-u^NYSba+pn`jF3&ne zX%+23-xO*pP`{!GlU&b&vW$)qdinE&Qgn-~>%|sr|J`*NDUQq~1=e;&YHnJvx`53J0{pWJ*nwrt-uI6iyk~x*eGgiPZ?eH&rQm_dS;Y-95TATy@{A$dtHbf>cQ63B>fB{f|d% zgwIAQ&DE=?B^$4ls?QU9iWLQh#@ABt~@vW0z(7@;K#ik`zW!Tf-K$F?KRBr2DH9jiMm zgU)dcStn5l4k-LpEPRv7+rbL)iifeCxN)>kZ>R&oIZ3s>JS+aYop?WF+5d7w#jSL? zB!kcbBS5-FYY`U0&M)iT3pK4O#p@9iN>4Ini;zY7#^&O|U-l`sOiG9B-!04j>A2$D zFIQ%eCct-tO96GQ`>DF1J3sGK$2(#&v>`J1-9fI7xr)y0y0`q$=nkolrZm+@>5Zoh z1G*8MlVoTc(tWtl#@wpY_8-h^OEVr`0PtdVw9S_59){!7A`9!F(u)`jvESA!S%Z2p zW)dz`g>M{u7;J=E;?X7B8%x_SRMu?>#?!0iWAG3TB4cnhs}sumssh?0#*&3u6D)LXM$Ckb zunhaa4)Y3`{CxKhd9Vp&|msiJ$DAzE%E*2L+I||!U{54Q{t+8-M8e4l< zvdzZ$3*utV7IXnDSaI-mlX&08h!RnvNA%;0W|^)kw4-ducxG_o-x0-B6fO0vqM0=u z-GcrHvCdy22LqUL?yBE=8X#y~<2{V0Rh4%eOSAG#6+DHATIn>}_}q(cBMz>5vaRqr zm~J;c=`br0F!{L~+V|7^1-hTCllpZVS=y_zG?UT{**E-xL8_`S$x-BdvveBq0h~Q8 z^V)mcX(?cGq+YC%?clgG92ijXr{|2oqvcC3?WbxZ2WspWSg-}uXY4W;?aK~g1(X~- zA5Z3=aNN--z@l#*tu%tknoXFb4JoosR;4P(8N(_D-`Fu({OJ(f%CSR18!ey25_)z^ zfXYKF*3&;ibXp1xhH5(7i)4hvK3UggF8j+s?>k2pJo0{ACHld{iSMPdP}?CRy2TUq zjd49I7m1XO@7GUerTti7i3>`QGR&QkLSaB4D~%FUE|iMU%C4`p&UCz2d7w(jZ(pL_ z&WOJ1jrx{q!;*9w#1vl>%(FM1u(<8dbFN}DoCbt5>WYi}(7d{NM%cWcZ*8!myvnn} zJBwCiCB2t$U({odc78<=dU{-+6yxex;QUgifA%NJ7iwZz@7VnAah8-P%l?_eJ2#|f0^Qw?UKNH z43U9HR?2$zIhCghkR)=S&$je+k~y{w0-yveQKKObwj_6+S~M!dWsCGG((Tc^V)-(& zL^)$!+>Q1`WA{!deGM7rONC4NmRsH(XY>&9QG9E+F~;!~_6ho9)T}y32nbk|hFb{I z=1<6T&X7;M{Y;qViPc|3=u-G?v6*aZm)7}Hfx-!$)?p$cfsC6(gp#{0|9VKY1B0s8 z!K?>4v&}f*=Dg!+UNsnK_gMte*v`NH?0wNj@)sP}F&OF8dK1|(h1`N`Sz6&O9%&k4 zpC!KO0Q6Y$-9hXE)3ttru+curoM?(Izb)-rU3MCKsR6Gf|wBUO*RxVSZItw?{6vqrIcWL|mLF)tu_^P{<& z`&Dw;FQ`{K5pX`Zn){K{^3!SXkO#N)@=TyKwZNU0u4e1^1P7T=b{g7~OG2*pHIl*& z(InUan!02{&q8xEzYHg;z%r1ANeDL~mhP7^6Cmlc04}ZRrc7-|fpb8*xY#c+Ro7g3 zW?sfodn|$~AUS(m3HRyhsDeDg7icDP==_&Nuj0zQ>o+M+IutMc({kWdri-q3K)Kgj z!UuQYmVeU1+9Dfi-zF5;Dbc^XxLR?9g_EX3CR^0+jr;xYM3BNIS3~|N%spS2-GEJ+ z%T~ubOOSwO7;lSFpq=1|_ZT?_Se-LbU#>aj@;h_-GiG14{Veh?j(6*@w~r?>0>BM-Uo`TARSuSbiUoSGUU;DDTp!jaCc~Z zj z$lHm7K%eB{s<$sD0>qtw^a@LwZFWq=<*ekF#XNws1%h--bRni?WO>Jex8bdTbGGXnS+)V?ra1F(DRBnM#bP#$^1bbbKBLX&y1Hfkxbt`NO_n?JeRK})zw zK%7*zXwRmWQ>T56v<9WgeF;$%jXk@Sw<;6yFgnl;`HYzi-CZP<_|tdgTC{Qj7a|`R zNQIxiI3tb1=NZv^5i|3*MdHMHSx1xUFOB9yGY-)}ETx3;FLu~NdQ5vPJ_KvpXGGsn zFClm_@>tVRVEdB)T!eF}GMzCnZdc91Vi4HyhzD>h+~_>rh9|Jn*E&DDc_sKs^~(fu z`bYO!zO=MNrurz;CI-9&*_A)TD8Es2;X=dWEj3gf3Z=m5zFDU2)9r2lAL@lhv?a}`)W$sy42GmA z3hM1w8cBc`9Yj~_UhSE4S$sW2Z8!pKL70rk;Sbf+-@nx1;58#&CGap|A?z)X4W0)(qp!S}!_zfafwu}Xe*j-Di z#CD4ps>*)YPZRNXg#~xv3S`b8k-Xt7WcY{?nixv7vVs9_C#?<`ug5I zZN?B%H44d<@SJ$RucgI=p3$&xJeQz$FwD9^$leG>2>?HV0#EG%${!Iv>$I=DgQ*-( zh=}!!eAsjvO^Gt*z1vnbq!0DUliG7S)J*D_)3-0x2uwp4kij!cIY04&pYRTTE zd(_SFn<731#u7AW+LuK4Z|#j3tzy@=ZD4pIPhbIOH>XaR-0b9b9{S`aKre%m7ZJ=~ z4w6)NU(+hvWk-%h(x4I85PLxupDP#Pjp+^my=F>nnIm2Q@n^%I%nA#d2`sk5Nn}vK zemd|KC6>eyQhXywOf(XJvo&4AA1bA6{&e>{cRNK0`3}0cL8b9TOQF)5B!s;o|AU1E= zZTq7}E2c9%EbbKu6r(G5QU^U0DLPGD{}If;;F^Z50!7Qed^U`Np-Yn%|4C|sZ6fS$ zJp$Vt32#_{$MC#T!PDIkBM$Alzs8d~MN%6eX9&4L5S#)g0i6v8THnjhAoP^)TpoGd z5-~?XDEVdKn+1s_Z}Qv2Cj%~1a5kAF`38&@6Zbl^&s<C4m-`x;CJQ_E)5vW(6B5YA_0=$ke7C*&*pZ^P*F0J;6U@;76+>9 z_fyHVZHXjh(DDt6pXZAR8*{yaK1n^{9$wr87~id!-`!rfNsb7MqrBxT&3GRINZ5fD z{>c9!FoD|s5d>ReWD~Y(7A86<;KKw0uC*t}k|4JM5WL=4aBi`sBX2_*6U&pAQYYNx z2InrDAj1n*vi1SRDc6TdH9F~Am8x&JcS=2}#i{e`&7WwpDrd_2N$(v431Q7#>n#2A z8$SsF%VT%+=#J;e)ncaMKFKBhI*x#+OX3c4IuC;C(zf;CV*x(S8R8d|y=zzn4nCa^ z;(3HU9`%j6-ybe=fC9bmjRb(3k?B~3j{yH%%W$yZx|0>i-g!Rvl=ZP+ve~*#Sp?t& zF<&Fp=!?-$0?8}o1{pS4kdrR|*^|_5r+PU8mL1Cs3*dN&LCV}6oM?7~4-ep?wj_HD z1@loE8DZ8KEg9Z*X6%i!;@jZ#ADRZFS(8kO2w1L?mqJfRachQCd_coZcM`Fm6Vdiw zezf=LIK!n0t}8g}1ZRW(q9p*}Gk*rccOr;b3cg15lEey~bT`HKzVA0}pH*n3FhAuo z7M1)aOLtpllwbKOpc=9V{~ajj6g$^Bs&`xc*N2kiu{;hnByq1w9n=EXUQnitz#c?y zk@0om?+;v8AgS)tHPc@ct`Bv4P@f6<;zN-J8myqH`0;FATOT6`DiKNsl?zvgX>sDb zeWo^Kf?Zw+vvFT$ZTz@RNlyTH0sj}@M?;SI!>2lR9OojG?Ooc|9<#{#TE`17+=%(s zE;5I3qkSpW)p^MuK12YbU+E6uR$h@)rFWNZVAn*s`;3`2{jGEqW=n-{zEKTZ*D1mc zm$;~Z>8a7gwg3I#2joVI4y*}$Ny}5XJgJe?o?Va-7FV8F(KW?6rz_qf)bPDYybi4Z zvMG6 zEsq*DK(&Hym4|(WYy?1gd|D~=w7H}~Pf~+w2yTD6wjVMQsr8SjmphMQ3-C_FXb*l9 zrO^-y0q;}u7cz4;TlRNo9V$cab({+1S%k%3Cil?rfB4|Xr2G`B^jMDGErePALcWXLfICqfHm+QZw*j0 zO|i^ty6Z>2rZ|C|P{8eZ--t`*Nj2lK{2iZosQ)7)6yz`wu#~)VJ5Z*l?D!s?RC@^b zChdF7U8*5t&0)(bdE7?_wy~J?-R8WFmVri8eBIqH-V389_Oa9T9-kf-3hsGQf=es` z%&zBbKMUI;;u5g}{;ADA^@Zb7y-nzxbLwkEIv&uTZv|XkftN^gMtj-fg-p_Q;RP7B znP7q%y%Bi}gt}-buN3)cYb)hGf1l`2w!#~8P*?q#S@kNI zMk%maX{-tHS!2!{kHKGdYg)ktVzy#|2R_#2^oBMlIrf+&qN6V0k8lh*w$?dDDZxAo zwQS&F@^mEIe-0_obKMm7j-B|sQ&u_z+G}nxt*Re%oW9~O{ ze*gwan>(;XjChW{hdQ6)b;WRnJ}#DHA8GdNR)CVf+@<00H7{LeKA2F9JkE6G3AGOp zsbw7v#Cw6>|0by10bXW6G}mY3jtuZ26Z_=LJ=Cw8A{XrBzIKqy_cWIbq*)H$RGi(r zZdsja0aQh`3&>x3x_g$RC?JD=8Ve*e*r4L9&OLl;iKC1L@ZH&(QSxkHt{w7>4eKOCAAG!ABtP4hx*NuH`(}8IrBfWCXIS!L^PQu=#&MxJ zStu$(Ne%FD@xDBak$GAur(@W-U`0RCx0iEVKG7+;6Ag>TC_pz5-XGmFr<(V~(}hJy zh<&DYgdOi*L-7j`%u%g#69t7T+Ivw8z+bki)dY+M3Wt$*98RJq68~hG^ktF~uzY{d z6+Gi@AH%xlJbKk2DNHu_)tRhEg)}RqZqesaU?9&yxZ1Cb7CX=ES*PdjUxX2KWCH19 zfj|kmjIus5!v5S+FCAt}{MKw^?lJPDN3txEbMW40w#6sU{bg52kqLo_$iSN&v*G1m z8}3s~R@4FLY0h*$i`jaY$g$O!U8E89+Xrz}6<3+@>+5^pPGa?RVaab24qmN}X>0~0 zxQz6_VTm5|Ci3F+#SHs|VAo;^rx&!0Mdq&VtTQX?IMRDCmTYdgapll_h+^xekjf{*QDwN*TBKB#h+u_1`opQG2ozXo;a?OrEraMGq^Wu1U@guWBaZC@A*O zz)OrlN#43LGJCe<9_CPKFXYPsZgQ#p$%yw3Fj~baS6D{WlXUyMd1{{0Mgz6iKmqEo zqx9i#$u%@JqILF=H_xq2lCpn@zPR5k1-rd3tf6c{hboDg_m&q+@6++ah-}|MYxfTO zQFH)n&YXcZ=1%QSikfZlU8PZtq%`o@#)ZE+9sli*B37(&6%6Rs#qPKb-UKvD^YxI| zus;Yi@bUTCnW;iHGfkpE`3Y*ln6B4pUN^!!YnEh>@F{;dEpc~t)!#T9ifRYvHYxSJ z4ZHSw9vTf(a8Ca#-`8$Vct|u-T<}XSm|kD^5-@{^u30?0g><%Zq1aXuD|}*!tzBui z>n@U>M!s(f=*Zw)-#stI@N;#C+?|sBfRMgD_2mYlKFzHdSV_Z=1d|(9oDFiPn$aHo z>O~Xc6u|J|o}rG+>4@q1xmZc1DeCxKxPML>IZKAL7pt_bI|$VL2rum6iE`^7pMVAojE`-?+D zXV;p4;>Yp?raV|fSNziO;=_TZ0VOcH!sjEE*1!EM=6socd-%JsLi=9UPQ-mSjF)IK76xz+Al z%3S!IJNdVJacXoWPJI3rzPfAYfuy_dhB>2(Kp{L&ym?mcq{V5JKmcUmF&Ek>45KQb0k|FwSuEh=#jqlbH6Wmj?lN zi`AlAbQ!sn4m8qeEbb}}6{x{JGMDAB75(eI)!iMEM}PXY{P%8?1*x9(kPG!;xeCYq z7Lbq@Tvp{)9JRQ~)Zm4Dk}bW-mwc$RyQc3J(|WNg&MEtarDISkHYoLA_pq%Rf!_JE z@aK(@Xmo>n0X>SxIQ1Gw`iQUMGVTxPzejT;eWkM+XRdsm&X={PmT_L)EIsy}JH`CVPFLRKaY%z^S){0yO6feoAJEpArj57tr4R4P~gj-nFQuBsl-s3rK=_k z8Mdd)GJrnsU=$XR$4?!R;IVvpPj$>@>vjhvC(;i)$Fk9$3YrQk6Ig)6RH6VKUBlf& z%>pUan-&qBpoIi&`)K?L>zFR}V&-dYCa7$~?H7;Mo}^5EkLS6gB#kVuC@C7THENib zMn2GXtSn60TvGaW4B z3^#2M($n`dcsXDqGjhx;=tyjR8t?DD*_p}i8H#8LM>A<8!*BR_N`76=f>?U=KH8U? z{I4(kr?*rHOV2&D6U9>Yd+#WYP3{_=jR-x9u;qxRi6#I3!+)+(*xpBN@O^b0(?nNKT^hWH@>~P;`)*7Fur>6K5LSUC_BCc(CYKNRRH(j6|q*=Q`{gZ!;GRfJm5%g zIe=OThjiPp?%fy;ZILZ)TFVI~v31diY$8 zY}4Zyhi1loW1!; zY2dqlK7!?n-V%q3rQycw#^?_m=@jGz9C0ryJgMo0EO@q$NNQ^hMWQDrdB;D+XHK!O zk~A-Vg0xogv~{(&@S=)(JTXob3t}QsyFx|9%4HHTM;&r1PXRUtcwPGvy{h7;m&hB` zLSv)}RD6jIuQ_P6ljdhk>U^0HngQpaq8IcVti>L!Tpk=7=3NcxuAw%4N3%EJ{YrxT zT+gSnpTpuH8+53HF(^{4?jrk@eWVYf7*HHaqg+fP^kAB{pQkOr#;Ijdn>6V67>EG8n=z*AR!b4_UAGMCJ-*B#7c{UXJOz zkXkaFepubjOzH?&UTNtyogR4`Ou_w6hzT_*JjHD2N8W@CqG_%T`~{lfe~5Rhw)+m6 zBrdmzmYsxEe?0+Z zS;3k^mlp<4D-nDDrcu7PWVs3iT9hq>{ArFo`fCKLV{jm;=>bc~#(B-baUL#ct^dHh z){r%5#`J-X2wcxd88`W-=s}L(3+&p#NYR7vqui<1*Iy5x`jG(5_$Su4AeO24#j3iy z`FrO-rf^-2WF99PqHGd_ACsU^3Cws{ldU%vue&!@R|F8g*xni>F4=n4GqCV>u;+QDOcq5WOpO?{gW(17Zvb$vKF+uv-#K$ zpKbefz}L*nTO<|28|#db=&cgdWre5~erUD7iG1WevUWgzQ8l24C`GcOw2X z=c#BGmk%RQia2_c6{_vl;kkEd%Ku;4IcoSb0lf@Y0+bav>1civm^ME?5fhzRK;-5s zq-&2-^4)~GgoJ!n@i<(Sbv>O)@2V~OUTNWPSWgXn#g=)HpUFAfQ%(^Q;83&-w`u3B zwI81U)0K*yVB`6Ghg)H^_IV2KE6L;NfG!*BrRN?5hK%d_pERo`j}u65V3ZP}?AdR) z;{!@Tep+54l&k%*`Mbb&*fGs zU}Jlj{?B#Z4VkI$5mN3Ud$WHdO=hz~w+gllghN7JP3$@TYe!6sxSm@FnsH(T%62_w z?QUh>trArv@EbSC?K)A{6L^KsFfN8io@U2pZw*k31@y#Q&4z17yv2r0r@E(;j)Sn` zpT+qWr~&!tD5YJXYMlm4{IHzs2w~Z3bFXLeeDC*2_Vez;TkS%neV3wm*#hOpte2fy z0{V`vt35c8&O3e#`~fV$3vcHJs}rN0cmxdW7m6Ws>AFjd6A%=#lSmRt&pWQ zq~JccJrD1!xAz_|#qD;VEiSp0P4g$@cl12Px9z{>g$Lo2{hWRjW7}WE=C8!uQczsE za$GLJ`9;;;JfZX2~7UX=@r&lgmjemsF* zTrb#f({mQQp%9e&Vh?@%kQ-F3USGXEd-ZhM=@|FuSK=?{Dw{cOngeTo8$-D4a(je; zOwXmVzZa3d$W}52V>Nuw3nxcZPx`_Ezk*20ur9jk#Y6nux}; z@UCXwCokAdZCSF2+LXhz4<0i2Gmks?Sd=|o2=Ojm{SajN(N;ilbFbx0RXllrP_tCb zD~`UR1aqiWyx4ruk&5m@ZID;1CaKPL>p22O$F|Sb zDWl5NHx=vea;LmD9hW!G#6r~SH@f%U_5e)sZtF5SmcI`+ZrkP?!w(xYj zK<%v`X5&P(Uk|@+BB)~`JX4k|vl&s#X&62L!5#E%XQ>@E$h(I4fcMev$A|?sM9~d+ z0_6rt??c&8M*h7S*cGz8x=N%qdu-IQuA+^&#CFqrk00-FY)PldTiQ(7y@utCO|Y~F zjnW(FyG}QkOm8gclRw{e0v^pz!Mw10qsh|O@BGSEE)BP^jHMH~mYLBcmyf!Kuoz5O zIh@A$Dif9lxzXnmFEz2l%ow{W|3m~THWL3r54Tr|s4gvA7ZEI;{N6-}#AN!U-&6ob za=|YqP;{}V`8eW{_I#`m`PwJcE4^2ZFD+N@gB*&)fp}i(CyvbO_3y2h`vhlR%T&i( z|M>S=?khX>LlQ)9^+@>_3FB)lqg)h*j-6Y7BVy8-as^u7pX{lc%WDp1jAYx;+blNMd_+JY6ryX00*iKj?`>gXJX|SQ<-|{NR_35 zDjQRgUE1u*kaNQn|0e2vCQ=AHDY8v@xN&7h|B9gf!poHrh~rRl$B;}qabGz3V6ebf zdk8fc4|15Id}JH5Hb}N0Y4ZBx9C9KFtyW4P_L1csB<&Q47Vq(oPCLHp0=-4ryao zcQ8C6e*g#8CQlSp~z9;pbdKq+y6iJ$k@1X|N%HAG4taQbkt5;yb zCvsZ;_9#pCx&xJ?jCT+@u|t}C1=fR(=Q7lP)Y!|a%I#^8kc{F&Q3oL zrkh6;=LXjgeieBL9}zPUMAC2_m&=heG10<;9|f1@?(AfqH9PjV+WvMPmEWCNp#2`e zO#&)Zehrihkl*?F?`ydze9mM<&_k5gbIZB7SXn!##-^o*2*$%YrT;G2SU)zPfB)XG zyzxd+?`ezWu! z8WDbrmfBbrCzascO0nqWT?zBX=)O8wF1nTH_u-#Zyj{58>!)0K;V^_$)%vP zWC`=hgtp2CJh{p+|aGYIOOx|$Fqw#`v^6_j>@cXf3* zDmpq}U+9gWYc%IKNyC6>r>TUY`EB&iZH)+cci+o>0Q;?fl2@E`>ilR(ua7UM-h`1z z$;i2Ry%D_v)*$vV;K|e9YZCk_#5(Ft4_>iQIR~*D~#zq+}$!>S*uTgK{zuW}sfnP($A=T%AS#e0Jyh zt#EEv^>kznJ--w*Hq`R>iN0ED zZ9~B?D3#;e7TVz%4R;ApVn$;=U4IZz_;e=4EbIQQZQZlM0_{4HI#%tWj(p->BpmqN zT7jPIXt?U4ozu~l%#(7hn$3<4Fi8J#Aa9nx`V~Lu{kn!+$F#A{x`yE083vS-K{+YN zoDMIKcvSR>aqqI&Tm4OGmZIjb3Gs~$pTniickVTf{SEQh{oy^G>?q$LeE7q}y6~r7 zt*?6mRIQTDy_aK$gzo75x}nin3wrdVg@!9DpdRBrL96OHL#{=)l!JQ&>`~ZA0jU zA6W0T_st)>e#~5A-h3u0=kEBoWHuFNWAb1@TwON*cr{{3WtapHo%>=%f$zWj6jX}& z)RYcx6BL_FPY&Ljb-GhXD)zAI^HgaS51Bpr$C^(b21V9(^;TovPA>I~+vyCq%|VqZ z0K$#0R$VEOpuSrQ%R1iZJ3{3ef*Rgi;xNWqkyCHU57m|{mV=-E6!xB(fWQBL@!whK x!LNAy!t%rCQ<;K<|1b9V|7-r=K%kZQI^?TxcKFrDP<#A3YD!uUOCMNA{0|7Y?Y;m2 literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-release-mascot.png b/_static/img/mascots/scylla-release-mascot.png new file mode 100644 index 0000000000000000000000000000000000000000..09342ac6875c5ac16477e7cddb811569e0eff483 GIT binary patch literal 31893 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 literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-repair.png b/_static/img/mascots/scylla-repair.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4c613e702e46802b3a2921f81f339d3c153bb6 GIT binary patch literal 21261 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 Bgz*3X literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-server.png b/_static/img/mascots/scylla-server.png new file mode 100644 index 0000000000000000000000000000000000000000..96dc785298bdb82ffdac74c64e6d360f12dfccff GIT binary patch literal 48529 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

kp; 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 literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-sleeping.png b/_static/img/mascots/scylla-sleeping.png new file mode 100644 index 0000000000000000000000000000000000000000..f88598e05ad61c07b8fd4dd2df25db2c3b331ec5 GIT binary patch literal 12942 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 UO=AtOBHIEKWK^W9B;N=AKL$v=ApigX literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-tall-measure.png b/_static/img/mascots/scylla-tall-measure.png new file mode 100644 index 0000000000000000000000000000000000000000..6f0ca146c0d4a9ca231919e5a38d26cecb176fd3 GIT binary patch literal 18996 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

7V#U-M2EVk_UGHzyn=t98lh6Suk{M*aQ=9*yn^ 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 v$lNm9so>ZzZN zoL!;@fJbb)pQF|9?3Ee*)dEMnyo$>M-*ug)`AoRX zQ&Z>e-c-fbJnA*LjE+j6>*?or+OZ^o!~zBbJ>)f^#K(N04`jqN+LbDAc5$YFW3xW# z8erVC_+|rF_yf{F-$l=?>;K+GfQ0pvr2{a72#iXYhW;#vj6qmnMymUvwp{BUMCnbq z!fuinFi`KoK~hCoB@WoI`z=06*s~=MD~~$Z(LJlF*L7)x5TUq#By=%&9)9qGZLN3^|m|D z_szz8126*xtZ&)*AM|tBVGP226aSLkFE#qgPHJB2W8 z*Y&wOE8zg4tJ>jH4T)EuBUKvx3uo4>k4z!|Pi7*u5ZkME>0A55zl^lIzXu z&KJ+=t8MrzU%G3G=Y$V;&!~C!?6<+JoeAZqwD2TwcxC|GdFFwv-n>L)y36il@RTdJ z>j1Ez{J@mezyKl1x@X|^TtTeYe@)Y$j5?2t+r9JFyL$sX1S@~P%X1rHT_253GVTAo zv+0zk&nFXf zXVp2bVXlz#ErB6&A3KLAq8|gi;3E9|gT!ue1*8kur0WpX*+2b?x2c#iACQKFxT3j= zAxadDq>aY#zJS_`;^4Zg;2*>1nc7>%L7v`PblGsQ={v$Il^F%1v!QflOi}}8MUMHzTAky3W zw_!+3#{*iW?*Lhwr*%V`k5a`2%j(Dd@-GG2P{-jcxS)YX6T2)g+ zWCz7Q2Mh6zc*k_1V@Ol|BOL;7#ojTUl|W-k^!&F+4vrnIttHJH zor(uCfH!Cifx^|lX7t^dbp6n46+iOtm{$L)bD&Mfe6DAplb&HxBYe|!)dQNYXvLPH zUp|O=XdmiT{bVkjxEiE4plF7aE7!yUE;*tMOHu&u-|2qDNW++#(rm)CEuk>TK)PI{ zO3#ghU z3y4XS1td4}5#rdlKpgaU1#i4d@(v``LZ0Dce6_<+z3u>(Y(IW}wQz3i-#vB`LnOd9 zus-K9+`WHFF_(#5NJ@bFAf+V0>rnA;A%^tv@~|)R=yZ;Y6PD$`J@Rj8>T~=qpkrS8{!K1X#dW^_Fx~vFi&#b&R{oIX=WD??%}dOw|2(bttMWy|AK@j zasw8f2Q9a|dRIU{sa~BAQ z9Ql;|YY*-5pOs-=7UDc>?x0-Cvv#@$Y$5FRT{!oQC33JBZk8qNH^+D8JXebFXf&%& ztAF#2hLWD)oNFr(!(sg<5DQN`P#XzI{+DRTd4u8M^RPy*zHn&*jqcqs+XT#{HUM$B zU&5zWjLXG;;IEu_GcqMmYzP2>-A->3D6$877T}oM799JPL<&2rm0z zGtGHobc7Zq(KD|pk$W@kMqEK^9$7Hy&cMasTc7A_R;;5VYj>W1@=o-^GST(PSTB^G z?{TSpIujsEXCn0?*Z#)PqEfeT+11%NG(p>hpbdN0z}J@c-8N z?^iZbl<{};tN!e$maxjYYO0w<$Y2xAarakIN6F&yDDwPu0N1l+xF$mvZdyhHZnB+e z-DzF(Qk6hhk2oa%Vcq1kFHwl@G;k5(V90D3&I05cyl0szFL>}d?e}K$JpfKM)Cs7Q zkHJH7Jiw{}&*mTzJcx|>Gl%t{Z$bA~a&jAvBT;ZE#6zNI+|cy7vhcmi{Of290RAKx z>9UJHovO_mkQG!m_IB;TEo(PIQc&F8>sm;`zW=~xC{hzzlab4)^)E@0ugXHe^v@t^ ze*oaCg~c$O+i~9Fh!etx&-w6u+1TR8r&tom&kK$ga>{U6U#{6;8Bm%Qf5MLh;miCp zb)yIc=4m)H45d*=x{J%Yq@G`as84U+?W+=&6bslGjoV_TUQ}}q@Q_e_7<`RY;~W@h zSFoM}Fn5w=%0RU85tJj|e=d#QfvZ9SVwoBqyZ_U`|8CN(_oURO%o{k!XLTLc8qoel zNH01r`*U4#NF3ejS^Lam7~38llu;<|&OM_U1o*8+-v8YoFwpBN)KuA|`CgYT&)a%X zY;+`21Pf^-;9W(e*_Q_Twqp)J%fZA)QpppbQa*R>lQjYS0DV@J@hmXF_+P>2ob6tA zmH6<11E?GQb228fOS(-DohEFZhHl5D(W`LE3jIJe0SLF0#M>=^Hrc64o?Cgi3}*4U zzOv~t!2DDQOXR@Cj+p-61b=*$mWH_46H^APLcU^ZG47dYLuFe{0aVzA#zMS&q&Cfi zn^MkG%mDP?f&crtsGDBQ`(#2+ zzdC6w@KC3?0^k(x5?v(T>9Q+)%uK94m@WpbGIk@=qVAZoHO>E1tcxF$ z-*n+_i3K2oEouH{s1gq@8KdT#ODI^mr4}~k|4n*EdNfpNq^Ht6+5>*Ksnb>BdsTi^ z;j}3?fZR^0QwhU6&@<}KIaVat29W~RV2Jkcj7z{v5FFIX;ho5}M)q^XVLZKApRow5=T# zz9}iMdA_OwNgjFQ|7Kx}&pj)d6b3I)qtDK162xHEYnSmNpZzn}T%8%B>HQ?2MR%VL zejn8uT#orqlrpi5*0O4H+e91)WCDv1w7LOP%BQSL*YYZUI_DrzBKdm8^*^;fX4CSF z$LdL}eoRHG(0>oEmF>UlaM^v63kV99w`EV&FH6iJM}PMKZ%ZzO035Aqn6770G7Mu@ zvIKx>P(Ft}2T3oVwlIOol&{zFIu#?bxQf?`x8_el(sA*Fp35-i+-Bt&FW_t5xeGV5 zr;KN8-kn1Y4y(+g)BMLxe{osjPrJ7Ov>Jh*$-*uMLQ<%q@x5EgU;KfWftt9i<7sz& zZzljxL1!HO_etY>)OQ48FUBs*)aV3r0rdR=WUppK7J@ixq)Wi{Z9<-7gkbuy9xR=g z6LoMkFH)oN_$B20#=dQe>(U_#gflL3P#EF9!9Dt%gr#4Cmk9Td%hD-|Ll@H5r`GF% z+zd5|r&jEjYZd@Phea~M7sGu@y^4DoG0H&5@NXxXJ8dI?f_sOK%V^j>bQ`}Mjab`o z+vG)s-w11sd_Qo#qkt%VZ=6;kBlKd$K4v+6jvhjbgc%%_U6B5t$mNhU9>GME7dIe_s=p3e`oBE)h(5PhUTzKN)L#}(2xA}`A4uU{B*sHYN&g!`KEza00nfSY z-YVv|+mA~e($BtBD6uaT`V+Cw?tZQlvmL8xF860jHRHO-8L_FAlQOh>+sq()LRyY2 zIa;oNJ!&9cL;n*nO+*BJgSs`r@t<)yI4S*p(1FSxI*?6srVIAf%?&adhfY^ri`B-G zqJ8VODOZpYpxnq}{4cV>H}xb5{%bJSV+?jTo-L8@8Dl2>;=Cow4L||Qr1_X=`C zgHA??8}H=SkVN<>sQ)J<=_egs;z<&o1(<6lyM*XO?rj5yH*!|%wIY{4#h*L=V~&n3 zOW0} zpv<-WK1(a8Go-z9qOR6@pTc0ajgSF!Y;56QR(i8N*TSC(Pra^qW?#YrjGsfr()ub! zjzpXPnblARqqZ=LaTf_d;o&3~cUlFpUiE*AOx77vlnRUNCC8O~ybpMt)C_UZn*l|r2x{mLe{NpW=4~Z7X*I)`5PRkdc%_5F})u0V@~p z?EF;j4#CBL@%9NDT%!ufns;;#-gS1)YW>tbbPO#2KG4rx#XROBAENSfj<6yhMA5DX zD0S|$>sk(tyu=`uq(!vu0-G9s6()$BP<3G_;cGhX*89u>tcv!na)fqGk${<1vjFn= zj@2~>(6iPHucI!>*kKFSur}=u$qkABrAjCqYO{U1%v=F8;|Q*1v?p5=QvsUc28f69 zd9a1OA_{C!NrAzSD8Y!`Xy}3wWKU)ECfN&tI-0h$c$$ygpxHcEskD>4_2##AV?M*ZbK&EP(}%4t7p) z8tODL(q)fi=Ed~5d#n51vTJ0Z5gWDorGUb$>ZgM@q(+c$gj}dE4(xvpy5oa&XpFZ( zho+vqTJ(a#X@dZ@%yju?D%bi#&L-g<u%;+O#iU9sgjYaM@%>YC>}@B>^E){ynwn!Ma7zN z1Sx7cF4E}3Xn+30BF3qymm0AC5i=&q4!WB>2GxcauO0#gs^0AjZJn3I9z!IdZ#xAt zUvqgX)YUC0h%70}@zwmzHUg=Lwol(Y;&K24BYT>GDRQ+z0p^cVpzKpZZWf>Vx$sy5 zsru0-$BsseQ4{-0_WpgYVOt1DeF{LxS7=5~ZAn$+LebN-br9S2W2zyzkY~o+j!Cc! zf`#dG@$wX)?1vXpzQ%<<6Z`Xj{E@Q-cc$j=W>?61f@Qg zx^DacyqUO<&@Vqk5`qc--1mCMw+i5(=OuCrK%7B8f{z3OJpheT)Ck)ClnKqPRzR_J zw>ADSXvg&EY~RoDYfDku5jU8W)>z4=S~bouTi>BdBRalZymqw7SzhfLffR=7=k)Pc z99{4OxIeL#Dv|^ws+ZudtZ{jTO)!tu%M$7ap`skK zbd(Zl1>Y>Lg{N7o64h0UTO79<87E>Ohfa>nF&_=KrIg)=j{(vWY5mSL;0f8K-vxa({7IUBOB;{CReNaY@v|K+r$&_PgrKJ0olv4oo zg97h0E!Yin%2TX{@^9ME0G>3~GSiz%F;PWpZ{i3L8qCw}+GLgCF1$g;u%>9CQJ;O4 zIDN--f67;!&6v;O02f~Zp5QLG3}8UfyFQoD7n*m>62=CmfQmPMgVJA4A=F~BSm|%D zL|3O8J9oZw$Rg@8aUu5E>54?_o)B_uP(U zR0U$IAjTdEJ%G)HO1h^HG&}+M@04?|gS`mOhxt9DU+uW~4DfWe3ImlVCr*x1a^C=R zm|fpS+4abU2o4JP4AiS|0hXlOWj-=gj4ewi?_ijZ|2IOvi@**bgBKMt^CjJV$bm*1 zKtq!d`b*VGhWiw(R(tCQebGq(nOA9}&fZ~4R*eP|yq-x>@Q|n31IkkBkSg4SUz|5( z+8V;?8Kvia-u*}!0m+RX8R#1Vj5$9TOmZJS) zgzNcr?Xk*dOsd=I>zH>fr6Y>m_-RYyZXu0~>8MVSv^^+5StAd*5O#v7_X65g(0pnx zz(S}!iWFOv2H(i9laeTP5r5_hD}2WkOg{j*3#=b9bUzM~N{lS*Jnue7)NAmzz1Ma= z(x=V(X%gI<^3MUAAHg$gz+7Rr!0l-1GDYlzi zt12nI>uS359usT=geK*J!*1CwMrho0?Z0q-3;f;h5mWiy4k+6<6-p~w4VyAS9J)lv zYrW?l?84JR&V4Nfxr>a?^;z?3pZNW1Eer11GYjwynOSsimC=LlNV@@(mhdiu#A5SipYEGy8I)do!*NKxX{z$(KCqbHBL&<5%|RLfk9w}T z9(^zj;S2F__Bo}BoKqkKtR8B?q|!8Z{@F(o8gjk*Abxv(+$e$s#S@@&li~*B(il$v zp}kpG@uhDEm{eC)lR`qX0WgQqmq+hp2(Q`*bv?3viCZ3!JvS5}-^$neYZv)_mu|f^ zG1^*Vq2N(SUj3v#x1$e8`_J4~v+HLs|E*$Ta0ZkP^pw?`rNkB`)8jADMgt;J;#ffF zd>qQ?V02nZ&}z2tow*A2o&1+{9$ZcbgJtUg(XIL+T_%(Qb0Iuf^oT6h%nIQrcmn5$ zdO%o~Kcnk43uy$(V7;;5%I!9n*(rYZ9<_dR02HV_ z>e=Qf$w?zePd0J}nXLq%frq9zmfJ*Q-_{q5tgKgo4VT^gj`X+`h5em?Xz}|6|J}u` z=zs|r#F>^E(v>3ft)s?Ly~@!o5DE1;q5UA2eXcL`Uf5&sd_aypO4#enMZphsGmIk{ zJ)+#dN%K<55;$pA2dGQZxC059#y5bRj*7zk3BT(b^mXY1=sG@wIT>qr^F)D15ll-( z;NcZ}D6E`gOM*a+D;&QY`ED>`l0w^yZLbN+3kyu66a%XaPa0OtO zS+TpJxX1e<;fZ6!%Xq|doBcu1=H7v!KeKeaRR!)*K%S3Y<6m`fvQ?{&2VP_|tdF3H z&Eq#*{CY1)fp7k{Oq6)SA;@)-jdXMj==w!e&eQF}I$}(Qd<*6dO z$%jCgv;HzMu5T{u4(o}r9z(N8(Gd>H4SGbOKOWh2-?xk)+(iFzvzvmm6Lh!4V@HiKaaO9_))&j{6o*ax_Oz|LfIe%7)D*TQYR$wQW5~ThtQW#8$Lc0kCbb&yefs6}I_b(4FE%p9- zoI5mesOub>8p+bD*tX)c?jg~-kn+c*V<9C`q8Arut%L>Xf;-%4ArB`U=)=o}Mo;6Q z_CB7fu*rP=Qp+k7R*)D_AAkiuG?x;*272W`h(M&XEC(SUx@e#<{nRYvI zSg&Z{UB~r{;v`K|F~F1i!%j^{{~3XiSdJk$zeXHmFa+pqHeY9={*P*ZtiCXE>vmt_ zCX9mrjTes-?LfsTo<9=x9yG4^t(7w1ad?ACCY#F2)40IPJ7c`=r-s@4!VjKQL+gpkZ6DA7vSY*1rlO7rbu{MLpxOLX2bm2dYth{ldNFifI-OG6+R9 z4*#b9_{W|4m%T2C?{ri11I_S+%TBX)a8CqSzW3AjaZ_yJF=;uV*l7xcH+`KyNy{-| zss4x;bKN4H6tN1pgpJFRIxNNte}zGx{{HzfNEd}`RT&%&%%ST1&xg{|4(yZpgbm0$QW_xO8G&(w63OZ4Cotc=}&v1T)R{vM+Gyz&hGat z7YNOJPh*0vX@V18kTt=z%WK8<(b~N)&Yly0ZaXIIv>9r^xS}Zj{_y_QBpGegr2Pyy z5uzdJxmJHyV(o-|Xtw}OJgl?QQlsm}IyoN_h3n4XSrV;z-Bz^ACAAMbUPp%!2IZ?< zHXrG;ZyLkLRdu3~9)7CUUl06VN~~M1JMkFt?N3J%?}QVV&u~5}^`JXm2fO#wvDvhX zoiUp8p82GV(i;xjGXfn3Oc|;PRZ6G$IigUp`^WkP5gK0o!`oHD`O6$cJHIv?ifS}a zNSJ&hvjnwuPgPnwtLK@zQh>(#-&Y9VU_9vY*iOc9G`!Gq@&XO#)x>TL`5M-AWD)&p zkMwN-I737_j%ZmcJf@uclT>E( zEE&GmZWjEsHv5nur^cM#M;WK|vE@!7rH@|UWC!x4QUjO(@4@+ryW0Dzccy&x-_TQyT^(jF!HIL)^n=;G3 zOIqGhS}Cn}3JckPfO*BSab`E#N9_Mm4JmUgQXo!|*0iW<&0dFSrse% zF=@zSgByCtrjh`Me*^znzw>6H1ExF)H>+09&!aMtVx6G1xmw4@)&%zK`;s{K%1pif zT4vLtiiKXZE`N8Ep<4?nXI5(HEcyBAw9f1_Vw%YHt#25&=BSOn3EusEb<3$Im;|?2 zq=nyMNg+EbT?~_cWt9s58Qqg^Q?lRim9{Ux>!rbM;Kmp;t;%jPI#ZMLI60vLhR%#o ziOGmr+p5|q{D>kUr$JX7#OAhJym62~jq_!{!tXe8>K#AkjNeBcYco#W3^wxS5vfI5 z2CDn})z{^yvcYdyexT{7>kZqRehBf|K_{XQp#I8>6rGN$eth%E-|{>0bwVq$LTH?g zagoDYPeQUCLru>;PWs?jot!e{aG3Jm{v|Em=kHi9Q@^~6%w3mnldU#iw4tsU(SNgU+6Jd`@O99pVJQk!cRr9VL=RB4kOG&T5k=XXwPg+#;PyxWf%Y^7+; zN@{hXyWD(O9*TyZ;xX0k@e8weWH_-`@%71;s!fv!wR`EUl9ayUnS;;K`TUoWS#m}@ z-f~$Y2y2A*ENnGhw^f=U!OG`!4sVkI5_~8(wCXQQgqO8_F)c_|V;6Em0hgzGHCs7O2sg(t3Q<+WvfeyXyfg~CItq$`bV+}(LsmC zYWhN@&eoo*`_c>dRc`96d_y^04#CrO(?BEfrmF;ya3NzEsBy;N0 z6lHlH#Y`4)o*DD>apGqg)UBLwZvbTV<4@gWf8_T><9ugI);fv$DK+eL`ge{!btS)P zO_M9Larqd_z0dZsEwJaT_lg8G-*5*)6ST&JvN7mpzUvfTI1SP0_Xc}{nrk%KOVD6} z=M+CD8Ve=l_p1l)F4KlhJXte5MYw>4ewpNd+V_QR8xbz?lwo-Ow`d}sZ_;;guJq^t zv3Ij&uENs3;U`74Zh$sY@_V86nq6mCMEfsG|UZDDh^ za>0G5l5Dj0q-IIB&H0X0DZ+(MgtOX_Q|mLyx9vLRrWVc+0n1A4jcSFIlBwZ z*A|-B%_`NXwH>smlNmPVb3Bwfd==BHVy|1{9G3Ka~Tf@bvx2cxqif;QS_8 zrxAq!TWmm`j%S38$l@?Au+Af-WWjmh(Ffz3TP93ib-Bg>U_X6Iw-B zS|JvIUp($3{KCIFJxe&B!uj&;7{}~Qm1_9sx0XZ@9{YC4jdyir7C1M{lj}0~oy-?k zeVtc|VRkto9`J>MQ?ASP_Nzp6NTXMoDT_a373`7UYs0Ibc1B;=4q~bv+%dDFwl31W z)%d2>#6raFJob8-;e5|>9C^yIX!{rkA>ms#OA-AcOk}IbX^7Gh6D8?NZ06;B%9U15 zfF{)xWnAk@S({^nu*E&~Z&v*uBMf$k!)WLL$1=K9B-{+uuxLcP)(p8e7fE)Gn=+{? zf@Q-Dj)T$ITyE4$#hX-zi|8_`|=HADz|ph2Jg)`*rensjRee z9Lo1(8~CcyvB5iarx$;jk!;qMxUc*1m1T%N=+6WhA>^V_~L#+1go)wSZw*Eg zT6lFsv~<@P^UGz=Gow#}L2z%_jk`(1wef09R<<%I{Rx>HOu=B-E2&_`H_<_!$2z$u z^A>YwOY_Ui&^|eDNu?a~4<&xHl8w@Dm|v?1j&ZS$aCGQh{Uwk2FoCMd>xDyE^L0=|~@%_)5)( zS%+$amh}yD7#a+XE%}$W1lT-}M>CH#DL0k{=aQMm*waXZszu2$xuBc$mJ@DA?U>%z z(}WMDU%Vp@v-@W!ZP9q_u3Vc3iRcaxMy?_OaSeuIW)~7;98SLbY-+aZTqrjZ> zgzy%^#5d?$T1D)E1%)FCw0w9a2x242k?f7)cNv}UYA1TDok65<^?QRrJtT1ln@G{d zynP4R>SYFdE`B>YrW{DGEZcLfHYU%~YtAu$ykwpdb8uB6xykb+64-8AB4d z6S|&TeBteC9jW68xPwGd>}%9-{4TL z*(2nqgMagCvjCrOf*G+k+#g-Xg5zz2J)B%W?EN2+F=B9f{$!OVb9#m*v)@18cno;o zNd9kd8`I?8yTUzE*|N;qhKW$NkUBjyomUuWKk^WCh>v5Lys=IZCan>6hraV)2=`#- z^_{?(z_0conKoEa+Q<;kG(`=< z7;Nh#m6=`5=FE$4@yVyuhOSKD(^e;2`vE2nmN*+m+9alP!{yn1x1G^OG(0`cY4rtJ zO?1V45*!`6b69g}RjRQq(}r5NbRvU(D*|H-+UX8QGO6sG{TO>q_yANU^j$6Z3+}Ss zY%>s&J>DxIa0QB)_vIU zn=(2%+c;ViMa*)5!)CVF>{B~mpaZGw^W0O_AT-gV(CN527MyRC z%sd+7&5W|&ZH6N&8ymAFAF9d@u^GOU z<<~(tW$X~Q71Ahwyjp6pRBjGS6{02)zONG zrk+rk5eAWXzDb`QKw-|tnnXch%wHlkK`d5q6Tanwi=Yn{C}JhO<>Is4Y#)B7(jay5 z86_f_Bkr>KsGy;dyxd@)Pb^hl>jE2(o-K35q!sWQ2_5+9iw@O)ajUCjvtFl&cg&>wPrpg4L>#QbKv7CE~+;WD4{N3=lOqg{V>hw8(ax5Cw!`Z!#e55zn?un+y zs)(Wlx#nrbs`3!LL10l*GHLqjj&iYcv`+fUDvhSeDJ^GC-QR(fHPtC19!jnp3$=VW zP}NPVtovOxzEnuKN*NO8i8RV63;L=p%YQaLv_nRM|0)%n1FFEPb^GOu9S>TehBm%x zOQym&;*q2XMHjY_kgS;um1*J-^DzCgRC(msz-dI46FgG9F0{{`HIJAR&a!1NNv@yQ z6dYJVmMS8kLq_vd<9h(KaB*G${XmC25t~d^!#(1?mUZ)NI0J#jtLyOX>BH7@v^GO6~ z;vDxXLq0QS*=SQu_%3r-Xvzfh``Q8>0=k?bQw&x3A^yC9cyrlW!P*7MaUw>UlP6Jm zKSL8{^RA;);?y+Jcc6V6Q>+TiOd8a5-dJBLpO4+&Os1Fcc!=@QiQ~rxE#22C^&swH zA9PXS45nZuAm#G0NCu6^WcjfAl$zfU&Lq}Yr7}ips4A_d9w9hsMVi|H2Yl=+b@}wK z>#*++#mN$tlB>TrF01NwH2o;hk=aBz-=x8=wWAN1-^@0^sPAGu#h%ScKLR5m_ooCm zI#al_Jg(~C{KtAC?k;Y36ft^3{5T(@Ups{$)%R)mr!b^InQobaxDt=YcUcu(&TiGL zk-YB*P8NKGe!vb5$o9}Liy4h%vQS2r-lo3pg%-L})Dd%QuDOC|5W}*Oje>%=dZt27?SjqBggG`bZefzY5Xt5 z1*5I&DOb4?^=X2tWs<7g&YH&ogv=*RwOhio~Frc3C8}MFOKR60=>#DtdM?` zLIwIOP&$11Cf1HW{e{_|CXQgNab}Xg8mPDZ?RvfT!0SF?fYWm9bHLJYzSrTxNlj8{ zIs133qNU5)G#g|5PeagzI8O%KA1jCQ=1u8c>NSs^OpyWKRU0?M&|T`dHg40!sRzzx zdFpn7Yu^t`jyxwn=N5Rr5m6~K#KrYW=|k_T9ypsKV20buBs||P&K=heo-B56GalXj z3~odR^LQ(FA{H!|CYn0E9+Nz7$@NAl(q=@PJ7cm0z;5ZWPkmu?1BP1o%U!Ro7*_e< z(9&`^tKZ1e%F5S6$048jmtrXSQ+cqtqNBtF_+!HNv5x8%yIzMLZ4eW1ehRfk7lqxm z^ZRaU@Y{FOyC2pC(P2|ZM6fa`ZW}D#o?EeHZCxJlwQxSobTqo+*q5TEAs~%7Oih>V zS)JUjS&CR~I6vj$(b98?s${z7@O$d_`(z}rf@uPhwBARjLj}1?z24-tU`eQ+3cb4a zE`2Y=y`ZT>6`wP38JTdMW0(EYQ*~p>n*|pm)mZ3HbV z#y<}hJkHPeH^=KU8+WVuHGsT4aS zJv6GBYrDM*3g!B%$p4thV+PyTtqv|Bzi2Pr#76Y@uaX{Z2m<{)TA%Nmb2of-^LeRu zLpV4Yp5#}%z}DzYQnBU-l=Ws!G!{%}uWe86FT&AeJmX^?#|-vAn}SeIf1NVz<88j6 zT(Ch)S|P$Ch#*AAi`i2_sG`j|drPB6uX({f{iIkrc=s+|JK`6n%*c0ytq-0h;i)DQ z_wXZk<%^!KN)1@bo;n(??DoV)v|EGDUabg&ceI%v#VoPgEC~|X^HRnU+>~LwcNKP7 zXYJRi_zG9k&9BFP+u;+;G*_^?c%8)`b{rd(ag{0D7#YSTwaQi4-=z!o&osmOV{@+d zL;M~;H>tch#uVSrn8ZNEBcm@dkVGioe4L&9I3BX+ybB)+?$M3dU>Qand26_8%-}X7 z%65^Vy?ZyFmc-bY?#$`F#iT6w=!Ze=b(;Ri-gts1#zo+)`WHpvg!IQC%@=H26bha9 zKXpa_5Gbw$Uk_m7c`{wCx^^_#qmz)9c`kU(BUubyvdFGs_g8J3^-csv^$j%}G8PzLH3CLecdZ(6w|sjxXll5j=c zcCoJS%EV#~zNLQ}yNJsaEyGob4%QAt{fbX~`Iqytf=fjy(F5=7UL#56BGnan&-55Z z9gaN~_4e1ojr;g;t9{5?oB4KIxP;2I+;LQSjE~LS-z)j+jeE@z5P-!d->EH8xBj4d zVPs9&e$3iywiSA;+0DP5A~6Vum8;JkBKgPr?_wmN3Th&P!RDoRvTySPR^J;%&YrNm zf0uP;VA+1`^%d9W`(WUt=;mgc<8nKe(sa^vHe^n4X;-T%I1fu zBj1uNH>UH*hRb>ev7eHk@pt+B9QcCt)m!;}Ul0aXYD!le(TDbu-lc+hb{EAbHKX^qCHm*G2xYI{viYvWu(=7aA z@uOs`g~_F8(k!8hQ_8P%ZLe3_#2{$kX0J%9HTSorCiAMEbSRTXcS5iH)q$}h-Fi$^3 z5yV!M^2E!DPisc+ilb-c8nJ>UWwKYMj>A)y_Zr!}$GsBb6X1=C#)-&Ipvgvj3h+3u z{l1evRdsy|jRKRdoCys6Qa&gkVKrCIdevw@c7sC%!j~FAsB(Hgz{zT`d5!_HVc(3E zG0_turhGkTc8X3KlO5}PQF#K52%_`4+7Xp4Q#{bjo8B16J)IGpx|Ltj(Abmkl$z3J zHdkJ4CiGj%v-Vp~0Gu7Ik;7*^orIl_8Yv$(aurwl&i6J`;L+X|8M$Un$W@RZO1D+b zp?o6YyRw0;dnU}w+(HC{6;+tUH9e#weTVa=seN%-T?x6RWO~wAzK3jXX_dVsM3kTR zin6VFNgqz%NN))B$i(FYUNvp#K)Hcg&U3J)(5rve)kLHkWQFpRbf>paVKMeklcnWO zN|8=o>3Wt{LDeinscx?AJBfLUIL2eIrd1FZGdEI@zoW~F;X!qLUhgbKXHyBKq z%|Dg6sHhR)#5;fdmidnQC$d%2k{O@-Y&65!aNyLBzzyY3XX=|a`*X99#dFoc**TM^ z@sZzwSc`=M@ZANT+NzZv9Ghf6wG#t6xLZZT2qGe5@nbDK1<<)OWFR>MYD5TjYKZ9S zYb4^I{w@``6VVtC<3p)GR>COZfYFyop;6Ho7ZXB1FE+8mfAT1P)2*)O1%Z%nAkg?CX0C%O{0UcwDX>bh422u@}g1 z!stH!`w!W!`U)N{*CigWsw?3`#!h6#-{*%5C8xG literal 0 HcmV?d00001 diff --git a/_static/img/menu.svg b/_static/img/menu.svg new file mode 100644 index 00000000000..30ea1d901e1 --- /dev/null +++ b/_static/img/menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/_static/img/scylladb-logo-horizontal.svg b/_static/img/scylladb-logo-horizontal.svg new file mode 100644 index 00000000000..ad5cf5016f3 --- /dev/null +++ b/_static/img/scylladb-logo-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/js/main.bundle.js b/_static/js/main.bundle.js new file mode 100644 index 00000000000..454abe3b00a --- /dev/null +++ b/_static/js/main.bundle.js @@ -0,0 +1,2 @@ +/*! For license information please see main.bundle.js.LICENSE.txt */ +(self.webpackChunksphinx_scylladb_theme=self.webpackChunksphinx_scylladb_theme||[]).push([[792],{452:(t,e,n)=>{var i;self,i=function(t){return function(){"use strict";var e={"./js/foundation.abide.js":function(t,e,n){n.r(e),n.d(e,{Abide:function(){return f}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function l(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};this.$element=t,this.options=o().extend(!0,{},d.defaults,this.$element.data(),e),this.isEnabled=!0,this.formnovalidate=null,this.className="Abide",this._init()}},{key:"_init",value:function(){var t=this;this.$inputs=o().merge(this.$element.find("input").not('[type="submit"]'),this.$element.find("textarea, select")),this.$submits=this.$element.find('[type="submit"]');var e=this.$element.find("[data-abide-error]");this.options.a11yAttributes&&(this.$inputs.each((function(e,n){return t.addA11yAttributes(o()(n))})),e.each((function(e,n){return t.addGlobalErrorA11yAttributes(o()(n))}))),this._events()}},{key:"_events",value:function(){var t=this;this.$element.off(".abide").on("reset.zf.abide",(function(){t.resetForm()})).on("submit.zf.abide",(function(){return t.validateForm()})),this.$submits.off("click.zf.abide keydown.zf.abide").on("click.zf.abide keydown.zf.abide",(function(e){e.key&&" "!==e.key&&"Enter"!==e.key||(e.preventDefault(),t.formnovalidate=null!==e.target.getAttribute("formnovalidate"),t.$element.submit())})),"fieldChange"===this.options.validateOn&&this.$inputs.off("change.zf.abide").on("change.zf.abide",(function(e){t.validateInput(o()(e.target))})),this.options.liveValidate&&this.$inputs.off("input.zf.abide").on("input.zf.abide",(function(e){t.validateInput(o()(e.target))})),this.options.validateOnBlur&&this.$inputs.off("blur.zf.abide").on("blur.zf.abide",(function(e){t.validateInput(o()(e.target))}))}},{key:"_reflow",value:function(){this._init()}},{key:"_validationIsDisabled",value:function(){return!1===this.isEnabled||("boolean"==typeof this.formnovalidate?this.formnovalidate:!!this.$submits.length&&null!==this.$submits[0].getAttribute("formnovalidate"))}},{key:"enableValidation",value:function(){this.isEnabled=!0}},{key:"disableValidation",value:function(){this.isEnabled=!1}},{key:"requiredCheck",value:function(t){if(!t.attr("required"))return!0;var e=!0;switch(t[0].type){case"checkbox":e=t[0].checked;break;case"select":case"select-one":case"select-multiple":var n=t.find("option:selected");n.length&&n.val()||(e=!1);break;default:t.val()&&t.val().length||(e=!1)}return e}},{key:"findFormError",value:function(t,e){var n=this,i=t.length?t[0].id:"",o=t.siblings(this.options.formErrorSelector);return o.length||(o=t.parent().find(this.options.formErrorSelector)),i&&(o=o.add(this.$element.find('[data-form-error-for="'.concat(i,'"]')))),e&&(o=o.not("[data-form-error-on]"),e.forEach((function(e){o=(o=o.add(t.siblings('[data-form-error-on="'.concat(e,'"]')))).add(n.$element.find('[data-form-error-for="'.concat(i,'"][data-form-error-on="').concat(e,'"]')))}))),o}},{key:"findLabel",value:function(t){var e=t[0].id,n=this.$element.find('label[for="'.concat(e,'"]'));return n.length?n:t.closest("label")}},{key:"findRadioLabels",value:function(t){var e=this,n=t.map((function(t,n){var i=n.id,r=e.$element.find('label[for="'.concat(i,'"]'));return r.length||(r=o()(n).closest("label")),r[0]}));return o()(n)}},{key:"findCheckboxLabels",value:function(t){var e=this,n=t.map((function(t,n){var i=n.id,r=e.$element.find('label[for="'.concat(i,'"]'));return r.length||(r=o()(n).closest("label")),r[0]}));return o()(n)}},{key:"addErrorClasses",value:function(t,e){var n=this.findLabel(t),i=this.findFormError(t,e);n.length&&n.addClass(this.options.labelErrorClass),i.length&&i.addClass(this.options.formErrorClass),t.addClass(this.options.inputErrorClass).attr({"data-invalid":"","aria-invalid":!0}),i.filter(":visible").length&&this.addA11yErrorDescribe(t,i)}},{key:"addA11yAttributes",value:function(t){var e=this.findFormError(t),n=e.filter("label");if(e.length){var i=e.filter(":visible").first();if(i.length&&this.addA11yErrorDescribe(t,i),n.filter("[for]").length=s&&(i=!0)),!0!==this.initialized&&s>1||(n.each((function(t,n){i?e.removeErrorClasses(o()(n)):e.addErrorClasses(o()(n),["required"])})),i)}},{key:"matchValidation",value:function(t,e,n){var i=this;return n=!!n,-1===e.split(" ").map((function(e){return i.options.validators[e](t,n,t.parent())})).indexOf(!1)}},{key:"resetForm",value:function(){var t=this.$element,e=this.options;o()(".".concat(e.labelErrorClass),t).not("small").removeClass(e.labelErrorClass),o()(".".concat(e.inputErrorClass),t).not("small").removeClass(e.inputErrorClass),o()("".concat(e.formErrorSelector,".").concat(e.formErrorClass)).removeClass(e.formErrorClass),t.find("[data-abide-error]").css("display","none"),o()(":input",t).not(":button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]").val("").attr({"data-invalid":null,"aria-invalid":null}),o()(":input:radio",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),o()(":input:checkbox",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),t.trigger("formreset.zf.abide",[t])}},{key:"_destroy",value:function(){var t=this;this.$element.off(".abide").find("[data-abide-error]").css("display","none"),this.$inputs.off(".abide").each((function(){t.removeErrorClasses(o()(this))})),this.$submits.off(".abide")}}],n&&l(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),d}(r.Plugin);f.defaults={validateOn:"fieldChange",labelErrorClass:"is-invalid-label",inputErrorClass:"is-invalid-input",formErrorSelector:".form-error",formErrorClass:"is-visible",a11yAttributes:!0,a11yErrorLevel:"assertive",liveValidate:!1,validateOnBlur:!1,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^((?:(https?|ftps?|file|ssh|sftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,website:{test:function(t){return f.defaults.patterns.domain.test(t)||f.defaults.patterns.url.test(t)}}},validators:{equalTo:function(t){return o()("#".concat(t.attr("data-equalto"))).val()===t.val()}}}},"./js/foundation.accordion.js":function(t,e,n){n.r(e),n.d(e,{Accordion:function(){return d}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js");function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){for(var n=0;n'),t.options.submenuToggle?(n.addClass("has-submenu-toggle"),n.children("a").after('")):n.attr({"aria-controls":r,"aria-expanded":s,id:e}),i.attr({"aria-labelledby":e,"aria-hidden":!s,role:"group",id:r})}));var e=this.$element.find(".is-active");e.length&&e.each((function(){t.down(o()(this))})),this._events()}},{key:"_events",value:function(){var t=this;this.$element.find("li").each((function(){var e=o()(this).children("[data-submenu]");e.length&&(t.options.submenuToggle?o()(this).children(".submenu-toggle").off("click.zf.accordionMenu").on("click.zf.accordionMenu",(function(){t.toggle(e)})):o()(this).children("a").off("click.zf.accordionMenu").on("click.zf.accordionMenu",(function(n){n.preventDefault(),t.toggle(e)})))})).on("keydown.zf.accordionMenu",(function(e){var n,i,s=o()(this),a=s.parent("ul").children("li"),l=s.children("[data-submenu]");a.each((function(t){if(o()(this).is(s))return n=a.eq(Math.max(0,t-1)).find("a").first(),i=a.eq(Math.min(t+1,a.length-1)).find("a").first(),o()(this).children("[data-submenu]:visible").length&&(i=s.find("li:first-child").find("a").first()),o()(this).is(":first-child")?n=s.parents("li").first().find("a").first():n.parents("li").first().children("[data-submenu]:visible").length&&(n=n.parents("li").find("li:last-child").find("a").first()),void(o()(this).is(":last-child")&&(i=s.parents("li").first().next("li").find("a").first()))})),r.Keyboard.handleKey(e,"AccordionMenu",{open:function(){l.is(":hidden")&&(t.down(l),l.find("li").first().find("a").first().focus())},close:function(){l.length&&!l.is(":hidden")?t.up(l):s.parent("[data-submenu]").length&&(t.up(s.parent("[data-submenu]")),s.parents("li").first().find("a").first().focus())},up:function(){return n.focus(),!0},down:function(){return i.focus(),!0},toggle:function(){return!t.options.submenuToggle&&(s.children("[data-submenu]").length?(t.toggle(s.children("[data-submenu]")),!0):void 0)},closeAll:function(){t.hideAll()},handled:function(t){t&&e.preventDefault()}})}))}},{key:"hideAll",value:function(){this.up(this.$element.find("[data-submenu]"))}},{key:"showAll",value:function(){this.down(this.$element.find("[data-submenu]"))}},{key:"toggle",value:function(t){t.is(":animated")||(t.is(":hidden")?this.down(t):this.up(t))}},{key:"down",value:function(t){var e=this;if(!this.options.multiOpen){var n=t.parentsUntil(this.$element).add(t).add(t.find(".is-active")),i=this.$element.find(".is-active").not(n);this.up(i)}t.addClass("is-active").attr({"aria-hidden":!1}),this.options.submenuToggle?t.prev(".submenu-toggle").attr({"aria-expanded":!0}):t.parent(".is-accordion-submenu-parent").attr({"aria-expanded":!0}),t.slideDown(this.options.slideSpeed,(function(){e.$element.trigger("down.zf.accordionMenu",[t])}))}},{key:"up",value:function(t){var e=this,n=t.find("[data-submenu]"),i=t.add(n);n.slideUp(0),i.removeClass("is-active").attr("aria-hidden",!0),this.options.submenuToggle?i.prev(".submenu-toggle").attr("aria-expanded",!1):i.parent(".is-accordion-submenu-parent").attr("aria-expanded",!1),t.slideUp(this.options.slideSpeed,(function(){e.$element.trigger("up.zf.accordionMenu",[t])}))}},{key:"_destroy",value:function(){this.$element.find("[data-submenu]").slideDown(0).css("display",""),this.$element.find("a").off("click.zf.accordionMenu"),this.$element.find("[data-is-parent-link]").detach(),this.options.submenuToggle&&(this.$element.find(".has-submenu-toggle").removeClass("has-submenu-toggle"),this.$element.find(".submenu-toggle").remove()),s.Nest.Burn(this.$element,"accordion")}}])&&u(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),p}(n("./js/foundation.core.plugin.js").Plugin);d.defaults={parentLink:!1,slideSpeed:250,submenuToggle:!1,submenuToggleText:"Toggle menu",multiOpen:!0}},"./js/foundation.core.js":function(t,e,n){n.r(e),n.d(e,{Foundation:function(){return l}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.mediaQuery.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var l={version:"6.8.1",_plugins:{},_uuids:[],plugin:function(t,e){var n=e||u(t),i=c(n);this._plugins[i]=this[n]=t},registerPlugin:function(t,e){var n=e?c(e):u(t.constructor).toLowerCase();t.uuid=(0,r.GetYoDigits)(6,n),t.$element.attr("data-".concat(n))||t.$element.attr("data-".concat(n),t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf.".concat(n)),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var e=c(u(t.$element.data("zfPlugin").constructor));for(var n in this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-".concat(e)).removeData("zfPlugin").trigger("destroyed.zf.".concat(e)),t)"function"==typeof t[n]&&(t[n]=null)},reInit:function(t){var e=t instanceof o();try{if(e)t.each((function(){o()(this).data("zfPlugin")._init()}));else{var n=a(t),i=this;({object:function(t){t.forEach((function(t){t=c(t),o()("[data-"+t+"]").foundation("_init")}))},string:function(){t=c(t),o()("[data-"+t+"]").foundation("_init")},undefined:function(){this.object(Object.keys(i._plugins))}})[n](t)}}catch(t){console.error(t)}finally{return t}},reflow:function(t,e){void 0===e?e=Object.keys(this._plugins):"string"==typeof e&&(e=[e]);var n=this;o().each(e,(function(e,i){var r=n._plugins[i];o()(t).find("[data-"+i+"]").addBack("[data-"+i+"]").filter((function(){return void 0===o()(this).data("zfPlugin")})).each((function(){var t=o()(this),e={reflow:!0};t.attr("data-options")&&t.attr("data-options").split(";").forEach((function(t){var n,i=t.split(":").map((function(t){return t.trim()}));i[0]&&(e[i[0]]="true"===(n=i[1])||"false"!==n&&(isNaN(1*n)?n:parseFloat(n)))}));try{t.data("zfPlugin",new r(o()(this),e))}catch(t){console.error(t)}finally{return}}))}))},getFnName:u,addToJquery:function(){return o().fn.foundation=function(t){var e=a(t),n=o()(".no-js");if(n.length&&n.removeClass("no-js"),"undefined"===e)s.MediaQuery._init(),l.reflow(this);else{if("string"!==e)throw new TypeError("We're sorry, ".concat(e," is not a valid parameter. You must use a string representing the method you wish to invoke."));var i=Array.prototype.slice.call(arguments,1),r=this.data("zfPlugin");if(void 0===r||void 0===r[t])throw new ReferenceError("We're sorry, '"+t+"' is not an available method for "+(r?u(r):"this element")+".");1===this.length?r[t].apply(r,i):this.each((function(e,n){r[t].apply(o()(n).data("zfPlugin"),i)}))}return this},o()}};function u(t){if(void 0===Function.prototype.name){var e=/function\s([^(]{1,})\(/.exec(t.toString());return e&&e.length>1?e[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function c(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}l.util={throttle:function(t,e){var n=null;return function(){var i=this,o=arguments;null===n&&(n=setTimeout((function(){t.apply(i,o),n=null}),e))}}},window.Foundation=l,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e0&&void 0!==arguments[0]?arguments[0]:6,e=arguments.length>1?arguments[1]:void 0,n="",i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=e.ignoreLeaveWindow,i=void 0!==n&&n,r=e.ignoreReappear,s=void 0!==r&&r;return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a'),e.data("savedHref",e.attr("href")).removeAttr("href").attr("tabindex",0),e.children("[data-submenu]").attr({"aria-hidden":!0,tabindex:0,role:"group"}),t._events(e)})),this.$submenus.each((function(){var e=o()(this);if(!e.find(".js-drilldown-back").length)switch(t.options.backButtonPosition){case"bottom":e.append(t.options.backButton);break;case"top":e.prepend(t.options.backButton);break;default:console.error("Unsupported backButtonPosition value '"+t.options.backButtonPosition+"'")}t._back(e)})),this.$submenus.addClass("invisible"),this.options.autoHeight||this.$submenus.addClass("drilldown-submenu-cover-previous"),this.$element.parent().hasClass("is-drilldown")||(this.$wrapper=o()(this.options.wrapper).addClass("is-drilldown"),this.options.animateHeight&&this.$wrapper.addClass("animate-height"),this.$element.wrap(this.$wrapper)),this.$wrapper=this.$element.parent(),this.$wrapper.css(this._getMaxDims())}},{key:"_resize",value:function(){this.$wrapper.css({"max-width":"none","min-height":"none"}),this.$wrapper.css(this._getMaxDims())}},{key:"_events",value:function(t){var e=this;t.off("click.zf.drilldown").on("click.zf.drilldown",(function(n){if(o()(n.target).parentsUntil("ul","li").hasClass("is-drilldown-submenu-parent")&&n.preventDefault(),e._show(t.parent("li")),e.options.closeOnClick){var i=o()("body");i.off(".zf.drilldown").on("click.zf.drilldown",(function(t){t.target===e.$element[0]||o().contains(e.$element[0],t.target)||(t.preventDefault(),e._hideAll(),i.off(".zf.drilldown"))}))}}))}},{key:"_registerEvents",value:function(){this.options.scrollTop&&(this._bindHandler=this._scrollTop.bind(this),this.$element.on("open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown",this._bindHandler)),this.$element.on("mutateme.zf.trigger",this._resize.bind(this))}},{key:"_scrollTop",value:function(){var t=this,e=""!==t.options.scrollTopElement?o()(t.options.scrollTopElement):t.$element,n=parseInt(e.offset().top+t.options.scrollTopOffset,10);o()("html, body").stop(!0).animate({scrollTop:n},t.options.animationDuration,t.options.animationEasing,(function(){this===o()("html")[0]&&t.$element.trigger("scrollme.zf.drilldown")}))}},{key:"_keyboardEvents",value:function(){var t=this;this.$menuItems.add(this.$element.find(".js-drilldown-back > a, .is-submenu-parent-item > a")).on("keydown.zf.drilldown",(function(e){var n,i,s=o()(this),l=s.parent("li").parent("ul").children("li").children("a");l.each((function(t){if(o()(this).is(s))return n=l.eq(Math.max(0,t-1)),void(i=l.eq(Math.min(t+1,l.length-1)))})),r.Keyboard.handleKey(e,"Drilldown",{next:function(){if(s.is(t.$submenuAnchors))return t._show(s.parent("li")),s.parent("li").one((0,a.transitionend)(s),(function(){s.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()})),!0},previous:function(){return t._hide(s.parent("li").parent("ul")),s.parent("li").parent("ul").one((0,a.transitionend)(s),(function(){setTimeout((function(){s.parent("li").parent("ul").parent("li").children("a").first().focus()}),1)})),!0},up:function(){return n.focus(),!s.is(t.$element.find("> li:first-child > a"))},down:function(){return i.focus(),!s.is(t.$element.find("> li:last-child > a"))},close:function(){s.is(t.$element.find("> li > a"))||(t._hide(s.parent().parent()),s.parent().parent().siblings("a").focus())},open:function(){return(!t.options.parentLink||!s.attr("href"))&&(s.is(t.$menuItems)?s.is(t.$submenuAnchors)?(t._show(s.parent("li")),s.parent("li").one((0,a.transitionend)(s),(function(){s.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()})),!0):void 0:(t._hide(s.parent("li").parent("ul")),s.parent("li").parent("ul").one((0,a.transitionend)(s),(function(){setTimeout((function(){s.parent("li").parent("ul").parent("li").children("a").first().focus()}),1)})),!0))},handled:function(t){t&&e.preventDefault()}})}))}},{key:"_hideAll",value:function(){var t=this,e=this.$element.find(".is-drilldown-submenu.is-active");if(e.addClass("is-closing"),e.parent().closest("ul").removeClass("invisible"),this.options.autoHeight){var n=e.parent().closest("ul").data("calcHeight");this.$wrapper.css({height:n})}this.$element.trigger("close.zf.drilldown"),e.one((0,a.transitionend)(e),(function(){e.removeClass("is-active is-closing"),t.$element.trigger("closed.zf.drilldown")}))}},{key:"_back",value:function(t){var e=this;t.off("click.zf.drilldown"),t.children(".js-drilldown-back").on("click.zf.drilldown",(function(){e._hide(t);var n=t.parent("li").parent("ul").parent("li");n.length?e._show(n):e.$currentMenu=e.$element}))}},{key:"_menuLinkEvents",value:function(){var t=this;this.$menuItems.not(".is-drilldown-submenu-parent").off("click.zf.drilldown").on("click.zf.drilldown",(function(){setTimeout((function(){t._hideAll()}),0)}))}},{key:"_setShowSubMenuClasses",value:function(t,e){t.addClass("is-active").removeClass("invisible").attr("aria-hidden",!1),t.parent("li").attr("aria-expanded",!0),!0===e&&this.$element.trigger("open.zf.drilldown",[t])}},{key:"_setHideSubMenuClasses",value:function(t,e){t.removeClass("is-active").addClass("invisible").attr("aria-hidden",!0),t.parent("li").attr("aria-expanded",!1),!0===e&&t.trigger("hide.zf.drilldown",[t])}},{key:"_showMenu",value:function(t,e){var n=this;if(this.$element.find('li[aria-expanded="true"] > ul[data-submenu]').each((function(){n._setHideSubMenuClasses(o()(this))})),this.$currentMenu=t,t.is("[data-drilldown]"))return!0===e&&t.find("li > a").first().focus(),void(this.options.autoHeight&&this.$wrapper.css("height",t.data("calcHeight")));var i=t.children().first().parentsUntil("[data-drilldown]","[data-submenu]");i.each((function(r){0===r&&n.options.autoHeight&&n.$wrapper.css("height",o()(this).data("calcHeight"));var s=r===i.length-1;!0===s&&o()(this).one((0,a.transitionend)(o()(this)),(function(){!0===e&&t.find("li > a").first().focus()})),n._setShowSubMenuClasses(o()(this),s)}))}},{key:"_show",value:function(t){var e=t.children("[data-submenu]");t.attr("aria-expanded",!0),this.$currentMenu=e,t.parent().closest("ul").addClass("invisible"),e.addClass("is-active visible").removeClass("invisible").attr("aria-hidden",!1),this.options.autoHeight&&this.$wrapper.css({height:e.data("calcHeight")}),this.$element.trigger("open.zf.drilldown",[t])}},{key:"_hide",value:function(t){this.options.autoHeight&&this.$wrapper.css({height:t.parent().closest("ul").data("calcHeight")}),t.parent().closest("ul").removeClass("invisible"),t.parent("li").attr("aria-expanded",!1),t.attr("aria-hidden",!0),t.addClass("is-closing").one((0,a.transitionend)(t),(function(){t.removeClass("is-active is-closing visible"),t.blur().addClass("invisible")})),t.trigger("hide.zf.drilldown",[t])}},{key:"_getMaxDims",value:function(){var t=0,e={},n=this;return this.$submenus.add(this.$element).each((function(){var e=l.Box.GetDimensions(this).height;t=e>t?e:t,n.options.autoHeight&&o()(this).data("calcHeight",e)})),this.options.autoHeight?e.height=this.$currentMenu.data("calcHeight"):e["min-height"]="".concat(t,"px"),e["max-width"]="".concat(this.$element[0].getBoundingClientRect().width,"px"),e}},{key:"_destroy",value:function(){o()("body").off(".zf.drilldown"),this.options.scrollTop&&this.$element.off(".zf.drilldown",this._bindHandler),this._hideAll(),this.$element.off("mutateme.zf.trigger"),s.Nest.Burn(this.$element,"drilldown"),this.$element.unwrap().find(".js-drilldown-back, .is-submenu-parent-item").remove().end().find(".is-active, .is-closing, .is-drilldown-submenu").removeClass("is-active is-closing is-drilldown-submenu").off("transitionend otransitionend webkitTransitionEnd").end().find("[data-submenu]").removeAttr("aria-hidden tabindex role"),this.$submenuAnchors.each((function(){o()(this).off(".zf.drilldown")})),this.$element.find("[data-is-parent-link]").detach(),this.$submenus.removeClass("drilldown-submenu-cover-previous invisible"),this.$element.find("a").each((function(){var t=o()(this);t.removeAttr("tabindex"),t.data("savedHref")&&t.attr("href",t.data("savedHref")).removeData("savedHref")}))}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(n("./js/foundation.core.plugin.js").Plugin);h.defaults={autoApplyClass:!0,backButton:'
  • Back
  • ',backButtonPosition:"top",wrapper:"
    ",parentLink:!1,closeOnClick:!1,autoHeight:!1,animateHeight:!1,scrollTop:!1,scrollTopElement:"",scrollTopOffset:0,animationDuration:500,animationEasing:"swing"}},"./js/foundation.dropdown.js":function(t,e,n){n.r(e),n.d(e,{Dropdown:function(){return v}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.positionable.js"),l=n("./js/foundation.util.triggers.js"),u=n("./js/foundation.util.touch.js");function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function f(t,e){for(var n=0;n-1,l=s?t.$tabs:r.siblings("li").add(r);l.each((function(t){if(o()(this).is(r))return n=l.eq(t-1),void(i=l.eq(t+1))}));var u=function(){i.children("a:first").focus(),e.preventDefault()},c=function(){n.children("a:first").focus(),e.preventDefault()},f=function(){var n=r.children("ul.is-dropdown-submenu");n.length&&(t._show(n),r.find("li > a:first").focus(),e.preventDefault())},d=function(){var n=r.parent("ul").parent("li");n.children("a:first").focus(),t._hide(n),e.preventDefault()},h={open:f,close:function(){t._hide(t.$element),t.$menuItems.eq(0).children("a").focus(),e.preventDefault()}};s?t._isVertical()?t._isRtl()?o().extend(h,{down:u,up:c,next:d,previous:f}):o().extend(h,{down:u,up:c,next:f,previous:d}):t._isRtl()?o().extend(h,{next:c,previous:u,down:f,up:d}):o().extend(h,{next:u,previous:c,down:f,up:d}):t._isRtl()?o().extend(h,{next:d,previous:f,down:u,up:c}):o().extend(h,{next:f,previous:d,down:u,up:c}),a.Keyboard.handleKey(e,"DropdownMenu",h)}))}},{key:"_addBodyHandler",value:function(){var t=this,e=o()(document.body);this._removeBodyHandler(),e.on("click.zf.dropdownMenu tap.zf.dropdownMenu",(function(e){o()(e.target).closest(t.$element).length||(t._hide(),t._removeBodyHandler())}))}},{key:"_removeBodyHandler",value:function(){o()(document.body).off("click.zf.dropdownMenu tap.zf.dropdownMenu")}},{key:"_show",value:function(t){var e=this.$tabs.index(this.$tabs.filter((function(e,n){return o()(n).find(t).length>0}))),n=t.parent("li.is-dropdown-submenu-parent").siblings("li.is-dropdown-submenu-parent");this._hide(n,e),t.css("visibility","hidden").addClass("js-dropdown-active").parent("li.is-dropdown-submenu-parent").addClass("is-active");var i=u.Box.ImNotTouchingYou(t,null,!0);if(!i){var r="left"===this.options.alignment?"-right":"-left",s=t.parent(".is-dropdown-submenu-parent");s.removeClass("opens".concat(r)).addClass("opens-".concat(this.options.alignment)),(i=u.Box.ImNotTouchingYou(t,null,!0))||s.removeClass("opens-".concat(this.options.alignment)).addClass("opens-inner"),this.changed=!0}t.css("visibility",""),this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdownMenu",[t])}},{key:"_hide",value:function(t,e){var n;if((n=t&&t.length?t:void 0!==e?this.$tabs.not((function(t){return t===e})):this.$element).hasClass("is-active")||n.find(".is-active").length>0){var i=n.find("li.is-active");if(i.add(n).attr({"data-is-click":!1}).removeClass("is-active"),n.find("ul.js-dropdown-active").removeClass("js-dropdown-active"),this.changed||n.find("opens-inner").length){var o="left"===this.options.alignment?"right":"left";n.find("li.is-dropdown-submenu-parent").add(n).removeClass("opens-inner opens-".concat(this.options.alignment)).addClass("opens-".concat(o)),this.changed=!1}clearTimeout(i.data("_delay")),this._removeBodyHandler(),this.$element.trigger("hide.zf.dropdownMenu",[n])}}},{key:"_destroy",value:function(){this.$menuItems.off(".zf.dropdownMenu").removeAttr("data-is-click").removeClass("is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner"),o()(document.body).off(".zf.dropdownMenu"),l.Nest.Burn(this.$element,"dropdown")}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),m}(r.Plugin);v.defaults={disableHover:!1,disableHoverOnTouch:!0,autoclose:!0,hoverDelay:50,clickOpen:!1,closingTime:500,alignment:"auto",closeOnClick:!0,closeOnClickInside:!0,verticalClass:"vertical",rightClass:"align-right",forceFollow:!0}},"./js/foundation.equalizer.js":function(t,e,n){n.r(e),n.d(e,{Equalizer:function(){return d}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.imageLoader.js"),a=n("./js/foundation.core.utils.js");function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){for(var n=0;n0,this.isNested=this.$element.parentsUntil(document.body,"[data-equalizer]").length>0,this.isOn=!1,this._bindHandler={onResizeMeBound:this._onResizeMe.bind(this),onPostEqualizedBound:this._onPostEqualized.bind(this)};var n,i=this.$element.find("img");this.options.equalizeOn?(n=this._checkMQ(),o()(window).on("changed.zf.mediaquery",this._checkMQ.bind(this))):this._events(),(void 0!==n&&!1===n||void 0===n)&&(i.length?(0,s.onImagesLoaded)(i,this._reflow.bind(this)):this._reflow())}},{key:"_pauseEvents",value:function(){this.isOn=!1,this.$element.off({".zf.equalizer":this._bindHandler.onPostEqualizedBound,"resizeme.zf.trigger":this._bindHandler.onResizeMeBound,"mutateme.zf.trigger":this._bindHandler.onResizeMeBound})}},{key:"_onResizeMe",value:function(){this._reflow()}},{key:"_onPostEqualized",value:function(t){t.target!==this.$element[0]&&this._reflow()}},{key:"_events",value:function(){this._pauseEvents(),this.hasNested?this.$element.on("postequalized.zf.equalizer",this._bindHandler.onPostEqualizedBound):(this.$element.on("resizeme.zf.trigger",this._bindHandler.onResizeMeBound),this.$element.on("mutateme.zf.trigger",this._bindHandler.onResizeMeBound)),this.isOn=!0}},{key:"_checkMQ",value:function(){var t=!r.MediaQuery.is(this.options.equalizeOn);return t?this.isOn&&(this._pauseEvents(),this.$watched.css("height","auto")):this.isOn||this._events(),t}},{key:"_killswitch",value:function(){}},{key:"_reflow",value:function(){if(!this.options.equalizeOnStack&&this._isStacked())return this.$watched.css("height","auto"),!1;this.options.equalizeByRow?this.getHeightsByRow(this.applyHeightByRow.bind(this)):this.getHeights(this.applyHeight.bind(this))}},{key:"_isStacked",value:function(){return!this.$watched[0]||!this.$watched[1]||this.$watched[0].getBoundingClientRect().top!==this.$watched[1].getBoundingClientRect().top}},{key:"getHeights",value:function(t){for(var e=[],n=0,i=this.$watched.length;nn;if(this.scrollPos=n,n0&&"push"===this.options.transition&&(this.options.contentScroll=!1);var r=this.$element.attr("class").match(/\bin-canvas-for-(\w+)/);r&&2===r.length?this.options.inCanvasOn=r[1]:this.options.inCanvasOn&&this.$element.addClass("in-canvas-for-".concat(this.options.inCanvasOn)),this.options.inCanvasOn&&this._checkInCanvas(),this._removeContentClasses()}},{key:"_events",value:function(){var t=this;this.$element.off(".zf.trigger .zf.offCanvas").on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"keydown.zf.offCanvas":this._handleKeyboard.bind(this)}),!0===this.options.closeOnClick&&(this.options.contentOverlay?this.$overlay:this.$content).on({"click.zf.offCanvas":this.close.bind(this)}),this.options.inCanvasOn&&o()(window).on("changed.zf.mediaquery",(function(){t._checkInCanvas()}))}},{key:"_setMQChecker",value:function(){var t=this;this.onLoadListener=(0,s.onLoad)(o()(window),(function(){l.MediaQuery.atLeast(t.options.revealOn)&&t.reveal(!0)})),o()(window).on("changed.zf.mediaquery",(function(){l.MediaQuery.atLeast(t.options.revealOn)?t.reveal(!0):t.reveal(!1)}))}},{key:"_checkInCanvas",value:function(){this.isInCanvas=l.MediaQuery.atLeast(this.options.inCanvasOn),!0===this.isInCanvas&&this.close()}},{key:"_removeContentClasses",value:function(t){"boolean"!=typeof t?this.$content.removeClass(this.contentClasses.base.join(" ")):!1===t&&this.$content.removeClass("has-reveal-".concat(this.position))}},{key:"_addContentClasses",value:function(t){this._removeContentClasses(t),"boolean"!=typeof t?this.$content.addClass("has-transition-".concat(this.options.transition," has-position-").concat(this.position)):!0===t&&this.$content.addClass("has-reveal-".concat(this.position))}},{key:"_fixStickyElements",value:function(){this.$sticky.each((function(t,e){var n=o()(e);if("fixed"===n.css("position")){var i=parseInt(n.css("top"),10);n.data("offCanvasSticky",{top:i});var r=o()(document).scrollTop()+i;n.css({top:"".concat(r,"px"),width:"100%",transition:"none"})}}))}},{key:"_unfixStickyElements",value:function(){this.$sticky.each((function(t,e){var n=o()(e),i=n.data("offCanvasSticky");"object"===c(i)&&(n.css({top:"".concat(i.top,"px"),width:"",transition:""}),n.data("offCanvasSticky",""))}))}},{key:"reveal",value:function(t){t?(this.close(),this.isRevealed=!0,this.$element.attr("aria-hidden","false"),this.$element.off("open.zf.trigger toggle.zf.trigger"),this.$element.removeClass("is-closed")):(this.isRevealed=!1,this.$element.attr("aria-hidden","true"),this.$element.off("open.zf.trigger toggle.zf.trigger").on({"open.zf.trigger":this.open.bind(this),"toggle.zf.trigger":this.toggle.bind(this)}),this.$element.addClass("is-closed")),this._addContentClasses(t)}},{key:"_stopScrolling",value:function(){return!1}},{key:"_recordScrollable",value:function(t){this.lastY=t.touches[0].pageY}},{key:"_preventDefaultAtEdges",value:function(t){var e=this,n=t.data,i=e.lastY-t.touches[0].pageY;e.lastY=t.touches[0].pageY,n._canScroll(i,e)||t.preventDefault()}},{key:"_scrollboxTouchMoved",value:function(t){var e=this,n=t.data,i=e.closest("[data-off-canvas], [data-off-canvas-scrollbox-outer]"),o=e.lastY-t.touches[0].pageY;i.lastY=e.lastY=t.touches[0].pageY,t.stopPropagation(),n._canScroll(o,e)||(n._canScroll(o,i)?i.scrollTop+=o:t.preventDefault())}},{key:"_canScroll",value:function(t,e){var n=t<0,i=t>0,o=e.scrollTop>0,r=e.scrollTop1&&this.geoSync(),this.options.accessible&&this.$wrapper.attr("tabindex",0)}},{key:"_loadBullets",value:function(){this.$bullets=this.$element.find(".".concat(this.options.boxOfBullets)).find("button")}},{key:"geoSync",value:function(){var t=this;this.timer=new a.Timer(this.$element,{duration:this.options.timerDelay,infinite:!1},(function(){t.changeSlide(!0)})),this.timer.start()}},{key:"_prepareForOrbit",value:function(){this._setWrapperHeight()}},{key:"_setWrapperHeight",value:function(t){var e,n=0,i=0,r=this;this.$slides.each((function(){e=this.getBoundingClientRect().height,o()(this).attr("data-slide",i),/mui/g.test(o()(this)[0].className)||r.$slides.filter(".is-active")[0]===r.$slides.eq(i)[0]||o()(this).css({display:"none"}),n=e>n?e:n,i++})),i===this.$slides.length&&(this.$wrapper.css({height:n}),t&&t(n))}},{key:"_setSlideHeight",value:function(t){this.$slides.each((function(){o()(this).css("max-height",t)}))}},{key:"_events",value:function(){var t=this;this.$element.off(".resizeme.zf.trigger").on({"resizeme.zf.trigger":this._prepareForOrbit.bind(this)}),this.$slides.length>1&&(this.options.swipe&&this.$slides.off("swipeleft.zf.orbit swiperight.zf.orbit").on("swipeleft.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(!0)})).on("swiperight.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(!1)})),this.options.autoPlay&&(this.$slides.on("click.zf.orbit",(function(){t.$element.data("clickedOn",!t.$element.data("clickedOn")),t.timer[t.$element.data("clickedOn")?"pause":"start"]()})),this.options.pauseOnHover&&this.$element.on("mouseenter.zf.orbit",(function(){t.timer.pause()})).on("mouseleave.zf.orbit",(function(){t.$element.data("clickedOn")||t.timer.start()}))),this.options.navButtons&&this.$element.find(".".concat(this.options.nextClass,", .").concat(this.options.prevClass)).attr("tabindex",0).on("click.zf.orbit touchend.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(o()(this).hasClass(t.options.nextClass))})),this.options.bullets&&this.$bullets.on("click.zf.orbit touchend.zf.orbit",(function(){if(/is-active/g.test(this.className))return!1;var e=o()(this).data("slide"),n=e>t.$slides.filter(".is-active").data("slide"),i=t.$slides.eq(e);t.changeSlide(n,i,e)})),this.options.accessible&&this.$wrapper.add(this.$bullets).on("keydown.zf.orbit",(function(e){r.Keyboard.handleKey(e,"Orbit",{next:function(){t.changeSlide(!0)},previous:function(){t.changeSlide(!1)},handled:function(){o()(e.target).is(t.$bullets)&&t.$bullets.filter(".is-active").focus()}})})))}},{key:"_reset",value:function(){void 0!==this.$slides&&this.$slides.length>1&&(this.$element.off(".zf.orbit").find("*").off(".zf.orbit"),this.options.autoPlay&&this.timer.restart(),this.$slides.each((function(t){o()(t).removeClass("is-active is-active is-in").removeAttr("aria-live").hide()})),this.$slides.first().addClass("is-active").show(),this.$element.trigger("slidechange.zf.orbit",[this.$slides.first()]),this.options.bullets&&this._updateBullets(0))}},{key:"changeSlide",value:function(t,e,n){if(this.$slides){var i=this.$slides.filter(".is-active").eq(0);if(/mui/g.test(i[0].className))return!1;var o,r=this.$slides.first(),a=this.$slides.last(),l=t?"Right":"Left",u=t?"Left":"Right",c=this;(o=e||(t?this.options.infiniteWrap?i.next(".".concat(this.options.slideClass)).length?i.next(".".concat(this.options.slideClass)):r:i.next(".".concat(this.options.slideClass)):this.options.infiniteWrap?i.prev(".".concat(this.options.slideClass)).length?i.prev(".".concat(this.options.slideClass)):a:i.prev(".".concat(this.options.slideClass)))).length&&(this.$element.trigger("beforeslidechange.zf.orbit",[i,o]),this.options.bullets&&(n=n||this.$slides.index(o),this._updateBullets(n)),this.options.useMUI&&!this.$element.is(":hidden")?(s.Motion.animateIn(o.addClass("is-active"),this.options["animInFrom".concat(l)],(function(){o.css({display:"block"}).attr("aria-live","polite")})),s.Motion.animateOut(i.removeClass("is-active"),this.options["animOutTo".concat(u)],(function(){i.removeAttr("aria-live"),c.options.autoPlay&&!c.timer.isPaused&&c.timer.restart()}))):(i.removeClass("is-active is-in").removeAttr("aria-live").hide(),o.addClass("is-active is-in").attr("aria-live","polite").show(),this.options.autoPlay&&!this.timer.isPaused&&this.timer.restart()),this.$element.trigger("slidechange.zf.orbit",[o]))}}},{key:"_updateBullets",value:function(t){var e=this.$bullets.filter(".is-active"),n=this.$bullets.not(".is-active"),i=this.$bullets.eq(t);e.removeClass("is-active").blur(),i.addClass("is-active");var r=e.children("[data-slide-active-label]").last();if(!r.length){var s=e.children("span");n.toArray().map((function(t){return o()(t).children("span").length})).every((function(t){return t1?i[0]:"small",a=i.length>1?i[1]:i[0];null!==v[a]&&(t[s]=v[a])}this.rules=t}this._getAllOptions(),o().isEmptyObject(this.rules)||this._checkMediaQueries()}},{key:"_getAllOptions",value:function(){var t=this;for(var e in t.allOptions={},v)if(v.hasOwnProperty(e)){var n=v[e];try{var i=o()("
      "),r=new n.plugin(i,t.options);for(var s in r.options)if(r.options.hasOwnProperty(s)&&"zfPlugin"!==s){var a=r.options[s];t.allOptions[s]=a}r.destroy()}catch(t){console.warn("Warning: Problems getting Accordion/Tab options: ".concat(t))}}}},{key:"_events",value:function(){this._changedZfMediaQueryHandler=this._checkMediaQueries.bind(this),o()(window).on("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}},{key:"_checkMediaQueries",value:function(){var t,e=this;o().each(this.rules,(function(e){r.MediaQuery.atLeast(e)&&(t=e)})),t&&(this.currentPlugin instanceof this.rules[t].plugin||(o().each(v,(function(t,n){e.$element.removeClass(n.cssClass)})),this.$element.addClass(this.rules[t].cssClass),this.currentPlugin&&(!this.currentPlugin.$element.data("zfPlugin")&&this.storezfData&&this.currentPlugin.$element.data("zfPlugin",this.storezfData),this.currentPlugin.destroy()),this._handleMarkup(this.rules[t].cssClass),this.currentRule=this.rules[t],this.currentPlugin=new this.currentRule.plugin(this.$element,this.options),this.storezfData=this.currentPlugin.$element.data("zfPlugin")))}},{key:"_handleMarkup",value:function(t){var e=this,n="accordion",i=o()("[data-tabs-content="+this.$element.attr("id")+"]");if(i.length&&(n="tabs"),n!==t){var r=e.allOptions.linkClass?e.allOptions.linkClass:"tabs-title",a=e.allOptions.panelClass?e.allOptions.panelClass:"tabs-panel";this.$element.removeAttr("role");var l=this.$element.children("."+r+",[data-accordion-item]").removeClass(r).removeClass("accordion-item").removeAttr("data-accordion-item"),u=l.children("a").removeClass("accordion-title");if("tabs"===n?(i=i.children("."+a).removeClass(a).removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby")).children("a").removeAttr("role").removeAttr("aria-controls").removeAttr("aria-selected"):i=l.children("[data-tab-content]").removeClass("accordion-content"),i.css({display:"",visibility:""}),l.css({display:"",visibility:""}),"accordion"===t)i.each((function(t,n){o()(n).appendTo(l.get(t)).addClass("accordion-content").attr("data-tab-content","").removeClass("is-active").css({height:""}),o()("[data-tabs-content="+e.$element.attr("id")+"]").after('
      ').detach(),l.addClass("accordion-item").attr("data-accordion-item",""),u.addClass("accordion-title")}));else if("tabs"===t){var c=o()("[data-tabs-content="+e.$element.attr("id")+"]"),f=o()("#tabs-placeholder-"+e.$element.attr("id"));f.length?(c=o()('
      ').insertAfter(f).attr("data-tabs-content",e.$element.attr("id")),f.remove()):c=o()('
      ').insertAfter(e.$element).attr("data-tabs-content",e.$element.attr("id")),i.each((function(t,e){var n=o()(e).appendTo(c).addClass(a),i=u.get(t).hash.slice(1),r=o()(e).attr("id")||(0,s.GetYoDigits)(6,"accordion");i!==r&&(""!==i?o()(e).attr("id",i):(i=r,o()(e).attr("id",i),o()(u.get(t)).attr("href",o()(u.get(t)).attr("href").replace("#","")+"#"+i))),o()(l.get(t)).hasClass("is-active")&&n.addClass("is-active")})),l.addClass(r)}}}},{key:"open",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.open)return(t=this.currentRule).open.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"close",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.close)return(t=this.currentRule).close.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"toggle",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.toggle)return(t=this.currentRule).toggle.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"_destroy",value:function(){this.currentPlugin&&this.currentPlugin.destroy(),o()(window).off("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}}],n&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(a.Plugin);m.defaults={}},"./js/foundation.responsiveMenu.js":function(t,e,n){n.r(e),n.d(e,{ResponsiveMenu:function(){return m}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.core.plugin.js"),l=n("./js/foundation.dropdownMenu.js"),u=n("./js/foundation.drilldown.js"),c=n("./js/foundation.accordionMenu.js");function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function d(t,e){for(var n=0;n1?i[0]:"small",l=i.length>1?i[1]:i[0];null!==v[l]&&(t[a]=v[l])}this.rules=t}o().isEmptyObject(this.rules)||this._checkMediaQueries(),this.$element.attr("data-mutate",this.$element.attr("data-mutate")||(0,s.GetYoDigits)(6,"responsive-menu"))}},{key:"_events",value:function(){var t=this;o()(window).on("changed.zf.mediaquery",(function(){t._checkMediaQueries()}))}},{key:"_checkMediaQueries",value:function(){var t,e=this;o().each(this.rules,(function(e){r.MediaQuery.atLeast(e)&&(t=e)})),t&&(this.currentPlugin instanceof this.rules[t].plugin||(o().each(v,(function(t,n){e.$element.removeClass(n.cssClass)})),this.$element.addClass(this.rules[t].cssClass),this.currentPlugin&&this.currentPlugin.destroy(),this.currentPlugin=new this.rules[t].plugin(this.$element,{})))}},{key:"_destroy",value:function(){this.currentPlugin.destroy(),o()(window).off(".zf.ResponsiveMenu")}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(a.Plugin);m.defaults={}},"./js/foundation.responsiveToggle.js":function(t,e,n){n.r(e),n.d(e,{ResponsiveToggle:function(){return f}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.motion.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function l(t,e){for(var n=0;n").addClass("reveal-overlay"+t).appendTo(this.options.appendTo)}},{key:"_updatePosition",value:function(){var t,e=this.$element.outerWidth(),n=o()(window).width(),i=this.$element.outerHeight(),r=o()(window).height(),s=null;t="auto"===this.options.hOffset?parseInt((n-e)/2,10):parseInt(this.options.hOffset,10),"auto"===this.options.vOffset?s=i>r?parseInt(Math.min(100,r/10),10):parseInt((r-i)/4,10):null!==this.options.vOffset&&(s=parseInt(this.options.vOffset,10)),null!==s&&this.$element.css({top:s+"px"}),this.$overlay&&"auto"===this.options.hOffset||(this.$element.css({left:t+"px"}),this.$element.css({margin:"0px"}))}},{key:"_events",value:function(){var t=this,e=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":function(n,i){if(n.target===e.$element[0]||o()(n.target).parents("[data-closable]")[0]===i)return t.close.apply(t)},"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":function(){e._updatePosition()}}),this.options.closeOnClick&&this.options.overlay&&this.$overlay.off(".zf.reveal").on("click.zf.dropdown tap.zf.dropdown",(function(t){t.target!==e.$element[0]&&!o().contains(e.$element[0],t.target)&&o().contains(document,t.target)&&e.close()})),this.options.deepLink&&o()(window).on("hashchange.zf.reveal:".concat(this.id),this._handleState.bind(this))}},{key:"_handleState",value:function(){window.location.hash!=="#"+this.id||this.isActive?this.close():this.open()}},{key:"_disableScroll",value:function(t){t=t||o()(window).scrollTop(),o()(document).height()>o()(window).height()&&o()("html").css("top",-t)}},{key:"_enableScroll",value:function(t){t=t||parseInt(o()("html").css("top"),10),o()(document).height()>o()(window).height()&&(o()("html").css("top",""),o()(window).scrollTop(-t))}},{key:"open",value:function(){var t=this,e="#".concat(this.id);this.options.deepLink&&window.location.hash!==e&&(window.history.pushState?this.options.updateHistory?window.history.pushState({},"",e):window.history.replaceState({},"",e):window.location.hash=e),this.$activeAnchor=o()(document.activeElement).is(this.$anchor)?o()(document.activeElement):this.$anchor,this.isActive=!0,this.$element.css({visibility:"hidden"}).show().scrollTop(0),this.options.overlay&&this.$overlay.css({visibility:"hidden"}).show(),this._updatePosition(),this.$element.hide().css({visibility:""}),this.$overlay&&(this.$overlay.css({visibility:""}).hide(),this.$element.hasClass("fast")?this.$overlay.addClass("fast"):this.$element.hasClass("slow")&&this.$overlay.addClass("slow")),this.options.multipleOpened||this.$element.trigger("closeme.zf.reveal",this.id),0===o()(".reveal:visible").length&&this._disableScroll();var n=this;this.options.animationIn?(this.options.overlay&&u.Motion.animateIn(this.$overlay,"fade-in"),u.Motion.animateIn(this.$element,this.options.animationIn,(function(){t.$element&&(t.focusableElements=a.Keyboard.findFocusable(t.$element),n.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),n._addGlobalClasses(),a.Keyboard.trapFocus(n.$element))}))):(this.options.overlay&&this.$overlay.show(0),this.$element.show(this.options.showDelay)),this.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),a.Keyboard.trapFocus(this.$element),this._addGlobalClasses(),this._addGlobalListeners(),this.$element.trigger("open.zf.reveal")}},{key:"_addGlobalClasses",value:function(){var t=function(){o()("html").toggleClass("zf-has-scroll",!!(o()(document).height()>o()(window).height()))};this.$element.on("resizeme.zf.trigger.revealScrollbarListener",(function(){return t()})),t(),o()("html").addClass("is-reveal-open")}},{key:"_removeGlobalClasses",value:function(){this.$element.off("resizeme.zf.trigger.revealScrollbarListener"),o()("html").removeClass("is-reveal-open"),o()("html").removeClass("zf-has-scroll")}},{key:"_addGlobalListeners",value:function(){var t=this;this.$element&&(this.focusableElements=a.Keyboard.findFocusable(this.$element),this.options.overlay||!this.options.closeOnClick||this.options.fullScreen||o()("body").on("click.zf.dropdown tap.zf.dropdown",(function(e){e.target!==t.$element[0]&&!o().contains(t.$element[0],e.target)&&o().contains(document,e.target)&&t.close()})),this.options.closeOnEsc&&o()(window).on("keydown.zf.reveal",(function(e){a.Keyboard.handleKey(e,"Reveal",{close:function(){t.options.closeOnEsc&&t.close()}})})))}},{key:"close",value:function(){if(!this.isActive||!this.$element.is(":visible"))return!1;var t=this;function e(){var e=parseInt(o()("html").css("top"),10);0===o()(".reveal:visible").length&&t._removeGlobalClasses(),a.Keyboard.releaseFocus(t.$element),t.$element.attr("aria-hidden",!0),0===o()(".reveal:visible").length&&t._enableScroll(e),t.$element.trigger("closed.zf.reveal")}if(this.options.animationOut?(this.options.overlay&&u.Motion.animateOut(this.$overlay,"fade-out"),u.Motion.animateOut(this.$element,this.options.animationOut,e)):(this.$element.hide(this.options.hideDelay),this.options.overlay?this.$overlay.hide(0,e):e()),this.options.closeOnEsc&&o()(window).off("keydown.zf.reveal"),!this.options.overlay&&this.options.closeOnClick&&o()("body").off("click.zf.dropdown tap.zf.dropdown"),this.$element.off("keydown.zf.reveal"),this.options.resetOnClose&&this.$element.html(this.$element.html()),this.isActive=!1,t.options.deepLink&&window.location.hash==="#".concat(this.id))if(window.history.replaceState){var n=window.location.pathname+window.location.search;this.options.updateHistory?window.history.pushState({},"",n):window.history.replaceState("",document.title,n)}else window.location.hash="";this.$activeAnchor.focus()}},{key:"toggle",value:function(){this.isActive?this.close():this.open()}},{key:"_destroy",value:function(){this.options.overlay&&(this.$element.appendTo(o()(this.options.appendTo)),this.$overlay.hide().off().remove()),this.$element.hide().off(),this.$anchor.off(".zf"),o()(window).off(".zf.reveal:".concat(this.id)),this.onLoadListener&&o()(window).off(this.onLoadListener),0===o()(".reveal:visible").length&&this._removeGlobalClasses()}}])&&h(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),y}(r.Plugin);m.defaults={animationIn:"",animationOut:"",showDelay:0,hideDelay:0,closeOnClick:!0,closeOnEsc:!0,multipleOpened:!1,vOffset:"auto",hOffset:"auto",fullScreen:!1,overlay:!0,resetOnClose:!1,deepLink:!1,updateHistory:!1,appendTo:"body",additionalOverlayClasses:""}},"./js/foundation.slider.js":function(t,e,n){n.r(e),n.d(e,{Slider:function(){return v}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.util.motion.js"),a=n("./js/foundation.core.utils.js"),l=n("./js/foundation.core.plugin.js"),u=n("./js/foundation.util.touch.js"),c=n("./js/foundation.util.triggers.js");function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function d(t,e){for(var n=0;n1?this.inputs.eq(1):o()("#".concat(this.$handle2.attr("aria-controls"))),this.inputs[1]||(this.inputs=this.inputs.add(this.$input2)),this._setInitAttr(1)),this.setHandles(),this._events(),this.initialized=!0}},{key:"setHandles",value:function(){var t=this;this.handles[1]?this._setHandlePos(this.$handle,this.inputs.eq(0).val(),(function(){t._setHandlePos(t.$handle2,t.inputs.eq(1).val())})):this._setHandlePos(this.$handle,this.inputs.eq(0).val())}},{key:"_reflow",value:function(){this.setHandles()}},{key:"_pctOfBar",value:function(t){var e=m(t-this.options.start,this.options.end-this.options.start);switch(this.options.positionValueFunction){case"pow":e=this._logTransform(e);break;case"log":e=this._powTransform(e)}return e.toFixed(2)}},{key:"_value",value:function(t){switch(this.options.positionValueFunction){case"pow":t=this._powTransform(t);break;case"log":t=this._logTransform(t)}return this.options.vertical?parseFloat(this.options.end)+t*(this.options.start-this.options.end):(this.options.end-this.options.start)*t+parseFloat(this.options.start)}},{key:"_logTransform",value:function(t){return function(t,e){return Math.log(e)/Math.log(t)}(this.options.nonLinearBase,t*(this.options.nonLinearBase-1)+1)}},{key:"_powTransform",value:function(t){return(Math.pow(this.options.nonLinearBase,t)-1)/(this.options.nonLinearBase-1)}},{key:"_setHandlePos",value:function(t,e,n){if(!this.$element.hasClass(this.options.disabledClass)){(e=parseFloat(e))this.options.end&&(e=this.options.end);var i=this.options.doubleSided;if(i)if(0===this.handles.index(t)){var o=parseFloat(this.$handle2.attr("aria-valuenow"));e=e>=o?o-this.options.step:e}else{var r=parseFloat(this.$handle.attr("aria-valuenow"));e=e<=r?r+this.options.step:e}var a=this,l=this.options.vertical,u=l?"height":"width",c=l?"top":"left",f=t[0].getBoundingClientRect()[u],d=this.$element[0].getBoundingClientRect()[u],h=this._pctOfBar(e),p=(100*m((d-f)*h,d)).toFixed(this.options.decimal);e=parseFloat(e.toFixed(this.options.decimal));var v={};if(this._setValues(t,e),i){var y,g=0===this.handles.index(t),b=Math.floor(100*m(f,d));if(g)v[c]="".concat(p,"%"),y=parseFloat(this.$handle2[0].style[c])-p+b,n&&"function"==typeof n&&n();else{var w=parseFloat(this.$handle[0].style[c]);y=p-(isNaN(w)?(this.options.initialStart-this.options.start)/((this.options.end-this.options.start)/100):w)+b}v["min-".concat(u)]="".concat(y,"%")}var k=this.$element.data("dragging")?1e3/60:this.options.moveTime;(0,s.Move)(k,t,(function(){isNaN(p)?t.css(c,"".concat(100*h,"%")):t.css(c,"".concat(p,"%")),a.options.doubleSided?a.$fill.css(v):a.$fill.css(u,"".concat(100*h,"%"))})),this.initialized&&(this.$element.one("finished.zf.animate",(function(){a.$element.trigger("moved.zf.slider",[t])})),clearTimeout(a.timeout),a.timeout=setTimeout((function(){a.$element.trigger("changed.zf.slider",[t])}),a.options.changedDelay))}}},{key:"_setInitAttr",value:function(t){var e=0===t?this.options.initialStart:this.options.initialEnd,n=this.inputs.eq(t).attr("id")||(0,a.GetYoDigits)(6,"slider");this.inputs.eq(t).attr({id:n,max:this.options.end,min:this.options.start,step:this.options.step}),this.inputs.eq(t).val(e),this.handles.eq(t).attr({role:"slider","aria-controls":n,"aria-valuemax":this.options.end,"aria-valuemin":this.options.start,"aria-valuenow":e,"aria-orientation":this.options.vertical?"vertical":"horizontal",tabindex:0})}},{key:"_setValues",value:function(t,e){var n=this.options.doubleSided?this.handles.index(t):0;this.inputs.eq(n).val(e),t.attr("aria-valuenow",e)}},{key:"_handleEvent",value:function(t,e,n){var i;if(n)i=this._adjustValue(null,n);else{t.preventDefault();var r=this.options.vertical,s=r?"height":"width",l=r?"top":"left",u=r?t.pageY:t.pageX,c=this.$element[0].getBoundingClientRect()[s],f=r?o()(window).scrollTop():o()(window).scrollLeft(),d=this.$element.offset()[l];t.clientY===t.pageY&&(u+=f);var h,p=u-d,v=m(h=p<0?0:p>c?c:p,c);i=this._value(v),(0,a.rtl)()&&!this.options.vertical&&(i=this.options.end-i),i=this._adjustValue(null,i),e||(e=y(this.$handle,l,h,s)<=y(this.$handle2,l,h,s)?this.$handle:this.$handle2)}this._setHandlePos(e,i)}},{key:"_adjustValue",value:function(t,e){var n,i,o,r=this.options.step,s=parseFloat(r/2);return 0===(i=(n=t?parseFloat(t.attr("aria-valuenow")):e)>=0?n%r:r+n%r)?n:n=n>=(o=n-i)+s?o+r:o}},{key:"_events",value:function(){this._eventsForHandle(this.$handle),this.handles[1]&&this._eventsForHandle(this.$handle2)}},{key:"_eventsForHandle",value:function(t){var e,n=this,i=function(t){var e=n.inputs.index(o()(this));n._handleEvent(t,n.handles.eq(e),o()(this).val())};if(this.inputs.off("keyup.zf.slider").on("keyup.zf.slider",(function(t){13===t.keyCode&&i.call(this,t)})),this.inputs.off("change.zf.slider").on("change.zf.slider",i),this.options.clickSelect&&this.$element.off("click.zf.slider").on("click.zf.slider",(function(t){if(n.$element.data("dragging"))return!1;o()(t.target).is("[data-slider-handle]")||(n.options.doubleSided?n._handleEvent(t):n._handleEvent(t,n.$handle))})),this.options.draggable){this.handles.addTouch();var s=o()("body");t.off("mousedown.zf.slider").on("mousedown.zf.slider",(function(i){t.addClass("is-dragging"),n.$fill.addClass("is-dragging"),n.$element.data("dragging",!0),e=o()(i.currentTarget),s.on("mousemove.zf.slider",(function(t){t.preventDefault(),n._handleEvent(t,e)})).on("mouseup.zf.slider",(function(i){n._handleEvent(i,e),t.removeClass("is-dragging"),n.$fill.removeClass("is-dragging"),n.$element.data("dragging",!1),s.off("mousemove.zf.slider mouseup.zf.slider")}))})).on("selectstart.zf.slider touchmove.zf.slider",(function(t){t.preventDefault()}))}t.off("keydown.zf.slider").on("keydown.zf.slider",(function(e){var i,s=o()(this),a=(n.options.doubleSided&&n.handles.index(s),parseFloat(t.attr("aria-valuenow")));r.Keyboard.handleKey(e,"Slider",{decrease:function(){i=a-n.options.step},increase:function(){i=a+n.options.step},decreaseFast:function(){i=a-10*n.options.step},increaseFast:function(){i=a+10*n.options.step},min:function(){i=n.options.start},max:function(){i=n.options.end},handled:function(){e.preventDefault(),n._setHandlePos(s,i)}})}))}},{key:"_destroy",value:function(){this.handles.off(".zf.slider"),this.inputs.off(".zf.slider"),this.$element.off(".zf.slider"),clearTimeout(this.timeout)}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),g}(l.Plugin);function m(t,e){return t/e}function y(t,e,n,i){return Math.abs(t.position()[e]+t[i]()/2-n)}v.defaults={start:0,end:100,step:1,initialStart:0,initialEnd:100,binding:!1,clickSelect:!0,vertical:!1,draggable:!0,disabled:!1,doubleSided:!1,decimal:2,moveTime:200,disabledClass:"disabled",invertVertical:!1,changedDelay:500,nonLinearBase:5,positionValueFunction:"linear"}},"./js/foundation.smoothScroll.js":function(t,e,n){n.r(e),n.d(e,{SmoothScroll:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js");function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function a(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:h.defaults,n=arguments.length>2?arguments[2]:void 0,i=o()(t);if(!i.length)return!1;var r=Math.round(i.offset().top-e.threshold/2-e.offset);o()("html, body").stop(!0).animate({scrollTop:r},e.animationDuration,e.animationEasing,(function(){"function"==typeof n&&n()}))}}],(n=[{key:"_setup",value:function(t,e){this.$element=t,this.options=o().extend({},h.defaults,this.$element.data(),e),this.className="SmoothScroll",this._init()}},{key:"_init",value:function(){var t=this.$element[0].id||(0,r.GetYoDigits)(6,"smooth-scroll");this.$element.attr({id:t}),this._events()}},{key:"_events",value:function(){this._linkClickListener=this._handleLinkClick.bind(this),this.$element.on("click.zf.smoothScroll",this._linkClickListener),this.$element.on("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}},{key:"_handleLinkClick",value:function(t){var e=this;if(o()(t.currentTarget).is('a[href^="#"]')){var n=t.currentTarget.getAttribute("href");this._inTransition=!0,h.scrollToLoc(n,this.options,(function(){e._inTransition=!1})),t.preventDefault()}}},{key:"_destroy",value:function(){this.$element.off("click.zf.smoothScroll",this._linkClickListener),this.$element.off("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}}])&&a(e.prototype,n),i&&a(e,i),Object.defineProperty(e,"prototype",{writable:!1}),h}(n("./js/foundation.core.plugin.js").Plugin);c.defaults={animationDuration:500,animationEasing:"linear",threshold:50,offset:0}},"./js/foundation.sticky.js":function(t,e,n){n.r(e),n.d(e,{Sticky:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.mediaQuery.js"),l=n("./js/foundation.util.triggers.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n=n.topPoint))})),n._events(e.split("-").reverse().join("-"))}))}},{key:"_parsePoints",value:function(){for(var t=[""===this.options.topAnchor?1:this.options.topAnchor,""===this.options.btmAnchor?document.documentElement.scrollHeight:this.options.btmAnchor],e={},n=0,i=t.length;n=this.topPoint?e<=this.bottomPoint?this.isStuck||this._setSticky():this.isStuck&&this._removeSticky(!1):this.isStuck&&this._removeSticky(!0)}},{key:"_setSticky",value:function(){var t=this,e=this.options.stickTo,n="top"===e?"marginTop":"marginBottom",i="top"===e?"bottom":"top",o={};o[n]="".concat(this.options[n],"em"),o[e]=0,o[i]="auto",this.isStuck=!0,this.$element.removeClass("is-anchored is-at-".concat(i)).addClass("is-stuck is-at-".concat(e)).css(o).trigger("sticky.zf.stuckto:".concat(e)),this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",(function(){t._setSizes()}))}},{key:"_removeSticky",value:function(t){var e=this.options.stickTo,n="top"===e,i={},o=(this.points?this.points[1]-this.points[0]:this.anchorHeight)-this.elemHeight,r=t?"top":"bottom";i[n?"marginTop":"marginBottom"]=0,i.bottom="auto",i.top=t?0:o,this.isStuck=!1,this.$element.removeClass("is-stuck is-at-".concat(e)).addClass("is-anchored is-at-".concat(r)).css(i).trigger("sticky.zf.unstuckfrom:".concat(r))}},{key:"_setSizes",value:function(t){this.canStick=a.MediaQuery.is(this.options.stickyOn),this.canStick||t&&"function"==typeof t&&t();var e=this.$container[0].getBoundingClientRect().width,n=window.getComputedStyle(this.$container[0]),i=parseInt(n["padding-left"],10),o=parseInt(n["padding-right"],10);if(this.$anchor&&this.$anchor.length?this.anchorHeight=this.$anchor[0].getBoundingClientRect().height:this._parsePoints(),this.$element.css({"max-width":"".concat(e-i-o,"px")}),this.options.dynamicHeight||!this.containerHeight){var r=this.$element[0].getBoundingClientRect().height||this.containerHeight;r="none"===this.$element.css("display")?0:r,this.$container.css("height",r),this.containerHeight=r}if(this.elemHeight=this.containerHeight,!this.isStuck&&this.$element.hasClass("is-at-bottom")){var s=(this.points?this.points[1]-this.$container.offset().top:this.anchorHeight)-this.elemHeight;this.$element.css("top",s)}this._setBreakPoints(this.containerHeight,(function(){t&&"function"==typeof t&&t()}))}},{key:"_setBreakPoints",value:function(t,e){if(!this.canStick){if(!e||"function"!=typeof e)return!1;e()}var n=p(this.options.marginTop),i=p(this.options.marginBottom),o=this.points?this.points[0]:this.$anchor.offset().top,r=this.points?this.points[1]:o+this.anchorHeight,s=window.innerHeight;"top"===this.options.stickTo?(o-=n,r-=t+n):"bottom"===this.options.stickTo&&(o-=s-(t+i),r-=s-i),this.topPoint=o,this.bottomPoint=r,e&&"function"==typeof e&&e()}},{key:"_destroy",value:function(){this._removeSticky(!0),this.$element.removeClass("".concat(this.options.stickyClass," is-anchored is-at-top")).css({height:"",top:"",bottom:"","max-width":""}).off("resizeme.zf.trigger").off("mutateme.zf.trigger"),this.$anchor&&this.$anchor.length&&this.$anchor.off("change.zf.sticky"),this.scrollListener&&o()(window).off(this.scrollListener),this.onLoadListener&&o()(window).off(this.onLoadListener),this.wasWrapped?this.$element.unwrap():this.$container.removeClass(this.options.containerClass).css({height:""})}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(r.Plugin);function p(t){return parseInt(window.getComputedStyle(document.body,null).fontSize,10)*t}h.defaults={container:"
      ",stickTo:"top",anchor:"",topAnchor:"",btmAnchor:"",marginTop:1,marginBottom:1,stickyOn:"medium",stickyClass:"sticky",containerClass:"sticky-container",dynamicHeight:!0,checkEvery:-1}},"./js/foundation.tabs.js":function(t,e,n){n.r(e),n.d(e,{Tabs:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js"),l=n("./js/foundation.util.imageLoader.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n=0?e.slice(1):e,i=n&&o()("#".concat(n)),r=e&&t.$element.find('[href$="'.concat(e,'"],[data-tabs-target="').concat(n,'"]')).first();if(i.length&&r.length){if(i&&i.length&&r&&r.length?t.selectTab(i,!0):t._collapse(),t.options.deepLinkSmudge){var s=t.$element.offset();o()("html, body").animate({scrollTop:s.top-t.options.deepLinkSmudgeOffset},t.options.deepLinkSmudgeDelay)}t.$element.trigger("deeplink.zf.tabs",[r,i])}},this.options.deepLink&&this._checkDeepLink(),this._events(),this._isInitializing=!1}},{key:"_events",value:function(){this._addKeyHandler(),this._addClickHandler(),this._setHeightMqHandler=null,this.options.matchHeight&&(this._setHeightMqHandler=this._setHeight.bind(this),o()(window).on("changed.zf.mediaquery",this._setHeightMqHandler)),this.options.deepLink&&o()(window).on("hashchange",this._checkDeepLink)}},{key:"_addClickHandler",value:function(){var t=this;this.$element.off("click.zf.tabs").on("click.zf.tabs",".".concat(this.options.linkClass),(function(e){e.preventDefault(),t._handleTabChange(o()(this))}))}},{key:"_addKeyHandler",value:function(){var t=this;this.$tabTitles.off("keydown.zf.tabs").on("keydown.zf.tabs",(function(e){if(9!==e.which){var n,i,r=o()(this),s=r.parent("ul").children("li");s.each((function(e){o()(this).is(r)&&(t.options.wrapOnKeys?(n=0===e?s.last():s.eq(e-1),i=e===s.length-1?s.first():s.eq(e+1)):(n=s.eq(Math.max(0,e-1)),i=s.eq(Math.min(e+1,s.length-1))))})),a.Keyboard.handleKey(e,"Tabs",{open:function(){r.find('[role="tab"]').focus(),t._handleTabChange(r)},previous:function(){n.find('[role="tab"]').focus(),t._handleTabChange(n)},next:function(){i.find('[role="tab"]').focus(),t._handleTabChange(i)},handled:function(){e.preventDefault()}})}}))}},{key:"_handleTabChange",value:function(t,e){if(t.hasClass("".concat(this.options.linkActiveClass)))this.options.activeCollapse&&this._collapse();else{var n=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass)),i=t.find('[role="tab"]'),o=i.attr("data-tabs-target"),r=o&&o.length?"#".concat(o):i[0].hash,s=this.$tabContent.find(r);this._collapseTab(n),this._openTab(t),this.options.deepLink&&!e&&(this.options.updateHistory?history.pushState({},"",r):history.replaceState({},"",r)),this.$element.trigger("change.zf.tabs",[t,s]),s.find("[data-mutate]").trigger("mutateme.zf.trigger")}}},{key:"_openTab",value:function(t){var e=t.find('[role="tab"]'),n=e.attr("data-tabs-target")||e[0].hash.slice(1),i=this.$tabContent.find("#".concat(n));t.addClass("".concat(this.options.linkActiveClass)),e.attr({"aria-selected":"true",tabindex:"0"}),i.addClass("".concat(this.options.panelActiveClass)).removeAttr("aria-hidden")}},{key:"_collapseTab",value:function(t){var e=t.removeClass("".concat(this.options.linkActiveClass)).find('[role="tab"]').attr({"aria-selected":"false",tabindex:-1});o()("#".concat(e.attr("aria-controls"))).removeClass("".concat(this.options.panelActiveClass)).attr({"aria-hidden":"true"})}},{key:"_collapse",value:function(){var t=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass));t.length&&(this._collapseTab(t),this.$element.trigger("collapse.zf.tabs",[t]))}},{key:"selectTab",value:function(t,e){var n,i;(n="object"===u(t)?t[0].id:t).indexOf("#")<0?i="#".concat(n):(i=n,n=n.slice(1));var o=this.$tabTitles.has('[href$="'.concat(i,'"],[data-tabs-target="').concat(n,'"]')).first();this._handleTabChange(o,e)}},{key:"_setHeight",value:function(){var t=0,e=this;this.$tabContent&&this.$tabContent.find(".".concat(this.options.panelClass)).css("min-height","").each((function(){var n=o()(this),i=n.hasClass("".concat(e.options.panelActiveClass));i||n.css({visibility:"hidden",display:"block"});var r=this.getBoundingClientRect().height;i||n.css({visibility:"",display:""}),t=r>t?r:t})).css("min-height","".concat(t,"px"))}},{key:"_destroy",value:function(){this.$element.find(".".concat(this.options.linkClass)).off(".zf.tabs").hide().end().find(".".concat(this.options.panelClass)).hide(),this.options.matchHeight&&null!=this._setHeightMqHandler&&o()(window).off("changed.zf.mediaquery",this._setHeightMqHandler),this.options.deepLink&&o()(window).off("hashchange",this._checkDeepLink),this.onLoadListener&&o()(window).off(this.onLoadListener)}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),p}(r.Plugin);h.defaults={deepLink:!1,deepLinkSmudge:!1,deepLinkSmudgeDelay:300,deepLinkSmudgeOffset:0,updateHistory:!1,autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,activeCollapse:!1,linkClass:"tabs-title",linkActiveClass:"is-active",panelClass:"tabs-panel",panelActiveClass:"is-active"}},"./js/foundation.toggler.js":function(t,e,n){n.r(e),n.d(e,{Toggler:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.motion.js"),s=n("./js/foundation.core.plugin.js"),a=n("./js/foundation.core.utils.js"),l=n("./js/foundation.util.triggers.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n").addClass(e).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:t})}},{key:"_setPosition",value:function(){c(d(v.prototype),"_setPosition",this).call(this,this.$element,this.template)}},{key:"show",value:function(){if("all"!==this.options.showOn&&!s.MediaQuery.is(this.options.showOn))return!1;this.template.css("visibility","hidden").show(),this._setPosition(),this.template.removeClass("top bottom left right").addClass(this.position),this.template.removeClass("align-top align-bottom align-left align-right align-center").addClass("align-"+this.alignment),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),this.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,(function(){})),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,(function(){t.isActive=!1,t.isClick=!1})),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var t=this,e="ontouchstart"in window||void 0!==window.ontouchstart,n=!1;e&&this.options.disableForTouch||(this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",(function(){t.isActive||(t.timeout=setTimeout((function(){t.show()}),t.options.hoverDelay))})).on("mouseleave.zf.tooltip",(0,r.ignoreMousedisappear)((function(){clearTimeout(t.timeout),(!n||t.isClick&&!t.options.clickOpen)&&t.hide()}))),e&&this.$element.on("tap.zf.tooltip touchend.zf.tooltip",(function(){t.isActive?t.hide():t.show()})),this.options.clickOpen?this.$element.on("mousedown.zf.tooltip",(function(){t.isClick||(t.isClick=!0,!t.options.disableHover&&t.$element.attr("tabindex")||t.isActive||t.show())})):this.$element.on("mousedown.zf.tooltip",(function(){t.isClick=!0})),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",(function(){if(n=!0,t.isClick)return t.options.clickOpen||(n=!1),!1;t.show()})).on("focusout.zf.tooltip",(function(){n=!1,t.isClick=!1,t.hide()})).on("resizeme.zf.trigger",(function(){t.isActive&&t._setPosition()})))}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"_destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tooltip").removeClass(this.options.triggerClass).removeClass("top right left bottom").removeAttr("aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box"),this.template.remove()}}])&&u(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(n("./js/foundation.positionable.js").Positionable);h.defaults={hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,disableForTouch:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,position:"auto",alignment:"auto",allowOverlap:!1,allowBottomOverlap:!1,vOffset:0,hOffset:0,tooltipHeight:14,tooltipWidth:12,allowHtml:!1}},"./js/foundation.util.box.js":function(t,e,n){n.r(e),n.d(e,{Box:function(){return i}});var i={ImNotTouchingYou:function(t,e,n,i,r){return 0===o(t,e,n,i,r)},OverlapArea:o,GetDimensions:r,GetExplicitOffsets:function(t,e,n,i,o,s,a){var l,u,c=r(t),f=e?r(e):null;if(null!==f){switch(n){case"top":l=f.offset.top-(c.height+o);break;case"bottom":l=f.offset.top+f.height+o;break;case"left":u=f.offset.left-(c.width+s);break;case"right":u=f.offset.left+f.width+s}switch(n){case"top":case"bottom":switch(i){case"left":u=f.offset.left+s;break;case"right":u=f.offset.left-c.width+f.width-s;break;case"center":u=a?s:f.offset.left+f.width/2-c.width/2+s}break;case"right":case"left":switch(i){case"bottom":l=f.offset.top-o+f.height-c.height;break;case"top":l=f.offset.top+o;break;case"center":l=f.offset.top+o+f.height/2-c.height/2}}}return{top:l,left:u}}};function o(t,e,n,i,o){var s,a,l,u,c=r(t);if(e){var f=r(e);a=f.height+f.offset.top-(c.offset.top+c.height),s=c.offset.top-f.offset.top,l=c.offset.left-f.offset.left,u=f.width+f.offset.left-(c.offset.left+c.width)}else a=c.windowDims.height+c.windowDims.offset.top-(c.offset.top+c.height),s=c.offset.top-c.windowDims.offset.top,l=c.offset.left-c.windowDims.offset.left,u=c.windowDims.width-(c.offset.left+c.width);return a=o?0:Math.min(a,0),s=Math.min(s,0),l=Math.min(l,0),u=Math.min(u,0),n?l+u:i?s+a:Math.sqrt(s*s+a*a+l*l+u*u)}function r(t){if((t=t.length?t[0]:t)===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var e=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),i=document.body.getBoundingClientRect(),o=window.pageYOffset,r=window.pageXOffset;return{width:e.width,height:e.height,offset:{top:e.top+o,left:e.left+r},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+r}},windowDims:{width:i.width,height:i.height,offset:{top:o,left:r}}}}},"./js/foundation.util.imageLoader.js":function(t,e,n){n.r(e),n.d(e,{onImagesLoaded:function(){return r}});var i=n("jquery"),o=n.n(i);function r(t,e){var n=t.length;function i(){0==--n&&e()}0===n&&e(),t.each((function(){if(this.complete&&void 0!==this.naturalWidth)i();else{var t=new Image,e="load.zf.images error.zf.images";o()(t).one(e,(function t(){o()(this).off(e,t),i()})),t.src=o()(this).attr("src")}}))}},"./js/foundation.util.keyboard.js":function(t,e,n){n.r(e),n.d(e,{Keyboard:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",35:"END",36:"HOME",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},a={};function l(t){return!!t&&t.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter((function(){return!(!o()(this).is(":visible")||o()(this).attr("tabindex")<0)})).sort((function(t,e){if(o()(t).attr("tabindex")===o()(e).attr("tabindex"))return 0;var n=parseInt(o()(t).attr("tabindex"),10),i=parseInt(o()(e).attr("tabindex"),10);return void 0===o()(t).attr("tabindex")&&i>0?1:void 0===o()(e).attr("tabindex")&&n>0?-1:0===n&&i>0?1:0===i&&n>0||ni?1:void 0}))}function u(t){var e=s[t.which||t.keyCode]||String.fromCharCode(t.which).toUpperCase();return e=e.replace(/\W+/,""),t.shiftKey&&(e="SHIFT_".concat(e)),t.ctrlKey&&(e="CTRL_".concat(e)),t.altKey&&(e="ALT_".concat(e)),e.replace(/_$/,"")}var c={keys:function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[t[n]]=t[n]);return e}(s),parseKey:u,handleKey:function(t,e,n){var i,s=a[e],l=this.parseKey(t);if(!s)return console.warn("Component not defined!");if(!0!==t.zfIsKeyHandled)if((i=n[(void 0===s.ltr?s:(0,r.rtl)()?o().extend({},s.ltr,s.rtl):o().extend({},s.rtl,s.ltr))[l]])&&"function"==typeof i){var u=i.apply();t.zfIsKeyHandled=!0,(n.handled||"function"==typeof n.handled)&&n.handled(u)}else(n.unhandled||"function"==typeof n.unhandled)&&n.unhandled()},findFocusable:l,register:function(t,e){a[t]=e},trapFocus:function(t){var e=l(t),n=e.eq(0),i=e.eq(-1);t.on("keydown.zf.trapfocus",(function(t){t.target===i[0]&&"TAB"===u(t)?(t.preventDefault(),n.focus()):t.target===n[0]&&"SHIFT_TAB"===u(t)&&(t.preventDefault(),i.focus())}))},releaseFocus:function(t){t.off("keydown.zf.trapfocus")}}},"./js/foundation.util.mediaQuery.js":function(t,e,n){n.r(e),n.d(e,{MediaQuery:function(){return a}});var i=n("jquery"),o=n.n(i);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n').appendTo(document.head);var t,e,n,i=o()(".foundation-mq").css("font-family");for(var r in n=void 0,n={},t="string"!=typeof(e=i)?n:(e=e.trim().slice(1,-1))?(n=e.split("&").reduce((function(t,e){var n=e.replace(/\+/g," ").split("="),i=n[0],o=n[1];return i=decodeURIComponent(i),o=void 0===o?null:decodeURIComponent(o),t.hasOwnProperty(i)?Array.isArray(t[i])?t[i].push(o):t[i]=[t[i],o]:t[i]=o,t}),{}),n):n,this.queries=[],t)t.hasOwnProperty(r)&&this.queries.push({name:r,value:"only screen and (min-width: ".concat(t[r],")")});this.current=this._getCurrentSize(),this._watcher()},_reInit:function(){this.isInitialized=!1,this._init()},atLeast:function(t){var e=this.get(t);return!!e&&window.matchMedia(e).matches},only:function(t){return t===this._getCurrentSize()},upTo:function(t){var e=this.next(t);return!e||!this.atLeast(e)},is:function(t){var e,n,i=(e=t.trim().split(" ").filter((function(t){return!!t.length})),n=2,function(t){if(Array.isArray(t))return t}(e)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,o,r,s,a=[],l=!0,u=!1;try{if(r=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=r.call(n)).done)&&(a.push(i.value),a.length!==e);l=!0);}catch(t){u=!0,o=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(u)throw o}}return a}}(e,n)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(t,e):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=i[0],r=i[1],a=void 0===r?"":r;if("only"===a)return this.only(o);if(!a||"up"===a)return this.atLeast(o);if("down"===a)return this.upTo(o);throw new Error('\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like " ", got "'.concat(t,'".\n '))},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var n=this.queries[e];if(t===n.name)return n.value}return null},next:function(t){var e=this,n=this.queries.findIndex((function(n){return e._getQueryName(n)===t}));if(-1===n)throw new Error('\n Unknown breakpoint "'.concat(t,'" passed to MediaQuery.next().\n Ensure it is present in your Sass "$breakpoints" setting.\n '));var i=this.queries[n+1];return i?i.name:null},_getQueryName:function(t){if("string"==typeof t)return t;if("object"===r(t))return t.name;throw new TypeError('\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got "'.concat(t,'" (').concat(r(t),")\n "))},_getCurrentSize:function(){for(var t,e=0;e1&&void 0!==arguments[1]?arguments[1]:"zf";t.attr("role","menubar"),t.find("a").attr({role:"menuitem"});var n=t.find("li").attr({role:"none"}),i="is-".concat(e,"-submenu"),r="".concat(i,"-item"),s="is-".concat(e,"-submenu-parent"),a="accordion"!==e;n.each((function(){var t=o()(this),n=t.children("ul");if(n.length){if(t.addClass(s),a){var l=t.children("a:first");l.attr({"aria-haspopup":!0,"aria-label":l.attr("aria-label")||l.text()}),"drilldown"===e&&t.attr({"aria-expanded":!1})}n.addClass("submenu ".concat(i)).attr({"data-submenu":"",role:"menubar"}),"drilldown"===e&&n.attr({"aria-hidden":!0})}t.parent("[data-submenu]").length&&t.addClass("is-submenu-item ".concat(r))}))},Burn:function(t,e){var n="is-".concat(e,"-submenu"),i="".concat(n,"-item"),o="is-".concat(e,"-submenu-parent");t.find(">li, > li > ul, .menu, .menu > li, [data-submenu] > li").removeClass("".concat(n," ").concat(i," ").concat(o," is-submenu-item submenu is-active")).removeAttr("data-submenu").css("display","")}}},"./js/foundation.util.timer.js":function(t,e,n){function i(t,e,n){var i,o,r=this,s=e.duration,a=Object.keys(t.data())[0]||"timer",l=-1;this.isPaused=!1,this.restart=function(){l=-1,clearTimeout(o),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(o),l=l<=0?s:l,t.data("paused",!1),i=Date.now(),o=setTimeout((function(){e.infinite&&r.restart(),n&&"function"==typeof n&&n()}),l),t.trigger("timerstart.zf.".concat(a))},this.pause=function(){this.isPaused=!0,clearTimeout(o),t.data("paused",!0);var e=Date.now();l-=e-i,t.trigger("timerpaused.zf.".concat(a))}}n.r(e),n.d(e,{Timer:function(){return i}})},"./js/foundation.util.touch.js":function(t,e,n){n.r(e),n.d(e,{Touch:function(){return f}});var i=n("jquery"),o=n.n(i);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function s(t,e){for(var n=0;n=o().spotSwipe.moveThreshold&&u<=o().spotSwipe.timeThreshold&&(e=i>0?"left":"right"),e&&(t.preventDefault(),p.apply(this,arguments),o()(this).trigger(o().Event("swipe",Object.assign({},t)),e).trigger(o().Event("swipe".concat(e),Object.assign({},t))))}}function m(t){1===t.touches.length&&(a=t.touches[0].pageX,c=t,d=!0,h=!1,l=(new Date).getTime(),this.addEventListener("touchmove",v,{passive:!0===o().spotSwipe.preventDefault}),this.addEventListener("touchend",p,!1))}function y(){this.addEventListener&&this.addEventListener("touchstart",m,{passive:!0})}var g=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.version="1.0.0",this.enabled="ontouchstart"in document.documentElement,this.preventDefault=!1,this.moveThreshold=75,this.timeThreshold=200,this._init()}var e,n;return e=t,(n=[{key:"_init",value:function(){o().event.special.swipe={setup:y},o().event.special.tap={setup:y},o().each(["left","up","down","right"],(function(){o().event.special["swipe".concat(this)]={setup:function(){o()(this).on("swipe",o().noop)}}}))}}])&&s(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();f.setupSpotSwipe=function(){o().spotSwipe=new g(o())},f.setupTouchHandler=function(){o().fn.addTouch=function(){this.each((function(e,n){o()(n).bind("touchstart touchmove touchend touchcancel",(function(e){t(e)}))}));var t=function(t){var e,n=t.changedTouches[0],i={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"}[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=new window.MouseEvent(i,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(e)}}},f.init=function(){void 0===o().spotSwipe&&(f.setupSpotSwipe(o()),f.setupTouchHandler(o()))}},"./js/foundation.util.triggers.js":function(t,e,n){n.r(e),n.d(e,{Triggers:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.motion.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var l=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e0&&e-1 in t)}function S(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}C.fn=C.prototype={jquery:_,constructor:C,length:0,toArray:function(){return a.call(this)},get:function(t){return null==t?a.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=C.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return C.each(this,t)},map:function(t){return this.pushStack(C.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return this.pushStack(a.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(C.grep(this,(function(t,e){return(e+1)%2})))},odd:function(){return this.pushStack(C.grep(this,(function(t,e){return e%2})))},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n+~]|"+P+")"+P+"*"),F=new RegExp(P+"|>"),N=new RegExp(M),B=new RegExp("^"+A+"$"),W={ID:new RegExp("^#("+A+")"),CLASS:new RegExp("^\\.("+A+")"),TAG:new RegExp("^("+A+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+M),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:new RegExp("^(?:"+x+")$","i"),needsContext:new RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},Q=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,G=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Y=/[+~]/,U=new RegExp("\\\\[\\da-fA-F]{1,6}"+P+"?|\\\\([^\\r\\n\\f])","g"),V=function(t,e){var n="0x"+t.slice(1)-65536;return e||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},X=function(){lt()},Z=dt((function(t){return!0===t.disabled&&S(t,"fieldset")}),{dir:"parentNode",next:"legend"});try{v.apply(r=a.call(D.childNodes),D.childNodes),r[D.childNodes.length].nodeType}catch(t){v={apply:function(t,e){L.apply(t,a.call(e))},call:function(t){L.apply(t,a.call(arguments,1))}}}function J(t,e,n,i){var o,r,s,a,u,c,h,p=e&&e.ownerDocument,g=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==g&&9!==g&&11!==g)return n;if(!i&&(lt(e),e=e||l,f)){if(11!==g&&(u=G.exec(t)))if(o=u[1]){if(9===g){if(!(s=e.getElementById(o)))return n;if(s.id===o)return v.call(n,s),n}else if(p&&(s=p.getElementById(o))&&J.contains(e,s)&&s.id===o)return v.call(n,s),n}else{if(u[2])return v.apply(n,e.getElementsByTagName(t)),n;if((o=u[3])&&e.getElementsByClassName)return v.apply(n,e.getElementsByClassName(o)),n}if(!(_[t+" "]||d&&d.test(t))){if(h=t,p=e,1===g&&(F.test(t)||I.test(t))){for((p=Y.test(t)&&at(e.parentNode)||e)==e&&m.scope||((a=e.getAttribute("id"))?a=C.escapeSelector(a):e.setAttribute("id",a=y)),r=(c=ct(t)).length;r--;)c[r]=(a?"#"+a:":scope")+" "+ft(c[r]);h=c.join(",")}try{return v.apply(n,p.querySelectorAll(h)),n}catch(e){_(t,!0)}finally{a===y&&e.removeAttribute("id")}}}return gt(t.replace(z,"$1"),e,n,i)}function tt(){var t=[];return function n(i,o){return t.push(i+" ")>e.cacheLength&&delete n[t.shift()],n[i+" "]=o}}function et(t){return t[y]=!0,t}function nt(t){var e=l.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function it(t){return function(e){return S(e,"input")&&e.type===t}}function ot(t){return function(e){return(S(e,"input")||S(e,"button"))&&e.type===t}}function rt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&Z(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function st(t){return et((function(e){return e=+e,et((function(n,i){for(var o,r=t([],n.length,e),s=r.length;s--;)n[o=r[s]]&&(n[o]=!(i[o]=n[o]))}))}))}function at(t){return t&&void 0!==t.getElementsByTagName&&t}function lt(t){var n,i=t?t.ownerDocument||t:D;return i!=l&&9===i.nodeType&&i.documentElement?(u=(l=i).documentElement,f=!C.isXMLDoc(l),p=u.matches||u.webkitMatchesSelector||u.msMatchesSelector,u.msMatchesSelector&&D!=l&&(n=l.defaultView)&&n.top!==n&&n.addEventListener("unload",X),m.getById=nt((function(t){return u.appendChild(t).id=C.expando,!l.getElementsByName||!l.getElementsByName(C.expando).length})),m.disconnectedMatch=nt((function(t){return p.call(t,"*")})),m.scope=nt((function(){return l.querySelectorAll(":scope")})),m.cssHas=nt((function(){try{return l.querySelector(":has(*,:jqfake)"),!1}catch(t){return!0}})),m.getById?(e.filter.ID=function(t){var e=t.replace(U,V);return function(t){return t.getAttribute("id")===e}},e.find.ID=function(t,e){if(void 0!==e.getElementById&&f){var n=e.getElementById(t);return n?[n]:[]}}):(e.filter.ID=function(t){var e=t.replace(U,V);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},e.find.ID=function(t,e){if(void 0!==e.getElementById&&f){var n,i,o,r=e.getElementById(t);if(r){if((n=r.getAttributeNode("id"))&&n.value===t)return[r];for(o=e.getElementsByName(t),i=0;r=o[i++];)if((n=r.getAttributeNode("id"))&&n.value===t)return[r]}return[]}}),e.find.TAG=function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):e.querySelectorAll(t)},e.find.CLASS=function(t,e){if(void 0!==e.getElementsByClassName&&f)return e.getElementsByClassName(t)},d=[],nt((function(t){var e;u.appendChild(t).innerHTML="",t.querySelectorAll("[selected]").length||d.push("\\["+P+"*(?:value|"+x+")"),t.querySelectorAll("[id~="+y+"-]").length||d.push("~="),t.querySelectorAll("a#"+y+"+*").length||d.push(".#.+[+~]"),t.querySelectorAll(":checked").length||d.push(":checked"),(e=l.createElement("input")).setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),u.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(e=l.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||d.push("\\["+P+"*name"+P+"*="+P+"*(?:''|\"\")")})),m.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),$=function(t,e){if(t===e)return s=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(1&(n=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!m.sortDetached&&e.compareDocumentPosition(t)===n?t===l||t.ownerDocument==D&&J.contains(D,t)?-1:e===l||e.ownerDocument==D&&J.contains(D,e)?1:o?c.call(o,t)-c.call(o,e):0:4&n?-1:1)},l):l}for(t in J.matches=function(t,e){return J(t,null,null,e)},J.matchesSelector=function(t,e){if(lt(t),f&&!_[e+" "]&&(!d||!d.test(e)))try{var n=p.call(t,e);if(n||m.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){_(e,!0)}return J(e,l,null,[t]).length>0},J.contains=function(t,e){return(t.ownerDocument||t)!=l&<(t),C.contains(t,e)},J.attr=function(t,n){(t.ownerDocument||t)!=l&<(t);var i=e.attrHandle[n.toLowerCase()],o=i&&h.call(e.attrHandle,n.toLowerCase())?i(t,n,!f):void 0;return void 0!==o?o:t.getAttribute(n)},J.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},C.uniqueSort=function(t){var e,n=[],i=0,r=0;if(s=!m.sortStable,o=!m.sortStable&&a.call(t,0),T.call(t,$),s){for(;e=t[r++];)e===t[r]&&(i=n.push(r));for(;i--;)E.call(t,n[i],1)}return o=null,t},C.fn.uniqueSort=function(){return this.pushStack(C.uniqueSort(a.apply(this)))},e=C.expr={cacheLength:50,createPseudo:et,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(U,V),t[3]=(t[3]||t[4]||t[5]||"").replace(U,V),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||J.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&J.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return W.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&N.test(n)&&(e=ct(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(U,V).toLowerCase();return"*"===t?function(){return!0}:function(t){return S(t,e)}},CLASS:function(t){var e=w[t+" "];return e||(e=new RegExp("(^|"+P+")"+t+"("+P+"|$)"))&&w(t,(function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")}))},ATTR:function(t,e,n){return function(i){var o=J.attr(i,t);return null==o?"!="===e:!e||(o+="","="===e?o===n:"!="===e?o!==n:"^="===e?n&&0===o.indexOf(n):"*="===e?n&&o.indexOf(n)>-1:"$="===e?n&&o.slice(-n.length)===n:"~="===e?(" "+o.replace(H," ")+" ").indexOf(n)>-1:"|="===e&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,n,i,o){var r="nth"!==t.slice(0,3),s="last"!==t.slice(-4),a="of-type"===e;return 1===i&&0===o?function(t){return!!t.parentNode}:function(e,n,l){var u,c,f,d,h,p=r!==s?"nextSibling":"previousSibling",v=e.parentNode,m=a&&e.nodeName.toLowerCase(),b=!l&&!a,w=!1;if(v){if(r){for(;p;){for(f=e;f=f[p];)if(a?S(f,m):1===f.nodeType)return!1;h=p="only"===t&&!h&&"nextSibling"}return!0}if(h=[s?v.firstChild:v.lastChild],s&&b){for(w=(d=(u=(c=v[y]||(v[y]={}))[t]||[])[0]===g&&u[1])&&u[2],f=d&&v.childNodes[d];f=++d&&f&&f[p]||(w=d=0)||h.pop();)if(1===f.nodeType&&++w&&f===e){c[t]=[g,d,w];break}}else if(b&&(w=d=(u=(c=e[y]||(e[y]={}))[t]||[])[0]===g&&u[1]),!1===w)for(;(f=++d&&f&&f[p]||(w=d=0)||h.pop())&&(!(a?S(f,m):1===f.nodeType)||!++w||(b&&((c=f[y]||(f[y]={}))[t]=[g,w]),f!==e)););return(w-=o)===i||w%i==0&&w/i>=0}}},PSEUDO:function(t,n){var i,o=e.pseudos[t]||e.setFilters[t.toLowerCase()]||J.error("unsupported pseudo: "+t);return o[y]?o(n):o.length>1?(i=[t,t,"",n],e.setFilters.hasOwnProperty(t.toLowerCase())?et((function(t,e){for(var i,r=o(t,n),s=r.length;s--;)t[i=c.call(t,r[s])]=!(e[i]=r[s])})):function(t){return o(t,0,i)}):o}},pseudos:{not:et((function(t){var e=[],n=[],i=yt(t.replace(z,"$1"));return i[y]?et((function(t,e,n,o){for(var r,s=i(t,null,o,[]),a=t.length;a--;)(r=s[a])&&(t[a]=!(e[a]=r))})):function(t,o,r){return e[0]=t,i(e,null,r,n),e[0]=null,!n.pop()}})),has:et((function(t){return function(e){return J(t,e).length>0}})),contains:et((function(t){return t=t.replace(U,V),function(e){return(e.textContent||C.text(e)).indexOf(t)>-1}})),lang:et((function(t){return B.test(t||"")||J.error("unsupported lang: "+t),t=t.replace(U,V).toLowerCase(),function(e){var n;do{if(n=f?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}})),target:function(t){var e=i.location&&i.location.hash;return e&&e.slice(1)===t.id},root:function(t){return t===u},focus:function(t){return t===function(){try{return l.activeElement}catch(t){}}()&&l.hasFocus()&&!!(t.type||t.href||~t.tabIndex)},enabled:rt(!1),disabled:rt(!0),checked:function(t){return S(t,"input")&&!!t.checked||S(t,"option")&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!e.pseudos.empty(t)},header:function(t){return K.test(t.nodeName)},input:function(t){return Q.test(t.nodeName)},button:function(t){return S(t,"input")&&"button"===t.type||S(t,"button")},text:function(t){var e;return S(t,"input")&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:st((function(){return[0]})),last:st((function(t,e){return[e-1]})),eq:st((function(t,e,n){return[n<0?n+e:n]})),even:st((function(t,e){for(var n=0;ne?e:n;--i>=0;)t.push(i);return t})),gt:st((function(t,e,n){for(var i=n<0?n+e:n;++i1?function(e,n,i){for(var o=t.length;o--;)if(!t[o](e,n,i))return!1;return!0}:t[0]}function pt(t,e,n,i,o){for(var r,s=[],a=0,l=t.length,u=null!=e;a-1&&(r[u]=!(s[u]=d))}}else h=pt(h===s?h.splice(y,h.length):h),o?o(null,s,h,l):v.apply(s,h)}))}function mt(t){for(var i,o,r,s=t.length,a=e.relative[t[0].type],l=a||e.relative[" "],u=a?1:0,f=dt((function(t){return t===i}),l,!0),d=dt((function(t){return c.call(i,t)>-1}),l,!0),h=[function(t,e,o){var r=!a&&(o||e!=n)||((i=e).nodeType?f(t,e,o):d(t,e,o));return i=null,r}];u1&&ht(h),u>1&&ft(t.slice(0,u-1).concat({value:" "===t[u-2].type?"*":""})).replace(z,"$1"),o,u0,r=t.length>0,s=function(s,a,u,c,d){var h,p,m,y=0,b="0",w=s&&[],k=[],j=n,_=s||r&&e.find.TAG("*",d),$=g+=null==j?1:Math.random()||.1,x=_.length;for(d&&(n=a==l||a||d);b!==x&&null!=(h=_[b]);b++){if(r&&h){for(p=0,a||h.ownerDocument==l||(lt(h),u=!f);m=t[p++];)if(m(h,a||l,u)){v.call(c,h);break}d&&(g=$)}o&&((h=!m&&h)&&y--,s&&w.push(h))}if(y+=b,o&&b!==y){for(p=0;m=i[p++];)m(w,k,a,u);if(s){if(y>0)for(;b--;)w[b]||k[b]||(k[b]=O.call(c));k=pt(k)}v.apply(c,k),d&&!s&&k.length>0&&y+i.length>1&&C.uniqueSort(c)}return d&&(g=$,n=j),w};return o?et(s):s}(s,r)),a.selector=t}return a}function gt(t,n,i,o){var r,s,a,l,u,c="function"==typeof t&&t,d=!o&&ct(t=c.selector||t);if(i=i||[],1===d.length){if((s=d[0]=d[0].slice(0)).length>2&&"ID"===(a=s[0]).type&&9===n.nodeType&&f&&e.relative[s[1].type]){if(!(n=(e.find.ID(a.matches[0].replace(U,V),n)||[])[0]))return i;c&&(n=n.parentNode),t=t.slice(s.shift().value.length)}for(r=W.needsContext.test(t)?0:s.length;r--&&(a=s[r],!e.relative[l=a.type]);)if((u=e.find[l])&&(o=u(a.matches[0].replace(U,V),Y.test(s[0].type)&&at(n.parentNode)||n))){if(s.splice(r,1),!(t=o.length&&ft(s)))return v.apply(i,o),i;break}}return(c||yt(t,d))(o,n,!f,i,!n||Y.test(t)&&at(n.parentNode)||n),i}ut.prototype=e.filters=e.pseudos,e.setFilters=new ut,m.sortStable=y.split("").sort($).join("")===y,lt(),m.sortDetached=nt((function(t){return 1&t.compareDocumentPosition(l.createElement("fieldset"))})),C.find=J,C.expr[":"]=C.expr.pseudos,C.unique=C.uniqueSort,J.compile=yt,J.select=gt,J.setDocument=lt,J.tokenize=ct,J.escape=C.escapeSelector,J.getText=C.text,J.isXML=C.isXMLDoc,J.selectors=C.expr,J.support=C.support,J.uniqueSort=C.uniqueSort}();var M=function(t,e,n){for(var i=[],o=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(o&&C(t).is(n))break;i.push(t)}return i},H=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},q=C.expr.match.needsContext,I=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function F(t,e,n){return y(e)?C.grep(t,(function(t,i){return!!e.call(t,i,t)!==n})):e.nodeType?C.grep(t,(function(t){return t===e!==n})):"string"!=typeof e?C.grep(t,(function(t){return c.call(e,t)>-1!==n})):C.filter(e,t,n)}C.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?C.find.matchesSelector(i,t)?[i]:[]:C.find.matches(t,C.grep(e,(function(t){return 1===t.nodeType})))},C.fn.extend({find:function(t){var e,n,i=this.length,o=this;if("string"!=typeof t)return this.pushStack(C(t).filter((function(){for(e=0;e1?C.uniqueSort(n):n},filter:function(t){return this.pushStack(F(this,t||[],!1))},not:function(t){return this.pushStack(F(this,t||[],!0))},is:function(t){return!!F(this,"string"==typeof t&&q.test(t)?C(t):t||[],!1).length}});var N,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(C.fn.init=function(t,e,n){var i,o;if(!t)return this;if(n=n||N,"string"==typeof t){if(!(i="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:B.exec(t))||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof C?e[0]:e,C.merge(this,C.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:b,!0)),I.test(i[1])&&C.isPlainObject(e))for(i in e)y(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(o=b.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):y(t)?void 0!==n.ready?n.ready(t):t(C):C.makeArray(t,this)}).prototype=C.fn,N=C(b);var W=/^(?:parents|prev(?:Until|All))/,Q={children:!0,contents:!0,next:!0,prev:!0};function K(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}C.fn.extend({has:function(t){var e=C(t,this),n=e.length;return this.filter((function(){for(var t=0;t-1:1===n.nodeType&&C.find.matchesSelector(n,t))){r.push(n);break}return this.pushStack(r.length>1?C.uniqueSort(r):r)},index:function(t){return t?"string"==typeof t?c.call(C(t),this[0]):c.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(C.uniqueSort(C.merge(this.get(),C(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),C.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return M(t,"parentNode")},parentsUntil:function(t,e,n){return M(t,"parentNode",n)},next:function(t){return K(t,"nextSibling")},prev:function(t){return K(t,"previousSibling")},nextAll:function(t){return M(t,"nextSibling")},prevAll:function(t){return M(t,"previousSibling")},nextUntil:function(t,e,n){return M(t,"nextSibling",n)},prevUntil:function(t,e,n){return M(t,"previousSibling",n)},siblings:function(t){return H((t.parentNode||{}).firstChild,t)},children:function(t){return H(t.firstChild)},contents:function(t){return null!=t.contentDocument&&s(t.contentDocument)?t.contentDocument:(S(t,"template")&&(t=t.content||t),C.merge([],t.childNodes))}},(function(t,e){C.fn[t]=function(n,i){var o=C.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(o=C.filter(i,o)),this.length>1&&(Q[t]||C.uniqueSort(o),W.test(t)&&o.reverse()),this.pushStack(o)}}));var G=/[^\x20\t\r\n\f]+/g;function Y(t){return t}function U(t){throw t}function V(t,e,n,i){var o;try{t&&y(o=t.promise)?o.call(t).done(e).fail(n):t&&y(o=t.then)?o.call(t,e,n):e.apply(void 0,[t].slice(i))}catch(t){n.apply(void 0,[t])}}C.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return C.each(t.match(G)||[],(function(t,n){e[n]=!0})),e}(t):C.extend({},t);var e,n,i,o,r=[],s=[],a=-1,l=function(){for(o=o||t.once,i=e=!0;s.length;a=-1)for(n=s.shift();++a-1;)r.splice(n,1),n<=a&&a--})),this},has:function(t){return t?C.inArray(t,r)>-1:r.length>0},empty:function(){return r&&(r=[]),this},disable:function(){return o=s=[],r=n="",this},disabled:function(){return!r},lock:function(){return o=s=[],n||e||(r=n=""),this},locked:function(){return!!o},fireWith:function(t,n){return o||(n=[t,(n=n||[]).slice?n.slice():n],s.push(n),e||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},C.extend({Deferred:function(t){var e=[["notify","progress",C.Callbacks("memory"),C.Callbacks("memory"),2],["resolve","done",C.Callbacks("once memory"),C.Callbacks("once memory"),0,"resolved"],["reject","fail",C.Callbacks("once memory"),C.Callbacks("once memory"),1,"rejected"]],n="pending",o={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},catch:function(t){return o.then(null,t)},pipe:function(){var t=arguments;return C.Deferred((function(n){C.each(e,(function(e,i){var o=y(t[i[4]])&&t[i[4]];r[i[1]]((function(){var t=o&&o.apply(this,arguments);t&&y(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[i[0]+"With"](this,o?[t]:arguments)}))})),t=null})).promise()},then:function(t,n,o){var r=0;function s(t,e,n,o){return function(){var a=this,l=arguments,u=function(){var i,u;if(!(t=r&&(n!==U&&(a=void 0,l=[i]),e.rejectWith(a,l))}};t?c():(C.Deferred.getErrorHook?c.error=C.Deferred.getErrorHook():C.Deferred.getStackHook&&(c.error=C.Deferred.getStackHook()),i.setTimeout(c))}}return C.Deferred((function(i){e[0][3].add(s(0,i,y(o)?o:Y,i.notifyWith)),e[1][3].add(s(0,i,y(t)?t:Y)),e[2][3].add(s(0,i,y(n)?n:U))})).promise()},promise:function(t){return null!=t?C.extend(t,o):o}},r={};return C.each(e,(function(t,i){var s=i[2],a=i[5];o[i[1]]=s.add,a&&s.add((function(){n=a}),e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),s.add(i[3].fire),r[i[0]]=function(){return r[i[0]+"With"](this===r?void 0:this,arguments),this},r[i[0]+"With"]=s.fireWith})),o.promise(r),t&&t.call(r,r),r},when:function(t){var e=arguments.length,n=e,i=Array(n),o=a.call(arguments),r=C.Deferred(),s=function(t){return function(n){i[t]=this,o[t]=arguments.length>1?a.call(arguments):n,--e||r.resolveWith(i,o)}};if(e<=1&&(V(t,r.done(s(n)).resolve,r.reject,!e),"pending"===r.state()||y(o[n]&&o[n].then)))return r.then();for(;n--;)V(o[n],s(n),r.reject);return r.promise()}});var X=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;C.Deferred.exceptionHook=function(t,e){i.console&&i.console.warn&&t&&X.test(t.name)&&i.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},C.readyException=function(t){i.setTimeout((function(){throw t}))};var Z=C.Deferred();function J(){b.removeEventListener("DOMContentLoaded",J),i.removeEventListener("load",J),C.ready()}C.fn.ready=function(t){return Z.then(t).catch((function(t){C.readyException(t)})),this},C.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--C.readyWait:C.isReady)||(C.isReady=!0,!0!==t&&--C.readyWait>0||Z.resolveWith(b,[C]))}}),C.ready.then=Z.then,"complete"===b.readyState||"loading"!==b.readyState&&!b.documentElement.doScroll?i.setTimeout(C.ready):(b.addEventListener("DOMContentLoaded",J),i.addEventListener("load",J));var tt=function(t,e,n,i,o,r,s){var a=0,l=t.length,u=null==n;if("object"===j(n))for(a in o=!0,n)tt(t,e,a,n[a],!0,r,s);else if(void 0!==i&&(o=!0,y(i)||(s=!0),u&&(s?(e.call(t,i),e=null):(u=e,e=function(t,e,n){return u.call(C(t),n)})),e))for(;a1,null,!0)},removeData:function(t){return this.each((function(){lt.remove(this,t)}))}}),C.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=at.get(t,e),n&&(!i||Array.isArray(n)?i=at.access(t,e,C.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=C.queue(t,e),i=n.length,o=n.shift(),r=C._queueHooks(t,e);"inprogress"===o&&(o=n.shift(),i--),o&&("fx"===e&&n.unshift("inprogress"),delete r.stop,o.call(t,(function(){C.dequeue(t,e)}),r)),!i&&r&&r.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return at.get(t,n)||at.access(t,n,{empty:C.Callbacks("once memory").add((function(){at.remove(t,[e+"queue",n])}))})}}),C.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]*)/i,St=/^$|^module$|\/(?:java|ecma)script/i;_t=b.createDocumentFragment().appendChild(b.createElement("div")),($t=b.createElement("input")).setAttribute("type","radio"),$t.setAttribute("checked","checked"),$t.setAttribute("name","t"),_t.appendChild($t),m.checkClone=_t.cloneNode(!0).cloneNode(!0).lastChild.checked,_t.innerHTML="",m.noCloneChecked=!!_t.cloneNode(!0).lastChild.defaultValue,_t.innerHTML="",m.option=!!_t.lastChild;var Ot={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function Tt(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&S(t,e)?C.merge([t],n):n}function Et(t,e){for(var n=0,i=t.length;n",""]);var Pt=/<|&#?\w+;/;function zt(t,e,n,i,o){for(var r,s,a,l,u,c,f=e.createDocumentFragment(),d=[],h=0,p=t.length;h-1)o&&o.push(r);else if(u=mt(r),s=Tt(f.appendChild(r),"script"),u&&Et(s),n)for(c=0;r=s[c++];)St.test(r.type||"")&&n.push(r);return f}var At=/^([^.]*)(?:\.(.+)|)/;function Rt(){return!0}function Dt(){return!1}function Lt(t,e,n,i,o,r){var s,a;if("object"==typeof e){for(a in"string"!=typeof n&&(i=i||n,n=void 0),e)Lt(t,a,n,i,e[a],r);return t}if(null==i&&null==o?(o=n,i=n=void 0):null==o&&("string"==typeof n?(o=i,i=void 0):(o=i,i=n,n=void 0)),!1===o)o=Dt;else if(!o)return t;return 1===r&&(s=o,o=function(t){return C().off(t),s.apply(this,arguments)},o.guid=s.guid||(s.guid=C.guid++)),t.each((function(){C.event.add(this,e,o,i,n)}))}function Mt(t,e,n){n?(at.set(t,e,!1),C.event.add(t,e,{namespace:!1,handler:function(t){var n,i=at.get(this,e);if(1&t.isTrigger&&this[e]){if(i)(C.event.special[e]||{}).delegateType&&t.stopPropagation();else if(i=a.call(arguments),at.set(this,e,i),this[e](),n=at.get(this,e),at.set(this,e,!1),i!==n)return t.stopImmediatePropagation(),t.preventDefault(),n}else i&&(at.set(this,e,C.event.trigger(i[0],i.slice(1),this)),t.stopPropagation(),t.isImmediatePropagationStopped=Rt)}})):void 0===at.get(t,e)&&C.event.add(t,e,Rt)}C.event={global:{},add:function(t,e,n,i,o){var r,s,a,l,u,c,f,d,h,p,v,m=at.get(t);if(rt(t))for(n.handler&&(n=(r=n).handler,o=r.selector),o&&C.find.matchesSelector(vt,o),n.guid||(n.guid=C.guid++),(l=m.events)||(l=m.events=Object.create(null)),(s=m.handle)||(s=m.handle=function(e){return void 0!==C&&C.event.triggered!==e.type?C.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(G)||[""]).length;u--;)h=v=(a=At.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),h&&(f=C.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=C.event.special[h]||{},c=C.extend({type:h,origType:v,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&C.expr.match.needsContext.test(o),namespace:p.join(".")},r),(d=l[h])||((d=l[h]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,i,p,s)||t.addEventListener&&t.addEventListener(h,s)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),o?d.splice(d.delegateCount++,0,c):d.push(c),C.event.global[h]=!0)},remove:function(t,e,n,i,o){var r,s,a,l,u,c,f,d,h,p,v,m=at.hasData(t)&&at.get(t);if(m&&(l=m.events)){for(u=(e=(e||"").match(G)||[""]).length;u--;)if(h=v=(a=At.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),h){for(f=C.event.special[h]||{},d=l[h=(i?f.delegateType:f.bindType)||h]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=r=d.length;r--;)c=d[r],!o&&v!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||i&&i!==c.selector&&("**"!==i||!c.selector)||(d.splice(r,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(t,c));s&&!d.length&&(f.teardown&&!1!==f.teardown.call(t,p,m.handle)||C.removeEvent(t,h,m.handle),delete l[h])}else for(h in l)C.event.remove(t,h+e[u],n,i,!0);C.isEmptyObject(l)&&at.remove(t,"handle events")}},dispatch:function(t){var e,n,i,o,r,s,a=new Array(arguments.length),l=C.event.fix(t),u=(at.get(this,"events")||Object.create(null))[l.type]||[],c=C.event.special[l.type]||{};for(a[0]=l,e=1;e=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(r=[],s={},n=0;n-1:C.find(o,this,null,[u]).length),s[o]&&r.push(i);r.length&&a.push({elem:u,handlers:r})}return u=this,l\s*$/g;function Ft(t,e){return S(t,"table")&&S(11!==e.nodeType?e:e.firstChild,"tr")&&C(t).children("tbody")[0]||t}function Nt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Bt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Wt(t,e){var n,i,o,r,s,a;if(1===e.nodeType){if(at.hasData(t)&&(a=at.get(t).events))for(o in at.remove(e,"handle events"),a)for(n=0,i=a[o].length;n1&&"string"==typeof p&&!m.checkClone&&qt.test(p))return t.each((function(o){var r=t.eq(o);v&&(e[0]=p.call(this,o,r.html())),Kt(r,e,n,i)}));if(d&&(r=(o=zt(e,t[0].ownerDocument,!1,t,i)).firstChild,1===o.childNodes.length&&(o=r),r||i)){for(a=(s=C.map(Tt(o,"script"),Nt)).length;f0&&Et(s,!l&&Tt(t,"script")),a},cleanData:function(t){for(var e,n,i,o=C.event.special,r=0;void 0!==(n=t[r]);r++)if(rt(n)){if(e=n[at.expando]){if(e.events)for(i in e.events)o[i]?C.event.remove(n,i):C.removeEvent(n,i,e.handle);n[at.expando]=void 0}n[lt.expando]&&(n[lt.expando]=void 0)}}}),C.fn.extend({detach:function(t){return Gt(this,t,!0)},remove:function(t){return Gt(this,t)},text:function(t){return tt(this,(function(t){return void 0===t?C.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)}))}),null,t,arguments.length)},append:function(){return Kt(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ft(this,t).appendChild(t)}))},prepend:function(){return Kt(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=Ft(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return Kt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return Kt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)}))},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(C.cleanData(Tt(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return C.clone(this,t,e)}))},html:function(t){return tt(this,(function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!Ht.test(t)&&!Ot[(xt.exec(t)||["",""])[1].toLowerCase()]){t=C.htmlPrefilter(t);try{for(;n=0&&(l+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-r-l-a-.5))||0),l+u}function ce(t,e,n){var i=Vt(t),o=(!m.boxSizingReliable()||n)&&"border-box"===C.css(t,"boxSizing",!1,i),r=o,s=Jt(t,e,i),a="offset"+e[0].toUpperCase()+e.slice(1);if(Yt.test(s)){if(!n)return s;s="auto"}return(!m.boxSizingReliable()&&o||!m.reliableTrDimensions()&&S(t,"tr")||"auto"===s||!parseFloat(s)&&"inline"===C.css(t,"display",!1,i))&&t.getClientRects().length&&(o="border-box"===C.css(t,"boxSizing",!1,i),(r=a in t)&&(s=t[a])),(s=parseFloat(s)||0)+ue(t,e,n||(o?"border":"content"),r,i,s)+"px"}function fe(t,e,n,i,o){return new fe.prototype.init(t,e,n,i,o)}C.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=Jt(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(t,e,n,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var o,r,s,a=ot(e),l=Ut.test(e),u=t.style;if(l||(e=oe(a)),s=C.cssHooks[e]||C.cssHooks[a],void 0===n)return s&&"get"in s&&void 0!==(o=s.get(t,!1,i))?o:u[e];"string"==(r=typeof n)&&(o=ht.exec(n))&&o[1]&&(n=bt(t,e,o),r="number"),null!=n&&n==n&&("number"!==r||l||(n+=o&&o[3]||(C.cssNumber[a]?"":"px")),m.clearCloneStyle||""!==n||0!==e.indexOf("background")||(u[e]="inherit"),s&&"set"in s&&void 0===(n=s.set(t,n,i))||(l?u.setProperty(e,n):u[e]=n))}},css:function(t,e,n,i){var o,r,s,a=ot(e);return Ut.test(e)||(e=oe(a)),(s=C.cssHooks[e]||C.cssHooks[a])&&"get"in s&&(o=s.get(t,!0,n)),void 0===o&&(o=Jt(t,e,i)),"normal"===o&&e in ae&&(o=ae[e]),""===n||n?(r=parseFloat(o),!0===n||isFinite(r)?r||0:o):o}}),C.each(["height","width"],(function(t,e){C.cssHooks[e]={get:function(t,n,i){if(n)return!re.test(C.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?ce(t,e,i):Xt(t,se,(function(){return ce(t,e,i)}))},set:function(t,n,i){var o,r=Vt(t),s=!m.scrollboxSize()&&"absolute"===r.position,a=(s||i)&&"border-box"===C.css(t,"boxSizing",!1,r),l=i?ue(t,e,i,a,r):0;return a&&s&&(l-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(r[e])-ue(t,e,"border",!1,r)-.5)),l&&(o=ht.exec(n))&&"px"!==(o[3]||"px")&&(t.style[e]=n,n=C.css(t,e)),le(0,n,l)}}})),C.cssHooks.marginLeft=te(m.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Jt(t,"marginLeft"))||t.getBoundingClientRect().left-Xt(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),C.each({margin:"",padding:"",border:"Width"},(function(t,e){C.cssHooks[t+e]={expand:function(n){for(var i=0,o={},r="string"==typeof n?n.split(" "):[n];i<4;i++)o[t+pt[i]+e]=r[i]||r[i-2]||r[0];return o}},"margin"!==t&&(C.cssHooks[t+e].set=le)})),C.fn.extend({css:function(t,e){return tt(this,(function(t,e,n){var i,o,r={},s=0;if(Array.isArray(e)){for(i=Vt(t),o=e.length;s1)}}),C.Tween=fe,fe.prototype={constructor:fe,init:function(t,e,n,i,o,r){this.elem=t,this.prop=n,this.easing=o||C.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=i,this.unit=r||(C.cssNumber[n]?"":"px")},cur:function(){var t=fe.propHooks[this.prop];return t&&t.get?t.get(this):fe.propHooks._default.get(this)},run:function(t){var e,n=fe.propHooks[this.prop];return this.options.duration?this.pos=e=C.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):fe.propHooks._default.set(this),this}},fe.prototype.init.prototype=fe.prototype,fe.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=C.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){C.fx.step[t.prop]?C.fx.step[t.prop](t):1!==t.elem.nodeType||!C.cssHooks[t.prop]&&null==t.elem.style[oe(t.prop)]?t.elem[t.prop]=t.now:C.style(t.elem,t.prop,t.now+t.unit)}}},fe.propHooks.scrollTop=fe.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},C.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},C.fx=fe.prototype.init,C.fx.step={};var de,he,pe=/^(?:toggle|show|hide)$/,ve=/queueHooks$/;function me(){he&&(!1===b.hidden&&i.requestAnimationFrame?i.requestAnimationFrame(me):i.setTimeout(me,C.fx.interval),C.fx.tick())}function ye(){return i.setTimeout((function(){de=void 0})),de=Date.now()}function ge(t,e){var n,i=0,o={height:t};for(e=e?1:0;i<4;i+=2-e)o["margin"+(n=pt[i])]=o["padding"+n]=t;return e&&(o.opacity=o.width=t),o}function be(t,e,n){for(var i,o=(we.tweeners[e]||[]).concat(we.tweeners["*"]),r=0,s=o.length;r1)},removeAttr:function(t){return this.each((function(){C.removeAttr(this,t)}))}}),C.extend({attr:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return void 0===t.getAttribute?C.prop(t,e,n):(1===r&&C.isXMLDoc(t)||(o=C.attrHooks[e.toLowerCase()]||(C.expr.match.bool.test(e)?ke:void 0)),void 0!==n?null===n?void C.removeAttr(t,e):o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:(t.setAttribute(e,n+""),n):o&&"get"in o&&null!==(i=o.get(t,e))?i:null==(i=C.find.attr(t,e))?void 0:i)},attrHooks:{type:{set:function(t,e){if(!m.radioValue&&"radio"===e&&S(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,i=0,o=e&&e.match(G);if(o&&1===t.nodeType)for(;n=o[i++];)t.removeAttribute(n)}}),ke={set:function(t,e,n){return!1===e?C.removeAttr(t,n):t.setAttribute(n,n),n}},C.each(C.expr.match.bool.source.match(/\w+/g),(function(t,e){var n=je[e]||C.find.attr;je[e]=function(t,e,i){var o,r,s=e.toLowerCase();return i||(r=je[s],je[s]=o,o=null!=n(t,e,i)?s:null,je[s]=r),o}}));var _e=/^(?:input|select|textarea|button)$/i,$e=/^(?:a|area)$/i;function Ce(t){return(t.match(G)||[]).join(" ")}function xe(t){return t.getAttribute&&t.getAttribute("class")||""}function Se(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(G)||[]}C.fn.extend({prop:function(t,e){return tt(this,C.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[C.propFix[t]||t]}))}}),C.extend({prop:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return 1===r&&C.isXMLDoc(t)||(e=C.propFix[e]||e,o=C.propHooks[e]),void 0!==n?o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:t[e]=n:o&&"get"in o&&null!==(i=o.get(t,e))?i:t[e]},propHooks:{tabIndex:{get:function(t){var e=C.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||$e.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),m.optSelected||(C.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),C.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){C.propFix[this.toLowerCase()]=this})),C.fn.extend({addClass:function(t){var e,n,i,o,r,s;return y(t)?this.each((function(e){C(this).addClass(t.call(this,e,xe(this)))})):(e=Se(t)).length?this.each((function(){if(i=xe(this),n=1===this.nodeType&&" "+Ce(i)+" "){for(r=0;r-1;)n=n.replace(" "+o+" "," ");s=Ce(n),i!==s&&this.setAttribute("class",s)}})):this:this.attr("class","")},toggleClass:function(t,e){var n,i,o,r,s=typeof t,a="string"===s||Array.isArray(t);return y(t)?this.each((function(n){C(this).toggleClass(t.call(this,n,xe(this),e),e)})):"boolean"==typeof e&&a?e?this.addClass(t):this.removeClass(t):(n=Se(t),this.each((function(){if(a)for(r=C(this),o=0;o-1)return!0;return!1}});var Oe=/\r/g;C.fn.extend({val:function(t){var e,n,i,o=this[0];return arguments.length?(i=y(t),this.each((function(n){var o;1===this.nodeType&&(null==(o=i?t.call(this,n,C(this).val()):t)?o="":"number"==typeof o?o+="":Array.isArray(o)&&(o=C.map(o,(function(t){return null==t?"":t+""}))),(e=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,o,"value")||(this.value=o))}))):o?(e=C.valHooks[o.type]||C.valHooks[o.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(o,"value"))?n:"string"==typeof(n=o.value)?n.replace(Oe,""):null==n?"":n:void 0}}),C.extend({valHooks:{option:{get:function(t){var e=C.find.attr(t,"value");return null!=e?e:Ce(C.text(t))}},select:{get:function(t){var e,n,i,o=t.options,r=t.selectedIndex,s="select-one"===t.type,a=s?null:[],l=s?r+1:o.length;for(i=r<0?l:s?r:0;i-1)&&(n=!0);return n||(t.selectedIndex=-1),r}}}}),C.each(["radio","checkbox"],(function(){C.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=C.inArray(C(t).val(),e)>-1}},m.checkOn||(C.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})}));var Te=i.location,Ee={guid:Date.now()},Pe=/\?/;C.parseXML=function(t){var e,n;if(!t||"string"!=typeof t)return null;try{e=(new i.DOMParser).parseFromString(t,"text/xml")}catch(t){}return n=e&&e.getElementsByTagName("parsererror")[0],e&&!n||C.error("Invalid XML: "+(n?C.map(n.childNodes,(function(t){return t.textContent})).join("\n"):t)),e};var ze=/^(?:focusinfocus|focusoutblur)$/,Ae=function(t){t.stopPropagation()};C.extend(C.event,{trigger:function(t,e,n,o){var r,s,a,l,u,c,f,d,p=[n||b],v=h.call(t,"type")?t.type:t,m=h.call(t,"namespace")?t.namespace.split("."):[];if(s=d=a=n=n||b,3!==n.nodeType&&8!==n.nodeType&&!ze.test(v+C.event.triggered)&&(v.indexOf(".")>-1&&(m=v.split("."),v=m.shift(),m.sort()),u=v.indexOf(":")<0&&"on"+v,(t=t[C.expando]?t:new C.Event(v,"object"==typeof t&&t)).isTrigger=o?2:3,t.namespace=m.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=n),e=null==e?[t]:C.makeArray(e,[t]),f=C.event.special[v]||{},o||!f.trigger||!1!==f.trigger.apply(n,e))){if(!o&&!f.noBubble&&!g(n)){for(l=f.delegateType||v,ze.test(l+v)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(n.ownerDocument||b)&&p.push(a.defaultView||a.parentWindow||i)}for(r=0;(s=p[r++])&&!t.isPropagationStopped();)d=s,t.type=r>1?l:f.bindType||v,(c=(at.get(s,"events")||Object.create(null))[t.type]&&at.get(s,"handle"))&&c.apply(s,e),(c=u&&s[u])&&c.apply&&rt(s)&&(t.result=c.apply(s,e),!1===t.result&&t.preventDefault());return t.type=v,o||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),e)||!rt(n)||u&&y(n[v])&&!g(n)&&((a=n[u])&&(n[u]=null),C.event.triggered=v,t.isPropagationStopped()&&d.addEventListener(v,Ae),n[v](),t.isPropagationStopped()&&d.removeEventListener(v,Ae),C.event.triggered=void 0,a&&(n[u]=a)),t.result}},simulate:function(t,e,n){var i=C.extend(new C.Event,n,{type:t,isSimulated:!0});C.event.trigger(i,null,e)}}),C.fn.extend({trigger:function(t,e){return this.each((function(){C.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var n=this[0];if(n)return C.event.trigger(t,e,n,!0)}});var Re=/\[\]$/,De=/\r?\n/g,Le=/^(?:submit|button|image|reset|file)$/i,Me=/^(?:input|select|textarea|keygen)/i;function He(t,e,n,i){var o;if(Array.isArray(e))C.each(e,(function(e,o){n||Re.test(t)?i(t,o):He(t+"["+("object"==typeof o&&null!=o?e:"")+"]",o,n,i)}));else if(n||"object"!==j(e))i(t,e);else for(o in e)He(t+"["+o+"]",e[o],n,i)}C.param=function(t,e){var n,i=[],o=function(t,e){var n=y(e)?e():e;i[i.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!C.isPlainObject(t))C.each(t,(function(){o(this.name,this.value)}));else for(n in t)He(n,t[n],e,o);return i.join("&")},C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=C.prop(this,"elements");return t?C.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!C(this).is(":disabled")&&Me.test(this.nodeName)&&!Le.test(t)&&(this.checked||!Ct.test(t))})).map((function(t,e){var n=C(this).val();return null==n?null:Array.isArray(n)?C.map(n,(function(t){return{name:e.name,value:t.replace(De,"\r\n")}})):{name:e.name,value:n.replace(De,"\r\n")}})).get()}});var qe=/%20/g,Ie=/#.*$/,Fe=/([?&])_=[^&]*/,Ne=/^(.*?):[ \t]*([^\r\n]*)$/gm,Be=/^(?:GET|HEAD)$/,We=/^\/\//,Qe={},Ke={},Ge="*/".concat("*"),Ye=b.createElement("a");function Ue(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var i,o=0,r=e.toLowerCase().match(G)||[];if(y(n))for(;i=r[o++];)"+"===i[0]?(i=i.slice(1)||"*",(t[i]=t[i]||[]).unshift(n)):(t[i]=t[i]||[]).push(n)}}function Ve(t,e,n,i){var o={},r=t===Ke;function s(a){var l;return o[a]=!0,C.each(t[a]||[],(function(t,a){var u=a(e,n,i);return"string"!=typeof u||r||o[u]?r?!(l=u):void 0:(e.dataTypes.unshift(u),s(u),!1)})),l}return s(e.dataTypes[0])||!o["*"]&&s("*")}function Xe(t,e){var n,i,o=C.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((o[n]?t:i||(i={}))[n]=e[n]);return i&&C.extend(!0,t,i),t}Ye.href=Te.href,C.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Te.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Te.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":C.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?Xe(Xe(t,C.ajaxSettings),e):Xe(C.ajaxSettings,t)},ajaxPrefilter:Ue(Qe),ajaxTransport:Ue(Ke),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};var n,o,r,s,a,l,u,c,f,d,h=C.ajaxSetup({},e),p=h.context||h,v=h.context&&(p.nodeType||p.jquery)?C(p):C.event,m=C.Deferred(),y=C.Callbacks("once memory"),g=h.statusCode||{},w={},k={},j="canceled",_={readyState:0,getResponseHeader:function(t){var e;if(u){if(!s)for(s={};e=Ne.exec(r);)s[e[1].toLowerCase()+" "]=(s[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=s[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return u?r:null},setRequestHeader:function(t,e){return null==u&&(t=k[t.toLowerCase()]=k[t.toLowerCase()]||t,w[t]=e),this},overrideMimeType:function(t){return null==u&&(h.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)_.always(t[_.status]);else for(e in t)g[e]=[g[e],t[e]];return this},abort:function(t){var e=t||j;return n&&n.abort(e),$(0,e),this}};if(m.promise(_),h.url=((t||h.url||Te.href)+"").replace(We,Te.protocol+"//"),h.type=e.method||e.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(G)||[""],null==h.crossDomain){l=b.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Ye.protocol+"//"+Ye.host!=l.protocol+"//"+l.host}catch(t){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=C.param(h.data,h.traditional)),Ve(Qe,h,e,_),u)return _;for(f in(c=C.event&&h.global)&&0==C.active++&&C.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Be.test(h.type),o=h.url.replace(Ie,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qe,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(Pe.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Fe,"$1"),d=(Pe.test(o)?"&":"?")+"_="+Ee.guid+++d),h.url=o+d),h.ifModified&&(C.lastModified[o]&&_.setRequestHeader("If-Modified-Since",C.lastModified[o]),C.etag[o]&&_.setRequestHeader("If-None-Match",C.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||e.contentType)&&_.setRequestHeader("Content-Type",h.contentType),_.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ge+"; q=0.01":""):h.accepts["*"]),h.headers)_.setRequestHeader(f,h.headers[f]);if(h.beforeSend&&(!1===h.beforeSend.call(p,_,h)||u))return _.abort();if(j="abort",y.add(h.complete),_.done(h.success),_.fail(h.error),n=Ve(Ke,h,e,_)){if(_.readyState=1,c&&v.trigger("ajaxSend",[_,h]),u)return _;h.async&&h.timeout>0&&(a=i.setTimeout((function(){_.abort("timeout")}),h.timeout));try{u=!1,n.send(w,$)}catch(t){if(u)throw t;$(-1,t)}}else $(-1,"No Transport");function $(t,e,s,l){var f,d,b,w,k,j=e;u||(u=!0,a&&i.clearTimeout(a),n=void 0,r=l||"",_.readyState=t>0?4:0,f=t>=200&&t<300||304===t,s&&(w=function(t,e,n){for(var i,o,r,s,a=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=t.mimeType||e.getResponseHeader("Content-Type"));if(i)for(o in a)if(a[o]&&a[o].test(i)){l.unshift(o);break}if(l[0]in n)r=l[0];else{for(o in n){if(!l[0]||t.converters[o+" "+l[0]]){r=o;break}s||(s=o)}r=r||s}if(r)return r!==l[0]&&l.unshift(r),n[r]}(h,_,s)),!f&&C.inArray("script",h.dataTypes)>-1&&C.inArray("json",h.dataTypes)<0&&(h.converters["text script"]=function(){}),w=function(t,e,n,i){var o,r,s,a,l,u={},c=t.dataTypes.slice();if(c[1])for(s in t.converters)u[s.toLowerCase()]=t.converters[s];for(r=c.shift();r;)if(t.responseFields[r]&&(n[t.responseFields[r]]=e),!l&&i&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=r,r=c.shift())if("*"===r)r=l;else if("*"!==l&&l!==r){if(!(s=u[l+" "+r]||u["* "+r]))for(o in u)if((a=o.split(" "))[1]===r&&(s=u[l+" "+a[0]]||u["* "+a[0]])){!0===s?s=u[o]:!0!==u[o]&&(r=a[0],c.unshift(a[1]));break}if(!0!==s)if(s&&t.throws)e=s(e);else try{e=s(e)}catch(t){return{state:"parsererror",error:s?t:"No conversion from "+l+" to "+r}}}return{state:"success",data:e}}(h,w,_,f),f?(h.ifModified&&((k=_.getResponseHeader("Last-Modified"))&&(C.lastModified[o]=k),(k=_.getResponseHeader("etag"))&&(C.etag[o]=k)),204===t||"HEAD"===h.type?j="nocontent":304===t?j="notmodified":(j=w.state,d=w.data,f=!(b=w.error))):(b=j,!t&&j||(j="error",t<0&&(t=0))),_.status=t,_.statusText=(e||j)+"",f?m.resolveWith(p,[d,j,_]):m.rejectWith(p,[_,j,b]),_.statusCode(g),g=void 0,c&&v.trigger(f?"ajaxSuccess":"ajaxError",[_,h,f?d:b]),y.fireWith(p,[_,j]),c&&(v.trigger("ajaxComplete",[_,h]),--C.active||C.event.trigger("ajaxStop")))}return _},getJSON:function(t,e,n){return C.get(t,e,n,"json")},getScript:function(t,e){return C.get(t,void 0,e,"script")}}),C.each(["get","post"],(function(t,e){C[e]=function(t,n,i,o){return y(n)&&(o=o||i,i=n,n=void 0),C.ajax(C.extend({url:t,type:e,dataType:o,data:n,success:i},C.isPlainObject(t)&&t))}})),C.ajaxPrefilter((function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")})),C._evalUrl=function(t,e,n){return C.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){C.globalEval(t,e,n)}})},C.fn.extend({wrapAll:function(t){var e;return this[0]&&(y(t)&&(t=t.call(this[0])),e=C(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map((function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t})).append(this)),this},wrapInner:function(t){return y(t)?this.each((function(e){C(this).wrapInner(t.call(this,e))})):this.each((function(){var e=C(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)}))},wrap:function(t){var e=y(t);return this.each((function(n){C(this).wrapAll(e?t.call(this,n):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){C(this).replaceWith(this.childNodes)})),this}}),C.expr.pseudos.hidden=function(t){return!C.expr.pseudos.visible(t)},C.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},C.ajaxSettings.xhr=function(){try{return new i.XMLHttpRequest}catch(t){}};var Ze={0:200,1223:204},Je=C.ajaxSettings.xhr();m.cors=!!Je&&"withCredentials"in Je,m.ajax=Je=!!Je,C.ajaxTransport((function(t){var e,n;if(m.cors||Je&&!t.crossDomain)return{send:function(o,r){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];for(s in t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest"),o)a.setRequestHeader(s,o[s]);e=function(t){return function(){e&&(e=n=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===t?a.abort():"error"===t?"number"!=typeof a.status?r(0,"error"):r(a.status,a.statusText):r(Ze[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=e(),n=a.onerror=a.ontimeout=e("error"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&i.setTimeout((function(){e&&n()}))},e=e("abort");try{a.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),C.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),C.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return C.globalEval(t),t}}}),C.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),C.ajaxTransport("script",(function(t){var e,n;if(t.crossDomain||t.scriptAttrs)return{send:function(i,o){e=C(" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      scylla.scylladb.com

      + +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/api-reference/groups/scylla.scylladb.com/nodeconfigs.html b/master/api-reference/groups/scylla.scylladb.com/nodeconfigs.html new file mode 100644 index 00000000000..cd068f4833d --- /dev/null +++ b/master/api-reference/groups/scylla.scylladb.com/nodeconfigs.html @@ -0,0 +1,2841 @@ + + + + + + + + + + + + + NodeConfig (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      NodeConfig (scylla.scylladb.com/v1alpha1)

      +
      +
      APIVersion: scylla.scylladb.com/v1alpha1
      +
      Kind: NodeConfig
      +
      PluralName: nodeconfigs
      +
      SingularName: nodeconfig
      +
      Scope: Cluster
      +
      ListKind: NodeConfigList
      +
      Served: true
      +
      Storage: true
      +
      +
      +

      Description

      +
      +
      +

      Specification

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

      kind

      string

      Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

      metadata

      object

      spec

      object

      status

      object

      +
      +

      .metadata

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      disableOptimizations

      boolean

      disableOptimizations controls if nodes matching placement requirements are going to be optimized. Turning off optimizations on already optimized Nodes does not revert changes.

      localDiskSetup

      object

      localDiskSetup contains options of automatic local disk setup.

      placement

      object

      placement contains scheduling rules for NodeConfig Pods.

      +
      +
      +
      +

      .spec.localDiskSetup

      +
      +

      Description

      +

      localDiskSetup contains options of automatic local disk setup.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      filesystems

      array (object)

      filesystems is a list of filesystem configurations.

      loopDevices

      array (object)

      loops is a list of loop device configurations.

      mounts

      array (object)

      mounts is a list of mount configuration.

      raids

      array (object)

      raids is a list of raid configurations.

      +
      +
      +
      +

      .spec.localDiskSetup.filesystems[]

      +
      +

      Description

      +

      FilesystemConfiguration specifies filesystem configuration options.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      device

      string

      device is a path to the device where the desired filesystem should be created.

      type

      string

      type is a desired filesystem type.

      +
      +
      +
      +

      .spec.localDiskSetup.loopDevices[]

      +
      +

      Description

      +

      LoopDeviceConfiguration specifies loop device configuration options.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      imagePath

      string

      imagePath specifies path on host where backing image file for loop device should be located.

      name

      string

      name specifies the name of the symlink that will point to actual loop device, created under /dev/loops/.

      size

      size specifies the size of the loop device.

      +
      +
      +
      +

      .spec.localDiskSetup.mounts[]

      +
      +

      Description

      +

      MountConfiguration specifies mount configuration options.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      device

      string

      device is path to a device that should be mounted.

      fsType

      string

      fsType specifies the filesystem on the device.

      mountPoint

      string

      mountPoint is a path where the device should be mounted at. If the mountPoint is a symlink, the mount will be set up for the target.

      unsupportedOptions

      array (string)

      unsupportedOptions is a list of mount options used during device mounting. unsupported in this field name means that we won’t support all the available options passed down using this field.

      +
      +
      +
      +

      .spec.localDiskSetup.raids[]

      +
      +

      Description

      +

      RAIDConfiguration is a configuration of a raid array.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      RAID0

      object

      RAID0 specifies RAID0 options.

      name

      string

      name specifies the name of the raid device to be created under in /dev/md/.

      type

      string

      type is a type of raid array.

      +
      +
      +
      +

      .spec.localDiskSetup.raids[].RAID0

      +
      +

      Description

      +

      RAID0 specifies RAID0 options.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      devices

      object

      devices defines which devices constitute the raid array.

      +
      +
      +
      +

      .spec.localDiskSetup.raids[].RAID0.devices

      +
      +

      Description

      +

      devices defines which devices constitute the raid array.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      modelRegex

      string

      modelRegex is a regular expression filtering devices by their model name.

      nameRegex

      string

      nameRegex is a regular expression filtering devices by their name.

      +
      +
      +
      +

      .spec.placement

      +
      +

      Description

      +

      placement contains scheduling rules for NodeConfig Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      affinity

      object

      affinity is a group of affinity scheduling rules for NodeConfig Pods.

      nodeSelector

      object

      nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node.

      tolerations

      array (object)

      tolerations is a group of tolerations NodeConfig Pods are going to have.

      +
      +
      +
      +

      .spec.placement.affinity

      +
      +

      Description

      +

      affinity is a group of affinity scheduling rules for NodeConfig Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeAffinity

      object

      Describes node affinity scheduling rules for the pod.

      podAffinity

      object

      Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

      podAntiAffinity

      object

      Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

      +
      +
      +
      +

      .spec.placement.affinity.nodeAffinity

      +
      +

      Description

      +

      Describes node affinity scheduling rules for the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      object

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +
      +

      .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preference

      object

      A node selector term, associated with the corresponding weight.

      weight

      integer

      Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

      +
      +

      Description

      +

      A node selector term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

      +
      +

      Description

      +

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeSelectorTerms

      array (object)

      Required. A list of node selector terms. The terms are ORed.

      +
      +
      +
      +

      .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

      +
      +

      Description

      +

      A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity

      +
      +

      Description

      +

      Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity

      +
      +

      Description

      +

      Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.placement.nodeSelector

      +
      +

      Description

      +

      nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.placement.tolerations[]

      +
      +

      Description

      +

      The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      effect

      string

      Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

      key

      string

      Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

      operator

      string

      Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

      tolerationSeconds

      integer

      TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

      value

      string

      Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

      +
      +
      +
      +

      .status

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      conditions

      array (object)

      conditions represents the latest available observations of current state.

      nodeStatuses

      array (object)

      nodeStatuses hold the status for each tuned node.

      observedGeneration

      integer

      observedGeneration indicates the most recent generation observed by the controller.

      +
      +
      +
      +

      .status.conditions[]

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      lastTransitionTime

      string

      lastTransitionTime is last time the condition transitioned from one status to another.

      message

      string

      message is a human-readable message indicating details about the transition.

      observedGeneration

      integer

      observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

      reason

      string

      reason is the reason for condition’s last transition.

      status

      string

      status represents the state of the condition, one of True, False, or Unknown.

      type

      string

      type is the type of the NodeConfig condition.

      +
      +
      +
      +

      .status.nodeStatuses[]

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      tunedContainers

      array (string)

      tunedNode

      boolean

      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/api-reference/groups/scylla.scylladb.com/scyllaclusters.html b/master/api-reference/groups/scylla.scylladb.com/scyllaclusters.html new file mode 100644 index 00000000000..bf5baeef13d --- /dev/null +++ b/master/api-reference/groups/scylla.scylladb.com/scyllaclusters.html @@ -0,0 +1,7440 @@ + + + + + + + + + + + + + ScyllaCluster (scylla.scylladb.com/v1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      ScyllaCluster (scylla.scylladb.com/v1)

      +
      +
      APIVersion: scylla.scylladb.com/v1
      +
      Kind: ScyllaCluster
      +
      PluralName: scyllaclusters
      +
      SingularName: scyllacluster
      +
      Scope: Namespaced
      +
      ListKind: ScyllaClusterList
      +
      Served: true
      +
      Storage: true
      +
      +
      +

      Description

      +

      ScyllaCluster defines a Scylla cluster.

      +
      +
      +

      Specification

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

      kind

      string

      Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

      metadata

      object

      spec

      object

      spec defines the desired state of this scylla cluster.

      status

      object

      status is the current status of this scylla cluster.

      +
      +

      .metadata

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec

      +
      +

      Description

      +

      spec defines the desired state of this scylla cluster.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      agentRepository

      string

      agentRepository is the repository to pull the agent image from.

      agentVersion

      string

      agentVersion indicates the version of Scylla Manager Agent to use.

      alternator

      object

      alternator designates this cluster an Alternator cluster.

      automaticOrphanedNodeCleanup

      boolean

      automaticOrphanedNodeCleanup controls if automatic orphan node cleanup should be performed.

      backups

      array (object)

      backups specifies backup tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored.

      cpuset

      boolean

      cpuset determines if the cluster will use cpu-pinning. Deprecated: cpuset is deprecated and may be ignored in the future.

      datacenter

      object

      datacenter holds a specification of a datacenter.

      developerMode

      boolean

      developerMode determines if the cluster runs in developer-mode.

      dnsDomains

      array (string)

      dnsDomains is a list of DNS domains this cluster is reachable by. These domains are used when setting up the infrastructure, like certificates. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

      exposeOptions

      object

      exposeOptions specifies options for exposing ScyllaCluster services. This field is immutable. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

      externalSeeds

      array (string)

      externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as “seeds” parameter of seed-provider.

      forceRedeploymentReason

      string

      forceRedeploymentReason can be used to force a rolling update of all racks by providing a unique string.

      genericUpgrade

      object

      genericUpgrade allows to configure behavior of generic upgrade logic.

      imagePullSecrets

      array (object)

      imagePullSecrets is an optional list of references to secrets in the same namespace used for pulling Scylla and Agent images.

      minReadySeconds

      integer

      minReadySeconds is the minimum number of seconds for which a newly created ScyllaDB node should be ready for it to be considered available. When used to control load balanced traffic, this can give the load balancer in front of a node enough time to notice that the node is ready and start forwarding traffic in time. Because it all depends on timing, the order is not guaranteed and, if possible, you should use readinessGates instead. If not provided, Operator will determine this value.

      minTerminationGracePeriodSeconds

      integer

      minTerminationGracePeriodSeconds specifies minimum duration in seconds to wait before every drained node is terminated. This gives time to potential load balancer in front of a node to notice that node is not ready anymore and stop forwarding new requests. This applies only when node is terminated gracefully. If not provided, Operator will determine this value. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

      network

      object

      network holds the networking config.

      podMetadata

      object

      podMetadata controls shared metadata for all pods created based on this spec.

      readinessGates

      array (object)

      readinessGates specifies custom readiness gates that will be evaluated for every ScyllaDB Pod readiness. It’s projected into every ScyllaDB Pod as its readinessGate. Refer to upstream documentation to learn more about readiness gates.

      repairs

      array (object)

      repairs specify repair tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored.

      repository

      string

      repository is the image repository to pull the Scylla image from.

      scyllaArgs

      string

      scyllaArgs will be appended to Scylla binary during startup. This is supported from 4.2.0 Scylla version.

      sysctls

      array (string)

      sysctls holds the sysctl properties to be applied during initialization given as a list of key=value pairs. Example: fs.aio-max-nr=232323

      version

      string

      version is a version tag of Scylla to use.

      +
      +
      +
      +

      .spec.alternator

      +
      +

      Description

      +

      alternator designates this cluster an Alternator cluster.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      insecureDisableAuthorization

      boolean

      insecureDisableAuthorization disables Alternator authorization. If not specified, the authorization is enabled. For backwards compatibility the authorization is disabled when this field is not specified and a manual port is used.

      insecureEnableHTTP

      boolean

      insecureEnableHTTP enables serving Alternator traffic also on insecure HTTP port.

      port

      integer

      port is the port number used to bind the Alternator API. Deprecated: port is deprecated and may be ignored in the future. Please make sure to avoid using hostNetworking and work with standard Kubernetes concepts like Services.

      servingCertificate

      object

      servingCertificate references a TLS certificate for serving secure traffic.

      writeIsolation

      string

      writeIsolation indicates the isolation level.

      +
      +
      +
      +

      .spec.alternator.servingCertificate

      +
      +

      Description

      +

      servingCertificate references a TLS certificate for serving secure traffic.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      operatorManagedOptions

      object

      operatorManagedOptions specifies options for certificates manged by the operator.

      type

      string

      type determines the source of this certificate.

      userManagedOptions

      object

      userManagedOptions specifies options for certificates manged by users.

      +
      +
      +
      +

      .spec.alternator.servingCertificate.operatorManagedOptions

      +
      +

      Description

      +

      operatorManagedOptions specifies options for certificates manged by the operator.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      additionalDNSNames

      array (string)

      additionalDNSNames represents external DNS names that the certificates should be signed for.

      additionalIPAddresses

      array (string)

      additionalIPAddresses represents external IP addresses that the certificates should be signed for.

      +
      +
      +
      +

      .spec.alternator.servingCertificate.userManagedOptions

      +
      +

      Description

      +

      userManagedOptions specifies options for certificates manged by users.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      secretName

      string

      secretName references a kubernetes.io/tls type secret containing the TLS cert and key.

      +
      +
      +
      +

      .spec.backups[]

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      cron

      string

      cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s].

      dc

      array (string)

      dc is a list of datacenter glob patterns, e.g. ‘dc1,!otherdc*’ used to specify the DCs to include or exclude from backup.

      interval

      string

      interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead.

      keyspace

      array (string)

      keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

      location

      array (string)

      location is a list of backup locations in the format [<dc>:]<provider>:<name> ex. s3:my-bucket. The <dc>: part is optional and is only needed when different datacenters are being used to upload data to different locations. <name> must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden. The only supported storage <provider> at the moment are s3 and gcs.

      name

      string

      name specifies the name of a task.

      numRetries

      integer

      numRetries indicates how many times a scheduled task will be retried before failing.

      rateLimit

      array (string)

      rateLimit is a list of megabytes (MiB) per second rate limits expressed in the format [<dc>:]<limit>. The <dc>: part is optional and only needed when different datacenters need different upload limits. Set to 0 for no limit (default 100).

      retention

      integer

      retention is the number of backups which are to be stored.

      snapshotParallel

      array (string)

      snapshotParallel is a list of snapshot parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set, the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

      startDate

      string

      startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

      timezone

      string

      timezone specifies the timezone of cron field.

      uploadParallel

      array (string)

      uploadParallel is a list of upload parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

      +
      +
      +
      +

      .spec.datacenter

      +
      +

      Description

      +

      datacenter holds a specification of a datacenter.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      name is the name of the scylla datacenter. Used in the cassandra-rackdc.properties file.

      racks

      array (object)

      racks specify the racks in the datacenter.

      +
      +
      +
      +

      .spec.datacenter.racks[]

      +
      +

      Description

      +

      RackSpec is the desired state for a Scylla Rack.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      agentResources

      object

      agentResources specify the resources for the Agent container.

      agentVolumeMounts

      array (object)

      AgentVolumeMounts to be added to Agent container.

      members

      integer

      members is the number of Scylla instances in this rack.

      name

      string

      name is the name of the Scylla Rack. Used in the cassandra-rackdc.properties file.

      placement

      object

      placement describes restrictions for the nodes Scylla is scheduled on.

      resources

      object

      resources the Scylla container will use.

      scyllaAgentConfig

      string

      Scylla config map name to customize scylla manager agent

      scyllaConfig

      string

      Scylla config map name to customize scylla.yaml

      storage

      object

      storage describes the underlying storage that Scylla will consume.

      volumeMounts

      array (object)

      VolumeMounts to be added to Scylla container.

      volumes

      array (object)

      Volumes added to Scylla Pod.

      +
      +
      +
      +

      .spec.datacenter.racks[].agentResources

      +
      +

      Description

      +

      agentResources specify the resources for the Agent container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claims

      array (object)

      +
      Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

      This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

      +
      +
      +

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.datacenter.racks[].agentResources.claims[]

      +
      +

      Description

      +

      ResourceClaim references one entry in PodSpec.ResourceClaims.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

      +
      +
      +
      +

      .spec.datacenter.racks[].agentResources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].agentResources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].agentVolumeMounts[]

      +
      +

      Description

      +

      VolumeMount describes a mounting of a Volume within a container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      mountPath

      string

      Path within the container at which the volume should be mounted. Must not contain ‘:’.

      mountPropagation

      string

      mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

      name

      string

      This must match the Name of a Volume.

      readOnly

      boolean

      Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

      subPath

      string

      Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

      subPathExpr

      string

      Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement

      +
      +

      Description

      +

      placement describes restrictions for the nodes Scylla is scheduled on.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeAffinity

      object

      nodeAffinity describes node affinity scheduling rules for the pod.

      podAffinity

      object

      podAffinity describes pod affinity scheduling rules.

      podAntiAffinity

      object

      podAntiAffinity describes pod anti-affinity scheduling rules.

      tolerations

      array (object)

      tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.nodeAffinity

      +
      +

      Description

      +

      nodeAffinity describes node affinity scheduling rules for the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      object

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preference

      object

      A node selector term, associated with the corresponding weight.

      weight

      integer

      Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

      +
      +

      Description

      +

      A node selector term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

      +
      +

      Description

      +

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeSelectorTerms

      array (object)

      Required. A list of node selector terms. The terms are ORed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

      +
      +

      Description

      +

      A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity

      +
      +

      Description

      +

      podAffinity describes pod affinity scheduling rules.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity

      +
      +

      Description

      +

      podAntiAffinity describes pod anti-affinity scheduling rules.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].placement.tolerations[]

      +
      +

      Description

      +

      The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      effect

      string

      Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

      key

      string

      Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

      operator

      string

      Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

      tolerationSeconds

      integer

      TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

      value

      string

      Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

      +
      +
      +
      +

      .spec.datacenter.racks[].resources

      +
      +

      Description

      +

      resources the Scylla container will use.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claims

      array (object)

      +
      Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

      This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

      +
      +
      +

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.datacenter.racks[].resources.claims[]

      +
      +

      Description

      +

      ResourceClaim references one entry in PodSpec.ResourceClaims.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

      +
      +
      +
      +

      .spec.datacenter.racks[].resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].storage

      +
      +

      Description

      +

      storage describes the underlying storage that Scylla will consume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      capacity

      string

      capacity describes the requested size of each persistent volume.

      metadata

      object

      metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

      storageClassName

      string

      storageClassName is the name of a storageClass to request.

      +
      +
      +
      +

      .spec.datacenter.racks[].storage.metadata

      +
      +

      Description

      +

      metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      annotations

      object

      annotations is a custom key value map that gets merged with managed object annotations.

      labels

      object

      labels is a custom key value map that gets merged with managed object labels.

      +
      +
      +
      +

      .spec.datacenter.racks[].storage.metadata.annotations

      +
      +

      Description

      +

      annotations is a custom key value map that gets merged with managed object annotations.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].storage.metadata.labels

      +
      +

      Description

      +

      labels is a custom key value map that gets merged with managed object labels.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].volumeMounts[]

      +
      +

      Description

      +

      VolumeMount describes a mounting of a Volume within a container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      mountPath

      string

      Path within the container at which the volume should be mounted. Must not contain ‘:’.

      mountPropagation

      string

      mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

      name

      string

      This must match the Name of a Volume.

      readOnly

      boolean

      Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

      subPath

      string

      Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

      subPathExpr

      string

      Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[]

      +
      +

      Description

      +

      Volume represents a named volume in a pod that may be accessed by any container in the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      awsElasticBlockStore

      object

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      azureDisk

      object

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      azureFile

      object

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      cephfs

      object

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      cinder

      object

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      configMap

      object

      configMap represents a configMap that should populate this volume

      csi

      object

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      downwardAPI

      object

      downwardAPI represents downward API about the pod that should populate this volume

      emptyDir

      object

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      ephemeral

      object

      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +

      fc

      object

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      flexVolume

      object

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      flocker

      object

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      gcePersistentDisk

      object

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      gitRepo

      object

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      glusterfs

      object

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      hostPath

      object

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      iscsi

      object

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      name

      string

      name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      nfs

      object

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      persistentVolumeClaim

      object

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      photonPersistentDisk

      object

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      portworxVolume

      object

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      projected

      object

      projected items for all in one resources secrets, configmaps, and downward API

      quobyte

      object

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      rbd

      object

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      scaleIO

      object

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      secret

      object

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      storageos

      object

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      vsphereVolume

      object

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].awsElasticBlockStore

      +
      +

      Description

      +

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty).

      readOnly

      boolean

      readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      volumeID

      string

      volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].azureDisk

      +
      +

      Description

      +

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      cachingMode

      string

      cachingMode is the Host Caching mode: None, Read Only, Read Write.

      diskName

      string

      diskName is the Name of the data disk in the blob storage

      diskURI

      string

      diskURI is the URI of data disk in the blob storage

      fsType

      string

      fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      kind

      string

      kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].azureFile

      +
      +

      Description

      +

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretName

      string

      secretName is the name of secret that contains Azure Storage Account Name and Key

      shareName

      string

      shareName is the azure share Name

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].cephfs

      +
      +

      Description

      +

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      monitors

      array (string)

      monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      path

      string

      path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretFile

      string

      secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretRef

      object

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      user

      string

      user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].cephfs.secretRef

      +
      +

      Description

      +

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].cinder

      +
      +

      Description

      +

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      secretRef

      object

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      volumeID

      string

      volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].cinder.secretRef

      +
      +

      Description

      +

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].configMap

      +
      +

      Description

      +

      configMap represents a configMap that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].csi

      +
      +

      Description

      +

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.

      fsType

      string

      fsType to mount. Ex. “ext4”, “xfs”, “ntfs”. If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.

      nodePublishSecretRef

      object

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      readOnly

      boolean

      readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).

      volumeAttributes

      object

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef

      +
      +

      Description

      +

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].csi.volumeAttributes

      +
      +

      Description

      +

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].downwardAPI

      +
      +

      Description

      +

      downwardAPI represents downward API about the pod that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      Items is a list of downward API volume file

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].emptyDir

      +
      +

      Description

      +

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      medium

      string

      medium represents what type of storage medium should back this directory. The default is “” which means to use the node’s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      sizeLimit

      sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral

      +
      +

      Description

      +
      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      volumeClaimTemplate

      object

      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate

      +
      +

      Description

      +
      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      metadata

      object

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      spec

      object

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata

      +
      +

      Description

      +

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec

      +
      +

      Description

      +

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      accessModes

      array (string)

      accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

      dataSource

      object

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      dataSourceRef

      object

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      resources

      object

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      selector

      object

      selector is a label query over volumes to consider for binding.

      storageClassName

      string

      storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

      volumeAttributesClassName

      string

      volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

      volumeMode

      string

      volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

      volumeName

      string

      volumeName is the binding reference to the PersistentVolume backing this claim.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource

      +
      +

      Description

      +

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef

      +
      +

      Description

      +

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      namespace

      string

      Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources

      +
      +

      Description

      +

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector

      +
      +

      Description

      +

      selector is a label query over volumes to consider for binding.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].fc

      +
      +

      Description

      +

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine

      lun

      integer

      lun is Optional: FC target lun number

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      targetWWNs

      array (string)

      targetWWNs is Optional: FC target worldwide names (WWNs)

      wwids

      array (string)

      wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].flexVolume

      +
      +

      Description

      +

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the driver to use for this volume.

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. The default filesystem depends on FlexVolume script.

      options

      object

      options is Optional: this field holds extra command options if any.

      readOnly

      boolean

      readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].flexVolume.options

      +
      +

      Description

      +

      options is Optional: this field holds extra command options if any.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].flexVolume.secretRef

      +
      +

      Description

      +

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].flocker

      +
      +

      Description

      +

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      datasetName

      string

      datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated

      datasetUUID

      string

      datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].gcePersistentDisk

      +
      +

      Description

      +

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      pdName

      string

      pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].gitRepo

      +
      +

      Description

      +

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      directory

      string

      directory is the target directory name. Must not contain or start with ‘..’. If ‘.’ is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.

      repository

      string

      repository is the URL

      revision

      string

      revision is the commit hash for the specified revision.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].glusterfs

      +
      +

      Description

      +

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      endpoints

      string

      endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      path

      string

      path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      readOnly

      boolean

      readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].hostPath

      +
      +

      Description

      +

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      type

      string

      type for HostPath Volume Defaults to “” More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].iscsi

      +
      +

      Description

      +

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      chapAuthDiscovery

      boolean

      chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication

      chapAuthSession

      boolean

      chapAuthSession defines whether support iSCSI Session CHAP authentication

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine

      initiatorName

      string

      initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

      iqn

      string

      iqn is the target iSCSI Qualified Name.

      iscsiInterface

      string

      iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to ‘default’ (tcp).

      lun

      integer

      lun represents iSCSI Target Lun number.

      portals

      array (string)

      portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

      secretRef

      object

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      targetPortal

      string

      targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].iscsi.secretRef

      +
      +

      Description

      +

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].nfs

      +
      +

      Description

      +

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      readOnly

      boolean

      readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      server

      string

      server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].persistentVolumeClaim

      +
      +

      Description

      +

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claimName

      string

      claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      readOnly

      boolean

      readOnly Will force the ReadOnly setting in VolumeMounts. Default false.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].photonPersistentDisk

      +
      +

      Description

      +

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      pdID

      string

      pdID is the ID that identifies Photon Controller persistent disk

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].portworxVolume

      +
      +

      Description

      +

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      volumeID

      string

      volumeID uniquely identifies a Portworx volume

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected

      +
      +

      Description

      +

      projected items for all in one resources secrets, configmaps, and downward API

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      sources

      array (object)

      sources is the list of volume projections

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[]

      +
      +

      Description

      +

      Projection that may be projected along with other supported volume types

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      clusterTrustBundle

      object

      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +

      configMap

      object

      configMap information about the configMap data to project

      downwardAPI

      object

      downwardAPI information about the downwardAPI data to project

      secret

      object

      secret information about the secret data to project

      serviceAccountToken

      object

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle

      +
      +

      Description

      +
      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      name

      string

      Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.

      optional

      boolean

      If true, don’t block pod startup if the referenced ClusterTrustBundle(s) aren’t available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.

      path

      string

      Relative path from the volume root to write the bundle.

      signerName

      string

      Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector

      +
      +

      Description

      +

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].configMap

      +
      +

      Description

      +

      configMap information about the configMap data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI

      +
      +

      Description

      +

      downwardAPI information about the downwardAPI data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      Items is a list of DownwardAPIVolume file

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].secret

      +
      +

      Description

      +

      secret information about the secret data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional field specify whether the Secret or its key must be defined

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken

      +
      +

      Description

      +

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      audience

      string

      audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.

      expirationSeconds

      integer

      expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.

      path

      string

      path is the path relative to the mount point of the file to project the token into.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].quobyte

      +
      +

      Description

      +

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      group

      string

      group to map volume access to Default is no group

      readOnly

      boolean

      readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

      registry

      string

      registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

      tenant

      string

      tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin

      user

      string

      user to map volume access to Defaults to serivceaccount user

      volume

      string

      volume is a string that references an already created Quobyte volume by name.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].rbd

      +
      +

      Description

      +

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine

      image

      string

      image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      keyring

      string

      keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      monitors

      array (string)

      monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      pool

      string

      pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      secretRef

      object

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      user

      string

      user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].rbd.secretRef

      +
      +

      Description

      +

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].scaleIO

      +
      +

      Description

      +

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Default is “xfs”.

      gateway

      string

      gateway is the host address of the ScaleIO API Gateway.

      protectionDomain

      string

      protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      sslEnabled

      boolean

      sslEnabled Flag enable/disable SSL communication with Gateway, default false

      storageMode

      string

      storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.

      storagePool

      string

      storagePool is the ScaleIO Storage Pool associated with the protection domain.

      system

      string

      system is the name of the storage system as configured in ScaleIO.

      volumeName

      string

      volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].scaleIO.secretRef

      +
      +

      Description

      +

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].secret

      +
      +

      Description

      +

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      optional

      boolean

      optional field specify whether the Secret or its keys must be defined

      secretName

      string

      secretName is the name of the secret in the pod’s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].storageos

      +
      +

      Description

      +

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      volumeName

      string

      volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.

      volumeNamespace

      string

      volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod’s namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to “default” if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].storageos.secretRef

      +
      +

      Description

      +

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.datacenter.racks[].volumes[].vsphereVolume

      +
      +

      Description

      +

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      storagePolicyID

      string

      storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

      storagePolicyName

      string

      storagePolicyName is the storage Policy Based Management (SPBM) profile name.

      volumePath

      string

      volumePath is the path that identifies vSphere volume vmdk

      +
      +
      +
      +

      .spec.exposeOptions

      +
      +

      Description

      +

      exposeOptions specifies options for exposing ScyllaCluster services. This field is immutable. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      broadcastOptions

      object

      BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

      cql

      object

      cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

      nodeService

      object

      nodeService controls properties of Service dedicated for each ScyllaCluster node.

      +
      +
      +
      +

      .spec.exposeOptions.broadcastOptions

      +
      +

      Description

      +

      BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      clients

      object

      clients specifies options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

      nodes

      object

      nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

      +
      +
      +
      +

      .spec.exposeOptions.broadcastOptions.clients

      +
      +

      Description

      +

      clients specifies options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podIP

      object

      podIP holds options related to Pod IP address.

      type

      string

      type of the address that is broadcasted.

      +
      +
      +
      +

      .spec.exposeOptions.broadcastOptions.clients.podIP

      +
      +

      Description

      +

      podIP holds options related to Pod IP address.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      source

      string

      sourceType specifies source of the Pod IP.

      +
      +
      +
      +

      .spec.exposeOptions.broadcastOptions.nodes

      +
      +

      Description

      +

      nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podIP

      object

      podIP holds options related to Pod IP address.

      type

      string

      type of the address that is broadcasted.

      +
      +
      +
      +

      .spec.exposeOptions.broadcastOptions.nodes.podIP

      +
      +

      Description

      +

      podIP holds options related to Pod IP address.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      source

      string

      sourceType specifies source of the Pod IP.

      +
      +
      +
      +

      .spec.exposeOptions.cql

      +
      +

      Description

      +

      cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      ingress

      object

      ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

      +
      +
      +
      +

      .spec.exposeOptions.cql.ingress

      +
      +

      Description

      +

      ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      annotations

      object

      annotations is a custom key value map that gets merged with managed object annotations.

      disabled

      boolean

      disabled controls if Ingress object creation is disabled. Unless disabled, there is an Ingress objects created for every Scylla node. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

      ingressClassName

      string

      ingressClassName specifies Ingress class name. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

      labels

      object

      labels is a custom key value map that gets merged with managed object labels.

      +
      +
      +
      +

      .spec.exposeOptions.cql.ingress.annotations

      +
      +

      Description

      +

      annotations is a custom key value map that gets merged with managed object annotations.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.exposeOptions.cql.ingress.labels

      +
      +

      Description

      +

      labels is a custom key value map that gets merged with managed object labels.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.exposeOptions.nodeService

      +
      +

      Description

      +

      nodeService controls properties of Service dedicated for each ScyllaCluster node.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      allocateLoadBalancerNodePorts

      boolean

      allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

      annotations

      object

      annotations is a custom key value map that gets merged with managed object annotations.

      externalTrafficPolicy

      string

      externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

      internalTrafficPolicy

      string

      internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

      labels

      object

      labels is a custom key value map that gets merged with managed object labels.

      loadBalancerClass

      string

      loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

      type

      string

      type is the Kubernetes Service type.

      +
      +
      +
      +

      .spec.exposeOptions.nodeService.annotations

      +
      +

      Description

      +

      annotations is a custom key value map that gets merged with managed object annotations.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.exposeOptions.nodeService.labels

      +
      +

      Description

      +

      labels is a custom key value map that gets merged with managed object labels.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.genericUpgrade

      +
      +

      Description

      +

      genericUpgrade allows to configure behavior of generic upgrade logic.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      failureStrategy

      string

      failureStrategy specifies which logic is executed when upgrade failure happens. Currently only Retry is supported.

      pollInterval

      string

      pollInterval specifies how often upgrade logic polls on state updates. Increasing this value should lower number of requests sent to apiserver, but it may affect overall time spent during upgrade. DEPRECATED.

      +
      +
      +
      +

      .spec.imagePullSecrets[]

      +
      +

      Description

      +

      LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.network

      +
      +

      Description

      +

      network holds the networking config.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      dnsPolicy

      string

      dnsPolicy defines how a pod’s DNS will be configured.

      hostNetworking

      boolean

      hostNetworking determines if scylla uses the host’s network namespace. Setting this option avoids going through Kubernetes SDN and exposes scylla on node’s IP. Deprecated: hostNetworking is deprecated and may be ignored in the future.

      +
      +
      +
      +

      .spec.podMetadata

      +
      +

      Description

      +

      podMetadata controls shared metadata for all pods created based on this spec.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      annotations

      object

      annotations is a custom key value map that gets merged with managed object annotations.

      labels

      object

      labels is a custom key value map that gets merged with managed object labels.

      +
      +
      +
      +

      .spec.podMetadata.annotations

      +
      +

      Description

      +

      annotations is a custom key value map that gets merged with managed object annotations.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.podMetadata.labels

      +
      +

      Description

      +

      labels is a custom key value map that gets merged with managed object labels.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.readinessGates[]

      +
      +

      Description

      +

      PodReadinessGate contains the reference to a pod condition

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      conditionType

      string

      ConditionType refers to a condition in the pod’s condition list with matching type.

      +
      +
      +
      +

      .spec.repairs[]

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      cron

      string

      cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s].

      dc

      array (string)

      dc is a list of datacenter glob patterns, e.g. ‘dc1’, ‘!otherdc*’ used to specify the DCs to include or exclude from backup.

      failFast

      boolean

      failFast indicates if a repair should be stopped on first error.

      host

      string

      host specifies a host to repair. If empty, all hosts are repaired.

      intensity

      string

      intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs). Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs. Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume. For Scylla clusters that do not support row-level repair, intensity can be a decimal between (0,1). In that case it specifies percent of shards that can be repaired in parallel on a repair master node. For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1.

      interval

      string

      interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead.

      keyspace

      array (string)

      keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

      name

      string

      name specifies the name of a task.

      numRetries

      integer

      numRetries indicates how many times a scheduled task will be retried before failing.

      parallel

      integer

      parallel is the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used. The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes. The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2.

      smallTableThreshold

      string

      smallTableThreshold enable small table optimization for tables of size lower than given threshold. Supported units [B, MiB, GiB, TiB].

      startDate

      string

      startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

      timezone

      string

      timezone specifies the timezone of cron field.

      +
      +
      +
      +

      .status

      +
      +

      Description

      +

      status is the current status of this scylla cluster.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      availableMembers

      integer

      availableMembers is the number of ScyllaDB members in all racks that are available.

      backups

      array (object)

      backups reflects status of backup tasks.

      conditions

      array (object)

      conditions hold conditions describing ScyllaCluster state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False.

      managerId

      string

      managerId contains ID under which cluster was registered in Scylla Manager.

      members

      integer

      members is the number of ScyllaDB members in all racks.

      observedGeneration

      integer

      observedGeneration is the most recent generation observed for this ScyllaCluster. It corresponds to the ScyllaCluster’s generation, which is updated on mutation by the API Server.

      rackCount

      integer

      rackCount is the number of ScyllaDB racks in this cluster.

      racks

      object

      racks reflect status of cluster racks.

      readyMembers

      integer

      readyMembers is the number of ScyllaDB members in all racks that are ready.

      repairs

      array (object)

      repairs reflects status of repair tasks.

      upgrade

      object

      upgrade reflects state of ongoing upgrade procedure.

      +
      +
      +
      +

      .status.backups[]

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      cron

      string

      cron reflects the task schedule as a cron expression.

      dc

      array (string)

      dc reflects a list of datacenter glob patterns, e.g. ‘dc1,!otherdc*’ used to specify the DCs to include or exclude from backup.

      error

      string

      error holds the task error, if any.

      id

      string

      id reflects identification number of the repair task.

      interval

      string

      interval reflects a task schedule interval.

      keyspace

      array (string)

      keyspace reflects a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

      location

      array (string)

      location reflects a list of backup locations in the format [<dc>:]<provider>:<name> ex. s3:my-bucket.

      name

      string

      name reflects the name of a task.

      numRetries

      integer

      numRetries reflects how many times a scheduled task will be retried before failing.

      rateLimit

      array (string)

      rateLimit reflects a list of megabytes (MiB) per second rate limits expressed in the format [<dc>:]<limit>.

      retention

      integer

      retention reflects the number of backups which are to be stored.

      snapshotParallel

      array (string)

      snapshotParallel reflects a list of snapshot parallelism limits in the format [<dc>:]<limit>.

      startDate

      string

      startDate reflects the task start date expressed in the RFC3339 format

      timezone

      string

      timezone reflects the timezone of cron field.

      uploadParallel

      array (string)

      uploadParallel reflects a list of upload parallelism limits in the format [<dc>:]<limit>.

      +
      +
      +
      +

      .status.conditions[]

      +
      +

      Description

      +
      +
      Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example,

      type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:”conditions,omitempty” patchStrategy:”merge” patchMergeKey:”type” protobuf:”bytes,1,rep,name=conditions” +// other fields }

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      lastTransitionTime

      string

      lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

      message

      string

      message is a human readable message indicating details about the transition. This may be an empty string.

      observedGeneration

      integer

      observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

      reason

      string

      reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

      status

      string

      status of the condition, one of True, False, Unknown.

      type

      string

      type of condition in CamelCase or in foo.example.com/CamelCase. — Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

      +
      +
      +
      +

      .status.racks

      +
      +

      Description

      +

      racks reflect status of cluster racks.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .status.repairs[]

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      cron

      string

      cron reflects the task schedule as a cron expression.

      dc

      array (string)

      dc reflects a list of datacenter glob patterns, e.g. ‘dc1’, ‘!otherdc*’ used to specify the DCs to include or exclude from repair.

      error

      string

      error holds the task error, if any.

      failFast

      boolean

      failFast indicates if a repair should be stopped on first error.

      host

      string

      host reflects a host to repair.

      id

      string

      id reflects identification number of the repair task.

      intensity

      string

      intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1.

      interval

      string

      interval reflects a task schedule interval.

      keyspace

      array (string)

      keyspace reflects a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

      name

      string

      name reflects the name of a task.

      numRetries

      integer

      numRetries reflects how many times a scheduled task will be retried before failing.

      parallel

      integer

      parallel reflects the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas).

      smallTableThreshold

      string

      smallTableThreshold reflects whether small table optimization for tables, of size lower than given threshold, are enabled.

      startDate

      string

      startDate reflects the task start date expressed in the RFC3339 format

      timezone

      string

      timezone reflects the timezone of cron field.

      +
      +
      +
      +

      .status.upgrade

      +
      +

      Description

      +

      upgrade reflects state of ongoing upgrade procedure.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      currentNode

      string

      currentNode node under upgrade. DEPRECATED.

      currentRack

      string

      currentRack rack under upgrade. DEPRECATED.

      dataSnapshotTag

      string

      dataSnapshotTag is the snapshot tag of data keyspaces.

      fromVersion

      string

      fromVersion reflects from which version ScyllaCluster is being upgraded.

      state

      string

      state reflects current upgrade state.

      systemSnapshotTag

      string

      systemSnapshotTag is the snapshot tag of system keyspaces.

      toVersion

      string

      toVersion reflects to which version ScyllaCluster is being upgraded.

      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/api-reference/groups/scylla.scylladb.com/scylladbdatacenters.html b/master/api-reference/groups/scylla.scylladb.com/scylladbdatacenters.html new file mode 100644 index 00000000000..bb30d1d3dd7 --- /dev/null +++ b/master/api-reference/groups/scylla.scylladb.com/scylladbdatacenters.html @@ -0,0 +1,25109 @@ + + + + + + + + + + + + + ScyllaDBDatacenter (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      ScyllaDBDatacenter (scylla.scylladb.com/v1alpha1)

      +
      +
      APIVersion: scylla.scylladb.com/v1alpha1
      +
      Kind: ScyllaDBDatacenter
      +
      PluralName: scylladbdatacenters
      +
      SingularName: scylladbdatacenter
      +
      Scope: Namespaced
      +
      ListKind: ScyllaDBDatacenterList
      +
      Served: true
      +
      Storage: true
      +
      +
      +

      Description

      +

      ScyllaDBDatacenter defines a monitoring instance for ScyllaDB clusters.

      +
      +
      +

      Specification

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

      kind

      string

      Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

      metadata

      object

      spec

      object

      spec defines the desired state of this ScyllaDBDatacenter.

      status

      object

      status specifies the current status of this ScyllaDBDatacenter.

      +
      +

      .metadata

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec

      +
      +

      Description

      +

      spec defines the desired state of this ScyllaDBDatacenter.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      clusterName

      string

      clusterName specifies the name of the ScyllaDB cluster. When joining two DCs, their cluster name must match. This field is immutable.

      datacenterName

      string

      datacenterName specifies the name of the ScyllaDB datacenter. Used as datacenter name in GossipingPropertyFileSnitch. If empty, it’s taken from the ‘scylladbdatacenter.metadata.name’.

      disableAutomaticOrphanedNodeReplacement

      boolean

      disableAutomaticOrphanedNodeReplacement controls if automatic orphan node replacement should be disabled.

      dnsDomains

      array (string)

      dnsDomains specifies a list of DNS domains this cluster is reachable by. These domains are used when setting up the infrastructure, like certificates.

      dnsPolicy

      string

      dnsPolicy defines how a pod’s DNS will be configured.

      exposeOptions

      object

      exposeOptions specifies parameters related to exposing ScyllaDBDatacenter backends.

      forceRedeploymentReason

      string

      forceRedeploymentReason specifies the latest redeployment reason. Can be used to force a rolling restart of all racks in this DC by providing a unique string.

      imagePullSecrets

      array (object)

      imagePullSecrets is an optional list of references to secrets in the same namespace used for pulling any images used by this spec.

      metadata

      object

      metadata controls shared metadata for all pods created based on this spec.

      minReadySeconds

      integer

      minReadySeconds specifies the minimum number of seconds for which a newly created ScyllaDB node should be ready for it to be considered available. When used to control load balanced traffic, this can give the load balancer in front of a node enough time to notice that the node is ready and start forwarding traffic in time. Because it all depends on timing, the order is not guaranteed and, if possible, you should use readinessGates instead. If not provided, Operator will determine this value.

      minTerminationGracePeriodSeconds

      integer

      minTerminationGracePeriodSeconds specifies minimum duration in seconds to wait before every drained node is terminated. This gives time to potential load balancer in front of a node to notice that node is not ready anymore and stop forwarding new requests. This applies only when node is terminated gracefully. If not provided, Operator will determine this value. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

      rackTemplate

      object

      rackTemplate provides a template for every rack. Every rack inherits properties specified in the template, unless it’s overwritten on the rack level.

      racks

      array (object)

      racks specify the racks in the datacenter.

      readinessGates

      array (object)

      readinessGates specifies custom readiness gates that will be evaluated for every ScyllaDB Pod readiness. It’s projected into every ScyllaDB Pod as its readinessGate. Refer to upstream documentation to learn more about readiness gates.

      scyllaDB

      object

      scyllaDB holds a specification of ScyllaDB.

      scyllaDBManagerAgent

      object

      scyllaDBManagerAgent holds a specification of ScyllaDB Manager Agent.

      +
      +
      +
      +

      .spec.exposeOptions

      +
      +

      Description

      +

      exposeOptions specifies parameters related to exposing ScyllaDBDatacenter backends.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      broadcastOptions

      object

      BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

      cql

      object

      cql specifies expose options for CQL SSL backend.

      nodeService

      object

      nodeService controls properties of Service dedicated for each ScyllaDBDatacenter node.

      +
      +
      +
      +

      .spec.exposeOptions.broadcastOptions

      +
      +

      Description

      +

      BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      clients

      object

      clients specify options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

      nodes

      object

      nodes specify options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

      +
      +
      +
      +

      .spec.exposeOptions.broadcastOptions.clients

      +
      +

      Description

      +

      clients specify options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podIP

      object

      podIP holds options related to Pod IP address.

      type

      string

      type specifies the address type that is broadcasted.

      +
      +
      +
      +

      .spec.exposeOptions.broadcastOptions.clients.podIP

      +
      +

      Description

      +

      podIP holds options related to Pod IP address.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      source

      string

      sourceType specifies source of the Pod IP.

      +
      +
      +
      +

      .spec.exposeOptions.broadcastOptions.nodes

      +
      +

      Description

      +

      nodes specify options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podIP

      object

      podIP holds options related to Pod IP address.

      type

      string

      type specifies the address type that is broadcasted.

      +
      +
      +
      +

      .spec.exposeOptions.broadcastOptions.nodes.podIP

      +
      +

      Description

      +

      podIP holds options related to Pod IP address.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      source

      string

      sourceType specifies source of the Pod IP.

      +
      +
      +
      +

      .spec.exposeOptions.cql

      +
      +

      Description

      +

      cql specifies expose options for CQL SSL backend.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      ingress

      object

      ingress specifies an Ingress configuration options. If provided and enabled, Ingress objects routing to CQL SSL port are generated for each ScyllaDB node with the following options.

      +
      +
      +
      +

      .spec.exposeOptions.cql.ingress

      +
      +

      Description

      +

      ingress specifies an Ingress configuration options. If provided and enabled, Ingress objects routing to CQL SSL port are generated for each ScyllaDB node with the following options.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      annotations

      object

      annotations specify a custom key value map that gets merged with managed object annotations.

      ingressClassName

      string

      ingressClassName specifies Ingress class name.

      labels

      object

      labels specify a custom key value map that gets merged with managed object labels.

      +
      +
      +
      +

      .spec.exposeOptions.cql.ingress.annotations

      +
      +

      Description

      +

      annotations specify a custom key value map that gets merged with managed object annotations.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.exposeOptions.cql.ingress.labels

      +
      +

      Description

      +

      labels specify a custom key value map that gets merged with managed object labels.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.exposeOptions.nodeService

      +
      +

      Description

      +

      nodeService controls properties of Service dedicated for each ScyllaDBDatacenter node.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      allocateLoadBalancerNodePorts

      boolean

      allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

      annotations

      object

      annotations specify a custom key value map that gets merged with managed object annotations.

      externalTrafficPolicy

      string

      externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

      internalTrafficPolicy

      string

      internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

      labels

      object

      labels specify a custom key value map that gets merged with managed object labels.

      loadBalancerClass

      string

      loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

      type

      string

      type specifies the Kubernetes Service type.

      +
      +
      +
      +

      .spec.exposeOptions.nodeService.annotations

      +
      +

      Description

      +

      annotations specify a custom key value map that gets merged with managed object annotations.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.exposeOptions.nodeService.labels

      +
      +

      Description

      +

      labels specify a custom key value map that gets merged with managed object labels.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.imagePullSecrets[]

      +
      +

      Description

      +

      LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.metadata

      +
      +

      Description

      +

      metadata controls shared metadata for all pods created based on this spec.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      annotations

      object

      annotations specify a custom key value map that gets merged with managed object annotations.

      labels

      object

      labels specify a custom key value map that gets merged with managed object labels.

      +
      +
      +
      +

      .spec.metadata.annotations

      +
      +

      Description

      +

      annotations specify a custom key value map that gets merged with managed object annotations.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.metadata.labels

      +
      +

      Description

      +

      labels specify a custom key value map that gets merged with managed object labels.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate

      +
      +

      Description

      +

      rackTemplate provides a template for every rack. Every rack inherits properties specified in the template, unless it’s overwritten on the rack level.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      nodes

      integer

      nodes specify the desired number of nodes in rack.

      placement

      object

      placement describes restrictions for the nodes ScyllaDB is scheduled on.

      scyllaDB

      object

      scyllaDB specifies ScyllaDB properties for this rack. These override the settings set on Datacenter level.

      scyllaDBManagerAgent

      object

      scyllaDBManagerAgent specifies ScyllaDB Manager Agent properties for this rack. These override the settings set on Datacenter level.

      topologyLabelSelector

      object

      topologyLabelSelector specifies a label selector which will be used to target nodes at specified topology constraints. Datacenter topologyLabelSelector is merged with rack topologyLabelSelector and then converted into nodeAffinity targeting nodes having specified topology.

      +
      +
      +
      +

      .spec.rackTemplate.placement

      +
      +

      Description

      +

      placement describes restrictions for the nodes ScyllaDB is scheduled on.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeAffinity

      object

      nodeAffinity describes node affinity scheduling rules for the Pod.

      podAffinity

      object

      podAffinity describes Pod affinity scheduling rules.

      podAntiAffinity

      object

      podAntiAffinity describes Pod anti-affinity scheduling rules.

      tolerations

      array (object)

      tolerations describe Pod toleration rules. This allows the Pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

      +
      +
      +
      +

      .spec.rackTemplate.placement.nodeAffinity

      +
      +

      Description

      +

      nodeAffinity describes node affinity scheduling rules for the Pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      object

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +
      +

      .spec.rackTemplate.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preference

      object

      A node selector term, associated with the corresponding weight.

      weight

      integer

      Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.rackTemplate.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

      +
      +

      Description

      +

      A node selector term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.rackTemplate.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

      +
      +

      Description

      +

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeSelectorTerms

      array (object)

      Required. A list of node selector terms. The terms are ORed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

      +
      +

      Description

      +

      A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.rackTemplate.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity

      +
      +

      Description

      +

      podAffinity describes Pod affinity scheduling rules.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity

      +
      +

      Description

      +

      podAntiAffinity describes Pod anti-affinity scheduling rules.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.placement.tolerations[]

      +
      +

      Description

      +

      The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      effect

      string

      Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

      key

      string

      Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

      operator

      string

      Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

      tolerationSeconds

      integer

      TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

      value

      string

      Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB

      +
      +

      Description

      +

      scyllaDB specifies ScyllaDB properties for this rack. These override the settings set on Datacenter level.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      customConfigMapRef

      string

      customConfigMapRef specifies a reference to custom ScyllaDB configuration stored as ConfigMap. Overrides upper level settings.

      resources

      object

      resources specify requirements for the ScyllaDB container

      storage

      object

      storage specifies requirements for the containers

      volumeMounts

      array (object)

      volumeMounts specify a list of volume mounts appended to ScyllaDB container.

      volumes

      array (object)

      volumes specify a list of volumes appended to ScyllaDB Pod.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.resources

      +
      +

      Description

      +

      resources specify requirements for the ScyllaDB container

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claims

      array (object)

      +
      Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

      This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

      +
      +
      +

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.resources.claims[]

      +
      +

      Description

      +

      ResourceClaim references one entry in PodSpec.ResourceClaims.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.storage

      +
      +

      Description

      +

      storage specifies requirements for the containers

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      capacity

      string

      capacity describes the requested size of each persistent volume.

      metadata

      object

      metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

      storageClassName

      string

      storageClassName specifies the name of a storageClass to request.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.storage.metadata

      +
      +

      Description

      +

      metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      annotations

      object

      annotations specify a custom key value map that gets merged with managed object annotations.

      labels

      object

      labels specify a custom key value map that gets merged with managed object labels.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.storage.metadata.annotations

      +
      +

      Description

      +

      annotations specify a custom key value map that gets merged with managed object annotations.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.storage.metadata.labels

      +
      +

      Description

      +

      labels specify a custom key value map that gets merged with managed object labels.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumeMounts[]

      +
      +

      Description

      +

      VolumeMount describes a mounting of a Volume within a container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      mountPath

      string

      Path within the container at which the volume should be mounted. Must not contain ‘:’.

      mountPropagation

      string

      mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

      name

      string

      This must match the Name of a Volume.

      readOnly

      boolean

      Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

      subPath

      string

      Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

      subPathExpr

      string

      Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[]

      +
      +

      Description

      +

      Volume represents a named volume in a pod that may be accessed by any container in the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      awsElasticBlockStore

      object

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      azureDisk

      object

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      azureFile

      object

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      cephfs

      object

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      cinder

      object

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      configMap

      object

      configMap represents a configMap that should populate this volume

      csi

      object

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      downwardAPI

      object

      downwardAPI represents downward API about the pod that should populate this volume

      emptyDir

      object

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      ephemeral

      object

      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +

      fc

      object

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      flexVolume

      object

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      flocker

      object

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      gcePersistentDisk

      object

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      gitRepo

      object

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      glusterfs

      object

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      hostPath

      object

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      iscsi

      object

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      name

      string

      name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      nfs

      object

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      persistentVolumeClaim

      object

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      photonPersistentDisk

      object

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      portworxVolume

      object

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      projected

      object

      projected items for all in one resources secrets, configmaps, and downward API

      quobyte

      object

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      rbd

      object

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      scaleIO

      object

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      secret

      object

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      storageos

      object

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      vsphereVolume

      object

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].awsElasticBlockStore

      +
      +

      Description

      +

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty).

      readOnly

      boolean

      readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      volumeID

      string

      volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].azureDisk

      +
      +

      Description

      +

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      cachingMode

      string

      cachingMode is the Host Caching mode: None, Read Only, Read Write.

      diskName

      string

      diskName is the Name of the data disk in the blob storage

      diskURI

      string

      diskURI is the URI of data disk in the blob storage

      fsType

      string

      fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      kind

      string

      kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].azureFile

      +
      +

      Description

      +

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretName

      string

      secretName is the name of secret that contains Azure Storage Account Name and Key

      shareName

      string

      shareName is the azure share Name

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].cephfs

      +
      +

      Description

      +

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      monitors

      array (string)

      monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      path

      string

      path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretFile

      string

      secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretRef

      object

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      user

      string

      user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].cephfs.secretRef

      +
      +

      Description

      +

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].cinder

      +
      +

      Description

      +

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      secretRef

      object

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      volumeID

      string

      volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].cinder.secretRef

      +
      +

      Description

      +

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].configMap

      +
      +

      Description

      +

      configMap represents a configMap that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].csi

      +
      +

      Description

      +

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.

      fsType

      string

      fsType to mount. Ex. “ext4”, “xfs”, “ntfs”. If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.

      nodePublishSecretRef

      object

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      readOnly

      boolean

      readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).

      volumeAttributes

      object

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].csi.nodePublishSecretRef

      +
      +

      Description

      +

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].csi.volumeAttributes

      +
      +

      Description

      +

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].downwardAPI

      +
      +

      Description

      +

      downwardAPI represents downward API about the pod that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      Items is a list of downward API volume file

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].emptyDir

      +
      +

      Description

      +

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      medium

      string

      medium represents what type of storage medium should back this directory. The default is “” which means to use the node’s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      sizeLimit

      sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral

      +
      +

      Description

      +
      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      volumeClaimTemplate

      object

      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate

      +
      +

      Description

      +
      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      metadata

      object

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      spec

      object

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.metadata

      +
      +

      Description

      +

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec

      +
      +

      Description

      +

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      accessModes

      array (string)

      accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

      dataSource

      object

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      dataSourceRef

      object

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      resources

      object

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      selector

      object

      selector is a label query over volumes to consider for binding.

      storageClassName

      string

      storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

      volumeAttributesClassName

      string

      volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

      volumeMode

      string

      volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

      volumeName

      string

      volumeName is the binding reference to the PersistentVolume backing this claim.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource

      +
      +

      Description

      +

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef

      +
      +

      Description

      +

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      namespace

      string

      Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources

      +
      +

      Description

      +

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector

      +
      +

      Description

      +

      selector is a label query over volumes to consider for binding.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].fc

      +
      +

      Description

      +

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine

      lun

      integer

      lun is Optional: FC target lun number

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      targetWWNs

      array (string)

      targetWWNs is Optional: FC target worldwide names (WWNs)

      wwids

      array (string)

      wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].flexVolume

      +
      +

      Description

      +

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the driver to use for this volume.

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. The default filesystem depends on FlexVolume script.

      options

      object

      options is Optional: this field holds extra command options if any.

      readOnly

      boolean

      readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].flexVolume.options

      +
      +

      Description

      +

      options is Optional: this field holds extra command options if any.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].flexVolume.secretRef

      +
      +

      Description

      +

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].flocker

      +
      +

      Description

      +

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      datasetName

      string

      datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated

      datasetUUID

      string

      datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].gcePersistentDisk

      +
      +

      Description

      +

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      pdName

      string

      pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].gitRepo

      +
      +

      Description

      +

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      directory

      string

      directory is the target directory name. Must not contain or start with ‘..’. If ‘.’ is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.

      repository

      string

      repository is the URL

      revision

      string

      revision is the commit hash for the specified revision.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].glusterfs

      +
      +

      Description

      +

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      endpoints

      string

      endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      path

      string

      path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      readOnly

      boolean

      readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].hostPath

      +
      +

      Description

      +

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      type

      string

      type for HostPath Volume Defaults to “” More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].iscsi

      +
      +

      Description

      +

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      chapAuthDiscovery

      boolean

      chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication

      chapAuthSession

      boolean

      chapAuthSession defines whether support iSCSI Session CHAP authentication

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine

      initiatorName

      string

      initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

      iqn

      string

      iqn is the target iSCSI Qualified Name.

      iscsiInterface

      string

      iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to ‘default’ (tcp).

      lun

      integer

      lun represents iSCSI Target Lun number.

      portals

      array (string)

      portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

      secretRef

      object

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      targetPortal

      string

      targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].iscsi.secretRef

      +
      +

      Description

      +

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].nfs

      +
      +

      Description

      +

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      readOnly

      boolean

      readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      server

      string

      server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].persistentVolumeClaim

      +
      +

      Description

      +

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claimName

      string

      claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      readOnly

      boolean

      readOnly Will force the ReadOnly setting in VolumeMounts. Default false.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].photonPersistentDisk

      +
      +

      Description

      +

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      pdID

      string

      pdID is the ID that identifies Photon Controller persistent disk

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].portworxVolume

      +
      +

      Description

      +

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      volumeID

      string

      volumeID uniquely identifies a Portworx volume

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected

      +
      +

      Description

      +

      projected items for all in one resources secrets, configmaps, and downward API

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      sources

      array (object)

      sources is the list of volume projections

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[]

      +
      +

      Description

      +

      Projection that may be projected along with other supported volume types

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      clusterTrustBundle

      object

      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +

      configMap

      object

      configMap information about the configMap data to project

      downwardAPI

      object

      downwardAPI information about the downwardAPI data to project

      secret

      object

      secret information about the secret data to project

      serviceAccountToken

      object

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].clusterTrustBundle

      +
      +

      Description

      +
      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      name

      string

      Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.

      optional

      boolean

      If true, don’t block pod startup if the referenced ClusterTrustBundle(s) aren’t available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.

      path

      string

      Relative path from the volume root to write the bundle.

      signerName

      string

      Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector

      +
      +

      Description

      +

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].configMap

      +
      +

      Description

      +

      configMap information about the configMap data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].downwardAPI

      +
      +

      Description

      +

      downwardAPI information about the downwardAPI data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      Items is a list of DownwardAPIVolume file

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].secret

      +
      +

      Description

      +

      secret information about the secret data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional field specify whether the Secret or its key must be defined

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].projected.sources[].serviceAccountToken

      +
      +

      Description

      +

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      audience

      string

      audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.

      expirationSeconds

      integer

      expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.

      path

      string

      path is the path relative to the mount point of the file to project the token into.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].quobyte

      +
      +

      Description

      +

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      group

      string

      group to map volume access to Default is no group

      readOnly

      boolean

      readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

      registry

      string

      registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

      tenant

      string

      tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin

      user

      string

      user to map volume access to Defaults to serivceaccount user

      volume

      string

      volume is a string that references an already created Quobyte volume by name.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].rbd

      +
      +

      Description

      +

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine

      image

      string

      image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      keyring

      string

      keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      monitors

      array (string)

      monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      pool

      string

      pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      secretRef

      object

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      user

      string

      user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].rbd.secretRef

      +
      +

      Description

      +

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].scaleIO

      +
      +

      Description

      +

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Default is “xfs”.

      gateway

      string

      gateway is the host address of the ScaleIO API Gateway.

      protectionDomain

      string

      protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      sslEnabled

      boolean

      sslEnabled Flag enable/disable SSL communication with Gateway, default false

      storageMode

      string

      storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.

      storagePool

      string

      storagePool is the ScaleIO Storage Pool associated with the protection domain.

      system

      string

      system is the name of the storage system as configured in ScaleIO.

      volumeName

      string

      volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].scaleIO.secretRef

      +
      +

      Description

      +

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].secret

      +
      +

      Description

      +

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      optional

      boolean

      optional field specify whether the Secret or its keys must be defined

      secretName

      string

      secretName is the name of the secret in the pod’s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].storageos

      +
      +

      Description

      +

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      volumeName

      string

      volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.

      volumeNamespace

      string

      volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod’s namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to “default” if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].storageos.secretRef

      +
      +

      Description

      +

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDB.volumes[].vsphereVolume

      +
      +

      Description

      +

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      storagePolicyID

      string

      storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

      storagePolicyName

      string

      storagePolicyName is the storage Policy Based Management (SPBM) profile name.

      volumePath

      string

      volumePath is the path that identifies vSphere volume vmdk

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent

      +
      +

      Description

      +

      scyllaDBManagerAgent specifies ScyllaDB Manager Agent properties for this rack. These override the settings set on Datacenter level.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      customConfigSecretRef

      string

      customConfigSecretRef specifies a reference to custom ScyllaDB Manager Agent configuration stored as Secret.

      resources

      object

      resources specify requirements for the ScyllaDB Manager Agent container

      volumeMounts

      array (object)

      volumeMounts specify a list of volume mounts appended to ScyllaDB Manager Agent container.

      volumes

      array (object)

      volumes specify a list of volumes appended to ScyllaDB Pod.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.resources

      +
      +

      Description

      +

      resources specify requirements for the ScyllaDB Manager Agent container

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claims

      array (object)

      +
      Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

      This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

      +
      +
      +

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.resources.claims[]

      +
      +

      Description

      +

      ResourceClaim references one entry in PodSpec.ResourceClaims.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumeMounts[]

      +
      +

      Description

      +

      VolumeMount describes a mounting of a Volume within a container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      mountPath

      string

      Path within the container at which the volume should be mounted. Must not contain ‘:’.

      mountPropagation

      string

      mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

      name

      string

      This must match the Name of a Volume.

      readOnly

      boolean

      Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

      subPath

      string

      Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

      subPathExpr

      string

      Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[]

      +
      +

      Description

      +

      Volume represents a named volume in a pod that may be accessed by any container in the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      awsElasticBlockStore

      object

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      azureDisk

      object

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      azureFile

      object

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      cephfs

      object

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      cinder

      object

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      configMap

      object

      configMap represents a configMap that should populate this volume

      csi

      object

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      downwardAPI

      object

      downwardAPI represents downward API about the pod that should populate this volume

      emptyDir

      object

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      ephemeral

      object

      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +

      fc

      object

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      flexVolume

      object

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      flocker

      object

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      gcePersistentDisk

      object

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      gitRepo

      object

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      glusterfs

      object

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      hostPath

      object

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      iscsi

      object

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      name

      string

      name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      nfs

      object

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      persistentVolumeClaim

      object

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      photonPersistentDisk

      object

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      portworxVolume

      object

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      projected

      object

      projected items for all in one resources secrets, configmaps, and downward API

      quobyte

      object

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      rbd

      object

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      scaleIO

      object

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      secret

      object

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      storageos

      object

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      vsphereVolume

      object

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].awsElasticBlockStore

      +
      +

      Description

      +

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty).

      readOnly

      boolean

      readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      volumeID

      string

      volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].azureDisk

      +
      +

      Description

      +

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      cachingMode

      string

      cachingMode is the Host Caching mode: None, Read Only, Read Write.

      diskName

      string

      diskName is the Name of the data disk in the blob storage

      diskURI

      string

      diskURI is the URI of data disk in the blob storage

      fsType

      string

      fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      kind

      string

      kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].azureFile

      +
      +

      Description

      +

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretName

      string

      secretName is the name of secret that contains Azure Storage Account Name and Key

      shareName

      string

      shareName is the azure share Name

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].cephfs

      +
      +

      Description

      +

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      monitors

      array (string)

      monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      path

      string

      path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretFile

      string

      secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretRef

      object

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      user

      string

      user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].cephfs.secretRef

      +
      +

      Description

      +

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].cinder

      +
      +

      Description

      +

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      secretRef

      object

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      volumeID

      string

      volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].cinder.secretRef

      +
      +

      Description

      +

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].configMap

      +
      +

      Description

      +

      configMap represents a configMap that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].csi

      +
      +

      Description

      +

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.

      fsType

      string

      fsType to mount. Ex. “ext4”, “xfs”, “ntfs”. If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.

      nodePublishSecretRef

      object

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      readOnly

      boolean

      readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).

      volumeAttributes

      object

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].csi.nodePublishSecretRef

      +
      +

      Description

      +

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].csi.volumeAttributes

      +
      +

      Description

      +

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].downwardAPI

      +
      +

      Description

      +

      downwardAPI represents downward API about the pod that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      Items is a list of downward API volume file

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].emptyDir

      +
      +

      Description

      +

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      medium

      string

      medium represents what type of storage medium should back this directory. The default is “” which means to use the node’s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      sizeLimit

      sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral

      +
      +

      Description

      +
      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      volumeClaimTemplate

      object

      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate

      +
      +

      Description

      +
      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      metadata

      object

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      spec

      object

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.metadata

      +
      +

      Description

      +

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec

      +
      +

      Description

      +

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      accessModes

      array (string)

      accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

      dataSource

      object

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      dataSourceRef

      object

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      resources

      object

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      selector

      object

      selector is a label query over volumes to consider for binding.

      storageClassName

      string

      storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

      volumeAttributesClassName

      string

      volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

      volumeMode

      string

      volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

      volumeName

      string

      volumeName is the binding reference to the PersistentVolume backing this claim.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource

      +
      +

      Description

      +

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef

      +
      +

      Description

      +

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      namespace

      string

      Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources

      +
      +

      Description

      +

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector

      +
      +

      Description

      +

      selector is a label query over volumes to consider for binding.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].fc

      +
      +

      Description

      +

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine

      lun

      integer

      lun is Optional: FC target lun number

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      targetWWNs

      array (string)

      targetWWNs is Optional: FC target worldwide names (WWNs)

      wwids

      array (string)

      wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].flexVolume

      +
      +

      Description

      +

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the driver to use for this volume.

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. The default filesystem depends on FlexVolume script.

      options

      object

      options is Optional: this field holds extra command options if any.

      readOnly

      boolean

      readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].flexVolume.options

      +
      +

      Description

      +

      options is Optional: this field holds extra command options if any.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].flexVolume.secretRef

      +
      +

      Description

      +

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].flocker

      +
      +

      Description

      +

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      datasetName

      string

      datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated

      datasetUUID

      string

      datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].gcePersistentDisk

      +
      +

      Description

      +

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      pdName

      string

      pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].gitRepo

      +
      +

      Description

      +

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      directory

      string

      directory is the target directory name. Must not contain or start with ‘..’. If ‘.’ is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.

      repository

      string

      repository is the URL

      revision

      string

      revision is the commit hash for the specified revision.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].glusterfs

      +
      +

      Description

      +

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      endpoints

      string

      endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      path

      string

      path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      readOnly

      boolean

      readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].hostPath

      +
      +

      Description

      +

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      type

      string

      type for HostPath Volume Defaults to “” More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].iscsi

      +
      +

      Description

      +

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      chapAuthDiscovery

      boolean

      chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication

      chapAuthSession

      boolean

      chapAuthSession defines whether support iSCSI Session CHAP authentication

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine

      initiatorName

      string

      initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

      iqn

      string

      iqn is the target iSCSI Qualified Name.

      iscsiInterface

      string

      iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to ‘default’ (tcp).

      lun

      integer

      lun represents iSCSI Target Lun number.

      portals

      array (string)

      portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

      secretRef

      object

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      targetPortal

      string

      targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].iscsi.secretRef

      +
      +

      Description

      +

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].nfs

      +
      +

      Description

      +

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      readOnly

      boolean

      readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      server

      string

      server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].persistentVolumeClaim

      +
      +

      Description

      +

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claimName

      string

      claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      readOnly

      boolean

      readOnly Will force the ReadOnly setting in VolumeMounts. Default false.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].photonPersistentDisk

      +
      +

      Description

      +

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      pdID

      string

      pdID is the ID that identifies Photon Controller persistent disk

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].portworxVolume

      +
      +

      Description

      +

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      volumeID

      string

      volumeID uniquely identifies a Portworx volume

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected

      +
      +

      Description

      +

      projected items for all in one resources secrets, configmaps, and downward API

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      sources

      array (object)

      sources is the list of volume projections

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[]

      +
      +

      Description

      +

      Projection that may be projected along with other supported volume types

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      clusterTrustBundle

      object

      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +

      configMap

      object

      configMap information about the configMap data to project

      downwardAPI

      object

      downwardAPI information about the downwardAPI data to project

      secret

      object

      secret information about the secret data to project

      serviceAccountToken

      object

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle

      +
      +

      Description

      +
      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      name

      string

      Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.

      optional

      boolean

      If true, don’t block pod startup if the referenced ClusterTrustBundle(s) aren’t available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.

      path

      string

      Relative path from the volume root to write the bundle.

      signerName

      string

      Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector

      +
      +

      Description

      +

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].configMap

      +
      +

      Description

      +

      configMap information about the configMap data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI

      +
      +

      Description

      +

      downwardAPI information about the downwardAPI data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      Items is a list of DownwardAPIVolume file

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].secret

      +
      +

      Description

      +

      secret information about the secret data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional field specify whether the Secret or its key must be defined

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].serviceAccountToken

      +
      +

      Description

      +

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      audience

      string

      audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.

      expirationSeconds

      integer

      expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.

      path

      string

      path is the path relative to the mount point of the file to project the token into.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].quobyte

      +
      +

      Description

      +

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      group

      string

      group to map volume access to Default is no group

      readOnly

      boolean

      readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

      registry

      string

      registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

      tenant

      string

      tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin

      user

      string

      user to map volume access to Defaults to serivceaccount user

      volume

      string

      volume is a string that references an already created Quobyte volume by name.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].rbd

      +
      +

      Description

      +

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine

      image

      string

      image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      keyring

      string

      keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      monitors

      array (string)

      monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      pool

      string

      pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      secretRef

      object

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      user

      string

      user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].rbd.secretRef

      +
      +

      Description

      +

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].scaleIO

      +
      +

      Description

      +

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Default is “xfs”.

      gateway

      string

      gateway is the host address of the ScaleIO API Gateway.

      protectionDomain

      string

      protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      sslEnabled

      boolean

      sslEnabled Flag enable/disable SSL communication with Gateway, default false

      storageMode

      string

      storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.

      storagePool

      string

      storagePool is the ScaleIO Storage Pool associated with the protection domain.

      system

      string

      system is the name of the storage system as configured in ScaleIO.

      volumeName

      string

      volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].scaleIO.secretRef

      +
      +

      Description

      +

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].secret

      +
      +

      Description

      +

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      optional

      boolean

      optional field specify whether the Secret or its keys must be defined

      secretName

      string

      secretName is the name of the secret in the pod’s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].storageos

      +
      +

      Description

      +

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      volumeName

      string

      volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.

      volumeNamespace

      string

      volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod’s namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to “default” if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].storageos.secretRef

      +
      +

      Description

      +

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.rackTemplate.scyllaDBManagerAgent.volumes[].vsphereVolume

      +
      +

      Description

      +

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      storagePolicyID

      string

      storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

      storagePolicyName

      string

      storagePolicyName is the storage Policy Based Management (SPBM) profile name.

      volumePath

      string

      volumePath is the path that identifies vSphere volume vmdk

      +
      +
      +
      +

      .spec.rackTemplate.topologyLabelSelector

      +
      +

      Description

      +

      topologyLabelSelector specifies a label selector which will be used to target nodes at specified topology constraints. Datacenter topologyLabelSelector is merged with rack topologyLabelSelector and then converted into nodeAffinity targeting nodes having specified topology.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[]

      +
      +

      Description

      +

      RackSpec is the desired state for a ScyllaDB Rack.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      name specifies the name of the ScyllaDB Rack. Used as rack name in GossipingPropertyFileSnitch. This field is immutable.

      nodes

      integer

      nodes specify the desired number of nodes in rack.

      placement

      object

      placement describes restrictions for the nodes ScyllaDB is scheduled on.

      scyllaDB

      object

      scyllaDB specifies ScyllaDB properties for this rack. These override the settings set on Datacenter level.

      scyllaDBManagerAgent

      object

      scyllaDBManagerAgent specifies ScyllaDB Manager Agent properties for this rack. These override the settings set on Datacenter level.

      topologyLabelSelector

      object

      topologyLabelSelector specifies a label selector which will be used to target nodes at specified topology constraints. Datacenter topologyLabelSelector is merged with rack topologyLabelSelector and then converted into nodeAffinity targeting nodes having specified topology.

      +
      +
      +
      +

      .spec.racks[].placement

      +
      +

      Description

      +

      placement describes restrictions for the nodes ScyllaDB is scheduled on.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeAffinity

      object

      nodeAffinity describes node affinity scheduling rules for the Pod.

      podAffinity

      object

      podAffinity describes Pod affinity scheduling rules.

      podAntiAffinity

      object

      podAntiAffinity describes Pod anti-affinity scheduling rules.

      tolerations

      array (object)

      tolerations describe Pod toleration rules. This allows the Pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

      +
      +
      +
      +

      .spec.racks[].placement.nodeAffinity

      +
      +

      Description

      +

      nodeAffinity describes node affinity scheduling rules for the Pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      object

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +
      +

      .spec.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preference

      object

      A node selector term, associated with the corresponding weight.

      weight

      integer

      Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

      +
      +

      Description

      +

      A node selector term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

      +
      +

      Description

      +

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeSelectorTerms

      array (object)

      Required. A list of node selector terms. The terms are ORed.

      +
      +
      +
      +

      .spec.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

      +
      +

      Description

      +

      A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity

      +
      +

      Description

      +

      podAffinity describes Pod affinity scheduling rules.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity

      +
      +

      Description

      +

      podAntiAffinity describes Pod anti-affinity scheduling rules.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].placement.tolerations[]

      +
      +

      Description

      +

      The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      effect

      string

      Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

      key

      string

      Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

      operator

      string

      Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

      tolerationSeconds

      integer

      TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

      value

      string

      Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

      +
      +
      +
      +

      .spec.racks[].scyllaDB

      +
      +

      Description

      +

      scyllaDB specifies ScyllaDB properties for this rack. These override the settings set on Datacenter level.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      customConfigMapRef

      string

      customConfigMapRef specifies a reference to custom ScyllaDB configuration stored as ConfigMap. Overrides upper level settings.

      resources

      object

      resources specify requirements for the ScyllaDB container

      storage

      object

      storage specifies requirements for the containers

      volumeMounts

      array (object)

      volumeMounts specify a list of volume mounts appended to ScyllaDB container.

      volumes

      array (object)

      volumes specify a list of volumes appended to ScyllaDB Pod.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.resources

      +
      +

      Description

      +

      resources specify requirements for the ScyllaDB container

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claims

      array (object)

      +
      Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

      This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

      +
      +
      +

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.racks[].scyllaDB.resources.claims[]

      +
      +

      Description

      +

      ResourceClaim references one entry in PodSpec.ResourceClaims.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDB.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDB.storage

      +
      +

      Description

      +

      storage specifies requirements for the containers

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      capacity

      string

      capacity describes the requested size of each persistent volume.

      metadata

      object

      metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

      storageClassName

      string

      storageClassName specifies the name of a storageClass to request.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.storage.metadata

      +
      +

      Description

      +

      metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      annotations

      object

      annotations specify a custom key value map that gets merged with managed object annotations.

      labels

      object

      labels specify a custom key value map that gets merged with managed object labels.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.storage.metadata.annotations

      +
      +

      Description

      +

      annotations specify a custom key value map that gets merged with managed object annotations.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDB.storage.metadata.labels

      +
      +

      Description

      +

      labels specify a custom key value map that gets merged with managed object labels.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumeMounts[]

      +
      +

      Description

      +

      VolumeMount describes a mounting of a Volume within a container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      mountPath

      string

      Path within the container at which the volume should be mounted. Must not contain ‘:’.

      mountPropagation

      string

      mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

      name

      string

      This must match the Name of a Volume.

      readOnly

      boolean

      Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

      subPath

      string

      Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

      subPathExpr

      string

      Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[]

      +
      +

      Description

      +

      Volume represents a named volume in a pod that may be accessed by any container in the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      awsElasticBlockStore

      object

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      azureDisk

      object

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      azureFile

      object

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      cephfs

      object

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      cinder

      object

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      configMap

      object

      configMap represents a configMap that should populate this volume

      csi

      object

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      downwardAPI

      object

      downwardAPI represents downward API about the pod that should populate this volume

      emptyDir

      object

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      ephemeral

      object

      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +

      fc

      object

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      flexVolume

      object

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      flocker

      object

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      gcePersistentDisk

      object

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      gitRepo

      object

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      glusterfs

      object

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      hostPath

      object

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      iscsi

      object

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      name

      string

      name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      nfs

      object

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      persistentVolumeClaim

      object

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      photonPersistentDisk

      object

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      portworxVolume

      object

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      projected

      object

      projected items for all in one resources secrets, configmaps, and downward API

      quobyte

      object

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      rbd

      object

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      scaleIO

      object

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      secret

      object

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      storageos

      object

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      vsphereVolume

      object

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].awsElasticBlockStore

      +
      +

      Description

      +

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty).

      readOnly

      boolean

      readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      volumeID

      string

      volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].azureDisk

      +
      +

      Description

      +

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      cachingMode

      string

      cachingMode is the Host Caching mode: None, Read Only, Read Write.

      diskName

      string

      diskName is the Name of the data disk in the blob storage

      diskURI

      string

      diskURI is the URI of data disk in the blob storage

      fsType

      string

      fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      kind

      string

      kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].azureFile

      +
      +

      Description

      +

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretName

      string

      secretName is the name of secret that contains Azure Storage Account Name and Key

      shareName

      string

      shareName is the azure share Name

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].cephfs

      +
      +

      Description

      +

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      monitors

      array (string)

      monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      path

      string

      path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretFile

      string

      secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretRef

      object

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      user

      string

      user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].cephfs.secretRef

      +
      +

      Description

      +

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].cinder

      +
      +

      Description

      +

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      secretRef

      object

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      volumeID

      string

      volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].cinder.secretRef

      +
      +

      Description

      +

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].configMap

      +
      +

      Description

      +

      configMap represents a configMap that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].csi

      +
      +

      Description

      +

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.

      fsType

      string

      fsType to mount. Ex. “ext4”, “xfs”, “ntfs”. If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.

      nodePublishSecretRef

      object

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      readOnly

      boolean

      readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).

      volumeAttributes

      object

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].csi.nodePublishSecretRef

      +
      +

      Description

      +

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].csi.volumeAttributes

      +
      +

      Description

      +

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].downwardAPI

      +
      +

      Description

      +

      downwardAPI represents downward API about the pod that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      Items is a list of downward API volume file

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].emptyDir

      +
      +

      Description

      +

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      medium

      string

      medium represents what type of storage medium should back this directory. The default is “” which means to use the node’s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      sizeLimit

      sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral

      +
      +

      Description

      +
      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      volumeClaimTemplate

      object

      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate

      +
      +

      Description

      +
      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      metadata

      object

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      spec

      object

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.metadata

      +
      +

      Description

      +

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec

      +
      +

      Description

      +

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      accessModes

      array (string)

      accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

      dataSource

      object

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      dataSourceRef

      object

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      resources

      object

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      selector

      object

      selector is a label query over volumes to consider for binding.

      storageClassName

      string

      storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

      volumeAttributesClassName

      string

      volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

      volumeMode

      string

      volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

      volumeName

      string

      volumeName is the binding reference to the PersistentVolume backing this claim.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource

      +
      +

      Description

      +

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef

      +
      +

      Description

      +

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      namespace

      string

      Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources

      +
      +

      Description

      +

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector

      +
      +

      Description

      +

      selector is a label query over volumes to consider for binding.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].fc

      +
      +

      Description

      +

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine

      lun

      integer

      lun is Optional: FC target lun number

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      targetWWNs

      array (string)

      targetWWNs is Optional: FC target worldwide names (WWNs)

      wwids

      array (string)

      wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].flexVolume

      +
      +

      Description

      +

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the driver to use for this volume.

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. The default filesystem depends on FlexVolume script.

      options

      object

      options is Optional: this field holds extra command options if any.

      readOnly

      boolean

      readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].flexVolume.options

      +
      +

      Description

      +

      options is Optional: this field holds extra command options if any.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].flexVolume.secretRef

      +
      +

      Description

      +

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].flocker

      +
      +

      Description

      +

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      datasetName

      string

      datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated

      datasetUUID

      string

      datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].gcePersistentDisk

      +
      +

      Description

      +

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      pdName

      string

      pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].gitRepo

      +
      +

      Description

      +

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      directory

      string

      directory is the target directory name. Must not contain or start with ‘..’. If ‘.’ is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.

      repository

      string

      repository is the URL

      revision

      string

      revision is the commit hash for the specified revision.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].glusterfs

      +
      +

      Description

      +

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      endpoints

      string

      endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      path

      string

      path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      readOnly

      boolean

      readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].hostPath

      +
      +

      Description

      +

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      type

      string

      type for HostPath Volume Defaults to “” More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].iscsi

      +
      +

      Description

      +

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      chapAuthDiscovery

      boolean

      chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication

      chapAuthSession

      boolean

      chapAuthSession defines whether support iSCSI Session CHAP authentication

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine

      initiatorName

      string

      initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

      iqn

      string

      iqn is the target iSCSI Qualified Name.

      iscsiInterface

      string

      iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to ‘default’ (tcp).

      lun

      integer

      lun represents iSCSI Target Lun number.

      portals

      array (string)

      portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

      secretRef

      object

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      targetPortal

      string

      targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].iscsi.secretRef

      +
      +

      Description

      +

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].nfs

      +
      +

      Description

      +

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      readOnly

      boolean

      readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      server

      string

      server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].persistentVolumeClaim

      +
      +

      Description

      +

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claimName

      string

      claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      readOnly

      boolean

      readOnly Will force the ReadOnly setting in VolumeMounts. Default false.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].photonPersistentDisk

      +
      +

      Description

      +

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      pdID

      string

      pdID is the ID that identifies Photon Controller persistent disk

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].portworxVolume

      +
      +

      Description

      +

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      volumeID

      string

      volumeID uniquely identifies a Portworx volume

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected

      +
      +

      Description

      +

      projected items for all in one resources secrets, configmaps, and downward API

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      sources

      array (object)

      sources is the list of volume projections

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[]

      +
      +

      Description

      +

      Projection that may be projected along with other supported volume types

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      clusterTrustBundle

      object

      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +

      configMap

      object

      configMap information about the configMap data to project

      downwardAPI

      object

      downwardAPI information about the downwardAPI data to project

      secret

      object

      secret information about the secret data to project

      serviceAccountToken

      object

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].clusterTrustBundle

      +
      +

      Description

      +
      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      name

      string

      Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.

      optional

      boolean

      If true, don’t block pod startup if the referenced ClusterTrustBundle(s) aren’t available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.

      path

      string

      Relative path from the volume root to write the bundle.

      signerName

      string

      Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector

      +
      +

      Description

      +

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].configMap

      +
      +

      Description

      +

      configMap information about the configMap data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].downwardAPI

      +
      +

      Description

      +

      downwardAPI information about the downwardAPI data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      Items is a list of DownwardAPIVolume file

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].secret

      +
      +

      Description

      +

      secret information about the secret data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional field specify whether the Secret or its key must be defined

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].projected.sources[].serviceAccountToken

      +
      +

      Description

      +

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      audience

      string

      audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.

      expirationSeconds

      integer

      expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.

      path

      string

      path is the path relative to the mount point of the file to project the token into.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].quobyte

      +
      +

      Description

      +

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      group

      string

      group to map volume access to Default is no group

      readOnly

      boolean

      readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

      registry

      string

      registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

      tenant

      string

      tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin

      user

      string

      user to map volume access to Defaults to serivceaccount user

      volume

      string

      volume is a string that references an already created Quobyte volume by name.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].rbd

      +
      +

      Description

      +

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine

      image

      string

      image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      keyring

      string

      keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      monitors

      array (string)

      monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      pool

      string

      pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      secretRef

      object

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      user

      string

      user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].rbd.secretRef

      +
      +

      Description

      +

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].scaleIO

      +
      +

      Description

      +

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Default is “xfs”.

      gateway

      string

      gateway is the host address of the ScaleIO API Gateway.

      protectionDomain

      string

      protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      sslEnabled

      boolean

      sslEnabled Flag enable/disable SSL communication with Gateway, default false

      storageMode

      string

      storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.

      storagePool

      string

      storagePool is the ScaleIO Storage Pool associated with the protection domain.

      system

      string

      system is the name of the storage system as configured in ScaleIO.

      volumeName

      string

      volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].scaleIO.secretRef

      +
      +

      Description

      +

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].secret

      +
      +

      Description

      +

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      optional

      boolean

      optional field specify whether the Secret or its keys must be defined

      secretName

      string

      secretName is the name of the secret in the pod’s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].storageos

      +
      +

      Description

      +

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      volumeName

      string

      volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.

      volumeNamespace

      string

      volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod’s namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to “default” if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].storageos.secretRef

      +
      +

      Description

      +

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDB.volumes[].vsphereVolume

      +
      +

      Description

      +

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      storagePolicyID

      string

      storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

      storagePolicyName

      string

      storagePolicyName is the storage Policy Based Management (SPBM) profile name.

      volumePath

      string

      volumePath is the path that identifies vSphere volume vmdk

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent

      +
      +

      Description

      +

      scyllaDBManagerAgent specifies ScyllaDB Manager Agent properties for this rack. These override the settings set on Datacenter level.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      customConfigSecretRef

      string

      customConfigSecretRef specifies a reference to custom ScyllaDB Manager Agent configuration stored as Secret.

      resources

      object

      resources specify requirements for the ScyllaDB Manager Agent container

      volumeMounts

      array (object)

      volumeMounts specify a list of volume mounts appended to ScyllaDB Manager Agent container.

      volumes

      array (object)

      volumes specify a list of volumes appended to ScyllaDB Pod.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.resources

      +
      +

      Description

      +

      resources specify requirements for the ScyllaDB Manager Agent container

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claims

      array (object)

      +
      Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

      This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

      +
      +
      +

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.resources.claims[]

      +
      +

      Description

      +

      ResourceClaim references one entry in PodSpec.ResourceClaims.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumeMounts[]

      +
      +

      Description

      +

      VolumeMount describes a mounting of a Volume within a container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      mountPath

      string

      Path within the container at which the volume should be mounted. Must not contain ‘:’.

      mountPropagation

      string

      mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

      name

      string

      This must match the Name of a Volume.

      readOnly

      boolean

      Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

      subPath

      string

      Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

      subPathExpr

      string

      Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[]

      +
      +

      Description

      +

      Volume represents a named volume in a pod that may be accessed by any container in the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      awsElasticBlockStore

      object

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      azureDisk

      object

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      azureFile

      object

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      cephfs

      object

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      cinder

      object

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      configMap

      object

      configMap represents a configMap that should populate this volume

      csi

      object

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      downwardAPI

      object

      downwardAPI represents downward API about the pod that should populate this volume

      emptyDir

      object

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      ephemeral

      object

      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +

      fc

      object

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      flexVolume

      object

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      flocker

      object

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      gcePersistentDisk

      object

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      gitRepo

      object

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      glusterfs

      object

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      hostPath

      object

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      iscsi

      object

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      name

      string

      name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      nfs

      object

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      persistentVolumeClaim

      object

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      photonPersistentDisk

      object

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      portworxVolume

      object

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      projected

      object

      projected items for all in one resources secrets, configmaps, and downward API

      quobyte

      object

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      rbd

      object

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      scaleIO

      object

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      secret

      object

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      storageos

      object

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      vsphereVolume

      object

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].awsElasticBlockStore

      +
      +

      Description

      +

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty).

      readOnly

      boolean

      readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      volumeID

      string

      volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].azureDisk

      +
      +

      Description

      +

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      cachingMode

      string

      cachingMode is the Host Caching mode: None, Read Only, Read Write.

      diskName

      string

      diskName is the Name of the data disk in the blob storage

      diskURI

      string

      diskURI is the URI of data disk in the blob storage

      fsType

      string

      fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      kind

      string

      kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].azureFile

      +
      +

      Description

      +

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretName

      string

      secretName is the name of secret that contains Azure Storage Account Name and Key

      shareName

      string

      shareName is the azure share Name

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].cephfs

      +
      +

      Description

      +

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      monitors

      array (string)

      monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      path

      string

      path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretFile

      string

      secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretRef

      object

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      user

      string

      user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].cephfs.secretRef

      +
      +

      Description

      +

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].cinder

      +
      +

      Description

      +

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      secretRef

      object

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      volumeID

      string

      volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].cinder.secretRef

      +
      +

      Description

      +

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].configMap

      +
      +

      Description

      +

      configMap represents a configMap that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].csi

      +
      +

      Description

      +

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.

      fsType

      string

      fsType to mount. Ex. “ext4”, “xfs”, “ntfs”. If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.

      nodePublishSecretRef

      object

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      readOnly

      boolean

      readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).

      volumeAttributes

      object

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].csi.nodePublishSecretRef

      +
      +

      Description

      +

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].csi.volumeAttributes

      +
      +

      Description

      +

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].downwardAPI

      +
      +

      Description

      +

      downwardAPI represents downward API about the pod that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      Items is a list of downward API volume file

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].emptyDir

      +
      +

      Description

      +

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      medium

      string

      medium represents what type of storage medium should back this directory. The default is “” which means to use the node’s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      sizeLimit

      sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral

      +
      +

      Description

      +
      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      volumeClaimTemplate

      object

      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate

      +
      +

      Description

      +
      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      metadata

      object

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      spec

      object

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.metadata

      +
      +

      Description

      +

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec

      +
      +

      Description

      +

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      accessModes

      array (string)

      accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

      dataSource

      object

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      dataSourceRef

      object

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      resources

      object

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      selector

      object

      selector is a label query over volumes to consider for binding.

      storageClassName

      string

      storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

      volumeAttributesClassName

      string

      volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

      volumeMode

      string

      volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

      volumeName

      string

      volumeName is the binding reference to the PersistentVolume backing this claim.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource

      +
      +

      Description

      +

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef

      +
      +

      Description

      +

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      namespace

      string

      Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources

      +
      +

      Description

      +

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector

      +
      +

      Description

      +

      selector is a label query over volumes to consider for binding.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].fc

      +
      +

      Description

      +

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine

      lun

      integer

      lun is Optional: FC target lun number

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      targetWWNs

      array (string)

      targetWWNs is Optional: FC target worldwide names (WWNs)

      wwids

      array (string)

      wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].flexVolume

      +
      +

      Description

      +

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the driver to use for this volume.

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. The default filesystem depends on FlexVolume script.

      options

      object

      options is Optional: this field holds extra command options if any.

      readOnly

      boolean

      readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].flexVolume.options

      +
      +

      Description

      +

      options is Optional: this field holds extra command options if any.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].flexVolume.secretRef

      +
      +

      Description

      +

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].flocker

      +
      +

      Description

      +

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      datasetName

      string

      datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated

      datasetUUID

      string

      datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].gcePersistentDisk

      +
      +

      Description

      +

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      pdName

      string

      pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].gitRepo

      +
      +

      Description

      +

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      directory

      string

      directory is the target directory name. Must not contain or start with ‘..’. If ‘.’ is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.

      repository

      string

      repository is the URL

      revision

      string

      revision is the commit hash for the specified revision.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].glusterfs

      +
      +

      Description

      +

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      endpoints

      string

      endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      path

      string

      path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      readOnly

      boolean

      readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].hostPath

      +
      +

      Description

      +

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      type

      string

      type for HostPath Volume Defaults to “” More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].iscsi

      +
      +

      Description

      +

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      chapAuthDiscovery

      boolean

      chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication

      chapAuthSession

      boolean

      chapAuthSession defines whether support iSCSI Session CHAP authentication

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine

      initiatorName

      string

      initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

      iqn

      string

      iqn is the target iSCSI Qualified Name.

      iscsiInterface

      string

      iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to ‘default’ (tcp).

      lun

      integer

      lun represents iSCSI Target Lun number.

      portals

      array (string)

      portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

      secretRef

      object

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      targetPortal

      string

      targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].iscsi.secretRef

      +
      +

      Description

      +

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].nfs

      +
      +

      Description

      +

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      readOnly

      boolean

      readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      server

      string

      server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].persistentVolumeClaim

      +
      +

      Description

      +

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claimName

      string

      claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      readOnly

      boolean

      readOnly Will force the ReadOnly setting in VolumeMounts. Default false.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].photonPersistentDisk

      +
      +

      Description

      +

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      pdID

      string

      pdID is the ID that identifies Photon Controller persistent disk

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].portworxVolume

      +
      +

      Description

      +

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      volumeID

      string

      volumeID uniquely identifies a Portworx volume

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected

      +
      +

      Description

      +

      projected items for all in one resources secrets, configmaps, and downward API

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      sources

      array (object)

      sources is the list of volume projections

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[]

      +
      +

      Description

      +

      Projection that may be projected along with other supported volume types

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      clusterTrustBundle

      object

      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +

      configMap

      object

      configMap information about the configMap data to project

      downwardAPI

      object

      downwardAPI information about the downwardAPI data to project

      secret

      object

      secret information about the secret data to project

      serviceAccountToken

      object

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle

      +
      +

      Description

      +
      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      name

      string

      Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.

      optional

      boolean

      If true, don’t block pod startup if the referenced ClusterTrustBundle(s) aren’t available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.

      path

      string

      Relative path from the volume root to write the bundle.

      signerName

      string

      Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector

      +
      +

      Description

      +

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].configMap

      +
      +

      Description

      +

      configMap information about the configMap data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI

      +
      +

      Description

      +

      downwardAPI information about the downwardAPI data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      Items is a list of DownwardAPIVolume file

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].secret

      +
      +

      Description

      +

      secret information about the secret data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional field specify whether the Secret or its key must be defined

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].serviceAccountToken

      +
      +

      Description

      +

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      audience

      string

      audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.

      expirationSeconds

      integer

      expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.

      path

      string

      path is the path relative to the mount point of the file to project the token into.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].quobyte

      +
      +

      Description

      +

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      group

      string

      group to map volume access to Default is no group

      readOnly

      boolean

      readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

      registry

      string

      registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

      tenant

      string

      tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin

      user

      string

      user to map volume access to Defaults to serivceaccount user

      volume

      string

      volume is a string that references an already created Quobyte volume by name.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].rbd

      +
      +

      Description

      +

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine

      image

      string

      image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      keyring

      string

      keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      monitors

      array (string)

      monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      pool

      string

      pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      secretRef

      object

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      user

      string

      user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].rbd.secretRef

      +
      +

      Description

      +

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].scaleIO

      +
      +

      Description

      +

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Default is “xfs”.

      gateway

      string

      gateway is the host address of the ScaleIO API Gateway.

      protectionDomain

      string

      protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      sslEnabled

      boolean

      sslEnabled Flag enable/disable SSL communication with Gateway, default false

      storageMode

      string

      storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.

      storagePool

      string

      storagePool is the ScaleIO Storage Pool associated with the protection domain.

      system

      string

      system is the name of the storage system as configured in ScaleIO.

      volumeName

      string

      volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].scaleIO.secretRef

      +
      +

      Description

      +

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].secret

      +
      +

      Description

      +

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      optional

      boolean

      optional field specify whether the Secret or its keys must be defined

      secretName

      string

      secretName is the name of the secret in the pod’s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].storageos

      +
      +

      Description

      +

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      volumeName

      string

      volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.

      volumeNamespace

      string

      volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod’s namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to “default” if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].storageos.secretRef

      +
      +

      Description

      +

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.racks[].scyllaDBManagerAgent.volumes[].vsphereVolume

      +
      +

      Description

      +

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      storagePolicyID

      string

      storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

      storagePolicyName

      string

      storagePolicyName is the storage Policy Based Management (SPBM) profile name.

      volumePath

      string

      volumePath is the path that identifies vSphere volume vmdk

      +
      +
      +
      +

      .spec.racks[].topologyLabelSelector

      +
      +

      Description

      +

      topologyLabelSelector specifies a label selector which will be used to target nodes at specified topology constraints. Datacenter topologyLabelSelector is merged with rack topologyLabelSelector and then converted into nodeAffinity targeting nodes having specified topology.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.readinessGates[]

      +
      +

      Description

      +

      PodReadinessGate contains the reference to a pod condition

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      conditionType

      string

      ConditionType refers to a condition in the pod’s condition list with matching type.

      +
      +
      +
      +

      .spec.scyllaDB

      +
      +

      Description

      +

      scyllaDB holds a specification of ScyllaDB.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      additionalScyllaDBArguments

      array (string)

      additionalScyllaDBArguments specify a list of arguments appended to the ScyllaDB binary during startup. When set, ScyllaDB may behave unexpectedly, and every such setup is considered unsupported. Instead, consider using customConfigMapRef for setting custom ScyllaDB configuration options.

      alternatorOptions

      object

      alternatorOptions designates this cluster an Alternator cluster.

      customConfigMapRef

      string

      customConfigMapRef specifies a reference to custom ScyllaDB configuration stored as ConfigMap. Overrides upper level settings.

      enableDeveloperMode

      boolean

      developerMode determines if the cluster runs in developer-mode.

      externalSeeds

      array (string)

      externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as “seeds” parameter of seed-provider.

      image

      string

      image holds a reference to the ScyllaDB container image.

      resources

      object

      resources specify requirements for the ScyllaDB container

      storage

      object

      storage specifies requirements for the containers

      volumeMounts

      array (object)

      volumeMounts specify a list of volume mounts appended to ScyllaDB container.

      volumes

      array (object)

      volumes specify a list of volumes appended to ScyllaDB Pod.

      +
      +
      +
      +

      .spec.scyllaDB.alternatorOptions

      +
      +

      Description

      +

      alternatorOptions designates this cluster an Alternator cluster.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      servingCertificate

      object

      servingCertificate references a TLS certificate for serving secure traffic.

      writeIsolation

      string

      writeIsolation specifies the isolation level.

      +
      +
      +
      +

      .spec.scyllaDB.alternatorOptions.servingCertificate

      +
      +

      Description

      +

      servingCertificate references a TLS certificate for serving secure traffic.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      operatorManagedOptions

      object

      operatorManagedOptions specifies options for certificates manged by the operator.

      type

      string

      type determines the source of this certificate.

      userManagedOptions

      object

      userManagedOptions specifies options for certificates manged by users.

      +
      +
      +
      +

      .spec.scyllaDB.alternatorOptions.servingCertificate.operatorManagedOptions

      +
      +

      Description

      +

      operatorManagedOptions specifies options for certificates manged by the operator.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      additionalDNSNames

      array (string)

      additionalDNSNames represents external DNS names that the certificates should be signed for.

      additionalIPAddresses

      array (string)

      additionalIPAddresses represents external IP addresses that the certificates should be signed for.

      +
      +
      +
      +

      .spec.scyllaDB.alternatorOptions.servingCertificate.userManagedOptions

      +
      +

      Description

      +

      userManagedOptions specifies options for certificates manged by users.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      secretName

      string

      secretName references a kubernetes.io/tls type secret containing the TLS cert and key.

      +
      +
      +
      +

      .spec.scyllaDB.resources

      +
      +

      Description

      +

      resources specify requirements for the ScyllaDB container

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claims

      array (object)

      +
      Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

      This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

      +
      +
      +

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.scyllaDB.resources.claims[]

      +
      +

      Description

      +

      ResourceClaim references one entry in PodSpec.ResourceClaims.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

      +
      +
      +
      +

      .spec.scyllaDB.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDB.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDB.storage

      +
      +

      Description

      +

      storage specifies requirements for the containers

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      capacity

      string

      capacity describes the requested size of each persistent volume.

      metadata

      object

      metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

      storageClassName

      string

      storageClassName specifies the name of a storageClass to request.

      +
      +
      +
      +

      .spec.scyllaDB.storage.metadata

      +
      +

      Description

      +

      metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      annotations

      object

      annotations specify a custom key value map that gets merged with managed object annotations.

      labels

      object

      labels specify a custom key value map that gets merged with managed object labels.

      +
      +
      +
      +

      .spec.scyllaDB.storage.metadata.annotations

      +
      +

      Description

      +

      annotations specify a custom key value map that gets merged with managed object annotations.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDB.storage.metadata.labels

      +
      +

      Description

      +

      labels specify a custom key value map that gets merged with managed object labels.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDB.volumeMounts[]

      +
      +

      Description

      +

      VolumeMount describes a mounting of a Volume within a container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      mountPath

      string

      Path within the container at which the volume should be mounted. Must not contain ‘:’.

      mountPropagation

      string

      mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

      name

      string

      This must match the Name of a Volume.

      readOnly

      boolean

      Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

      subPath

      string

      Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

      subPathExpr

      string

      Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[]

      +
      +

      Description

      +

      Volume represents a named volume in a pod that may be accessed by any container in the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      awsElasticBlockStore

      object

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      azureDisk

      object

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      azureFile

      object

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      cephfs

      object

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      cinder

      object

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      configMap

      object

      configMap represents a configMap that should populate this volume

      csi

      object

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      downwardAPI

      object

      downwardAPI represents downward API about the pod that should populate this volume

      emptyDir

      object

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      ephemeral

      object

      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +

      fc

      object

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      flexVolume

      object

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      flocker

      object

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      gcePersistentDisk

      object

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      gitRepo

      object

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      glusterfs

      object

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      hostPath

      object

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      iscsi

      object

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      name

      string

      name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      nfs

      object

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      persistentVolumeClaim

      object

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      photonPersistentDisk

      object

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      portworxVolume

      object

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      projected

      object

      projected items for all in one resources secrets, configmaps, and downward API

      quobyte

      object

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      rbd

      object

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      scaleIO

      object

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      secret

      object

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      storageos

      object

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      vsphereVolume

      object

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].awsElasticBlockStore

      +
      +

      Description

      +

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty).

      readOnly

      boolean

      readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      volumeID

      string

      volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].azureDisk

      +
      +

      Description

      +

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      cachingMode

      string

      cachingMode is the Host Caching mode: None, Read Only, Read Write.

      diskName

      string

      diskName is the Name of the data disk in the blob storage

      diskURI

      string

      diskURI is the URI of data disk in the blob storage

      fsType

      string

      fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      kind

      string

      kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].azureFile

      +
      +

      Description

      +

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretName

      string

      secretName is the name of secret that contains Azure Storage Account Name and Key

      shareName

      string

      shareName is the azure share Name

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].cephfs

      +
      +

      Description

      +

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      monitors

      array (string)

      monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      path

      string

      path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretFile

      string

      secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretRef

      object

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      user

      string

      user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].cephfs.secretRef

      +
      +

      Description

      +

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].cinder

      +
      +

      Description

      +

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      secretRef

      object

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      volumeID

      string

      volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].cinder.secretRef

      +
      +

      Description

      +

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].configMap

      +
      +

      Description

      +

      configMap represents a configMap that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].csi

      +
      +

      Description

      +

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.

      fsType

      string

      fsType to mount. Ex. “ext4”, “xfs”, “ntfs”. If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.

      nodePublishSecretRef

      object

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      readOnly

      boolean

      readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).

      volumeAttributes

      object

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].csi.nodePublishSecretRef

      +
      +

      Description

      +

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].csi.volumeAttributes

      +
      +

      Description

      +

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].downwardAPI

      +
      +

      Description

      +

      downwardAPI represents downward API about the pod that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      Items is a list of downward API volume file

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].emptyDir

      +
      +

      Description

      +

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      medium

      string

      medium represents what type of storage medium should back this directory. The default is “” which means to use the node’s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      sizeLimit

      sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral

      +
      +

      Description

      +
      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      volumeClaimTemplate

      object

      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate

      +
      +

      Description

      +
      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      metadata

      object

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      spec

      object

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.metadata

      +
      +

      Description

      +

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec

      +
      +

      Description

      +

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      accessModes

      array (string)

      accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

      dataSource

      object

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      dataSourceRef

      object

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      resources

      object

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      selector

      object

      selector is a label query over volumes to consider for binding.

      storageClassName

      string

      storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

      volumeAttributesClassName

      string

      volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

      volumeMode

      string

      volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

      volumeName

      string

      volumeName is the binding reference to the PersistentVolume backing this claim.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource

      +
      +

      Description

      +

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef

      +
      +

      Description

      +

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      namespace

      string

      Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources

      +
      +

      Description

      +

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector

      +
      +

      Description

      +

      selector is a label query over volumes to consider for binding.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].fc

      +
      +

      Description

      +

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine

      lun

      integer

      lun is Optional: FC target lun number

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      targetWWNs

      array (string)

      targetWWNs is Optional: FC target worldwide names (WWNs)

      wwids

      array (string)

      wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].flexVolume

      +
      +

      Description

      +

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the driver to use for this volume.

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. The default filesystem depends on FlexVolume script.

      options

      object

      options is Optional: this field holds extra command options if any.

      readOnly

      boolean

      readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].flexVolume.options

      +
      +

      Description

      +

      options is Optional: this field holds extra command options if any.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].flexVolume.secretRef

      +
      +

      Description

      +

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].flocker

      +
      +

      Description

      +

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      datasetName

      string

      datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated

      datasetUUID

      string

      datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].gcePersistentDisk

      +
      +

      Description

      +

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      pdName

      string

      pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].gitRepo

      +
      +

      Description

      +

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      directory

      string

      directory is the target directory name. Must not contain or start with ‘..’. If ‘.’ is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.

      repository

      string

      repository is the URL

      revision

      string

      revision is the commit hash for the specified revision.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].glusterfs

      +
      +

      Description

      +

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      endpoints

      string

      endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      path

      string

      path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      readOnly

      boolean

      readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].hostPath

      +
      +

      Description

      +

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      type

      string

      type for HostPath Volume Defaults to “” More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].iscsi

      +
      +

      Description

      +

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      chapAuthDiscovery

      boolean

      chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication

      chapAuthSession

      boolean

      chapAuthSession defines whether support iSCSI Session CHAP authentication

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine

      initiatorName

      string

      initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

      iqn

      string

      iqn is the target iSCSI Qualified Name.

      iscsiInterface

      string

      iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to ‘default’ (tcp).

      lun

      integer

      lun represents iSCSI Target Lun number.

      portals

      array (string)

      portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

      secretRef

      object

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      targetPortal

      string

      targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].iscsi.secretRef

      +
      +

      Description

      +

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].nfs

      +
      +

      Description

      +

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      readOnly

      boolean

      readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      server

      string

      server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].persistentVolumeClaim

      +
      +

      Description

      +

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claimName

      string

      claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      readOnly

      boolean

      readOnly Will force the ReadOnly setting in VolumeMounts. Default false.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].photonPersistentDisk

      +
      +

      Description

      +

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      pdID

      string

      pdID is the ID that identifies Photon Controller persistent disk

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].portworxVolume

      +
      +

      Description

      +

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      volumeID

      string

      volumeID uniquely identifies a Portworx volume

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected

      +
      +

      Description

      +

      projected items for all in one resources secrets, configmaps, and downward API

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      sources

      array (object)

      sources is the list of volume projections

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[]

      +
      +

      Description

      +

      Projection that may be projected along with other supported volume types

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      clusterTrustBundle

      object

      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +

      configMap

      object

      configMap information about the configMap data to project

      downwardAPI

      object

      downwardAPI information about the downwardAPI data to project

      secret

      object

      secret information about the secret data to project

      serviceAccountToken

      object

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].clusterTrustBundle

      +
      +

      Description

      +
      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      name

      string

      Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.

      optional

      boolean

      If true, don’t block pod startup if the referenced ClusterTrustBundle(s) aren’t available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.

      path

      string

      Relative path from the volume root to write the bundle.

      signerName

      string

      Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector

      +
      +

      Description

      +

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].configMap

      +
      +

      Description

      +

      configMap information about the configMap data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].downwardAPI

      +
      +

      Description

      +

      downwardAPI information about the downwardAPI data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      Items is a list of DownwardAPIVolume file

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].secret

      +
      +

      Description

      +

      secret information about the secret data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional field specify whether the Secret or its key must be defined

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].projected.sources[].serviceAccountToken

      +
      +

      Description

      +

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      audience

      string

      audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.

      expirationSeconds

      integer

      expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.

      path

      string

      path is the path relative to the mount point of the file to project the token into.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].quobyte

      +
      +

      Description

      +

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      group

      string

      group to map volume access to Default is no group

      readOnly

      boolean

      readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

      registry

      string

      registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

      tenant

      string

      tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin

      user

      string

      user to map volume access to Defaults to serivceaccount user

      volume

      string

      volume is a string that references an already created Quobyte volume by name.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].rbd

      +
      +

      Description

      +

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine

      image

      string

      image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      keyring

      string

      keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      monitors

      array (string)

      monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      pool

      string

      pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      secretRef

      object

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      user

      string

      user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].rbd.secretRef

      +
      +

      Description

      +

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].scaleIO

      +
      +

      Description

      +

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Default is “xfs”.

      gateway

      string

      gateway is the host address of the ScaleIO API Gateway.

      protectionDomain

      string

      protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      sslEnabled

      boolean

      sslEnabled Flag enable/disable SSL communication with Gateway, default false

      storageMode

      string

      storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.

      storagePool

      string

      storagePool is the ScaleIO Storage Pool associated with the protection domain.

      system

      string

      system is the name of the storage system as configured in ScaleIO.

      volumeName

      string

      volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].scaleIO.secretRef

      +
      +

      Description

      +

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].secret

      +
      +

      Description

      +

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      optional

      boolean

      optional field specify whether the Secret or its keys must be defined

      secretName

      string

      secretName is the name of the secret in the pod’s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].storageos

      +
      +

      Description

      +

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      volumeName

      string

      volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.

      volumeNamespace

      string

      volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod’s namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to “default” if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].storageos.secretRef

      +
      +

      Description

      +

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDB.volumes[].vsphereVolume

      +
      +

      Description

      +

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      storagePolicyID

      string

      storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

      storagePolicyName

      string

      storagePolicyName is the storage Policy Based Management (SPBM) profile name.

      volumePath

      string

      volumePath is the path that identifies vSphere volume vmdk

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent

      +
      +

      Description

      +

      scyllaDBManagerAgent holds a specification of ScyllaDB Manager Agent.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      customConfigSecretRef

      string

      customConfigSecretRef specifies a reference to custom ScyllaDB Manager Agent configuration stored as Secret.

      image

      string

      image holds a reference to the ScyllaDB Manager Agent container image.

      resources

      object

      resources specify requirements for the ScyllaDB Manager Agent container

      volumeMounts

      array (object)

      volumeMounts specify a list of volume mounts appended to ScyllaDB Manager Agent container.

      volumes

      array (object)

      volumes specify a list of volumes appended to ScyllaDB Pod.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.resources

      +
      +

      Description

      +

      resources specify requirements for the ScyllaDB Manager Agent container

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claims

      array (object)

      +
      Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

      This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

      +
      +
      +

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.resources.claims[]

      +
      +

      Description

      +

      ResourceClaim references one entry in PodSpec.ResourceClaims.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumeMounts[]

      +
      +

      Description

      +

      VolumeMount describes a mounting of a Volume within a container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      mountPath

      string

      Path within the container at which the volume should be mounted. Must not contain ‘:’.

      mountPropagation

      string

      mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

      name

      string

      This must match the Name of a Volume.

      readOnly

      boolean

      Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

      subPath

      string

      Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

      subPathExpr

      string

      Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[]

      +
      +

      Description

      +

      Volume represents a named volume in a pod that may be accessed by any container in the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      awsElasticBlockStore

      object

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      azureDisk

      object

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      azureFile

      object

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      cephfs

      object

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      cinder

      object

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      configMap

      object

      configMap represents a configMap that should populate this volume

      csi

      object

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      downwardAPI

      object

      downwardAPI represents downward API about the pod that should populate this volume

      emptyDir

      object

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      ephemeral

      object

      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +

      fc

      object

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      flexVolume

      object

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      flocker

      object

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      gcePersistentDisk

      object

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      gitRepo

      object

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      glusterfs

      object

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      hostPath

      object

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      iscsi

      object

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      name

      string

      name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      nfs

      object

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      persistentVolumeClaim

      object

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      photonPersistentDisk

      object

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      portworxVolume

      object

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      projected

      object

      projected items for all in one resources secrets, configmaps, and downward API

      quobyte

      object

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      rbd

      object

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      scaleIO

      object

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      secret

      object

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      storageos

      object

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      vsphereVolume

      object

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].awsElasticBlockStore

      +
      +

      Description

      +

      awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty).

      readOnly

      boolean

      readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      volumeID

      string

      volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].azureDisk

      +
      +

      Description

      +

      azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      cachingMode

      string

      cachingMode is the Host Caching mode: None, Read Only, Read Write.

      diskName

      string

      diskName is the Name of the data disk in the blob storage

      diskURI

      string

      diskURI is the URI of data disk in the blob storage

      fsType

      string

      fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      kind

      string

      kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].azureFile

      +
      +

      Description

      +

      azureFile represents an Azure File Service mount on the host and bind mount to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretName

      string

      secretName is the name of secret that contains Azure Storage Account Name and Key

      shareName

      string

      shareName is the azure share Name

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].cephfs

      +
      +

      Description

      +

      cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      monitors

      array (string)

      monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      path

      string

      path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretFile

      string

      secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      secretRef

      object

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      user

      string

      user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].cephfs.secretRef

      +
      +

      Description

      +

      secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].cinder

      +
      +

      Description

      +

      cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      secretRef

      object

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      volumeID

      string

      volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].cinder.secretRef

      +
      +

      Description

      +

      secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].configMap

      +
      +

      Description

      +

      configMap represents a configMap that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].csi

      +
      +

      Description

      +

      csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.

      fsType

      string

      fsType to mount. Ex. “ext4”, “xfs”, “ntfs”. If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.

      nodePublishSecretRef

      object

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      readOnly

      boolean

      readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).

      volumeAttributes

      object

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].csi.nodePublishSecretRef

      +
      +

      Description

      +

      nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].csi.volumeAttributes

      +
      +

      Description

      +

      volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].downwardAPI

      +
      +

      Description

      +

      downwardAPI represents downward API about the pod that should populate this volume

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      Items is a list of downward API volume file

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].emptyDir

      +
      +

      Description

      +

      emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      medium

      string

      medium represents what type of storage medium should back this directory. The default is “” which means to use the node’s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      sizeLimit

      sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral

      +
      +

      Description

      +
      +
      ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

      Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      volumeClaimTemplate

      object

      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate

      +
      +

      Description

      +
      +
      Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

      An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      metadata

      object

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      spec

      object

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.metadata

      +
      +

      Description

      +

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec

      +
      +

      Description

      +

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      accessModes

      array (string)

      accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

      dataSource

      object

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      dataSourceRef

      object

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      resources

      object

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      selector

      object

      selector is a label query over volumes to consider for binding.

      storageClassName

      string

      storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

      volumeAttributesClassName

      string

      volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

      volumeMode

      string

      volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

      volumeName

      string

      volumeName is the binding reference to the PersistentVolume backing this claim.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource

      +
      +

      Description

      +

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef

      +
      +

      Description

      +

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      namespace

      string

      Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources

      +
      +

      Description

      +

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector

      +
      +

      Description

      +

      selector is a label query over volumes to consider for binding.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].fc

      +
      +

      Description

      +

      fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine

      lun

      integer

      lun is Optional: FC target lun number

      readOnly

      boolean

      readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      targetWWNs

      array (string)

      targetWWNs is Optional: FC target worldwide names (WWNs)

      wwids

      array (string)

      wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].flexVolume

      +
      +

      Description

      +

      flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      driver

      string

      driver is the name of the driver to use for this volume.

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. The default filesystem depends on FlexVolume script.

      options

      object

      options is Optional: this field holds extra command options if any.

      readOnly

      boolean

      readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].flexVolume.options

      +
      +

      Description

      +

      options is Optional: this field holds extra command options if any.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].flexVolume.secretRef

      +
      +

      Description

      +

      secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].flocker

      +
      +

      Description

      +

      flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      datasetName

      string

      datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated

      datasetUUID

      string

      datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].gcePersistentDisk

      +
      +

      Description

      +

      gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine

      partition

      integer

      partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      pdName

      string

      pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].gitRepo

      +
      +

      Description

      +

      gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      directory

      string

      directory is the target directory name. Must not contain or start with ‘..’. If ‘.’ is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.

      repository

      string

      repository is the URL

      revision

      string

      revision is the commit hash for the specified revision.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].glusterfs

      +
      +

      Description

      +

      glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      endpoints

      string

      endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      path

      string

      path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      readOnly

      boolean

      readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].hostPath

      +
      +

      Description

      +

      hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      type

      string

      type for HostPath Volume Defaults to “” More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].iscsi

      +
      +

      Description

      +

      iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      chapAuthDiscovery

      boolean

      chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication

      chapAuthSession

      boolean

      chapAuthSession defines whether support iSCSI Session CHAP authentication

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine

      initiatorName

      string

      initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

      iqn

      string

      iqn is the target iSCSI Qualified Name.

      iscsiInterface

      string

      iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to ‘default’ (tcp).

      lun

      integer

      lun represents iSCSI Target Lun number.

      portals

      array (string)

      portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

      secretRef

      object

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      targetPortal

      string

      targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].iscsi.secretRef

      +
      +

      Description

      +

      secretRef is the CHAP Secret for iSCSI target and initiator authentication

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].nfs

      +
      +

      Description

      +

      nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      path

      string

      path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      readOnly

      boolean

      readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      server

      string

      server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].persistentVolumeClaim

      +
      +

      Description

      +

      persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claimName

      string

      claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

      readOnly

      boolean

      readOnly Will force the ReadOnly setting in VolumeMounts. Default false.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].photonPersistentDisk

      +
      +

      Description

      +

      photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      pdID

      string

      pdID is the ID that identifies Photon Controller persistent disk

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].portworxVolume

      +
      +

      Description

      +

      portworxVolume represents a portworx volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      volumeID

      string

      volumeID uniquely identifies a Portworx volume

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected

      +
      +

      Description

      +

      projected items for all in one resources secrets, configmaps, and downward API

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      sources

      array (object)

      sources is the list of volume projections

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[]

      +
      +

      Description

      +

      Projection that may be projected along with other supported volume types

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      clusterTrustBundle

      object

      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +

      configMap

      object

      configMap information about the configMap data to project

      downwardAPI

      object

      downwardAPI information about the downwardAPI data to project

      secret

      object

      secret information about the secret data to project

      serviceAccountToken

      object

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle

      +
      +

      Description

      +
      +
      ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

      Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      name

      string

      Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.

      optional

      boolean

      If true, don’t block pod startup if the referenced ClusterTrustBundle(s) aren’t available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.

      path

      string

      Relative path from the volume root to write the bundle.

      signerName

      string

      Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector

      +
      +

      Description

      +

      Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].configMap

      +
      +

      Description

      +

      configMap information about the configMap data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional specify whether the ConfigMap or its keys must be defined

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].configMap.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI

      +
      +

      Description

      +

      downwardAPI information about the downwardAPI data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      Items is a list of DownwardAPIVolume file

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[]

      +
      +

      Description

      +

      DownwardAPIVolumeFile represents information to create the file containing the pod field

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fieldRef

      object

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      mode

      integer

      Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

      resourceFieldRef

      object

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].fieldRef

      +
      +

      Description

      +

      Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      Version of the schema the FieldPath is written in terms of, defaults to “v1”.

      fieldPath

      string

      Path of the field to select in the specified API version.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef

      +
      +

      Description

      +

      Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      containerName

      string

      Container name: required for volumes, optional for env vars

      divisor

      Specifies the output format of the exposed resources, defaults to “1”

      resource

      string

      Required: resource to select

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].secret

      +
      +

      Description

      +

      secret information about the secret data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      items

      array (object)

      items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      optional

      boolean

      optional field specify whether the Secret or its key must be defined

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].projected.sources[].serviceAccountToken

      +
      +

      Description

      +

      serviceAccountToken is information about the serviceAccountToken data to project

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      audience

      string

      audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.

      expirationSeconds

      integer

      expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.

      path

      string

      path is the path relative to the mount point of the file to project the token into.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].quobyte

      +
      +

      Description

      +

      quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      group

      string

      group to map volume access to Default is no group

      readOnly

      boolean

      readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

      registry

      string

      registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

      tenant

      string

      tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin

      user

      string

      user to map volume access to Defaults to serivceaccount user

      volume

      string

      volume is a string that references an already created Quobyte volume by name.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].rbd

      +
      +

      Description

      +

      rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine

      image

      string

      image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      keyring

      string

      keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      monitors

      array (string)

      monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      pool

      string

      pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      readOnly

      boolean

      readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      secretRef

      object

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      user

      string

      user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].rbd.secretRef

      +
      +

      Description

      +

      secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].scaleIO

      +
      +

      Description

      +

      scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Default is “xfs”.

      gateway

      string

      gateway is the host address of the ScaleIO API Gateway.

      protectionDomain

      string

      protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.

      readOnly

      boolean

      readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      sslEnabled

      boolean

      sslEnabled Flag enable/disable SSL communication with Gateway, default false

      storageMode

      string

      storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.

      storagePool

      string

      storagePool is the ScaleIO Storage Pool associated with the protection domain.

      system

      string

      system is the name of the storage system as configured in ScaleIO.

      volumeName

      string

      volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].scaleIO.secretRef

      +
      +

      Description

      +

      secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].secret

      +
      +

      Description

      +

      secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      defaultMode

      integer

      defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      items

      array (object)

      items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

      optional

      boolean

      optional field specify whether the Secret or its keys must be defined

      secretName

      string

      secretName is the name of the secret in the pod’s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].secret.items[]

      +
      +

      Description

      +

      Maps a string key to a path within a volume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the key to project.

      mode

      integer

      mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

      path

      string

      path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].storageos

      +
      +

      Description

      +

      storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      readOnly

      boolean

      readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

      secretRef

      object

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      volumeName

      string

      volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.

      volumeNamespace

      string

      volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod’s namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to “default” if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].storageos.secretRef

      +
      +

      Description

      +

      secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

      +
      +
      +
      +

      .spec.scyllaDBManagerAgent.volumes[].vsphereVolume

      +
      +

      Description

      +

      vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      fsType

      string

      fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

      storagePolicyID

      string

      storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

      storagePolicyName

      string

      storagePolicyName is the storage Policy Based Management (SPBM) profile name.

      volumePath

      string

      volumePath is the path that identifies vSphere volume vmdk

      +
      +
      +
      +

      .status

      +
      +

      Description

      +

      status specifies the current status of this ScyllaDBDatacenter.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      availableNodes

      integer

      availableNodes specify the total number of available nodes in datacenter.

      conditions

      array (object)

      conditions hold conditions describing ScyllaDBDatacenter state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False.

      currentNodes

      integer

      currentNodes specify the total number of nodes created in datacenter.

      currentVersion

      string

      version specifies the current version of ScyllaDB in use.

      nodes

      integer

      nodes specify the total number of nodes requested in datacenter.

      observedGeneration

      integer

      observedGeneration is the most recent generation observed for this ScyllaDBDatacenter. It corresponds to the ScyllaDBDatacenter’s generation, which is updated on mutation by the API Server.

      racks

      array (object)

      racks reflect the status of datacenter racks.

      readyNodes

      integer

      readyNodes specify the total number of ready nodes in datacenter.

      updatedNodes

      integer

      updatedNodes specify the number of nodes matching the current spec in datacenter.

      updatedVersion

      string

      updatedVersion specifies the updated version of ScyllaDB.

      +
      +
      +
      +

      .status.conditions[]

      +
      +

      Description

      +
      +
      Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example,

      type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:”conditions,omitempty” patchStrategy:”merge” patchMergeKey:”type” protobuf:”bytes,1,rep,name=conditions” +// other fields }

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      lastTransitionTime

      string

      lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

      message

      string

      message is a human readable message indicating details about the transition. This may be an empty string.

      observedGeneration

      integer

      observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

      reason

      string

      reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

      status

      string

      status of the condition, one of True, False, Unknown.

      type

      string

      type of condition in CamelCase or in foo.example.com/CamelCase. — Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

      +
      +
      +
      +

      .status.racks[]

      +
      +

      Description

      +

      RackStatus is the status of a ScyllaDB Rack

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      availableNodes

      integer

      availableNodes specify the total number of available nodes in rack.

      currentNodes

      integer

      currentNodes specify the total number of nodes created in rack.

      currentVersion

      string

      version specifies the current version of ScyllaDB in use.

      name

      string

      name specifies the name of datacenter this status describes.

      nodes

      integer

      nodes specify the total number of nodes requested in rack.

      readyNodes

      integer

      readyNodes specify the total number of ready nodes in rack.

      stale

      boolean

      stale indicates if the current rack status is collected for a previous generation. stale should eventually become false when the appropriate controller writes a fresh status.

      updatedNodes

      integer

      updatedNodes specify the number of nodes matching the current spec in rack.

      updatedVersion

      string

      updatedVersion specifies the updated version of ScyllaDB.

      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html b/master/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html new file mode 100644 index 00000000000..114aeae4fdc --- /dev/null +++ b/master/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html @@ -0,0 +1,5298 @@ + + + + + + + + + + + + + ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)

      +
      +
      APIVersion: scylla.scylladb.com/v1alpha1
      +
      Kind: ScyllaDBMonitoring
      +
      PluralName: scylladbmonitorings
      +
      SingularName: scylladbmonitoring
      +
      Scope: Namespaced
      +
      ListKind: ScyllaDBMonitoringList
      +
      Served: true
      +
      Storage: true
      +
      +
      +

      Description

      +

      ScyllaDBMonitoring defines a monitoring instance for ScyllaDB clusters.

      +
      +
      +

      Specification

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

      kind

      string

      Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

      metadata

      object

      spec

      object

      spec defines the desired state of this ScyllaDBMonitoring.

      status

      object

      status is the current status of this ScyllaDBMonitoring.

      +
      +

      .metadata

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec

      +
      +

      Description

      +

      spec defines the desired state of this ScyllaDBMonitoring.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      components

      object

      components hold additional config for the monitoring components in use.

      endpointsSelector

      object

      endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors.

      type

      string

      type determines the platform type of the monitoring setup.

      +
      +
      +
      +

      .spec.components

      +
      +

      Description

      +

      components hold additional config for the monitoring components in use.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      grafana

      object

      grafana holds configuration for the grafana instance, if any.

      prometheus

      object

      prometheus holds configuration for the prometheus instance, if any.

      +
      +
      +
      +

      .spec.components.grafana

      +
      +

      Description

      +

      grafana holds configuration for the grafana instance, if any.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      authentication

      object

      authentication hold the authentication options for accessing Grafana.

      exposeOptions

      object

      exposeOptions specifies options for exposing Grafana UI.

      placement

      object

      placement describes restrictions for the nodes Grafana is scheduled on.

      resources

      object

      resources the Grafana container will use.

      servingCertSecretName

      string

      servingCertSecretName is the name of the secret holding a serving cert-key pair. If not specified, the operator will create a self-signed CA that creates the default serving cert-key pair.

      +
      +
      +
      +

      .spec.components.grafana.authentication

      +
      +

      Description

      +

      authentication hold the authentication options for accessing Grafana.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      insecureEnableAnonymousAccess

      boolean

      insecureEnableAnonymousAccess allows access to Grafana without authentication.

      +
      +
      +
      +

      .spec.components.grafana.exposeOptions

      +
      +

      Description

      +

      exposeOptions specifies options for exposing Grafana UI.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      webInterface

      object

      webInterface specifies expose options for the user web interface.

      +
      +
      +
      +

      .spec.components.grafana.exposeOptions.webInterface

      +
      +

      Description

      +

      webInterface specifies expose options for the user web interface.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      ingress

      object

      ingress is an Ingress configuration options.

      +
      +
      +
      +

      .spec.components.grafana.exposeOptions.webInterface.ingress

      +
      +

      Description

      +

      ingress is an Ingress configuration options.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      annotations

      object

      annotations specifies custom annotations merged into every Ingress object.

      disabled

      boolean

      disabled controls if Ingress object creation is disabled.

      dnsDomains

      array (string)

      dnsDomains is a list of DNS domains this ingress is reachable by.

      ingressClassName

      string

      ingressClassName specifies Ingress class name.

      +
      +
      +
      +

      .spec.components.grafana.exposeOptions.webInterface.ingress.annotations

      +
      +

      Description

      +

      annotations specifies custom annotations merged into every Ingress object.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.grafana.placement

      +
      +

      Description

      +

      placement describes restrictions for the nodes Grafana is scheduled on.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeAffinity

      object

      nodeAffinity describes node affinity scheduling rules for the pod.

      podAffinity

      object

      podAffinity describes pod affinity scheduling rules.

      podAntiAffinity

      object

      podAntiAffinity describes pod anti-affinity scheduling rules.

      tolerations

      array (object)

      tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

      +
      +
      +
      +

      .spec.components.grafana.placement.nodeAffinity

      +
      +

      Description

      +

      nodeAffinity describes node affinity scheduling rules for the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      object

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +
      +

      .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preference

      object

      A node selector term, associated with the corresponding weight.

      weight

      integer

      Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

      +
      +

      Description

      +

      A node selector term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

      +
      +

      Description

      +

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeSelectorTerms

      array (object)

      Required. A list of node selector terms. The terms are ORed.

      +
      +
      +
      +

      .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

      +
      +

      Description

      +

      A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity

      +
      +

      Description

      +

      podAffinity describes pod affinity scheduling rules.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity

      +
      +

      Description

      +

      podAntiAffinity describes pod anti-affinity scheduling rules.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.grafana.placement.tolerations[]

      +
      +

      Description

      +

      The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      effect

      string

      Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

      key

      string

      Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

      operator

      string

      Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

      tolerationSeconds

      integer

      TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

      value

      string

      Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

      +
      +
      +
      +

      .spec.components.grafana.resources

      +
      +

      Description

      +

      resources the Grafana container will use.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claims

      array (object)

      +
      Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

      This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

      +
      +
      +

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.components.grafana.resources.claims[]

      +
      +

      Description

      +

      ResourceClaim references one entry in PodSpec.ResourceClaims.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

      +
      +
      +
      +

      .spec.components.grafana.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.grafana.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus

      +
      +

      Description

      +

      prometheus holds configuration for the prometheus instance, if any.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      exposeOptions

      object

      exposeOptions specifies options for exposing Prometheus UI.

      placement

      object

      placement describes restrictions for the nodes Prometheus is scheduled on.

      resources

      object

      resources the Prometheus container will use.

      storage

      object

      storage describes the underlying storage that Prometheus will consume.

      +
      +
      +
      +

      .spec.components.prometheus.exposeOptions

      +
      +

      Description

      +

      exposeOptions specifies options for exposing Prometheus UI.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      webInterface

      object

      webInterface specifies expose options for the user web interface.

      +
      +
      +
      +

      .spec.components.prometheus.exposeOptions.webInterface

      +
      +

      Description

      +

      webInterface specifies expose options for the user web interface.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      ingress

      object

      ingress is an Ingress configuration options.

      +
      +
      +
      +

      .spec.components.prometheus.exposeOptions.webInterface.ingress

      +
      +

      Description

      +

      ingress is an Ingress configuration options.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      annotations

      object

      annotations specifies custom annotations merged into every Ingress object.

      disabled

      boolean

      disabled controls if Ingress object creation is disabled.

      dnsDomains

      array (string)

      dnsDomains is a list of DNS domains this ingress is reachable by.

      ingressClassName

      string

      ingressClassName specifies Ingress class name.

      +
      +
      +
      +

      .spec.components.prometheus.exposeOptions.webInterface.ingress.annotations

      +
      +

      Description

      +

      annotations specifies custom annotations merged into every Ingress object.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.placement

      +
      +

      Description

      +

      placement describes restrictions for the nodes Prometheus is scheduled on.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeAffinity

      object

      nodeAffinity describes node affinity scheduling rules for the pod.

      podAffinity

      object

      podAffinity describes pod affinity scheduling rules.

      podAntiAffinity

      object

      podAntiAffinity describes pod anti-affinity scheduling rules.

      tolerations

      array (object)

      tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

      +
      +
      +
      +

      .spec.components.prometheus.placement.nodeAffinity

      +
      +

      Description

      +

      nodeAffinity describes node affinity scheduling rules for the pod.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      object

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +
      +

      .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preference

      object

      A node selector term, associated with the corresponding weight.

      weight

      integer

      Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

      +
      +

      Description

      +

      A node selector term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

      +
      +

      Description

      +

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      nodeSelectorTerms

      array (object)

      Required. A list of node selector terms. The terms are ORed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

      +
      +

      Description

      +

      A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      A list of node selector requirements by node’s labels.

      matchFields

      array (object)

      A list of node selector requirements by node’s fields.

      +
      +
      +
      +

      .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

      +
      +

      Description

      +

      A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      The label key that the selector applies to.

      operator

      string

      Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

      values

      array (string)

      An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity

      +
      +

      Description

      +

      podAffinity describes pod affinity scheduling rules.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity

      +
      +

      Description

      +

      podAntiAffinity describes pod anti-affinity scheduling rules.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      preferredDuringSchedulingIgnoredDuringExecution

      array (object)

      The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

      requiredDuringSchedulingIgnoredDuringExecution

      array (object)

      If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      podAffinityTerm

      object

      Required. A pod affinity term, associated with the corresponding weight.

      weight

      integer

      weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

      +
      +

      Description

      +

      Required. A pod affinity term, associated with the corresponding weight.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

      +
      +

      Description

      +

      Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      labelSelector

      object

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      matchLabelKeys

      array (string)

      MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      mismatchLabelKeys

      array (string)

      MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

      namespaceSelector

      object

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      namespaces

      array (string)

      namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

      topologyKey

      string

      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

      +
      +

      Description

      +

      A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

      +
      +

      Description

      +

      A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.placement.tolerations[]

      +
      +

      Description

      +

      The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      effect

      string

      Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

      key

      string

      Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

      operator

      string

      Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

      tolerationSeconds

      integer

      TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

      value

      string

      Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

      +
      +
      +
      +

      .spec.components.prometheus.resources

      +
      +

      Description

      +

      resources the Prometheus container will use.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      claims

      array (object)

      +
      Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

      This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

      +
      +
      +

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.components.prometheus.resources.claims[]

      +
      +

      Description

      +

      ResourceClaim references one entry in PodSpec.ResourceClaims.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + +

      Property

      Type

      Description

      name

      string

      Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

      +
      +
      +
      +

      .spec.components.prometheus.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.storage

      +
      +

      Description

      +

      storage describes the underlying storage that Prometheus will consume.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      annotations

      object

      Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations

      labels

      object

      Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels

      volumeClaimTemplate

      object

      volumeClaimTemplates is a PVC template defining storage to be used by Prometheus.

      +
      +
      +
      +

      .spec.components.prometheus.storage.annotations

      +
      +

      Description

      +

      Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.storage.labels

      +
      +

      Description

      +

      Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.storage.volumeClaimTemplate

      +
      +

      Description

      +

      volumeClaimTemplates is a PVC template defining storage to be used by Prometheus.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      metadata

      object

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      spec

      object

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +
      +

      .spec.components.prometheus.storage.volumeClaimTemplate.metadata

      +
      +

      Description

      +

      May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.storage.volumeClaimTemplate.spec

      +
      +

      Description

      +

      The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      accessModes

      array (string)

      accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

      dataSource

      object

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      dataSourceRef

      object

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      resources

      object

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      selector

      object

      selector is a label query over volumes to consider for binding.

      storageClassName

      string

      storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

      volumeAttributesClassName

      string

      volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

      volumeMode

      string

      volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

      volumeName

      string

      volumeName is the binding reference to the PersistentVolume backing this claim.

      +
      +
      +
      +

      .spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource

      +
      +

      Description

      +

      dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      +
      +
      +
      +

      .spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef

      +
      +

      Description

      +

      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiGroup

      string

      APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

      kind

      string

      Kind is the type of resource being referenced

      name

      string

      Name is the name of resource being referenced

      namespace

      string

      Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

      +
      +
      +
      +

      .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources

      +
      +

      Description

      +

      resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      limits

      object

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      requests

      object

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +
      +

      .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits

      +
      +

      Description

      +

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests

      +
      +

      Description

      +

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector

      +
      +

      Description

      +

      selector is a label query over volumes to consider for binding.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec.endpointsSelector

      +
      +

      Description

      +

      endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      matchExpressions

      array (object)

      matchExpressions is a list of label selector requirements. The requirements are ANDed.

      matchLabels

      object

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +
      +

      .spec.endpointsSelector.matchExpressions[]

      +
      +

      Description

      +

      A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      key

      string

      key is the label key that the selector applies to.

      operator

      string

      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

      values

      array (string)

      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

      +
      +
      +
      +

      .spec.endpointsSelector.matchLabels

      +
      +

      Description

      +

      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .status

      +
      +

      Description

      +

      status is the current status of this ScyllaDBMonitoring.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      conditions

      array (object)

      conditions hold conditions describing ScyllaDBMonitoring state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False.

      observedGeneration

      integer

      observedGeneration is the most recent generation observed for this ScyllaDBMonitoring. It corresponds to the ScyllaDBMonitoring’s generation, which is updated on mutation by the API Server.

      +
      +
      +
      +

      .status.conditions[]

      +
      +

      Description

      +
      +
      Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example,

      type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:”conditions,omitempty” patchStrategy:”merge” patchMergeKey:”type” protobuf:”bytes,1,rep,name=conditions” +// other fields }

      +
      +
      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      lastTransitionTime

      string

      lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

      message

      string

      message is a human readable message indicating details about the transition. This may be an empty string.

      observedGeneration

      integer

      observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

      reason

      string

      reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

      status

      string

      status of the condition, one of True, False, Unknown.

      type

      string

      type of condition in CamelCase or in foo.example.com/CamelCase. — Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html b/master/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html new file mode 100644 index 00000000000..199e0b7dcd0 --- /dev/null +++ b/master/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html @@ -0,0 +1,791 @@ + + + + + + + + + + + + + ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)

      +
      +
      APIVersion: scylla.scylladb.com/v1alpha1
      +
      Kind: ScyllaOperatorConfig
      +
      PluralName: scyllaoperatorconfigs
      +
      SingularName: scyllaoperatorconfig
      +
      Scope: Cluster
      +
      ListKind: ScyllaOperatorConfigList
      +
      Served: true
      +
      Storage: true
      +
      +
      +

      Description

      +

      ScyllaOperatorConfig describes the Scylla Operator configuration.

      +
      +
      +

      Specification

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      apiVersion

      string

      APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

      kind

      string

      Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

      metadata

      object

      spec

      object

      spec defines the desired state of the operator.

      status

      object

      status defines the observed state of the operator.

      +
      +

      .metadata

      +
      +

      Description

      +
      +
      +

      Type

      +

      object

      +
      +
      +
      +

      .spec

      +
      +

      Description

      +

      spec defines the desired state of the operator.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      scyllaUtilsImage

      string

      scyllaUtilsImage is a ScyllaDB image used for running ScyllaDB utilities.

      unsupportedBashToolsImageOverride

      string

      unsupportedBashToolsImageOverride allows to adjust a generic Bash image with extra tools used by the operator for auxiliary purposes. Setting this field renders your cluster unsupported. Use at your own risk.

      unsupportedGrafanaImageOverride

      string

      unsupportedGrafanaImageOverride allows to adjust Grafana image used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk.

      unsupportedPrometheusVersionOverride

      string

      unsupportedPrometheusVersionOverride allows to adjust Prometheus version used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk.

      +
      +
      +
      +

      .status

      +
      +

      Description

      +

      status defines the observed state of the operator.

      +
      +
      +

      Type

      +

      object

      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Property

      Type

      Description

      bashToolsImage

      string

      bashToolsImage is a generic Bash image with extra tools used by the operator for auxiliary purposes.

      grafanaImage

      string

      grafanaImage is the image used by the operator to create a Grafana instance.

      observedGeneration

      integer

      observedGeneration is the most recent generation observed for this ScyllaOperatorConfig. It corresponds to the ScyllaOperatorConfig’s generation, which is updated on mutation by the API Server.

      prometheusVersion

      string

      prometheusVersion is the Prometheus version used by the operator to create a Prometheus instance.

      scyllaDBUtilsImage

      string

      scyllaDBUtilsImage is the ScyllaDB image used for running ScyllaDB utilities.

      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/api-reference/index.html b/master/api-reference/index.html new file mode 100644 index 00000000000..f854bb7797a --- /dev/null +++ b/master/api-reference/index.html @@ -0,0 +1,626 @@ + + + + + + + + + + + + + API Reference | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      API Reference

      +

      All APIs provided by Scylla Operator are defined using CRDs and adhere to Kubernetes API standards. You can find out how Kubernetes style REST APIs work on https://kubernetes.io/docs/reference/using-api/ and https://kubernetes.io/docs/reference/access-authn-authz/.

      +
      +

      API Groups and Kinds

      + +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/clients/alternator.html b/master/clients/alternator.html new file mode 100644 index 00000000000..214837bf443 --- /dev/null +++ b/master/clients/alternator.html @@ -0,0 +1,704 @@ + + + + + + + + + + + + + Using Alternator (DynamoDB) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Using Alternator (DynamoDB)

      +

      Alternator is a DynamoDB compatible API provided by ScyllaDB. +You can enable it on your ScyllaClusters by adding this section:

      +
      spec:
      +  alternator: {}
      +
      +
      +

      While this is enough to turn it on, there are more options available. +Please refer to our API documentation for details.

      +
      +

      Note

      +

      Contrary to CQL clients, Alternator clients don’t need to connect to every ScyllaDB node directly, nor discover the ScyllaDB node IP addresses. +Alternator protocol is based on HTTP and you can also expose the service “manually” with other networking concepts like Ingresses.

      +
      +
      +

      Credentials

      +

      Scylla Operator enables Alternator authorization by default. +Here is a quick example of how to get the token for accessing Alternator API. +To find out more, please refer to ScyllaDB Alternator documentation.

      +
      +

      Caution

      +

      The salted_hash is only present if password authentication for CQL is set up.

      +

      Always make sure your clusters are configured to use Authentication and Authorization.

      +
      +
      +

      Tip

      +

      You can find a quick example that enables Authentication and Authorization here.

      +
      +
      kubectl exec -it service/<sc-name>-client -c scylla -- cqlsh --user <cql_user> \
      +-e "SELECT salted_hash FROM system_auth.roles WHERE role = '<cql_user>'"
      +
      +
      +
      +
      +

      AWS CLI

      +

      This paragraph shows how to use aws dynamodb cli to remotely connect to ScyllaDB Alternator API.

      +
      +

      Note

      +

      This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured networking options differently, +or are using additional networking concepts like Ingresses, this address will need to be adjusted.

      +
      +
      +

      Caution

      +

      At the time of writing this document kubectl exec -i echoes passwords into the terminal. +It can be avoided by manually running kubectl exec -it and copying the output into a file / variable. +Because using kubectl exec with -t option merges standard and error outputs, we can’t use it in the scripts bellow.

      +

      See https://github.com/kubernetes/kubernetes/issues/123913 for more details.

      +
      +
      SCYLLACLUSTER_NAME=scylladb
      +CQL_USER=cassandra
      +
      +
      +
      SCYLLADB_EP="$( kubectl get "service/${SCYLLACLUSTER_NAME}-client" -o='jsonpath={.spec.clusterIP}' )"
      +AWS_ENDPOINT_URL_DYNAMODB="https://${SCYLLADB_EP}:8043"
      +export AWS_ENDPOINT_URL_DYNAMODB
      +
      +AWS_ACCESS_KEY_ID="${CQL_USER}"
      +export AWS_ACCESS_KEY_ID
      +AWS_SECRET_ACCESS_KEY="$( kubectl exec -i "service/${SCYLLACLUSTER_NAME}-client" -c scylla -- cqlsh --user ${CQL_USER} --no-color \
      +-e "SELECT salted_hash from system_auth.roles WHERE role = '${AWS_ACCESS_KEY_ID}';" \
      +| sed -e 's/\r//g' | sed -e '4q;d' | sed -E -e 's/^\s+//' )"
      +export AWS_SECRET_ACCESS_KEY
      +
      +AWS_CA_BUNDLE="$( mktemp )"
      +export AWS_CA_BUNDLE
      +kubectl get "configmap/${SCYLLACLUSTER_NAME}-alternator-local-serving-ca" --template='{{ index .data "ca-bundle.crt" }}' > "${AWS_CA_BUNDLE}"
      +
      +
      +

      Now we can use aws dynamodb cli without modifications.

      +
      aws dynamodb create-table --table-name MusicCollection --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
      +
      +
      +
      TABLEDESCRIPTION        2024-03-01T16:35:41+01:00       5c8aae70-d7e1-11ee-a99e-6f31aaf1d6d3    MusicCollection ACTIVE
      +ATTRIBUTEDEFINITIONS    Artist  S
      +ATTRIBUTEDEFINITIONS    SongTitle       S
      +KEYSCHEMA       Artist  HASH
      +KEYSCHEMA       SongTitle       RANGE
      +PROVISIONEDTHROUGHPUT   5       5
      +
      +
      +
      aws dynamodb list-tables
      +
      +
      +
      TABLENAMES      MusicCollection
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/clients/cql.html b/master/clients/cql.html new file mode 100644 index 00000000000..cc91bcc7775 --- /dev/null +++ b/master/clients/cql.html @@ -0,0 +1,750 @@ + + + + + + + + + + + + + Using CQL | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + + + +
      +

      Using CQL

      +

      cqlsh is the CQL shell for ScyllaDB. You can learn more about it in ScyllaDB documentation.

      +
      +

      Authentication and Authorization

      +

      For security reasons, you should always enable Authentication and Authorization. +At this point, this needs to be done manually in ScyllaDB Config. +You can find an example configuration bellow:

      +
      apiVersion: v1
      +kind: ConfigMap
      +metadata:
      +  name: scylla-config
      +data:
      +  scylla.yaml: |
      +    authenticator: PasswordAuthenticator
      +    authorizer: CassandraAuthorizer
      +
      +
      +
      +
      +

      Embedded cqlsh (aka localhost)

      +

      Every ScyllaDB node has an integrated cqlsh available. Here is an example of how it can be used:

      +
      + +
      +
      kubectl exec -it service/<sc-name>-client -c scylla -- cqlsh -u <user>
      +
      +
      +
      + +
      +
      kubectl exec -it pod/<sc-name>-<datacenter>-<node-index> -c scylla -- cqlsh -u <user>
      +
      +
      +
      +
      +
      Password: 
      +Connected to scylla at 127.0.0.1:9042
      +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4]
      +Use HELP for help.
      +<user>@cqlsh>
      +
      +
      +
      +
      +

      Remote cqlsh

      +

      This paragraph shows how to use cqlsh to remotely connect to a ScyllaDB node. +It is strongly recommended to access CQL over TLS connections on port 9142 instead of unencrypted 9042. +Note that Scylla Operator sets up TLS certificates by default and makes them accessible in the Kubernetes API, +so the encrypted port 9142 works by default.

      +
      +

      Caution

      +

      In future releases the unencrypted port 9042 will be disabled by default, unless explicitly opted-in.

      +
      +
      +

      Caution

      +

      To avoid unnecessary complexity, the following example simplifies how the credentials file is created. +Please create the credentials file with your text editor and avoid your password leaking into your bash history or environment variables. +To store the configuration permanently, please adjust SCYLLADB_CONFIG variable to an empty folder of your choice.

      +
      +
      +

      Note

      +

      This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured the networking options differently, +you may need to adjust this endpoint. Please refer to discovery documentation page.

      +
      +
      SCYLLADB_CONFIG="$( mktemp -d )" 
      +
      +cat <<EOF > "${SCYLLADB_CONFIG}/credentials"
      +[PlainTextAuthProvider]
      +username = <your_username>
      +password = <your_password>
      +EOF
      +chmod 600 "${SCYLLADB_CONFIG}/credentials"
      +
      +SCYLLADB_DISCOVERY_EP="$( kubectl get service/<sc-name>-client -o='jsonpath={.spec.clusterIP}' )"
      +kubectl get configmap/<sc-name>-local-serving-ca -o='jsonpath={.data.ca-bundle\.crt}' > "${SCYLLADB_CONFIG}/serving-ca-bundle.crt"
      +kubectl get secret/<sc-name>-local-user-admin -o='jsonpath={.data.tls\.crt}' | base64 -d > "${SCYLLADB_CONFIG}/admin.crt"
      +kubectl get secret/<sc-name>-local-user-admin -o='jsonpath={.data.tls\.key}' | base64 -d > "${SCYLLADB_CONFIG}/admin.key"
      +
      +cat <<EOF > "${SCYLLADB_CONFIG}/cqlshrc"
      +[authentication]
      +credentials = ${SCYLLADB_CONFIG}/credentials
      +[connection]
      +hostname = ${SCYLLADB_DISCOVERY_EP}
      +port = 9142
      +ssl=true
      +factory = cqlshlib.ssl.ssl_transport_factory
      +[ssl]
      +validate=true
      +certfile=${SCYLLADB_CONFIG}/serving-ca-bundle.crt
      +usercert=${SCYLLADB_CONFIG}/admin.crt
      +userkey=${SCYLLADB_CONFIG}/admin.key
      +EOF
      +
      +
      +
      + +
      +
      cqlsh --cqlshrc="${SCYLLADB_CONFIG}/cqlshrc"
      +
      +
      +
      + +
      +
      podman run -it --rm --entrypoint=cqlsh \
      +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro,Z" \
      +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro,Z" \
      +docker.io/scylladb/scylla:5.4.3
      +
      +
      +
      + +
      +
      docker run -it --rm --entrypoint=cqlsh \
      +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro" \
      +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro" \
      +docker.io/scylladb/scylla:5.4.3
      +
      +
      +
      +
      +
      Connected to scylla at <CLUSTER_IP>:9142
      +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4]
      +Use HELP for help.
      +<your_username>@cqlsh> 
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/clients/discovery.html b/master/clients/discovery.html new file mode 100644 index 00000000000..7b1f730451c --- /dev/null +++ b/master/clients/discovery.html @@ -0,0 +1,689 @@ + + + + + + + + + + + + + Discovering ScyllaDB Nodes | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Discovering ScyllaDB Nodes

      +
      +

      Preface

      +

      Outside the Kubernetes ecosystem, ScyllaDB nodes are usually set up on static IP addresses +and a fixed subset of them is configured as the initial contact points for ScyllaDB clients. +This has several disadvantages because this particular subset of nodes can be down at the time the client is (re)started, +or the nodes can be replaced and change their IP addresses. +The latter can be mitigated by using DNS and updating the records.

      +

      Scylla Operator allows setting up ScyllaDB in several network configurations, some of which are based on ephemeral IPs. +This makes solving the above-mentioned issues more pressing.

      +
      +
      +

      ScyllaDB Discovery Endpoint

      +

      For every ScyllaCluster, the operator will set up a Kubernetes Service (an internal load balancer) selecting all ScyllaDB nodes +and the internal Kubernetes controllers make sure to continuously update its endpoints with a subset of ScyllaDB nodes that are ready. +Because of that, you can always talk to ScyllaDB through this endpoint, as long as there are nodes to back it. +In case you are in the same Kubernetes cluster you can also use internal DNS for this service.

      +

      Clients can use this endpoint for the initial connection to reach one of the ScyllaDB nodes that are ready +and from there the drivers will automatically discover the per-node IP address for every ScyllaDB node that’s part of this cluster.

      +

      This service is called <sc-name>-client and in its default configuration it uses ClusterIP which is virtual and local to the Kubernetes cluster. +It can be configured to be backed by an external load balancer, be exposed through an Ingress, an additional hop or in other ways. +Depending on how you have configured the networking, use the appropriate IP address or DNS name for your client.

      +

      Here is an example of how the unmodified service looks like:

      +
      kubectl get scyllacluster/scylla service/scylla-client
      +
      +
      +
      NAME                                       READY   MEMBERS   RACKS   AVAILABLE   PROGRESSING   DEGRADED   AGE
      +scyllacluster.scylla.scylladb.com/scylla   1       1         1       True        True          True       10d
      +
      +NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                                                                                   AGE
      +service/scylla-client   ClusterIP   10.102.44.43   <none>        7000/TCP,7001/TCP,9042/TCP,9142/TCP,19042/TCP,19142/TCP,7199/TCP,10001/TCP,9180/TCP,5090/TCP,9100/TCP,9160/TCP,8043/TCP   10d
      +
      +
      +

      You can get only the ClusterIP using

      +
      kubectl get service/scylla-client -o='jsonpath={.spec.clusterIP}'
      +
      +
      +

      or use its DNS name (scylla-client.<sc-namespace>.svc).

      +
      +

      Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary

      +

      In case you are connecting from outside the Kubernetes cluster and using Pod IPs as your exposure type, you can expose just the <sc-name>-client service using an internal load balancer. +Having a stable contact point is especially important when using ephemeral Pod IPs. +Services configure internal load balancer using provider-specific annotations, so this may differ with your provider.

      +
      +

      Tip

      +

      To learn more about exposing ScyllaClusters, visit our dedicated documentation page.

      +
      +
      + +
      +
      kubectl patch service/<sc-name>-client -p '{"metadata": {"annotations": {"networking.gke.io/load-balancer-type": "Internal"}}, "spec": {"type": "LoadBalancer"}}'
      +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/<sc-name>-client
      +kubectl get service/<sc-name>-client -o='jsonpath={.status.loadBalancer.ingress[0].ip}'
      +
      +
      +
      + +
      +
      kubectl patch service/<sc-name>-client -p '{"metadata": {"annotations": {"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal", "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "tcp"}}, "spec": {"type": "LoadBalancer"}}'
      +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/<sc-name>-client
      +kubectl get service/<sc-name>-client -o='jsonpath={.status.loadBalancer.ingress[0].hostname}'
      +
      +
      +
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/clients/index.html b/master/clients/index.html new file mode 100644 index 00000000000..cb3f62bb361 --- /dev/null +++ b/master/clients/index.html @@ -0,0 +1,606 @@ + + + + + + + + + + + + + Using ScyllaDB APIs | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Using ScyllaDB APIs

      + +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/contributing.html b/master/contributing.html new file mode 100644 index 00000000000..e64122864f2 --- /dev/null +++ b/master/contributing.html @@ -0,0 +1,766 @@ + + + + + + + + + + + + + Contributing to Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Contributing to Scylla Operator

      +
      +

      Prerequisites

      +

      To develop on scylla-operator, your environment must have the following:

      +
        +
      1. Go 1.13

        +
          +
        • Make sure GOPATH is set to GOPATH=$HOME/go.

        • +
        +
      2. +
      3. Kustomize v3.1.0

      4. +
      5. kubebuilder v2.3.1

      6. +
      7. Docker

      8. +
      9. Git client installed

      10. +
      11. Github account

      12. +
      +

      To install all dependencies (Go, kustomize, kubebuilder, dep), simply run:

      +
      ./install-dependencies.sh
      +
      +
      +
      +
      +

      Initial Setup

      +
      +

      Create a Fork

      +

      From your browser navigate to http://github.com/scylladb/scylla-operator and click the “Fork” button.

      +
      +
      +

      Clone Your Fork

      +

      Open a console window and do the following:

      +
      # Create the scylla operator repo path
      +mkdir -p $GOPATH/src/github.com/scylladb
      +
      +# Navigate to the local repo path and clone your fork
      +cd $GOPATH/src/github.com/scylladb
      +
      +# Clone your fork, where <user> is your GitHub account name
      +git clone https://github.com/<user>/scylla-operator.git
      +
      +
      +
      +
      +

      Add Upstream Remote

      +

      First you will need to add the upstream remote to your local git:

      +
      # Add 'upstream' to the list of remotes
      +git remote add upstream https://github.com/scylladb/scylla-operator.git
      +
      +# Verify the remote was added
      +git remote -v
      +
      +
      +

      Now you should have at least origin and upstream remotes. You can also add other remotes to collaborate with other contributors.

      +
      +
      +
      +

      Development

      +

      To add a feature or to make a bug fix, you will need to create a branch in your fork and then submit a pull request (PR) from the branch.

      +
      +

      Building the project

      +

      You can build the project using the Makefile commands:

      +
        +
      • Open the Makefile and change the IMG environment variable to a repository you have access to.

      • +
      • Run make docker-push and wait for the image to be built and uploaded in your repo.

      • +
      +
      +
      +

      Create a Branch

      +

      From a console, create a new branch based on your fork and start working on it:

      +
      # Ensure all your remotes are up to date with the latest
      +git fetch --all
      +
      +# Create a new branch that is based off upstream master.  Give it a simple, but descriptive name.
      +# Generally it will be two to three words separated by dashes and without numbers.
      +git checkout -b feature-name upstream/master
      +
      +
      +

      Now you are ready to make the changes and commit to your branch.

      +
      +
      +

      Updating Your Fork

      +

      During the development lifecycle, you will need to keep up-to-date with the latest upstream master. As others on the team push changes, you will need to rebase your commits on top of the latest. This avoids unnecessary merge commits and keeps the commit history clean.

      +

      Whenever you need to update your local repository, you never want to merge. You always will rebase. Otherwise you will end up with merge commits in the git history. If you have any modified files, you will first have to stash them (git stash save -u "<some description>").

      +
      git fetch --all
      +git rebase upstream/master
      +
      +
      +

      Rebasing is a very powerful feature of Git. You need to understand how it works or else you will risk losing your work. Read about it in the Git documentation, it will be well worth it. In a nutshell, rebasing does the following:

      +
        +
      • “Unwinds” your local commits. Your local commits are removed temporarily from the history.

      • +
      • The latest changes from upstream are added to the history

      • +
      • Your local commits are re-applied one by one

      • +
      • If there are merge conflicts, you will be prompted to fix them before continuing. Read the output closely. It will tell you how to complete the rebase.

      • +
      • When done rebasing, you will see all of your commits in the history.

      • +
      +
      +
      +
      +

      Submitting a Pull Request

      +

      Once you have implemented the feature or bug fix in your branch, you will open a PR to the upstream repo. Before opening the PR ensure you have added unit tests, are passing the integration tests, cleaned your commit history, and have rebased on the latest upstream.

      +

      In order to open a pull request (PR) it is required to be up to date with the latest changes upstream. If other commits are pushed upstream before your PR is merged, you will also need to rebase again before it will be merged.

      +
      +

      Commit History

      +

      To prepare your branch to open a PR, you will need to have the minimal number of logical commits so we can maintain +a clean commit history. Most commonly a PR will include a single commit where all changes are squashed, although +sometimes there will be multiple logical commits.

      +
      # Inspect your commit history to determine if you need to squash commits
      +git log
      +
      +# Rebase the commits and edit, squash, or even reorder them as you determine will keep the history clean.
      +# In this example, the last 5 commits will be opened in the git rebase tool.
      +git rebase -i HEAD~5
      +
      +
      +

      Once your commit history is clean, ensure you have based on the latest upstream before you open the PR.

      +
      +
      +

      Commit messages

      +

      Please make the first line of your commit message a summary of the change that a user (not a developer) of Operator would like to read, +and prefix it with the most relevant directory of the change followed by a colon. +The changelog gets made by looking at just these first lines so make it good!

      +

      If you have more to say about the commit, then enter a blank line and carry on the description. +Remember to say why the change was needed - the commit itself shows what was changed.

      +

      Writing more is better than less. Comparing the behaviour before the change to that after the change is very useful. +Imagine you are writing to yourself in 12 months time when you’ve forgotten everything about what you just did, and you need to get up to speed quickly.

      +

      If the change fixes an issue then write Fixes #1234 in the commit message. +This can be on the subject line if it will fit. If you don’t want to close the associated issue just put #1234 and the change will get linked into the issue.

      +

      Here is an example of a short commit message:

      +
      sidecar: log on reconcile loop - fixes #1234
      +
      +
      +

      And here is an example of a longer one:

      +
      
      +api: now supports host networking (#1234)
      +
      +The operator CRD now has a "network" property that can be used to
      +select host networking as well as setting the apropriate DNS policy.
      +
      +Fixes #1234
      +
      +
      +
      +
      +

      Submitting

      +

      Go to the Scylla Operator github to open the PR. If you have pushed recently, you should see an obvious link to open the PR. If you have not pushed recently, go to the Pull Request tab and select your fork and branch for the PR.

      +

      After the PR is open, you can make changes simply by pushing new commits. Your PR will track the changes in your fork and update automatically.

      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/eks.html b/master/eks.html new file mode 100644 index 00000000000..57309f251cf --- /dev/null +++ b/master/eks.html @@ -0,0 +1,760 @@ + + + + + + + + + + + + + Deploying Scylla on EKS | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Deploying Scylla on EKS

      +

      This guide is focused on deploying Scylla on EKS with improved performance. +Performance tricks used by the script won’t work with different machine tiers. +It sets up the kubelets on EKS nodes to run with static cpu policy and uses local sdd disks in RAID0 for maximum performance.

      +

      Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the general guide.

      +
      +

      TL;DR;

      +

      If you don’t want to run the commands step-by-step, you can just run a script that will set everything up for you:

      +
      # Edit according to your preference
      +EKS_REGION=us-east-1
      +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c
      +
      +# From inside the examples/eks folder
      +cd examples/eks
      +./eks.sh -z "$EKS_ZONES" -r "$EKS_REGION"
      +
      +
      +

      After you deploy, see how you can benchmark your cluster with cassandra-stress.

      +
      +
      +

      Walkthrough

      +
      +

      EKS Setup

      +
      +

      Configure environment variables

      +

      First of all, we export all the configuration options as environment variables. +Edit according to your own environment.

      +
      EKS_REGION=us-east-1
      +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c
      +CLUSTER_NAME=scylla-demo
      +
      +
      +
      +
      +

      Creating an EKS cluster

      +

      For this guide, we’ll create an EKS cluster with the following:

      +
        +
      • A NodeGroup of 3 i3-2xlarge Nodes, where the Scylla Pods will be deployed. These nodes will only accept pods having scylla-clusters toleration.

      • +
      +
        - name: scylla-pool
      +    instanceType: i3.2xlarge
      +    desiredCapacity: 3
      +    labels:
      +      scylla.scylladb.com/node-type: scylla
      +    taints:
      +      role: "scylla-clusters:NoSchedule"
      +    ssh:
      +      allow: true
      +    kubeletExtraConfig:
      +      cpuManagerPolicy: static
      +
      +
      +
        +
      • A NodeGroup of 4 c4.2xlarge Nodes to deploy cassandra-stress later on. These nodes will only accept pods having cassandra-stress toleration.

      • +
      +
        - name: cassandra-stress-pool
      +    instanceType: c4.2xlarge
      +    desiredCapacity: 4
      +    labels:
      +      pool: "cassandra-stress-pool"
      +    taints:
      +      role: "cassandra-stress:NoSchedule"
      +    ssh:
      +      allow: true
      +
      +
      +
        +
      • A NodeGroup of 1 i3.large Node, where the monitoring stack and operator will be deployed.

      • +
      +
        - name: monitoring-pool
      +    instanceType: i3.large
      +    desiredCapacity: 1
      +    labels:
      +      pool: "monitoring-pool"
      +    ssh:
      +      allow: true
      +
      +
      +
      +
      +
      +

      Prerequisites

      +
      +

      Installing script third party dependencies

      +

      Script requires several dependencies:

      +
        +
      • eksctl - See: https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html

      • +
      • kubectl - See: https://kubernetes.io/docs/tasks/tools/install-kubectl/

      • +
      +
      +
      +
      +

      Deploying ScyllaDB Operator

      +

      Refer to Deploying Scylla on a Kubernetes Cluster in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites.

      +
      +

      Setting up nodes for ScyllaDB

      +

      ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you’ll first need to form a RAID array from those disks. +NodeConfig performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in Performance tuning section of ScyllaDB Operator’s documentation.

      +

      Deploy NodeConfig to let it take care of the above operations:

      +
      kubectl apply --server-side -f examples/eks/nodeconfig-alpha.yaml
      +
      +
      +
      +
      +

      Deploying Local Volume Provisioner

      +

      Afterwards, deploy ScyllaDB’s Local Volume Provisioner, capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays.

      +
      kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/
      +
      +
      +
      +
      +
      +

      Deploying ScyllaDB

      +

      Now you can follow the steps described in Deploying Scylla on a Kubernetes Cluster to launch your ScyllaDB cluster in a highly performant environment.

      +
      +

      Accessing the database

      +

      Instructions on how to access the database can also be found in the generic guide.

      +
      +
      +
      +

      Deleting an EKS cluster

      +

      Once you are done with your experiments delete your cluster using the following command:

      +
      eksctl delete cluster "${CLUSTER_NAME}"
      +
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/exposing.html b/master/exposing.html new file mode 100644 index 00000000000..b4905d0838c --- /dev/null +++ b/master/exposing.html @@ -0,0 +1,911 @@ + + + + + + + + + + + + + Exposing ScyllaCluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Exposing ScyllaCluster

      +

      This document explains how ScyllaDB Operator exposes ScyllaClusters in different network setups. +A ScyllaCluster can be exposed in various network configurations, independently to clients and nodes.

      +
      +

      Note

      +

      ScyllaClusters can be only exposed when the ScyllaDB version used version is >=2023.1 ScyllaDB Enterprise or >=5.2 ScyllaDB Open Source.

      +
      +
      +

      Expose Options

      +
      +

      Note

      +

      exposeOptions are immutable, they cannot be changed after ScyllaCluster is created.

      +
      +

      exposeOptions specifies configuration options for exposing ScyllaCluster’s. +A ScyllaCluster created without any exposeOptions is equivalent to the following:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    nodeService:
      +     type: ClusterIP
      +    broadcastOptions:
      +      clients:
      +        type: ServiceClusterIP
      +      nodes:
      +        type: ServiceClusterIP
      +
      +
      +

      The following sections cover what every field controls and what the configuration options are.

      +
      +

      Node Service Template

      +

      nodeService serves as a template for a node-dedicated Service managed by the Scylla Operator for each node within a ScyllaCluster. +The properties of the Services depend on the selected type. +Additionally, there’s an option to define custom annotations, incorporated into each node’s Service, +which might be useful for further tweaking the Service properties or related objects.

      +
      +

      Headless Type

      +

      For Headless type, Scylla Operator creates a Headless Service with a selector pointing to the particular node in the ScyllaCluster. +Such Service doesn’t provide any additional IP addresses, and the internal DNS record resolves to the PodIP of a node.

      +

      This type of Service is useful when ScyllaCluster nodes broadcast PodIPs to clients and other nodes.

      +

      Example:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    nodeService:
      +     type: Headless
      +
      +
      +
      +
      +

      ClusterIP Type

      +

      For ClusterIP type, Scylla Operator creates a ClusterIP Service backed by a specific node in the ScyllaCluster.

      +

      These IP addresses are only routable within the same Kubernetes cluster, so it’s a good fit, if you don’t want to expose them to other networks.

      +

      Example:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    nodeService:
      +     type: ClusterIP
      +
      +
      +
      +
      +

      LoadBalancer Type

      +

      For the LoadBalancer type, Scylla Operator generates a LoadBalancer Service that directs traffic to a specific node within the ScyllaCluster. +On platforms with support for external load balancers, this Service provisions one. +The accessibility of this load balancer’s address depends on the platform and any customizations made; in some cases it may be reachable from the internal network or public Internet.

      +

      Customizations are usually managed via Service annotations, key-value pairs provided in annotations field are merged into each Service object. +LoadBalancer Services should be configured to pass through entire traffic.
      +For example, to expose LoadBalancer only to internal network use the following annotations:

      +
      + +
      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    nodeService:
      +     type: LoadBalancer
      +     annotations:
      +       service.beta.kubernetes.io/aws-load-balancer-scheme: internal
      +       service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
      +
      +
      +
      + +
      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    nodeService:
      +     type: LoadBalancer
      +     annotations:
      +       networking.gke.io/load-balancer-type: Internal
      +
      +
      +
      +
      +

      Check platform-specific documentation regarding LoadBalancer configuration to learn more about available options.

      +

      LoadBalancer Service is a superset of ClusterIP Service, implying that each LoadBalancer Service also contains an allocated ClusterIP. +They can be configured using the following fields, which propagate to every node Service:

      +
        +
      • externalTrafficPolicy

      • +
      • internalTrafficPolicy

      • +
      • loadBalancerClass

      • +
      • allocateLoadBalancerNodePorts

      • +
      +

      Check Kubernetes Service documentation to learn more about these options.

      +

      Example:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    nodeService:
      +     type: LoadBalancer
      +     loadBalancerClass: my-custom-load-balancer-class
      +
      +
      +
      +
      +
      +
      +

      Broadcast Options

      +

      Broadcast options control what is the source of the address being broadcasted to clients and nodes. +It’s configured independently for clients and nodes because you may want to expose these two types of traffic on different networks. +Using different networks can help manage costs, reliability, latency, security policies or other metrics you care about.

      +
      +

      PodIP Type

      +

      Address broadcasted to clients/nodes is taken from Pod. +By default, the address is taken from Pod’s status.PodIP field. +Because a Pod can use multiple address, you may want to provide source options by specifying podIP.source.

      +

      Example:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    broadcastOptions:
      +       clients:
      +         type: PodIP
      +         podIP:
      +           source: Status
      +
      +
      +
      +
      +

      ServiceClusterIP Type

      +

      Address broadcasted to clients or nodes is taken from spec.ClusterIP field of a node’s dedicated Service.

      +

      In order to configure it, the nodeService template must specify a Service having a ClusterIP assigned.

      +

      Example:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    broadcastOptions:
      +       clients:
      +         type: ServiceClusterIP
      +
      +
      +
      +
      +

      ServiceLoadBalancerIngress Type

      +

      Address broadcasted to clients/nodes is taken from the node dedicated Service, from status.ingress[0].ipAddress or status.ingress[0].hostname field.

      +

      In order to configure it, the nodeService template must specify the LoadBalancer Service.

      +

      Example:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    broadcastOptions:
      +       clients:
      +         type: ServiceLoadBalancerIngress
      +         podIP:
      +           source: Status
      +
      +
      +
      +
      +
      +
      +

      Deployment Examples

      +

      The following section contains several specific examples of various network scenarios and explains how nodes and clients communicate with one another.

      +
      +

      In-cluster only

      +

      ScyllaCluster definition:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    nodeService:
      +      type: ClusterIP
      +    broadcastOptions:
      +      clients:
      +        type: ServiceClusterIP
      +      nodes:
      +        type: ServiceClusterIP
      +
      +
      +

      Both client and nodes are deployed within the same Kubernetes cluster. +They talk through ClusterIP addresses taken from the Service. +Because ClusterIP Services are only routable within the same Kubernetes cluster, this cluster won’t be reachable from outside.

      +

      ClusterIPs

      +
      +
      +

      In-cluster node-to-node, VPC clients-to-nodes

      +

      ScyllaCluster definition:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    nodeService:
      +      type: ClusterIP
      +    broadcastOptions:
      +      clients:
      +        type: PodIP
      +      nodes:
      +        type: ServiceClusterIP
      +
      +
      +

      In this scenario, we assume that the Pod IP subnet is routable within a VPC. +Clients within the VPC network can communicate directly with ScyllaCluster nodes using PodIPs. +Nodes communicate with each other exclusively within the same Kubernetes cluster.

      +

      PodIPs

      +
      +
      +

      Multi VPC

      +

      ScyllaCluster definition:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    nodeService:
      +      type: Headless
      +    broadcastOptions:
      +      clients:
      +        type: PodIP
      +      nodes:
      +        type: PodIP
      +
      +
      +

      In this scenario, we set up two separate Kubernetes clusters in distinct VPCs. +These VPCs are interconnected to facilitate inter-VPC connectivity. +We operate on the assumption that the Pod IP subnet is routable within each VPC.

      +

      Both ScyllaClusters use the same exposeOptions, nodes broadcast their Pod IP addresses, enabling them to establish connections with one another. +****Check other documentation pages to know how to connect two ScyllaClusters into one logical cluster.

      +

      Clients, whether deployed within the same Kubernetes cluster or within a VPC, have the capability to reach nodes using their Pod IPs. +Since there is no requirement for any address other than the Pod IP, the Headless service type is sufficient.

      +

      MultiVPC

      +
      +
      +

      Internet

      +

      ScyllaCluster definition:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    nodeService:
      +      type: LoadBalancer
      +    broadcastOptions:
      +      clients:
      +        type: ServiceLoadBalancerIngress
      +      nodes:
      +        type: ClusterIP 
      +
      +
      +

      We assume that a Kubernetes cluster has been deployed in a cloud provider environment that supports external load balancers. +By specifying the LoadBalancer type in the nodeService template, the Scylla Operator generates a dedicated LB Service for each node. +The cloud provider then establishes an external load balancer with an internet-accessible address. +ScyllaDB nodes broadcast this external address to clients, enabling drivers to connect and discover other nodes. +Since all ScyllaDB nodes reside within the same Kubernetes cluster, there is no need to route traffic through the internet. +Consequently, the nodes are configured to communicate via ClusterIP, which is also accessible within LoadBalancer Services.

      +

      Internet

      +
      +

      Other more complex scenarios can be built upon these simple ones.

      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/generic.html b/master/generic.html new file mode 100644 index 00000000000..3f005a2656f --- /dev/null +++ b/master/generic.html @@ -0,0 +1,964 @@ + + + + + + + + + + + + + Deploying Scylla on a Kubernetes Cluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Deploying Scylla on a Kubernetes Cluster

      +

      This is a guide to deploy a Scylla Cluster in a generic Kubernetes environment, meaning that Scylla will not be deployed with the ideal performance. +Scylla performs the best when it has fast disks and direct access to the cpu. +This requires some extra setup, which is platform-specific. +For specific configuration and setup, check for details about your particular environment:

      + +
      +

      Prerequisites

      + +
      +
      +

      Running locally

      +

      Running kubernetes locally is a daunting and error prone task. +Fortunately there are ways to make life easier and Minikube makes it a breeze.

      +

      We need to give minikube a little bit more resources than default so start minikube like this:

      +
      minikube start --cpus=6
      +
      +
      +

      Then make kubectl aware of this local installation like this:

      +
      eval $(minikube docker-env)
      +
      +
      +
      +
      +

      Download Scylla Operator

      +

      In this guide you will be using the examples and manifests from Scylla Operator repository, so start off by cloning it to your local machine.

      +
      git clone git@github.com:scylladb/scylla-operator.git
      +cd scylla-operator
      +
      +
      +
      +
      +

      Deploy Cert Manager

      +

      First deploy Cert Manager, you can either follow upsteam instructions or use following command:

      +
      kubectl apply -f examples/common/cert-manager.yaml
      +
      +
      +

      This will install Cert Manager to provision a self-signed certificate.

      +

      Once it’s deployed, wait until Cert Manager is ready:

      +
      kubectl wait --for condition=established crd/certificates.cert-manager.io crd/issuers.cert-manager.io
      +kubectl -n cert-manager rollout status deployment.apps/cert-manager-webhook
      +
      +
      +
      +
      +

      Deploy Scylla Operator

      +

      Deploy the Scylla Operator using the following commands:

      +
      kubectl apply -f deploy/operator.yaml
      +
      +
      +

      This will install the operator in namespace scylla-operator. +Wait until it’s ready:

      +
      kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
      +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
      +
      +
      +

      If you want to check the logs of the operator you can do so with:

      +
      kubectl -n scylla-operator logs deployment.apps/scylla-operator
      +
      +
      +
      +
      +

      Create and Initialize a Scylla Cluster

      +

      Now that the operator is running, we can create an instance of a Scylla cluster by creating an instance of the clusters.scylla.scylladb.com resource. +Some of that resource’s values are configurable, so feel free to browse cluster.yaml and tweak the settings to your liking. +Full details for all the configuration options can be found in the Scylla Cluster CRD documentation.

      +

      When you are ready to create a Scylla cluster, simply run:

      +
      kubectl create -f examples/generic/cluster.yaml
      +
      +
      +

      We can verify that a Kubernetes object has been created that represents our new Scylla cluster with the command below. +This is important because it shows that has successfully extended Kubernetes to make Scylla clusters a first class citizen in the Kubernetes cloud-native environment.

      +
      kubectl -n scylla get ScyllaCluster
      +
      +
      +

      Checking the pods that are created is as easy as:

      +
      kubectl -n scylla get pods
      +
      +
      +

      The output should be something like:

      +
      NAME                                    READY   STATUS    RESTARTS   AGE
      +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          9m49s
      +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          7m43s
      +simple-cluster-us-east-1-us-east-1a-2   2/2     Running   0          6m46s
      +
      +
      +

      It is important to note that the operator creates these instances according to a pattern. +This pattern is as follows: CLUSTER_NAME-DATACENTER_NAME-RACK_NAME-INSTANCE_NUMBER as specified in cluster.yaml.

      +

      In the above example we have the following properties:

      +
        +
      • CLUSTER_NAME: simple-cluster

      • +
      • DATACENTER_NAME: us-east-1

      • +
      • RACK_NAME: us-east-1a

      • +
      • INSTANCE_NUMBER: An automatically generated number attached to the pod name.

      • +
      +

      We picked the names to resemble something you can find in a cloud service but this is inconsequential, they can be set to anything you want.

      +

      To check if all the desired members are running, you should see the same number of entries from the following command as the number of members that was specified in cluster.yaml:

      +
      kubectl -n scylla get pod -l app=scylla
      +
      +
      +

      You can also track the state of a Scylla cluster from its status. To check the current status of a Cluster, run:

      +
      kubectl -n scylla describe ScyllaCluster simple-cluster
      +
      +
      +

      Checking the logs of the running scylla instances can be done like this:

      +
      kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 scylla
      +
      +
      +
      +

      Configure container kernel parameters

      +

      Sometimes it is necessary to run the container with different kernel parameters. +In order to support this, the Scylla Operator defines a cluster property sysctls that is a list of the desired key-value pairs to set.

      +

      For example: To increase the number events available for asynchronous IO processing in the Linux kernel to N set sysctls tofs.aio-max-nr=N.

      +
      spec:
      +  sysctls:
      +  - "fs.aio-max-nr=2097152"
      +
      +
      +
      +
      +

      Deploying Alternator

      +

      The operator is also capable of deploying Alternator instead of the regular Scylla. +This requires a small change in the cluster definition. +Change the cluster.yaml file from this:

      +
      spec:
      +  agentVersion: 3.3.3
      +  version: 6.1.1
      +  developerMode: true
      +  datacenter:
      +    name: us-east-1
      +
      +
      +

      to this:

      +
      spec:
      +  version: 6.1.1
      +  alternator:
      +    port: 8000
      +    writeIsolation: only_rmw_uses_lwt
      +  agentVersion: 3.3.3
      +  developerMode: true
      +  datacenter:
      +    name: us-east-1
      +
      +
      +

      You can specify whichever port you want.

      +

      You must provide desired write isolation, supported values are: “always”, “forbid_rmw”, “only_rmw_uses_lwt”. +Difference between those isolation levels can be found in Scylla Alternator documentation.

      +

      Once this is done the regular CQL ports will no longer be available, the cluster is a pure Alternator cluster.

      +
      +
      +
      +

      Accessing the Database

      +
        +
      • From kubectl:

      • +
      +

      To get a cqlsh shell in your new Cluster:

      +
      kubectl exec -n scylla -it simple-cluster-us-east-1-us-east-1a-0 -- cqlsh
      +> DESCRIBE KEYSPACES;
      +
      +
      +
        +
      • From inside a Pod:

      • +
      +

      When you create a new Cluster, automatically creates a Service for the clients to use in order to access the Cluster. +The service’s name follows the convention <cluster-name>-client. +You can see this Service in your cluster by running:

      +
      kubectl -n scylla describe service simple-cluster-client
      +
      +
      +

      Pods running inside the Kubernetes cluster can use this Service to connect to Scylla. +Here’s an example using the Python Driver:

      +
      from cassandra.cluster import Cluster
      +
      +cluster = Cluster(['simple-cluster-client.scylla.svc'])
      +session = cluster.connect()
      +
      +
      +

      If you are running the Alternator you can access the API on the port you specified using plain http.

      +
      +
      +

      Configure Scylla

      +

      The operator can take a ConfigMap and apply it to the scylla.yaml configuration file. +This is done by adding a ConfigMap to Kubernetes and refering to this in the Rack specification. +The ConfigMap is just a file called scylla.yaml that has the properties you want to change in it. +The operator will take the default properties for the rest of the configuration.

      +
        +
      • Create a ConfigMap the default name that the operator uses is scylla-config:

      • +
      +
      kubectl create configmap scylla-config -n scylla --from-file=/path/to/scylla.yaml
      +
      +
      +
        +
      • Wait for the mount to propagate and then restart the cluster:

      • +
      +
      kubectl rollout restart -n scylla statefulset/simple-cluster-us-east-1-us-east-1a
      +
      +
      +
        +
      • The new config should be applied automatically by the operator, check the logs to be sure.

      • +
      +

      Configuring cassandra-rackdc.properties is done by adding the file to the same mount as scylla.yaml.

      +
      kubectl create configmap scylla-config -n scylla --from-file=/tmp/scylla.yaml --from-file=/tmp/cassandra-rackdc.properties -o yaml --dry-run | kubectl replace -f -
      +
      +
      +

      The operator will then apply the overridable properties prefer_local and dc_suffix if they are available in the provided mounted file.

      +
      +

      Note

      +

      If you want to enable authentication, you first need to adjust system_auth keyspace replication factor to the number of nodes in the datacenter via cqlsh. It allows you to ensure that the user’s information is kept highly available for the cluster. If system_auth is not equal to the number of nodes and a node fails, the user whose information is on that node will be denied access. +For production environments only use NetworkTopologyStrategy.

      +
      kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : <replication_factor>};"
      +
      +
      +

      You can read more about enabling authentication in the Enable authentication section of ScyllaDB’s documentation.

      +
      +
      +
      +

      Configure Scylla Manager Agent

      +

      The operator creates a second container for each scylla instance that runs Scylla Manager Agent. +This container serves as a sidecar and it’s the main endpoint for interacting with Scylla API. +The Scylla Manager Agent can be configured with various things such as the security token used to allow access to Scylla API and storage providers for backups.

      +

      To configure the agent you just create a new secret called scylla-agent-config-secret and populate it with the contents in the scylla-manager-agent.yaml file like this:

      +
      kubectl create secret -n scylla generic scylla-agent-config-secret --from-file scylla-manager-agent.yaml
      +
      +
      +

      See Scylla Manager Agent configuration for a complete reference of the Scylla Manager agent config file.

      +
      +

      Scylla Manager Agent auth token

      +

      Operator provisions Agent auth token by copying value from user provided config secret or auto generates it if it’s empty. +To check which value is being used, decode content of <cluster-name>-auth-token secret. +To change it simply remove the secret. Operator will create a new one. To pick up the change in the cluster, initiate a rolling restart.

      +
      +
      +
      +

      Set up monitoring

      +

      To set up monitoring using Prometheus and Grafana follow this guide.

      +
      +
      +

      Scale a ScyllaCluster

      +

      The operator supports adding new nodes to existing racks, adding new racks to the cluster, as well as removing both single nodes and entire racks. To introduce the changes, edit the cluster with:

      +
      kubectl -n scylla edit scyllaclusters.scylla.scylladb.com/simple-cluster
      +
      +
      +
        +
      • To modify the number of nodes in a rack, update the members field of the selected rack to a desired value.

      • +
      • To add a new rack, append it to the .spec.datacenter.racks list. Remember to choose a unique rack name for the new rack.

      • +
      • To remove a rack, first scale it down to zero nodes, and then remove it from .spec.datacenter.racks list.

      • +
      +

      Having edited and saved the yaml, you can check your cluster’s Status and Events to retrieve information about what’s happening:

      +
      kubectl -n scylla describe scyllaclusters.scylla.scylladb.com/simple-cluster
      +
      +
      +
      +

      Note

      +

      If you have configured ScyllaDB with authenticator set to PasswordAuthenticator, you need to manually configure the replication factor of the system_auth keyspace with every scaling operation.

      +
      kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -u <username> -p <password> -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : <new_replication_factor>};"
      +
      +
      +

      It is recommended to set system_auth replication factor to the number of nodes in each datacenter.

      +
      +
      +
      +

      Benchmark with cassandra-stress

      +

      After deploying our cluster along with the monitoring, we can benchmark it using cassandra-stress and see its performance in Grafana. We have a mini cli that generates Kubernetes Jobs that run cassandra-stress against a cluster.

      +
      +

      Because cassandra-stress doesn’t scale well to multiple cores, we use multiple jobs with a small core count for each

      +
      +
      # Run a benchmark with 10 jobs, with 6 cpus and 50.000.000 operations each.
      +# Each Job will throttle throughput to 30.000 ops/sec for a total of 300.000 ops/sec.
      +hack/cass-stress-gen.py --num-jobs=10 --cpu=6 --memory=20G --ops=50000000 --limit=30000
      +kubectl apply -f scripts/cassandra-stress.yaml
      +
      +
      +

      Make sure you set the proper arguments in case you have altered things such as name or namespace.

      +
      ./hack/cass-stress-gen.py -h
      +usage: cass-stress-gen.py [-h] [--num-jobs NUM_JOBS] [--name NAME] [--namespace NAMESPACE] [--scylla-version SCYLLA_VERSION] [--host HOST] [--cpu CPU] [--memory MEMORY] [--ops OPS] [--threads THREADS] [--limit LIMIT]
      +                          [--connections-per-host CONNECTIONS_PER_HOST] [--print-to-stdout] [--nodeselector NODESELECTOR]
      +
      +Generate cassandra-stress job templates for Kubernetes.
      +
      +optional arguments:
      +  -h, --help            show this help message and exit
      +  --num-jobs NUM_JOBS   number of Kubernetes jobs to generate - defaults to 1
      +  --name NAME           name of the generated yaml file - defaults to cassandra-stress
      +  --namespace NAMESPACE
      +                        namespace of the cassandra-stress jobs - defaults to "default"
      +  --scylla-version SCYLLA_VERSION
      +                        version of scylla server to use for cassandra-stress - defaults to 4.0.0
      +  --host HOST           ip or dns name of host to connect to - defaults to scylla-cluster-client.scylla.svc
      +  --cpu CPU             number of cpus that will be used for each job - defaults to 1
      +  --memory MEMORY       memory that will be used for each job in GB, ie 2G - defaults to 2G * cpu
      +  --ops OPS             number of operations for each job - defaults to 10000000
      +  --threads THREADS     number of threads used for each job - defaults to 50 * cpu
      +  --limit LIMIT         rate limit for each job - defaults to no rate-limiting
      +  --connections-per-host CONNECTIONS_PER_HOST
      +                        number of connections per host - defaults to number of cpus
      +  --print-to-stdout     print to stdout instead of writing to a file
      +  --nodeselector NODESELECTOR
      +                        nodeselector limits cassandra-stress pods to certain nodes. Use as a label selector, eg. --nodeselector role=scylla
      +
      +
      +

      While the benchmark is running, open up Grafana and take a look at the monitoring metrics.

      +

      After the Jobs finish, clean them up with:

      +
      kubectl delete -f scripts/cassandra-stress.yaml
      +
      +
      +
      +
      +

      Clean Up

      +

      To clean up all resources associated with this walk-through, you can run the commands below.

      +

      NOTE: this will destroy your database and delete all of its associated data.

      +
      kubectl delete -f examples/generic/cluster.yaml
      +kubectl delete -f deploy/operator.yaml
      +kubectl delete -f examples/common/cert-manager.yaml
      +
      +
      +
      +
      +

      Troubleshooting

      +

      If the cluster does not come up, the first step would be to examine the operator’s logs:

      +
      kubectl -n scylla-operator logs deployment.apps/scylla-operator
      +
      +
      +

      If everything looks OK in the operator logs, you can also look in the logs for one of the Scylla instances:

      +
      kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/genindex.html b/master/genindex.html new file mode 100644 index 00000000000..53e42657cf6 --- /dev/null +++ b/master/genindex.html @@ -0,0 +1,583 @@ + + + + + + + + + + + + + Index | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + + + +
      + + + + + +
      + + +
      + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/gke.html b/master/gke.html new file mode 100644 index 00000000000..dd5c13880e2 --- /dev/null +++ b/master/gke.html @@ -0,0 +1,800 @@ + + + + + + + + + + + + + Deploying Scylla on GKE | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Deploying Scylla on GKE

      +

      This guide is focused on deploying Scylla on GKE with maximum performance (without any persistence guarantees). +It sets up the kubelets on GKE nodes to run with static cpu policy and uses local sdd disks in RAID0 for maximum performance.

      +

      Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the general guide.

      +
      +

      TL;DR;

      +

      If you don’t want to run the commands step-by-step, you can just run a script that will set everything up for you:

      +
      # Edit according to your preference
      +GCP_USER=$(gcloud config list account --format "value(core.account)")
      +GCP_PROJECT=$(gcloud config list project --format "value(core.project)")
      +GCP_ZONE=us-west1-b
      +
      +# From inside the examples/gke folder
      +cd examples/gke
      +./gke.sh -u "$GCP_USER" -p "$GCP_PROJECT" -z "$GCP_ZONE"
      +
      +# Example:
      +# ./gke.sh -u yanniszark@arrikto.com -p gke-demo-226716 -z us-west1-b
      +
      +
      +
      +

      Warning

      +

      Make sure to pass a ZONE (ex.: us-west1-b) and not a REGION (ex.: us-west1) or it will deploy nodes in each ZONE available in the region.

      +
      +

      After you deploy, see how you can benchmark your cluster with cassandra-stress.

      +
      +
      +

      Walkthrough

      +
      +

      Google Kubernetes Engine Setup

      +
      +

      Configure environment variables

      +

      First of all, we export all the configuration options as environment variables. +Edit according to your own environment.

      +
      GCP_USER=$( gcloud config list account --format "value(core.account)" )
      +GCP_PROJECT=$( gcloud config list project --format "value(core.project)" )
      +GCP_REGION=us-west1
      +GCP_ZONE=us-west1-b
      +CLUSTER_NAME=scylla-demo
      +CLUSTER_VERSION=$( gcloud container get-server-config --zone ${GCP_ZONE} --format "value(validMasterVersions[0])" )
      +
      +
      +
      +
      +

      Creating a GKE cluster

      +

      First we need to change kubelet CPU Manager policy to static by providing a config file. Create file called systemconfig.yaml with the following content:

      +
      kubeletConfig:
      +  cpuManagerPolicy: static
      +
      +
      +

      Then we’ll create a GKE cluster with the following:

      +
        +
      1. A NodePool of 2 n1-standard-8 Nodes, where the operator and the monitoring stack will be deployed. These are generic Nodes and their free capacity can be used for other purposes.

        +
        gcloud container \
        +clusters create "${CLUSTER_NAME}" \
        +--cluster-version "${CLUSTER_VERSION}" \
        +--node-version "${CLUSTER_VERSION}" \
        +--machine-type "n1-standard-8" \
        +--num-nodes "2" \
        +--disk-type "pd-ssd" --disk-size "20" \
        +--image-type "UBUNTU_CONTAINERD" \
        +--enable-stackdriver-kubernetes \
        +--no-enable-autoupgrade \
        +--no-enable-autorepair
        +
        +
        +
      2. +
      3. A NodePool of 2 n1-standard-32 Nodes to deploy cassandra-stress later on.

        +
        gcloud container --project "${GCP_PROJECT}" \
        +node-pools create "cassandra-stress-pool" \
        +--cluster "${CLUSTER_NAME}" \
        +--zone "${GCP_ZONE}" \
        +--node-version "${CLUSTER_VERSION}" \
        +--machine-type "n1-standard-32" \
        +--num-nodes "2" \
        +--disk-type "pd-ssd" --disk-size "20" \
        +--node-taints role=cassandra-stress:NoSchedule \
        +--image-type "UBUNTU_CONTAINERD" \
        +--no-enable-autoupgrade \
        +--no-enable-autorepair
        +
        +
        +
      4. +
      5. A NodePool of 4 n1-standard-32 Nodes, where the Scylla Pods will be deployed. Each of these Nodes has 8 local NVMe SSDs attached, which are provided as raw block devices. It is important to disable autoupgrade and autorepair. Automatic cluster upgrade or node repair has a hard timeout after which it no longer respect PDBs and force deletes the Compute Engine instances, which also deletes all data on the local SSDs. At this point, it’s better to handle upgrades manually, with more control over the process and error handling.

        +
        gcloud container \
        +node-pools create "scylla-pool" \
        +--cluster "${CLUSTER_NAME}" \
        +--node-version "${CLUSTER_VERSION}" \
        +--machine-type "n1-standard-32" \
        +--num-nodes "4" \
        +--disk-type "pd-ssd" --disk-size "20" \
        +--local-nvme-ssd-block count="8" \
        +--node-taints role=scylla-clusters:NoSchedule \
        +--node-labels scylla.scylladb.com/node-type=scylla \
        +--image-type "UBUNTU_CONTAINERD" \
        +--system-config-from-file=systemconfig.yaml \
        +--no-enable-autoupgrade \
        +--no-enable-autorepair
        +
        +
        +
      6. +
      +
      +
      +

      Setting Yourself as cluster-admin

      +
      +

      (By default GKE doesn’t give you the necessary RBAC permissions)

      +
      +

      Get the credentials for your new cluster

      +
      gcloud container clusters get-credentials "${CLUSTER_NAME}" --zone="${GCP_ZONE}"
      +
      +
      +

      Create a ClusterRoleBinding for your user. +In order for this to work you need to have at least permission container.clusterRoleBindings.create. +The easiest way to obtain this permission is to enable the Kubernetes Engine Admin role for your user in the GCP IAM web interface.

      +
      kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user "${GCP_USER}"
      +
      +
      +
      +
      +
      +

      Prerequisites

      +
      +
      +

      Deploying ScyllaDB Operator

      +

      Refer to Deploying Scylla on a Kubernetes Cluster in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites.

      +
      +

      Setting up nodes for ScyllaDB

      +

      ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you’ll first need to form a RAID array from those disks. +NodeConfig performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in Performance tuning section of ScyllaDB Operator’s documentation.

      +

      Deploy NodeConfig to let it take care of the above operations:

      +
      kubectl apply --server-side -f examples/gke/nodeconfig-alpha.yaml
      +
      +
      +
      +
      +

      Deploying Local Volume Provisioner

      +

      Afterwards, deploy ScyllaDB’s Local Volume Provisioner, capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays.

      +
      kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/
      +kubectl apply --server-side -f examples/common/local-volume-provisioner/storageclass_xfs.yaml
      +
      +
      +
      +
      +
      +

      Deploy Scylla cluster

      +

      In order for the example to work you need to modify the cluster definition in the following way:

      +
      sed -i "s/<gcp_region>/${GCP_REGION}/g;s/<gcp_zone>/${GCP_ZONE}/g" examples/gke/cluster.yaml
      +
      +
      +

      This will inject your region and zone into the cluster definition so that it matches the kubernetes cluster you just created.

      +
      +
      +

      Deploying ScyllaDB

      +

      Now you can follow the steps described in Deploying Scylla on a Kubernetes Cluster to launch your ScyllaDB cluster in a highly performant environment.

      +
      +

      Accessing the database

      +

      Instructions on how to access the database can also be found in the generic guide.

      +
      +
      +
      +

      Deleting a GKE cluster

      +

      Once you are done with your experiments delete your cluster using the following command:

      +
      gcloud container --project "${GCP_PROJECT}" clusters delete --zone "${GCP_ZONE}" "${CLUSTER_NAME}"
      +
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/helm.html b/master/helm.html new file mode 100644 index 00000000000..1a80ad5b9c2 --- /dev/null +++ b/master/helm.html @@ -0,0 +1,948 @@ + + + + + + + + + + + + + Deploying Scylla stack using Helm Charts | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Deploying Scylla stack using Helm Charts

      +

      In this example we will install Scylla stack on Kubernetes. This includes the following components:

      +
        +
      • Scylla Operator

      • +
      • Scylla Manager

      • +
      • Scylla

      • +
      +

      We will use Minikube K8s cluster, but this could be any K8s cluster supported by the Scylla Operator.

      +
      +

      Prerequisites

      +
        +
      • Kubernetes 1.16+

      • +
      • Helm 3+

      • +
      +
      +
      +

      TL;DR

      +
      helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable
      +helm repo update
      +kubectl apply -f examples/common/cert-manager.yaml 
      +helm install scylla-operator scylla/scylla-operator --create-namespace --namespace scylla-operator
      +helm install scylla-manager scylla/scylla-manager --create-namespace --namespace scylla-manager
      +helm install scylla scylla/scylla --create-namespace --namespace scylla
      +
      +
      +
      +
      +

      Deploy Cert Manager

      +

      This step is optional if you want to use your own certificate. +If you don’t have one, make sure to not disable autogeneration using Scylla Operator Helm Chart.

      +

      First deploy Cert Manager, you can either follow upsteam instructions or use following command:

      +
      kubectl apply -f examples/common/cert-manager.yaml
      +
      +
      +

      Once it’s deployed, wait until all Cert Manager pods will enter into Running state:

      +
      kubectl wait -n cert-manager --for=condition=ready pod -l app=cert-manager --timeout=60s
      +
      +
      +
      +
      +

      Helm Chart repository

      +

      To install Scylla Helm Chart repository execute the following commands:

      +
      helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable
      +helm repo update
      +
      +
      +

      Then you can search through repository, it should contain at least three Helm charts:

      +
      helm search repo scylla
      +NAME                   CHART VERSION   APP VERSION     DESCRIPTION                                       
      +scylla/scylla          1.0.1           v1.0.1          Scylla is a close-to-the-hardware rewrite of Ca...
      +scylla/scylla-manager  1.0.1           v1.0.1          Scylla Manager automates database operations.     
      +scylla/scylla-operator 1.0.1           v1.0.1          Scylla Operator is a Kubernetes Operator for ma...
      +
      +
      +

      All these charts should be installable without any need of customizing (defaults are provided). +Although Helm is used for this particular reason, so lets customize them a bit.

      +
      +
      +

      Scylla Operator Chart

      +

      This chart is very simple, most interesting customizable fields are image, resources and webhook. +All others can be looked up in Chart source in Scylla Operator repository.

      +
      +

      image

      +

      Image allows to define which Scylla Operator image will be used. By default it downloads the image from main +Docker Hub repository, using version defined in Helm Chart. +You can also change pullPolicy if default one does not +fullfill your needs. In Kubernetes documentation you +can read more about different pull policies.

      +

      Image URL will be composed based on these fields in follwing pattern: +repository/scylla-operator:tag

      +
      image:
      +  repository: scylladb
      +  pullPolicy: IfNotPresent
      +  tag: ""
      +
      +
      +
      +
      +

      resources

      +

      You can customize how much resources will be allocated for Operator pods via resource field:

      +
      resources:
      +  limits:
      +    cpu: 100m
      +    memory: 128Mi
      +  requests:
      +    cpu: 100m
      +    memory: 32Mi
      +
      +
      +

      To read more about resource specification, follow Kubernetes documentation.

      +
      +
      +

      webhook

      +

      Webhook field allows to decide whether you want to use autogenerated self-signed certificate using Cert Manager or +whether you want to provide your own certificate.

      +

      createSelfSignedCertificate specifies whether a self-signed certificate should be created using Cert Manager +certificateSecretName: name of a secret containing custom certificate.

      +
      webhook:
      +  createSelfSignedCertificate: true
      +  certificateSecretName: ""
      +
      +
      +
      +
      +

      Customization

      +

      You can customize all these fields and others by providing file containing desired values. +Content of this file will overwrite default values.

      +

      You can find an example in Scylla Operator repository under examples/helm/values.operator.yaml

      +
      +
      +

      Installation

      +

      To deploy Scylla Operator using customized values file execute the following:

      +
      helm install scylla-operator scylla/scylla-operator --values examples/helm/values.operator.yaml --create-namespace --namespace scylla-operator
      +
      +
      +
      +
      +
      +

      Scylla Helm Chart

      +

      Scylla Chart allows to customize and deploy Scylla cluster. +By default Scylla Helm charts deploys working Scylla cluster, but of course we can customize it.

      +
      +

      Customization

      +

      Versions of images used in the cluster can be set via scyllaImage and agentImage

      +
      scyllaImage:
      +  repository: scylladb/scylla
      +  tag: 4.3.0
      +
      +agentImage:
      +  repository: scylladb/scylla-manager-agent
      +  tag: 2.2.1
      +
      +
      +

      A minimal Scylla cluster can be expressed as:

      +
      datacenter: us-east-1
      +racks:
      +- name: us-east-1b
      +  members: 2
      +  storage:
      +    capacity: 5G
      +  resources:
      +    limits:
      +      cpu: 1
      +      memory: 1Gi
      +    requests:
      +      cpu: 1
      +      memory: 1Gi
      +
      +
      +

      Above cluster will use 4.3.0 Scylla, 2.2.1 Scylla Manager Agent sidecar and will have a single rack having 2 nodes. +Each node will have a single CPU and 1 GiB of memory.

      +

      For other customizable fields, please refer to ScyllaCluster CRD. +CRD Rack Spec and Helm Chart Rack should have the same fields.

      +
      +
      +

      Installation

      +

      To deploy Scylla cluster using customzied values file execute the following command:

      +
      helm install scylla scylla/scylla --values examples/helm/values.cluster.yaml --create-namespace --namespace scylla
      +
      +
      +

      Scylla Operator will provision this cluster on your K8s environment.

      +
      +
      +
      +

      Scylla Manager Helm Chart

      +

      Scylla Manager Chart allows to customize and deploy Scylla Manager in K8s environment. +Scylla Manager consist of two applications (Scylla Manager itself and Scylla Manager Controller) and additional Scylla cluster.

      +

      To read more about Scylla Manager see Manager guide.

      +
      +

      Scylla Manager

      +

      To set version of used Scylla Manager you can use image field:

      +
      image:
      +  repository: scylladb
      +  pullPolicy: IfNotPresent
      +  tag: 2.2.1
      +
      +
      +

      To control how many resources are allocated for Scylla Manager use resource field:

      +
      resources:
      +  limits:
      +    cpu: 500m
      +    memory: 500Mi
      +  requests:
      +    cpu: 500m
      +    memory: 500Mi
      +
      +
      +
      +
      +

      Scylla Manager Controller

      +

      Similarly Scylla Manager Controller image can be customized:

      +
      controllerImage:
      +  repository: scylladb
      +  pullPolicy: IfNotPresent
      +  tag: ""
      +
      +
      +

      And allocated resources:

      +
      controllerResources:
      +  limits:
      +    cpu: 100m
      +    memory: 30Mi
      +  requests:
      +    cpu: 100m
      +    memory: 20Mi
      +
      +
      +
      +
      +

      Scylla

      +

      To customize internal Scylla instance dedicated to Scylla Manager, see guide above customizing Scylla Helm Chart. +It’s definition should land as a scylla field.

      +
      +
      +

      Customization

      +

      All others customizable fields can be looked up in Chart source in Scylla Operator repository.

      +
      +
      +

      Installation

      +

      To deploy Scylla Manager using customized values file execute the following command:

      +
      helm install scylla-manager scylla/scylla-manager --values examples/helm/values.manager.yaml --create-namespace --namespace scylla-manager
      +
      +
      +
      +
      +
      +

      Results

      +

      Scylla need some time to bootstrap all nodes, but after some time you should be ready to roll. It was simple isn’t it? +You can validate if everything was set up correctly by looking at the all resources created in used namespaces.

      +

      Scylla Operator:

      +
      $ kubectl -n scylla-operator get all
      +
      +NAME                                   READY   STATUS    RESTARTS   AGE
      +pod/scylla-operator-5dbcb54f5c-vjm4m   1/1     Running   0          51s
      +pod/scylla-operator-5dbcb54f5c-wfjbw   1/1     Running   0          51s
      +
      +NAME                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
      +service/scylla-operator-webhook   ClusterIP   10.105.207.130   <none>        443/TCP   51s
      +
      +NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
      +deployment.apps/scylla-operator   2/2     2            2           51s
      +
      +NAME                                         DESIRED   CURRENT   READY   AGE
      +replicaset.apps/scylla-operator-5dbcb54f5c   2         2         2       51s
      +
      +
      +

      Operator is running!

      +

      Scylla Manager:

      +
      $ kubectl -n scylla-manager get all 
      +
      +NAME                                             READY   STATUS    RESTARTS   AGE
      +pod/scylla-manager-669db64dd-bcm4v               1/1     Running   0          89s
      +pod/scylla-manager-controller-844ccc56c4-drbth   1/1     Running   0          89s
      +pod/scylla-manager-controller-844ccc56c4-rhwqx   1/1     Running   0          89s
      +
      +NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
      +service/scylla-manager          ClusterIP   10.105.231.53   <none>        80/TCP,5090/TCP     89s
      +service/scylla-manager-client   ClusterIP   None            <none>        9180/TCP,5090/TCP   89s
      +
      +NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
      +deployment.apps/scylla-manager              1/1     1            1           89s
      +deployment.apps/scylla-manager-controller   2/2     2            2           89s
      +
      +NAME                                                   DESIRED   CURRENT   READY   AGE
      +replicaset.apps/scylla-manager-669db64dd               1         1         1       89s
      +replicaset.apps/scylla-manager-controller-844ccc56c4   2         2         2       89s
      +
      +
      +

      Good to go, ready to serve!

      +

      Scylla itself:

      +
      $ kubectl -n scylla get all        
      +
      +NAME                                READY   STATUS    RESTARTS   AGE
      +pod/scylla-us-east-1-us-east-1b-0   2/2     Running   0          5m58s
      +pod/scylla-us-east-1-us-east-1b-1   2/2     Running   0          4m29s
      +
      +NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
      +service/scylla-client                   ClusterIP   None           <none>        9180/TCP,5090/TCP                                                 5m59s
      +service/scylla-us-east-1-us-east-1b-0   ClusterIP   10.43.149.92   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   5m58s
      +service/scylla-us-east-1-us-east-1b-1   ClusterIP   10.43.49.0     <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   4m29s
      +
      +NAME                                           READY   AGE
      +statefulset.apps/scylla-us-east-1-us-east-1b   2/2     5m59s
      +
      +
      +

      Two running nodes, exactly what we were asking for.

      +
      +
      +

      Monitoring

      +

      To spin up a Prometheus monitoring refer to monitoring guide.

      +

      Helm charts can create ServiceMonitors needed to observe Scylla Manager and Scylla. +Both of these Helm Charts allows to specify whether you want to create a ServiceMonitor:

      +
      serviceMonitor:
      +  create: false
      +
      +
      +

      Change create to true and update your current deployment using:

      +
      helm upgrade --install scylla --namespace scylla scylla/scylla -f examples/helm/values.cluster.yaml
      +
      +
      +

      Helm should notice the difference, install the ServiceMonitor, and then Prometheous will be able to scrape metrics.

      +
      +
      +

      Cleanup

      +

      To remove these applications you can simply uninstall them using Helm CLI:

      +
      helm uninstall scylla -n scylla
      +helm uninstall scylla-manager -n scylla-manager
      +helm uninstall scylla-operator -n scylla-operator
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/index.html b/master/index.html new file mode 100644 index 00000000000..896c140afb1 --- /dev/null +++ b/master/index.html @@ -0,0 +1,629 @@ + + + + + + + + + + + + + Scylla Operator Documentation | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Scylla Operator Documentation

      +
      +
      +

      Scylla Operator is an open source project which helps users of Scylla Open Source and Scylla Enterprise run Scylla on Kubernetes (K8s) +The Scylla operator manages Scylla clusters deployed to Kubernetes and automates tasks related to operating a Scylla cluster, like installation, out and downscale, rolling upgrades.

      +_images/logo.png +

      For the latest status of the project, and reports issue, see the Github Project. Also check out the K8s Operator lesson on Scylla University.

      +

      scylla-operator is a Kubernetes Operator for managing Scylla clusters.

      +

      Currently it supports:

      +
        +
      • Deploying multi-zone clusters

      • +
      • Scaling up or adding new racks

      • +
      • Scaling down

      • +
      • Monitoring with Prometheus and Grafana

      • +
      • Integration with Scylla Manager

      • +
      • Dead node replacement

      • +
      • Version Upgrade

      • +
      • Backup

      • +
      • Repairs

      • +
      • Autohealing

      • +
      +

      Choose a topic to begin:

      + +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/manager.html b/master/manager.html new file mode 100644 index 00000000000..10188d7dcc5 --- /dev/null +++ b/master/manager.html @@ -0,0 +1,835 @@ + + + + + + + + + + + + + Deploying Scylla Manager on a Kubernetes Cluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Deploying Scylla Manager on a Kubernetes Cluster

      +

      Scylla Manager is a product for database operations automation, +it can schedule tasks such as repairs and backups. +Scylla Manager can manage multiple Scylla clusters and run cluster-wide tasks +in a controlled and predictable way.

      +

      Scylla Manager is available for Scylla Enterprise customers and Scylla Open Source users. +With Scylla Open Source, Scylla Manager is limited to 5 nodes. +See the Scylla Manager Proprietary Software License Agreement for details.

      +
      +

      Prerequisites

      + +
      +
      +

      Architecture

      +

      Scylla Manager in K8s consist of:

      +
        +
      • Dedicated Scylla Cluster

        +

        Scylla Manager persists its state to a Scylla cluster. +Additional small single node cluster is spawned in the Manager namespace.

        +
      • +
      • Scylla Manager Controller

        +

        Main mission of Controller is to watch changes of Scylla Clusters, and synchronize three states.

        +
          +
        1. What user wants - task definition in CRD.

        2. +
        3. What Controller registered - Task name to Task ID mapping - CRD status.

        4. +
        5. Scylla Manager task listing - internal state of Scylla Manager.

        6. +
        +

        When Scylla Cluster CRD is being deployed Controller will register it in Scylla Manager once cluster reaches desired node count. +Once Cluster is fully up and running it will schedule all tasks defined in Cluster CRD. +Controller also supports task updates and unscheduling.

        +
      • +
      • Scylla Manager

        +

        Regular Scylla Manager, the same used in cloud and bare metal deployments.

        +
      • +
      +
      +
      +

      Deploy Scylla Manager

      +

      Deploy the Scylla Manager using the following commands:

      +
      kubectl apply -f deploy/manager-prod.yaml
      +
      +
      +

      This will install the Scylla Manager in the scylla-manager namespace. +You can check if the Scylla Manager is up and running with:

      +
      kubectl -n scylla-manager get pods
      +NAME                                               READY   STATUS    RESTARTS   AGE
      +scylla-manager-cluster-manager-dc-manager-rack-0   2/2     Running   0          37m
      +scylla-manager-controller-0                        1/1     Running   0          28m
      +scylla-manager-scylla-manager-7bd9f968b9-w25jw     1/1     Running   0          37m
      +
      +
      +

      As you can see there are three pods:

      +
        +
      • scylla-manager-cluster-manager-dc-manager-rack-0 - is a single node Scylla cluster.

      • +
      • scylla-manager-controller-0 - Scylla Manager Controller.

      • +
      • scylla-manager-scylla-manager-7bd9f968b9-w25jw - Scylla Manager.

      • +
      +

      To see if Scylla Manager is fully up and running we can check their logs. +To do this, execute following command:

      +
      kubectl -n scylla-manager logs scylla-manager-controller-0
      +
      +
      +

      The output should be something like:

      +
      {"L":"INFO","T":"2020-09-23T11:25:27.882Z","M":"Scylla Manager Controller started","version":"","build_date":"","commit":"","built_by":"","go_version":"","options":{"Name":"scylla-manager-controller-0","Namespace":"scylla-manager","LogLevel":"debug","ApiAddress":"http://127.0.0.1:5080/api/v1"},"_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"}
      +{"L":"INFO","T":"2020-09-23T11:25:28.435Z","M":"Registering Components.","_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"}
      +
      +
      +

      To check logs of Scylla Manager itself, use following command:

      +
      kubectl -n scylla-manager logs scylla-manager-scylla-manager-7bd9f968b9-w25jw
      +
      +
      +

      The output should be something like:

      +
      {"L":"INFO","T":"2020-09-23T11:26:53.238Z","M":"Scylla Manager Server","version":"2.1.2-0.20200816.76cc4dcc","pid":1,"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
      +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Using config","config":{"HTTP":"127.0.0.1:5080","HTTPS":"","TLSCertFile":"/var/lib/scylla-manager/scylla_manager.crt","TLSKeyFile":"/var/lib/scylla-manager/scylla_manager.key","TLSCAFile":"","Prometheus":":56090","PrometheusScrapeInterval":5000000000,"debug":"127.0.0.1:56112","Logger":{"Mode":"stderr","Level":"info","Development":false},"Database":{"Hosts":["scylla-manager-cluster-manager-dc-manager-rack-0.scylla-manager.svc"],"SSL":false,"User":"","Password":"","LocalDC":"","Keyspace":"scylla_manager","MigrateDir":"/etc/scylla-manager/cql","MigrateTimeout":30000000000,"MigrateMaxWaitSchemaAgreement":300000000000,"ReplicationFactor":1,"Timeout":600000000,"TokenAware":true},"SSL":{"CertFile":"","Validate":true,"UserCertFile":"","UserKeyFile":""},"Healthcheck":{"Timeout":250000000,"SSLTimeout":750000000},"Backup":{"DiskSpaceFreeMinPercent":10,"AgeMax":43200000000000},"Repair":{"SegmentsPerRepair":1,"ShardParallelMax":0,"ShardFailedSegmentsMax":100,"PollInterval":200000000,"ErrorBackoff":300000000000,"AgeMax":0,"ShardingIgnoreMsbBits":12}},"config_files":["/mnt/etc/scylla-manager/scylla-manager.yaml"],"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
      +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Checking database connectivity...","_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
      +
      +
      +

      If there are no errors in the logs, let’s spin a Scylla Cluster.

      +
      +
      +

      Cluster registration

      +

      When the Scylla Manager is fully up and running, lets create a regular instance of Scylla cluster.

      +

      See generic tutorial to spawn your cluster.

      +

      Note: If you already have some Scylla Clusters, after installing Manager they should be +automatically registered in Scylla Manager.

      +

      Once cluster reaches desired node count, cluster status will be updated with ID under which it was registered in Manager.

      +
      kubectl -n scylla describe Cluster
      +
      +[...]
      +Status:
      + Manager Id:  d1d532cd-49f2-4c97-9263-25126532803b
      + Racks:
      +   us-east-1a:
      +     Members:        3
      +     Ready Members:  3
      +     Version:        4.0.0
      +
      +
      +

      You can use this ID to talk to Scylla Manager using sctool CLI installed in Scylla Manager Pod. +You can also use Cluster name in namespace/cluster-name format.

      +
      kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list
      +
      +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b)
      +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮
      +│ Task                                                        │ Arguments                            │ Next run                       │ Status │
      +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤
      +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b            │                                      │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE   │
      +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd       │                                      │ 23 Sep 20 14:29:57 CEST (+1m)  │ NEW    │
      +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯
      +
      +
      +

      Scylla Manager by default registers recurring healhcheck tasks for Agent and for each of the enabled frontends (CQL, Alternator).

      +

      In this task listing we can see CQL and REST healthchecks.

      +
      +
      +

      Task scheduling

      +

      You can either define tasks prior Cluster creation, or for existing Cluster. +Let’s edit already running cluster definition to add repair and backup task.

      +
      kubectl -n scylla edit Cluster simple-cluster
      +
      +
      +

      Add following task definition to Cluster spec:

      +
        repairs:
      +    - name: "users repair"
      +      keyspace: ["users"]
      +      interval: "1d"
      +  backups:
      +    - name: "weekly backup"
      +      location: ["s3:cluster-backups"]
      +      retention: 3
      +      interval: "7d"
      +    - name: "daily backup"
      +      location: ["s3:cluster-backups"]
      +      retention: 7
      +      interval: "1d"
      +
      +
      +

      For full task definition configuration consult ScyllaCluster CRD.

      +

      Note: Scylla Manager Agent must have access to above bucket prior the update in order to schedule backup task. +Consult Scylla Manager documentation for details on how to set it up.

      +

      Scylla Manager Controller will spot this change and will schedule tasks in Scylla Manager.

      +
      kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list
      +
      +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b)
      +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮
      +│ Task                                                        │ Arguments                            │ Next run                       │ Status │
      +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤
      +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b            │                                      │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE   │
      +│ backup/275aae7f-c436-4fc8-bcec-479e65fb8372                 │ -L s3:cluster-backups  --retention 3 │ 23 Sep 20 14:28:58 CEST (+7d)  │ NEW    │
      +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd       │                                      │ 23 Sep 20 14:29:57 CEST (+1m)  │ NEW    │
      +│ repair/d4946360-c29d-4bb4-8b9d-619ada495c2a                 │                                      │ 23 Sep 20 14:38:42 CEST        │ NEW    │
      +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯
      +
      +
      +

      As you can see, we have two new tasks, weekly recurring backup, and one repair which should start shortly.

      +

      To check progress of run you can use following command:

      +
      kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task progress --cluster d1d532cd-49f2-4c97-9263-25126532803b repair/d4946360-c29d-4bb4-8b9d-619ada495c2a
      +Status:         RUNNING
      +Start time:     23 Sep 20 14:38:42 UTC
      +Duration:       13s
      +Progress:       2.69%
      +Datacenters:
      +  - us-east-1
      ++--------------------+-------+
      +| system_auth        | 8.06% |
      +| system_distributed | 0.00% |
      +| system_traces      | 0.00% |
      ++--------------------+-------+
      +
      +
      +

      Other tasks can be also tracked using the same command, but using different task ID. +Task IDs are present in Cluster Status as well as in task listing.

      +
      +
      +

      Clean Up

      +

      To clean up all resources associated with Scylla Manager, you can run the commands below.

      +

      NOTE: this will destroy your Scylla Manager database and delete all of its associated data.

      +
      kubectl delete -f deploy/manager-prod.yaml
      +
      +
      +
      +
      +

      Troubleshooting

      +

      Manager is not running

      +

      If the Scylla Manager does not come up, the first step would be to examine the Manager and Controller logs:

      +
      kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-controller
      +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-scylla-manager-7bd9f968b9-w25jw
      +
      +
      +

      My task wasn’t scheduled

      +

      If your task wasn’t scheduled, Cluster status will be updated with error messages for each failed task. +You can also consult Scylla Manager logs.

      +

      Example:

      +

      Following status describes error when backup task cannot be scheduled, due to lack of access to bucket:

      +
      Status:
      +  Backups:
      +    Error:     create backup target: location is not accessible: 10.100.16.62: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.100.16.62 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.107.193.33: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.107.193.33 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.109.197.60: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.109.197.60 and run "scylla-manager-agent check-location -L s3:manager-test --debug"
      +    Id:        00000000-0000-0000-0000-000000000000
      +    Interval:  0
      +    Location:
      +      s3:manager-test
      +    Name:         adhoc backup
      +    Num Retries:  3
      +    Retention:    3
      +    Start Date:   now
      +  Manager Id:     2b9dbe8c-9daa-4703-a66d-c29f63a917c8
      +  Racks:
      +    us-east-1a:
      +      Members:        3
      +      Ready Members:  3
      +      Version:        4.0.0
      +
      +
      +

      Because Controller is infinitely retrying to schedule each defined task, once permission issues will be resolved, +task should appear in task listing and Cluster status.

      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/migration.html b/master/migration.html new file mode 100644 index 00000000000..289f14d3481 --- /dev/null +++ b/master/migration.html @@ -0,0 +1,772 @@ + + + + + + + + + + + + + Version migrations | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Version migrations

      +
      +

      v0.3.0 -> v1.0.0 migration

      +

      v0.3.0 used a very common name as a CRD kind (Cluster). In v1.0.0 this issue was solved by using less common kind +which is easier to disambiguate (ScyllaCluster). +This change is backward incompatible, which means manual migration is needed.

      +

      This procedure involves having two CRDs registered at the same time. We will detach Scylla Pods +from Scylla Operator for a short period to ensure that nothing is garbage collected when Scylla Operator is upgraded. +Compared to the upgrade guide where full deletion is requested, this procedure shouldn’t cause downtimes. +Although detaching resources from their controller is considered hacky. This means that you shouldn’t run procedure +out of the box on production. Make sure this procedure works well multiple times on your staging environment first.

      +

      Read the whole procedure and make sure you understand what is going on before executing any of the commands!

      +

      In case of any issues or questions regarding this procedure, you’re welcomed on our Scylla Users Slack +on #kubernetes channel.

      +
      +
      +

      Procedure

      +
        +
      1. Execute this whole procedure for each cluster sequentially. To get a list of existing clusters execute the following

        +
        kubectl -n scylla get cluster.scylla.scylladb.com
        +
        +NAME             AGE
        +simple-cluster   30m
        +
        +
        +

        All below commands will use scylla namespace and simple-cluster as a cluster name.

        +
      2. +
      3. Make sure you’re using v1.0.0 tag:

        +
        git checkout v1.0.0
        +
        +
        +
      4. +
      5. Upgrade your cert-manager to v1.0.0. If you installed it from a static file from this repo, simply execute the following:

        +
         kubectl apply -f examples/common/cert-manager.yaml
        +
        +
        +

        If your cert-manager was installed in another way, follow official instructions on cert-manager website.

        +
      6. +
      7. deploy/operator.yaml file contains multiple resources. Extract only CustomResourceDefinition to separate file.

      8. +
      9. Install v1.0.0 CRD definition from file created in the previous step:

        +
        kubectl apply -f examples/common/crd.yaml
        +
        +
        +
      10. +
      11. Save your existing simple-cluster Cluster definition to a file:

        +
        kubectl -n scylla get cluster.scylla.scylladb.com simple-cluster -o yaml > existing-cluster.yaml
        +
        +
        +
      12. +
      13. Migrate Kind and ApiVersion to new values using:

        +
        sed -i 's/scylla.scylladb.com\/v1alpha1/scylla.scylladb.com\/v1/g' existing-cluster.yaml
        +sed -i 's/kind: Cluster/kind: ScyllaCluster/g' existing-cluster.yaml
        +
        +
        +
      14. +
      15. Install migrated CRD instance

        +
        kubectl apply -f existing-cluster.yaml
        +
        +
        +

        At this point, we should have two CRDs describing your Scylla cluster, although the new one is not controlled by the Operator.

        +
      16. +
      17. Get UUID of newly created ScyllaCluster resource:

        +
        kubectl -n scylla get ScyllaCluster simple-cluster --template="{{ .metadata.uid }}"
        +
        +12a3678d-8511-4c9c-8a48-fa78d3992694
        +
        +
        +

        Save output UUID somewhere, it will be referred as <new-cluster-uid> in commands below.

        +

        Depending on your shell, you might get additional ‘%’ sign at the end of UUID, make sure to remove it!

        +
      18. +
      19. Upgrade ClusterRole attached to each of the Scylla nodes to grant them permission to lookup Scylla clusters:

        +
        kubectl patch ClusterRole simple-cluster-member --type "json" -p '[{"op":"add","path":"/rules/-","value":{"apiGroups":["scylla.scylladb.com"],"resources":["scyllaclusters"],"verbs":["get"]}}]'
        +
        +
        +

        Amend role name according to your cluster name, it should look like <scylla-cluster-name>-member.

        +
      20. +
      21. Get a list of all Services associated with your cluster. First get list of all services:

        +
         kubectl -n scylla get svc -l "scylla/cluster=simple-cluster"
        +
        + NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
        + simple-cluster-client                   ClusterIP   None           <none>        9180/TCP                                                          109m
        + simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.23.96    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   109m
        + simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.66.22    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   108m
        + simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.246.25   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   106m
        +
        +
        +
        +
      22. +
      23. For each service, change its ownerReference to point to new CRD instance:

        +
         kubectl -n scylla patch svc <cluster-svc-name> --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":"<new-cluster-uid>"}]'
        +
        +
        +

        Replace <cluster-svc-name> with Service name, and <new-cluster-uid> with saved UUID from one of the previous steps.

        +
      24. +
      25. Get a list of all Services again to see if none was deleted. Check also “Age” column, it shouldn’t be lower than previous result.

        +
         kubectl -n scylla get svc -l "scylla/cluster=simple-cluster"
        +
        + NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
        + simple-cluster-client                   ClusterIP   None           <none>        9180/TCP                                                          110m
        + simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.23.96    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   110m
        + simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.66.22    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   109m
        + simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.246.25   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   107m
        +
        +
        +
        +
      26. +
      27. Get a list of StatefulSets associated with your cluster:

        +
        kubectl -n scylla get sts -l "scylla/cluster=simple-cluster"
        +
        +NAME                                  READY   AGE
        +simple-cluster-us-east-1-us-east-1a   3/3     104m
        +
        +
        +
      28. +
      29. For each StatefulSet from previous step, change its ownerReference to point to new CRD instance.

        +
         kubectl -n scylla patch sts <cluster-sts-name> --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":"<new-cluster-uid>"}]'
        +
        +
        +

        Replace <cluster-sts-name> with StatefulSet name, and <new-cluster-uid> with saved UUID from one of the previous steps.

        +
      30. +
      31. Now when all k8s resources bound to Scylla are attached to new CRD, we can remove 0.3.0 Operator and old CRD definition. +Checkout v0.3.0 version, and remove Scylla Operator, and old CRD:

        +
         git checkout v0.3.0
        + kubectl delete -f examples/generic/operator.yaml
        +
        +
        +
      32. +
      33. Checkout v1.0.0, and install upgraded Scylla Operator:

        +
         git checkout v1.0.0
        + kubectl apply -f deploy/operator.yaml
        +
        +
        +
      34. +
      35. Wait until Scylla Operator boots up:

        +
         kubectl -n scylla-operator-system wait --for=condition=ready pod --all --timeout=600s
        +
        +
        +
      36. +
      37. Get a list of StatefulSets associated with your cluster:

        +
        kubectl -n scylla get sts -l "scylla/cluster=simple-cluster"
        +
        +NAME                                  READY   AGE
        +simple-cluster-us-east-1-us-east-1a   3/3     104m
        +
        +
        +
      38. +
      39. For each StatefulSet from previous step, change its sidecar container image to v1.0.0, and wait until change will be propagated. This step will initiate a rolling restart of pods one by one.

        +
        kubectl -n scylla patch sts <cluster-sts> --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/initContainers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]'
        +kubectl -n scylla rollout status sts <cluster-sts>
        +
        +
        +

        Replace <cluster-sts-name> with StatefulSet name.

        +
      40. +
      41. If you’re using Scylla Manager, bump Scylla Manager Controller image to v1.0.0

        +
         kubectl -n scylla-manager-system patch sts scylla-manager-controller --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]'
        +
        +
        +
      42. +
      43. Your Scylla cluster is now migrated to v1.0.0.

      44. +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/monitoring.html b/master/monitoring.html new file mode 100644 index 00000000000..7a1debbf6b6 --- /dev/null +++ b/master/monitoring.html @@ -0,0 +1,818 @@ + + + + + + + + + + + + + Monitoring | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Monitoring

      +

      Scylla Operator 1.8 introduced a new API resource ScyllaDBMonitoring, allowing users to deploy a managed monitoring +setup for their Scylla Clusters.

      +
      apiVersion: scylla.scylladb.com/v1alpha1
      +kind: ScyllaDBMonitoring
      +metadata:
      +  name: example
      +spec:
      +  type: Platform
      +  endpointsSelector:
      +    matchLabels:
      +      app.kubernetes.io/name: scylla
      +      scylla-operator.scylladb.com/scylla-service-type: member
      +      scylla/cluster: replace-with-your-scyllacluster-name
      +  components:
      +    prometheus:
      +      storage:
      +        volumeClaimTemplate:
      +          spec:
      +            storageClassName: scylladb-local-xfs
      +            resources:
      +              requests:
      +                storage: 1Gi
      +    grafana:
      +      exposeOptions:
      +        webInterface:
      +          ingress:
      +            ingressClassName: haproxy
      +            dnsDomains:
      +            - test-grafana.test.svc.cluster.local
      +            annotations:
      +              haproxy-ingress.github.io/ssl-passthrough: "true"
      +
      +
      +

      For details, refer to the below command:

      +
      $ kubectl explain scylladbmonitorings.scylla.scylladb.com/v1alpha1
      +
      +
      +
      +

      Deploy managed monitoring

      +

      Note: as of v1.8, ScyllaDBMonitoring is experimental. The API is currently in version v1alpha1 and may change in future versions.

      +
      +

      Requirements

      +

      Before you can set up your ScyllaDB monitoring, you need Scylla Operator already installed in your Kubernetes cluster. +For more information on how to deploy Scylla Operator, see:

      + +

      The above example of the monitoring setup also makes use of HAProxy Ingress and Prometheus Operator. +You can deploy them in your Kubernetes cluster using the provided third party examples. If you already have them deployed +in your cluster, you can skip the below steps.

      +
      +

      Deploy Prometheus Operator

      +

      Deploy Prometheus Operator using kubectl:

      +
      $ kubectl -n prometheus-operator apply --server-side -f ./examples/third-party/prometheus-operator
      +
      +
      +
      +
      Wait for Prometheus Operator to roll out
      +
      $ kubectl -n prometheus-operator rollout status --timeout=5m deployments.apps/prometheus-operator
      +deployment "prometheus-operator" successfully rolled out
      +
      +
      +
      +
      +
      +

      Deploy HAProxy Ingress

      +

      Deploy HAProxy Ingress using kubectl:

      +
      $ kubectl -n haproxy-ingress apply --server-side -f ./examples/third-party/haproxy-ingress
      +
      +
      +
      +
      Wait for HAProxy Ingress to roll out
      +
      $ kubectl -n haproxy-ingress rollout status --timeout=5m deployments.apps/haproxy-ingress
      +deployment "haproxy-ingress" successfully rolled out
      +
      +
      +
      +
      +
      +
      +

      Deploy ScyllaDBMonitoring

      +

      First, update the endpointsSelector in examples/monitoring/v1alpha1/scylladbmonitoring.yaml with a label +matching your ScyllaCluster instance name.

      +

      Deploy the monitoring setup using kubectl:

      +
      $ kubectl -n scylla apply --server-side -f ./examples/monitoring/v1alpha1/scylladbmonitoring.yaml
      +
      +
      +

      Scylla Operator will notice the new ScyllaDBMonitoring object, and it will reconcile all necessary resources.

      +
      +

      Wait for ScyllaDBMonitoring to roll out

      +
      $ kubectl wait --for='condition=Progressing=False' scylladbmonitorings.scylla.scylladb.com/example
      +scylladbmonitoring.scylla.scylladb.com/example condition met
      +
      +$ kubectl wait --for='condition=Degraded=False' scylladbmonitorings.scylla.scylladb.com/example
      +scylladbmonitoring.scylla.scylladb.com/example condition met
      +
      +$ kubectl wait --for='condition=Available=True' scylladbmonitorings.scylla.scylladb.com/example
      +scylladbmonitoring.scylla.scylladb.com/example condition met
      +
      +
      +
      +
      +

      Wait for Prometheus to roll out

      +
      $ kubectl rollout status --timeout=5m statefulset.apps/prometheus-example
      +statefulset rolling update complete 1 pods at revision prometheus-example-65b89d55bb...
      +
      +
      +
      +
      +

      Wait for Grafana to roll out

      +
      $ kubectl rollout status --timeout=5m deployments.apps/example-grafana
      +deployment "example-grafana" successfully rolled out
      +
      +
      +
      +
      +
      +

      Accessing Grafana

      +

      For accessing Grafana service from outside the Kubernetes cluster we recommend using an Ingress, although there are many other ways to do so. +When using Ingress, what matters is to direct your packets to the ingress controller Service/Pods and have the correct TLS SNI field set by the caller when reaching out to the service, so it is routed properly, and your client can successfully validate the grafana serving certificate. +This is easier when you are using a real DNS domain that resolves to your Ingress controller’s IP address but most clients and tools allow setting the SNI field manually.

      +
      +
      +

      Prerequisites

      +

      To access Grafana, you first need to collect the serving CA and the credentials.

      +
      $ GRAFANA_SERVING_CERT="$( kubectl -n scylla get secret/example-grafana-serving-ca --template '{{ index .data "tls.crt" }}' | base64 -d )"
      +$ GRAFANA_USER="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "username" }}' | base64 -d )"
      +$ GRAFANA_PASSWORD="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "password" }}' | base64 -d )"
      +
      +
      +
      +
      +

      Connecting through Ingress using a resolvable domain

      +

      In production clusters, the Ingress controller and appropriate DNS records should be set up already. Often there is already a generic wildcard record like *.app.mydomain pointing to the Ingress controller’s external IP. For custom service domains, it is usually a CNAME pointing to the Ingress controller’s A record.

      +

      Note: The ScyllaDBMonitoring example creates an Ingress object with test-grafana.test.svc.cluster.local DNS domain that you should adjust to your domain. Below examples use example-grafana.apps.mydomain.

      +

      Note: To test a resolvable domain from your machine without creating DNS records, you can adjust /etc/hosts or similar.

      +
      $ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://example-grafana.apps.mydomain" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}"
      +200
      +
      +
      +
      +
      +

      Connecting through Ingress using an unresolvable domain

      +

      To connect to an Ingress without a resolvable domain you first need to find out your Ingress controller’s IP that can be resolved externally. Again, there are many ways to do so beyond the below examples.

      +

      Unless stated otherwise, we assume your Ingress is running on port 443.

      +
      $ INGRESS_PORT=443
      +
      +
      +
      +

      Variants

      +
      +
      Ingress ExternalIP
      +

      When you are running in a real cluster there is usually a cloud LoadBalancer or a bare metal alternative providing you with an externally reachable IP address.

      +
      $ INGRESS_IP="$( kubectl -n=haproxy-ingress get service/haproxy-ingress --template='{{ ( index .status.loadBalancer.ingress 0 ).ip }}' )"
      +
      +
      +
      +
      +
      Ingress NodePort
      +

      NodePort is slightly less convenient, but it’s available in development clusters as well.

      +
      $ INGRESS_IP="$( kubectl get nodes --template='{{ $internal_ip := "" }}{{ $external_ip := "" }}{{ range ( index .items 0 ).status.addresses }}{{ if eq .type "InternalIP" }}{{ $internal_ip = .address }}{{ else if eq .type "ExternalIP" }}{{ $external_ip = .address }}{{ end }}{{ end }}{{ if $external_ip }}{{ $external_ip }}{{ else }}{{ $internal_ip }}{{ end }}' )"
      +$ INGRESS_PORT="$( kubectl -n=haproxy-ingress get services/haproxy-ingress --template='{{ range .spec.ports }}{{ if eq .port 443 }}{{ .nodePort }}{{ end }}{{ end }}' )"
      +
      +
      +
      +
      +
      Connection
      +
      $ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://test-grafana.test.svc.cluster.local:${INGRESS_PORT}" --resolve "test-grafana.test.svc.cluster.local:${INGRESS_PORT}:${INGRESS_IP}" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}"
      +200
      +
      +
      +
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/multidc/eks.html b/master/multidc/eks.html new file mode 100644 index 00000000000..be89447df89 --- /dev/null +++ b/master/multidc/eks.html @@ -0,0 +1,801 @@ + + + + + + + + + + + + + Build multiple Amazon EKS clusters with inter-Kubernetes networking | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Build multiple Amazon EKS clusters with inter-Kubernetes networking

      +

      This document describes the process of creating multiple Amazon EKS clusters in different regions, using separate VPCs, and explains the steps necessary for configuring inter-Kubernetes networking between the clusters. +The interconnected clusters can serve as a platform for deploying a multi-datacenter ScyllaDB cluster.

      +

      This guide will walk you through the process of creating and configuring EKS clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference.

      +
      +

      Prerequisites

      +

      To follow the below guide, you first need to install and configure the tools that you will need to create and manage AWS and Kubernetes resources:

      +
        +
      • eksctl – A command line tool for working with EKS clusters.

      • +
      • kubectl – A command line tool for working with Kubernetes clusters.

      • +
      +

      For more information see Getting started with Amazon EKS – eksctl in AWS documentation.

      +
      +
      +

      Create EKS clusters

      +
      +

      Create the first EKS cluster

      +

      Below is the required specification for the first cluster.

      +
      apiVersion: eksctl.io/v1alpha5
      +kind: ClusterConfig
      +
      +metadata:
      +  name: scylladb-us-east-1
      +  region: us-east-1
      +
      +availabilityZones:
      +- us-east-1a
      +- us-east-1b
      +- us-east-1c
      +
      +vpc:
      +  cidr: 10.0.0.0/16
      +
      +nodeGroups:
      +  ...
      +
      +
      +

      Specify the first cluster’s configuration file and save it as cluster-us-east-1.yaml. +Refer to Creating an EKS cluster section of ScyllaDB Operator documentation for the reference of the configuration of node groups.

      +

      To deploy the first cluster, use the below command:

      +
      eksctl create cluster -f=cluster-us-east-1.yaml
      +
      +
      +

      Run the following command to learn the status and VPC ID of the cluster:

      +
      eksctl get cluster --name=scylladb-us-east-1 --region=us-east-1
      +
      +
      +

      You will need to get the cluster’s context for future operations. To do so, use the below command:

      +
      kubectl config current-context
      +
      +
      +

      For any kubectl commands that you will want to run against this cluster, use the --context flag with the value returned by the above command.

      +
      +

      Deploy ScyllaDB Operator

      +

      Once the cluster is ready, refer to Deploying Scylla on a Kubernetes Cluster to deploy the ScyllaDB Operator and its prerequisites.

      +
      +
      +

      Prepare nodes for running ScyllaDB

      +

      Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in Deploying Scylla on EKS in ScyllaDB Operator documentation.

      +
      +
      +
      +

      Create the second EKS cluster

      +

      Below is the required specification for the second cluster. As was the case with the first cluster, the provided values are only exemplary and can be adjusted according to your needs.

      +
      +

      Caution

      +

      It is required that the VPCs of the two EKS clusters have non-overlapping IPv4 network ranges.

      +
      +
      apiVersion: eksctl.io/v1alpha5
      +kind: ClusterConfig
      +
      +metadata:
      +  name: scylladb-us-east-2
      +  region: us-east-2
      +
      +availabilityZones:
      +- us-east-2a
      +- us-east-2b
      +- us-east-2c
      +
      +vpc:
      +  cidr: 172.16.0.0/16
      +
      +nodeGroups:
      +  ...
      +
      +
      +

      Follow analogous steps to create the second EKS cluster and prepare it for running ScyllaDB.

      +
      +
      +
      +

      Configure the network

      +

      The prepared Kubernetes clusters each have a dedicated VPC network. +To be able to route the traffic between the two VPC networks, you need to create a networking connection between them, otherwise known as VPC peering.

      +
      +

      Create VPC peering

      +

      Refer to Create a VPC peering connection in AWS documentation for instructions on creating a VPC peering connection between the two earlier created VPCs.

      +

      In this example, the ID of the created VPC peering connection is pcx-08077dcc008fbbab6.

      +
      +
      +

      Update route tables

      +

      To enable private IPv4 traffic between the instances in the VPC peered network, you need to establish a communication channel by adding a route to the route tables associated with all the subnets associated with the instances for both VPCs. +The destination of the new route in a given route table is the CIDR of the VPC of the other cluster and the target is the ID of the VPC peering connection.

      +

      The following is an example of the route tables that enable communication of instances in two peered VPCs. Each table has a local route and the added route which sends traffic targeted at the other VPC to the peered network connection. The other preconfigured routes are omitted for readability.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Route tableDestinationTarget
      eksctl-scylladb-us-east-1-cluster/PublicRouteTable10.0.0.0/16local
      172.16.0.0/16pcx-08077dcc008fbbab6
      eksctl-scylladb-us-east-2-cluster/PublicRouteTable172.16.0.0/16local
      10.0.0.0/16pcx-08077dcc008fbbab6
      +

      Refer to Update your route tables for a VPC peering connection in AWS documentation for more information.

      +
      +
      +

      Update security groups

      +

      To allow traffic to flow to and from instances associated with security groups in the peered VPC, you need to update the inbound rules of the VPCs’ shared security groups.

      +

      Below is an example of the inbound rules that to be added to the corresponding security groups of the two VPCs.

      + + + + + + + + + + + + + + + + + + + + + + + +

      Security group name

      Type

      Protocol

      Port range

      Source

      eksctl-scylladb-us-east-1-cluster-ClusterSharedNodeSecurityGroup-TD05V9EVU3B8

      All traffic

      All

      All

      Custom 172.16.0.0/16

      eksctl-scylladb-us-east-2-cluster-ClusterSharedNodeSecurityGroup-1FR9YDLU0VE7M

      All traffic

      All

      All

      Custom 10.0.0.0/16

      +

      The names of the shared security groups of your VPCs should be similar to the ones presented in the example.

      +
      +

      Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters in ScyllaDB Operator documentation for guidance.

      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/multidc/gke.html b/master/multidc/gke.html new file mode 100644 index 00000000000..76492b2991a --- /dev/null +++ b/master/multidc/gke.html @@ -0,0 +1,771 @@ + + + + + + + + + + + + + Build multiple GKE clusters with inter-Kubernetes networking | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Build multiple GKE clusters with inter-Kubernetes networking

      +

      This document describes the process of creating multiple GKE clusters in a shared VPC and explains the steps necessary for configuring inter-Kubernetes networking between clusters in different regions. +The interconnected clusters can serve as a platform for deploying a Multi Datacenter ScyllaDB cluster.

      +

      This guide will walk you through the process of creating and configuring GKE clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference.

      +
      +

      Prerequisites

      +

      To follow the below guide, you first need to install and configure the following tools that you will need to create and manage GCP and Kubernetes resources:

      +
        +
      • gcloud CLI - Google Cloud Command Line Interface, a command line tool for working with Google Cloud resources and services directly.

      • +
      • kubectl – A command line tool for working with Kubernetes clusters.

      • +
      +

      See Install the Google Cloud CLI in GCP documentation and Install Tools in Kubernetes documentation for reference.

      +
      +
      +

      Create and configure a VPC network

      +

      For the clusters to have inter-Kubernetes networking, you will create a virtual network shared between all the instances, with dedicated subnets for each of the clusters. +To create the subnets manually, create the network in custom subnet mode.

      +
      +

      Create the VPC network

      +

      Run the below command to create the network:

      +
      gcloud compute networks create scylladb --subnet-mode=custom
      +
      +
      +

      With the VPC network created, create a dedicated subnet with secondary CIDR ranges for their Pod and Service pools in each region which the clusters will reside in.

      +
      +
      +

      Create VPC network subnets

      +

      To create a subnet for the first cluster in region us-east1, run the below command:

      +
      gcloud compute networks subnets create scylladb-us-east1 \
      +    --region=us-east1 \
      +    --network=scylladb \
      +    --range=10.0.0.0/20 \
      +    --secondary-range='cluster=10.1.0.0/16,services=10.2.0.0/20'
      +
      +
      +

      To create a subnet for the second cluster in region us-west1, run the below command:

      +
      gcloud compute networks subnets create scylladb-us-west1 \
      +    --region=us-west1 \
      +    --network=scylladb \
      +    --range=172.16.0.0/20 \
      +    --secondary-range='cluster=172.17.0.0/16,services=172.18.0.0/20'
      +
      +
      +
      +

      Caution

      +

      It is required that the IPv4 address ranges of the subnets allocated for the GKE clusters do not overlap.

      +
      +

      Refer to Create a VPC-native cluster and Alias IP ranges in GKE documentation for more information about VPC native clusters and alias IP ranges.

      +
      +
      +
      +

      Create GKE clusters

      +

      With the VPC network created, you will now create two VPC native GKE clusters in dedicated regions.

      +
      +

      Create the first GKE cluster

      +

      Run the following command to create the first GKE cluster in the us-east1 region:

      +
      gcloud container clusters create scylladb-us-east1 \
      +    --location=us-east1-b \
      +    --node-locations='us-east1-b,us-east1-c' \
      +    --machine-type=n1-standard-8 \
      +    --num-nodes=1 \
      +    --disk-type=pd-ssd \
      +    --disk-size=20 \
      +    --image-type=UBUNTU_CONTAINERD \
      +    --no-enable-autoupgrade \
      +    --no-enable-autorepair \
      +    --enable-ip-alias \
      +    --network=scylladb \
      +    --subnetwork=scylladb-us-east1 \
      +    --cluster-secondary-range-name=cluster \
      +    --services-secondary-range-name=services
      +
      +
      +

      Refer to Creating a GKE cluster section of ScyllaDB Operator documentation for more information regarding the configuration and deployment of additional node pools, including the one dedicated for ScyllaDB nodes.

      +

      You will need to get the cluster’s context for future operations. To do so, use the below command:

      +
      kubectl config current-context
      +
      +
      +

      For any kubectl commands that you will want to run against this cluster, use the --context flag with the value returned by the above command.

      +
      +

      Deploy ScyllaDB Operator

      +

      Once the cluster is ready, refer to Deploying Scylla on a Kubernetes Cluster to deploy the ScyllaDB Operator and its prerequisites.

      +
      +
      +

      Prepare nodes for running ScyllaDB

      +

      Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in Deploying Scylla on GKE page of the documentation.

      +
      +
      +
      +

      Create the second GKE cluster

      +

      Run the following command to create the second GKE cluster in the us-west1 region:

      +
      gcloud container clusters create scylladb-us-west1 \
      +    --location=us-west1-b \
      +    --node-locations='us-west1-b,us-west1-c' \
      +    --machine-type=n1-standard-8 \
      +    --num-nodes=1 \
      +    --disk-type=pd-ssd \
      +    --disk-size=20 \
      +    --image-type=UBUNTU_CONTAINERD \
      +    --no-enable-autoupgrade \
      +    --no-enable-autorepair \
      +    --enable-ip-alias \
      +    --network=scylladb \
      +    --subnetwork=scylladb-us-west1 \
      +    --cluster-secondary-range-name=cluster \
      +    --services-secondary-range-name=services
      +
      +
      +

      Follow analogous steps to create the second GKE cluster and prepare it for running ScyllaDB.

      +
      +
      +
      +

      Configure the firewall rules

      +

      When creating a cluster, GKE creates several ingress firewall rules that enable the instances to communicate with each other. +To establish interconnectivity between the two created Kubernetes clusters, you will now add the allocated IPv4 address ranges to their corresponding source address ranges.

      +

      First, retrieve the name of the firewall rule associated with the first cluster, which permits traffic between all Pods on a cluster, as required by the Kubernetes networking model. +The rule name is in the following format: gke-[cluster-name]-[cluster-hash]-all.

      +

      To retrieve it, run the below command:

      +
      gcloud compute firewall-rules list --filter='name~gke-scylladb-us-east1-.*-all'
      +
      +
      +

      The output should resemble the following:

      +
      NAME                                NETWORK   DIRECTION  PRIORITY  ALLOW                     DENY  DISABLED
      +gke-scylladb-us-east1-f17db261-all  scylladb  INGRESS    1000      udp,icmp,esp,ah,sctp,tcp        False
      +
      +
      +

      Modify the rule by updating the rule’s source ranges with the allocated Pod IPv4 address ranges of both clusters:

      +
      gcloud compute firewall-rules update gke-scylladb-us-east1-f17db261-all --source-ranges='10.1.0.0/16,172.17.0.0/16'
      +
      +
      +

      Follow the analogous steps for the other cluster. In this example, its corresponding firewall rule name is gke-scylladb-us-west1-0bb60902-all. To update it, you would run:

      +
      gcloud compute firewall-rules update gke-scylladb-us-west1-0bb60902-all --source-ranges='10.1.0.0/16,172.17.0.0/16'
      +
      +
      +

      Refer to Automatically created firewall rules in GKE documentation for more information.

      +
      +

      Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters in ScyllaDB Operator documentation for guidance.

      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/multidc/index.html b/master/multidc/index.html new file mode 100644 index 00000000000..7aaf2817fe3 --- /dev/null +++ b/master/multidc/index.html @@ -0,0 +1,612 @@ + + + + + + + + + + + + + Deploying multi-datacenter ScyllaDB clusters in Kubernetes | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Deploying multi-datacenter ScyllaDB clusters in Kubernetes

      +

      Prepare a platform for a multi datacenter ScyllaDB cluster deployment:

      + +

      Deploy a multi-datacenter ScyllaDB cluster in Kubernetes:

      + +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/multidc/multidc.html b/master/multidc/multidc.html new file mode 100644 index 00000000000..b3ab2f39f9e --- /dev/null +++ b/master/multidc/multidc.html @@ -0,0 +1,1202 @@ + + + + + + + + + + + + + Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters

      +

      This document describes the process of deploying a Multi Datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters.

      +

      This guide will walk you through the example procedure of deploying two datacenters in distinct regions of a selected cloud provider.

      +
      +

      Note

      +

      This guide is dedicated to deploying multi-datacenter ScyllaDB clusters and does not discuss unrelated configuration options. +For details of ScyllaDB cluster deployments and their configuration, refer to Deploying Scylla on a Kubernetes Cluster in ScyllaDB Operator documentation.

      +
      +
      +

      Prerequisites

      +

      As this document describes the procedure of deploying a Multi Datacenter ScyllaDB cluster, you are expected to have the required infrastructure prepared. +Let’s assume two interconnected Kubernetes clusters, capable of communicating with each other over PodIPs, with each cluster meeting the following requirements:

      +
        +
      • a node pool dedicated to ScyllaDB nodes composed of at least 3 nodes running in different zones (with unique topology.kubernetes.io/zone label), configured to run ScyllaDB, each labeled with scylla.scylladb.com/node-type: scylla

      • +
      • running ScyllaDB Operator and its prerequisites

      • +
      • running a storage provisioner capable of provisioning XFS volumes of StorageClass scylladb-local-xfs in each of the nodes dedicated to ScyllaDB instances

      • +
      +

      You can refer to one of our guides describing the process of preparing such infrastructure:

      + +

      Additionally, to follow the below guide, you need to install and configure the following tools that you will need to manage Kubernetes resources:

      +
        +
      • kubectl – A command line tool for working with Kubernetes clusters.

      • +
      +

      See Install Tools in Kubernetes documentation for reference.

      +
      +
      +

      Multi Datacenter ScyllaDB Cluster

      +

      In v1.11, ScyllaDB Operator introduced support for manual multi-datacenter ScyllaDB cluster deployments.

      +
      +

      Warning

      +

      ScyllaDB Operator only supports manual configuration of multi-datacenter ScyllaDB clusters. +In other words, although ScyllaCluster API exposes the machinery necessary for setting up multi-datacenter ScylaDB clusters, the ScyllaDB Operator only automates operations for a single datacenter.

      +

      Operations related to multiple datacenters may require manual intervention of a human operator. +Most notably, destroying one of the Kubernetes clusters or ScyllaDB datacenters is going to leave DN nodes behind in other datacenters, and their removal has to be carried out manually.

      +
      +

      The main mechanism used to set up a manual multi-datacenter ScyllaDB cluster is a field in ScyllaCluster’s specification - externalSeeds.

      +
      +

      External seeds

      +

      The externalSeeds field in ScyllaCluster’s specification enables control over external seeds that are propagated to ScyllaDB binary as --seed-provider-parameters seeds=<external-seeds>. +In this context, external should be understood as “external to the datacenter being specified by the API”. +The provided seeds are used by the nodes as initial points of contact, which allows them to discover the cluster ring topology when joining it.

      +

      Refer to Scylla Seed Nodes in ScyllaDB documentation for more information regarding the function of seed nodes in ScyllaDB. +For more details regarding the function and implementation of external seeds, refer to the original enhancement proposal.

      +
      +
      +

      Networking

      +

      Since this guide assumes interconnectivity over PodIPs of the Kubernetes clusters, you are going to configure the ScyllaDB cluster’s nodes to communicate over PodIPs. +This is enabled by a subset of exposeOptions specified in ScyllaCluster API, introduced in v1.11.

      +

      For this particular setup, define the ScyllaClusers as follows:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +spec:
      +  exposeOptions:
      +    nodeService:
      +      type: Headless
      +    broadcastOptions:
      +      clients:
      +        type: PodIP
      +      nodes:
      +        type: PodIP
      +
      +
      +

      However, other configuration options allow for the manual deployment of multi-datacenter ScyllaDB clusters in different network setups. For details, refer to Exposing ScyllaClusters in ScyllaDB Operator documentation.

      +
      +

      Deploy a multi-datacenter ScyllaDB Cluster

      +
      +
      +

      Using context

      +

      Let’s specify contexts for kubectl commands used throughout the guide. +To retrieve the context of your current cluster, run:

      +
      kubectl config current-context
      +
      +
      +

      Save the contexts of the two clusters, which you are going to deploy the datacenters in, as CONTEXT_DC1 and CONTEXT_DC2 environment variables correspondingly.

      +
      +
      +

      Deploy the first datacenter

      +

      First, run the below command to create a dedicated ‘scylla’ namespace:

      +
      kubectl --context="${CONTEXT_DC1}" create ns scylla
      +
      +
      +

      For this guide, let’s assume that your cluster is running in us-east-1 region and the nodes dedicated to running ScyllaDB nodes are running in zones us-east-1a, us-east-1b and us-east-1c correspondingly. If that is not the case, adjust the manifest accordingly.

      +
      +

      Caution

      +

      The .spec.name field of the ScyllaCluster objects represents the ScyllaDB cluster name and has to be consistent across all datacenters of this ScyllaDB cluster. +The names of the datacenters, specified in .spec.datacenter.name, have to be unique across the entire multi-datacenter cluster.

      +

      For more information see Create a ScyllaDB Cluster - Multi Data Centers (DC) in ScyllaDB documentation.

      +
      +

      Save the ScyllaCluster manifest in dc1.yaml:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +metadata:
      +  name: scylla-cluster
      +  namespace: scylla
      +spec:
      +  agentVersion: 3.3.3
      +  version: 6.1.1
      +  cpuset: true
      +  sysctls:
      +  - "fs.aio-max-nr=2097152"
      +  automaticOrphanedNodeCleanup: true
      +  exposeOptions:
      +    broadcastOptions:
      +      clients:
      +        type: PodIP
      +      nodes:
      +        type: PodIP
      +    nodeService:
      +      type: Headless
      +  datacenter:
      +    name: us-east-1
      +    racks:
      +    - name: a
      +      members: 1
      +      storage:
      +        storageClassName: scylladb-local-xfs
      +        capacity: 1800G
      +      agentResources:
      +        requests:
      +          cpu: 100m
      +          memory: 250M
      +        limits:
      +          cpu: 100m
      +          memory: 250M
      +      resources:
      +        requests:
      +          cpu: 7
      +          memory: 56G
      +        limits:
      +          cpu: 7
      +          memory: 56G
      +      placement:
      +        podAntiAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +          - topologyKey: kubernetes.io/hostname
      +            labelSelector:
      +              matchLabels:
      +                app.kubernetes.io/name: scylla
      +                scylla/cluster: scylla-cluster
      +        nodeAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +            nodeSelectorTerms:
      +            - matchExpressions:
      +              - key: topology.kubernetes.io/zone
      +                operator: In
      +                values:
      +                - us-east-1a
      +              - key: scylla.scylladb.com/node-type
      +                operator: In
      +                values:
      +                - scylla
      +        tolerations:
      +        - key: role
      +          operator: Equal
      +          value: scylla-clusters
      +          effect: NoSchedule
      +    - name: b
      +      members: 1
      +      storage:
      +        storageClassName: scylladb-local-xfs
      +        capacity: 1800G
      +      agentResources:
      +        requests:
      +          cpu: 100m
      +          memory: 250M
      +        limits:
      +          cpu: 100m
      +          memory: 250M
      +      resources:
      +        requests:
      +          cpu: 7
      +          memory: 56G
      +        limits:
      +          cpu: 7
      +          memory: 56G
      +      placement:
      +        podAntiAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +          - topologyKey: kubernetes.io/hostname
      +            labelSelector:
      +              matchLabels:
      +                app.kubernetes.io/name: scylla
      +                scylla/cluster: scylla-cluster
      +        nodeAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +            nodeSelectorTerms:
      +            - matchExpressions:
      +              - key: topology.kubernetes.io/zone
      +                operator: In
      +                values:
      +                - us-east-1b
      +              - key: scylla.scylladb.com/node-type
      +                operator: In
      +                values:
      +                - scylla
      +        tolerations:
      +        - key: role
      +          operator: Equal
      +          value: scylla-clusters
      +          effect: NoSchedule
      +    - name: c
      +      members: 1
      +      storage:
      +        storageClassName: scylladb-local-xfs
      +        capacity: 1800G
      +      agentResources:
      +        requests:
      +          cpu: 100m
      +          memory: 250M
      +        limits:
      +          cpu: 100m
      +          memory: 250M
      +      resources:
      +        requests:
      +          cpu: 7
      +          memory: 56G
      +        limits:
      +          cpu: 7
      +          memory: 56G
      +      placement:
      +        podAntiAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +          - topologyKey: kubernetes.io/hostname
      +            labelSelector:
      +              matchLabels:
      +                app.kubernetes.io/name: scylla
      +                scylla/cluster: scylla-cluster
      +        nodeAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +            nodeSelectorTerms:
      +            - matchExpressions:
      +              - key: topology.kubernetes.io/zone
      +                operator: In
      +                values:
      +                - us-east-1c
      +              - key: scylla.scylladb.com/node-type
      +                operator: In
      +                values:
      +                - scylla
      +        tolerations:
      +        - key: role
      +          operator: Equal
      +          value: scylla-clusters
      +          effect: NoSchedule
      +
      +
      +

      Apply the manifest:

      +
      kubectl --context="${CONTEXT_DC1}" apply --server-side -f=dc1.yaml
      +
      +
      +

      Wait for the cluster to be fully rolled out:

      +
      kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
      +
      +
      +
      scyllacluster.scylla.scylladb.com/scylla-cluster condition met
      +
      +
      +
      kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
      +
      +
      +
      scyllacluster.scylla.scylladb.com/scylla-cluster condition met
      +
      +
      +
      kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster
      +
      +
      +
      scyllacluster.scylla.scylladb.com/scylla-cluster condition met
      +
      +
      +

      You can now verify that all the nodes of your cluster are in UN state:

      +
      kubectl --context="${CONTEXT_DC1}" -n=scylla exec -it pod/scylla-cluster-us-east-1-a-0 -c=scylla -- nodetool status
      +
      +
      +

      The expected output should look similar to the below:

      +
      Datacenter: us-east-1
      +=====================
      +Status=Up/Down
      +|/ State=Normal/Leaving/Joining/Moving
      +--  Address      Load       Tokens       Owns    Host ID                               Rack
      +UN  10.0.70.195  290 KB     256          ?       494277b9-121c-4af9-bd63-3d0a7b9305f7  c
      +UN  10.0.59.24   559 KB     256          ?       a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37  b
      +UN  10.0.19.237  107 KB     256          ?       64b6292a-327f-4128-852a-6004039f402e  a
      +
      +
      +
      +
      Retrieve PodIPs of ScyllaDB nodes for use as external seeds
      +
      +

      Warning

      +

      Due to the ephemeral nature of PodIPs, it is ill-advised to use them as seeds in production environments. +This is because there is a high likelihood that the Pods of your ScyllaDB clusters will change their IPs during the cluster’s lifecycle, and so the provided seeds will no longer point to the ScyllaDB nodes. +It is undesired, as the seeds provided on node’s startup may serve as fallback contact points when all of the node’s peers are unreachable. +In production environments, it is recommended that you use domain names or non-ephemeral IP addresses as external seeds. +PodIPs are being used in this example for the sheer simplicity of this setup.

      +
      +

      Use the below commands and their expected outputs as a reference for retrieving the PodIPs used by the cluster for inter-node communication.

      +
      kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-a-0 --template='{{ .status.podIP }}'
      +
      +
      +
      10.0.19.237
      +
      +
      +
      kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-b-0 --template='{{ .status.podIP }}'
      +
      +
      +
      10.0.59.24
      +
      +
      +
      kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-c-0 --template='{{ .status.podIP }}'
      +
      +
      +
      10.0.70.195
      +
      +
      +

      You are going to utilize the retrieved addresses as seeds for the other datacenter.

      +
      +
      +
      +

      Deploy the second datacenter

      +

      To deploy the second datacenter, you will follow similar steps.

      +

      First, create a dedicated ‘scylla’ namespace:

      +
      kubectl --context="${CONTEXT_DC2}" create ns scylla
      +
      +
      +

      Replace the values in .spec.externalSeeds of the below manifest with the Pod IP addresses that you retrieved earlier. +The provided values are going to serve as initial contact points for the joining nodes of the second datacenter.

      +

      For this guide, let’s assume that the second cluster is running in us-east-2 region and the nodes dedicated for running ScyllaDB nodes are running in zones us-east-2a, us-east-2b and us-east-2c correspondingly. If that is not the case, adjust the manifest accordingly. +Having configured it, save the manifest as dc2.yaml:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +metadata:
      +  name: scylla-cluster
      +  namespace: scylla
      +spec:
      +  agentVersion: 3.3.3
      +  version: 6.1.1
      +  cpuset: true
      +  sysctls:
      +  - "fs.aio-max-nr=2097152"
      +  automaticOrphanedNodeCleanup: true
      +  exposeOptions:
      +    broadcastOptions:
      +      clients:
      +        type: PodIP
      +      nodes:
      +        type: PodIP
      +    nodeService:
      +      type: Headless
      +  externalSeeds:
      +  - 10.0.19.237
      +  - 10.0.59.24
      +  - 10.0.70.195
      +  datacenter:
      +    name: us-east-2
      +    racks:
      +    - name: a
      +      members: 1
      +      storage:
      +        storageClassName: scylladb-local-xfs
      +        capacity: 1800G
      +      agentResources:
      +        requests:
      +          cpu: 100m
      +          memory: 250M
      +        limits:
      +          cpu: 100m
      +          memory: 250M
      +      resources:
      +        requests:
      +          cpu: 7
      +          memory: 56G
      +        limits:
      +          cpu: 7
      +          memory: 56G
      +      placement:
      +        podAntiAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +          - topologyKey: kubernetes.io/hostname
      +            labelSelector:
      +              matchLabels:
      +                app.kubernetes.io/name: scylla
      +                scylla/cluster: scylla-cluster
      +        nodeAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +            nodeSelectorTerms:
      +            - matchExpressions:
      +              - key: topology.kubernetes.io/zone
      +                operator: In
      +                values:
      +                - us-east-2a
      +              - key: scylla.scylladb.com/node-type
      +                operator: In
      +                values:
      +                - scylla
      +        tolerations:
      +        - key: role
      +          operator: Equal
      +          value: scylla-clusters
      +          effect: NoSchedule
      +    - name: b
      +      members: 1
      +      storage:
      +        storageClassName: scylladb-local-xfs
      +        capacity: 1800G
      +      agentResources:
      +        requests:
      +          cpu: 100m
      +          memory: 250M
      +        limits:
      +          cpu: 100m
      +          memory: 250M
      +      resources:
      +        requests:
      +          cpu: 7
      +          memory: 56G
      +        limits:
      +          cpu: 7
      +          memory: 56G
      +      placement:
      +        podAntiAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +          - topologyKey: kubernetes.io/hostname
      +            labelSelector:
      +              matchLabels:
      +                app.kubernetes.io/name: scylla
      +                scylla/cluster: scylla-cluster
      +        nodeAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +            nodeSelectorTerms:
      +            - matchExpressions:
      +              - key: topology.kubernetes.io/zone
      +                operator: In
      +                values:
      +                - us-east-2b
      +              - key: scylla.scylladb.com/node-type
      +                operator: In
      +                values:
      +                - scylla
      +        tolerations:
      +        - key: role
      +          operator: Equal
      +          value: scylla-clusters
      +          effect: NoSchedule
      +    - name: c
      +      members: 1
      +      storage:
      +        storageClassName: scylladb-local-xfs
      +        capacity: 1800G
      +      agentResources:
      +        requests:
      +          cpu: 100m
      +          memory: 250M
      +        limits:
      +          cpu: 100m
      +          memory: 250M
      +      resources:
      +        requests:
      +          cpu: 7
      +          memory: 56G
      +        limits:
      +          cpu: 7
      +          memory: 56G
      +      placement:
      +        podAntiAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +          - topologyKey: kubernetes.io/hostname
      +            labelSelector:
      +              matchLabels:
      +                app.kubernetes.io/name: scylla
      +                scylla/cluster: scylla-cluster
      +        nodeAffinity:
      +          requiredDuringSchedulingIgnoredDuringExecution:
      +            nodeSelectorTerms:
      +            - matchExpressions:
      +              - key: topology.kubernetes.io/zone
      +                operator: In
      +                values:
      +                - us-east-2c
      +              - key: scylla.scylladb.com/node-type
      +                operator: In
      +                values:
      +                - scylla
      +        tolerations:
      +        - key: role
      +          operator: Equal
      +          value: scylla-clusters
      +          effect: NoSchedule
      +
      +
      +

      To apply the manifest, run:

      +
      kubectl --context="${CONTEXT_DC2}" -n=scylla apply --server-side -f=dc2.yaml
      +
      +
      +

      Wait for the second datacenter to roll out:

      +
      kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
      +
      +
      +
      scyllacluster.scylla.scylladb.com/scylla-cluster condition met
      +
      +
      +
      kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
      +
      +
      +
      scyllacluster.scylla.scylladb.com/scylla-cluster condition met
      +
      +
      +
      kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster
      +
      +
      +
      scyllacluster.scylla.scylladb.com/scylla-cluster condition met
      +
      +
      +

      You can verify that the nodes have joined the existing cluster and that you are now running a multi-datacenter ScyllaDB cluster by running nodetool status with the below command:

      +
      kubectl --context="${CONTEXT_DC2}" -n=scylla exec -it pod/scylla-cluster-us-east-2-a-0 -c=scylla -- nodetool status
      +
      +
      +
      Datacenter: us-east-1
      +=====================
      +Status=Up/Down
      +|/ State=Normal/Leaving/Joining/Moving
      +--  Address        Load       Tokens       Owns    Host ID                               Rack
      +UN  10.0.70.195    705 KB     256          ?       494277b9-121c-4af9-bd63-3d0a7b9305f7  c
      +UN  10.0.59.24     764 KB     256          ?       a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37  b
      +UN  10.0.19.237    634 KB     256          ?       64b6292a-327f-4128-852a-6004039f402e  a
      +Datacenter: us-east-2
      +=====================
      +Status=Up/Down
      +|/ State=Normal/Leaving/Joining/Moving
      +--  Address        Load       Tokens       Owns    Host ID                               Rack
      +UN  172.16.39.209  336 KB     256          ?       7c30ea55-7a4f-4d93-86f7-c881772ebe62  b
      +UN  172.16.25.18   759 KB     256          ?       665dde7e-e420-4db3-8c54-ca71efd39b2e  a
      +UN  172.16.87.27   503 KB     256          ?       c19c89cb-e24c-4062-9df4-2aa90ab29a99  c
      +
      +
      +
      +
      +
      +
      +

      Scylla Manager

      +

      To integrate a multi-datacenter ScyllaDB cluster with Scylla Manager, you must deploy the Scylla Manager in only one datacenter.

      +

      In this example, let’s choose the Kubernetes cluster deployed in the first datacenter to host it. +To deploy Scylla Manager, follow the steps described in Deploying Scylla Manager on a Kubernetes Cluster +in ScyllaDB Operator documentation.

      +

      In order to define the Scylla Manager tasks, add them to the ScyllaCluster object deployed in the same Kubernetes cluster +in which your Scylla Manager is running.

      +

      Every datacenter (represented by ScyllaCluster CR) is, by default, provisioned with a new, random Scylla Manager Agent auth token. +To use Scylla Manager with multiple datacenter (represented by ScyllaClusters), you have to make sure they all use the same token.

      +

      Extract it from the first datacenter with the below command:

      +
      kubectl --context="${CONTEXT_DC1}" -n=scylla get secrets/scylla-cluster-auth-token --template='{{ index .data "auth-token.yaml" }}' | base64 -d
      +
      +
      +
      auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf
      +
      +
      +

      Save the output, replace the token with your own, and patch the secret in the second datacenter with the below command:

      +
      kubectl --context="${CONTEXT_DC2}" -n=scylla patch secret/scylla-cluster-auth-token--type='json' -p='[{"op": "add", "path": "/stringData", "value": {"auth-token.yaml": "auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf"}}]'
      +
      +
      +

      Execute a rolling restart of the nodes in DC2 to make sure they pick up the new token:

      +
      kubectl --context="${CONTEXT_DC2}" -n=scylla patch scyllacluster/scylla-cluster --type='merge' -p='{"spec": {"forceRedeploymentReason": "sync scylla-manager-agent token ('"$( date )"')"}}'
      +
      +
      +
      +
      +

      ScyllaDBMonitoring

      +

      To monitor your cluster, deploy ScyllaDBMonitoring in every datacenter independently. +To deploy ScyllaDB Monitoring, follow the steps described in Deploy managed monitoring in ScyllaDB Operator documentation.

      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/nodeoperations/automatic-cleanup.html b/master/nodeoperations/automatic-cleanup.html new file mode 100644 index 00000000000..054947a212a --- /dev/null +++ b/master/nodeoperations/automatic-cleanup.html @@ -0,0 +1,609 @@ + + + + + + + + + + + + + Automatic cleanup and replacement in case when k8s node is lost | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Automatic cleanup and replacement in case when k8s node is lost

      +

      In case when your k8s cluster loses one of the nodes due to incident or explicit removal, Scylla Pods may become unschedulable due to PVC node affinity.

      +

      When automaticOrphanedNodeCleanup flag is enabled in your ScyllaCluster, Scylla Operator will perform automatic +node replacement of a Pod which lost his bound resources.

      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/nodeoperations/index.html b/master/nodeoperations/index.html new file mode 100644 index 00000000000..537064ec673 --- /dev/null +++ b/master/nodeoperations/index.html @@ -0,0 +1,608 @@ + + + + + + + + + + + + + Node operations using Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Node operations using Scylla Operator

      + +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/nodeoperations/maintenance-mode.html b/master/nodeoperations/maintenance-mode.html new file mode 100644 index 00000000000..c8121ff8b4a --- /dev/null +++ b/master/nodeoperations/maintenance-mode.html @@ -0,0 +1,618 @@ + + + + + + + + + + + + + Maintenance mode | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + + + +
      +

      Maintenance mode

      +

      When maintenance mode is enabled, readiness probe of Scylla Pod will always return failure and liveness probe will always succeed. This causes that Pod under maintenance +is being removed from K8s Load Balancer and DNS registry but Pod itself stays alive.

      +

      This allows the Scylla Operator to interact with Scylla and Scylla dependencies inside the Pod. +For example user may turn off Scylla process, do something with the filesystem and bring the process back again.

      +

      To enable maintenance mode add scylla/node-maintenance label to service in front of Scylla Pod.

      +
      kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance=""
      +
      +
      +

      To disable, simply remove this label from service.

      +
      kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance-
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/nodeoperations/replace-node.html b/master/nodeoperations/replace-node.html new file mode 100644 index 00000000000..b46ed425f47 --- /dev/null +++ b/master/nodeoperations/replace-node.html @@ -0,0 +1,692 @@ + + + + + + + + + + + + + Replacing a Scylla node | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + + + +
      +

      Replacing a Scylla node

      +
      +

      Replacing a dead node

      +

      In the case of a host failure, it may not be possible to bring back the node to life.

      +

      Replace dead node operation will cause the other nodes in the cluster to stream data to the node that was replaced. +This operation can take some time (depending on the data size and network bandwidth).

      +

      This procedure is for replacing one dead node. To replace more than one dead node, run the full procedure to completion one node at a time

      +

      Procedure

      +
        +
      1. Verify the status of the node using nodetool status command, the node with status DN is down and need to be replaced

        +
        kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status
        +Datacenter: us-east-1
        +=====================
        +Status=Up/Down
        +|/ State=Normal/Leaving/Joining/Moving
        +--  Address        Load       Tokens       Owns    Host ID                               Rack
        +UN  10.43.125.110  74.63 KB   256          ?       8ebd6114-969c-44af-a978-87a4a6c65c3e  us-east-1a
        +UN  10.43.231.189  91.03 KB   256          ?       35d0cb19-35ef-482b-92a4-b63eee4527e5  us-east-1a
        +DN  10.43.43.51    74.77 KB   256          ?       1ffa7a82-c41c-4706-8f5f-4d45a39c7003  us-east-1a
        +
        +
        +
      2. +
      3. Identify service which is bound to down node by checking IP address

        +
        kubectl -n scylla get svc
        +NAME                                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                           AGE
        +simple-cluster-client                   ClusterIP   None            <none>        9180/TCP                                                          3h12m
        +simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.231.189   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h12m
        +simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.125.110   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h11m
        +simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.43.51     <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h5m
        +
        +
        +
      4. +
      5. Drain node which we would like to replace using. This command may delete your data from local disks attached to given node!

        +
        kubectl drain gke-scylla-demo-default-pool-b4b390a1-6j12 --ignore-daemonsets --delete-local-data
        +
        +
        +

        Pod which will be replaced should enter the Pending state

        +
        kubectl -n scylla get pods
        +NAME                                    READY   STATUS    RESTARTS   AGE
        +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          3h21m
        +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          3h19m
        +simple-cluster-us-east-1-us-east-1a-2   0/2     Pending   0          8m14s
        +
        +
        +
      6. +
      7. To being node replacing, add scylla/replace="" label to service bound to pod we are replacing.

        +
        kubectl -n scylla label svc simple-cluster-us-east-1-us-east-1a-2 scylla/replace=""
        +
        +
        +

        Your failed Pod should be recreated on available k8s node

        +
        kubectl -n scylla get pods
        +NAME                                    READY   STATUS    RESTARTS   AGE
        +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          3h27m
        +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          3h25m
        +simple-cluster-us-east-1-us-east-1a-2   1/2     Running   0          9s
        +
        +
        +

        Because other nodes in cluster must stream data to new node this operation might take some time depending on how much data your cluster stores. +After bootstraping is over, your new Pod should be ready to go. +Old one shouldn’t be no longer visible in nodetool status

        +
        kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status
        +Datacenter: us-east-1
        +=====================
        +Status=Up/Down
        +|/ State=Normal/Leaving/Joining/Moving
        +--  Address        Load       Tokens       Owns    Host ID                               Rack
        +UN  10.43.125.110  74.62 KB   256          ?       8ebd6114-969c-44af-a978-87a4a6c65c3e  us-east-1a
        +UN  10.43.231.189  91.03 KB   256          ?       35d0cb19-35ef-482b-92a4-b63eee4527e5  us-east-1a
        +UN  10.43.191.172  74.77 KB   256          ?       1ffa7a82-c41c-4706-8f5f-4d45a39c7003  us-east-1a
        +
        +
        +
      8. +
      9. Run the repair on the cluster to make sure that the data is synced with the other nodes in the cluster. +You can use Scylla Manager to run the repair.

      10. +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/nodeoperations/restore.html b/master/nodeoperations/restore.html new file mode 100644 index 00000000000..2a01bc72dc5 --- /dev/null +++ b/master/nodeoperations/restore.html @@ -0,0 +1,843 @@ + + + + + + + + + + + + + Restore from backup | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + + + +
      +

      Restore from backup

      +

      This procedure will describe how to restore from backup taken using Scylla Manager to a fresh empty cluster of any size.

      +
      +

      Warning

      +

      Restoring schema with ScyllaDB OS 5.4.X or ScyllaDB Enterprise 2024.1.X and consistent_cluster_management isn’t supported.

      +

      When creating the target ScyllaDB cluster, configure it with consistent_cluster_management: false. +Refer to API Reference to learn how to customize ScyllaDB configuration files.

      +

      When following the steps for schema restore, ensure you follow the additional steps dedicated to affected ScyllaDB versions.

      +
      +

      In the following example, the ScyllaCluster, which was used to take the backup, is called source. Backup will be restored into the ScyllaCluster named target.

      +
      + +
      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +metadata:
      +  name: source
      +spec:
      +  agentVersion: 3.3.3
      +  version: 6.1.1
      +  developerMode: true
      +  backups:
      +  - name: foo
      +    location:
      +    - s3:source-backup
      +    keyspace:
      +    - '*'
      +  datacenter:
      +    name: us-east-1
      +    racks:
      +    - name: us-east-1a
      +      members: 1
      +      storage:
      +        capacity: 1Gi
      +      resources:
      +        limits:
      +          cpu: 1
      +          memory: 1Gi
      +
      +
      +
      + +
      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +metadata:
      +  name: target
      +spec:
      +  agentVersion: 3.3.3
      +  version: 6.1.1
      +  developerMode: true
      +  datacenter:
      +    name: us-east-1
      +    racks:
      +    - name: us-east-1a
      +      members: 1
      +      storage:
      +        capacity: 1Gi
      +      resources:
      +        limits:
      +          cpu: 1
      +          memory: 1Gi
      +
      +
      +
      +
      +

      Make sure your target cluster is already registered in Scylla Manager. To get a list of all registered clusters, execute the following command:

      +
      $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool cluster list
      ++--------------------------------------+---------------------------------------+---------+-----------------+
      +| ID                                   | Name                                  | Port    | CQL credentials |
      ++--------------------------------------+---------------------------------------+---------+-----------------+
      +| af1dd5cd-0406-4974-949f-dc9842980080 | scylla/target                        | default | set             |
      +| ebd82268-efb7-407e-a540-3619ae053778 | scylla/source                        | default | set             |
      ++--------------------------------------+---------------------------------------+---------+-----------------+
      +
      +
      +

      Identify the tag of a snapshot which you want to restore. To get a list of all available snapshots, execute following command:

      +
      kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c <CLUSTER_ID> --all-clusters -L <BACKUP_LOCATION>
      +
      +
      +

      Where:

      +
        +
      • CLUSTER_ID - the name or ID of a registered cluster with access to BACKUP_LOCATION.

      • +
      • BACKUP_LOCATION - the location in which the backup is stored.

      • +
      +

      In this example, BACKUP_LOCATION is s3:source-backup. Use the name of cluster which has access to the backup location for CLUSTER_ID. +In this example, it’s scylla/target.

      +
      $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c scylla/target --all-clusters -L s3:source-backup
      +backup/ff36d7e0-af2e-458c-afe6-868e0f3396b2
      +Snapshots:
      +  - sm_20240105115931UTC (409MiB, 1 nodes)
      +Keyspaces:
      +  - system_schema (15 tables)
      +  - users (9 tables)
      +
      +
      +
      +

      Restore schema

      +

      In the below commands, we are restoring the sm_20240105115931UTC snapshot. Replace it with a tag of a snapshot that you want to restore. +Restoring consist of two steps. First, you’ll restore the schema, and then the data. +To restore schema, create a restore task manually on target ScyllaCluster by executing following command:

      +
      kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager --  sctool restore -c <CLUSTER_ID> -L <BACKUP_LOCATION> -T <SNAPSHOT_TAG> --restore-schema
      +
      +
      +

      Where:

      +
        +
      • CLUSTER_ID - a name or ID of a cluster you want to restore into.

      • +
      • BACKUP_LOCATION - the location in which the backup is stored.

      • +
      • SNAPSHOT_TAG - a tag of a snapshot that you want to restore.

      • +
      +

      When the task is created, the command will output the ID of a restore task.

      +
      $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-schema
      +restore/57228c52-7cf6-4271-8c8d-d446ff160747
      +
      +
      +

      Use the following command to check progress of the restore task:

      +
      $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/57228c52-7cf6-4271-8c8d-d446ff160747
      +Restore progress
      +Run:            0dd20cdf-abc4-11ee-951c-6e7993cf42ed
      +Status:         DONE - restart required (see restore docs)
      +Start time:     05 Jan 24 12:15:02 UTC
      +End time:       05 Jan 24 12:15:09 UTC
      +Duration:       6s
      +Progress:       100% | 100%
      +Snapshot Tag:   sm_20240105115931UTC
      +
      ++---------------+-------------+----------+----------+------------+--------+
      +| Keyspace      |    Progress |     Size |  Success | Downloaded | Failed |
      ++---------------+-------------+----------+----------+------------+--------+
      +| system_schema | 100% | 100% | 214.150k | 214.150k |   214.150k |      0 |
      ++---------------+-------------+----------+----------+------------+--------+
      +
      +
      +

      As suggested in the progress output, you will need to execute a rolling restart of the ScyllaCluster.

      +
      kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "schema restored"}}'
      +
      +
      +

      Use the following commands to wait until restart is finished:

      +
      $ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target
      +scyllacluster.scylla.scylladb.com/target condition met
      +
      +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target
      +scyllacluster.scylla.scylladb.com/target condition met
      +
      +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target
      +scyllacluster.scylla.scylladb.com/target condition met
      +
      +
      +
      +

      Caution

      +

      Restoring schema with ScyllaDB OS 5.4.X or ScyllaDB Enterprise 2024.1.X and consistent_cluster_management

      +

      After you’ve followed the above steps with a ScyllaDB target cluster with consistent_cluster_management disabled, you’ll need to enable Raft by configuring the target cluster with consistent_cluster_management: true. +Refer to API Reference to learn how to customize ScyllaDB configuration files.

      +

      You will then need to execute a rolling restart of the ScyllaCluster for the change to take effect.

      +
      kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "raft enabled"}}'
      +
      +
      +

      Use the following commands to wait until restart is finished:

      +
      $ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target
      +scyllacluster.scylla.scylladb.com/target condition met
      +
      +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target
      +scyllacluster.scylla.scylladb.com/target condition met
      +
      +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target
      +scyllacluster.scylla.scylladb.com/target condition met
      +
      +
      +
      +
      +
      +

      Restore tables

      +

      To restore the tables content, create a restore task manually on target ScyllaCluster by executing the following command:

      +
      kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c <CLUSTER_ID> -L <BACKUP_LOCATION> -T <SNAPSHOT_TAG> --restore-tables
      +
      +
      +

      Where:

      +
        +
      • CLUSTER_ID - a name or ID of a cluster you want to restore into.

      • +
      • BACKUP_LOCATION - the location in which the backup is stored.

      • +
      • SNAPSHOT_TAG - a tag of a snapshot that you want to restore.

      • +
      +

      When the task is created, the command will output the ID of a restore task.

      +
      $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-tables
      +restore/63642069-bed5-4def-ba0f-68c49e47ace1
      +
      +
      +

      Use the following command to check progress of the restore task:

      +
      $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/63642069-bed5-4def-ba0f-68c49e47ace1
      +Restore progress
      +Run:            ab015cef-abc8-11ee-9521-6e7993cf42ed
      +Status:         DONE
      +Start time:     05 Jan 24 12:48:04 UTC
      +End time:       05 Jan 24 12:48:15 UTC
      +Duration:       11s
      +Progress:       100% | 100%
      +Snapshot Tag:   sm_20240105115931UTC
      +
      ++-------------+-------------+--------+---------+------------+--------+
      +| Keyspace    |    Progress |   Size | Success | Downloaded | Failed |
      ++-------------+-------------+--------+---------+------------+--------+
      +| users       | 100% | 100% | 409MiB |  409MiB |     409MiB |      0 |
      ++-------------+-------------+--------+---------+------------+--------+
      +
      +Post-restore repair progress
      +Run:            ab015cef-abc8-11ee-9521-6e7993cf42ed
      +Status:         DONE
      +Start time:     05 Jan 24 12:48:04 UTC
      +End time:       05 Jan 24 12:48:15 UTC
      +Duration:       11s
      +Progress:       100%
      +Intensity:      1
      +Parallel:       0
      +Datacenters:
      +  - us-east-1
      +
      ++-------------+--------------+----------+----------+
      +| Keyspace    |        Table | Progress | Duration |
      ++-------------+--------------+----------+----------+
      +| users       | users        | 100%     | 0s       |
      ++-------------+--------------+----------+----------+
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/nodeoperations/scylla-upgrade.html b/master/nodeoperations/scylla-upgrade.html new file mode 100644 index 00000000000..179729b0261 --- /dev/null +++ b/master/nodeoperations/scylla-upgrade.html @@ -0,0 +1,691 @@ + + + + + + + + + + + + + Upgrading version of Scylla | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Upgrading version of Scylla

      +

      To upgrade Scylla version using Operator user have to modify existing ScyllaCluster definition.

      +

      In this example cluster will be upgraded to version 4.4.5.

      +
      kubectl -n scylla patch ScyllaCluster simple-cluster  -p '{"spec":{"version": "4.4.5"}}' --type=merge
      +
      +
      +

      Operator supports two types of version upgrades:

      +
        +
      1. Patch upgrade

      2. +
      3. Generic upgrade

      4. +
      +

      Patch upgrade

      +

      Patch upgrade is executed when only patch version change is detected according to semantic versioning format. +Procedure simply rolls out a restart of whole cluster and upgrades Scylla container image for each node one by one.

      +

      Example: 4.0.0 -> 4.0.1

      +

      Generic upgrade

      +

      Generic upgrades are executed for the non patch version changes.

      +

      Example: 4.0.0 -> 2020.1.0 or 4.0.0 -> 4.1.0 or even 4.0.0 -> nightly

      +

      User can observe current state of upgrade in ScyllaCluster status.

      +
      kubectl -n scylla describe ScyllaCluster simple-cluster
      +[...]
      +Status:
      +  Racks:
      +    us-east-1a:
      +      Members:        3
      +      Ready Members:  3
      +      Version:        4.1.9
      +  Upgrade:
      +    Current Node:         simple-cluster-us-east-1-us-east-1a-2
      +    Current Rack:         us-east-1a
      +    Data Snapshot Tag:    so_data_20201228135002UTC
      +    From Version:         4.1.9
      +    State:                validate_upgrade
      +    System Snapshot Tag:  so_system_20201228135002UTC
      +    To Version:           4.2.2
      +
      +
      +

      Each upgrade begins with taking a snapshot of system and system_schema keyspaces on all nodes in parallel. +Name of this snapshot tag is saved in upgrade status under System Snapshot Tag.

      +

      Before nodes in rack are upgraded, underlying StatefulSet is changed to use OnDelete UpgradeStrategy. +This allows Operator have a full control over when Pod image is changed.

      +

      When a node is being upgraded, maintenance mode is enabled, then the node is drained and snapshot of all data keyspaces is taken. +Snapshot tag is saved under Data Snapshot Tag and is the same for all nodes during the procedure. +Once everything is set up, maintenance mode is disabled and Scylla Pod is deleted. Underlying StatefulSet will bring up a new +Pod with upgraded version. +Once Pod will become ready, data snapshot from this particular node is removed, and Operator moves to next node.

      +

      Once every rack is upgraded, system snapshot is removed from all nodes in parallel and previous StatefulSet UpgradeStrategy is restored. +At this point, all your nodes should be already in desired version.

      +

      Current state of upgrade can be traced using Current Node, Current Rack and State status fields.

      +
        +
      • Current Node shows which node is being upgraded.

      • +
      • Current Rack displays which rack is being upgraded.

      • +
      • State contain information at which stage upgrade is.

      • +
      +

      State can have following values:

      +
        +
      • begin_upgrade - upgrade is starting

      • +
      • check_schema_agreement - Operator waits until all nodes reach schema agreement. It waits for it for 1 minute, prints an error log message and check is retried.

      • +
      • create_system_backup - system keyspaces snapshot is being taken

      • +
      • find_next_rack - Operator finds out which rack must be upgraded next, decision is saved in Current Rack

      • +
      • upgrade_image_in_pod_spec - Image and UpgradeStrategy is upgraded in underlying StatefulSet

      • +
      • find_next_node - Operator finds out which node must be upgraded next, decision is saved in Current Node

      • +
      • enable_maintenance_mode - maintenance mode is being enabled

      • +
      • drain_node - node is being drained

      • +
      • backup_data - snapshot of data keyspaces is being taken

      • +
      • disable_maintenance_mode - maintenance mode is being disabled

      • +
      • delete_pod - Scylla Pod is being deleted

      • +
      • validate_upgrade - Operator validates if new pod enters Ready state and if Scylla version is upgraded

      • +
      • clear_data_backup - snapshot of data keyspaces is being removed

      • +
      • clear_system_backup - snapshot of system keyspaces is being removed

      • +
      • restore_upgrade_strategy - restore UpgradeStrategy in underlying StatefulSet

      • +
      • finish_upgrade - upgrade cleanup

      • +
      +

      Recovering from upgrade failure

      +

      Upgrade may get stuck on validate_upgrade stage. This happens when Scylla Pod refuses to properly boot up.

      +

      To continue with upgrade, first turn off operator by scaling Operator replicas to zero:

      +
      kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=0
      +
      +
      +

      Then user have to manually resolve issue with Scylla by checking what is the root cause of a failure in Scylla container logs. +If needed data and system keyspaces SSTable snapshots are available on the node. You can check ScyllaCluster status for their names.

      +

      Once issue is resolved and Scylla Pod is up and running (Pod is in Ready state), scale Operator back to two replicas:

      +
      kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=2
      +
      +
      +

      Operator should continue upgrade process from where it left off.

      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/objects.inv b/master/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..626aa550c37e012bcdfb4ff45262e380355d15f0 GIT binary patch literal 15886 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 b^2krGvqZgMlIJ9+(Y#&GZvx%Zz_R}bT5%{| literal 0 HcmV?d00001 diff --git a/master/performance.html b/master/performance.html new file mode 100644 index 00000000000..0fcb3f694cb --- /dev/null +++ b/master/performance.html @@ -0,0 +1,700 @@ + + + + + + + + + + + + + Performance tuning | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Performance tuning

      +

      Scylla Operator 1.6 introduces a new experimental feature allowing users to optimize Kubernetes nodes.

      +
      +

      Warning

      +

      We recommend that you first try out the performance tuning on a pre-production instance. +Given the nature of the underlying tuning script, undoing the changes requires rebooting the Kubernetes node(s).

      +
      +
      +

      Node tuning

      +

      Starting from Operator 1.6, a new CRD called NodeConfig is available, allowing users to target Nodes which should be tuned. +When a Node is supposed to be optimized, the Scylla Operator creates a DaemonSet covering these Nodes. +Nodes matching the provided placement conditions will be subject to tuning.

      +

      Below example NodeConfig tunes nodes having scylla.scylladb.com/node-type=scylla label:

      +
      apiVersion: scylla.scylladb.com/v1alpha1
      +kind: NodeConfig
      +metadata:
      + name: cluster
      +spec:
      + placement:
      +   nodeSelector:
      +     scylla.scylladb.com/node-type: scylla
      +
      +
      +

      For more details about new CRD use:

      +
      kubectl explain nodeconfigs.scylla.scylladb.com/v1alpha1
      +
      +
      +

      For all optimizations we use a Python script available in the Scylla image called perftune. +Perftune executes the performance optmizations like tuning the kernel, network, disk devices, spreading IRQs across CPUs and more.

      +

      Tuning consists of two separate optimizations: common node tuning, and tuning based on Scylla Pods and their resource assignment. +Node tuning is executed immediately. Pod tuning is executed when Scylla Pod lands on the same Node.

      +

      Scylla works most efficently when it’s pinned to CPU and not interrupted. +One of the most common causes of context-switching are network interrupts. Packets coming to a node need to be processed, +and this requires CPU shares.

      +

      On K8s we always have at least a couple of processes running on the node: kubelet, kubernetes provider applications, daemons etc. +These processes require CPU shares, so we cannot dedicate entire node processing power to Scylla, we need to leave space for others.
      +We take advantage of it, and we pin IRQs to CPUs not used by any Scylla Pods exclusively.

      +

      Tuning resources are created in a special namespace called scylla-operator-node-tuning.

      +

      The tuning is applied only to pods with Guaranteed QoS class. Please double check your ScyllaCluster resource specification +to see if it meets all conditions.

      +
      +
      +

      Kubernetes tuning

      +

      By default, the kubelet uses the CFS quota to enforce pod CPU limits.
      +When the node runs many CPU-bound pods, the workload can move around different CPU cores depending on whether the pod +is throttled and which CPU cores are available. +However, kubelet may be configured to assign CPUs exclusively, by setting the CPU manager policy to static.

      +

      Setting up kubelet configuration is provider specific. Please check the docs for your distribution or talk to your +provider.

      +

      Only pods within the Guaranteed QoS class) can take advantage of this option. +When such pod lands on a Node, kubelet will pin them to specific CPUs, and those won’t be part of the shared pool.

      +

      In our case there are two requirements each ScyllaCluster must fulfill to receive a Guaranteed QoS class:

      +
        +
      • resource request and limits must be equal or only limits have to be provided

      • +
      • agentResources must be provided and their requests and limits must be equal, or only limits have to be provided

      • +
      +

      An example of such a ScyllaCluster that receives a Guaranteed QoS class is below:

      +
      apiVersion: scylla.scylladb.com/v1
      +kind: ScyllaCluster
      +metadata:
      +  name: guaranteed-cluster
      +  namespace: scylla
      +spec:
      +  agentVersion: 3.3.3
      +  version: 6.1.1
      +  datacenter:
      +    name: us-east-1
      +    racks:
      +    - name: us-east-1a
      +      members: 3
      +      storage:
      +        capacity: 500Gi
      +      agentResources:
      +        requests:
      +          cpu: 1
      +          memory: 1G
      +        limits:
      +          cpu: 1
      +          memory: 1G
      +      resources:
      +        requests:
      +          cpu: 4
      +          memory: 16G
      +        limits:
      +          cpu: 4
      +          memory: 16G
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/releases.html b/master/releases.html new file mode 100644 index 00000000000..4ecb77fbbab --- /dev/null +++ b/master/releases.html @@ -0,0 +1,859 @@ + + + + + + + + + + + + + Releases | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Releases

      +
      +

      Schedule

      +

      We are aiming to ship a new release approximately every 6 weeks. The following release schedule is only advisory, there are no commitments made to hitting these dates.

      + + + + + + + + + + + + + +

      Release

      Code freeze

      General availability

      1.14

      2024-08-14

      2024-08-31

      +
      +
      +

      Supported releases

      +

      We support the latest 2 releases of the operator to give everyone time to upgrade.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Release

      General availability

      Support ends

      1.13

      2024-06-20

      Release of 1.15

      1.12

      2024-03-28

      Release of 1.14

      1.11

      2023-11-09

      2024-06-20

      1.10

      2023-08-25

      2024-03-28

      1.9

      2023-07-04

      2023-11-09

      1.8

      2023-01-25

      2023-08-25

      1.7

      2022-01-27

      2023-07-04

      1.6

      2021-12-03

      2023-01-25

      1.5

      2021-09-16

      2022-01-27

      1.4

      2021-08-10

      2021-12-03

      1.3

      2021-06-17

      2021-09-16

      1.2

      2021-05-06

      2021-08-10

      1.1

      2021-03-22

      2021-06-17

      1.0

      2021-01-21

      2021-05-06

      +
      +

      Backport policy

      +

      Usually, only important bug fixes are eligible for being backported. +This may depend on the situation and assessment of the maintainers.

      +
      +
      +
      +

      CI/CD

      +

      We use GitHub actions for our CI/CD. Every merge to a supported branch, or a creation of a tag will automatically trigger a job to build, test and publish the container image and other artifacts like helm charts. Before we publish any image, it must pass the e2e suite.

      +
      +

      Automated promotions

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Git reference

      Type

      Container image

      master

      branch

      docker.io/scylladb/scylla-operator:latest

      vX.Y

      branch

      docker.io/scylladb/scylla-operator:X.Y

      vX.Y.Z

      tag

      docker.io/scylladb/scylla-operator:X.Y.Z

      vX.Y.Z-alpha.N

      tag

      docker.io/scylladb/scylla-operator:X.Y.Z-alpha.N

      vX.Y.Z-beta.N

      tag

      docker.io/scylladb/scylla-operator:X.Y.Z-beta.N

      vX.Y.Z-rc.N

      tag

      docker.io/scylladb/scylla-operator:X.Y.Z-rc.N

      +
      +
      +

      Generally available

      +

      GA images aren’t build from scratch but rather promoted from an existing release candidates. When we decide a release candidate has the acceptable quality and QA sings it off, the release candidate is promoted to become the GA release. This makes sure the image has exactly the same content and SHA as the tested release candidate.

      +
      +
      +
      +

      Support matrix

      +

      Support matrix table shows the version requirements for a particular scylla-operator version. Be sure to match these requirements, otherwise some functionality will not work.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Component

      v1.13

      v1.12

      v1.11

      v1.10

      Kubernetes

      >=1.21

      >=1.21

      >=1.21

      >=1.21

      CRI API

      v1

      v1

      v1

      v1

      Scylla OS

      >=5.4

      >=5.0

      >=5.0

      >=5.0

      Scylla Enterprise

      >=2023.1

      >=2021.1

      >=2021.1

      >=2021.1

      Scylla Manager

      >=3.2.8

      >=3.2.6

      >=3.2

      >=2.6

      Scylla Monitoring

      (CRD)

      (CRD)

      (CRD)

      >=4.0

      +
      +

      Supported Kubernetes platforms

      +

      We officially test and recommend to use the following platforms:

      + + + + + + + + + + + + + + +

      Platform

      OS Image

      GKE

      Ubuntu

      EKS

      Amazon Linux

      +

      While our APIs generally work on any Kubernetes conformant cluster, +performance tuning and other pieces that need to interact with the host OS, kubelet, CRI, kernel, etc. might hit some incompatibilities.

      +
      +

      Warning

      +

      The following platforms are known not to work correctly at this time.

      + + + + + + + + + + + + + + + + + +

      Platform

      OS Image

      Details

      GKE

      Container OS

      EKS

      Bottlerocket

      Suspected kernel/cgroups issue that breaks available memory detection for ScyllaDB

      +
      +
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/search.html b/master/search.html new file mode 100644 index 00000000000..23c5e946342 --- /dev/null +++ b/master/search.html @@ -0,0 +1,586 @@ + + + + + + + + + + + + + Search | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + + + +
      + + + + + +
      + + +
      + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/searchindex.js b/master/searchindex.js new file mode 100644 index 00000000000..5a9a12b49da --- /dev/null +++ b/master/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {".metadata": [[1, "metadata"], [2, "metadata"], [3, "metadata"], [4, "metadata"], [5, "metadata"]], ".spec": [[1, "spec"], [2, "spec"], [3, "spec"], [4, "spec"], [5, "spec"]], ".spec.alternator": [[2, "spec-alternator"]], ".spec.alternator.servingCertificate": [[2, "spec-alternator-servingcertificate"]], ".spec.alternator.servingCertificate.operatorManagedOptions": [[2, "spec-alternator-servingcertificate-operatormanagedoptions"]], ".spec.alternator.servingCertificate.userManagedOptions": [[2, "spec-alternator-servingcertificate-usermanagedoptions"]], ".spec.backups[]": [[2, "spec-backups"]], ".spec.components": [[4, "spec-components"]], ".spec.components.grafana": [[4, "spec-components-grafana"]], ".spec.components.grafana.authentication": [[4, "spec-components-grafana-authentication"]], ".spec.components.grafana.exposeOptions": [[4, "spec-components-grafana-exposeoptions"]], ".spec.components.grafana.exposeOptions.webInterface": [[4, "spec-components-grafana-exposeoptions-webinterface"]], ".spec.components.grafana.exposeOptions.webInterface.ingress": [[4, "spec-components-grafana-exposeoptions-webinterface-ingress"]], ".spec.components.grafana.exposeOptions.webInterface.ingress.annotations": [[4, "spec-components-grafana-exposeoptions-webinterface-ingress-annotations"]], ".spec.components.grafana.placement": [[4, "spec-components-grafana-placement"]], ".spec.components.grafana.placement.nodeAffinity": [[4, "spec-components-grafana-placement-nodeaffinity"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[4, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[4, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[4, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[4, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[4, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[4, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[4, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[4, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.components.grafana.placement.podAffinity": [[4, "spec-components-grafana-placement-podaffinity"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[4, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[4, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[4, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[4, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[4, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[4, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[4, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[4, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[4, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[4, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[4, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[4, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[4, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[4, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[4, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity": [[4, "spec-components-grafana-placement-podantiaffinity"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[4, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[4, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[4, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[4, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[4, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[4, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[4, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[4, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[4, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[4, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[4, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[4, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[4, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[4, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[4, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.tolerations[]": [[4, "spec-components-grafana-placement-tolerations"]], ".spec.components.grafana.resources": [[4, "spec-components-grafana-resources"]], ".spec.components.grafana.resources.claims[]": [[4, "spec-components-grafana-resources-claims"]], ".spec.components.grafana.resources.limits": [[4, "spec-components-grafana-resources-limits"]], ".spec.components.grafana.resources.requests": [[4, "spec-components-grafana-resources-requests"]], ".spec.components.prometheus": [[4, "spec-components-prometheus"]], ".spec.components.prometheus.exposeOptions": [[4, "spec-components-prometheus-exposeoptions"]], ".spec.components.prometheus.exposeOptions.webInterface": [[4, "spec-components-prometheus-exposeoptions-webinterface"]], ".spec.components.prometheus.exposeOptions.webInterface.ingress": [[4, "spec-components-prometheus-exposeoptions-webinterface-ingress"]], ".spec.components.prometheus.exposeOptions.webInterface.ingress.annotations": [[4, "spec-components-prometheus-exposeoptions-webinterface-ingress-annotations"]], ".spec.components.prometheus.placement": [[4, "spec-components-prometheus-placement"]], ".spec.components.prometheus.placement.nodeAffinity": [[4, "spec-components-prometheus-placement-nodeaffinity"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[4, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[4, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[4, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[4, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[4, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[4, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[4, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[4, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.components.prometheus.placement.podAffinity": [[4, "spec-components-prometheus-placement-podaffinity"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[4, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[4, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[4, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[4, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[4, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[4, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[4, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[4, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[4, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[4, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[4, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[4, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[4, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[4, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[4, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity": [[4, "spec-components-prometheus-placement-podantiaffinity"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[4, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[4, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[4, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[4, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[4, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[4, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[4, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[4, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[4, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[4, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[4, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[4, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[4, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[4, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[4, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.tolerations[]": [[4, "spec-components-prometheus-placement-tolerations"]], ".spec.components.prometheus.resources": [[4, "spec-components-prometheus-resources"]], ".spec.components.prometheus.resources.claims[]": [[4, "spec-components-prometheus-resources-claims"]], ".spec.components.prometheus.resources.limits": [[4, "spec-components-prometheus-resources-limits"]], ".spec.components.prometheus.resources.requests": [[4, "spec-components-prometheus-resources-requests"]], ".spec.components.prometheus.storage": [[4, "spec-components-prometheus-storage"]], ".spec.components.prometheus.storage.annotations": [[4, "spec-components-prometheus-storage-annotations"]], ".spec.components.prometheus.storage.labels": [[4, "spec-components-prometheus-storage-labels"]], ".spec.components.prometheus.storage.volumeClaimTemplate": [[4, "spec-components-prometheus-storage-volumeclaimtemplate"]], ".spec.components.prometheus.storage.volumeClaimTemplate.metadata": [[4, "spec-components-prometheus-storage-volumeclaimtemplate-metadata"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec": [[4, "spec-components-prometheus-storage-volumeclaimtemplate-spec"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource": [[4, "spec-components-prometheus-storage-volumeclaimtemplate-spec-datasource"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef": [[4, "spec-components-prometheus-storage-volumeclaimtemplate-spec-datasourceref"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources": [[4, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits": [[4, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources-limits"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests": [[4, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources-requests"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector": [[4, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]": [[4, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels": [[4, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.datacenter": [[2, "spec-datacenter"]], ".spec.datacenter.racks[]": [[2, "spec-datacenter-racks"]], ".spec.datacenter.racks[].agentResources": [[2, "spec-datacenter-racks-agentresources"]], ".spec.datacenter.racks[].agentResources.claims[]": [[2, "spec-datacenter-racks-agentresources-claims"]], ".spec.datacenter.racks[].agentResources.limits": [[2, "spec-datacenter-racks-agentresources-limits"]], ".spec.datacenter.racks[].agentResources.requests": [[2, "spec-datacenter-racks-agentresources-requests"]], ".spec.datacenter.racks[].agentVolumeMounts[]": [[2, "spec-datacenter-racks-agentvolumemounts"]], ".spec.datacenter.racks[].placement": [[2, "spec-datacenter-racks-placement"]], ".spec.datacenter.racks[].placement.nodeAffinity": [[2, "spec-datacenter-racks-placement-nodeaffinity"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.datacenter.racks[].placement.podAffinity": [[2, "spec-datacenter-racks-placement-podaffinity"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity": [[2, "spec-datacenter-racks-placement-podantiaffinity"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.tolerations[]": [[2, "spec-datacenter-racks-placement-tolerations"]], ".spec.datacenter.racks[].resources": [[2, "spec-datacenter-racks-resources"]], ".spec.datacenter.racks[].resources.claims[]": [[2, "spec-datacenter-racks-resources-claims"]], ".spec.datacenter.racks[].resources.limits": [[2, "spec-datacenter-racks-resources-limits"]], ".spec.datacenter.racks[].resources.requests": [[2, "spec-datacenter-racks-resources-requests"]], ".spec.datacenter.racks[].storage": [[2, "spec-datacenter-racks-storage"]], ".spec.datacenter.racks[].storage.metadata": [[2, "spec-datacenter-racks-storage-metadata"]], ".spec.datacenter.racks[].storage.metadata.annotations": [[2, "spec-datacenter-racks-storage-metadata-annotations"]], ".spec.datacenter.racks[].storage.metadata.labels": [[2, "spec-datacenter-racks-storage-metadata-labels"]], ".spec.datacenter.racks[].volumeMounts[]": [[2, "spec-datacenter-racks-volumemounts"]], ".spec.datacenter.racks[].volumes[]": [[2, "spec-datacenter-racks-volumes"]], ".spec.datacenter.racks[].volumes[].awsElasticBlockStore": [[2, "spec-datacenter-racks-volumes-awselasticblockstore"]], ".spec.datacenter.racks[].volumes[].azureDisk": [[2, "spec-datacenter-racks-volumes-azuredisk"]], ".spec.datacenter.racks[].volumes[].azureFile": [[2, "spec-datacenter-racks-volumes-azurefile"]], ".spec.datacenter.racks[].volumes[].cephfs": [[2, "spec-datacenter-racks-volumes-cephfs"]], ".spec.datacenter.racks[].volumes[].cephfs.secretRef": [[2, "spec-datacenter-racks-volumes-cephfs-secretref"]], ".spec.datacenter.racks[].volumes[].cinder": [[2, "spec-datacenter-racks-volumes-cinder"]], ".spec.datacenter.racks[].volumes[].cinder.secretRef": [[2, "spec-datacenter-racks-volumes-cinder-secretref"]], ".spec.datacenter.racks[].volumes[].configMap": [[2, "spec-datacenter-racks-volumes-configmap"]], ".spec.datacenter.racks[].volumes[].configMap.items[]": [[2, "spec-datacenter-racks-volumes-configmap-items"]], ".spec.datacenter.racks[].volumes[].csi": [[2, "spec-datacenter-racks-volumes-csi"]], ".spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef": [[2, "spec-datacenter-racks-volumes-csi-nodepublishsecretref"]], ".spec.datacenter.racks[].volumes[].csi.volumeAttributes": [[2, "spec-datacenter-racks-volumes-csi-volumeattributes"]], ".spec.datacenter.racks[].volumes[].downwardAPI": [[2, "spec-datacenter-racks-volumes-downwardapi"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[]": [[2, "spec-datacenter-racks-volumes-downwardapi-items"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef": [[2, "spec-datacenter-racks-volumes-downwardapi-items-fieldref"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef": [[2, "spec-datacenter-racks-volumes-downwardapi-items-resourcefieldref"]], ".spec.datacenter.racks[].volumes[].emptyDir": [[2, "spec-datacenter-racks-volumes-emptydir"]], ".spec.datacenter.racks[].volumes[].ephemeral": [[2, "spec-datacenter-racks-volumes-ephemeral"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-metadata"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-datasource"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-datasourceref"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources-limits"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources-requests"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.datacenter.racks[].volumes[].fc": [[2, "spec-datacenter-racks-volumes-fc"]], ".spec.datacenter.racks[].volumes[].flexVolume": [[2, "spec-datacenter-racks-volumes-flexvolume"]], ".spec.datacenter.racks[].volumes[].flexVolume.options": [[2, "spec-datacenter-racks-volumes-flexvolume-options"]], ".spec.datacenter.racks[].volumes[].flexVolume.secretRef": [[2, "spec-datacenter-racks-volumes-flexvolume-secretref"]], ".spec.datacenter.racks[].volumes[].flocker": [[2, "spec-datacenter-racks-volumes-flocker"]], ".spec.datacenter.racks[].volumes[].gcePersistentDisk": [[2, "spec-datacenter-racks-volumes-gcepersistentdisk"]], ".spec.datacenter.racks[].volumes[].gitRepo": [[2, "spec-datacenter-racks-volumes-gitrepo"]], ".spec.datacenter.racks[].volumes[].glusterfs": [[2, "spec-datacenter-racks-volumes-glusterfs"]], ".spec.datacenter.racks[].volumes[].hostPath": [[2, "spec-datacenter-racks-volumes-hostpath"]], ".spec.datacenter.racks[].volumes[].iscsi": [[2, "spec-datacenter-racks-volumes-iscsi"]], ".spec.datacenter.racks[].volumes[].iscsi.secretRef": [[2, "spec-datacenter-racks-volumes-iscsi-secretref"]], ".spec.datacenter.racks[].volumes[].nfs": [[2, "spec-datacenter-racks-volumes-nfs"]], ".spec.datacenter.racks[].volumes[].persistentVolumeClaim": [[2, "spec-datacenter-racks-volumes-persistentvolumeclaim"]], ".spec.datacenter.racks[].volumes[].photonPersistentDisk": [[2, "spec-datacenter-racks-volumes-photonpersistentdisk"]], ".spec.datacenter.racks[].volumes[].portworxVolume": [[2, "spec-datacenter-racks-volumes-portworxvolume"]], ".spec.datacenter.racks[].volumes[].projected": [[2, "spec-datacenter-racks-volumes-projected"]], ".spec.datacenter.racks[].volumes[].projected.sources[]": [[2, "spec-datacenter-racks-volumes-projected-sources"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector-matchexpressions"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector-matchlabels"]], ".spec.datacenter.racks[].volumes[].projected.sources[].configMap": [[2, "spec-datacenter-racks-volumes-projected-sources-configmap"]], ".spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-configmap-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items-fieldref"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items-resourcefieldref"]], ".spec.datacenter.racks[].volumes[].projected.sources[].secret": [[2, "spec-datacenter-racks-volumes-projected-sources-secret"]], ".spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-secret-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken": [[2, "spec-datacenter-racks-volumes-projected-sources-serviceaccounttoken"]], ".spec.datacenter.racks[].volumes[].quobyte": [[2, "spec-datacenter-racks-volumes-quobyte"]], ".spec.datacenter.racks[].volumes[].rbd": [[2, "spec-datacenter-racks-volumes-rbd"]], ".spec.datacenter.racks[].volumes[].rbd.secretRef": [[2, "spec-datacenter-racks-volumes-rbd-secretref"]], ".spec.datacenter.racks[].volumes[].scaleIO": [[2, "spec-datacenter-racks-volumes-scaleio"]], ".spec.datacenter.racks[].volumes[].scaleIO.secretRef": [[2, "spec-datacenter-racks-volumes-scaleio-secretref"]], ".spec.datacenter.racks[].volumes[].secret": [[2, "spec-datacenter-racks-volumes-secret"]], ".spec.datacenter.racks[].volumes[].secret.items[]": [[2, "spec-datacenter-racks-volumes-secret-items"]], ".spec.datacenter.racks[].volumes[].storageos": [[2, "spec-datacenter-racks-volumes-storageos"]], ".spec.datacenter.racks[].volumes[].storageos.secretRef": [[2, "spec-datacenter-racks-volumes-storageos-secretref"]], ".spec.datacenter.racks[].volumes[].vsphereVolume": [[2, "spec-datacenter-racks-volumes-vspherevolume"]], ".spec.endpointsSelector": [[4, "spec-endpointsselector"]], ".spec.endpointsSelector.matchExpressions[]": [[4, "spec-endpointsselector-matchexpressions"]], ".spec.endpointsSelector.matchLabels": [[4, "spec-endpointsselector-matchlabels"]], ".spec.exposeOptions": [[2, "spec-exposeoptions"], [3, "spec-exposeoptions"]], ".spec.exposeOptions.broadcastOptions": [[2, "spec-exposeoptions-broadcastoptions"], [3, "spec-exposeoptions-broadcastoptions"]], ".spec.exposeOptions.broadcastOptions.clients": [[2, "spec-exposeoptions-broadcastoptions-clients"], [3, "spec-exposeoptions-broadcastoptions-clients"]], ".spec.exposeOptions.broadcastOptions.clients.podIP": [[2, "spec-exposeoptions-broadcastoptions-clients-podip"], [3, "spec-exposeoptions-broadcastoptions-clients-podip"]], ".spec.exposeOptions.broadcastOptions.nodes": [[2, "spec-exposeoptions-broadcastoptions-nodes"], [3, "spec-exposeoptions-broadcastoptions-nodes"]], ".spec.exposeOptions.broadcastOptions.nodes.podIP": [[2, "spec-exposeoptions-broadcastoptions-nodes-podip"], [3, "spec-exposeoptions-broadcastoptions-nodes-podip"]], ".spec.exposeOptions.cql": [[2, "spec-exposeoptions-cql"], [3, "spec-exposeoptions-cql"]], ".spec.exposeOptions.cql.ingress": [[2, "spec-exposeoptions-cql-ingress"], [3, "spec-exposeoptions-cql-ingress"]], ".spec.exposeOptions.cql.ingress.annotations": [[2, "spec-exposeoptions-cql-ingress-annotations"], [3, "spec-exposeoptions-cql-ingress-annotations"]], ".spec.exposeOptions.cql.ingress.labels": [[2, "spec-exposeoptions-cql-ingress-labels"], [3, "spec-exposeoptions-cql-ingress-labels"]], ".spec.exposeOptions.nodeService": [[2, "spec-exposeoptions-nodeservice"], [3, "spec-exposeoptions-nodeservice"]], ".spec.exposeOptions.nodeService.annotations": [[2, "spec-exposeoptions-nodeservice-annotations"], [3, "spec-exposeoptions-nodeservice-annotations"]], ".spec.exposeOptions.nodeService.labels": [[2, "spec-exposeoptions-nodeservice-labels"], [3, "spec-exposeoptions-nodeservice-labels"]], ".spec.genericUpgrade": [[2, "spec-genericupgrade"]], ".spec.imagePullSecrets[]": [[2, "spec-imagepullsecrets"], [3, "spec-imagepullsecrets"]], ".spec.localDiskSetup": [[1, "spec-localdisksetup"]], ".spec.localDiskSetup.filesystems[]": [[1, "spec-localdisksetup-filesystems"]], ".spec.localDiskSetup.loopDevices[]": [[1, "spec-localdisksetup-loopdevices"]], ".spec.localDiskSetup.mounts[]": [[1, "spec-localdisksetup-mounts"]], ".spec.localDiskSetup.raids[]": [[1, "spec-localdisksetup-raids"]], ".spec.localDiskSetup.raids[].RAID0": [[1, "spec-localdisksetup-raids-raid0"]], ".spec.localDiskSetup.raids[].RAID0.devices": [[1, "spec-localdisksetup-raids-raid0-devices"]], ".spec.metadata": [[3, "spec-metadata"]], ".spec.metadata.annotations": [[3, "spec-metadata-annotations"]], ".spec.metadata.labels": [[3, "spec-metadata-labels"]], ".spec.network": [[2, "spec-network"]], ".spec.placement": [[1, "spec-placement"]], ".spec.placement.affinity": [[1, "spec-placement-affinity"]], ".spec.placement.affinity.nodeAffinity": [[1, "spec-placement-affinity-nodeaffinity"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.placement.affinity.podAffinity": [[1, "spec-placement-affinity-podaffinity"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity": [[1, "spec-placement-affinity-podantiaffinity"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.placement.nodeSelector": [[1, "spec-placement-nodeselector"]], ".spec.placement.tolerations[]": [[1, "spec-placement-tolerations"]], ".spec.podMetadata": [[2, "spec-podmetadata"]], ".spec.podMetadata.annotations": [[2, "spec-podmetadata-annotations"]], ".spec.podMetadata.labels": [[2, "spec-podmetadata-labels"]], ".spec.rackTemplate": [[3, "spec-racktemplate"]], ".spec.rackTemplate.placement": [[3, "spec-racktemplate-placement"]], ".spec.rackTemplate.placement.nodeAffinity": [[3, "spec-racktemplate-placement-nodeaffinity"]], ".spec.rackTemplate.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-racktemplate-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.rackTemplate.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[3, "spec-racktemplate-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.rackTemplate.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[3, "spec-racktemplate-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.rackTemplate.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[3, "spec-racktemplate-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.rackTemplate.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[3, "spec-racktemplate-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.rackTemplate.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[3, "spec-racktemplate-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.rackTemplate.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[3, "spec-racktemplate-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.rackTemplate.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[3, "spec-racktemplate-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.rackTemplate.placement.podAffinity": [[3, "spec-racktemplate-placement-podaffinity"]], ".spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-racktemplate-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-racktemplate-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-racktemplate-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-racktemplate-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-racktemplate-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-racktemplate-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-racktemplate-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.rackTemplate.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-racktemplate-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-racktemplate-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-racktemplate-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-racktemplate-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-racktemplate-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-racktemplate-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-racktemplate-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.rackTemplate.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-racktemplate-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.rackTemplate.placement.podAntiAffinity": [[3, "spec-racktemplate-placement-podantiaffinity"]], ".spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-racktemplate-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-racktemplate-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-racktemplate-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-racktemplate-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-racktemplate-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-racktemplate-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-racktemplate-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.rackTemplate.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-racktemplate-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-racktemplate-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-racktemplate-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-racktemplate-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-racktemplate-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-racktemplate-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-racktemplate-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.rackTemplate.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-racktemplate-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.rackTemplate.placement.tolerations[]": [[3, "spec-racktemplate-placement-tolerations"]], ".spec.rackTemplate.scyllaDB": [[3, "spec-racktemplate-scylladb"]], ".spec.rackTemplate.scyllaDB.resources": [[3, "spec-racktemplate-scylladb-resources"]], ".spec.rackTemplate.scyllaDB.resources.claims[]": [[3, "spec-racktemplate-scylladb-resources-claims"]], ".spec.rackTemplate.scyllaDB.resources.limits": [[3, "spec-racktemplate-scylladb-resources-limits"]], ".spec.rackTemplate.scyllaDB.resources.requests": [[3, "spec-racktemplate-scylladb-resources-requests"]], ".spec.rackTemplate.scyllaDB.storage": [[3, "spec-racktemplate-scylladb-storage"]], ".spec.rackTemplate.scyllaDB.storage.metadata": [[3, "spec-racktemplate-scylladb-storage-metadata"]], ".spec.rackTemplate.scyllaDB.storage.metadata.annotations": [[3, "spec-racktemplate-scylladb-storage-metadata-annotations"]], ".spec.rackTemplate.scyllaDB.storage.metadata.labels": [[3, "spec-racktemplate-scylladb-storage-metadata-labels"]], ".spec.rackTemplate.scyllaDB.volumeMounts[]": [[3, "spec-racktemplate-scylladb-volumemounts"]], ".spec.rackTemplate.scyllaDB.volumes[]": [[3, "spec-racktemplate-scylladb-volumes"]], ".spec.rackTemplate.scyllaDB.volumes[].awsElasticBlockStore": [[3, "spec-racktemplate-scylladb-volumes-awselasticblockstore"]], ".spec.rackTemplate.scyllaDB.volumes[].azureDisk": [[3, "spec-racktemplate-scylladb-volumes-azuredisk"]], ".spec.rackTemplate.scyllaDB.volumes[].azureFile": [[3, "spec-racktemplate-scylladb-volumes-azurefile"]], ".spec.rackTemplate.scyllaDB.volumes[].cephfs": [[3, "spec-racktemplate-scylladb-volumes-cephfs"]], ".spec.rackTemplate.scyllaDB.volumes[].cephfs.secretRef": [[3, "spec-racktemplate-scylladb-volumes-cephfs-secretref"]], ".spec.rackTemplate.scyllaDB.volumes[].cinder": [[3, "spec-racktemplate-scylladb-volumes-cinder"]], ".spec.rackTemplate.scyllaDB.volumes[].cinder.secretRef": [[3, "spec-racktemplate-scylladb-volumes-cinder-secretref"]], ".spec.rackTemplate.scyllaDB.volumes[].configMap": [[3, "spec-racktemplate-scylladb-volumes-configmap"]], ".spec.rackTemplate.scyllaDB.volumes[].configMap.items[]": [[3, "spec-racktemplate-scylladb-volumes-configmap-items"]], ".spec.rackTemplate.scyllaDB.volumes[].csi": [[3, "spec-racktemplate-scylladb-volumes-csi"]], ".spec.rackTemplate.scyllaDB.volumes[].csi.nodePublishSecretRef": [[3, "spec-racktemplate-scylladb-volumes-csi-nodepublishsecretref"]], ".spec.rackTemplate.scyllaDB.volumes[].csi.volumeAttributes": [[3, "spec-racktemplate-scylladb-volumes-csi-volumeattributes"]], ".spec.rackTemplate.scyllaDB.volumes[].downwardAPI": [[3, "spec-racktemplate-scylladb-volumes-downwardapi"]], ".spec.rackTemplate.scyllaDB.volumes[].downwardAPI.items[]": [[3, "spec-racktemplate-scylladb-volumes-downwardapi-items"]], ".spec.rackTemplate.scyllaDB.volumes[].downwardAPI.items[].fieldRef": [[3, "spec-racktemplate-scylladb-volumes-downwardapi-items-fieldref"]], ".spec.rackTemplate.scyllaDB.volumes[].downwardAPI.items[].resourceFieldRef": [[3, "spec-racktemplate-scylladb-volumes-downwardapi-items-resourcefieldref"]], ".spec.rackTemplate.scyllaDB.volumes[].emptyDir": [[3, "spec-racktemplate-scylladb-volumes-emptydir"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral": [[3, "spec-racktemplate-scylladb-volumes-ephemeral"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate": [[3, "spec-racktemplate-scylladb-volumes-ephemeral-volumeclaimtemplate"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.metadata": [[3, "spec-racktemplate-scylladb-volumes-ephemeral-volumeclaimtemplate-metadata"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec": [[3, "spec-racktemplate-scylladb-volumes-ephemeral-volumeclaimtemplate-spec"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource": [[3, "spec-racktemplate-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-datasource"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef": [[3, "spec-racktemplate-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-datasourceref"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources": [[3, "spec-racktemplate-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-resources"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits": [[3, "spec-racktemplate-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-resources-limits"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests": [[3, "spec-racktemplate-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-resources-requests"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector": [[3, "spec-racktemplate-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-selector"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]": [[3, "spec-racktemplate-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.rackTemplate.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels": [[3, "spec-racktemplate-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.rackTemplate.scyllaDB.volumes[].fc": [[3, "spec-racktemplate-scylladb-volumes-fc"]], ".spec.rackTemplate.scyllaDB.volumes[].flexVolume": [[3, "spec-racktemplate-scylladb-volumes-flexvolume"]], ".spec.rackTemplate.scyllaDB.volumes[].flexVolume.options": [[3, "spec-racktemplate-scylladb-volumes-flexvolume-options"]], ".spec.rackTemplate.scyllaDB.volumes[].flexVolume.secretRef": [[3, "spec-racktemplate-scylladb-volumes-flexvolume-secretref"]], ".spec.rackTemplate.scyllaDB.volumes[].flocker": [[3, "spec-racktemplate-scylladb-volumes-flocker"]], ".spec.rackTemplate.scyllaDB.volumes[].gcePersistentDisk": [[3, "spec-racktemplate-scylladb-volumes-gcepersistentdisk"]], ".spec.rackTemplate.scyllaDB.volumes[].gitRepo": [[3, "spec-racktemplate-scylladb-volumes-gitrepo"]], ".spec.rackTemplate.scyllaDB.volumes[].glusterfs": [[3, "spec-racktemplate-scylladb-volumes-glusterfs"]], ".spec.rackTemplate.scyllaDB.volumes[].hostPath": [[3, "spec-racktemplate-scylladb-volumes-hostpath"]], ".spec.rackTemplate.scyllaDB.volumes[].iscsi": [[3, "spec-racktemplate-scylladb-volumes-iscsi"]], ".spec.rackTemplate.scyllaDB.volumes[].iscsi.secretRef": [[3, "spec-racktemplate-scylladb-volumes-iscsi-secretref"]], ".spec.rackTemplate.scyllaDB.volumes[].nfs": [[3, "spec-racktemplate-scylladb-volumes-nfs"]], ".spec.rackTemplate.scyllaDB.volumes[].persistentVolumeClaim": [[3, "spec-racktemplate-scylladb-volumes-persistentvolumeclaim"]], ".spec.rackTemplate.scyllaDB.volumes[].photonPersistentDisk": [[3, "spec-racktemplate-scylladb-volumes-photonpersistentdisk"]], ".spec.rackTemplate.scyllaDB.volumes[].portworxVolume": [[3, "spec-racktemplate-scylladb-volumes-portworxvolume"]], ".spec.rackTemplate.scyllaDB.volumes[].projected": [[3, "spec-racktemplate-scylladb-volumes-projected"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[]": [[3, "spec-racktemplate-scylladb-volumes-projected-sources"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].clusterTrustBundle": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-clustertrustbundle"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-clustertrustbundle-labelselector"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-clustertrustbundle-labelselector-matchexpressions"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-clustertrustbundle-labelselector-matchlabels"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].configMap": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-configmap"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].configMap.items[]": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-configmap-items"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].downwardAPI": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-downwardapi"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].downwardAPI.items[]": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-downwardapi-items"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].downwardAPI.items[].fieldRef": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-downwardapi-items-fieldref"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-downwardapi-items-resourcefieldref"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].secret": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-secret"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].secret.items[]": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-secret-items"]], ".spec.rackTemplate.scyllaDB.volumes[].projected.sources[].serviceAccountToken": [[3, "spec-racktemplate-scylladb-volumes-projected-sources-serviceaccounttoken"]], ".spec.rackTemplate.scyllaDB.volumes[].quobyte": [[3, "spec-racktemplate-scylladb-volumes-quobyte"]], ".spec.rackTemplate.scyllaDB.volumes[].rbd": [[3, "spec-racktemplate-scylladb-volumes-rbd"]], ".spec.rackTemplate.scyllaDB.volumes[].rbd.secretRef": [[3, "spec-racktemplate-scylladb-volumes-rbd-secretref"]], ".spec.rackTemplate.scyllaDB.volumes[].scaleIO": [[3, "spec-racktemplate-scylladb-volumes-scaleio"]], ".spec.rackTemplate.scyllaDB.volumes[].scaleIO.secretRef": [[3, "spec-racktemplate-scylladb-volumes-scaleio-secretref"]], ".spec.rackTemplate.scyllaDB.volumes[].secret": [[3, "spec-racktemplate-scylladb-volumes-secret"]], ".spec.rackTemplate.scyllaDB.volumes[].secret.items[]": [[3, "spec-racktemplate-scylladb-volumes-secret-items"]], ".spec.rackTemplate.scyllaDB.volumes[].storageos": [[3, "spec-racktemplate-scylladb-volumes-storageos"]], ".spec.rackTemplate.scyllaDB.volumes[].storageos.secretRef": [[3, "spec-racktemplate-scylladb-volumes-storageos-secretref"]], ".spec.rackTemplate.scyllaDB.volumes[].vsphereVolume": [[3, "spec-racktemplate-scylladb-volumes-vspherevolume"]], ".spec.rackTemplate.scyllaDBManagerAgent": [[3, "spec-racktemplate-scylladbmanageragent"]], ".spec.rackTemplate.scyllaDBManagerAgent.resources": [[3, "spec-racktemplate-scylladbmanageragent-resources"]], ".spec.rackTemplate.scyllaDBManagerAgent.resources.claims[]": [[3, "spec-racktemplate-scylladbmanageragent-resources-claims"]], ".spec.rackTemplate.scyllaDBManagerAgent.resources.limits": [[3, "spec-racktemplate-scylladbmanageragent-resources-limits"]], ".spec.rackTemplate.scyllaDBManagerAgent.resources.requests": [[3, "spec-racktemplate-scylladbmanageragent-resources-requests"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumeMounts[]": [[3, "spec-racktemplate-scylladbmanageragent-volumemounts"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[]": [[3, "spec-racktemplate-scylladbmanageragent-volumes"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].awsElasticBlockStore": [[3, "spec-racktemplate-scylladbmanageragent-volumes-awselasticblockstore"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].azureDisk": [[3, "spec-racktemplate-scylladbmanageragent-volumes-azuredisk"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].azureFile": [[3, "spec-racktemplate-scylladbmanageragent-volumes-azurefile"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].cephfs": [[3, "spec-racktemplate-scylladbmanageragent-volumes-cephfs"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].cephfs.secretRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-cephfs-secretref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].cinder": [[3, "spec-racktemplate-scylladbmanageragent-volumes-cinder"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].cinder.secretRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-cinder-secretref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].configMap": [[3, "spec-racktemplate-scylladbmanageragent-volumes-configmap"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].configMap.items[]": [[3, "spec-racktemplate-scylladbmanageragent-volumes-configmap-items"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].csi": [[3, "spec-racktemplate-scylladbmanageragent-volumes-csi"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].csi.nodePublishSecretRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-csi-nodepublishsecretref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].csi.volumeAttributes": [[3, "spec-racktemplate-scylladbmanageragent-volumes-csi-volumeattributes"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].downwardAPI": [[3, "spec-racktemplate-scylladbmanageragent-volumes-downwardapi"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].downwardAPI.items[]": [[3, "spec-racktemplate-scylladbmanageragent-volumes-downwardapi-items"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].downwardAPI.items[].fieldRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-downwardapi-items-fieldref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].downwardAPI.items[].resourceFieldRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-downwardapi-items-resourcefieldref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].emptyDir": [[3, "spec-racktemplate-scylladbmanageragent-volumes-emptydir"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.metadata": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-metadata"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-datasource"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-datasourceref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-resources"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-resources-limits"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-resources-requests"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-selector"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels": [[3, "spec-racktemplate-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].fc": [[3, "spec-racktemplate-scylladbmanageragent-volumes-fc"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].flexVolume": [[3, "spec-racktemplate-scylladbmanageragent-volumes-flexvolume"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].flexVolume.options": [[3, "spec-racktemplate-scylladbmanageragent-volumes-flexvolume-options"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].flexVolume.secretRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-flexvolume-secretref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].flocker": [[3, "spec-racktemplate-scylladbmanageragent-volumes-flocker"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].gcePersistentDisk": [[3, "spec-racktemplate-scylladbmanageragent-volumes-gcepersistentdisk"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].gitRepo": [[3, "spec-racktemplate-scylladbmanageragent-volumes-gitrepo"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].glusterfs": [[3, "spec-racktemplate-scylladbmanageragent-volumes-glusterfs"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].hostPath": [[3, "spec-racktemplate-scylladbmanageragent-volumes-hostpath"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].iscsi": [[3, "spec-racktemplate-scylladbmanageragent-volumes-iscsi"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].iscsi.secretRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-iscsi-secretref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].nfs": [[3, "spec-racktemplate-scylladbmanageragent-volumes-nfs"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].persistentVolumeClaim": [[3, "spec-racktemplate-scylladbmanageragent-volumes-persistentvolumeclaim"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].photonPersistentDisk": [[3, "spec-racktemplate-scylladbmanageragent-volumes-photonpersistentdisk"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].portworxVolume": [[3, "spec-racktemplate-scylladbmanageragent-volumes-portworxvolume"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[]": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-clustertrustbundle"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-clustertrustbundle-labelselector"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-clustertrustbundle-labelselector-matchexpressions"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-clustertrustbundle-labelselector-matchlabels"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].configMap": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-configmap"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].configMap.items[]": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-configmap-items"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-downwardapi"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[]": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-downwardapi-items"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].fieldRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-downwardapi-items-fieldref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-downwardapi-items-resourcefieldref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].secret": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-secret"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].secret.items[]": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-secret-items"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].projected.sources[].serviceAccountToken": [[3, "spec-racktemplate-scylladbmanageragent-volumes-projected-sources-serviceaccounttoken"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].quobyte": [[3, "spec-racktemplate-scylladbmanageragent-volumes-quobyte"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].rbd": [[3, "spec-racktemplate-scylladbmanageragent-volumes-rbd"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].rbd.secretRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-rbd-secretref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].scaleIO": [[3, "spec-racktemplate-scylladbmanageragent-volumes-scaleio"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].scaleIO.secretRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-scaleio-secretref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].secret": [[3, "spec-racktemplate-scylladbmanageragent-volumes-secret"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].secret.items[]": [[3, "spec-racktemplate-scylladbmanageragent-volumes-secret-items"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].storageos": [[3, "spec-racktemplate-scylladbmanageragent-volumes-storageos"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].storageos.secretRef": [[3, "spec-racktemplate-scylladbmanageragent-volumes-storageos-secretref"]], ".spec.rackTemplate.scyllaDBManagerAgent.volumes[].vsphereVolume": [[3, "spec-racktemplate-scylladbmanageragent-volumes-vspherevolume"]], ".spec.rackTemplate.topologyLabelSelector": [[3, "spec-racktemplate-topologylabelselector"]], ".spec.racks[]": [[3, "spec-racks"]], ".spec.racks[].placement": [[3, "spec-racks-placement"]], ".spec.racks[].placement.nodeAffinity": [[3, "spec-racks-placement-nodeaffinity"]], ".spec.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[3, "spec-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[3, "spec-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[3, "spec-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[3, "spec-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[3, "spec-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[3, "spec-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[3, "spec-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.racks[].placement.podAffinity": [[3, "spec-racks-placement-podaffinity"]], ".spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.racks[].placement.podAntiAffinity": [[3, "spec-racks-placement-podantiaffinity"]], ".spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.racks[].placement.tolerations[]": [[3, "spec-racks-placement-tolerations"]], ".spec.racks[].scyllaDB": [[3, "spec-racks-scylladb"]], ".spec.racks[].scyllaDB.resources": [[3, "spec-racks-scylladb-resources"]], ".spec.racks[].scyllaDB.resources.claims[]": [[3, "spec-racks-scylladb-resources-claims"]], ".spec.racks[].scyllaDB.resources.limits": [[3, "spec-racks-scylladb-resources-limits"]], ".spec.racks[].scyllaDB.resources.requests": [[3, "spec-racks-scylladb-resources-requests"]], ".spec.racks[].scyllaDB.storage": [[3, "spec-racks-scylladb-storage"]], ".spec.racks[].scyllaDB.storage.metadata": [[3, "spec-racks-scylladb-storage-metadata"]], ".spec.racks[].scyllaDB.storage.metadata.annotations": [[3, "spec-racks-scylladb-storage-metadata-annotations"]], ".spec.racks[].scyllaDB.storage.metadata.labels": [[3, "spec-racks-scylladb-storage-metadata-labels"]], ".spec.racks[].scyllaDB.volumeMounts[]": [[3, "spec-racks-scylladb-volumemounts"]], ".spec.racks[].scyllaDB.volumes[]": [[3, "spec-racks-scylladb-volumes"]], ".spec.racks[].scyllaDB.volumes[].awsElasticBlockStore": [[3, "spec-racks-scylladb-volumes-awselasticblockstore"]], ".spec.racks[].scyllaDB.volumes[].azureDisk": [[3, "spec-racks-scylladb-volumes-azuredisk"]], ".spec.racks[].scyllaDB.volumes[].azureFile": [[3, "spec-racks-scylladb-volumes-azurefile"]], ".spec.racks[].scyllaDB.volumes[].cephfs": [[3, "spec-racks-scylladb-volumes-cephfs"]], ".spec.racks[].scyllaDB.volumes[].cephfs.secretRef": [[3, "spec-racks-scylladb-volumes-cephfs-secretref"]], ".spec.racks[].scyllaDB.volumes[].cinder": [[3, "spec-racks-scylladb-volumes-cinder"]], ".spec.racks[].scyllaDB.volumes[].cinder.secretRef": [[3, "spec-racks-scylladb-volumes-cinder-secretref"]], ".spec.racks[].scyllaDB.volumes[].configMap": [[3, "spec-racks-scylladb-volumes-configmap"]], ".spec.racks[].scyllaDB.volumes[].configMap.items[]": [[3, "spec-racks-scylladb-volumes-configmap-items"]], ".spec.racks[].scyllaDB.volumes[].csi": [[3, "spec-racks-scylladb-volumes-csi"]], ".spec.racks[].scyllaDB.volumes[].csi.nodePublishSecretRef": [[3, "spec-racks-scylladb-volumes-csi-nodepublishsecretref"]], ".spec.racks[].scyllaDB.volumes[].csi.volumeAttributes": [[3, "spec-racks-scylladb-volumes-csi-volumeattributes"]], ".spec.racks[].scyllaDB.volumes[].downwardAPI": [[3, "spec-racks-scylladb-volumes-downwardapi"]], ".spec.racks[].scyllaDB.volumes[].downwardAPI.items[]": [[3, "spec-racks-scylladb-volumes-downwardapi-items"]], ".spec.racks[].scyllaDB.volumes[].downwardAPI.items[].fieldRef": [[3, "spec-racks-scylladb-volumes-downwardapi-items-fieldref"]], ".spec.racks[].scyllaDB.volumes[].downwardAPI.items[].resourceFieldRef": [[3, "spec-racks-scylladb-volumes-downwardapi-items-resourcefieldref"]], ".spec.racks[].scyllaDB.volumes[].emptyDir": [[3, "spec-racks-scylladb-volumes-emptydir"]], ".spec.racks[].scyllaDB.volumes[].ephemeral": [[3, "spec-racks-scylladb-volumes-ephemeral"]], ".spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate": [[3, "spec-racks-scylladb-volumes-ephemeral-volumeclaimtemplate"]], ".spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.metadata": [[3, "spec-racks-scylladb-volumes-ephemeral-volumeclaimtemplate-metadata"]], ".spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec": [[3, "spec-racks-scylladb-volumes-ephemeral-volumeclaimtemplate-spec"]], ".spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource": [[3, "spec-racks-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-datasource"]], ".spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef": [[3, "spec-racks-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-datasourceref"]], ".spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources": [[3, "spec-racks-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-resources"]], ".spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits": [[3, "spec-racks-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-resources-limits"]], ".spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests": [[3, "spec-racks-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-resources-requests"]], ".spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector": [[3, "spec-racks-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-selector"]], ".spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]": [[3, "spec-racks-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.racks[].scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels": [[3, "spec-racks-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.racks[].scyllaDB.volumes[].fc": [[3, "spec-racks-scylladb-volumes-fc"]], ".spec.racks[].scyllaDB.volumes[].flexVolume": [[3, "spec-racks-scylladb-volumes-flexvolume"]], ".spec.racks[].scyllaDB.volumes[].flexVolume.options": [[3, "spec-racks-scylladb-volumes-flexvolume-options"]], ".spec.racks[].scyllaDB.volumes[].flexVolume.secretRef": [[3, "spec-racks-scylladb-volumes-flexvolume-secretref"]], ".spec.racks[].scyllaDB.volumes[].flocker": [[3, "spec-racks-scylladb-volumes-flocker"]], ".spec.racks[].scyllaDB.volumes[].gcePersistentDisk": [[3, "spec-racks-scylladb-volumes-gcepersistentdisk"]], ".spec.racks[].scyllaDB.volumes[].gitRepo": [[3, "spec-racks-scylladb-volumes-gitrepo"]], ".spec.racks[].scyllaDB.volumes[].glusterfs": [[3, "spec-racks-scylladb-volumes-glusterfs"]], ".spec.racks[].scyllaDB.volumes[].hostPath": [[3, "spec-racks-scylladb-volumes-hostpath"]], ".spec.racks[].scyllaDB.volumes[].iscsi": [[3, "spec-racks-scylladb-volumes-iscsi"]], ".spec.racks[].scyllaDB.volumes[].iscsi.secretRef": [[3, "spec-racks-scylladb-volumes-iscsi-secretref"]], ".spec.racks[].scyllaDB.volumes[].nfs": [[3, "spec-racks-scylladb-volumes-nfs"]], ".spec.racks[].scyllaDB.volumes[].persistentVolumeClaim": [[3, "spec-racks-scylladb-volumes-persistentvolumeclaim"]], ".spec.racks[].scyllaDB.volumes[].photonPersistentDisk": [[3, "spec-racks-scylladb-volumes-photonpersistentdisk"]], ".spec.racks[].scyllaDB.volumes[].portworxVolume": [[3, "spec-racks-scylladb-volumes-portworxvolume"]], ".spec.racks[].scyllaDB.volumes[].projected": [[3, "spec-racks-scylladb-volumes-projected"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[]": [[3, "spec-racks-scylladb-volumes-projected-sources"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].clusterTrustBundle": [[3, "spec-racks-scylladb-volumes-projected-sources-clustertrustbundle"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector": [[3, "spec-racks-scylladb-volumes-projected-sources-clustertrustbundle-labelselector"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]": [[3, "spec-racks-scylladb-volumes-projected-sources-clustertrustbundle-labelselector-matchexpressions"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels": [[3, "spec-racks-scylladb-volumes-projected-sources-clustertrustbundle-labelselector-matchlabels"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].configMap": [[3, "spec-racks-scylladb-volumes-projected-sources-configmap"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].configMap.items[]": [[3, "spec-racks-scylladb-volumes-projected-sources-configmap-items"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].downwardAPI": [[3, "spec-racks-scylladb-volumes-projected-sources-downwardapi"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].downwardAPI.items[]": [[3, "spec-racks-scylladb-volumes-projected-sources-downwardapi-items"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].downwardAPI.items[].fieldRef": [[3, "spec-racks-scylladb-volumes-projected-sources-downwardapi-items-fieldref"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef": [[3, "spec-racks-scylladb-volumes-projected-sources-downwardapi-items-resourcefieldref"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].secret": [[3, "spec-racks-scylladb-volumes-projected-sources-secret"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].secret.items[]": [[3, "spec-racks-scylladb-volumes-projected-sources-secret-items"]], ".spec.racks[].scyllaDB.volumes[].projected.sources[].serviceAccountToken": [[3, "spec-racks-scylladb-volumes-projected-sources-serviceaccounttoken"]], ".spec.racks[].scyllaDB.volumes[].quobyte": [[3, "spec-racks-scylladb-volumes-quobyte"]], ".spec.racks[].scyllaDB.volumes[].rbd": [[3, "spec-racks-scylladb-volumes-rbd"]], ".spec.racks[].scyllaDB.volumes[].rbd.secretRef": [[3, "spec-racks-scylladb-volumes-rbd-secretref"]], ".spec.racks[].scyllaDB.volumes[].scaleIO": [[3, "spec-racks-scylladb-volumes-scaleio"]], ".spec.racks[].scyllaDB.volumes[].scaleIO.secretRef": [[3, "spec-racks-scylladb-volumes-scaleio-secretref"]], ".spec.racks[].scyllaDB.volumes[].secret": [[3, "spec-racks-scylladb-volumes-secret"]], ".spec.racks[].scyllaDB.volumes[].secret.items[]": [[3, "spec-racks-scylladb-volumes-secret-items"]], ".spec.racks[].scyllaDB.volumes[].storageos": [[3, "spec-racks-scylladb-volumes-storageos"]], ".spec.racks[].scyllaDB.volumes[].storageos.secretRef": [[3, "spec-racks-scylladb-volumes-storageos-secretref"]], ".spec.racks[].scyllaDB.volumes[].vsphereVolume": [[3, "spec-racks-scylladb-volumes-vspherevolume"]], ".spec.racks[].scyllaDBManagerAgent": [[3, "spec-racks-scylladbmanageragent"]], ".spec.racks[].scyllaDBManagerAgent.resources": [[3, "spec-racks-scylladbmanageragent-resources"]], ".spec.racks[].scyllaDBManagerAgent.resources.claims[]": [[3, "spec-racks-scylladbmanageragent-resources-claims"]], ".spec.racks[].scyllaDBManagerAgent.resources.limits": [[3, "spec-racks-scylladbmanageragent-resources-limits"]], ".spec.racks[].scyllaDBManagerAgent.resources.requests": [[3, "spec-racks-scylladbmanageragent-resources-requests"]], ".spec.racks[].scyllaDBManagerAgent.volumeMounts[]": [[3, "spec-racks-scylladbmanageragent-volumemounts"]], ".spec.racks[].scyllaDBManagerAgent.volumes[]": [[3, "spec-racks-scylladbmanageragent-volumes"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].awsElasticBlockStore": [[3, "spec-racks-scylladbmanageragent-volumes-awselasticblockstore"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].azureDisk": [[3, "spec-racks-scylladbmanageragent-volumes-azuredisk"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].azureFile": [[3, "spec-racks-scylladbmanageragent-volumes-azurefile"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].cephfs": [[3, "spec-racks-scylladbmanageragent-volumes-cephfs"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].cephfs.secretRef": [[3, "spec-racks-scylladbmanageragent-volumes-cephfs-secretref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].cinder": [[3, "spec-racks-scylladbmanageragent-volumes-cinder"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].cinder.secretRef": [[3, "spec-racks-scylladbmanageragent-volumes-cinder-secretref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].configMap": [[3, "spec-racks-scylladbmanageragent-volumes-configmap"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].configMap.items[]": [[3, "spec-racks-scylladbmanageragent-volumes-configmap-items"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].csi": [[3, "spec-racks-scylladbmanageragent-volumes-csi"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].csi.nodePublishSecretRef": [[3, "spec-racks-scylladbmanageragent-volumes-csi-nodepublishsecretref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].csi.volumeAttributes": [[3, "spec-racks-scylladbmanageragent-volumes-csi-volumeattributes"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].downwardAPI": [[3, "spec-racks-scylladbmanageragent-volumes-downwardapi"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].downwardAPI.items[]": [[3, "spec-racks-scylladbmanageragent-volumes-downwardapi-items"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].downwardAPI.items[].fieldRef": [[3, "spec-racks-scylladbmanageragent-volumes-downwardapi-items-fieldref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].downwardAPI.items[].resourceFieldRef": [[3, "spec-racks-scylladbmanageragent-volumes-downwardapi-items-resourcefieldref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].emptyDir": [[3, "spec-racks-scylladbmanageragent-volumes-emptydir"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.metadata": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-metadata"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-datasource"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-datasourceref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-resources"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-resources-limits"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-resources-requests"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-selector"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels": [[3, "spec-racks-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].fc": [[3, "spec-racks-scylladbmanageragent-volumes-fc"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].flexVolume": [[3, "spec-racks-scylladbmanageragent-volumes-flexvolume"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].flexVolume.options": [[3, "spec-racks-scylladbmanageragent-volumes-flexvolume-options"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].flexVolume.secretRef": [[3, "spec-racks-scylladbmanageragent-volumes-flexvolume-secretref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].flocker": [[3, "spec-racks-scylladbmanageragent-volumes-flocker"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].gcePersistentDisk": [[3, "spec-racks-scylladbmanageragent-volumes-gcepersistentdisk"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].gitRepo": [[3, "spec-racks-scylladbmanageragent-volumes-gitrepo"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].glusterfs": [[3, "spec-racks-scylladbmanageragent-volumes-glusterfs"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].hostPath": [[3, "spec-racks-scylladbmanageragent-volumes-hostpath"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].iscsi": [[3, "spec-racks-scylladbmanageragent-volumes-iscsi"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].iscsi.secretRef": [[3, "spec-racks-scylladbmanageragent-volumes-iscsi-secretref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].nfs": [[3, "spec-racks-scylladbmanageragent-volumes-nfs"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].persistentVolumeClaim": [[3, "spec-racks-scylladbmanageragent-volumes-persistentvolumeclaim"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].photonPersistentDisk": [[3, "spec-racks-scylladbmanageragent-volumes-photonpersistentdisk"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].portworxVolume": [[3, "spec-racks-scylladbmanageragent-volumes-portworxvolume"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected": [[3, "spec-racks-scylladbmanageragent-volumes-projected"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[]": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-clustertrustbundle"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-clustertrustbundle-labelselector"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-clustertrustbundle-labelselector-matchexpressions"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-clustertrustbundle-labelselector-matchlabels"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].configMap": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-configmap"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].configMap.items[]": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-configmap-items"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-downwardapi"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[]": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-downwardapi-items"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].fieldRef": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-downwardapi-items-fieldref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-downwardapi-items-resourcefieldref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].secret": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-secret"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].secret.items[]": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-secret-items"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].projected.sources[].serviceAccountToken": [[3, "spec-racks-scylladbmanageragent-volumes-projected-sources-serviceaccounttoken"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].quobyte": [[3, "spec-racks-scylladbmanageragent-volumes-quobyte"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].rbd": [[3, "spec-racks-scylladbmanageragent-volumes-rbd"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].rbd.secretRef": [[3, "spec-racks-scylladbmanageragent-volumes-rbd-secretref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].scaleIO": [[3, "spec-racks-scylladbmanageragent-volumes-scaleio"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].scaleIO.secretRef": [[3, "spec-racks-scylladbmanageragent-volumes-scaleio-secretref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].secret": [[3, "spec-racks-scylladbmanageragent-volumes-secret"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].secret.items[]": [[3, "spec-racks-scylladbmanageragent-volumes-secret-items"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].storageos": [[3, "spec-racks-scylladbmanageragent-volumes-storageos"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].storageos.secretRef": [[3, "spec-racks-scylladbmanageragent-volumes-storageos-secretref"]], ".spec.racks[].scyllaDBManagerAgent.volumes[].vsphereVolume": [[3, "spec-racks-scylladbmanageragent-volumes-vspherevolume"]], ".spec.racks[].topologyLabelSelector": [[3, "spec-racks-topologylabelselector"]], ".spec.readinessGates[]": [[2, "spec-readinessgates"], [3, "spec-readinessgates"]], ".spec.repairs[]": [[2, "spec-repairs"]], ".spec.scyllaDB": [[3, "spec-scylladb"]], ".spec.scyllaDB.alternatorOptions": [[3, "spec-scylladb-alternatoroptions"]], ".spec.scyllaDB.alternatorOptions.servingCertificate": [[3, "spec-scylladb-alternatoroptions-servingcertificate"]], ".spec.scyllaDB.alternatorOptions.servingCertificate.operatorManagedOptions": [[3, "spec-scylladb-alternatoroptions-servingcertificate-operatormanagedoptions"]], ".spec.scyllaDB.alternatorOptions.servingCertificate.userManagedOptions": [[3, "spec-scylladb-alternatoroptions-servingcertificate-usermanagedoptions"]], ".spec.scyllaDB.resources": [[3, "spec-scylladb-resources"]], ".spec.scyllaDB.resources.claims[]": [[3, "spec-scylladb-resources-claims"]], ".spec.scyllaDB.resources.limits": [[3, "spec-scylladb-resources-limits"]], ".spec.scyllaDB.resources.requests": [[3, "spec-scylladb-resources-requests"]], ".spec.scyllaDB.storage": [[3, "spec-scylladb-storage"]], ".spec.scyllaDB.storage.metadata": [[3, "spec-scylladb-storage-metadata"]], ".spec.scyllaDB.storage.metadata.annotations": [[3, "spec-scylladb-storage-metadata-annotations"]], ".spec.scyllaDB.storage.metadata.labels": [[3, "spec-scylladb-storage-metadata-labels"]], ".spec.scyllaDB.volumeMounts[]": [[3, "spec-scylladb-volumemounts"]], ".spec.scyllaDB.volumes[]": [[3, "spec-scylladb-volumes"]], ".spec.scyllaDB.volumes[].awsElasticBlockStore": [[3, "spec-scylladb-volumes-awselasticblockstore"]], ".spec.scyllaDB.volumes[].azureDisk": [[3, "spec-scylladb-volumes-azuredisk"]], ".spec.scyllaDB.volumes[].azureFile": [[3, "spec-scylladb-volumes-azurefile"]], ".spec.scyllaDB.volumes[].cephfs": [[3, "spec-scylladb-volumes-cephfs"]], ".spec.scyllaDB.volumes[].cephfs.secretRef": [[3, "spec-scylladb-volumes-cephfs-secretref"]], ".spec.scyllaDB.volumes[].cinder": [[3, "spec-scylladb-volumes-cinder"]], ".spec.scyllaDB.volumes[].cinder.secretRef": [[3, "spec-scylladb-volumes-cinder-secretref"]], ".spec.scyllaDB.volumes[].configMap": [[3, "spec-scylladb-volumes-configmap"]], ".spec.scyllaDB.volumes[].configMap.items[]": [[3, "spec-scylladb-volumes-configmap-items"]], ".spec.scyllaDB.volumes[].csi": [[3, "spec-scylladb-volumes-csi"]], ".spec.scyllaDB.volumes[].csi.nodePublishSecretRef": [[3, "spec-scylladb-volumes-csi-nodepublishsecretref"]], ".spec.scyllaDB.volumes[].csi.volumeAttributes": [[3, "spec-scylladb-volumes-csi-volumeattributes"]], ".spec.scyllaDB.volumes[].downwardAPI": [[3, "spec-scylladb-volumes-downwardapi"]], ".spec.scyllaDB.volumes[].downwardAPI.items[]": [[3, "spec-scylladb-volumes-downwardapi-items"]], ".spec.scyllaDB.volumes[].downwardAPI.items[].fieldRef": [[3, "spec-scylladb-volumes-downwardapi-items-fieldref"]], ".spec.scyllaDB.volumes[].downwardAPI.items[].resourceFieldRef": [[3, "spec-scylladb-volumes-downwardapi-items-resourcefieldref"]], ".spec.scyllaDB.volumes[].emptyDir": [[3, "spec-scylladb-volumes-emptydir"]], ".spec.scyllaDB.volumes[].ephemeral": [[3, "spec-scylladb-volumes-ephemeral"]], ".spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate": [[3, "spec-scylladb-volumes-ephemeral-volumeclaimtemplate"]], ".spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.metadata": [[3, "spec-scylladb-volumes-ephemeral-volumeclaimtemplate-metadata"]], ".spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec": [[3, "spec-scylladb-volumes-ephemeral-volumeclaimtemplate-spec"]], ".spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource": [[3, "spec-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-datasource"]], ".spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef": [[3, "spec-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-datasourceref"]], ".spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources": [[3, "spec-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-resources"]], ".spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits": [[3, "spec-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-resources-limits"]], ".spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests": [[3, "spec-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-resources-requests"]], ".spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector": [[3, "spec-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-selector"]], ".spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]": [[3, "spec-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.scyllaDB.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels": [[3, "spec-scylladb-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.scyllaDB.volumes[].fc": [[3, "spec-scylladb-volumes-fc"]], ".spec.scyllaDB.volumes[].flexVolume": [[3, "spec-scylladb-volumes-flexvolume"]], ".spec.scyllaDB.volumes[].flexVolume.options": [[3, "spec-scylladb-volumes-flexvolume-options"]], ".spec.scyllaDB.volumes[].flexVolume.secretRef": [[3, "spec-scylladb-volumes-flexvolume-secretref"]], ".spec.scyllaDB.volumes[].flocker": [[3, "spec-scylladb-volumes-flocker"]], ".spec.scyllaDB.volumes[].gcePersistentDisk": [[3, "spec-scylladb-volumes-gcepersistentdisk"]], ".spec.scyllaDB.volumes[].gitRepo": [[3, "spec-scylladb-volumes-gitrepo"]], ".spec.scyllaDB.volumes[].glusterfs": [[3, "spec-scylladb-volumes-glusterfs"]], ".spec.scyllaDB.volumes[].hostPath": [[3, "spec-scylladb-volumes-hostpath"]], ".spec.scyllaDB.volumes[].iscsi": [[3, "spec-scylladb-volumes-iscsi"]], ".spec.scyllaDB.volumes[].iscsi.secretRef": [[3, "spec-scylladb-volumes-iscsi-secretref"]], ".spec.scyllaDB.volumes[].nfs": [[3, "spec-scylladb-volumes-nfs"]], ".spec.scyllaDB.volumes[].persistentVolumeClaim": [[3, "spec-scylladb-volumes-persistentvolumeclaim"]], ".spec.scyllaDB.volumes[].photonPersistentDisk": [[3, "spec-scylladb-volumes-photonpersistentdisk"]], ".spec.scyllaDB.volumes[].portworxVolume": [[3, "spec-scylladb-volumes-portworxvolume"]], ".spec.scyllaDB.volumes[].projected": [[3, "spec-scylladb-volumes-projected"]], ".spec.scyllaDB.volumes[].projected.sources[]": [[3, "spec-scylladb-volumes-projected-sources"]], ".spec.scyllaDB.volumes[].projected.sources[].clusterTrustBundle": [[3, "spec-scylladb-volumes-projected-sources-clustertrustbundle"]], ".spec.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector": [[3, "spec-scylladb-volumes-projected-sources-clustertrustbundle-labelselector"]], ".spec.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]": [[3, "spec-scylladb-volumes-projected-sources-clustertrustbundle-labelselector-matchexpressions"]], ".spec.scyllaDB.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels": [[3, "spec-scylladb-volumes-projected-sources-clustertrustbundle-labelselector-matchlabels"]], ".spec.scyllaDB.volumes[].projected.sources[].configMap": [[3, "spec-scylladb-volumes-projected-sources-configmap"]], ".spec.scyllaDB.volumes[].projected.sources[].configMap.items[]": [[3, "spec-scylladb-volumes-projected-sources-configmap-items"]], ".spec.scyllaDB.volumes[].projected.sources[].downwardAPI": [[3, "spec-scylladb-volumes-projected-sources-downwardapi"]], ".spec.scyllaDB.volumes[].projected.sources[].downwardAPI.items[]": [[3, "spec-scylladb-volumes-projected-sources-downwardapi-items"]], ".spec.scyllaDB.volumes[].projected.sources[].downwardAPI.items[].fieldRef": [[3, "spec-scylladb-volumes-projected-sources-downwardapi-items-fieldref"]], ".spec.scyllaDB.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef": [[3, "spec-scylladb-volumes-projected-sources-downwardapi-items-resourcefieldref"]], ".spec.scyllaDB.volumes[].projected.sources[].secret": [[3, "spec-scylladb-volumes-projected-sources-secret"]], ".spec.scyllaDB.volumes[].projected.sources[].secret.items[]": [[3, "spec-scylladb-volumes-projected-sources-secret-items"]], ".spec.scyllaDB.volumes[].projected.sources[].serviceAccountToken": [[3, "spec-scylladb-volumes-projected-sources-serviceaccounttoken"]], ".spec.scyllaDB.volumes[].quobyte": [[3, "spec-scylladb-volumes-quobyte"]], ".spec.scyllaDB.volumes[].rbd": [[3, "spec-scylladb-volumes-rbd"]], ".spec.scyllaDB.volumes[].rbd.secretRef": [[3, "spec-scylladb-volumes-rbd-secretref"]], ".spec.scyllaDB.volumes[].scaleIO": [[3, "spec-scylladb-volumes-scaleio"]], ".spec.scyllaDB.volumes[].scaleIO.secretRef": [[3, "spec-scylladb-volumes-scaleio-secretref"]], ".spec.scyllaDB.volumes[].secret": [[3, "spec-scylladb-volumes-secret"]], ".spec.scyllaDB.volumes[].secret.items[]": [[3, "spec-scylladb-volumes-secret-items"]], ".spec.scyllaDB.volumes[].storageos": [[3, "spec-scylladb-volumes-storageos"]], ".spec.scyllaDB.volumes[].storageos.secretRef": [[3, "spec-scylladb-volumes-storageos-secretref"]], ".spec.scyllaDB.volumes[].vsphereVolume": [[3, "spec-scylladb-volumes-vspherevolume"]], ".spec.scyllaDBManagerAgent": [[3, "spec-scylladbmanageragent"]], ".spec.scyllaDBManagerAgent.resources": [[3, "spec-scylladbmanageragent-resources"]], ".spec.scyllaDBManagerAgent.resources.claims[]": [[3, "spec-scylladbmanageragent-resources-claims"]], ".spec.scyllaDBManagerAgent.resources.limits": [[3, "spec-scylladbmanageragent-resources-limits"]], ".spec.scyllaDBManagerAgent.resources.requests": [[3, "spec-scylladbmanageragent-resources-requests"]], ".spec.scyllaDBManagerAgent.volumeMounts[]": [[3, "spec-scylladbmanageragent-volumemounts"]], ".spec.scyllaDBManagerAgent.volumes[]": [[3, "spec-scylladbmanageragent-volumes"]], ".spec.scyllaDBManagerAgent.volumes[].awsElasticBlockStore": [[3, "spec-scylladbmanageragent-volumes-awselasticblockstore"]], ".spec.scyllaDBManagerAgent.volumes[].azureDisk": [[3, "spec-scylladbmanageragent-volumes-azuredisk"]], ".spec.scyllaDBManagerAgent.volumes[].azureFile": [[3, "spec-scylladbmanageragent-volumes-azurefile"]], ".spec.scyllaDBManagerAgent.volumes[].cephfs": [[3, "spec-scylladbmanageragent-volumes-cephfs"]], ".spec.scyllaDBManagerAgent.volumes[].cephfs.secretRef": [[3, "spec-scylladbmanageragent-volumes-cephfs-secretref"]], ".spec.scyllaDBManagerAgent.volumes[].cinder": [[3, "spec-scylladbmanageragent-volumes-cinder"]], ".spec.scyllaDBManagerAgent.volumes[].cinder.secretRef": [[3, "spec-scylladbmanageragent-volumes-cinder-secretref"]], ".spec.scyllaDBManagerAgent.volumes[].configMap": [[3, "spec-scylladbmanageragent-volumes-configmap"]], ".spec.scyllaDBManagerAgent.volumes[].configMap.items[]": [[3, "spec-scylladbmanageragent-volumes-configmap-items"]], ".spec.scyllaDBManagerAgent.volumes[].csi": [[3, "spec-scylladbmanageragent-volumes-csi"]], ".spec.scyllaDBManagerAgent.volumes[].csi.nodePublishSecretRef": [[3, "spec-scylladbmanageragent-volumes-csi-nodepublishsecretref"]], ".spec.scyllaDBManagerAgent.volumes[].csi.volumeAttributes": [[3, "spec-scylladbmanageragent-volumes-csi-volumeattributes"]], ".spec.scyllaDBManagerAgent.volumes[].downwardAPI": [[3, "spec-scylladbmanageragent-volumes-downwardapi"]], ".spec.scyllaDBManagerAgent.volumes[].downwardAPI.items[]": [[3, "spec-scylladbmanageragent-volumes-downwardapi-items"]], ".spec.scyllaDBManagerAgent.volumes[].downwardAPI.items[].fieldRef": [[3, "spec-scylladbmanageragent-volumes-downwardapi-items-fieldref"]], ".spec.scyllaDBManagerAgent.volumes[].downwardAPI.items[].resourceFieldRef": [[3, "spec-scylladbmanageragent-volumes-downwardapi-items-resourcefieldref"]], ".spec.scyllaDBManagerAgent.volumes[].emptyDir": [[3, "spec-scylladbmanageragent-volumes-emptydir"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral": [[3, "spec-scylladbmanageragent-volumes-ephemeral"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate": [[3, "spec-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.metadata": [[3, "spec-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-metadata"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec": [[3, "spec-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSource": [[3, "spec-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-datasource"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef": [[3, "spec-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-datasourceref"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources": [[3, "spec-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-resources"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits": [[3, "spec-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-resources-limits"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests": [[3, "spec-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-resources-requests"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector": [[3, "spec-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-selector"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]": [[3, "spec-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.scyllaDBManagerAgent.volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels": [[3, "spec-scylladbmanageragent-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.scyllaDBManagerAgent.volumes[].fc": [[3, "spec-scylladbmanageragent-volumes-fc"]], ".spec.scyllaDBManagerAgent.volumes[].flexVolume": [[3, "spec-scylladbmanageragent-volumes-flexvolume"]], ".spec.scyllaDBManagerAgent.volumes[].flexVolume.options": [[3, "spec-scylladbmanageragent-volumes-flexvolume-options"]], ".spec.scyllaDBManagerAgent.volumes[].flexVolume.secretRef": [[3, "spec-scylladbmanageragent-volumes-flexvolume-secretref"]], ".spec.scyllaDBManagerAgent.volumes[].flocker": [[3, "spec-scylladbmanageragent-volumes-flocker"]], ".spec.scyllaDBManagerAgent.volumes[].gcePersistentDisk": [[3, "spec-scylladbmanageragent-volumes-gcepersistentdisk"]], ".spec.scyllaDBManagerAgent.volumes[].gitRepo": [[3, "spec-scylladbmanageragent-volumes-gitrepo"]], ".spec.scyllaDBManagerAgent.volumes[].glusterfs": [[3, "spec-scylladbmanageragent-volumes-glusterfs"]], ".spec.scyllaDBManagerAgent.volumes[].hostPath": [[3, "spec-scylladbmanageragent-volumes-hostpath"]], ".spec.scyllaDBManagerAgent.volumes[].iscsi": [[3, "spec-scylladbmanageragent-volumes-iscsi"]], ".spec.scyllaDBManagerAgent.volumes[].iscsi.secretRef": [[3, "spec-scylladbmanageragent-volumes-iscsi-secretref"]], ".spec.scyllaDBManagerAgent.volumes[].nfs": [[3, "spec-scylladbmanageragent-volumes-nfs"]], ".spec.scyllaDBManagerAgent.volumes[].persistentVolumeClaim": [[3, "spec-scylladbmanageragent-volumes-persistentvolumeclaim"]], ".spec.scyllaDBManagerAgent.volumes[].photonPersistentDisk": [[3, "spec-scylladbmanageragent-volumes-photonpersistentdisk"]], ".spec.scyllaDBManagerAgent.volumes[].portworxVolume": [[3, "spec-scylladbmanageragent-volumes-portworxvolume"]], ".spec.scyllaDBManagerAgent.volumes[].projected": [[3, "spec-scylladbmanageragent-volumes-projected"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[]": [[3, "spec-scylladbmanageragent-volumes-projected-sources"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle": [[3, "spec-scylladbmanageragent-volumes-projected-sources-clustertrustbundle"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector": [[3, "spec-scylladbmanageragent-volumes-projected-sources-clustertrustbundle-labelselector"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]": [[3, "spec-scylladbmanageragent-volumes-projected-sources-clustertrustbundle-labelselector-matchexpressions"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels": [[3, "spec-scylladbmanageragent-volumes-projected-sources-clustertrustbundle-labelselector-matchlabels"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].configMap": [[3, "spec-scylladbmanageragent-volumes-projected-sources-configmap"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].configMap.items[]": [[3, "spec-scylladbmanageragent-volumes-projected-sources-configmap-items"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI": [[3, "spec-scylladbmanageragent-volumes-projected-sources-downwardapi"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[]": [[3, "spec-scylladbmanageragent-volumes-projected-sources-downwardapi-items"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].fieldRef": [[3, "spec-scylladbmanageragent-volumes-projected-sources-downwardapi-items-fieldref"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef": [[3, "spec-scylladbmanageragent-volumes-projected-sources-downwardapi-items-resourcefieldref"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].secret": [[3, "spec-scylladbmanageragent-volumes-projected-sources-secret"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].secret.items[]": [[3, "spec-scylladbmanageragent-volumes-projected-sources-secret-items"]], ".spec.scyllaDBManagerAgent.volumes[].projected.sources[].serviceAccountToken": [[3, "spec-scylladbmanageragent-volumes-projected-sources-serviceaccounttoken"]], ".spec.scyllaDBManagerAgent.volumes[].quobyte": [[3, "spec-scylladbmanageragent-volumes-quobyte"]], ".spec.scyllaDBManagerAgent.volumes[].rbd": [[3, "spec-scylladbmanageragent-volumes-rbd"]], ".spec.scyllaDBManagerAgent.volumes[].rbd.secretRef": [[3, "spec-scylladbmanageragent-volumes-rbd-secretref"]], ".spec.scyllaDBManagerAgent.volumes[].scaleIO": [[3, "spec-scylladbmanageragent-volumes-scaleio"]], ".spec.scyllaDBManagerAgent.volumes[].scaleIO.secretRef": [[3, "spec-scylladbmanageragent-volumes-scaleio-secretref"]], ".spec.scyllaDBManagerAgent.volumes[].secret": [[3, "spec-scylladbmanageragent-volumes-secret"]], ".spec.scyllaDBManagerAgent.volumes[].secret.items[]": [[3, "spec-scylladbmanageragent-volumes-secret-items"]], ".spec.scyllaDBManagerAgent.volumes[].storageos": [[3, "spec-scylladbmanageragent-volumes-storageos"]], ".spec.scyllaDBManagerAgent.volumes[].storageos.secretRef": [[3, "spec-scylladbmanageragent-volumes-storageos-secretref"]], ".spec.scyllaDBManagerAgent.volumes[].vsphereVolume": [[3, "spec-scylladbmanageragent-volumes-vspherevolume"]], ".status": [[1, "status"], [2, "status"], [3, "status"], [4, "status"], [5, "status"]], ".status.backups[]": [[2, "status-backups"]], ".status.conditions[]": [[1, "status-conditions"], [2, "status-conditions"], [3, "status-conditions"], [4, "status-conditions"]], ".status.nodeStatuses[]": [[1, "status-nodestatuses"]], ".status.racks": [[2, "status-racks"]], ".status.racks[]": [[3, "status-racks"]], ".status.repairs[]": [[2, "status-repairs"]], ".status.upgrade": [[2, "status-upgrade"]], "API Groups and Kinds": [[6, "api-groups-and-kinds"]], "API Reference": [[6, null]], "AWS CLI": [[7, "aws-cli"]], "Accessing Grafana": [[20, "accessing-grafana"]], "Accessing the Database": [[14, "accessing-the-database"]], "Accessing the database": [[12, "accessing-the-database"], [15, "accessing-the-database"]], "Add Upstream Remote": [[11, "add-upstream-remote"]], "Architecture": [[18, "architecture"]], "Authentication and Authorization": [[8, "authentication-and-authorization"]], "Automated promotions": [[32, "automated-promotions"]], "Automatic cleanup and replacement in case when k8s node is lost": [[25, null]], "Backport policy": [[32, "backport-policy"]], "Benchmark with cassandra-stress": [[14, "benchmark-with-cassandra-stress"]], "Broadcast Options": [[13, "broadcast-options"]], "Build multiple Amazon EKS clusters with inter-Kubernetes networking": [[21, null]], "Build multiple GKE clusters with inter-Kubernetes networking": [[22, null]], "Building the project": [[11, "building-the-project"]], "CI/CD": [[32, "ci-cd"]], "Clean Up": [[14, "clean-up"], [18, "clean-up"]], "Cleanup": [[16, "cleanup"]], "Clone Your Fork": [[11, "clone-your-fork"]], "Cluster registration": [[18, "cluster-registration"]], "ClusterIP Type": [[13, "clusterip-type"]], "Collecting every resource in the cluster": [[35, "collecting-every-resource-in-the-cluster"]], "Commit History": [[11, "commit-history"]], "Commit messages": [[11, "commit-messages"]], "Configure Scylla": [[14, "configure-scylla"]], "Configure Scylla Manager Agent": [[14, "configure-scylla-manager-agent"]], "Configure container kernel parameters": [[14, "configure-container-kernel-parameters"]], "Configure environment variables": [[12, "configure-environment-variables"], [15, "configure-environment-variables"]], "Configure the firewall rules": [[22, "configure-the-firewall-rules"]], "Configure the network": [[21, "configure-the-network"]], "Connecting through Ingress using a resolvable domain": [[20, "connecting-through-ingress-using-a-resolvable-domain"]], "Connecting through Ingress using an unresolvable domain": [[20, "connecting-through-ingress-using-an-unresolvable-domain"]], "Connection": [[20, "connection"]], "Contributing to Scylla Operator": [[11, null]], "Create EKS clusters": [[21, "create-eks-clusters"]], "Create GKE clusters": [[22, "create-gke-clusters"]], "Create VPC network subnets": [[22, "create-vpc-network-subnets"]], "Create VPC peering": [[21, "create-vpc-peering"]], "Create a Branch": [[11, "create-a-branch"]], "Create a Fork": [[11, "create-a-fork"]], "Create and Initialize a Scylla Cluster": [[14, "create-and-initialize-a-scylla-cluster"]], "Create and configure a VPC network": [[22, "create-and-configure-a-vpc-network"]], "Create the VPC network": [[22, "create-the-vpc-network"]], "Create the first EKS cluster": [[21, "create-the-first-eks-cluster"]], "Create the first GKE cluster": [[22, "create-the-first-gke-cluster"]], "Create the second EKS cluster": [[21, "create-the-second-eks-cluster"]], "Create the second GKE cluster": [[22, "create-the-second-gke-cluster"]], "Creating a GKE cluster": [[15, "creating-a-gke-cluster"]], "Creating an EKS cluster": [[12, "creating-an-eks-cluster"]], "Credentials": [[7, "credentials"]], "Custom CNI": [[38, "custom-cni"]], "Customization": [[16, "customization"], [16, "id1"], [16, "id3"]], "Deleting a GKE cluster": [[15, "deleting-a-gke-cluster"]], "Deleting an EKS cluster": [[12, "deleting-an-eks-cluster"]], "Deploy Cert Manager": [[14, "deploy-cert-manager"], [16, "deploy-cert-manager"]], "Deploy HAProxy Ingress": [[20, "deploy-haproxy-ingress"]], "Deploy Prometheus Operator": [[20, "deploy-prometheus-operator"]], "Deploy Scylla Manager": [[18, "deploy-scylla-manager"]], "Deploy Scylla Operator": [[14, "deploy-scylla-operator"]], "Deploy Scylla cluster": [[15, "deploy-scylla-cluster"]], "Deploy ScyllaDB Operator": [[21, "deploy-scylladb-operator"], [22, "deploy-scylladb-operator"]], "Deploy ScyllaDBMonitoring": [[20, "deploy-scylladbmonitoring"]], "Deploy a multi-datacenter ScyllaDB Cluster": [[24, "deploy-a-multi-datacenter-scylladb-cluster"]], "Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters": [[24, null]], "Deploy managed monitoring": [[20, "deploy-managed-monitoring"]], "Deploy the first datacenter": [[24, "deploy-the-first-datacenter"]], "Deploy the second datacenter": [[24, "deploy-the-second-datacenter"]], "Deploying Alternator": [[14, "deploying-alternator"]], "Deploying Local Volume Provisioner": [[12, "deploying-local-volume-provisioner"], [15, "deploying-local-volume-provisioner"]], "Deploying Scylla Manager on a Kubernetes Cluster": [[18, null]], "Deploying Scylla on EKS": [[12, null]], "Deploying Scylla on GKE": [[15, null]], "Deploying Scylla on a Kubernetes Cluster": [[14, null]], "Deploying Scylla stack using Helm Charts": [[16, null]], "Deploying ScyllaDB": [[12, "deploying-scylladb"], [15, "deploying-scylladb"]], "Deploying ScyllaDB Operator": [[12, "deploying-scylladb-operator"], [15, "deploying-scylladb-operator"]], "Deploying multi-datacenter ScyllaDB clusters in Kubernetes": [[23, null]], "Deployment Examples": [[13, "deployment-examples"]], "Description": [[1, "description"], [1, "id1"], [1, "id2"], [1, "id4"], [1, "id6"], [1, "id8"], [1, "id10"], [1, "id12"], [1, "id14"], [1, "id16"], [1, "id18"], [1, "id20"], [1, "id22"], [1, "id24"], [1, "id26"], [1, "id28"], [1, "id30"], [1, "id32"], [1, "id34"], [1, "id36"], [1, "id38"], [1, "id40"], [1, "id42"], [1, "id44"], [1, "id46"], [1, "id48"], [1, "id50"], [1, "id52"], [1, "id54"], [1, "id56"], [1, "id58"], [1, "id60"], [1, "id62"], [1, "id64"], [1, "id66"], [1, "id68"], [1, "id70"], [1, "id72"], [1, "id74"], [1, "id76"], [1, "id78"], [1, "id80"], [1, "id82"], [1, "id84"], [1, "id86"], [1, "id88"], [1, "id90"], [1, "id92"], [1, "id94"], [1, "id96"], [1, "id98"], [1, "id100"], [1, "id102"], [1, "id104"], [1, "id106"], [1, "id108"], [1, "id110"], [1, "id112"], [2, "description"], [2, "id1"], [2, "id2"], [2, "id4"], [2, "id6"], [2, "id8"], [2, "id10"], [2, "id12"], [2, "id14"], [2, "id16"], [2, "id18"], [2, "id20"], [2, "id22"], [2, "id24"], [2, "id26"], [2, "id28"], [2, "id30"], [2, "id32"], [2, "id34"], [2, "id36"], [2, "id38"], [2, "id40"], [2, "id42"], [2, "id44"], [2, "id46"], [2, "id48"], [2, "id50"], [2, "id52"], [2, "id54"], [2, "id56"], [2, "id58"], [2, "id60"], [2, "id62"], [2, "id64"], [2, "id66"], [2, "id68"], [2, "id70"], [2, "id72"], [2, "id74"], [2, "id76"], [2, "id78"], [2, "id80"], [2, "id82"], [2, "id84"], [2, "id86"], [2, "id88"], [2, "id90"], [2, "id92"], [2, "id94"], [2, "id96"], [2, "id98"], [2, "id100"], [2, "id102"], [2, "id104"], [2, "id106"], [2, "id108"], [2, "id110"], [2, "id112"], [2, "id114"], [2, "id116"], [2, "id118"], [2, "id120"], [2, "id122"], [2, "id124"], [2, "id126"], [2, "id128"], [2, "id130"], [2, "id132"], [2, "id134"], [2, "id136"], [2, "id138"], [2, "id140"], [2, "id142"], [2, "id144"], [2, "id146"], [2, "id148"], [2, "id150"], [2, "id152"], [2, "id154"], [2, "id156"], [2, "id158"], [2, "id160"], [2, "id162"], [2, "id164"], [2, "id166"], [2, "id168"], [2, "id170"], [2, "id172"], [2, "id174"], [2, "id176"], [2, "id178"], [2, "id180"], [2, "id182"], [2, "id184"], [2, "id186"], [2, "id188"], [2, "id190"], [2, "id192"], [2, "id194"], [2, "id196"], [2, "id198"], [2, "id200"], [2, "id202"], [2, "id204"], [2, "id206"], [2, "id208"], [2, "id210"], [2, "id212"], [2, "id214"], [2, "id216"], [2, "id218"], [2, "id220"], [2, "id222"], [2, "id224"], [2, "id226"], [2, "id228"], [2, "id230"], [2, "id232"], [2, "id234"], [2, "id236"], [2, "id238"], [2, "id240"], [2, "id242"], [2, "id244"], [2, "id246"], [2, "id248"], [2, "id250"], [2, "id252"], [2, "id254"], [2, "id256"], [2, "id258"], [2, "id260"], [2, "id262"], [2, "id264"], [2, "id266"], [2, "id268"], [2, "id270"], [2, "id272"], [2, "id274"], [2, "id276"], [2, "id278"], [2, "id280"], [2, "id282"], [2, "id284"], [2, "id286"], [2, "id288"], [2, "id290"], [2, "id292"], [2, "id294"], [2, "id296"], [2, "id298"], [2, "id300"], [2, "id302"], [2, "id304"], [2, "id306"], [2, "id308"], [2, "id310"], [2, "id312"], [2, "id314"], [2, "id316"], [2, "id318"], [2, "id320"], [2, "id322"], [2, "id324"], [3, "description"], [3, "id1"], [3, "id2"], [3, "id4"], [3, "id6"], [3, "id8"], [3, "id10"], [3, "id12"], [3, "id14"], [3, "id16"], [3, "id18"], [3, "id20"], [3, "id22"], [3, "id24"], [3, "id26"], [3, "id28"], [3, "id30"], [3, "id32"], [3, "id34"], [3, "id36"], [3, "id38"], [3, "id40"], [3, "id42"], [3, "id44"], [3, "id46"], [3, "id48"], [3, "id50"], [3, "id52"], [3, "id54"], [3, "id56"], [3, "id58"], [3, "id60"], [3, "id62"], [3, "id64"], [3, "id66"], [3, "id68"], [3, "id70"], [3, "id72"], [3, "id74"], [3, "id76"], [3, "id78"], [3, "id80"], [3, "id82"], [3, "id84"], [3, "id86"], [3, "id88"], [3, "id90"], [3, "id92"], [3, "id94"], [3, "id96"], [3, "id98"], [3, "id100"], [3, "id102"], [3, "id104"], [3, "id106"], [3, "id108"], [3, "id110"], [3, "id112"], [3, "id114"], [3, "id116"], [3, "id118"], [3, "id120"], [3, "id122"], [3, "id124"], [3, "id126"], [3, "id128"], [3, "id130"], [3, "id132"], [3, "id134"], [3, "id136"], [3, "id138"], [3, "id140"], [3, "id142"], [3, "id144"], [3, "id146"], [3, "id148"], [3, "id150"], [3, "id152"], [3, "id154"], [3, "id156"], [3, "id158"], [3, "id160"], [3, "id162"], [3, "id164"], [3, "id166"], [3, "id168"], [3, "id170"], [3, "id172"], [3, "id174"], [3, "id176"], [3, "id178"], [3, "id180"], [3, "id182"], [3, "id184"], [3, "id186"], [3, "id188"], [3, "id190"], [3, "id192"], [3, "id194"], [3, "id196"], [3, "id198"], [3, "id200"], [3, "id202"], [3, "id204"], [3, "id206"], [3, "id208"], [3, "id210"], [3, "id212"], [3, "id214"], [3, "id216"], [3, "id218"], [3, "id220"], [3, "id222"], [3, "id224"], [3, "id226"], [3, "id228"], [3, "id230"], [3, "id232"], [3, "id234"], [3, "id236"], [3, "id238"], [3, "id240"], [3, "id242"], [3, "id244"], [3, "id246"], [3, "id248"], [3, "id250"], [3, "id252"], [3, "id254"], [3, "id256"], [3, "id258"], [3, "id260"], [3, "id262"], [3, "id264"], [3, "id266"], [3, "id268"], [3, "id270"], [3, "id272"], [3, "id274"], [3, "id276"], [3, "id278"], [3, "id280"], [3, "id282"], [3, "id284"], [3, "id286"], [3, "id288"], [3, "id290"], [3, "id292"], [3, "id294"], [3, "id296"], [3, "id298"], [3, "id300"], [3, "id302"], [3, "id304"], [3, "id306"], [3, "id308"], [3, "id310"], [3, "id312"], [3, "id314"], [3, "id316"], [3, "id318"], [3, "id320"], [3, "id322"], [3, "id324"], [3, "id326"], [3, "id328"], [3, "id330"], [3, "id332"], [3, "id334"], [3, "id336"], [3, "id338"], [3, "id340"], [3, "id342"], [3, "id344"], [3, "id346"], [3, "id348"], [3, "id350"], [3, "id352"], [3, "id354"], [3, "id356"], [3, "id358"], [3, "id360"], [3, "id362"], [3, "id364"], [3, "id366"], [3, "id368"], [3, "id370"], [3, "id372"], [3, "id374"], [3, "id376"], [3, "id378"], [3, "id380"], [3, "id382"], [3, "id384"], [3, "id386"], [3, "id388"], [3, "id390"], [3, "id392"], [3, "id394"], [3, "id396"], [3, "id398"], [3, "id400"], [3, "id402"], [3, "id404"], [3, "id406"], [3, "id408"], [3, "id410"], [3, "id412"], [3, "id414"], [3, "id416"], [3, "id418"], [3, "id420"], [3, "id422"], [3, "id424"], [3, "id426"], [3, "id428"], [3, "id430"], [3, "id432"], [3, "id434"], [3, "id436"], [3, "id438"], [3, "id440"], [3, "id442"], [3, "id444"], [3, "id446"], [3, "id448"], [3, "id450"], [3, "id452"], [3, "id454"], [3, "id456"], [3, "id458"], [3, "id460"], [3, "id462"], [3, "id464"], [3, "id466"], [3, "id468"], [3, "id470"], [3, "id472"], [3, "id474"], [3, "id476"], [3, "id478"], [3, "id480"], [3, "id482"], [3, "id484"], [3, "id486"], [3, "id488"], [3, "id490"], [3, "id492"], [3, "id494"], [3, "id496"], [3, "id498"], [3, "id500"], [3, "id502"], [3, "id504"], [3, "id506"], [3, "id508"], [3, "id510"], [3, "id512"], [3, "id514"], [3, "id516"], [3, "id518"], [3, "id520"], [3, "id522"], [3, "id524"], [3, "id526"], [3, "id528"], [3, "id530"], [3, "id532"], [3, "id534"], [3, "id536"], [3, "id538"], [3, "id540"], [3, "id542"], [3, "id544"], [3, "id546"], [3, "id548"], [3, "id550"], [3, "id552"], [3, "id554"], [3, "id556"], [3, "id558"], [3, "id560"], [3, "id562"], [3, "id564"], [3, "id566"], [3, "id568"], [3, "id570"], [3, "id572"], [3, "id574"], [3, "id576"], [3, "id578"], [3, "id580"], [3, "id582"], [3, "id584"], [3, "id586"], [3, "id588"], [3, "id590"], [3, "id592"], [3, "id594"], [3, "id596"], [3, "id598"], [3, "id600"], [3, "id602"], [3, "id604"], [3, "id606"], [3, "id608"], [3, "id610"], [3, "id612"], [3, "id614"], [3, "id616"], [3, "id618"], [3, "id620"], [3, "id622"], [3, "id624"], [3, "id626"], [3, "id628"], [3, "id630"], [3, "id632"], [3, "id634"], [3, "id636"], [3, "id638"], [3, "id640"], [3, "id642"], [3, "id644"], [3, "id646"], [3, "id648"], [3, "id650"], [3, "id652"], [3, "id654"], [3, "id656"], [3, "id658"], [3, "id660"], [3, "id662"], [3, "id664"], [3, "id666"], [3, "id668"], [3, "id670"], [3, "id672"], [3, "id674"], [3, "id676"], [3, "id678"], [3, "id680"], [3, "id682"], [3, "id684"], [3, "id686"], [3, "id688"], [3, "id690"], [3, "id692"], [3, "id694"], [3, "id696"], [3, "id698"], [3, "id700"], [3, "id702"], [3, "id704"], [3, "id706"], [3, "id708"], [3, "id710"], [3, "id712"], [3, "id714"], [3, "id716"], [3, "id718"], [3, "id720"], [3, "id722"], [3, "id724"], [3, "id726"], [3, "id728"], [3, "id730"], [3, "id732"], [3, "id734"], [3, "id736"], [3, "id738"], [3, "id740"], [3, "id742"], [3, "id744"], [3, "id746"], [3, "id748"], [3, "id750"], [3, "id752"], [3, "id754"], [3, "id756"], [3, "id758"], [3, "id760"], [3, "id762"], [3, "id764"], [3, "id766"], [3, "id768"], [3, "id770"], [3, "id772"], [3, "id774"], [3, "id776"], [3, "id778"], [3, "id780"], [3, "id782"], [3, "id784"], [3, "id786"], [3, "id788"], [3, "id790"], [3, "id792"], [3, "id794"], [3, "id796"], [3, "id798"], [3, "id800"], [3, "id802"], [3, "id804"], [3, "id806"], [3, "id808"], [3, "id810"], [3, "id812"], [3, "id814"], [3, "id816"], [3, "id818"], [3, "id820"], [3, "id822"], [3, "id824"], [3, "id826"], [3, "id828"], [3, "id830"], [3, "id832"], [3, "id834"], [3, "id836"], [3, "id838"], [3, "id840"], [3, "id842"], [3, "id844"], [3, "id846"], [3, "id848"], [3, "id850"], [3, "id852"], [3, "id854"], [3, "id856"], [3, "id858"], [3, "id860"], [3, "id862"], [3, "id864"], [3, "id866"], [3, "id868"], [3, "id870"], [3, "id872"], [3, "id874"], [3, "id876"], [3, "id878"], [3, "id880"], [3, "id882"], [3, "id884"], [3, "id886"], [3, "id888"], [3, "id890"], [3, "id892"], [3, "id894"], [3, "id896"], [3, "id898"], [3, "id900"], [3, "id902"], [3, "id904"], [3, "id906"], [3, "id908"], [3, "id910"], [3, "id912"], [3, "id914"], [3, "id916"], [3, "id918"], [3, "id920"], [3, "id922"], [3, "id924"], [3, "id926"], [3, "id928"], [3, "id930"], [3, "id932"], [3, "id934"], [3, "id936"], [3, "id938"], [3, "id940"], [3, "id942"], [3, "id944"], [3, "id946"], [3, "id948"], [3, "id950"], [3, "id952"], [3, "id954"], [3, "id956"], [3, "id958"], [3, "id960"], [3, "id962"], [3, "id964"], [3, "id966"], [3, "id968"], [3, "id970"], [3, "id972"], [3, "id974"], [3, "id976"], [3, "id978"], [3, "id980"], [3, "id982"], [3, "id984"], [3, "id986"], [3, "id988"], [3, "id990"], [3, "id992"], [3, "id994"], [3, "id996"], [3, "id998"], [3, "id1000"], [3, "id1002"], [3, "id1004"], [3, "id1006"], [3, "id1008"], [3, "id1010"], [3, "id1012"], [3, "id1014"], [3, "id1016"], [3, "id1018"], [3, "id1020"], [3, "id1022"], [3, "id1024"], [3, "id1026"], [3, "id1028"], [3, "id1030"], [3, "id1032"], [3, "id1034"], [3, "id1036"], [3, "id1038"], [3, "id1040"], [3, "id1042"], [3, "id1044"], [3, "id1046"], [3, "id1048"], [3, "id1050"], [3, "id1052"], [3, "id1054"], [3, "id1056"], [3, "id1058"], [3, "id1060"], [3, "id1062"], [3, "id1064"], [3, "id1066"], [3, "id1068"], [3, "id1070"], [3, "id1072"], [3, "id1074"], [3, "id1076"], [3, "id1078"], [3, "id1080"], [3, "id1082"], [3, "id1084"], [3, "id1086"], [3, "id1088"], [3, "id1090"], [3, "id1092"], [3, "id1094"], [3, "id1096"], [3, "id1098"], [3, "id1100"], [3, "id1102"], [3, "id1104"], [3, "id1106"], [3, "id1108"], [3, "id1110"], [3, "id1112"], [3, "id1114"], [3, "id1116"], [3, "id1118"], [3, "id1120"], [3, "id1122"], [3, "id1124"], [3, "id1126"], [3, "id1128"], [3, "id1130"], [3, "id1132"], [3, "id1134"], [3, "id1136"], [3, "id1138"], [3, "id1140"], [3, "id1142"], [3, "id1144"], [3, "id1146"], [3, "id1148"], [3, "id1150"], [3, "id1152"], [3, "id1154"], [3, "id1156"], [3, "id1158"], [3, "id1160"], [3, "id1162"], [3, "id1164"], [3, "id1166"], [3, "id1168"], [4, "description"], [4, "id1"], [4, "id2"], [4, "id4"], [4, "id6"], [4, "id8"], [4, "id10"], [4, "id12"], [4, "id14"], [4, "id16"], [4, "id18"], [4, "id20"], [4, "id22"], [4, "id24"], [4, "id26"], [4, "id28"], [4, "id30"], [4, "id32"], [4, "id34"], [4, "id36"], [4, "id38"], [4, "id40"], [4, "id42"], [4, "id44"], [4, "id46"], [4, "id48"], [4, "id50"], [4, "id52"], [4, "id54"], [4, "id56"], [4, "id58"], [4, "id60"], [4, "id62"], [4, "id64"], [4, "id66"], [4, "id68"], [4, "id70"], [4, "id72"], [4, "id74"], [4, "id76"], [4, "id78"], [4, "id80"], [4, "id82"], [4, "id84"], [4, "id86"], [4, "id88"], [4, "id90"], [4, "id92"], [4, "id94"], [4, "id96"], [4, "id98"], [4, "id100"], [4, "id102"], [4, "id104"], [4, "id106"], [4, "id108"], [4, "id110"], [4, "id112"], [4, "id114"], [4, "id116"], [4, "id118"], [4, "id120"], [4, "id122"], [4, "id124"], [4, "id126"], [4, "id128"], [4, "id130"], [4, "id132"], [4, "id134"], [4, "id136"], [4, "id138"], [4, "id140"], [4, "id142"], [4, "id144"], [4, "id146"], [4, "id148"], [4, "id150"], [4, "id152"], [4, "id154"], [4, "id156"], [4, "id158"], [4, "id160"], [4, "id162"], [4, "id164"], [4, "id166"], [4, "id168"], [4, "id170"], [4, "id172"], [4, "id174"], [4, "id176"], [4, "id178"], [4, "id180"], [4, "id182"], [4, "id184"], [4, "id186"], [4, "id188"], [4, "id190"], [4, "id192"], [4, "id194"], [4, "id196"], [4, "id198"], [4, "id200"], [4, "id202"], [4, "id204"], [4, "id206"], [4, "id208"], [4, "id210"], [4, "id212"], [4, "id214"], [4, "id216"], [4, "id218"], [4, "id220"], [4, "id222"], [4, "id224"], [4, "id226"], [4, "id228"], [4, "id230"], [4, "id232"], [4, "id234"], [4, "id236"], [4, "id238"], [4, "id240"], [4, "id242"], [4, "id244"], [4, "id246"], [4, "id248"], [4, "id250"], [4, "id252"], [5, "description"], [5, "id1"], [5, "id2"], [5, "id4"]], "Development": [[11, "development"]], "Discovering ScyllaDB Nodes": [[9, null]], "Docker": [[35, "docker"]], "Download Scylla Operator": [[14, "download-scylla-operator"]], "EKS": [[38, "eks"]], "EKS Setup": [[12, "eks-setup"]], "Embedded cqlsh (aka localhost)": [[8, "embedded-cqlsh-aka-localhost"]], "Expose Options": [[13, "expose-options"]], "Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary": [[9, "exposing-discovery-endpoint-behind-kubernetes-cluster-boundary"]], "Exposing ScyllaCluster": [[13, null]], "External seeds": [[24, "external-seeds"]], "GKE": [[38, "gke"]], "Gather data about your cluster": [[36, "gather-data-about-your-cluster"]], "Gathering data with must-gather": [[35, null]], "Generally available": [[32, "generally-available"]], "Get support": [[36, "get-support"]], "Google Kubernetes Engine Setup": [[15, "google-kubernetes-engine-setup"]], "Headless Type": [[13, "headless-type"]], "Helm Chart repository": [[16, "helm-chart-repository"]], "In-cluster node-to-node, VPC clients-to-nodes": [[13, "in-cluster-node-to-node-vpc-clients-to-nodes"]], "In-cluster only": [[13, "in-cluster-only"]], "Ingress ExternalIP": [[20, "ingress-externalip"]], "Ingress NodePort": [[20, "ingress-nodeport"]], "Initial Setup": [[11, "initial-setup"]], "Installation": [[16, "installation"], [16, "id2"], [16, "id4"]], "Installing script third party dependencies": [[12, "installing-script-third-party-dependencies"]], "Internet": [[13, "internet"]], "Known issues": [[34, null]], "Kubernetes tuning": [[31, "kubernetes-tuning"]], "Limiting must-gather to a particular namespace": [[35, "limiting-must-gather-to-a-particular-namespace"]], "LoadBalancer Type": [[13, "loadbalancer-type"]], "Maintenance mode": [[27, null]], "Monitoring": [[16, "monitoring"], [20, null]], "Multi Datacenter ScyllaDB Cluster": [[24, "multi-datacenter-scylladb-cluster"]], "Multi VPC": [[13, "multi-vpc"]], "Networking": [[24, "networking"]], "Node Service Template": [[13, "node-service-template"]], "Node operations using Scylla Operator": [[26, null]], "Node tuning": [[31, "node-tuning"]], "NodeConfig (scylla.scylladb.com/v1alpha1)": [[1, null]], "Performance tuning": [[31, null]], "PodIP Type": [[13, "podip-type"]], "Podman": [[35, "podman"]], "Preface": [[9, "preface"]], "Prepare nodes for running ScyllaDB": [[21, "prepare-nodes-for-running-scylladb"], [22, "prepare-nodes-for-running-scylladb"]], "Prerequisites": [[11, "prerequisites"], [12, "prerequisites"], [14, "prerequisites"], [15, "prerequisites"], [16, "prerequisites"], [18, "prerequisites"], [20, "prerequisites"], [21, "prerequisites"], [22, "prerequisites"], [24, "prerequisites"], [35, "prerequisites"]], "Private clusters": [[38, "private-clusters"]], "Procedure": [[19, "procedure"]], "Releases": [[32, null]], "Remote cqlsh": [[8, "remote-cqlsh"]], "Replacing a Scylla node": [[28, null]], "Replacing a dead node": [[28, "replacing-a-dead-node"]], "Requirements": [[20, "requirements"]], "Restore from backup": [[29, null]], "Restore schema": [[29, "restore-schema"]], "Restore tables": [[29, "restore-tables"]], "Results": [[16, "results"]], "Retrieve PodIPs of ScyllaDB nodes for use as external seeds": [[24, "retrieve-podips-of-scylladb-nodes-for-use-as-external-seeds"]], "Running locally": [[14, "running-locally"]], "Running must-gather": [[35, "running-must-gather"]], "Scale a ScyllaCluster": [[14, "scale-a-scyllacluster"]], "Schedule": [[32, "schedule"]], "Scylla": [[16, "scylla"]], "Scylla Helm Chart": [[16, "scylla-helm-chart"]], "Scylla Manager": [[16, "scylla-manager"], [24, "scylla-manager"]], "Scylla Manager Agent auth token": [[14, "scylla-manager-agent-auth-token"]], "Scylla Manager Controller": [[16, "scylla-manager-controller"]], "Scylla Manager Helm Chart": [[16, "scylla-manager-helm-chart"]], "Scylla Manager does not boot up on Minikube": [[34, "scylla-manager-does-not-boot-up-on-minikube"]], "Scylla Operator Chart": [[16, "scylla-operator-chart"]], "Scylla Operator Documentation": [[17, null]], "ScyllaCluster (scylla.scylladb.com/v1)": [[2, null]], "ScyllaDB Discovery Endpoint": [[9, "scylladb-discovery-endpoint"]], "ScyllaDBDatacenter (scylla.scylladb.com/v1alpha1)": [[3, null]], "ScyllaDBMonitoring": [[24, "scylladbmonitoring"]], "ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)": [[4, null]], "ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)": [[5, null]], "ServiceClusterIP Type": [[13, "serviceclusterip-type"]], "ServiceLoadBalancerIngress Type": [[13, "serviceloadbalanceringress-type"]], "Set up monitoring": [[14, "set-up-monitoring"]], "Setting Yourself as cluster-admin": [[15, "setting-yourself-as-cluster-admin"]], "Setting up nodes for ScyllaDB": [[12, "setting-up-nodes-for-scylladb"], [15, "setting-up-nodes-for-scylladb"]], "Specification": [[1, "specification"], [2, "specification"], [3, "specification"], [4, "specification"], [5, "specification"]], "Submitting": [[11, "submitting"]], "Submitting a Pull Request": [[11, "submitting-a-pull-request"]], "Support": [[33, null]], "Support matrix": [[32, "support-matrix"]], "Support overview": [[36, null]], "Supported Kubernetes platforms": [[32, "supported-kubernetes-platforms"]], "Supported releases": [[32, "supported-releases"]], "TL;DR": [[16, "tl-dr"]], "TL;DR;": [[12, "tl-dr"], [15, "tl-dr"]], "TRUNCATE queries does not work on Minikube": [[34, "truncate-queries-does-not-work-on-minikube"]], "Task scheduling": [[18, "task-scheduling"]], "Troubleshooting": [[14, "troubleshooting"], [18, "troubleshooting"], [37, null]], "Troubleshooting installation issues": [[38, null]], "Troubleshooting issues": [[36, "troubleshooting-issues"]], "Type": [[1, "type"], [1, "id3"], [1, "id5"], [1, "id7"], [1, "id9"], [1, "id11"], [1, "id13"], [1, "id15"], [1, "id17"], [1, "id19"], [1, "id21"], [1, "id23"], [1, "id25"], [1, "id27"], [1, "id29"], [1, "id31"], [1, "id33"], [1, "id35"], [1, "id37"], [1, "id39"], [1, "id41"], [1, "id43"], [1, "id45"], [1, "id47"], [1, "id49"], [1, "id51"], [1, "id53"], [1, "id55"], [1, "id57"], [1, "id59"], [1, "id61"], [1, "id63"], [1, "id65"], [1, "id67"], [1, "id69"], [1, "id71"], [1, "id73"], [1, "id75"], [1, "id77"], [1, "id79"], [1, "id81"], [1, "id83"], [1, "id85"], [1, "id87"], [1, "id89"], [1, "id91"], [1, "id93"], [1, "id95"], [1, "id97"], [1, "id99"], [1, "id101"], [1, "id103"], [1, "id105"], [1, "id107"], [1, "id109"], [1, "id111"], [1, "id113"], [2, "type"], [2, "id3"], [2, "id5"], [2, "id7"], [2, "id9"], [2, "id11"], [2, "id13"], [2, "id15"], [2, "id17"], [2, "id19"], [2, "id21"], [2, "id23"], [2, "id25"], [2, "id27"], [2, "id29"], [2, "id31"], [2, "id33"], [2, "id35"], [2, "id37"], [2, "id39"], [2, "id41"], [2, "id43"], [2, "id45"], [2, "id47"], [2, "id49"], [2, "id51"], [2, "id53"], [2, "id55"], [2, "id57"], [2, "id59"], [2, "id61"], [2, "id63"], [2, "id65"], [2, "id67"], [2, "id69"], [2, "id71"], [2, "id73"], [2, "id75"], [2, "id77"], [2, "id79"], [2, "id81"], [2, "id83"], [2, "id85"], [2, "id87"], [2, "id89"], [2, "id91"], [2, "id93"], [2, "id95"], [2, "id97"], [2, "id99"], [2, "id101"], [2, "id103"], [2, "id105"], [2, "id107"], [2, "id109"], [2, "id111"], [2, "id113"], [2, "id115"], [2, "id117"], [2, "id119"], [2, "id121"], [2, "id123"], [2, "id125"], [2, "id127"], [2, "id129"], [2, "id131"], [2, "id133"], [2, "id135"], [2, "id137"], [2, "id139"], [2, "id141"], [2, "id143"], [2, "id145"], [2, "id147"], [2, "id149"], [2, "id151"], [2, "id153"], [2, "id155"], [2, "id157"], [2, "id159"], [2, "id161"], [2, "id163"], [2, "id165"], [2, "id167"], [2, "id169"], [2, "id171"], [2, "id173"], [2, "id175"], [2, "id177"], [2, "id179"], [2, "id181"], [2, "id183"], [2, "id185"], [2, "id187"], [2, "id189"], [2, "id191"], [2, "id193"], [2, "id195"], [2, "id197"], [2, "id199"], [2, "id201"], [2, "id203"], [2, "id205"], [2, "id207"], [2, "id209"], [2, "id211"], [2, "id213"], [2, "id215"], [2, "id217"], [2, "id219"], [2, "id221"], [2, "id223"], [2, "id225"], [2, "id227"], [2, "id229"], [2, "id231"], [2, "id233"], [2, "id235"], [2, "id237"], [2, "id239"], [2, "id241"], [2, "id243"], [2, "id245"], [2, "id247"], [2, "id249"], [2, "id251"], [2, "id253"], [2, "id255"], [2, "id257"], [2, "id259"], [2, "id261"], [2, "id263"], [2, "id265"], [2, "id267"], [2, "id269"], [2, "id271"], [2, "id273"], [2, "id275"], [2, "id277"], [2, "id279"], [2, "id281"], [2, "id283"], [2, "id285"], [2, "id287"], [2, "id289"], [2, "id291"], [2, "id293"], [2, "id295"], [2, "id297"], [2, "id299"], [2, "id301"], [2, "id303"], [2, "id305"], [2, "id307"], [2, "id309"], [2, "id311"], [2, "id313"], [2, "id315"], [2, "id317"], [2, "id319"], [2, "id321"], [2, "id323"], [2, "id325"], [3, "type"], [3, "id3"], [3, "id5"], [3, "id7"], [3, "id9"], [3, "id11"], [3, "id13"], [3, "id15"], [3, "id17"], [3, "id19"], [3, "id21"], [3, "id23"], [3, "id25"], [3, "id27"], [3, "id29"], [3, "id31"], [3, "id33"], [3, "id35"], [3, "id37"], [3, "id39"], [3, "id41"], [3, "id43"], [3, "id45"], [3, "id47"], [3, "id49"], [3, "id51"], [3, "id53"], [3, "id55"], [3, "id57"], [3, "id59"], [3, "id61"], [3, "id63"], [3, "id65"], [3, "id67"], [3, "id69"], [3, "id71"], [3, "id73"], [3, "id75"], [3, "id77"], [3, "id79"], [3, "id81"], [3, "id83"], [3, "id85"], [3, "id87"], [3, "id89"], [3, "id91"], [3, "id93"], [3, "id95"], [3, "id97"], [3, "id99"], [3, "id101"], [3, "id103"], [3, "id105"], [3, "id107"], [3, "id109"], [3, "id111"], [3, "id113"], [3, "id115"], [3, "id117"], [3, "id119"], [3, "id121"], [3, "id123"], [3, "id125"], [3, "id127"], [3, "id129"], [3, "id131"], [3, "id133"], [3, "id135"], [3, "id137"], [3, "id139"], [3, "id141"], [3, "id143"], [3, "id145"], [3, "id147"], [3, "id149"], [3, "id151"], [3, "id153"], [3, "id155"], [3, "id157"], [3, "id159"], [3, "id161"], [3, "id163"], [3, "id165"], [3, "id167"], [3, "id169"], [3, "id171"], [3, "id173"], [3, "id175"], [3, "id177"], [3, "id179"], [3, "id181"], [3, "id183"], [3, "id185"], [3, "id187"], [3, "id189"], [3, "id191"], [3, "id193"], [3, "id195"], [3, "id197"], [3, "id199"], [3, "id201"], [3, "id203"], [3, "id205"], [3, "id207"], [3, "id209"], [3, "id211"], [3, "id213"], [3, "id215"], [3, "id217"], [3, "id219"], [3, "id221"], [3, "id223"], [3, "id225"], [3, "id227"], [3, "id229"], [3, "id231"], [3, "id233"], [3, "id235"], [3, "id237"], [3, "id239"], [3, "id241"], [3, "id243"], [3, "id245"], [3, "id247"], [3, "id249"], [3, "id251"], [3, "id253"], [3, "id255"], [3, "id257"], [3, "id259"], [3, "id261"], [3, "id263"], [3, "id265"], [3, "id267"], [3, "id269"], [3, "id271"], [3, "id273"], [3, "id275"], [3, "id277"], [3, "id279"], [3, "id281"], [3, "id283"], [3, "id285"], [3, "id287"], [3, "id289"], [3, "id291"], [3, "id293"], [3, "id295"], [3, "id297"], [3, "id299"], [3, "id301"], [3, "id303"], [3, "id305"], [3, "id307"], [3, "id309"], [3, "id311"], [3, "id313"], [3, "id315"], [3, "id317"], [3, "id319"], [3, "id321"], [3, "id323"], [3, "id325"], [3, "id327"], [3, "id329"], [3, "id331"], [3, "id333"], [3, "id335"], [3, "id337"], [3, "id339"], [3, "id341"], [3, "id343"], [3, "id345"], [3, "id347"], [3, "id349"], [3, "id351"], [3, "id353"], [3, "id355"], [3, "id357"], [3, "id359"], [3, "id361"], [3, "id363"], [3, "id365"], [3, "id367"], [3, "id369"], [3, "id371"], [3, "id373"], [3, "id375"], [3, "id377"], [3, "id379"], [3, "id381"], [3, "id383"], [3, "id385"], [3, "id387"], [3, "id389"], [3, "id391"], [3, "id393"], [3, "id395"], [3, "id397"], [3, "id399"], [3, "id401"], [3, "id403"], [3, "id405"], [3, "id407"], [3, "id409"], [3, "id411"], [3, "id413"], [3, "id415"], [3, "id417"], [3, "id419"], [3, "id421"], [3, "id423"], [3, "id425"], [3, "id427"], [3, "id429"], [3, "id431"], [3, "id433"], [3, "id435"], [3, "id437"], [3, "id439"], [3, "id441"], [3, "id443"], [3, "id445"], [3, "id447"], [3, "id449"], [3, "id451"], [3, "id453"], [3, "id455"], [3, "id457"], [3, "id459"], [3, "id461"], [3, "id463"], [3, "id465"], [3, "id467"], [3, "id469"], [3, "id471"], [3, "id473"], [3, "id475"], [3, "id477"], [3, "id479"], [3, "id481"], [3, "id483"], [3, "id485"], [3, "id487"], [3, "id489"], [3, "id491"], [3, "id493"], [3, "id495"], [3, "id497"], [3, "id499"], [3, "id501"], [3, "id503"], [3, "id505"], [3, "id507"], [3, "id509"], [3, "id511"], [3, "id513"], [3, "id515"], [3, "id517"], [3, "id519"], [3, "id521"], [3, "id523"], [3, "id525"], [3, "id527"], [3, "id529"], [3, "id531"], [3, "id533"], [3, "id535"], [3, "id537"], [3, "id539"], [3, "id541"], [3, "id543"], [3, "id545"], [3, "id547"], [3, "id549"], [3, "id551"], [3, "id553"], [3, "id555"], [3, "id557"], [3, "id559"], [3, "id561"], [3, "id563"], [3, "id565"], [3, "id567"], [3, "id569"], [3, "id571"], [3, "id573"], [3, "id575"], [3, "id577"], [3, "id579"], [3, "id581"], [3, "id583"], [3, "id585"], [3, "id587"], [3, "id589"], [3, "id591"], [3, "id593"], [3, "id595"], [3, "id597"], [3, "id599"], [3, "id601"], [3, "id603"], [3, "id605"], [3, "id607"], [3, "id609"], [3, "id611"], [3, "id613"], [3, "id615"], [3, "id617"], [3, "id619"], [3, "id621"], [3, "id623"], [3, "id625"], [3, "id627"], [3, "id629"], [3, "id631"], [3, "id633"], [3, "id635"], [3, "id637"], [3, "id639"], [3, "id641"], [3, "id643"], [3, "id645"], [3, "id647"], [3, "id649"], [3, "id651"], [3, "id653"], [3, "id655"], [3, "id657"], [3, "id659"], [3, "id661"], [3, "id663"], [3, "id665"], [3, "id667"], [3, "id669"], [3, "id671"], [3, "id673"], [3, "id675"], [3, "id677"], [3, "id679"], [3, "id681"], [3, "id683"], [3, "id685"], [3, "id687"], [3, "id689"], [3, "id691"], [3, "id693"], [3, "id695"], [3, "id697"], [3, "id699"], [3, "id701"], [3, "id703"], [3, "id705"], [3, "id707"], [3, "id709"], [3, "id711"], [3, "id713"], [3, "id715"], [3, "id717"], [3, "id719"], [3, "id721"], [3, "id723"], [3, "id725"], [3, "id727"], [3, "id729"], [3, "id731"], [3, "id733"], [3, "id735"], [3, "id737"], [3, "id739"], [3, "id741"], [3, "id743"], [3, "id745"], [3, "id747"], [3, "id749"], [3, "id751"], [3, "id753"], [3, "id755"], [3, "id757"], [3, "id759"], [3, "id761"], [3, "id763"], [3, "id765"], [3, "id767"], [3, "id769"], [3, "id771"], [3, "id773"], [3, "id775"], [3, "id777"], [3, "id779"], [3, "id781"], [3, "id783"], [3, "id785"], [3, "id787"], [3, "id789"], [3, "id791"], [3, "id793"], [3, "id795"], [3, "id797"], [3, "id799"], [3, "id801"], [3, "id803"], [3, "id805"], [3, "id807"], [3, "id809"], [3, "id811"], [3, "id813"], [3, "id815"], [3, "id817"], [3, "id819"], [3, "id821"], [3, "id823"], [3, "id825"], [3, "id827"], [3, "id829"], [3, "id831"], [3, "id833"], [3, "id835"], [3, "id837"], [3, "id839"], [3, "id841"], [3, "id843"], [3, "id845"], [3, "id847"], [3, "id849"], [3, "id851"], [3, "id853"], [3, "id855"], [3, "id857"], [3, "id859"], [3, "id861"], [3, "id863"], [3, "id865"], [3, "id867"], [3, "id869"], [3, "id871"], [3, "id873"], [3, "id875"], [3, "id877"], [3, "id879"], [3, "id881"], [3, "id883"], [3, "id885"], [3, "id887"], [3, "id889"], [3, "id891"], [3, "id893"], [3, "id895"], [3, "id897"], [3, "id899"], [3, "id901"], [3, "id903"], [3, "id905"], [3, "id907"], [3, "id909"], [3, "id911"], [3, "id913"], [3, "id915"], [3, "id917"], [3, "id919"], [3, "id921"], [3, "id923"], [3, "id925"], [3, "id927"], [3, "id929"], [3, "id931"], [3, "id933"], [3, "id935"], [3, "id937"], [3, "id939"], [3, "id941"], [3, "id943"], [3, "id945"], [3, "id947"], [3, "id949"], [3, "id951"], [3, "id953"], [3, "id955"], [3, "id957"], [3, "id959"], [3, "id961"], [3, "id963"], [3, "id965"], [3, "id967"], [3, "id969"], [3, "id971"], [3, "id973"], [3, "id975"], [3, "id977"], [3, "id979"], [3, "id981"], [3, "id983"], [3, "id985"], [3, "id987"], [3, "id989"], [3, "id991"], [3, "id993"], [3, "id995"], [3, "id997"], [3, "id999"], [3, "id1001"], [3, "id1003"], [3, "id1005"], [3, "id1007"], [3, "id1009"], [3, "id1011"], [3, "id1013"], [3, "id1015"], [3, "id1017"], [3, "id1019"], [3, "id1021"], [3, "id1023"], [3, "id1025"], [3, "id1027"], [3, "id1029"], [3, "id1031"], [3, "id1033"], [3, "id1035"], [3, "id1037"], [3, "id1039"], [3, "id1041"], [3, "id1043"], [3, "id1045"], [3, "id1047"], [3, "id1049"], [3, "id1051"], [3, "id1053"], [3, "id1055"], [3, "id1057"], [3, "id1059"], [3, "id1061"], [3, "id1063"], [3, "id1065"], [3, "id1067"], [3, "id1069"], [3, "id1071"], [3, "id1073"], [3, "id1075"], [3, "id1077"], [3, "id1079"], [3, "id1081"], [3, "id1083"], [3, "id1085"], [3, "id1087"], [3, "id1089"], [3, "id1091"], [3, "id1093"], [3, "id1095"], [3, "id1097"], [3, "id1099"], [3, "id1101"], [3, "id1103"], [3, "id1105"], [3, "id1107"], [3, "id1109"], [3, "id1111"], [3, "id1113"], [3, "id1115"], [3, "id1117"], [3, "id1119"], [3, "id1121"], [3, "id1123"], [3, "id1125"], [3, "id1127"], [3, "id1129"], [3, "id1131"], [3, "id1133"], [3, "id1135"], [3, "id1137"], [3, "id1139"], [3, "id1141"], [3, "id1143"], [3, "id1145"], [3, "id1147"], [3, "id1149"], [3, "id1151"], [3, "id1153"], [3, "id1155"], [3, "id1157"], [3, "id1159"], [3, "id1161"], [3, "id1163"], [3, "id1165"], [3, "id1167"], [3, "id1169"], [4, "type"], [4, "id3"], [4, "id5"], [4, "id7"], [4, "id9"], [4, "id11"], [4, "id13"], [4, "id15"], [4, "id17"], [4, "id19"], [4, "id21"], [4, "id23"], [4, "id25"], [4, "id27"], [4, "id29"], [4, "id31"], [4, "id33"], [4, "id35"], [4, "id37"], [4, "id39"], [4, "id41"], [4, "id43"], [4, "id45"], [4, "id47"], [4, "id49"], [4, "id51"], [4, "id53"], [4, "id55"], [4, "id57"], [4, "id59"], [4, "id61"], [4, "id63"], [4, "id65"], [4, "id67"], [4, "id69"], [4, "id71"], [4, "id73"], [4, "id75"], [4, "id77"], [4, "id79"], [4, "id81"], [4, "id83"], [4, "id85"], [4, "id87"], [4, "id89"], [4, "id91"], [4, "id93"], [4, "id95"], [4, "id97"], [4, "id99"], [4, "id101"], [4, "id103"], [4, "id105"], [4, "id107"], [4, "id109"], [4, "id111"], [4, "id113"], [4, "id115"], [4, "id117"], [4, "id119"], [4, "id121"], [4, "id123"], [4, "id125"], [4, "id127"], [4, "id129"], [4, "id131"], [4, "id133"], [4, "id135"], [4, "id137"], [4, "id139"], [4, "id141"], [4, "id143"], [4, "id145"], [4, "id147"], [4, "id149"], [4, "id151"], [4, "id153"], [4, "id155"], [4, "id157"], [4, "id159"], [4, "id161"], [4, "id163"], [4, "id165"], [4, "id167"], [4, "id169"], [4, "id171"], [4, "id173"], [4, "id175"], [4, "id177"], [4, "id179"], [4, "id181"], [4, "id183"], [4, "id185"], [4, "id187"], [4, "id189"], [4, "id191"], [4, "id193"], [4, "id195"], [4, "id197"], [4, "id199"], [4, "id201"], [4, "id203"], [4, "id205"], [4, "id207"], [4, "id209"], [4, "id211"], [4, "id213"], [4, "id215"], [4, "id217"], [4, "id219"], [4, "id221"], [4, "id223"], [4, "id225"], [4, "id227"], [4, "id229"], [4, "id231"], [4, "id233"], [4, "id235"], [4, "id237"], [4, "id239"], [4, "id241"], [4, "id243"], [4, "id245"], [4, "id247"], [4, "id249"], [4, "id251"], [4, "id253"], [5, "type"], [5, "id3"], [5, "id5"]], "Update route tables": [[21, "update-route-tables"]], "Update security groups": [[21, "update-security-groups"]], "Updating Your Fork": [[11, "updating-your-fork"]], "Upgrade of Scylla Operator": [[39, null]], "Upgrade via Helm": [[39, "upgrade-via-helm"]], "Upgrade via kubectl": [[39, "upgrade-via-kubectl"]], "Upgrading version of Scylla": [[30, null]], "Using Alternator (DynamoDB)": [[7, null]], "Using CQL": [[8, null]], "Using ScyllaDB APIs": [[10, null]], "Using context": [[24, "using-context"]], "Variants": [[20, "variants"]], "Version migrations": [[19, null]], "Wait for Grafana to roll out": [[20, "wait-for-grafana-to-roll-out"]], "Wait for HAProxy Ingress to roll out": [[20, "wait-for-haproxy-ingress-to-roll-out"]], "Wait for Prometheus Operator to roll out": [[20, "wait-for-prometheus-operator-to-roll-out"]], "Wait for Prometheus to roll out": [[20, "wait-for-prometheus-to-roll-out"]], "Wait for ScyllaDBMonitoring to roll out": [[20, "wait-for-scylladbmonitoring-to-roll-out"]], "Walkthrough": [[12, "walkthrough"], [15, "walkthrough"]], "Webhooks": [[38, "webhooks"]], "image": [[16, "image"]], "resources": [[16, "resources"]], "scylla.scylladb.com": [[0, null]], "v0.3.0 -> v1.0.0": [[39, "v0-3-0-v1-0-0"]], "v0.3.0 -> v1.0.0 migration": [[19, "v0-3-0-v1-0-0-migration"]], "v1.0.0 -> v1.1.0": [[39, "v1-0-0-v1-1-0"]], "v1.1.0 -> v1.2.0": [[39, "v1-1-0-v1-2-0"]], "v1.2.0 -> v1.3.0": [[39, "v1-2-0-v1-3-0"]], "webhook": [[16, "webhook"]]}, "docnames": ["api-reference/groups/scylla.scylladb.com", "api-reference/groups/scylla.scylladb.com/nodeconfigs", "api-reference/groups/scylla.scylladb.com/scyllaclusters", "api-reference/groups/scylla.scylladb.com/scylladbdatacenters", "api-reference/groups/scylla.scylladb.com/scylladbmonitorings", "api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs", "api-reference/index", "clients/alternator", "clients/cql", "clients/discovery", "clients/index", "contributing", "eks", "exposing", "generic", "gke", "helm", "index", "manager", "migration", "monitoring", "multidc/eks", "multidc/gke", "multidc/index", "multidc/multidc", "nodeoperations/automatic-cleanup", "nodeoperations/index", "nodeoperations/maintenance-mode", "nodeoperations/replace-node", "nodeoperations/restore", "nodeoperations/scylla-upgrade", "performance", "releases", "support/index", "support/known-issues", "support/must-gather", "support/overview", "support/troubleshooting/index", "support/troubleshooting/installation", "upgrade"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2}, "filenames": ["api-reference/groups/scylla.scylladb.com.rst", "api-reference/groups/scylla.scylladb.com/nodeconfigs.rst", "api-reference/groups/scylla.scylladb.com/scyllaclusters.rst", "api-reference/groups/scylla.scylladb.com/scylladbdatacenters.rst", "api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst", "api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst", "api-reference/index.rst", "clients/alternator.md", "clients/cql.md", "clients/discovery.md", "clients/index.rst", "contributing.md", "eks.md", "exposing.md", "generic.md", "gke.md", "helm.md", "index.rst", "manager.md", "migration.md", "monitoring.md", "multidc/eks.md", "multidc/gke.md", "multidc/index.rst", "multidc/multidc.md", "nodeoperations/automatic-cleanup.md", "nodeoperations/index.rst", "nodeoperations/maintenance-mode.md", "nodeoperations/replace-node.md", "nodeoperations/restore.md", "nodeoperations/scylla-upgrade.md", "performance.md", "releases.md", "support/index.rst", "support/known-issues.md", "support/must-gather.md", "support/overview.md", "support/troubleshooting/index.rst", "support/troubleshooting/installation.md", "upgrade.md"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [1, 2, 3, 4, 5, 7, 9, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 28, 29, 31, 35, 38, 39], "0": [1, 2, 3, 4, 8, 9, 11, 13, 14, 15, 16, 18, 20, 21, 22, 24, 28, 29, 30, 32, 35], "00": [7, 18], "000": 14, "0000": [2, 3, 18], "00000000": 18, "000000000000": 18, "008_": 34, "01": [7, 32], "01t16": 7, "02": 29, "03": [7, 28, 32], "04": [29, 32], "0406": 29, "05": [29, 32], "06": [18, 32], "0644": [2, 3], "07": 32, "0777": [2, 3], "08": 32, "08077dcc008fbbab6": 21, "09": [18, 29, 32], "0bb60902": 22, "0dd20cdf": 29, "0dfd": 24, "1": [1, 2, 3, 4, 8, 9, 11, 12, 13, 14, 16, 18, 19, 20, 21, 22, 24, 28, 29, 30, 31, 32], "10": [2, 3, 9, 14, 16, 18, 19, 21, 22, 24, 28, 32], "100": [1, 2, 3, 4, 18, 29], "1000": 22, "10000000": 14, "10001": [9, 16, 19, 28], "100m": [16, 24], "102": 9, "104m": 19, "105": 16, "106m": 19, "107": [18, 24], "107m": 19, "108m": 19, "109": 18, "109m": 19, "10d": 9, "11": [24, 29, 32], "110": 28, "110m": 19, "11ee": [7, 29], "12": [1, 2, 3, 4, 11, 18, 29, 32], "121c": 24, "1234": 11, "123913": 7, "125": 28, "127": [8, 18], "128mi": 16, "12a3678d": 19, "13": [11, 18, 32], "130": 16, "14": [18, 32], "149": 16, "15": [18, 29, 32], "150k": 29, "16": [16, 18, 21, 22, 24, 32], "16g": 31, "17": [22, 32], "172": [21, 22, 24, 28], "18": [22, 24], "1800g": 24, "189": 28, "19": 24, "19042": 9, "191": 28, "19142": 9, "193": 18, "195": 24, "197": 18, "1a": [12, 14, 18, 19, 21, 24, 28, 29, 30, 31], "1b": [12, 16, 21, 24], "1c": [12, 21, 24], "1d": 18, "1ffa7a82": 28, "1fr9ydlu0ve7m": 21, "1g": 31, "1gi": [16, 20, 29], "1h": 35, "1m": 18, "2": [2, 8, 13, 14, 15, 16, 18, 19, 21, 22, 24, 27, 28, 30, 32], "20": [15, 18, 22, 32], "200": 20, "200000000": 18, "2020": [18, 30], "20200816": 18, "2021": 32, "2022": 32, "2023": [13, 32], "20231205": 8, "2024": [7, 29, 32], "207": 16, "209": 24, "2097152": [14, 24], "20g": 14, "20mi": 16, "21": 32, "214": 29, "22": [19, 32], "226716": 15, "23": [18, 19], "231": [16, 28], "232323": 2, "236a0e10575b": 18, "237": 24, "238z": 18, "23t11": 18, "24": [2, 3, 24, 29], "246": 19, "25": [18, 19, 24, 32], "250000000": 18, "250m": 24, "25126532803b": 18, "256": [24, 28], "26": 18, "27": [18, 24, 32], "275aae7f": 18, "28": [18, 32], "28169610": 18, "28m": 18, "29": 18, "290": 24, "2a": [21, 24], "2aa90ab29a99": 24, "2b": [21, 24], "2b9dbe8c": 18, "2c": [21, 24], "2g": 14, "2xlarg": 12, "3": [2, 8, 11, 12, 14, 16, 18, 24, 29, 30, 31, 32], "30": 14, "300": 14, "30000": 14, "30000000000": 18, "300000000000": 18, "30m": [19, 39], "30mi": 16, "31": 32, "32": 15, "3260": [2, 3], "327f": 24, "32mi": 16, "33": 18, "336": 24, "35": 7, "35d0cb19": 28, "35ef": 28, "3619ae053778": 29, "37m": 18, "38": 18, "39": 24, "3d0a7b9305f7": 24, "3d2h10m": 2, "3h11m": 28, "3h12m": 28, "3h19m": 28, "3h21m": 28, "3h25m": 28, "3h27m": 28, "3h5m": 28, "4": [2, 8, 12, 14, 15, 16, 18, 29, 30, 31, 32], "400b2723": 18, "4062": 24, "407e": 29, "409mib": 29, "41": 7, "4128": 24, "42": 18, "422a": 18, "4271": 29, "43": [9, 16, 19, 28], "43200000000000": 18, "435z": 18, "44": 9, "443": [16, 20], "44af": 28, "458c": 29, "4703": 18, "4706": 28, "479e65fb8372": 18, "48": 29, "482b": 28, "49": 16, "494277b9": 24, "4974": 29, "49f2": 18, "4a25": 24, "4af9": 24, "4bb4": 18, "4c20": 18, "4c97": 18, "4c9c": 19, "4d45a39c7003": 28, "4d93": 24, "4db3": 24, "4def": 29, "4fc8": 18, "4m29": 16, "4q": 7, "5": [2, 7, 8, 11, 13, 18, 29, 30, 32], "50": 14, "50000000": 14, "5000000000": 18, "500gi": 31, "500m": 16, "500mi": 16, "503": 24, "5080": 18, "5090": [9, 16], "51": [16, 28], "511": [2, 3], "519z": 18, "53": [16, 18], "54": 18, "559": 24, "56090": 18, "56112": 18, "56g": 24, "57": 18, "57228c52": 29, "58": 18, "5871": 39, "58a89e7a4231": 8, "59": 24, "5c8aae70": 7, "5dbcb54f5c": 16, "5g": 16, "5m": 20, "5m58": 16, "5m59": 16, "6": [2, 8, 14, 24, 29, 31, 32], "60": [16, 18], "600": [8, 19], "600000000": 18, "6004039f402e": 24, "619ada495c2a": 18, "62": [18, 28], "63": 28, "634": 24, "63642069": 29, "64b6292a": 24, "65b89d55bb": 20, "66": 19, "665dde7e": 24, "669db64dd": 16, "68c49e47ace1": 29, "69": 18, "6e7993cf42": 29, "6f31aaf1d6d3": 7, "6j12": 28, "6m46": 14, "7": [18, 24, 32], "70": 24, "7000": [9, 16, 19, 28], "7001": [9, 16, 19, 28], "705": 24, "7199": [9, 16, 19, 28], "74": 28, "750000000": 18, "759": 24, "764": 24, "76cc4dcc": 18, "77": 28, "7735": 39, "7a4f": 24, "7bd9f968b9": 18, "7c30ea55": 24, "7cf6": 29, "7d": 18, "7m43": 14, "8": [2, 3, 15, 18, 20, 22, 32], "80": [2, 3, 16], "8000": 14, "8043": [7, 9], "8080": 39, "844ccc56c4": 16, "84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf": 24, "8511": 19, "852a": 24, "860": [2, 3], "868e0f3396b2": 29, "86f7": 24, "87": 24, "87a4a6c65c3": 28, "882z": 18, "89": 16, "8a48": 19, "8b9d": 18, "8c54": 24, "8c8d": 29, "8ebd6114": 28, "8f5f": 28, "8m14": 28, "8th": 34, "9": [1, 2, 3, 4, 28, 29, 30, 32, 39], "9042": [8, 9, 16, 19, 28], "91": 28, "9100": 9, "9142": [8, 9, 16, 19, 28], "9160": [9, 16, 19, 28], "9180": [9, 16, 19, 28], "92": 16, "9263": 18, "92a4": 28, "949f": 29, "951c": 29, "9521": 29, "95m": 39, "96": 19, "969c": 28, "9d11": 18, "9daa": 18, "9df4": 24, "9m49": 14, "A": [1, 2, 3, 4, 12, 13, 14, 15, 16, 20, 21, 22, 24, 39], "ANDed": [1, 2, 3, 4], "And": [11, 16], "As": [2, 3, 11, 12, 15, 18, 21, 24, 29, 35], "At": [2, 3, 7, 8, 15, 19, 30], "Be": 32, "By": [1, 2, 3, 4, 13, 15, 16, 31, 35], "For": [1, 2, 3, 4, 8, 9, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 24, 27, 31], "If": [1, 2, 3, 4, 7, 8, 11, 12, 14, 15, 16, 18, 19, 20, 24, 30, 34, 35, 38], "In": [1, 2, 3, 4, 5, 8, 9, 11, 14, 15, 16, 18, 19, 20, 21, 22, 24, 25, 28, 29, 30, 31, 35, 39], "It": [2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 21, 22, 24, 30], "NOT": [2, 3], "No": [2, 3, 4], "ORed": [1, 2, 3, 4], "On": [13, 31, 34], "One": 31, "Such": 13, "TO": 16, "That": 35, "The": [1, 2, 3, 4, 7, 9, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 24, 31, 32, 34, 35], "Then": [14, 15, 16, 21, 22, 30], "There": [2, 3, 4, 35, 38, 39], "These": [2, 3, 12, 13, 15, 31, 39], "To": [2, 3, 4, 7, 8, 9, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 24, 27, 28, 29, 30, 34, 36, 38, 39], "WITH": 14, "Will": [2, 3], "With": [18, 22], "_trace_id": 18, "a3a98e08": 24, "a540": 29, "a66d": 18, "a969": 18, "a96a": 24, "a978": 28, "a99": 7, "ab015cef": 29, "ab7568b8a1bd": 18, "abc4": 29, "abc8": 29, "abil": [2, 3, 4], "abl": [16, 21, 38], "about": [1, 2, 3, 4, 8, 9, 11, 12, 13, 14, 15, 16, 22, 31], "abov": [9, 12, 14, 15, 16, 18, 20, 21, 22, 29, 39], "absolut": [2, 3], "accept": [2, 3, 4, 12, 32], "access": [2, 3, 4, 6, 7, 8, 11, 13, 18, 29], "accessmod": [2, 3, 4], "accord": [12, 14, 15, 19, 21, 30], "accordingli": 24, "account": [2, 3, 11, 15], "across": [2, 3, 4, 24, 31], "act": [2, 3], "action": 32, "activ": 7, "actual": 1, "ad": [1, 2, 3, 4, 7, 11, 14, 17, 21], "add": [2, 3, 14, 16, 18, 19, 22, 24, 27, 28, 39], "addit": [4, 7, 9, 13, 16, 18, 19, 22, 29, 39], "addition": [13, 24], "additionaldnsnam": [2, 3], "additionalipaddress": [2, 3], "additionalscylladbargu": 3, "address": [2, 3, 7, 9, 13, 20, 22, 24, 28], "adher": 6, "adhoc": 18, "adjust": [2, 5, 7, 8, 14, 20, 21, 22, 24, 35], "admin": [2, 3, 8, 20, 35], "administr": 36, "advantag": 31, "advis": [24, 35, 38], "advisori": 32, "af1dd5cd": 29, "af2": 29, "afe6": 29, "affect": [2, 3, 29, 35], "affin": [2, 3, 4, 25], "after": [2, 3, 4, 11, 12, 13, 14, 15, 16, 18, 28, 29], "afterward": [12, 15], "ag": [9, 14, 16, 18, 19, 28, 39], "again": [11, 19, 20, 27], "against": [14, 21, 22], "agemax": 18, "agent": [2, 3, 16, 18, 24], "agentimag": 16, "agentrepositori": 2, "agentresourc": [24, 31], "agentvers": [2, 14, 24, 29, 31], "aggress": [2, 3], "agreement": [18, 30], "ah": 22, "aim": 32, "aio": [2, 14, 24], "alia": 22, "aliv": 27, "all": [1, 2, 3, 4, 6, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 29, 30, 31, 35], "alloc": [13, 16, 22], "allocateloadbalancernodeport": [2, 3, 13], "allow": [1, 2, 3, 4, 5, 9, 12, 14, 16, 20, 21, 22, 24, 27, 30, 31, 38], "alon": [2, 3], "along": [2, 3, 14], "alpha": [1, 2, 3, 4, 12, 15, 32], "alphanumer": 2, "alreadi": [1, 2, 3, 18, 20, 29, 30], "also": [1, 2, 3, 4, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 35], "alter": 14, "altern": [3, 10, 18, 20], "although": [11, 16, 19, 20, 21, 22, 24], "alwai": [7, 8, 9, 11, 14, 27, 31, 35], "amazon": [2, 3, 12, 23, 24, 32], "amend": 19, "amount": [2, 3, 4], "an": [1, 2, 3, 4, 5, 8, 9, 11, 13, 14, 16, 17, 21, 22, 30, 31, 32, 35, 36, 38, 39], "analog": [21, 22], "ani": [1, 2, 3, 4, 8, 11, 13, 15, 16, 19, 21, 22, 29, 31, 32], "annot": [9, 13, 20], "anoth": [1, 2, 3, 4, 13, 19, 38], "anti": [1, 2, 3, 4], "anymor": [2, 3], "anyth": 14, "anyvolumedatasourc": [2, 3, 4], "api": [1, 2, 3, 4, 5, 7, 8, 11, 14, 17, 18, 20, 24, 29, 32, 35, 38], "apiaddress": 18, "apigroup": [2, 3, 4, 19], "apiserv": [2, 3, 38], "apivers": [1, 2, 3, 4, 5, 8, 13, 19, 20, 21, 24, 29, 31, 39], "app": [14, 16, 20, 24, 29, 30, 39], "appear": 18, "append": [2, 3, 14], "appli": [1, 2, 3, 4, 11, 12, 14, 15, 16, 18, 19, 20, 24, 31, 34, 35, 39], "applic": [2, 3, 16, 31], "approach": [2, 3], "appropri": [3, 9, 20], "approxim": 32, "apropri": 11, "ar": [1, 2, 3, 4, 6, 7, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 28, 29, 30, 31, 32, 35, 36, 38, 39], "arbitrari": [2, 3, 4], "architectur": [1, 2, 3, 4, 5], "archiv": [35, 36], "aren": [2, 3, 32], "argument": [3, 14, 18, 35], "aris": 36, "around": [2, 3, 31], "arrai": [1, 2, 3, 4, 12, 15], "arrikto": 15, "artifact": 32, "artist": 7, "ask": 16, "aspect": [2, 3, 4], "assess": 32, "assign": [13, 31], "associ": [1, 2, 3, 4, 11, 14, 18, 19, 21, 22], "assum": [13, 20, 24, 35], "assumpt": 13, "asynchron": 14, "attach": [1, 2, 3, 4, 14, 15, 19, 28, 35, 36], "attempt": [2, 3, 18], "attribut": [2, 3, 4, 7], "attributedefinit": 7, "attributenam": 7, "attributetyp": 7, "audienc": [2, 3], "auth": 24, "auth_token": 24, "authent": [2, 3, 7, 14, 35], "authn": 6, "author": [2, 7], "authz": 6, "auto": [2, 3, 14], "autogener": 16, "autoh": 17, "autom": [16, 17, 18, 24, 39], "automat": [1, 2, 3, 4, 9, 11, 14, 15, 18, 22, 26, 32, 39], "automaticorphanednodecleanup": [2, 24, 25], "autorepair": [15, 22], "autoupgrad": [15, 22], "auxiliari": 5, "avail": [1, 2, 3, 4, 7, 8, 9, 13, 14, 15, 16, 18, 20, 24, 28, 29, 30, 31, 35, 39], "availabilityzon": 21, "availablememb": 2, "availablenod": 3, "avoid": [1, 2, 3, 7, 8, 11, 35, 38], "aw": [2, 3, 9, 12, 13, 21], "awar": 14, "aws_access_key_id": 7, "aws_ca_bundl": 7, "aws_endpoint_url_dynamodb": 7, "aws_secret_access_kei": 7, "azur": [2, 3], "b": [2, 3, 11, 15, 22, 24, 27], "b4b390a1": 28, "b63eee4527e5": 28, "b7f3": 18, "ba0f": 29, "back": [1, 2, 3, 4, 9, 13, 27, 28, 30], "backend": [2, 3, 9, 13], "backup": [14, 17, 18, 26, 39], "backup_data": 30, "backup_loc": 29, "backward": [2, 3, 4, 19, 39], "balanc": [2, 3, 9, 13, 27], "bandwidth": 28, "bare": [18, 20], "base": [1, 2, 3, 4, 7, 9, 11, 16, 31], "base64": [8, 20, 24], "bash": [5, 8], "bashtoolsimag": 5, "bcec": 18, "bcm4v": 16, "bd63": 24, "becaus": [2, 3, 4, 7, 9, 13, 14, 18, 24, 28, 35], "becom": [3, 25, 30, 32], "bed5": 29, "been": [2, 3, 13, 14], "befor": [2, 3, 11, 19, 20, 30, 32, 35, 38, 39], "begin": [17, 30], "begin_upgrad": 30, "behav": [2, 3], "behavior": 2, "behaviour": [2, 3, 11], "behind": 24, "being": [2, 3, 4, 13, 14, 18, 24, 27, 28, 30, 32], "bellow": [7, 8], "below": [2, 14, 18, 19, 20, 21, 22, 24, 29, 31], "benchmark": [12, 15], "best": 14, "beta": [2, 3, 4, 9, 13, 32], "better": [11, 15], "between": [2, 3, 4, 14, 21, 22], "beyond": [20, 38], "binari": [2, 3, 24, 35], "bind": [2, 3, 4, 15], "bit": [2, 3, 14, 16], "blank": 11, "blob": [2, 3], "block": [2, 3, 15, 38], "boolean": [1, 2, 3, 4], "boot": [19, 30], "bootstrap": [16, 28], "both": [1, 2, 3, 4, 13, 14, 16, 21, 22], "bottlerocket": 32, "bound": [19, 25, 28, 31], "box": 19, "branch": [32, 39], "break": [32, 38], "breez": 14, "bring": [27, 28, 30, 39], "broadcast": [2, 3], "broadcast_address": [2, 3], "broadcast_rpc_address": [2, 3], "broadcastopt": [13, 24], "broken": [2, 3], "brought": 39, "brows": 14, "browser": 11, "bucket": [2, 18], "bug": [11, 32, 36], "build": [23, 24, 32], "build_dat": 18, "built": [11, 13, 21, 22], "built_bi": 18, "bump": 19, "bundl": [2, 3, 7, 8], "button": 11, "byte": [2, 3, 4], "c": [2, 3, 7, 8, 14, 22, 24, 28, 29], "c19c89cb": 24, "c29d": 18, "c29f63a917c8": 18, "c4": 12, "c41c": 28, "c436": 18, "c5ab2f47eb37": 24, "c881772ebe62": 24, "ca": [4, 7, 8, 16, 20], "ca71efd39b2": 24, "cacert": 20, "cach": [2, 3], "cachingmod": [2, 3], "calcul": 2, "call": [2, 3, 9, 14, 15, 29, 31, 36, 38, 39], "caller": 20, "camelcas": [1, 2, 3, 4, 5], "can": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 28, 30, 31, 35, 36, 38], "candid": 32, "cannot": [1, 2, 3, 4, 5, 13, 18, 31], "capabl": [12, 13, 14, 15, 24], "capac": [2, 3, 4, 12, 15, 16, 24, 29, 31], "care": [12, 13, 15], "carri": [11, 24], "case": [1, 2, 3, 4, 9, 13, 14, 19, 21, 24, 26, 28, 31, 35, 38, 39], "cass": 14, "cassandra": [2, 7, 8, 12, 15], "cassandraauthor": 8, "cat": [8, 39], "categor": 4, "categori": [1, 2, 3, 4], "caus": [19, 27, 28, 30, 31], "cd": [11, 12, 14, 15], "ceas": [1, 2, 3, 4], "censor": 35, "center": 24, "central": [2, 3], "ceph": [2, 3], "cert": [2, 3, 4, 19], "certain": [2, 3, 14], "certfil": [8, 18], "certif": [2, 3, 8, 14, 16, 20], "certificatesecretnam": 16, "cest": 18, "cf": 31, "cgroup": 32, "chang": [1, 2, 3, 4, 9, 11, 13, 14, 15, 16, 18, 19, 20, 24, 29, 30, 31, 39], "changelog": 11, "channel": [2, 3, 19, 21], "chap": [2, 3], "chapauthdiscoveri": [2, 3], "chapauthsess": [2, 3], "charact": 2, "chart": [17, 20, 32, 39], "check": [2, 3, 13, 14, 17, 18, 19, 28, 29, 30, 31, 35, 39], "check_schema_agr": 30, "checkout": [11, 19, 39], "chmod": 8, "choic": 8, "choos": [1, 2, 3, 4, 14, 17, 24], "cidr": [21, 22], "citizen": 14, "claimnam": [2, 3], "class": [2, 3, 4, 13, 14, 31], "clean": 11, "cleanup": [2, 26, 30], "clear_data_backup": 30, "clear_system_backup": 30, "cli": [14, 16, 18, 22], "click": 11, "client": [1, 4, 5, 7, 8, 9, 11, 14, 16, 19, 20, 24, 28], "clone": [2, 3, 14], "close": [11, 16], "cloud": [12, 13, 14, 15, 18, 20, 22, 24], "cluster": [1, 2, 3, 4, 5, 7, 8, 16, 17, 19, 20, 25, 27, 28, 29, 30, 31, 32, 39], "cluster_id": 29, "cluster_ip": 8, "cluster_nam": [12, 14, 15], "cluster_vers": 15, "clusterconfig": 21, "clusterip": [7, 8, 9, 16, 19, 28], "clusternam": 3, "clusterrol": [15, 19, 35], "clusterrolebind": [15, 35], "clustersharednodesecuritygroup": 21, "clustertrustbundleproject": [2, 3], "cname": 20, "co": [1, 2, 3, 4], "code": [32, 39], "collabor": 11, "collect": [2, 3, 19, 20, 36], "colon": 11, "color": 7, "column": 19, "com": [6, 7, 9, 11, 12, 13, 14, 15, 16, 19, 20, 24, 29, 31, 35, 39], "combin": [1, 2, 3, 4], "come": [12, 14, 15, 18, 31], "comma": [2, 3], "command": [2, 3, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 24, 28, 29, 34, 35], "comment": [2, 3], "commit": [2, 3, 18, 32], "common": [12, 14, 15, 16, 19, 31, 35, 38, 39], "commonli": 11, "commun": [1, 2, 3, 4, 5, 13, 21, 22, 24], "compar": [11, 19], "compat": [2, 3, 4, 7], "complet": [2, 3, 11, 14, 20, 28], "complex": [8, 13], "compon": [16, 18, 20, 32], "compos": [16, 24], "compromis": [2, 3], "comput": [1, 2, 3, 4, 15, 22], "concaten": [2, 3], "concept": [2, 3, 4, 7], "condit": [14, 16, 19, 20, 24, 29, 31, 39], "conditiontyp": [2, 3], "config": [2, 3, 4, 8, 14, 15, 18, 21, 22, 24, 35], "config_fil": 18, "configmap": [7, 8, 14], "configur": [1, 2, 3, 4, 5, 7, 8, 9, 13, 18, 24, 29, 31, 38, 39], "conflict": [2, 3, 11], "conform": [32, 38], "connect": [2, 3, 7, 8, 9, 13, 14, 18, 21], "connections_per_host": 14, "consequ": 13, "consid": [2, 3, 4, 19], "consider": [1, 2, 3, 4], "consist": [2, 3, 4, 16, 18, 24, 29, 31], "consistent_cluster_manag": 29, "consol": 11, "constitut": 1, "constraint": 3, "consult": [2, 3, 18], "consum": [2, 4], "contact": [9, 24], "contain": [1, 2, 3, 4, 13, 15, 16, 19, 22, 30, 32, 35, 36, 39], "containernam": [2, 3], "content": [2, 3, 4, 14, 15, 16, 29, 32], "context": [21, 22, 31, 35], "context_dc1": 24, "context_dc2": 24, "continu": [9, 11, 30], "contrari": 7, "contribut": 17, "contributor": [1, 2, 3, 4, 5, 11], "control": [1, 2, 3, 4, 9, 13, 15, 18, 19, 20, 24, 30, 38, 39], "controllerimag": 16, "controllerresourc": 16, "conveni": 20, "convent": [1, 2, 3, 4, 5, 14], "convert": [1, 2, 3, 4, 5], "copi": [2, 3, 4, 7, 14, 35], "core": [2, 3, 4, 14, 15, 31], "corev1": [2, 3], "correct": [2, 3, 18, 20], "correctli": [16, 32], "correspond": [1, 2, 3, 4, 5, 21, 22], "correspondingli": 24, "cost": 13, "could": 16, "count": [14, 15, 18], "coupl": 31, "cours": 16, "cover": [13, 31], "cpu": [2, 3, 12, 14, 15, 16, 24, 29, 31], "cpumanagerpolici": [12, 15], "cpuset": [2, 24], "cql": [7, 10, 14, 18, 29], "cql_user": 7, "cqlsh": [7, 14], "cqlshlib": 8, "cqlshrc": 8, "cr": 24, "crd": [6, 11, 14, 16, 18, 19, 31, 32, 39], "creat": [1, 2, 3, 4, 5, 7, 8, 13, 16, 18, 19, 20, 24, 29, 31, 35, 39], "create_system_backup": 30, "createselfsignedcertif": 16, "creation": [2, 4, 12, 15, 18, 32], "credenti": [2, 3, 8, 15, 18, 20, 29], "cri": 32, "cron": 2, "crossnamespacevolumedatasourc": [2, 3, 4], "crt": [7, 8, 18, 20], "csi": [4, 12, 15], "curl": 20, "current": [1, 2, 3, 4, 14, 16, 17, 20, 21, 22, 24, 30, 35, 38], "currentnod": [2, 3], "currentrack": 2, "currentvers": 3, "custom": [2, 3, 4, 13, 18, 20, 21, 22, 29], "customconfigmapref": 3, "customconfigsecretref": 3, "customiz": 16, "customresourcedefinit": [19, 39], "customzi": 16, "d": [2, 3, 7, 8, 20, 24, 39], "d1d532cd": 18, "d446ff160747": 29, "d4946360": 18, "d7e1": 7, "daemon": 31, "daemonset": [28, 31], "daili": [2, 18], "dash": [2, 11], "data": [2, 3, 4, 7, 8, 14, 15, 18, 20, 24, 28, 29, 30, 33, 39], "databas": [16, 18], "datacent": [3, 4, 8, 14, 16, 17, 18, 21, 22, 28, 29, 31, 35], "datacenter_nam": 14, "datacenternam": 3, "dataset": [2, 3], "datasetnam": [2, 3], "datasetuuid": [2, 3], "datasnapshottag": 2, "date": [1, 2, 3, 4, 11, 16, 18, 24, 32, 39], "daunt": 14, "dc": [2, 3, 18, 24], "dc1": [2, 24], "dc2": 24, "dc9842980080": 29, "dc_suffix": 14, "dead": 17, "debug": [18, 35], "decid": [16, 32], "decim": [2, 3], "decis": 30, "decod": 14, "deconflict": [2, 3, 4], "dedic": [2, 3, 9, 13, 16, 18, 21, 22, 24, 29, 31, 35, 36], "dedupl": [2, 3], "default": [1, 2, 3, 4, 7, 8, 9, 13, 14, 15, 16, 18, 24, 28, 29, 31, 34, 35], "defaultmod": [2, 3], "defin": [1, 2, 3, 4, 5, 6, 13, 14, 16, 18, 24], "definit": [7, 13, 14, 15, 16, 18, 19, 30, 39], "degrad": [2, 3, 4, 9, 20, 24, 29], "delet": [2, 3, 14, 18, 19, 28, 30, 39], "delete_pod": 30, "demo": [12, 15, 28], "deni": [14, 22], "dep": 11, "depend": [2, 3, 9, 11, 13, 19, 27, 28, 31, 32, 35], "deploi": [13, 17, 19, 39], "deploy": [14, 16, 18, 20, 22, 23, 24, 29, 30, 39], "deprec": [2, 3], "describ": [1, 2, 3, 4, 5, 12, 14, 15, 18, 19, 21, 22, 24, 29, 30, 39], "descript": [11, 16], "design": [2, 3], "desir": [1, 2, 3, 4, 5, 14, 16, 18, 30], "desiredcapac": 12, "destin": 21, "destroi": [14, 18, 24], "detach": 19, "detail": [1, 2, 3, 4, 7, 14, 18, 20, 24, 31, 32], "detect": [30, 32], "determin": [2, 3, 4, 11, 35], "dev": [1, 2, 3, 5, 20], "devel": [1, 2, 3, 4, 5], "develop": [2, 3, 12, 15, 18, 20], "developermod": [2, 3, 14, 29], "deviat": 35, "devic": [2, 3, 12, 15, 31], "did": 11, "differ": [2, 3, 4, 7, 8, 9, 12, 13, 14, 16, 18, 21, 22, 24, 31], "direct": [2, 3, 4, 13, 14, 20, 22], "directli": [2, 3, 7, 13, 22], "directori": [2, 3, 11, 35, 39], "disabl": [2, 3, 4, 8, 15, 16, 22, 27, 29, 30, 34], "disable_maintenance_mod": 30, "disableautomaticorphanednodereplac": 3, "disableoptim": 1, "disadvantag": 9, "disallow": [2, 3, 4], "disambigu": [19, 39], "discov": [7, 10, 13, 24], "discoveri": [2, 3, 8], "discuss": 24, "disk": [1, 2, 3, 12, 14, 15, 22, 28, 31], "disknam": [2, 3], "diskspacefreeminperc": 18, "diskuri": [2, 3], "displai": 30, "distinct": [13, 21, 22, 24], "distribut": 31, "divisor": [2, 3], "dn": [2, 3, 4, 9, 11, 13, 14, 20, 24, 27, 28], "dns1123subdomainfmt": [2, 3, 4], "dns_label": [2, 3], "dnsdomain": [2, 3, 4, 20], "dnspolici": [2, 3], "do": [1, 2, 3, 4, 11, 14, 18, 20, 21, 22, 27, 36, 38, 39], "doc": [2, 3, 4, 6, 12, 14, 29, 31, 38], "docker": [8, 11, 14, 16, 32, 39], "docker0": 34, "document": [2, 3, 4, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 22, 24], "doe": [1, 2, 3, 4, 11, 14, 16, 18, 24], "doesn": [13, 14, 15, 38, 39], "doesnotexist": [1, 2, 3, 4], "domain": [2, 3, 4, 24], "don": [1, 2, 3, 4, 7, 11, 12, 13, 15, 16, 35], "done": [8, 11, 12, 14, 15, 18, 29, 35], "dot": 2, "doubl": 31, "down": [1, 9, 14, 17, 24, 28], "download": [16, 29], "downscal": 17, "downtim": 19, "downward": [2, 3], "downwardapivolum": [2, 3], "downwardapivolumefil": [2, 3], "drain": [2, 3, 28, 30], "drain_nod": 30, "drbth": 16, "driver": [2, 3, 4, 9, 12, 13, 14, 15], "drop": [2, 3, 4], "dry": 14, "due": [1, 2, 3, 4, 18, 24, 25], "durat": [2, 3, 18, 29, 35], "dure": [1, 2, 3, 4, 11, 24, 30, 39], "dynam": [2, 3, 4, 12, 15], "dynamicresourcealloc": [2, 3, 4], "dynamodb": 10, "e": [1, 2, 3, 4, 7, 14, 35, 39], "e2": 32, "e24c": 24, "e420": 24, "each": [1, 2, 3, 4, 13, 14, 15, 16, 18, 19, 21, 22, 24, 30, 31, 39], "earlier": [12, 15, 21, 24], "easi": 14, "easier": [14, 19, 20, 39], "easiest": 15, "easili": [21, 22], "east": [12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 31], "east1": [22, 27], "eb": [2, 3], "ebd82268": 29, "echo": [7, 20], "ecosystem": 9, "edit": [11, 12, 14, 15, 18], "editor": 8, "eec5": 18, "efb7": 29, "effect": [1, 2, 3, 4, 24, 29], "effic": 31, "eg": 14, "either": [2, 3, 4, 14, 16, 18], "ek": [9, 13, 17, 23, 24, 32], "eks_region": 12, "eks_zon": 12, "eksctl": [12, 21], "element": [1, 2, 3, 4], "elig": 32, "els": [11, 20], "embed": [2, 3, 35, 36], "emerg": 5, "empti": [1, 2, 3, 4, 8, 14, 29], "enabl": [1, 2, 3, 4, 7, 8, 13, 14, 15, 18, 21, 22, 24, 25, 27, 29, 30, 34], "enable_maintenance_mod": 30, "enabledevelopermod": 3, "encod": [2, 3], "encrypt": 8, "end": [11, 19, 20, 29, 32], "endpoint": [1, 2, 3, 4, 5, 8, 14], "endpointsselector": 20, "enforc": 31, "enhanc": 24, "enough": [2, 3, 7, 35], "ensur": [2, 3, 11, 14, 19, 29], "enter": [11, 16, 28, 30], "enterpris": [13, 17, 18, 29, 32], "entir": [2, 3, 4, 13, 14, 24, 31], "entri": [2, 3, 4, 14], "entrypoint": 8, "env": [2, 3, 14, 35], "environ": [2, 3, 8, 11, 13, 14, 16, 19, 24, 35], "eof": 8, "ephemer": [9, 24], "ephemeralvolumesourc": [2, 3], "eq": 20, "equal": [1, 2, 3, 4, 14, 24, 31], "equival": [1, 2, 3, 4, 13], "error": [2, 3, 4, 7, 14, 15, 18, 30, 35], "errorbackoff": 18, "esoter": [2, 3], "esp": 22, "especi": 9, "establish": [13, 14, 21, 22, 39], "etc": [1, 2, 3, 4, 18, 20, 31, 32], "eval": 14, "evalu": [2, 3], "even": [11, 30], "event": 14, "eventu": [1, 2, 3, 4], "everi": [2, 3, 4, 7, 8, 9, 13, 14, 24, 30, 32], "everyon": 32, "everyth": [2, 3, 11, 12, 14, 15, 16, 30], "evict": [1, 2, 3, 4], "ex": [2, 3, 15], "exactli": [16, 32], "examin": [14, 18], "exampl": [2, 3, 4, 7, 8, 9, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 24, 27, 29, 30, 31, 35, 39], "exce": [2, 3, 4], "except": [12, 15], "exclud": 2, "exclus": [2, 3, 13, 31], "exec": [2, 3, 7, 8, 14, 18, 24, 28, 29, 35], "execut": [1, 2, 3, 4, 16, 18, 19, 24, 29, 30, 31, 34], "exemplari": [21, 22], "exist": [1, 2, 3, 4, 14, 18, 19, 24, 30, 32, 35, 39], "exit": 14, "expand": [2, 3], "expect": [2, 3, 4, 24, 39], "experi": [12, 15], "experiment": [2, 3, 17, 20, 31, 39], "expir": [2, 3], "expirationsecond": [2, 3], "explain": [13, 20, 21, 22, 31], "explicit": 25, "explicitli": [2, 3, 4, 8], "export": [2, 3, 7, 12, 15, 35], "expos": [2, 3, 4, 7, 17, 24], "exposeopt": [13, 20, 24], "exposur": 9, "express": [1, 2, 3, 4, 16], "ext4": [2, 3], "extend": [2, 14, 38], "extern": [2, 3, 4, 9, 13, 16, 19, 20, 28, 35], "external_ip": 20, "externalse": [2, 3, 24], "externaltrafficpolici": [2, 3, 13], "extra": [2, 3, 5, 14, 35], "extract": [19, 24], "f": [2, 3, 12, 14, 15, 16, 18, 19, 20, 21, 24, 39], "f17db261": 22, "fa78d3992694": 19, "facilit": 13, "factor": [2, 14, 35], "factori": 8, "fail": [2, 3, 14, 18, 20, 28, 29, 34], "failfast": 2, "failur": [2, 27, 28, 30], "failurestrategi": 2, "fallback": 24, "fals": [1, 2, 3, 4, 16, 18, 20, 22, 24, 29], "fast": 14, "faster": 2, "featur": [1, 2, 3, 4, 11, 31], "feel": [14, 35], "fetch": 11, "few": 35, "ff36d7e0": 29, "fibr": [2, 3], "field": [1, 2, 3, 4, 5, 13, 14, 16, 20, 24, 30, 35], "fieldpath": [2, 3], "file": [1, 2, 3, 7, 8, 11, 14, 15, 16, 19, 21, 29, 35, 38, 39], "filesystem": [2, 3, 4, 12, 15, 27], "filesystemconfigur": 1, "filter": [1, 22], "find": [1, 2, 3, 4, 6, 7, 8, 14, 16, 20, 30, 38, 39], "find_next_nod": 30, "find_next_rack": 30, "finish": [2, 3, 4, 14, 29], "finish_upgrad": 30, "firewal": 38, "first": [2, 3, 11, 12, 14, 15, 16, 18, 19, 20, 29, 30, 31, 39], "fit": [1, 11, 13], "fix": [2, 3, 9, 11, 32, 34], "flag": [2, 3, 21, 22, 25, 35, 39], "flow": 21, "focus": [12, 15], "folder": [8, 12, 15, 35], "follow": [2, 3, 8, 11, 12, 13, 14, 15, 16, 18, 19, 21, 22, 24, 29, 30, 32, 34, 39], "follw": 16, "foo": [2, 3, 4, 29], "foostatu": [2, 3, 4], "forbid_rmw": 14, "forbidden": [1, 2, 3, 4], "forc": [2, 3, 15], "forceredeploymentreason": [2, 3, 24, 29], "forev": [1, 2, 3, 4], "forgotten": 11, "form": [12, 15, 35], "format": [2, 3, 15, 18, 22, 30], "formula": 2, "fortun": 14, "forward": [2, 3], "found": [12, 14, 15], "free": [14, 15, 35], "freez": 32, "fresh": [3, 29, 39], "from": [1, 2, 3, 4, 5, 7, 9, 11, 12, 13, 14, 15, 16, 19, 20, 21, 24, 26, 27, 28, 30, 31, 32, 35, 39], "fromvers": 2, "front": [2, 3, 27], "frontend": 18, "fsgroup": [2, 3], "fstype": [1, 2, 3], "fulfil": 31, "full": [2, 3, 12, 14, 15, 18, 19, 28, 30], "fullfil": 16, "fulli": [18, 24], "function": [2, 3, 4, 24, 32, 38], "further": 13, "futur": [2, 3, 8, 20, 21, 22], "g": [1, 2, 3, 4, 7, 15, 19, 39], "ga": 32, "garbag": 19, "gate": [1, 2, 3, 4], "gatewai": [2, 3, 4], "gather": 33, "gb": 14, "gc": 2, "gce": [2, 3], "gcloud": [15, 22], "gcp": [15, 22], "gcp_project": 15, "gcp_region": 15, "gcp_user": 15, "gcp_zone": 15, "gen": 14, "gener": [1, 2, 3, 4, 5, 11, 12, 13, 14, 15, 18, 19, 20, 30, 39], "get": [2, 3, 4, 7, 8, 9, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 24, 28, 29, 30, 35, 39], "gib": [2, 16], "git": [1, 2, 3, 4, 5, 11, 14, 19, 32, 39], "github": [7, 11, 14, 17, 20, 32, 35], "give": [2, 3, 11, 14, 15, 18, 32], "given": [1, 2, 3, 4, 21, 28, 31, 35], "gke": [9, 13, 14, 17, 23, 24, 28, 32], "glob": 2, "global": 2, "go": [1, 2, 11, 14, 16, 19, 24, 28, 39], "go_vers": 18, "goe": 35, "good": [11, 13, 16], "googl": 22, "googleapi": [16, 39], "gopath": 11, "gossipingpropertyfilesnitch": 3, "gracefulli": [2, 3], "grafana": [5, 14, 17], "grafana_password": 20, "grafana_serving_cert": 20, "grafana_us": 20, "grafanaimag": 5, "grant": 19, "granular": 2, "greatest": [1, 2, 3, 4], "group": [1, 2, 3, 4], "gt": [1, 2, 3, 4], "guarante": [2, 3, 4, 15, 31], "guid": [4, 12, 14, 15, 16, 18, 19, 21, 22, 24, 39], "guidanc": [21, 22], "h": [2, 14], "ha": [1, 2, 3, 4, 8, 9, 11, 13, 14, 15, 21, 24, 29, 32], "hack": 14, "hacki": 19, "hairpin": 34, "handl": [2, 3, 15], "happen": [2, 14, 30], "hard": 15, "hardwar": 16, "hash": [2, 3, 7, 22], "have": [1, 2, 3, 4, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 30, 31, 35, 38, 39], "head": 11, "header": [2, 3], "headless": 24, "healhcheck": 18, "healthcheck": 18, "healthcheck_rest": 18, "healthz": 39, "helm": [14, 17, 20, 32], "help": [8, 13, 14, 17, 35, 36], "here": [2, 3, 4, 7, 8, 9, 11, 14, 35, 39], "hi": 25, "high": 24, "higher": [2, 3, 4], "highest": [1, 2, 3, 4], "highli": [12, 14, 15], "histori": 8, "hit": [32, 35], "hold": [1, 2, 3, 4], "home": 11, "hop": 9, "host": [1, 2, 3, 11, 14, 18, 20, 24, 28, 32], "hostnam": [2, 3, 8, 9, 13, 24], "hostnetwork": [2, 38], "hour": [2, 3], "hourli": 2, "how": [2, 3, 6, 7, 8, 9, 11, 12, 13, 15, 16, 18, 20, 28, 29, 35, 38], "howev": [24, 31], "html": 12, "http": [1, 2, 3, 4, 5, 6, 7, 11, 12, 14, 16, 18, 20, 35, 39], "http_code": 20, "httpget": 39, "hub": 16, "human": [1, 2, 3, 4, 24], "i": [1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39], "i3": 12, "iam": 15, "icmp": 22, "id": [2, 3, 18, 21, 24, 28, 29], "ideal": 14, "identif": 2, "identifi": [2, 3, 4, 28, 29], "ie": 14, "ifnotpres": 16, "ignor": [1, 2, 3, 4, 28], "ill": 24, "imag": [1, 2, 3, 5, 11, 15, 19, 22, 30, 31, 32, 39], "imagepath": 1, "imagin": 11, "img": 11, "immedi": [1, 2, 3, 4, 31], "immut": [2, 3, 4, 13], "impact": 2, "implement": [1, 2, 3, 4, 11, 24], "impli": [2, 3, 4, 13], "implicit": [1, 2, 3, 4], "implicitli": [2, 3], "import": [2, 3, 4, 9, 14, 15, 32], "improv": 12, "inbound": 21, "incid": 25, "includ": [2, 3, 4, 11, 16, 22, 36, 38], "incom": [1, 2, 3, 4], "incompat": [19, 32, 39], "inconsequenti": 14, "incorpor": 13, "increas": [2, 14], "independ": [13, 24, 38], "index": [7, 8, 20, 24], "indic": [1, 2, 3, 4], "individu": [2, 3, 12, 15], "infer": [1, 2, 3, 4, 5], "infinit": 18, "info": [1, 2, 3, 4, 5, 18, 35], "inform": [2, 3, 14, 20, 21, 22, 24, 30, 36, 38], "infrastructur": [2, 3, 21, 22, 24], "ingress": [7, 9, 13, 22, 38], "ingress_ip": 20, "ingress_port": 20, "ingressclassnam": [2, 3, 4, 20], "inherit": 3, "initcontain": [2, 3, 19], "initi": [2, 3, 9, 19, 24], "initiatornam": [2, 3], "inject": 15, "insecur": 2, "insecuredisableauthor": 2, "insecureenableanonymousaccess": 4, "insecureenablehttp": 2, "insid": [2, 3, 4, 12, 14, 15, 27], "inspect": 11, "instal": [2, 3, 4, 11, 14, 17, 18, 19, 20, 21, 22, 24, 35, 37, 39], "instanc": [1, 2, 3, 4, 5, 14, 15, 16, 18, 19, 20, 21, 22, 24, 31], "instance_numb": 14, "instancetyp": 12, "instead": [2, 3, 8, 14, 38], "instruct": [12, 14, 15, 16, 19, 21], "integ": [1, 2, 3, 4, 5], "integr": [2, 3, 8, 11, 17, 24], "intend": [2, 3, 4], "intens": [2, 29], "inter": [2, 3, 13, 23, 24], "interact": [14, 27, 32], "interconnect": [13, 21, 22, 23], "interest": 16, "interfac": [2, 3, 4, 15, 22], "intern": [1, 2, 3, 4, 5, 9, 13, 16, 18], "internal_ip": 20, "internalip": 20, "internaltrafficpolici": [2, 3, 13], "interpret": [1, 2, 3, 4], "interrupt": 31, "intersect": [1, 2, 3, 4], "interv": [2, 18], "intervent": 24, "introduc": [14, 20, 24, 31], "involv": 19, "io": [1, 2, 3, 4, 5, 6, 8, 9, 12, 13, 14, 20, 21, 24, 32, 35, 39], "ip": [2, 3, 7, 9, 13, 14, 16, 19, 20, 22, 24, 28, 34], "ip_addr": [2, 3], "ipaddress": 13, "ipv4": [21, 22], "iqn": [2, 3], "irq": 31, "iscsiinterfac": [2, 3], "isn": [1, 2, 3, 4, 16, 29], "isol": [2, 3, 14], "issu": [7, 9, 11, 17, 18, 19, 30, 32, 33, 35, 37, 39], "issuer": 14, "item": 20, "iter": [1, 2, 3, 4], "its": [1, 2, 3, 4, 9, 12, 14, 15, 18, 19, 21, 22, 24], "itself": [2, 3, 11, 16, 18, 27], "jan": 29, "job": [2, 14, 32], "join": [3, 24, 28], "jonesdl": [2, 3], "json": [2, 3, 4, 19, 24], "jsonpath": [7, 8, 9], "just": [1, 2, 3, 4, 9, 11, 12, 14, 15], "k8": [1, 2, 3, 4, 5, 16, 17, 18, 19, 26, 27, 28, 31], "kb": [24, 28], "keep": [11, 12, 15], "kei": [1, 2, 3, 4, 7, 8, 13, 14, 18, 24, 35], "kept": 14, "kernel": [31, 32], "keyr": [2, 3], "keyschema": 7, "keyspac": [2, 14, 18, 29, 30], "keytyp": 7, "kind": [1, 2, 3, 4, 5, 8, 13, 19, 20, 21, 24, 29, 31, 39], "know": 13, "known": [2, 3, 4, 21, 32, 33], "kube": 35, "kubebuild": 11, "kubeconfig": 35, "kubectl": [7, 8, 9, 12, 14, 15, 16, 18, 19, 20, 21, 22, 24, 27, 28, 29, 30, 31, 35], "kubelet": [2, 3, 12, 15, 31, 32], "kubeletconfig": 15, "kubeletextraconfig": 12, "kubernet": [2, 3, 4, 6, 7, 8, 12, 13, 16, 17, 19, 20, 35, 38], "kustom": 11, "l": [14, 16, 18, 19, 20, 29, 35], "label": [1, 12, 14, 15, 20, 24, 27, 28, 31], "labelselector": 24, "lack": 18, "land": [16, 31], "larg": [12, 35], "last": [1, 2, 3, 4, 11], "lasttransitiontim": [1, 2, 3, 4], "latenc": 13, "later": [12, 15], "latest": [1, 2, 3, 4, 5, 11, 12, 17, 32, 35], "latter": 9, "launch": [12, 15], "lb": 13, "leak": 8, "learn": [2, 3, 8, 9, 13, 21, 29, 36], "least": [2, 3, 11, 15, 16, 24, 31, 35], "leav": [2, 3, 24, 28, 31], "left": 30, "less": [11, 19, 20, 39], "lesson": 17, "let": [2, 3, 12, 15, 16, 18, 24, 35], "level": [2, 3, 14, 18], "lib": 18, "licens": 18, "life": [14, 28], "lifecycl": [2, 3, 11, 24], "lifetim": [2, 3], "light": [2, 3], "like": [2, 3, 4, 7, 9, 11, 14, 17, 18, 19, 20, 28, 31, 32, 35], "likelihood": 24, "limit": [14, 16, 18, 24, 29, 31], "line": [11, 21, 22, 24], "link": [2, 3, 11, 34], "linux": [14, 32], "list": [1, 2, 3, 4, 7, 11, 14, 15, 18, 19, 22, 29, 39], "listkind": [1, 2, 3, 4, 5], "listmapkei": [2, 3, 4], "listtyp": [2, 3, 4], "littl": 14, "live": [2, 3, 27], "livenessprob": 39, "ll": [12, 15, 29, 35], "load": [2, 3, 9, 13, 24, 27, 28], "loadbalanc": [9, 20], "loadbalancerclass": [2, 3, 13], "local": [1, 2, 3, 4, 7, 8, 9, 11, 20, 21, 24, 28], "localdc": 18, "localobjectrefer": [2, 3], "locat": [1, 2, 3, 4, 18, 22, 29, 35], "log": [2, 11, 14, 18, 30], "logger": 18, "logic": [2, 11, 13], "login": [2, 3], "loglevel": 18, "long": [2, 3, 9], "longer": [2, 3, 11, 14, 15, 24, 28], "look": [2, 3, 4, 9, 11, 14, 16, 19, 24, 35], "lookup": [1, 2, 3, 4, 19], "loop": [1, 11], "loopdeviceconfigur": 1, "lose": [11, 25], "lost": 26, "lot": 39, "lower": [2, 3, 4, 19], "lqejv3kdr5gx9m3xq2ynnq": 18, "lsetxattr": 35, "lt": [1, 2, 3, 4], "lun": [2, 3], "m": [2, 18], "ma": 16, "machin": [2, 3, 12, 14, 15, 20, 22, 35], "machineri": 24, "made": [2, 3, 11, 13, 32], "mai": [1, 2, 3, 4, 5, 8, 9, 13, 20, 24, 25, 27, 28, 30, 31, 32, 35, 39], "main": [14, 16, 18, 24], "maintain": [11, 32], "mainten": [26, 30], "make": [2, 3, 4, 7, 8, 9, 11, 14, 15, 16, 18, 19, 20, 24, 28, 29, 32, 35, 38, 39], "makefil": 11, "manag": [2, 3, 4, 13, 15, 17, 19, 21, 22, 28, 29, 31, 32, 35, 39], "managerid": 2, "mang": [2, 3], "mani": [2, 3, 4, 16, 20, 31, 35], "manifest": [14, 24, 39], "manual": [2, 3, 4, 7, 8, 14, 15, 19, 20, 22, 24, 29, 30, 35, 38, 39], "map": [1, 2, 3, 4, 18], "mark": [2, 3], "master": [2, 11, 32], "match": [1, 2, 3, 4, 15, 20, 31, 32], "matchexpress": 24, "matchlabel": [20, 24], "matchlabelkei": [1, 2, 3, 4], "matchlabelkeysinpodaffin": [1, 2, 3, 4], "matter": 20, "max": [2, 14, 24], "max_repair_ranges_in_parallel": 2, "maximum": [2, 3, 4, 12, 15], "md": [1, 2, 3, 4, 5], "mean": [1, 2, 3, 4, 14, 19], "meant": [2, 3], "mechan": 24, "medium": [2, 3], "meet": [1, 2, 3, 4, 24, 31], "megabyt": 2, "member": [2, 4, 9, 14, 16, 18, 19, 20, 24, 29, 30, 31], "memori": [2, 3, 14, 16, 24, 29, 31, 32], "mention": [9, 35], "merg": [1, 2, 3, 4, 7, 11, 13, 24, 29, 30, 32], "messag": [1, 2, 3, 4, 14, 18, 30], "met": [1, 2, 3, 4, 20, 24, 29], "metadata": [8, 9, 19, 20, 21, 24, 29, 31], "metal": [18, 20], "metav1": [2, 3, 4], "metric": [13, 14, 16], "mib": 2, "midnight": 2, "might": [2, 3, 13, 19, 28, 32], "migrat": [34, 39], "migratedir": 18, "migratemaxwaitschemaagr": 18, "migratetimeout": 18, "mikefarah": 35, "mini": 14, "minifi": 35, "minikub": [14, 16], "minim": [11, 16], "minimum": [2, 3, 4], "minor": 39, "minreadysecond": [2, 3], "minterminationgraceperiodsecond": [2, 3], "minut": [2, 3, 30], "mirror": [2, 3], "mismatchlabelkei": [1, 2, 3, 4], "mission": 18, "mistak": [2, 3], "mitig": 9, "mkdir": 11, "mktemp": [7, 8, 35, 39], "mnt": 18, "mode": [2, 3, 4, 12, 15, 18, 22, 26, 30, 35], "model": [1, 22], "modelregex": 1, "modif": 7, "modifi": [4, 11, 14, 15, 22, 30, 38], "modifyvolumestatu": [2, 3, 4], "moment": 2, "monitor": [2, 3, 4, 12, 15, 17, 24, 32], "month": 11, "monthli": 2, "more": [1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 20, 21, 22, 24, 28, 31, 35, 36, 38], "most": [1, 2, 3, 4, 5, 11, 12, 15, 16, 20, 24, 31], "mount": [2, 3, 12, 14, 15, 35], "mountconfigur": 1, "mountpath": [2, 3], "mountpoint": 1, "mountpropag": [2, 3], "mountpropagationnon": [2, 3], "move": [24, 28, 30, 31], "much": [16, 28], "multi": [17, 21, 22, 35], "multipl": [1, 2, 3, 4, 11, 13, 14, 18, 19, 23], "musiccollect": 7, "must": [1, 2, 3, 4, 11, 13, 14, 18, 24, 28, 30, 31, 32, 33, 36, 39], "must_gather_token": 35, "mutat": [2, 3, 4, 5, 39], "mutatingwebhookconfigur": 39, "mutual": [2, 3], "my": [2, 13, 18], "mydomain": 20, "mysql": [2, 3], "n": [2, 12, 14, 15, 16, 18, 19, 20, 24, 27, 28, 29, 30, 32, 35, 39], "n1": [15, 22], "name": [1, 2, 3, 4, 7, 8, 9, 11, 12, 14, 16, 18, 19, 20, 21, 22, 24, 28, 29, 30, 31, 35, 39], "nameregex": 1, "namespac": [1, 2, 3, 4, 9, 14, 16, 18, 19, 24, 31, 39], "namespace_with_broken_scyllaclust": 35, "nativ": [8, 14, 22], "natur": [24, 31], "navig": 11, "necessari": [2, 3, 12, 14, 15, 20, 21, 22, 24, 35], "need": [2, 3, 7, 8, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 24, 28, 29, 30, 31, 32, 35, 38, 39], "neg": [1, 2, 3, 4], "network": [3, 4, 7, 8, 9, 11, 13, 17, 23, 28, 31, 38], "networktopologystrategi": 14, "never": [11, 39], "new": [2, 3, 4, 11, 14, 15, 17, 18, 19, 20, 21, 24, 28, 30, 31, 32, 39], "new_replication_factor": 14, "newli": [2, 3, 19], "next": [18, 30], "nightli": 30, "nil": [2, 3], "node": [1, 4, 7, 8, 10, 14, 16, 17, 18, 19, 20, 27, 29, 30], "nodeaffin": 24, "nodeconfig": [0, 6, 12, 15, 31], "nodeconfiglist": 1, "nodegroup": [12, 21], "nodepool": 15, "nodepublishvolum": [2, 3], "nodeselector": [14, 31], "nodeselectorterm": 24, "nodeservic": [13, 24], "nodetool": [24, 28], "nodeunpublishvolum": [2, 3], "noexecut": [1, 2, 3, 4], "non": [1, 2, 3, 4, 21, 24, 30], "none": [2, 3, 9, 16, 19, 28], "nor": 7, "normal": [2, 3, 24, 28], "noschedul": [1, 2, 3, 4, 12, 15, 24], "notabl": 24, "note": [2, 3, 4, 8, 14, 18, 20, 39], "noth": [2, 3, 19], "notic": [2, 3, 16, 20], "notin": [1, 2, 3, 4], "now": [2, 7, 11, 12, 14, 15, 18, 19, 21, 22, 24], "nr": [2, 14, 24], "ntf": [2, 3], "null": [1, 2, 3, 4, 20], "num": [14, 15, 18, 22], "num_job": 14, "number": [2, 3, 11, 14, 39], "numretri": 2, "nutshel": 11, "nvme": [12, 15], "o": [7, 8, 9, 14, 19, 20, 29, 32, 35], "object": [1, 2, 3, 4, 5, 13, 14, 20, 24, 39], "observ": [1, 2, 3, 4, 5, 16, 30], "observedgener": [1, 2, 3, 4, 5], "obtain": [2, 3, 15], "obviou": 11, "octal": [2, 3], "off": [1, 11, 14, 27, 30, 32, 39], "offici": [19, 32], "often": [2, 20, 38], "ok": 14, "old": [19, 28, 39], "older": [2, 3], "omit": [2, 3, 4, 21], "omitempti": [2, 3, 4], "onc": [2, 3, 4, 11, 12, 14, 15, 16, 18, 21, 22, 30, 39], "ondelet": 30, "one": [1, 2, 3, 4, 9, 11, 13, 14, 16, 18, 19, 22, 24, 25, 28, 30, 35, 39], "ones": [1, 2, 3, 4, 13, 21, 39], "ongo": 2, "onli": [1, 2, 3, 4, 7, 9, 12, 14, 19, 21, 22, 24, 30, 31, 32, 35, 39], "only_rmw_uses_lwt": 14, "onto": [1, 2, 3, 4], "op": [1, 2, 3, 4, 14, 19, 24], "open": [11, 13, 14, 17, 18], "openstack": [2, 3], "oper": [1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 18, 19, 24, 25, 27, 28, 30, 31, 32, 35, 36, 38], "opt": 8, "optim": [1, 2, 12, 15, 31], "option": [1, 4, 7, 8, 12, 14, 15, 16, 18, 24, 31, 35], "optmiz": 31, "order": [2, 3, 11, 13, 14, 15, 18, 24, 39], "organ": 4, "origin": [11, 24], "orphan": [2, 3], "other": [1, 2, 3, 4, 7, 9, 11, 13, 15, 16, 17, 18, 20, 21, 22, 24, 28, 31, 32, 35], "otherdc": 2, "otherwis": [1, 2, 3, 4, 11, 20, 21, 32], "our": [7, 9, 14, 19, 24, 31, 32, 35, 36, 39], "out": [1, 2, 3, 4, 6, 7, 17, 19, 24, 30, 31, 39], "output": [2, 3, 7, 11, 14, 18, 19, 22, 24, 29], "outsid": [9, 13, 20], "over": [1, 2, 3, 4, 8, 12, 15, 24, 28, 30], "overal": 2, "overlap": [21, 22], "overrid": [2, 3, 14], "overview": [2, 3, 33], "overwrit": 16, "overwritten": 3, "own": [2, 3, 5, 12, 15, 16, 24, 28], "owner": [2, 3, 4], "ownerrefer": 19, "p": [9, 11, 14, 15, 19, 24, 29, 30, 39], "packet": [20, 31], "page": [8, 9, 13, 22, 39], "paid": 36, "pair": [1, 2, 3, 4, 13, 14], "paragraph": [7, 8], "parallel": [2, 29, 30], "paramet": [2, 3, 24], "part": [2, 9, 31], "parti": [2, 3, 4, 20], "particular": [1, 2, 3, 4, 9, 13, 14, 16, 24, 30, 32], "partit": [2, 3], "pass": [1, 2, 3, 11, 13, 15, 32, 38], "passthrough": 20, "password": [7, 8, 14, 18, 20], "passwordauthent": [8, 14], "patch": [1, 2, 3, 4, 9, 19, 24, 29, 30, 39], "patchmergekei": [2, 3, 4], "patchstrategi": [2, 3, 4], "path": [1, 2, 3, 4, 11, 14, 19, 24, 35, 39], "pattern": [2, 14, 16, 35], "pcx": 21, "pd": [2, 3, 15, 22], "pdb": 15, "pdid": [2, 3], "pdname": [2, 3], "peer": 24, "pem": [2, 3], "pend": [2, 3, 4, 28], "per": [1, 2, 3, 4, 9, 14], "percent": [2, 3], "perform": [2, 3, 12, 14, 15, 17, 25, 32], "perftun": 31, "period": [1, 2, 3, 4, 19], "perman": 8, "permiss": [2, 3, 15, 18, 19], "permit": 22, "persist": [2, 3, 4, 15, 18], "persistentvolum": [2, 3, 4, 12, 14, 15], "persistentvolumeclaim": 4, "persistentvolumeclaimvolumesourc": [2, 3], "photon": [2, 3], "photoncontrol": [2, 3], "pick": [14, 24], "pid": 18, "piec": 32, "pin": [2, 31, 39], "placement": [24, 31], "plain": 14, "plaintextauthprovid": 8, "plane": [38, 39], "platform": [4, 13, 14, 20, 21, 22, 23], "pleas": [2, 7, 8, 11, 16, 31, 35, 38, 39], "plugin": [2, 3, 35], "pluralnam": [1, 2, 3, 4, 5], "pod": [1, 2, 3, 4, 8, 9, 12, 13, 14, 15, 16, 18, 19, 20, 22, 24, 25, 27, 28, 30, 31, 35, 38], "podantiaffin": 24, "podman": 8, "podreadinessg": [2, 3], "podspec": [2, 3, 4], "point": [1, 2, 3, 4, 8, 9, 13, 15, 19, 20, 24, 30, 35], "polici": [2, 3, 11, 12, 13, 15, 16, 31], "poll": 2, "pollinterv": [2, 18], "pool": [2, 3, 12, 15, 22, 24, 28, 31], "popul": [2, 3, 4, 14], "port": [2, 3, 8, 9, 14, 16, 19, 20, 21, 28, 29, 39], "portal": [2, 3], "portworx": [2, 3], "possibl": [2, 3, 28], "post": 29, "potenti": [2, 3], "power": [11, 31], "pr": 11, "pre": [2, 3, 31], "preconfigur": 21, "predefin": [21, 22, 35], "predict": 18, "prefer": [12, 15, 21, 22], "prefer_loc": 14, "prefernoschedul": [1, 2, 3, 4], "prefix": 11, "prepar": [11, 23, 24], "present": [2, 3, 7, 18, 21], "preserv": [2, 3, 4, 39], "press": 9, "prevent": [2, 3], "previou": [2, 3, 4, 19, 30], "print": [14, 30], "printf": 39, "prior": 18, "prioriti": 22, "privat": 21, "privileg": [2, 3], "proactiv": [2, 3], "probe": [27, 39], "procedur": [2, 17, 24, 28, 29, 30, 39], "process": [14, 15, 21, 22, 24, 27, 30, 31, 39], "prod": 18, "produc": [2, 3, 4], "product": [14, 18, 19, 20, 24, 31], "profil": [2, 3], "programmat": [2, 3, 4], "progress": [2, 3, 4, 9, 18, 20, 24, 29], "project": [15, 17], "prometh": 16, "prometheu": [5, 14, 16, 17, 18], "prometheusscrapeinterv": 18, "prometheusvers": 5, "promisc": 34, "prompt": 11, "prone": 14, "propag": [2, 3, 13, 14, 19, 24], "proper": 14, "properli": [20, 30, 38, 39], "properti": [1, 2, 3, 4, 5, 11, 13, 14], "propos": 24, "proprietari": 18, "protect": [2, 3], "protectiondomain": [2, 3], "protobuf": [2, 3, 4], "protocol": [7, 8, 9, 13, 21], "provid": [2, 3, 6, 7, 9, 12, 13, 14, 15, 16, 20, 21, 24, 31, 36, 38], "provis": [2, 3, 7, 12, 13, 14, 15, 16, 24], "provision": [2, 3, 4, 21, 22, 24], "provisionedthroughput": 7, "public": 13, "publicroutet": 21, "publish": [2, 3, 32], "pull": [2, 3, 16, 35, 39], "pullpolici": 16, "pure": 14, "purpos": [2, 3, 4, 5, 15, 35], "push": 11, "put": [1, 11], "pvc": [2, 3, 4, 25], "pwd": 35, "py": 14, "python": [14, 31], "qa": 32, "qo": 31, "qualifi": [2, 3], "qualifiednamefmt": [2, 3, 4], "qualiti": 32, "queri": [1, 2, 3, 4], "queryabl": 4, "question": 19, "quick": 7, "quickli": 11, "quota": 31, "r": [7, 12], "rack": [9, 14, 16, 17, 18, 24, 28, 29, 30, 31], "rack_nam": 14, "rackcount": 2, "rackdc": [2, 14], "rackspec": [2, 3], "rackstatu": 3, "rado": [2, 3], "raft": 29, "raid": [12, 15], "raid0": [12, 15], "raidconfigur": 1, "random": 24, "rang": [1, 2, 3, 4, 7, 20, 21, 22], "rate": [2, 14], "ratelimit": 2, "rather": [2, 3, 32], "raw": [15, 35], "rbac": 15, "rbduser": [2, 3], "rc": 32, "re": [9, 11, 19, 39], "reach": [9, 13, 18, 20, 30, 38], "reachabl": [2, 3, 4, 13, 20], "read": [2, 3, 11, 12, 14, 15, 16, 19], "readabl": [1, 2, 3, 4, 21], "readcapacityunit": 7, "readi": [2, 3, 9, 11, 14, 16, 18, 19, 21, 22, 27, 28, 30, 39], "readinessprob": 39, "readm": [2, 3], "readonli": [2, 3], "readymemb": 2, "readynod": 3, "readyz": 39, "real": [2, 3, 20], "reason": [1, 2, 3, 4, 8, 16], "rebas": 11, "reboot": 31, "receiv": 31, "recent": [1, 2, 3, 4, 5, 11], "recipi": [2, 3], "recogn": [1, 2, 3, 4, 5], "recommend": [8, 14, 20, 24, 31, 32, 39], "reconcil": [2, 3, 11, 20], "reconfigur": 38, "reconstruct": [2, 3], "record": [2, 3, 4, 9, 13, 20], "recov": 30, "recovervolumeexpansionfailur": [2, 3, 4], "recreat": [28, 39], "recur": 18, "redeploy": 3, "refer": [2, 3, 4, 7, 8, 12, 14, 15, 16, 17, 19, 20, 21, 22, 24, 29, 32, 39], "referenc": [2, 3, 4], "referencegr": [2, 3, 4], "reflect": [2, 3, 4], "refus": 30, "regard": [13, 19, 22, 24], "regex": [2, 3, 4], "region": [15, 21, 22, 24], "regist": [2, 3, 18, 19, 29], "registri": [2, 3, 27], "regular": [1, 2, 3, 4, 14, 18], "reject": [1, 2, 3, 4, 5], "rel": [1, 2, 3, 4], "relat": [1, 2, 3, 4, 13, 17, 24, 35], "relationship": [1, 2, 3, 4], "releas": [8, 17, 39], "release_nam": 39, "relev": 11, "reli": [2, 3], "reliabl": 13, "rememb": [11, 14], "remot": [4, 7], "remov": [2, 3, 11, 14, 16, 19, 24, 25, 27, 30, 35, 39], "render": 5, "reorder": 11, "rep": [2, 3, 4], "repair": [15, 17, 18, 28, 29], "replac": [1, 2, 3, 4, 9, 14, 17, 19, 20, 24, 26, 29, 35, 39], "replic": [2, 4, 14], "replica": [2, 30], "replicaset": 16, "replication_factor": 14, "replicationfactor": 18, "repo": [2, 3, 11, 16, 19, 39], "report": [17, 36], "repositori": [2, 3, 11, 14, 39], "repres": [1, 2, 3, 4, 5, 14, 24], "represent": [1, 2, 3, 4, 5], "request": [1, 5, 16, 19, 20, 24, 31, 35, 36], "requir": [1, 2, 3, 4, 11, 12, 13, 14, 15, 21, 22, 24, 29, 31, 32, 34, 36, 38, 39], "requiredduringschedul": [1, 2, 3, 4], "requiredduringschedulingignoredduringexecut": 24, "resembl": [14, 22], "reset": [2, 3, 4], "resid": [13, 22], "resolv": [13, 18, 30], "resourc": [1, 5, 14, 18, 19, 20, 21, 22, 24, 25, 29, 31, 38, 39], "resourceclaim": [2, 3, 4], "respect": [1, 2, 3, 4, 15], "rest": [1, 2, 3, 4, 5, 6, 14, 18, 35], "restart": [3, 14, 16, 18, 19, 24, 28, 29, 30, 39], "restor": [2, 3, 26, 30, 39], "restore_upgrade_strategi": 30, "restrict": [2, 3, 4], "result": [2, 3, 19], "resum": 2, "retainkei": 39, "retent": [2, 18], "retri": [2, 18, 30], "retriev": [4, 14, 22, 35], "return": [21, 22, 27], "revert": 1, "review": 35, "revis": [2, 3, 20], "rewrit": 16, "rf": 2, "rfc3339": 2, "rhwqx": 16, "ring": [2, 3, 24], "risk": [5, 11], "rm": [8, 35], "ro": [8, 35], "role": [7, 12, 14, 15, 19, 24], "roll": [2, 3, 14, 16, 17, 19, 24, 29, 30, 39], "rollout": [2, 3, 4, 14, 19, 20, 39], "root": [2, 3, 8, 30], "rotat": [2, 3], "rout": [3, 13, 20], "routabl": 13, "row": 2, "rule": [1, 2, 3, 4, 19, 21, 38], "run": [1, 2, 3, 4, 5, 7, 8, 11, 12, 15, 16, 17, 18, 19, 20, 24, 28, 29, 30, 31, 39], "runtim": 35, "s3": [2, 18, 29], "sai": 11, "said": 35, "salted_hash": 7, "same": [1, 2, 3, 4, 9, 12, 13, 14, 15, 16, 18, 19, 24, 30, 31, 32], "satisfi": [1, 2, 3, 4], "save": [11, 14, 19, 21, 24, 30, 35, 39], "sc": [7, 8, 9], "scale": [17, 30, 35], "scenario": 13, "schedul": [1, 2, 3, 4], "schema": [1, 2, 3, 4, 5, 7, 30], "scheme": [9, 13, 39], "scope": [1, 2, 3, 4, 5], "scrape": [4, 16], "scratch": [32, 39], "script": [2, 3, 7, 14, 15, 31], "sctool": [18, 29], "sctp": 22, "scyladb": 24, "scylla": [6, 7, 8, 9, 13, 19, 20, 21, 22, 25, 27, 29, 31, 32, 35, 36, 38], "scylla_manag": 18, "scylla_vers": 14, "scyllaagentconfig": 2, "scyllaarg": 2, "scyllaclus": 24, "scyllaclust": [0, 6, 7, 9, 16, 17, 18, 19, 20, 24, 25, 29, 30, 31, 35, 39], "scyllacluster_nam": 7, "scyllaclusterlist": 2, "scyllaconfig": 2, "scylladb": [6, 7, 8, 11, 13, 14, 16, 17, 19, 20, 29, 31, 32, 35, 36, 39], "scylladb_config": 8, "scylladb_discovery_ep": 8, "scylladb_ep": 7, "scylladbdatacent": [0, 6], "scylladbdatacenterlist": 3, "scylladbmonitor": [0, 6], "scylladbmonitoringlist": 4, "scylladbutilsimag": 5, "scyllaimag": 16, "scyllaoperatorconfig": [0, 6], "scyllaoperatorconfiglist": 5, "scyllautilsimag": 5, "sda": [2, 3], "sda1": [2, 3], "sdd": [12, 15], "sdn": [2, 38], "search": 16, "sec": 14, "second": [2, 3, 14], "secondari": 22, "secret": [4, 8, 14, 16, 20, 24, 35], "secretfil": [2, 3], "secretnam": [2, 3], "section": [7, 12, 13, 14, 15, 21, 22, 35, 36], "secur": [2, 3, 8, 13, 14], "sed": [7, 15, 19, 39], "see": [2, 3, 4, 7, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 29, 31], "seed": [2, 3], "segmentsperrepair": 18, "select": [1, 2, 3, 4, 7, 9, 11, 13, 14, 24], "selector": [1, 13, 14, 39], "self": [4, 14, 16], "selinux": 35, "semant": [2, 3, 30], "send": [21, 35], "sensit": [2, 3, 35], "sent": 2, "sep": 18, "separ": [2, 3, 11, 12, 13, 15, 19, 21, 31], "sequenti": 19, "serivceaccount": [2, 3], "serv": [1, 2, 3, 4, 5, 7, 8, 13, 14, 16, 20, 21, 22, 24, 38], "server": [1, 2, 3, 4, 5, 12, 14, 15, 18, 20, 24, 39], "servic": [2, 3, 4, 7, 8, 9, 14, 16, 19, 20, 22, 27, 28, 38], "serviceaccount": 35, "servicemonitor": 16, "servingcertsecretnam": 4, "session": [2, 3, 14], "set": [1, 2, 3, 4, 5, 7, 8, 9, 11, 13, 16, 17, 18, 20, 24, 29, 30, 31, 34, 35], "setup": [1, 2, 3, 4, 13, 14, 20, 21, 22, 24, 38], "sever": [9, 12, 13, 21, 22, 38], "sh": [11, 12, 15], "sha": 32, "shard": 2, "shardfailedsegmentsmax": 18, "shardingignoremsbbit": 18, "shardparallelmax": 18, "share": [2, 3, 21, 22, 31], "sharenam": [2, 3], "sheer": 24, "shell": [8, 14, 19], "ship": 32, "short": [11, 19], "shortli": 18, "should": [1, 2, 3, 4, 5, 8, 11, 13, 14, 16, 18, 19, 20, 21, 22, 24, 28, 30, 31], "shouldn": [2, 3, 19, 28], "show": [7, 8, 11, 14, 30, 32], "side": [12, 15, 20, 24, 39], "sidecar": [11, 14, 16, 19, 39], "sig": [1, 2, 3, 4, 5], "sign": [2, 3, 4, 14, 16, 19], "signer": [2, 3], "signernam": [2, 3], "similar": [20, 21, 24, 35], "similarli": [2, 3, 16, 35], "simpl": [11, 13, 14, 16, 18, 19, 27, 28, 30, 39], "simpli": [11, 14, 16, 19, 27, 30], "simplic": [21, 22, 24], "simplifi": 8, "simultan": [2, 3], "sinc": [13, 24], "sing": 32, "singl": [1, 2, 3, 4, 11, 14, 16, 18, 24], "singularnam": [1, 2, 3, 4, 5], "situat": 32, "size": [1, 2, 3, 15, 22, 28, 29], "sizelimit": [2, 3], "skip": [20, 35], "slack": 19, "slight": 35, "slightli": [2, 20], "sm_20240105115931utc": 29, "small": [2, 14, 18], "smalltablethreshold": 2, "snapshot": [2, 3, 4, 29, 30], "snapshot_tag": 29, "snapshotparallel": 2, "sni": 20, "so": [1, 2, 3, 4, 8, 9, 11, 13, 14, 15, 16, 20, 21, 22, 24, 31, 39], "so_data_20201228135002utc": 30, "so_system_20201228135002utc": 30, "softwar": 18, "solv": [9, 19, 39], "some": [1, 2, 3, 4, 9, 11, 13, 14, 16, 18, 28, 32, 35, 38], "someth": [14, 18, 27, 35], "sometim": [11, 14, 35], "somewher": 19, "songtitl": 7, "sourc": [4, 13, 16, 17, 18, 21, 22, 29, 39], "sourcetyp": [2, 3], "space": 31, "spawn": 18, "spbm": [2, 3], "spec": [7, 8, 9, 13, 14, 16, 18, 19, 20, 24, 29, 30, 31, 39], "special": 31, "specif": [8, 9, 13, 14, 16, 21, 22, 24, 31, 38, 39], "specifi": [1, 2, 3, 4, 13, 14, 16, 21, 24], "speed": 11, "spent": 2, "spin": [16, 18], "spot": 18, "spread": 31, "squash": 11, "src": 11, "ssd": [15, 22], "ssh": [12, 18, 34], "ssl": [2, 3, 8, 18, 20], "ssl_transport_factori": 8, "sslenabl": [2, 3], "ssltimeout": 18, "sstabl": 30, "st": [19, 39], "stabl": [9, 14, 16, 39], "stack": [12, 15, 17, 20], "stackdriv": 15, "stage": [19, 30], "stai": 27, "stale": 3, "stand": [2, 3], "standard": [2, 6, 7, 15, 22, 38], "start": [2, 3, 9, 11, 12, 14, 18, 21, 29, 30, 31], "startdat": 2, "startup": [2, 3, 24], "stash": 11, "state": [1, 2, 3, 4, 5, 14, 16, 18, 20, 24, 28, 30, 35], "statefulset": [14, 16, 19, 20, 30, 39], "static": [1, 2, 3, 4, 9, 12, 15, 19, 31], "statu": [9, 13, 14, 16, 17, 18, 19, 20, 21, 24, 28, 29, 30, 39], "stderr": 18, "stdout": 14, "step": [12, 14, 15, 16, 18, 19, 20, 21, 22, 24, 29, 35, 39], "still": [2, 3, 4, 35], "stop": [2, 3], "storag": [1, 5, 12, 14, 15, 16, 20, 24, 29, 31, 39], "storageclass": [2, 3, 4, 24], "storageclass_xf": 15, "storageclassnam": [2, 3, 4, 20, 24], "storagemod": [2, 3], "storagepolicyid": [2, 3], "storagepolicynam": [2, 3], "storagepool": [2, 3], "store": [2, 3, 4, 8, 28, 29], "strateg": [1, 2, 3, 4], "stream": 28, "stress": [12, 15], "string": [1, 2, 3, 4, 5], "stringdata": 24, "strip": [2, 3], "strongli": 8, "struct": [2, 3, 4], "stuck": 30, "style": 6, "subdirectori": [2, 3], "subject": [11, 31], "submit": [1, 2, 3, 4, 5], "subnet": [13, 21], "subnetwork": 22, "subpath": [2, 3], "subpathexpr": [2, 3], "subset": [1, 2, 3, 4, 9, 24, 35], "succe": [2, 3, 4, 27], "success": 29, "successfulli": [14, 20], "sudo": 34, "suffici": 13, "suggest": 29, "suit": [32, 38], "sum": [1, 2, 3, 4], "summari": 11, "superset": 13, "suppli": [2, 3, 35], "support": [1, 2, 3, 4, 11, 13, 14, 16, 17, 18, 24, 29, 30, 35, 38, 39], "suppos": 31, "sure": [2, 7, 9, 11, 14, 15, 16, 18, 19, 24, 28, 29, 32, 35, 38, 39], "suspect": 32, "svc": [9, 14, 18, 19, 20, 27, 28], "switch": 31, "symlink": [1, 2, 3, 39], "sync": [24, 28], "synchron": 18, "syntax": 2, "sysctl": [2, 14, 24], "system": [1, 2, 3, 4, 15, 19, 30, 39], "system_auth": [7, 14, 18], "system_distribut": 18, "system_schema": [29, 30], "system_trac": 18, "systemconfig": 15, "systemsnapshottag": 2, "t": [1, 2, 3, 4, 7, 11, 12, 13, 14, 15, 16, 18, 19, 28, 29, 31, 32, 35, 38, 39], "tab": 11, "tabl": [2, 7, 32], "table_prefix_": 2, "tabledescript": 7, "tablenam": 7, "tag": [2, 16, 19, 29, 30, 32, 39], "tailor": [21, 22], "taint": [1, 2, 3, 4, 12, 15], "take": [2, 12, 14, 15, 28, 29, 30, 31, 35], "taken": [1, 2, 3, 4, 13, 29, 30], "talk": [9, 13, 18, 31, 35], "target": [1, 2, 3, 18, 21, 29, 31, 39], "targetport": [2, 3], "targetwwn": [2, 3], "task": [2, 12, 14, 17, 24, 29], "tcp": [2, 3, 9, 13, 16, 19, 22, 28], "td05v9evu3b8": 21, "team": 11, "tell": 11, "templat": [2, 3, 4, 7, 14, 19, 20, 24, 39], "temporari": [2, 3], "temporarili": 11, "tenant": [2, 3], "term": [1, 2, 3, 4], "termin": [2, 3, 7], "test": [5, 11, 18, 20, 32, 38], "text": 8, "than": [2, 3, 4, 11, 13, 14, 19, 28, 35], "thei": [2, 3, 4, 13, 14, 18, 24, 35], "them": [1, 2, 3, 4, 8, 9, 11, 12, 13, 14, 15, 16, 19, 20, 21, 24, 31, 35, 39], "thi": [1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 27, 28, 29, 30, 31, 32, 34, 35, 38, 39], "thickprovis": [2, 3], "thing": [2, 3, 14], "thinprovis": [2, 3], "third": [2, 3, 4, 20], "those": [1, 2, 3, 4, 12, 14, 15, 31], "thread": 14, "three": [2, 3, 4, 11, 16, 18], "threshold": 2, "throttl": [14, 31], "through": [1, 2, 3, 4, 9, 13, 14, 16, 21, 22, 24], "throughout": [21, 22, 24], "throughput": [7, 14], "ti": [2, 3, 18, 28, 29], "tib": 2, "tier": 12, "tighter": [2, 3], "time": [1, 2, 3, 4, 7, 9, 11, 16, 18, 19, 28, 29, 32], "timeout": [15, 16, 18, 19, 20], "timezon": 2, "tip": [2, 3], "tl": [2, 3, 8, 20], "tlscafil": 18, "tlscertfil": 18, "tlskeyfil": 18, "tmp": 14, "tmpdir": 39, "todo": [2, 3], "togeth": [2, 3, 12, 15], "token": [2, 3, 7, 24, 28, 35], "tokenawar": 18, "toler": [12, 24], "tolerationsecond": [1, 2, 3, 4], "too": [2, 3], "tool": [4, 5, 11, 12, 20, 21, 22, 24, 35, 36], "top": 11, "topic": 17, "topologi": [2, 3, 24], "topologykei": [1, 2, 3, 4, 24], "topologyselectorterm": [1, 2, 3, 4], "total": [2, 3, 14], "tovers": 2, "trace": 30, "track": [2, 3, 11, 14, 18], "traffic": [2, 3, 13, 21, 22, 38], "transit": [1, 2, 3, 4], "transport": [2, 3], "treat": [1, 2, 3, 4], "tree": [2, 3], "tri": [12, 15], "trick": 12, "trigger": 32, "tripl": [1, 2, 3, 4], "troubleshoot": 33, "true": [1, 2, 3, 4, 5, 8, 9, 12, 14, 16, 18, 20, 24, 29, 39], "trustbundl": [2, 3], "try": [1, 2, 3, 4, 31, 35], "tune": [1, 12, 15, 17, 32], "tunedcontain": 1, "tunednod": 1, "turn": [1, 7, 27, 30, 39], "tutori": 18, "tweak": [13, 14], "two": [2, 3, 4, 11, 13, 16, 18, 19, 21, 22, 24, 29, 30, 31, 39], "type": [9, 12, 15, 16, 19, 20, 21, 22, 24, 28, 29, 30, 31, 32], "typic": [2, 3], "u": [8, 11, 12, 14, 15, 16, 18, 19, 21, 22, 24, 27, 28, 29, 30, 31, 36], "ubuntu": 32, "ubuntu_containerd": [15, 22], "udp": 22, "ui": 4, "uid": [2, 3, 19], "un": [24, 28], "unbound": [2, 3, 4], "unchang": [2, 3, 4], "undefin": [2, 3], "under": [1, 2, 16, 18, 27, 30], "underli": [2, 3, 4, 30, 31], "understand": [11, 19, 36], "understood": 24, "undesir": 24, "undo": 31, "unencrypt": 8, "unexpectedli": 3, "unfortun": 38, "unifi": [2, 3], "uninstal": 16, "union": [1, 2, 3, 4], "uniqu": [2, 3, 14, 24], "unit": [2, 11], "univers": 17, "unknown": [1, 2, 3, 4], "unless": [2, 3, 8, 20, 35], "unlist": [2, 3], "unmodifi": 9, "unnecessari": [8, 11], "unreach": 24, "unrecogn": [1, 2, 3, 4, 5], "unrel": [2, 3, 24], "unschedul": [18, 25], "unset": [2, 3], "unspecifi": [2, 3, 4], "unstructur": 4, "unsupport": [1, 3, 5], "unsupportedbashtoolsimageoverrid": 5, "unsupportedgrafanaimageoverrid": 5, "unsupportedopt": 1, "unsupportedprometheusversionoverrid": 5, "untar": 39, "untardir": 39, "until": [2, 3, 4, 14, 16, 19, 29, 30, 39], "unwind": 11, "up": [1, 2, 3, 7, 8, 9, 11, 13, 16, 17, 19, 20, 24, 28, 30, 31, 39], "updat": [1, 2, 3, 4, 5, 9, 14, 16, 18, 20, 22, 39], "updatednod": 3, "updatedvers": 3, "upgrad": [15, 16, 17, 19, 26, 32], "upgrade_image_in_pod_spec": 30, "upgradestrategi": 30, "upload": [2, 11], "uploadparallel": 2, "upon": [1, 2, 3, 4, 13, 21, 22], "upper": 3, "upsteam": [14, 16], "upstream": [2, 3], "uri": [2, 3], "url": [2, 3, 16], "us": [1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 28, 29, 30, 31, 32, 35, 38, 39], "usag": [2, 3, 14], "user": [2, 3, 4, 7, 8, 11, 14, 15, 17, 18, 19, 20, 27, 29, 30, 31, 35, 38, 39], "user_nam": 35, "usercert": 8, "usercertfil": 18, "userguid": 12, "userkei": 8, "userkeyfil": 18, "usernam": [8, 14, 20], "usual": [9, 12, 13, 15, 20, 32], "utc": [18, 29], "utf": [2, 3], "util": [5, 24], "uuid": [2, 3, 19], "v": [8, 11, 35], "v1": [0, 3, 6, 8, 13, 16, 18, 20, 24, 29, 31, 32], "v1alpha1": [0, 6, 19, 20, 31, 39], "v1alpha5": 21, "v2": 11, "v3": 11, "v4": 8, "valid": [1, 2, 3, 4, 8, 16, 18, 20, 30, 39], "validate_upgrad": 30, "validatingwebhookconfigur": 39, "validmastervers": 15, "valu": [1, 2, 3, 4, 5, 13, 14, 15, 16, 19, 21, 22, 24, 30], "var": [2, 3, 18], "var_nam": [2, 3], "variabl": [2, 3, 7, 8, 11, 24, 35], "variou": [13, 14], "ve": [11, 29], "vendor": [2, 3], "verb": 19, "veri": [11, 16, 19, 35, 39], "verifi": [11, 14, 24, 28], "version": [1, 2, 3, 4, 5, 13, 14, 15, 16, 17, 18, 20, 24, 26, 29, 31, 32, 39], "via": [13, 14, 16], "view": 35, "violat": [1, 2, 3, 4], "virtual": [9, 22], "visibl": 28, "visit": [9, 36], "vjm4m": 16, "vmdk": [2, 3], "volum": [4, 21, 22, 24, 35], "volumeattributesclass": [2, 3, 4], "volumeattributesclassnam": [2, 3, 4], "volumeclaimtempl": 20, "volumeid": [2, 3], "volumemod": [2, 3, 4], "volumenam": [2, 3, 4], "volumenamespac": [2, 3], "volumepath": [2, 3], "volumesnapshot": [2, 3, 4], "vsphere": [2, 3], "vx": 32, "w": 20, "w25jw": 18, "wa": [1, 2, 3, 4, 11, 14, 16, 18, 19, 21, 28, 29, 39], "wai": [2, 3, 9, 14, 15, 18, 19, 20, 35], "wait": [2, 3, 9, 11, 14, 16, 19, 24, 29, 30, 39], "walk": [14, 21, 22, 24], "want": [2, 3, 11, 12, 13, 14, 15, 16, 18, 21, 22, 29, 39], "wasn": 18, "watch": 18, "we": [1, 2, 3, 7, 11, 12, 13, 14, 15, 16, 18, 19, 20, 28, 29, 31, 32, 35, 38, 39], "web": [4, 15], "webhook": [14, 37, 39], "webinterfac": 20, "websit": 19, "week": 32, "weekli": [2, 18], "weight": [1, 2, 3, 4], "weightedpodaffinityterm": [1, 2, 3, 4], "welcom": 19, "well": [2, 3, 4, 11, 12, 14, 15, 18, 19, 20], "were": [4, 16], "west1": [15, 22], "wfjbw": 16, "what": [2, 3, 4, 11, 13, 14, 16, 18, 19, 20, 30, 35, 36], "when": [1, 2, 3, 4, 9, 11, 12, 13, 14, 15, 18, 19, 20, 22, 24, 26, 27, 29, 30, 31, 32, 35, 36, 38], "whenev": 11, "where": [1, 2, 3, 4, 7, 11, 12, 15, 19, 29, 30, 38], "whether": [2, 3, 4, 13, 16, 31, 35], "which": [1, 2, 3, 4, 5, 9, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 28, 29, 30, 31, 39], "whichev": 14, "while": [2, 3, 4, 7, 14, 32], "who": [2, 3], "whole": [19, 30], "whose": [1, 2, 3, 4, 14], "why": 11, "wide": [2, 3, 18], "wildcard": [1, 2, 3, 4, 20], "window": 11, "within": [2, 3, 13, 31, 35], "without": [4, 7, 11, 13, 15, 16, 20, 35], "won": [1, 12, 13, 31, 35], "word": [11, 24], "work": [2, 3, 6, 8, 11, 12, 15, 16, 19, 21, 22, 24, 31, 32], "workaround": 38, "workdir": 35, "workload": [21, 22, 31], "workspac": 35, "world": [2, 3], "worldwid": [2, 3], "worth": 11, "would": [2, 3, 11, 14, 18, 22, 28], "wouldn": 35, "write": [2, 3, 7, 11, 14], "writecapacityunit": 7, "writeisol": [2, 3, 14], "written": [2, 3], "wrong": 35, "wwid": [2, 3], "wwn": [2, 3], "x": [1, 2, 3, 4, 29, 32], "xarg": 39, "xf": [2, 3, 12, 15, 20, 24], "xqhkj0our8e6imdepm62hg": 18, "y": 32, "yaml": [2, 3, 8, 12, 14, 15, 16, 18, 19, 20, 21, 24, 35, 39], "yanniszark": 15, "you": [2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 28, 29, 30, 31, 35, 38, 39], "your": [2, 3, 5, 7, 8, 9, 12, 14, 15, 16, 18, 19, 20, 21, 22, 24, 25, 28, 29, 30, 31, 34, 35, 38, 39], "your_password": 8, "your_usernam": 8, "yourself": 11, "yq": 35, "z": [8, 12, 15, 32, 35], "zero": [1, 2, 3, 4, 14, 30], "zone": [1, 15, 17, 24]}, "titles": ["scylla.scylladb.com", "NodeConfig (scylla.scylladb.com/v1alpha1)", "ScyllaCluster (scylla.scylladb.com/v1)", "ScyllaDBDatacenter (scylla.scylladb.com/v1alpha1)", "ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)", "ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)", "API Reference", "Using Alternator (DynamoDB)", "Using CQL", "Discovering ScyllaDB Nodes", "Using ScyllaDB APIs", "Contributing to Scylla Operator", "Deploying Scylla on EKS", "Exposing ScyllaCluster", "Deploying Scylla on a Kubernetes Cluster", "Deploying Scylla on GKE", "Deploying Scylla stack using Helm Charts", "Scylla Operator Documentation", "Deploying Scylla Manager on a Kubernetes Cluster", "Version migrations", "Monitoring", "Build multiple Amazon EKS clusters with inter-Kubernetes networking", "Build multiple GKE clusters with inter-Kubernetes networking", "Deploying multi-datacenter ScyllaDB clusters in Kubernetes", "Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters", "Automatic cleanup and replacement in case when k8s node is lost", "Node operations using Scylla Operator", "Maintenance mode", "Replacing a Scylla node", "Restore from backup", "Upgrading version of Scylla", "Performance tuning", "Releases", "Support", "Known issues", "Gathering data with must-gather", "Support overview", "Troubleshooting", "Troubleshooting installation issues", "Upgrade of Scylla Operator"], "titleterms": {"0": [19, 39], "1": 39, "2": 39, "3": [19, 39], "In": 13, "about": 36, "access": [12, 14, 15, 20], "add": 11, "admin": 15, "affin": 1, "agent": 14, "agentresourc": 2, "agentvolumemount": 2, "aka": 8, "altern": [2, 7, 14], "alternatoropt": 3, "amazon": 21, "an": [12, 20], "annot": [2, 3, 4], "api": [6, 10], "architectur": 18, "auth": 14, "authent": [4, 8], "author": 8, "autom": 32, "automat": 25, "avail": 32, "aw": 7, "awselasticblockstor": [2, 3], "azuredisk": [2, 3], "azurefil": [2, 3], "backport": 32, "backup": [2, 29], "behind": 9, "benchmark": 14, "boot": 34, "boundari": 9, "branch": 11, "broadcast": 13, "broadcastopt": [2, 3], "build": [11, 21, 22], "case": 25, "cassandra": 14, "cd": 32, "cephf": [2, 3], "cert": [14, 16], "chart": 16, "ci": 32, "cinder": [2, 3], "claim": [2, 3, 4], "clean": [14, 18], "cleanup": [16, 25], "cli": 7, "client": [2, 3, 13], "clone": 11, "cluster": [9, 12, 13, 14, 15, 18, 21, 22, 23, 24, 35, 36, 38], "clusterip": 13, "clustertrustbundl": [2, 3], "cni": 38, "collect": 35, "com": [0, 1, 2, 3, 4, 5], "commit": 11, "compon": 4, "condit": [1, 2, 3, 4], "configmap": [2, 3], "configur": [12, 14, 15, 21, 22], "connect": 20, "contain": 14, "context": 24, "contribut": 11, "control": 16, "cql": [2, 3, 8], "cqlsh": 8, "creat": [11, 12, 14, 15, 21, 22], "credenti": 7, "csi": [2, 3], "custom": [16, 38], "data": [35, 36], "databas": [12, 14, 15], "datacent": [2, 23, 24], "datasourc": [2, 3, 4], "datasourceref": [2, 3, 4], "dead": 28, "delet": [12, 15], "depend": 12, "deploi": [12, 14, 15, 16, 18, 20, 21, 22, 23, 24], "deploy": 13, "descript": [1, 2, 3, 4, 5], "develop": 11, "devic": 1, "discov": 9, "discoveri": 9, "docker": 35, "document": 17, "doe": 34, "domain": 20, "download": 14, "downwardapi": [2, 3], "dr": [12, 15, 16], "dynamodb": 7, "ek": [12, 21, 38], "embed": 8, "emptydir": [2, 3], "endpoint": 9, "endpointsselector": 4, "engin": 15, "environ": [12, 15], "ephemer": [2, 3], "everi": 35, "exampl": 13, "expos": [9, 13], "exposeopt": [2, 3, 4], "extern": 24, "externalip": 20, "fc": [2, 3], "fieldref": [2, 3], "filesystem": 1, "firewal": 22, "first": [21, 22, 24], "flexvolum": [2, 3], "flocker": [2, 3], "fork": 11, "from": 29, "gather": [35, 36], "gcepersistentdisk": [2, 3], "gener": 32, "genericupgrad": 2, "get": 36, "gitrepo": [2, 3], "gke": [15, 22, 38], "glusterf": [2, 3], "googl": 15, "grafana": [4, 20], "group": [6, 21], "haproxi": 20, "headless": 13, "helm": [16, 39], "histori": 11, "hostpath": [2, 3], "i": 25, "imag": 16, "imagepullsecret": [2, 3], "ingress": [2, 3, 4, 20], "initi": [11, 14], "instal": [12, 16, 38], "inter": [21, 22], "interconnect": 24, "internet": 13, "iscsi": [2, 3], "issu": [34, 36, 38], "item": [2, 3], "k8": 25, "kernel": 14, "kind": 6, "known": 34, "kubectl": 39, "kubernet": [9, 14, 15, 18, 21, 22, 23, 24, 31, 32], "label": [2, 3, 4], "labelselector": [1, 2, 3, 4], "limit": [2, 3, 4, 35], "loadbalanc": 13, "local": [12, 14, 15], "localdisksetup": 1, "localhost": 8, "loopdevic": 1, "lost": 25, "mainten": 27, "manag": [14, 16, 18, 20, 24, 34], "matchexpress": [1, 2, 3, 4], "matchfield": [1, 2, 3, 4], "matchlabel": [1, 2, 3, 4], "matrix": 32, "messag": 11, "metadata": [1, 2, 3, 4, 5], "migrat": 19, "minikub": 34, "mode": 27, "monitor": [14, 16, 20], "mount": 1, "multi": [13, 23, 24], "multipl": [21, 22, 24], "must": 35, "namespac": 35, "namespaceselector": [1, 2, 3, 4], "network": [2, 21, 22, 24], "nf": [2, 3], "node": [2, 3, 9, 12, 13, 15, 21, 22, 24, 25, 26, 28, 31], "nodeaffin": [1, 2, 3, 4], "nodeconfig": 1, "nodeport": 20, "nodepublishsecretref": [2, 3], "nodeselector": 1, "nodeselectorterm": [1, 2, 3, 4], "nodeservic": [2, 3], "nodestatus": 1, "onli": 13, "oper": [11, 12, 14, 15, 16, 17, 20, 21, 22, 26, 39], "operatormanagedopt": [2, 3], "option": [2, 3, 13], "out": 20, "overview": 36, "paramet": 14, "parti": 12, "particular": 35, "peer": 21, "perform": 31, "persistentvolumeclaim": [2, 3], "photonpersistentdisk": [2, 3], "placement": [1, 2, 3, 4], "platform": 32, "podaffin": [1, 2, 3, 4], "podaffinityterm": [1, 2, 3, 4], "podantiaffin": [1, 2, 3, 4], "podip": [2, 3, 13, 24], "podman": 35, "podmetadata": 2, "polici": 32, "portworxvolum": [2, 3], "prefac": 9, "prefer": [1, 2, 3, 4], "preferredduringschedulingignoredduringexecut": [1, 2, 3, 4], "prepar": [21, 22], "prerequisit": [11, 12, 14, 15, 16, 18, 20, 21, 22, 24, 35], "privat": 38, "procedur": 19, "project": [2, 3, 11], "prometheu": [4, 20], "promot": 32, "provision": [12, 15], "pull": 11, "queri": 34, "quobyt": [2, 3], "rack": [2, 3], "racktempl": 3, "raid": 1, "raid0": 1, "rbd": [2, 3], "readinessg": [2, 3], "refer": 6, "registr": 18, "releas": 32, "remot": [8, 11], "repair": 2, "replac": [25, 28], "repositori": 16, "request": [2, 3, 4, 11], "requir": 20, "requiredduringschedulingignoredduringexecut": [1, 2, 3, 4], "resolv": 20, "resourc": [2, 3, 4, 16, 35], "resourcefieldref": [2, 3], "restor": 29, "result": 16, "retriev": 24, "roll": 20, "rout": 21, "rule": 22, "run": [14, 21, 22, 35], "scale": 14, "scaleio": [2, 3], "schedul": [18, 32], "schema": 29, "script": 12, "scylla": [0, 1, 2, 3, 4, 5, 11, 12, 14, 15, 16, 17, 18, 24, 26, 28, 30, 34, 39], "scyllaclust": [2, 13, 14], "scylladb": [0, 1, 2, 3, 4, 5, 9, 10, 12, 15, 21, 22, 23, 24], "scylladbdatacent": 3, "scylladbmanagerag": 3, "scylladbmonitor": [4, 20, 24], "scyllaoperatorconfig": 5, "second": [21, 22, 24], "secret": [2, 3], "secretref": [2, 3], "secur": 21, "seed": 24, "selector": [2, 3, 4], "servic": 13, "serviceaccounttoken": [2, 3], "serviceclusterip": 13, "serviceloadbalanceringress": 13, "servingcertif": [2, 3], "set": [12, 14, 15], "setup": [11, 12, 15], "sourc": [2, 3], "spec": [1, 2, 3, 4, 5], "specif": [1, 2, 3, 4, 5], "stack": 16, "statu": [1, 2, 3, 4, 5], "storag": [2, 3, 4], "storageo": [2, 3], "stress": 14, "submit": 11, "subnet": 22, "support": [32, 33, 36], "tabl": [21, 29], "task": 18, "templat": 13, "third": 12, "through": 20, "tl": [12, 15, 16], "token": 14, "toler": [1, 2, 3, 4], "topologylabelselector": 3, "troubleshoot": [14, 18, 36, 37, 38], "truncat": 34, "tune": 31, "type": [1, 2, 3, 4, 5, 13], "unresolv": 20, "up": [12, 14, 15, 18, 34], "updat": [11, 21], "upgrad": [2, 30, 39], "upstream": 11, "us": [7, 8, 10, 16, 20, 24, 26], "usermanagedopt": [2, 3], "v0": [19, 39], "v1": [2, 19, 39], "v1alpha1": [1, 3, 4, 5], "variabl": [12, 15], "variant": 20, "version": [19, 30], "via": 39, "volum": [2, 3, 12, 15], "volumeattribut": [2, 3], "volumeclaimtempl": [2, 3, 4], "volumemount": [2, 3], "vpc": [13, 21, 22], "vspherevolum": [2, 3], "wait": 20, "walkthrough": [12, 15], "webhook": [16, 38], "webinterfac": 4, "when": 25, "work": 34, "your": [11, 36], "yourself": 15}}) \ No newline at end of file diff --git a/master/sitemap.xml b/master/sitemap.xml new file mode 100644 index 00000000000..e9d5feee423 --- /dev/null +++ b/master/sitemap.xml @@ -0,0 +1,2 @@ + +https://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/nodeconfigs.htmlhttps://operator.docs.scylladb.com/stable/eks.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scyllaclusters.htmlhttps://operator.docs.scylladb.com/stable/multidc/index.htmlhttps://operator.docs.scylladb.com/stable/exposing.htmlhttps://operator.docs.scylladb.com/stable/multidc/multidc.htmlhttps://operator.docs.scylladb.com/stable/generic.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/automatic-cleanup.htmlhttps://operator.docs.scylladb.com/stable/gke.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/index.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scylladbdatacenters.htmlhttps://operator.docs.scylladb.com/stable/helm.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/maintenance-mode.htmlhttps://operator.docs.scylladb.com/stable/index.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/replace-node.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/restore.htmlhttps://operator.docs.scylladb.com/stable/manager.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/scylla-upgrade.htmlhttps://operator.docs.scylladb.com/stable/migration.htmlhttps://operator.docs.scylladb.com/stable/api-reference/index.htmlhttps://operator.docs.scylladb.com/stable/performance.htmlhttps://operator.docs.scylladb.com/stable/monitoring.htmlhttps://operator.docs.scylladb.com/stable/clients/alternator.htmlhttps://operator.docs.scylladb.com/stable/releases.htmlhttps://operator.docs.scylladb.com/stable/multidc/eks.htmlhttps://operator.docs.scylladb.com/stable/support/index.htmlhttps://operator.docs.scylladb.com/stable/clients/cql.htmlhttps://operator.docs.scylladb.com/stable/multidc/gke.htmlhttps://operator.docs.scylladb.com/stable/clients/discovery.htmlhttps://operator.docs.scylladb.com/stable/support/known-issues.htmlhttps://operator.docs.scylladb.com/stable/support/must-gather.htmlhttps://operator.docs.scylladb.com/stable/clients/index.htmlhttps://operator.docs.scylladb.com/stable/contributing.htmlhttps://operator.docs.scylladb.com/stable/support/overview.htmlhttps://operator.docs.scylladb.com/stable/support/troubleshooting/index.htmlhttps://operator.docs.scylladb.com/stable/support/troubleshooting/installation.htmlhttps://operator.docs.scylladb.com/stable/upgrade.htmlhttps://operator.docs.scylladb.com/stable/genindex.htmlhttps://operator.docs.scylladb.com/stable/404.htmlhttps://operator.docs.scylladb.com/stable/search.html \ No newline at end of file diff --git a/master/support/index.html b/master/support/index.html new file mode 100644 index 00000000000..1bad19a1d1c --- /dev/null +++ b/master/support/index.html @@ -0,0 +1,607 @@ + + + + + + + + + + + + + Support | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Support

      + +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/support/known-issues.html b/master/support/known-issues.html new file mode 100644 index 00000000000..12009d8c2e5 --- /dev/null +++ b/master/support/known-issues.html @@ -0,0 +1,630 @@ + + + + + + + + + + + + + Known issues | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Known issues

      +
      +

      Scylla Manager does not boot up on Minikube

      +

      If your Scylla Manager is failing to apply 8th migration (008_*), then apply fix for TRUNCATE queries.

      +
      +
      +

      TRUNCATE queries does not work on Minikube

      +

      The TRUNCATE queries requires hairpinning to be enabled. On minikube this is disabled by default.

      +

      To fix it execute the following command:

      +
      minikube ssh sudo ip link set docker0 promisc on
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/support/must-gather.html b/master/support/must-gather.html new file mode 100644 index 00000000000..228bf6ef625 --- /dev/null +++ b/master/support/must-gather.html @@ -0,0 +1,717 @@ + + + + + + + + + + + + + Gathering data with must-gather | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Gathering data with must-gather

      +

      must-gather is an embedded tool in Scylla Operator that helps collecting all the necessary info when something goes wrong.

      +

      The tool talks to the Kubernetes API, retrieves a predefined set of resources and saves them into a folder in your current directory. +By default, all collected Secrets are censored to avoid sending sensitive data. +That said, you can always review the archive before you attach it to an issue or your support request.

      +

      Given it needs to talk to the Kubernetes API, at the very least, you need to supply the --kubeconfig flag with a path to the kubeconfig file for your Kubernetes cluster, or set the KUBECONFIG environment variable.

      +
      +

      Running must-gather

      +

      There is more than one way to run must-gather. +Here are some examples of how you can run the tool.

      +
      +

      Prerequisites

      +

      All examples assume you have exported KUBECONFIG environment variable that points to a kubeconfig file on your machine. +If not, you can run this command to export the common default location. +Please make sure such a file exists.

      +
      export KUBECONFIG=~/.kube/config
      +ls -l "${KUBECONFIG}"
      +
      +
      +
      +

      Note

      +

      There can be slight deviations in the arguments for your container tool, depending on the container runtime, whether you use SELinux or similar factors.

      +

      As an example, the need for the Z option on volume mounts depends on whether you use SELinux and what context is applied on your file or directory. +If you get an error mentioning Error: lsetxattr <path>: operation not supported, try it without the Z option.

      +
      +

      Let’s also check whether your kubeconfig uses external authentication plugin. +You can determine that by running

      +
      kubectl config view --minify
      +
      +
      +

      and checking whether it uses an external exec plugin by looking for this pattern (containing the exec key)

      +
      users:
      +- name: <user_name>
      +  user:
      +    exec:
      +
      +
      +

      If not, you can skip the rest of this section.

      +

      In case your kubeconfig depends on external binaries, you have to take a few extra steps because the external binary won’t be available within our container to authenticate the requests.

      +

      Similarly to how Pods are run within Kubernetes, we’ll create a dedicated ServiceAccount for must-gather and use it to run the tool. +(When you are done using it, feel free to remove the Kubernetes resources created for that purpose.)

      +
      kubectl create namespace must-gather
      +kubectl -n must-gather create serviceaccount must-gather
      +kubectl create clusterrolebinding must-gather --clusterrole=cluster-admin --serviceaccount=must-gather:must-gather
      +export MUST_GATHER_TOKEN
      +MUST_GATHER_TOKEN=$( kubectl -n must-gather create token must-gather --duration=1h )
      +kubeconfig=$( mktemp )
      +# Create a copy of the existing kubeconfig and
      +# replace user authentication using yq, or by adjusting the fields manually.
      +kubectl config view --minify --raw -o yaml | yq -e '.users[0].user = {"token": env(MUST_GATHER_TOKEN)}' > "${kubeconfig}"
      +KUBECONFIG="${kubeconfig}"
      +
      +
      +
      +

      Note

      +

      If you don’t have yq installed, you can get it at https://github.com/mikefarah/yq/#install or you can replace the user authentication settings manually.

      +
      +
      +
      +

      Podman

      +
      podman run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro,Z" -v="$( pwd ):/workspace:Z" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig
      +
      +
      +
      +
      +

      Docker

      +
      docker run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro" -v="$( pwd ):/workspace" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig
      +
      +
      +
      +
      +
      +

      Limiting must-gather to a particular namespace

      +

      If you are running a large Kubernetes cluster with many ScyllaClusters, it may be useful to limit the collection of ScyllaClusters to a particular namespace. +Unless you hit scale issues, we advise not to use this mode, as sometimes the ScyllaClusters affect other collected resources, like the manager or they form a multi-datacenter.

      +
      scylla-operator must-gather --namespace="<namespace_with_broken_scyllacluster>"
      +
      +
      +
      +

      Note

      +

      The --namespace flag affects only ScyllaClusters. +Other resources related to the operator installation or cluster state will still be collected from other namespaces.

      +
      +
      +

      Collecting every resource in the cluster

      +

      By default, must-gather collects only a predefined subset of resources. +You can also request collecting every resource in the Kubernetes API, if the default set wouldn’t be enough to debug an issue.

      +
      scylla-operator must-gather --all-resources
      +
      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/support/overview.html b/master/support/overview.html new file mode 100644 index 00000000000..edd2ca7f118 --- /dev/null +++ b/master/support/overview.html @@ -0,0 +1,632 @@ + + + + + + + + + + + + + Support overview | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Support overview

      +
      +

      Get support

      +

      ScyllaDB provides administrators with paid support, including Scylla Operator.

      +
      +
      +

      Troubleshooting issues

      +

      To learn more about what to do when issues arise, visit our dedicated troubleshooting section.

      +
      +
      +

      Gather data about your cluster

      +

      Scylla Operator contains an embedded tool called must-gather that can collect the required information for requesting support or reporting issues. +Support requests and bug reports are required to attach the must-gather archive to help us understand the issue.

      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/support/troubleshooting/index.html b/master/support/troubleshooting/index.html new file mode 100644 index 00000000000..6f76048b225 --- /dev/null +++ b/master/support/troubleshooting/index.html @@ -0,0 +1,613 @@ + + + + + + + + + + + + + Troubleshooting | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Troubleshooting

      + +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/support/troubleshooting/installation.html b/master/support/troubleshooting/installation.html new file mode 100644 index 00000000000..af5cefa0cb9 --- /dev/null +++ b/master/support/troubleshooting/installation.html @@ -0,0 +1,668 @@ + + + + + + + + + + + + + Troubleshooting installation issues | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Troubleshooting installation issues

      +
      +

      Webhooks

      +

      Scylla Operator provides several custom API resources that use webhooks to function properly.

      +

      Unfortunately, it is often the case that user’s clusters have modified SDN, that doesn’t extend to the control plane, and Kubernetes apiserver is not able to reach the pods that serve the webhook traffic. +Another common case are firewall rules that block the webhook traffic.

      +
      +

      Note

      +

      To be called a Kubernetes cluster, clusters are required to pass Kubernetes conformance test suite. +This suite includes tests that require Kubernetes apiserver to be able to reach webhook services.

      +
      +
      +

      Note

      +

      Before filing an issue, please make sure your cluster webhook traffic can reach your webhook services, independently of Scylla Operator resources.

      +
      +
      +

      EKS

      +
      +

      Custom CNI

      +

      EKS is currently breaking Kubernetes webhooks when used with custom CNI networking.

      +
      +

      Note

      +

      We advise you to avoid using such setups and use a conformant Kubernetes cluster that supports webhooks.

      +
      +

      There are some workarounds where you can reconfigure the webhook to use Ingress or hostNetwork instead, but it’s beyond a standard configuration that we support and not specific to the Scylla Operator.

      +
      +
      +
      +

      GKE

      +
      +

      Private clusters

      +

      If you use GKE private clusters you need to manually configure the firewall to allow webhook traffic. +You can find more information on how to do that in GKE private clusters docs.

      +
      +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/master/upgrade.html b/master/upgrade.html new file mode 100644 index 00000000000..d65da99e242 --- /dev/null +++ b/master/upgrade.html @@ -0,0 +1,821 @@ + + + + + + + + + + + + + Upgrade of Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      +
      +
      +
      +
      + + +
      +

      Caution

      +

      + + You're viewing documentation for an unstable version of Scylla Operator. + + Switch to the latest stable version. +

      +
      + + + +
      + +
      + +
      +

      Upgrade of Scylla Operator

      +

      This page describes Scylla Operator upgrade procedures.
      +There are two generic update procedures - via Helm and via kubectl. Before upgrading, please check this page to find out +if your target version requires additional upgrade steps.

      +
      +

      Upgrade via Helm

      +

      Helm doesn’t support managing CustomResourceDefinition resources (#5871, #7735)
      +These are only created on first install and never updated. In order to update them, users have to do it manually.

      +

      Replace <release_name> with the name of your Helm release for Scylla Operator and replace <version> with the version number you want to install:

      +
        +
      1. Make sure Helm chart repository is up-to-date:

        +
        helm repo add scylla-operator https://storage.googleapis.com/scylla-operator-charts/stable
        +helm repo update
        +
        +
        +
      2. +
      3. Update CRD resources. We recommend using --server-side flag for kubectl apply, if your version supports it.

        +
        tmpdir=$( mktemp -d ) \
        +  && helm pull scylla-operator/scylla-operator --version <version> --untar --untardir "${tmpdir}" \
        +  && find "${tmpdir}"/scylla-operator/crds/ -name '*.yaml' -printf '-f=%p ' \
        +  | xargs kubectl apply
        +
        +
        +
      4. +
      5. Update Scylla Operator

        +
        helm upgrade --version <version> <release_name> scylla-operator/scylla-operator
        +
        +
        +
      6. +
      +
      +
      +

      Upgrade via kubectl

      +

      Replace <version> with the version number you want to install:

      +
        +
      1. Checkout source code of version you want to use:

        +
        git checkout <version>
        +
        +
        +
      2. +
      3. Manifests use rolling minor version tag, you may want to pin it to specific version:

        +
        find deploy/operator -name "*.yaml" | xargs sed --follow-symlinks -i -E "s^docker.io/scylladb/scylla-operator:[0-9]+\.[0-9]+^docker.io/scylladb/scylla-operator:<version>^g"
        +
        +
        +
      4. +
      5. Update Scylla Operator. We recommend using --server-side flag for kubectl apply, if your version supports it.

        +
        kubectl apply -f deploy/operator
        +
        +
        +
      6. +
      +
      +
      +
      +

      v1.2.0 -> v1.3.0

      +

      Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure.

      +
        +
      1. Checkout source code of v1.3.0:

        +
        git checkout v1.3.0
        +
        +
        +
      2. +
      3. Update Scylla Operator from deploy directory:

        +
        kubectl -n scylla-operator apply -f deploy/operator
        +
        +
        +
      4. +
      5. Wait until Scylla Operator is up and running:

        +
        kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
        +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
        +
        +
        +
      6. +
      +
      +
      +

      v1.1.0 -> v1.2.0

      +

      1.2.0 release brought a lot of changes to the Scylla Operator deployment process. +To properly update Scylla Operator one must delete old objects and install updated ones.

      +

      Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure.

      +
        +
      1. Checkout source code of v1.2.0:

        +
        git checkout v1.2.0
        +
        +
        +
      2. +
      3. Remove old scylla operator namespace - in our case it’s called scylla-operator-system:

        +
        kubectl delete namespace scylla-operator-system --wait=true
        +
        +
        +
      4. +
      5. Remove old webhooks:

        +
        kubectl delete MutatingWebhookConfiguration scylla-operator-mutating-webhook-configuration
        +kubectl delete ValidatingWebhookConfiguration scylla-operator-validating-webhook-configuration
        +
        +
        +
      6. +
      7. Install Scylla Operator from deploy directory:

        +
        kubectl -n scylla-operator apply -f deploy/operator
        +
        +
        +
      8. +
      9. Wait until Scylla Operator is up and running:

        +
        kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
        +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
        +
        +
        +
      10. +
      +
      +
      +

      v1.0.0 -> v1.1.0

      +

      During this update we will change probes and image for Scylla Operator. +A new version brings an automation for upgrade of sidecar image, so a rolling restart of managed Scylla clusters is expected.

      +
        +
      1. Get name of StatefulSet managing Scylla Operator

        +
        kubectl --namespace scylla-operator-system get sts --selector="control-plane=controller-manager"
        +
        +NAME                                 READY   AGE
        +scylla-operator-controller-manager   1/1     95m
        +
        +
        +
      2. +
      3. Change probes and used container image by applying following patch:

        +
        spec:
        +  template:
        +    spec:
        +      containers:
        +      - name: manager
        +        image: docker.io/scylladb/scylla-operator:1.1.0
        +        livenessProbe:
        +          httpGet:
        +            path: /healthz
        +            port: 8080
        +            scheme: HTTP
        +        readinessProbe:
        +          $retainKeys:
        +          - httpGet
        +          httpGet:
        +            path: /readyz
        +            port: 8080
        +            scheme: HTTP
        +
        +
        +

        To apply above patch save it to file (operator-patch.yaml for example) and apply to Operator StatefulSet:

        +
        kubectl -n scylla-operator-system patch sts scylla-operator-controller-manager --patch "$(cat operator-patch.yaml)"
        +
        +
        +
      4. +
      +
      +
      +

      v0.3.0 -> v1.0.0

      +

      Note: There’s an experimental migration procedure available here.

      +

      v0.3.0 used a very common name as a CRD kind (Cluster). In v1.0.0 this issue was solved by using less common +kind which is easier to disambiguate. (ScyllaCluster). +This change is backward incompatible, so Scylla cluster must be turned off and recreated from scratch. +In case you need to preserve your data, refer to backup and restore guide.

      +
        +
      1. Get list of existing Scylla clusters

        +
        kubectl -n scylla get cluster.scylla.scylladb.com
        +
        +NAME             AGE
        +simple-cluster   30m
        +
        +
        +
      2. +
      3. Delete each one of them

        +
        kubectl -n scylla delete cluster.scylla.scylladb.com simple-cluster
        +
        +
        +
      4. +
      5. Make sure you’re on v0.3.0 branch

        +
        git checkout v0.3.0
        +
        +
        +
      6. +
      7. Delete existing CRD and Operator

        +
        kubectl delete -f examples/generic/operator.yaml
        +
        +
        +
      8. +
      9. Checkout v1.0.0 version

        +
        git checkout v1.0.0
        +
        +
        +
      10. +
      11. Install new CRD and Scylla Operator

        +
        kubectl apply -f deploy/operator.yaml
        +
        +
        +
      12. +
      13. Migrate your existing Scylla Cluster definition. Change apiVersion and kind from:

        +
        apiVersion: scylla.scylladb.com/v1alpha1
        +kind: Cluster
        +
        +
        +

        to:

        +
        apiVersion: scylla.scylladb.com/v1
        +kind: ScyllaCluster
        +
        +
        +
      14. +
      15. Once your cluster definition is ready, use kubectl apply to install fresh Scylla cluster.

      16. +
      +
      +
      + + +
      + + + + + + + +
      + +
      + + + + +
      + + + + + + + \ No newline at end of file diff --git a/stable/.buildinfo b/stable/.buildinfo new file mode 100644 index 00000000000..fd5bf62570f --- /dev/null +++ b/stable/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 3b6b6e6ed4beeea89da3d3dccbe2fdf3 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/stable/.doctrees/api-reference/groups/scylla.scylladb.com.doctree b/stable/.doctrees/api-reference/groups/scylla.scylladb.com.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d6657454855c0e3e152334452b650eaae9e3c1ef GIT binary patch literal 4004 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 Y-$|#MRW`r@WVR&epNnJT%1fsIe->mvm;e9( literal 0 HcmV?d00001 diff --git a/stable/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaclusters.doctree b/stable/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaclusters.doctree new file mode 100644 index 0000000000000000000000000000000000000000..06422d9f118af84e0ffd6619ae1fff5da88e815c GIT binary patch literal 1217790 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

      ;bBt-EZ8mW3CLuF8)Gv8{)#tA-s9`X_DZ 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 literal 0 HcmV?d00001 diff --git a/stable/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree b/stable/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3afbc5f7ecffb6b6891f01d380c9ae7960b1b953 GIT binary patch literal 889762 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

        VZUkyi@+FIRm_H^Y z9}Z1zL-M_oIV4jkC8GX@nkj?R+f9inQRF*yw3H?P~`p}HCvCh7~JAt<<%87e`)+`RCVR3h#W1px*|}E z=<3RolefAOF~Kn^xZJNsnF)LlTz$c%lls4w_3PI{?10X!%p6sL*(HGVMO0t{5Z`7B z;!_UVQ9G&K6_|QGjOE^dlBjlyoH+uYUOgso;zez;9@UXltJ!4L+~F%to3?x`_bf!p z+^<3NvQ~p;U{B&9;IVP9)kK5|QNEd&%&Fn+r#8bILFCWN76g&+oL)uebxGL(IwxLU zlP!psT|;pFGO?06YW~a;KKTnRi;*c5ORON#!j11N-+~-YCSvq*$)OHRvpvr4I+%wav?W_nxfEf1a z-zoy%;;N|qP*FD;h{SQ4>*>{GoQ55;B)Ao;cNN2rxH7yyGW=lb3~!6WD}WNX4~bAP z9F^7906B(hJD`McE=`ppe(tJ>15gn^wN-?Xi(gArolXf`RU|M%JL-XwdD__)L#v)I z9EdXi%UtGvGC`8Ur*KbR*%5y#hCkrS@B(CbJ!oxM(J^Eg7F~0^uH<8l7cfA?)4*k6 ze;Xx@So9st4ihpcw)OGM(K{@Y&%(95oCIQfzBj)x+gnhq;Q!3S)2HAmY+Bj7=$GLs zJ&_sbQqdB=RR3|>7}m1SD|2+Yn&Tie$5yuHXmy{N&I}`ZjQCT@yTDc6gHhi7&E@?B zy_y)^MMc#3Bt73%fJ0D#p40_+m1&&jXRz0Sux&uinLPZMJ9$&JbaxmY=EDrFBsvO? z6`T+wAueMs6bqgFoHu^kwN8WgFQB7$F9tkEl9NZqA!ts#!atzzfypd?mm*->);^l}Cm^!tx0v1*c zu0OT1g66(zRif$uzm+az;B-37a3qeM!U4l&iERVpX5+F%phF#@hEM0R#Ctwtft^rK z`j1ot^`xUiJt?s)v9`@ObwwV7iWJ|6TEVYY)HXxiGpRC5xs84yKdQqhqr78sWRy}k zfph9hGkSC*4t|g_$&21I4Hk64e+D+Rul7z@a+;Js9xn68ogf(Ht_6$8{1MH=p2X*mXO2hy zD7%)38zOIe#!fWAF0z z2M5NU6lHsSpz3Q!OK&ysZ#|>R;$SR%J)D|u9~gfdr>23vJE(?X=hSq>MkwmE71@G1 zZ9dp(Yl*4pnUaE~B8O0s;`?n{G4lmrw%HXkt~B%&Gn_^{SIm6J)lL<((_N%EqZKoE zFdZkAd}DV*|In4$Dl+?Y>dacKn0d{W^`*%AZ){mtDSOO{ncEDg@)a}OGt*iz^DAwq zowkd3^6Z8VWseanfg^X`t^Zk=n}v4XiKhuWqBq9In+&cfDnj)g&u;tO20$xr@k7k^ zyUn4g?e@DT)P#G2UpXmFE9Tr$B?8=4cQssyg46E74;?syopikfjRtn&QJZxP+VB-# zYtpO6YXHRd=fqvn`vBd>P8B@cLOU&g84A5u>H@TC+cH-~tH`SyaW>d41{(Pu1|IYIxa_ zA39k?4RQ~_}ti>P~|0-X=#pW}OUyWM8bz#JGDRu#uKruwRUSDQ=W^$L= zA|^aWmA8l0Xfu&_NQY(t;l)ficJM`AC!td-b4M-e+97}dMpWPe&|h9bf67riYNxfm z0vFQ7Sgr&5f>wDmubHG+c?+{uo6I*UB~{vdS!sLk=b*0kA+Ug~w4piJllV&8#S@~^ z77;o`@onNVsD{4vK>fza8o}x7$QFbaoSI%eZgWZ50A?p%X37@C%NZePfBZHs^BMa1 zF`#U`oz#+nUiCWAnK%*%9f#{cI|fF9#&w{8&zzwK1Lr!>0X9OBv&@$*$XU(~IZNWq z<_Jl_QjwoQMT+mYsSb23FxzY$$d!g(2jVo^SqHkn)lQ#BJDo?0tB0e5$RVFH*O-o* zssml?%Ix{b?AKCf)}jvdJy+H*K-Rxw%eqP&W9mSkF`&xpK-@FassqLBoc^t=qAo;5 z{mMWj?vTHrSCcWEq@B~#Y8GjMK4gp`!~aU1VVCXCd<1rBs>aR_xGLfzRK$AFI<78- zv#vVJ8M*k+nUP&i1yviRxpve8CG$?MGJgSO-rij1IrM7t-nzh*;V&Y?`=`$EyL{)g z?`n>V(HuRt=4f@F5nH8sj}d>W{&J?PyqBQ7rfI!=>N&T%I^LJi@outpJc~#X|0)OGSpwPk)hOV7Fd{dK1>VK9F&cP(?41C- zvl6xu;(p(xM%=aHE(hB$M@LpBjsn{aE`{shA4S(Fjr`~>7ojf*Rs zV=?_EaP!}CBqeb3iu6$V_gV9@mTW=1d^H5LPOZq8T9FaIBEyp|WQnw2iQ}noz;MaJ z{35?Vhx)1-Qk_c{yVwXty?RI4f_l=`p`Mgjve;KruvFwVs7UdBs3X+vs=lm^Stq~q zp>OYM2`;W!*gNR=RrBz#`2&Sw$>)#fE%SS;cpKx9i;dFAvG$~qf_HX&R$20%WxTV; zzTjQo4}G1ke!d?%unpSasQQ2tU#*;2&kN6;D0v}Ik8`iWV5X&n=0kPsQ$o&S?VYmD zG${$ZLMDL)h$Ok6gJonAh-P9>;*-E0`y^0w9MeuOvbuJBN~LK_ZGtNW^s;P00sV&b z(zH)Y$_9a+csWD1AYN_`4ldot!08Kn`~BGh91fom=X=6c>1D42mn*^LJQcd{hpya! zh^)@F72DAHF`-L+JR%fNG91V*^$VU{?9@@7HA|d-3&#xtZLd67tmgZ?9v|)j>dY5= z;k3a%uS0a~S$HyHp;)Q^u~5l&sy9Zml|j6U$cN)vG#Ws^kA&&-GH|kCwNOBoi*Pa{ z5bX2$-9>aZB3^E!&geyYbWrbZfa@3Y#evcN{n3xJ+mGnj{7eNKWD28<5Re=h%=Qif zVHAkdD*N;nsSi(9WZ&n0JEdxht6oc0t@`an((?`aieBBk1xIDkZ$jDSj^rJ*l~;WXO0 zAm%TwcKQz5=?zkx(Sn%QnU0%U5HsUk3-Cklo!>=fSB2JwC3iz+Ef&PgbY=Y>WPMXx z)>RT8vmoX*1MBexG2AoLS`c$L+iXXnU1S99+HPl?K(ec<1ecM!=?+BWhIZ45r?8uD zjXFuSn??_fbql-wbO$9kNz8t_qoAqne!8pFM7gC~orS&3X39q{4qPo3*e>@y>`wb9 zXezK>j@o>}pbcNJGmlKd3@>&m&9dL$5s8(s8?L-msIu- z*8mi&rCz^0+oL-}A(QRRlzmKe;cihlhdf(>%K-}2d>)S)hhGma_RZ~wDMYq1y2vjL z$*h?&y+RRxFU#Y@D@}fyt_HCFxXKI1TupH=n&Nz0Qy7KsJ&CH*X6H54U8pc)DT_IB z@UfErHdp!YL-}tum;VMPR8pE?y^!TGR{`!v0Ul0UfbQ$zRD}cag!}{W25vNhxUEf0 z2Gu<#Go8?I!Ig_(1<058GqZslwr-pv7kC%YIIF6CfXY*foI zU50n^#p1EmVR3Unf2lY`GumvSw>X6JUZBlB4LzC7;(mkj|9xy;wuFQb zL*x>iMK6Iy7zjG3;jAT^2sGO-6@dqs0Q-2`2mfr@Mmnz_=KDxWXB;97vfq(`dH*a= zO#Hh%(l1?U*HzQzd`|nQFemREOr0HzW978DI~B0^l)l z)|2h)1EYYtNkIHmPZ7X^fXVTalRDkOEzJ3Hadz;%-b?|Z4KOx>1pr_a>YD*GC>H#P zoB|8*e{h>$CO(qodpQsta(iy6ofNxPz`sSfT%*o(8o5^kB*zxj(~e@5~-eg0-?wtMNVPWAO=y zb~?@jI6S^Yt{d;=JU3?Jdp!9wz{7y*o+QSTm^Ut1^8&%0(9SrSx(Rt@4!R{2Ir|lZ zNgk}F0gD2`qRFJ^r~tY6;eaPS$U|h(6VKebl=Rg1I+6FRgLzNgPnyhyW|-`Ld@A*U z*_xWngnDht9lVVRP|)AvGZZZWdKgE}L&%NeJ)S2(Z0L_C-+Tge9|PEBIbF=nCoISw z;xrOyzZAP~2xu2iVeYg}h>q6zzZ~27?ZEcS5-c7AwqFZPZNc_yCo0%3^eNkZ-Yn0o)G@>JamN1!4C^L8pn0tc|T5EEEzRK%5yY)FH5dSF5! zLXpU%x~P_kiw>y@pk82e|ol)ahsS%5dOEGnqa6cx{IZ%Rw3rPvEl zwA^lMS0{fGoqV>fleaoL&CnK*l_h_HN#a+f!6Xt)Avz18Ap#CEY#naSsiBYvNZW>Y$j zTn3(wj#VsJ?%K7U#;$d|ZP&7hg7L5NQxn)K!^W>hotp4y#3IJnQxmR(2Kpqge*fCn zC-DBY`jv=AyV<^?aD!GJLu|K3uan{+%dUzgeQ(R{U25_|1q1GPrExFmMv&^$B)w6YWAX}Y_RKtc=?HJ zLA?AVw9};2g#`>$1o~18{Uj$et~$vQ+}c%sq1pleuW`7gQRH~08`|qLkcdkLA}gm~L6e6nr{XD8PS>XOa+>@axOR1{zt|N{ zuS~FWOyTrqXlh$Hy>o)*!}YtAq7D@cY+U*ccD*YSlozO@Qk%;S+VDE+rSxhd!Y3*a z#&<7119bH%cYKW27FYZhg?=h^0a|rAB0sUSRpeF9|65muzKRO{m90XJ0{9n+s?&1a z2eb%GYwF7rcAZKcgv+`u<2W+v&bS~d>WZfjb!Vtm%4IF!u8r+dx&e0$pcPlZiwU?J zK~vj+d-Eg;xD1C1u2^{u`^ahuS_?#4YBSxS4Ue=d(yNJ)HgRUNE6{1|D8aiaw8;89 z6msX(8J;@7Z|eNM`1AV?b@kZaqsJa(>#-I?SNyBIM8W1BjbDu_QEVD9-o}I7ZHCi1VR0)>YdZw)BWC?p4nZpe!sujo_?>Z>eZ{N zSJx9Bhv>%6w@jH3Ma1F6C~EO_r9&ob)FRxj7&QWK-TWtHRkeswVT^qOH)KWJlNfNm zJ*J#*iv2ojBP|YN1cEiWZ-7%$3u>5qzMX>_^+%=g+7xL#kreRwnGASb3PLUSC7`Pe zcp#D4llXwgd)poGh}h901~MsNQAecD*ytJZGk;2sAV2e8(hG}RCucVBKNBq1$`J(1 z-$Op{iMu_JA95!S0JX-qNh%r8RS%FnhXPvAI2<6^Hz1rFUtbvDnZGL;?HnL^$Ob85 zmIvhsVwM*|%#wJFcv8+_NyvX9A;tIG6d?Hr0NZSU#B~lmK*Hx}XMkjvk2)UrHrfo< zX(t#R=LtXyhM!M&q*oKqr?CN&{ak^41p+%ibzm(5BuiXDpNXI^wgp|;b1?yu?G0w- z0TRxcX$44Pt}m>*5^7^4RLKA(&X7fVHIX3`lTT}|0KXCez94mgUG5;{8rWs1(w$ej z5@Hq-;xo2{FkZk__=Q~|--UM;J-5lpz7$QmWLF&b`%@L$hJV#0t%YIos`LEq3bc9 z0tP~Jp~ZzR@3>+G|7Rh#f`X?|f^k&QFT+!MB65gpYsARV$Ei_F%RaC8=g+Rou^BGM zv$o68>OCXwE95&y{HgHWX57)-n2q>u38M|ojXCscqI4I5M^<6bDNdfj#|nWCR|MuD z0=uP-z=m{}ALptK31!82Z*gV3&5`jAwPidDNfG}l_i{4>vhk}?Uhcoqv8+C{AM527 z$Hr(c_cy1Qmzza_jojPUP8IjI79ZuF?Jbc#)xt%2w)YD-Pa-_q0k6pm%4?!nuA}zu zwtBY14*lE(z|oqk+uXsKlB+u^E2uVg6Pl77;(w72@$*3b<<0`?ONTfv1$z?j5P#Ri zIK$o@~h=>a~qb zyQ?OpX(w@ss=0ifzC@At3GQ!j&vby%cT|k7n{;CnVA63THn#?NShMELm2|4s9EYYh z1=A#x?6++;%dOma#*Fpjxqkwwb9wlG(tbnYvnTPAuhItlP3{JuP+N-Q#*;hxo21wVK(=&Ld+iO9TP-b`T~S>MUJsjw=GRCE_U>GzF`ZLK4z@vx1jqq$ z1Z~>ggPS(_qQ7J043>o40|_a<-=@@&w*#=vrjEGIp{I`UIog>za<=O__24?KC&JY` zcZ1ahJW_uKqj6H~Gxm&gi7T-45ZLk5fwgdSTImn| zv{FYN)GE8Q+R{l|-X-;?uni*;ULz~Leu2v#s;?DK6Y6V!8Ot+v^|g;AtaVJe*Z;y$ z+j6h(r~~h$>NnFPS5jCUQQmaSc++|n?~PmV=LrN1RDRKz2Moq=@pvD-Y8>h|uCd+h zW8x@asfXty(z9T+VXWQ|fmRj4^00ENrdJlC=St9hkf1x;64XeL|AaBmd72x1cotHm zBaxx*)+8|tS4=e_%%F~xzDM9%g`}@|+PKd4=-4&36TC+ytayyzeH#q56}&f0F~Q3n zUjd1`FYcAY6DSvuxHRT4gE3s<9!#$$ZjeMLcnRils`s))miQPk>2rAsDJ zy=};X52xs$X5g7g2O`U=#f-{KIw%mfjmS(2IOTR%PC3Pf9ktc14r7H-AJ6>(T>V=3 z$~;!#9=-}gQJX^d&?JScUN6H{_ky6y{YDR0A+gz$_;A(v6A`Y8*ySREHEG~c$Ecs% z=pgb*KOjetPx_Gbf?EG8XErz^6D+@zBM6o^hy3FcR|d-u!V?F8TI1&=l?>>r=h?gk zg|?t^D4240@J~7MYas)BU5g}$tJYwuDXRsvXkw{4K z{Wb+tdH~pFgDI|a=)n{|M>~TlC%UfFTXCIEAi^01Q;ugeZYr3PcLnxX1U8#Guol6T z_qu|<1VKOB7IbCf#ROB97|hCpDV#IY3Z}%=;a=lPsHI4#FB+i4ohet*tI5ukq)TA# zbOrc01o-yU0d^^-&!sM4JeyAtAfB*f2c31P(ISJJGltHb@LE6&Rh=YN>v{5OV3 zlK4!l!`V=-Y~=dBek!@XwHPY*dapz_ zRSOv5^*+Gh!mNPzM?Hhi8gz@Tg3p+SE>jN^+JT zBAw;m0hyTlCai+2?Z72rPvV{BXHT57oCyTsC7*ael!E%6je;UC;~jDYc^OYm&prO2 zoY}zpNU+>5M-VKlLLSfQ9EIr|h4>tW-%1uTU^@M1{Z3SUf&s&^1M^GH0vl?T(tggd zgO_ZOqMh`D96>uN6WU3Mv4hzkcl1&8AtA;0!J%JQqg!l)`B$i97Yq(&3)#w;k*GfI(C50JCKjv+1VR`Ux_%xPh7b3UH%lWtl5XLAV}qtJOfY z1h-$8`-lC3Y99WT9V!${{s4RIuk-t>m29za%Bn{B+8mYc76n6tWEZG#joTS1PXWh;i3Em2*bC1p#e2#X8+HZ7Sr?t3F-yp&nh1#!UG){^Y#nvtU#1+_e2<(qi2i79g{ySID z#}M?#Z9!MoPE4r%T7y}6sGW0WTA}s_ShWoFxE=IMV6T{6&e`gU8chxLSb}!Ss>s5b ztv>;WhEU;*cnXCx^DMukU1GOA&YjXFcH6>SaUs;0;+ogPP}|~~PpT6}OR5@SA%)GL z7ShyI4&GOH25!JD69^Qjp`kHz494)Zk4@=Sr@;;^e#u*#gnFmi0K%8c6wlYkA43&JGyW*9rBRJ_=KRYyB zDR+6<9>2#M#1NmkUf7Qu&Xs^hsaPFi==gbmgj$mmaDXt7JCC+H z{C8jg-=51boQo@n)WGSojF?2b;S8DgWpC|p77(XfI%%1GfB_Ujd9+xdiSTs5eHSbI z(#Rn+8&1(t?o{+02677WV%Ky0Wc{*;lS1zq(;T=#a3J)xVLbTw*`Jz3T&PZ(D_uqN zyHGT*uocZl2H`7dR;R?Y`2{8E$8ptFOlfju{dix#ry#8a^6q+`yE0Gc`X?pS`X ztCc=8fjeT%x%b0RTXXKRHkxx{8C|Wp^|*W1CeSBf&C!^O!5D7Mt)^Ggx8}YG^Ez2` z??$ArazfzZjb=bM1o)5W3(OiK)U^ukeFk1x%+!0m!;Y^OvlbdyW^_+Up$L|lU-2?v zBS~krSILg}U8K#?7f7ZezSyS>NVxB$z-5*bnv?wvmbEmdrq>;4x*@H* zGGA_Yl|^TvEV{*37Fn1t@vrjCKjzPB{AyI@--QwGve?W&;l+;5{JWyPp@4N>C?Z`XJ&r`Ds@uC?)`=EO)j+7&aQ9c-Al*E|w3OR!% zA!|rT@%=W%lzjlU*_g8H9C}Qd&(Y49a?N#}K8ovf0TIq9ru;re<^9#iI=nO02sdpxFGuR|tv%(y3T6pxG{{|;9< z41(_;f6X*f|xSN?6$#r{dpWsI61+n)Vs8%33r#SwK1^kX+c@=p+fo zj6a4O?6(O73wRl6%&!f`a4+Ly^lGA)F;S~-|49q;Q#Vg8K_s_@(Q%mrh@>6B$DF_d zoC7`H0`i0jLX$hH%gdC@#r`a~*U%%#1FZEyLuPCWFI6qQ36)LPN{v>0UdFkxbak;!lO|5?6dbj`%J%$9ECEn#k3gpu=*=FA0d{-wNb@SCBt}AfJ{x z$R{xxhxnHcK`g|c5d8+vEct-FQl>EEdwX~9z1Lon%Ud5AdpME<|%zmhM8dH-^S*lRKX;$xV5#bW`3A zGAj2+prUkBB1zekcsJ$RHn}N-8&v4O3H!cM4?na~59AU0z8pawq0gk}#{7kx*}zjo zu>4GpAXu&pd8g8|B6-J<^d?km@RY>D0B_xv{~Ss~L4&ZX(fr!2z?xpE1fsL6amJ@C z4k)yk|B_^&#k@MSn2Cp?Ep5K36Y>j4Nb&tPxf)*&z&7h@be%(YHS#&y>1tf$x=vpu z^-qK|ay1^#Xxx;mag{5uUqfI|P90baS7XH$^y?7x)wZB3<0;0~c$mSg+||fAGc8x+ z|1ei0<@$)5tfrKsv8N97NVnssam7P!NAVQgj$72tp*bBt7t1SlPRA<});PxLcr6UI zbvoWWm7I=j5ykymK^NrpxbZ%fK)!$rlE!?(U<~)@T|%!WI%^WO?Y%IMaRgk~wqHji z?@1ltQp7E=P!j?9i4eaQ6&F~(f$kWnf9S`|K{#ucDgQ8A*#olns`)(TLU`e z+JU^6g(Cj0Dw!)ye){pVKko2xWkEjax)k5QrTDGwQWy#PahlaBEqzP!t}V&*`T1l0 zv9dTW1s^N?XI<{diZ>wsGhwu$H+%-Ynz(m@O&|H;A^2D!u(K-y-$Vpnn>GTy*FeF| z(oCg)SS|vVNXgv51v3PoQ)LWCuLtzxlr^V#jYyrxg(BCRQ4Li9qj0IsZMK`_9 zKw_CEBYtT}#2QW`B!tR84Sc!YX)p){K?e=&JWWFZzcvJAQ==$0{B@9<%RejXo{X@g z`miA2AYl;v4)ok~dLly7;~h&x#H*#%NvIM_V;@dk)i5q%@7$GwSlEhJ^H+m3;NTVknxL1+UQ@`tk-Lnna zJ#{~6IN#n3kiGXzn?7}inb59Hd4spn01EP3yoI8v{+m&AUP){m&+*&5xlaJcR?*HlcYmiSXxGiD2iJe>Q;)V%+jC!cbec z{H;^UEiV_Lk!$|jxRahvAYs5YPh*}k7{hnp6ZC4L;hpH3f8D1Y{h{AMBwqug4gH~J z0Qc?>nkm9Xj{Y(3pI77uuO2wU@F&dC_A;ZR`7CxBDl$(NJw&e#JtvnTzFRFoA1UJ-k72fx5x;ZVyET0M0xV+CwVS(0LB%-{Z<~$^!szcgI3_fuJ4rb1uV3augeHS@1YwY z1)&>|pdtBMBw3(4kTo6EF?t`@&2bBEj=gL*N2_(|Y)KXwDA6A&yqCM;eJkR<%pC8f z^lG9M3r0f{gCsdu1a3nFhSEl$_qDJm74c;cJMuVJpzTIKNfs1J@-6nSbVZylzCbWW z2sm8`N>G+_fyU)qLun@EU1(&ypyLOgUT>O8s19OBa^?|mdRT!o#w!; zjKzF$XbfUp;s{*#Ov$G!Trs}`F~8g#^ULVfMER6>0p?Av0Dl(&z9DUZdwXH0QFsl5 z66N7y71}#O0Jgu_oiFxN=~ah_Id-D;f-$?gA0aF$+qP?s8euxpQSg$-(7X^J z!f;ZZqNJpN7%fBtAxNiv21FD@DzgQ!xFC>Jsul`3D;RIQvFBO}>au_?x98|{tZodw zCmKshvx$sGcs)}91b)SY9koh3Dw;y&Te<5Xv0tljGOv1RuEHr)?p>Q&)#*tUP@j<%P}_e7>Yc6z zD$5EeBsqH$UjcRA1XV!QZ+2lAP7-L88rm5MYnF2mkmlENOB8V3=8aGvQb-gRF4OszO?owtMCbFJahpy~YIkPkv(U-1;ezFP;0qB#Ly zh-D(XsPA(Liyss9oq2_Q)c42gOxEgFruIz_f=7b-Vyvhu%rT&QHKYmR-KN94EPWU^ z>0c5k8VCZ@m_Hee;X&YM=+#8`qzIoFUn}%RSWRPNRyTPbL8RXRqYZVMCe z$EBUr!$!5?*b6@PD+ll5=6IdWdH0NQc zZ9>jnQ(ZKZNGJzuW*@`dbV>p#12UP$^csxeGWkS$HBlxfo|Z0zd7NbMFA>QPqz>?Z zG$v=_cO*lFZ)ZZFrHg_v>%GxTwgg483%oK!YT)(?{WqR8qfdh~K=cIr0m1}uQ3jUd zK)Dyc^a6u1LCKF{B3{bJH!I-1cxBN$XQLT2bR6J28Gv%KkOG3oKnzHG36leUT3n!C z3`hbm6HzFECXOsh$$ie1V}FGldxb5>S}3{rS9v6coo5=q8Wo9I9bv1*Mq-2)BRUdu z|J07eL>zdGf-^r<+Ga`xXSzuaXtzh|(VE{NQ>*2Uh}ImqcfbP}5v>Wh{_a(-KgFmW zwf9U!v?dU!%FTkkpv7*?J@o0uZt4$eW@*^p(^FtZec^af=?j;Cj%eW3M2YV79 z*SU03#C0M>hY0mdUI3Nq`-_e0BX|0rJds}XXXa-u3`c@xh8#h#JQZ^7uM-*B zQD%;*9m3=8R*Ee7_TG}7qhlAni^BX+GWyhR2Z8z-CJP8-1M#rx7BYQ5-18XxvmB=zLdT|AxSxn>w%- zaiGgxLH|2~ewi)k%5aQ{0}UC>%Hu$sGt-I#%>)%7R6qS&N#Gy266!f5)b|Wf;y#=^ z=+$H&PPtM7KZk%;WC1IHf9VSFKM>$YQU`cGs#kDWpgV*-WT=%@iGkGNS|yc0&Sj_~ z#NS;B@jMdZFSdj*V)0vPR;R9Gn+gL)P)9vbIB$QYg&n2`QC>itw}sJ$L6oiN)#kai z%N5{%BEX%g0}RRA+?QAK;cmz>_y^I~1}qD8a%40@rc8M_J4#+dQ69)GNAILeJ`1-8 z^C{5p=X;9_UEXoU3jWVR>}CZ|!8v$T(J#YOdLk{(HDV-uss7_sVAitFEB-msbva(d zik z)Dd`^QJl_aP%}Y(Z}6xye7HMYUZ^eE9n`~OIH8rqMhUsj#dXnzVxgP&jpLVc>vQn^ z1@q|Ji#eq^Tnr*Hooqpe4t0VR{sDV054ErZ;(Bgq&{hHWzCQ#NbJVvFA`Vb&B6sbE zgtB71kGL}4zmf6&%a-vhBt`tI-0{u~$i}ZmIo=mVm;|wocX4ctcD(=S<=}W{0cazS z`<+wTOQ6E*L< zxzn_j-uI|9soKjd?JLPg|Ah3>{~QEu?mk#2>7&O*V^89J^dFf-K6)l)gc&ypAyazs zS2lW)oSToz5#-#QIXiw`ESx<5CucTrdJ-&ulp_e1SpZ9}XCtkf>vTp2BxMcnFrAS> z=VF!Bs5ZdAB?}oao$i9z1of$4z;MW7-+(S{9I^;(s9Cdf3xS1?-6(!vZM*`@7I~Ks z_J>01)t|HQtI$r`PL80RG&{7D5R6i+LE#J4Q#!WP7ZcOG!#iWYz|M%UG6P#;w%QW9mHA(j#meNycJ7BDOEd%1 zT=BQwz~ms-UM^XyNhamY*}0V)&zP}(JhueoQtnn*8EI1DGO;J|BKCrbGAZQ_6Cy;& z`AGzkQZ_4W1V1U8x5*KtY_>_yg!JXi2160S}mhFOyZ@Sywbho{{eZRuk2359Q z3)NmLOKvsbZ{1qm9`&-|^{`IfKcJHvTdRS+yPZDE{ULZ%%rrj~PX={nr z>L=t3mV|r_5>kA>O$jz%24I^_uyLJ3Pq5*0v@^lxe%E#KaGmZY!Wkvl+{0+xRD#X# zU4eZA0{dj@z*_iTW_;e_#Hb6Fxd{5dY(ZCMd`yDP-3GJr1RKtoX(iY^trhQS#mQ5v zf-hu6MkEkN7W2Icc_CEHC!Qu0TkjRiNOl!{-7r^Nf=5h6-@!1{wxaJobq1dT#ny6p z#W6f8k`O4k-W4}%X986N#eFnpcY`rJF>F_Q)i`y)xZwH}nAfS;?~RCbZ|VrNsv?@Z z^jbB&vL#Ed1l2 zd7NbN9*E=}sRKM6=9>=lWlKJ_GodV2-n>L9yGL9(wgWl#AzO~MP`~FW z0|K7Gh-h8FCAgz<2`Yx|sJ(AOqIDs9jOPx6eW69^%wsAkN9n?#)u#F-Pf1a^ZDdsL z4Oc-7ZXZ|)8I{9jVNc?ta-W>%BX@*xkW$ zW&@Wz!E%5cL9px<3Ij}BO*B8nPaFVhjgOI3GN7yO+T9zqgP?IZW^`acGc=AF1$bsJ zr68PRMj0EVh*{n#M-a2@8)BBkQ%_OOU`fdRkdWg0ZHgJ44Zt=VGjg3nj~Vef+8Hyt z+I5`{#dZ1|5zZ)PbOobvQ!%4kU4cCef&F&sz*@wN9&`o$%?SGawxBCxGA3qpxxuVF zX2dx&t(Z|vQTD%G3H25v)QbivasSTq^lGwyC#fiV`>QR?0$pVsjsR~9qvOIhcmS~j z*rl?XYhah5N_Td-5@G=oqSKZTMlAk!w#Y6`NmUItr;d7{a9-ky^AU*iVso4q(W}jK zYriYNMv9~0%dysWIaD9#j z60E-FfCnEd1g>*MU=bp4ZR!YYNEOO_aW*8B732NTmGO>7#{0f4<5@_G_*c18o*9sh zUyX9gua7Y1Vx98h*ck1UzxUE3(2PSgc!sgIC^X5*}R(s~7Qmbk&!*sDE|9!Xg-*5Q^@YZh%>m~j7 zxOnVIy#M~g4IHB6gngqNL9iSj za>7n$a!hA(#AkBsCt1jV>2%-JGSsnx0Yl-8gUs(53~Z?5m6~-9XB=mP6z!yAI86r!q4>IVUA7JL?ikWqr z@uJCOGjj7e_a8U_YUZN3>TZv@$ib|=oN`u^48$eUKzuJqm)zfBg`|Oq%f+6=8;FB$ z2BO$Vrh-6NeC_(2GT}aGBX~*Jzh90ZVSjRZCfq0G%mzw;VEMQlL9na}DxTg`p?k?u z{$REM{pvHK<>+W}pzL*E$`jlrRH5sM=w=X*)T-64D0k6vAKj8KGaBWd{zSs{95C^=D%pib~t&DYIv&KTPQvYM2lI>P+ ztj$)2@#Z8Sy2NO6!2AP*%z&4HW{cHA0YNT8vq+e5z~@&jQM*RGi%GQ&#`&ms@SzY7 zDCUbpW5@bqZ)TS@Q78XQ1qWmbV{9Ura_w-oe;6i4g!o)#pWY(!VY5f}ea^enq$U~b zwUpFq-+oDQzQJD6EzftNrWX4qY-$Y%_h>g&Y>sL@HyIl$VG*>m zl+V_XWVdMvNFyut`f!0mm3rbSRO)R}hpl!&>QF3e*wyL{BrIu6t=?)FYFn%KMRka7 zc{#OMGqY3lDXRiEpan|t^0=)|OQ2Su6pzNNG8n@%pH8M%6GdL47w00F$JigN%jgkA z@*@?!>`MV0}Hqfzrrt#Nb8v_zCsayFU!v6l_oz;w-#7`T-k?TbX|%9F2z;0OJO9& zSJJFb1=U-sD_r5^QWods;A4gV-LCi-5&yf)@xPNHm6UfI%y>ymg!#2A0;7n)V`(GM zd(A6m%vg%e`CCt`o6qB^xRN;?PSDu`yaX4| zm9qnQZ3s9-*?qonUkJPXqgsYzGrW^87EiB^iu-^EOT`g7*=7s<#SuLJ!rbiBu#?$o z9;WDKr(jZLY&yDsV1S*^P9r3Qnmi3p)2G286a*bKu=6wx1v>SYiU0!~gnhh-gnzbd zgPk`B=YE_@2OJ~}g5QB&z)nv%0D3&4FWt5`P%P|GVP9o(s(u2FIiSU8%U!jMl;AAL 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 C-?#Aq literal 0 HcmV?d00001 diff --git a/stable/.doctrees/api-reference/index.doctree b/stable/.doctrees/api-reference/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ef4ffbe7830586b1339a52bb220cac87cd0f83b2 GIT binary patch literal 5640 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

        oIo-a0GMQcri+C zv%{U4O9HbGu;r~r_~BPWeu>bpYWj>e=k`Jy5%K> zh6jDKooA&DnZ6JPPi39v(>GKhv73gg=rPr0j+Kzk=4-qOQC&n)s-^>^0>6Gaa$L=;;Rgq*O)-yHvYfn^|T#)z02uynBav z$cONjLXuN)9gBPH!L8b2jnOlkV#C=)!$WC0@7Ec`n30Xs%{3r;*GWYr1&qjeV0=X3 zgv=nmCFul$q}iabPs@ccs?44io0DW}c*wJY74UO@5Uo+lg)B0!vQ6A{WctApo4GwF zg*JW9`4cS)r6DP%gAh`}EvBRlM0eVNkWX-b}Xh;%#|?vSVR2*)W*7pEM0 z{Sjq*C=haa3#lPEUAdgjR&FmvLSi$d5!p^_<<#7t6}H(NKtn1#{du4yvN{_xjQvGn zs%iiP#q7KUBS*VGNwM%x0-rKU1+hG~l;pCK z^A2RnK&%{%;0PMxK%n@fGk+_-KwM8rdBx)PjeN}dNI{H0SB za@JLA7b!E!y;GnaXYr8kuxM25Ue}S5*PC=)qsOe1GwuIRc1*(Z?f+fk=0x%D3-SZt z@`qW?ExyYGt_UG1G>;l91vAu4O`)Dy2DJWUWao9y{{nQzi?U z8`w6jRGiy?By!%G(_W7O0bGIKMlMP$p&~a0%U@-WRo9Hqx^8lW+fewiICsqVC{9Q| zDr44I6R;M?SqP$N9}c-nfi@yw?z*6Ryo`5|J%KV&DgRHi!oM+Xu`^F|O-iEIxn(&| z5P&an&aTT`#fs@0fjB#>61H6EAnxTKP0tI^GInYF+SvFFk%JSbcZCDAEH6l&*emip zFL_eq{qC-Cm{S}7Tu>XG7W`O27Nim1)Sij?zZNFkl^w4pl1|VF8~)C2gl?N{6t!P* zoA`cicOtvZBAvK8UceQui_l$@Q{mfzUe6|MRrjbxw%Jo2aq!y-Zyu#! z2RjwdHZyc$r9Y1qiIL963>$C16l@%h_28~SJWx(aMUNRc6E6jvr9CTSag?^LI?e%E zJLq|6;aH%%4SX<7G??6G4?%FjPy5_!e03jV_ zJ7rw_fcx1s57uy<){c3wcb;zA`o{1#hcN5s$j|8vIksW1`iWbut_-uR>GEga)YJD` z((89V@h()Wf>Jq*Z^BND?U`xi=KY1)+ckl#)+(}fZK82*WZI?F!A^0&-cs9DN$k8F zZItP#EWWK;#(h53DhvLzSIU|SE-TYQmg@7V;ipgGqU(H(Rdm%?*^s7|>w&G~9-QX- zLu>;~cY}cs2tz3>V1`6RzGD1Mq7k^K~)jt?8v(g&x_oveV-9!Ur%^WpSO}L*AC_W#4e=nlvSe7P+d= zsJM5H>qGakA8%^n;sYeLc%d;>{;$yYeCSJ6$X~v&3c1s%LQ?noqY<$7^7PHywb|Oz z%;Ma=<+-~HEcv-Kdg*d`bi6z|wmf!aa(rU)^4NvZvB}ZVyZNZk9z@d z%hTeA-2h}l#3*(Z9KJ~;QaE?+n1cJuy@0zVK0oOIH;dE5BfuvGn^AVQO-*Eb(UhEP zH~$c-BkL+pw38EMS=5!A^&8^!ARlwcqvPB-tu|iz;sq6~vWnMI@*21n-Ud+jpiqe)eZ|5(fY4n>kx9dGe5&He zeVpGP4p7~j9ki4++=y&NXc_cSS=d%^Z>qb)epR^wMXZ5+?-el2cM`eon)a09IqBydVzk8 z)25>Dhl8dKzeK@ZTZih5aH%Np8|ABI&&2baogWo(5QW>J6ui2?IDx96aOYTz>D(+m zVwNa8Q}|MtqFFfzIT(!R&0vtD-|YNQ7#tp_J%HCd11PdYE!%*sbOXk9)V3W!fok{~ z>R)haRna+BQ(+ksY_bp@jw5`+h^d2D;bE>t#^G=fw|N{TYYGq0C8_~EXtkA;1%X)6 zfKxxp0^mCSLU>HH2<9g8XH9L72fCx6<_^7%Q|#t(B|lPdiRLShP0z&rdYVf?p$@sm z*a%%5K+_Q^8W6L7Y{r8y2sy*Ifux&4$B&|3^%Ol}5o9HVEXG&%b&$LdmAoJoO%D0n zAD$rj0_WH(U_{Gop(^Um@!@c=&D%|5X-J|w_9j1K|6XT>Y+uEbD{^HfqNXyv>V_7 zsTfX@s_=q(p`Y18nI;xfV`-!!<<$s0)2icMw&$;dx&}wF+_Ufv4ZT(sge|6}q;*>W z`$STF3ud(%v08f;9_038Ds~Q!#_9y}3syv4N)(4F@nu25I41xUSj!hz#KC4LZKj&& zV|4FZa{}8h(-X>1dQq2J=$eFRsSZXp;=xN3@5yApcutM51=-&!SG;+t)NWFU+r%)k zOxVkb3?>}vi}LN}Dn6%&6Z^;H(s)W2{=D15Tg=yG=^#AWvG=$hd`mnvO)R%1s88`B zAc8dHa8YDH#pfF+S)|7Jd8By&U7Npx*V6n0cn(dv8qxd@di{6&6NJ6gm+Bh@twir< zqUSTw>sesD1=z#{M!y(s{9Ftb=LbPJke3&+`T!!-*oXtXxP{cB>=$!NzJ+92v_igG zb;n9YP&B??XiR(ecFfo-R~3U!cFYe8=lZ0t-YCwMe1T&Dr7c*LtWzKI)=4G-hWp42 zu`b$w1l)cnT7&|^u(*$b=QNW#MN7g8KZi5qSz6Y>Mkkj%}8oxN^%G)G;7I*T}4>!-JQ$b%e}id z`=H2Jsv84_O>_zr^%f}5Z|P^FMw_4o`XxY%eC($J{SVv#1)8*<3Iu5SJF`2xdoM39 zuO!-uP{*NgcXl3U&iu}qGv}PyKOX*z_ik>J{}TtIw&VIMx@p^fVDl&yyY0YATHKG* zkJD2>OdqG?Vl*@#MnMufJDRq7mYj?Zm(j)}VyajQ*#QGJnnm(O3ExP0E4YFwT?d&ata_Uwf-=g&^o z&t1A`@yll$4eR_F`<#7d^1>y4X#!+N6B)S^mgizR(S-GVPjA_&bHv%}9Cdakb?{*n zb2S%3v+Y#*^;Zv2H*y{@H)65FiE%7)xaYA(5VAYgs^^(EUe(z~>MpWRb6nc|{Ji*|q9iQ{%OJuwlqxt|fK6Tx~Ud$#Mk6|^Rz*sOb;sHVTj z(Ve*EozmqB(lYPz+?a=^S0#K{*31@pOyp1bx?>3ll_lz7#OIl>7iWXW40D%K{z`v3SXIPB&W}%wl zMz70ZW(S+H7{TyK=%!-&=@&;b?zNtb+pcdkb>4RwYL(s;YWHLsqZIjrsz9*o3GnL2 zt|gJiOy8D8LFoQKmMF$;Ua@3hV=xvHYDjX2bJSQlYV?A-pWcG>Ky!i5@hS_s83lfH znyo^LA}2^Zo0;B2b2VbzC+KfVqpn?#A)gS^cHsK)>Fl@9xec)mSe--ee9l^?pO~Jv zN+ManX(sR+?xL<160bJ-gc3tK&t3OeE{yPYwy zUF-Am`ZIH&Pv^ZxhC(<#w+*^;Ow^u?cO{@YX1F>2cXa`3RP4)DpHcS$YpJR)eq^@Y zw|E#q%}%rBGujfCb(&?1{av%IwRmjWW^7JtjL~K@%`%-^%hp>{@3K;T)ogjw>=7z6 zW|pEAgwt#RyW7Jcv?~%9ghfRXIF4E~s0ASmO{$g^DiM4hNX^y^TR`v0I{OP3-nee=#u^Q8q*@g+=4Ii;joC*f7IIvK+*2$1}*RAZuWJ zZr9vy9+67&RR-U5_-i&c1`Kn{0!M1`Qg_2_BLu zL?#lHaT0O6RH5G-Y^;iU`dM|F&beY+*~IAimuj>A+##dqcXIB?(WIU`&z@?c<@$6G zUV>KvvubwHey=D{>jT>e+9@_68(~G)DTDvt6(dx^D2$n;9=cYgvN&|zuPp357FOY` z$D5M$UvA7iu{W}7uu*G(0QXX}+k*U02<(64!b=-Q7oE<>if-}RQc}lx#>3{zEmi|! zNP)N(pSTiPHB!^pYMBwwYF4hWS*@0fPc30r0Il$vre?Hd{VDa=+_8Pzw!Rv$s^RKp zv;T3&d=Ac=eYBWVnN65w7KOr zT&q+iRm5%dx`18tTj2M`$a8+x!6zaLU~8VFMs#Ay43v%W_SQPQwFA3?wJT%=Sl}{1 zRl7n;um&@NuUs1pexFzO1scEo%xHWW?7Dq;moC!p`bvbt;(0nPZu=b{NEg6?km<+DMFb%E&yR(@a&8@Tf>f*t5{-19Ob#ORg;XW!Pcr3wiXm(?)nhNRlN<2GE?o+ z&fjg)Cn1Y0LS<$RU=i+pgSUbhhfebIs9mhHu+)w3gHwHUW0xO?48FmiXKfiO!oPs&o)X5s#dSQLkW zzlf?K$G!z`Cz-rd-LiNTN!$mpH`(3WcT{gM;UgCKIM0VMdvN*8xheSI{3zz8&0tR^ z*!rw+wJnWM61fMuHcyO;9Y|w#wr8)m;T4Oery-75($4zlVN4qm?AM6ZSDDQlX5z*2 z4A3%{Pzb+CD<{n*=L4Jt9|-wsWEYDYhcoki1LsyL|{^) zl|7Uq^|xEYw--0U>YyY7(ItuWP?Gr1TSH>i57}!?sxF_(duddCLxRKqVg;_k0)^4S zX}lrCD&&s!7TA8>4hWjhwq`{Rv-Mh|T=wocmphx$64@Cpfr=Fz`*pYNTqbD%o7Qk)~x2UBo}gr|L#@=C>?Iav_02C z_-T~|q@`gu>x^ZXF18%8_yvtD#~p{Ka(vJME3g>a(Yei5wD1sZJsSz?-mZ3=>)=bd z4yF;Mh+TeaUiYDYbL1#Gwn;kr(%t-D0{@Z1qR5Y37n6GP*Lb52f^Ty?+{KQ+9Jn?x z0)qi4G2vpOgRI9_5C@JvyQ? z@=591f`oAX+`IZiH+Cr65Hd0#8Mj?B6DUTK5h!1^bH6SH_24~TB*#~fwW5PPgQo;CCW?rAaHT&9wqDyHrAu`cwBWeOh*|3>l3`uG&CxD+s?-sGQ?JpVM5y1Jp7+zo?YBlq2Al^}3{4}VaMOjSldFCsl{@``F6mR+eO-CEHQ(yu ze_w?u+IDV0h zM9LUeg*+qLZbN1ZkRsKf2@&L7MZNrhnQ2rR8OEto28VT)V_&8j5JmT3$XIj$#c43l z#>s-cZ3L?BkLwe~dt{B|c^BomS^WQ+I9XBe|K^vvA_L7X@#|K9J>FkLY>>&tAZN>N~Iq9VHYDhg?n5KNy5ZXYc+~f z-W8>3zDKQ(G#_oE7i4;l9kdXHO2tmd3o^$r-x$GLI8((Tm19**3;~Mby=$lQGQmc+ z+oS5j+l4eSslT1RkGzHP@ZAtWtM&oMgKfdvk@T`fF@5 zaU#Jc64n{J*Fi?%Eq?oJL)*4>?IBlBygbfYO9;HQS>4}q z^1EFv9#2$E+!NZp1rPkDOg+jTSO|k<7q;Jh4O%v&s2ID-u82Y$Cy@ZN|>kcl8J! zZar7_vkQ+;f*o45pG@Vq%yuOXBmK1S)*}|^FV-xR)jIp6FpX}RwR+;)9{-+hg)utr z&DgS+ygJqHBmtR8A&=LMPt2{Eb_)){UgO7Jq(*+ka6;f0&e3Z3rb2eJr6Vu#Rm^$N zkx~1^03akcbZ7y9lpaARF2EMs?tQHSPk^sKei07IT*R^^r8eZ4tu(7b>#-)i4Oba? z>a-~GuEt@)wT5ZQ^VZeOJMOu49q;JRh(ptlsF9IZ((a-7zP4<7F0jF~4lKBS>9lyY zGH!OndOXn+6;i&aRj(Gs3d&mG=f;)rQVLzJ(7#j>>w@{6;{2tGn0@W>L;oBTXQs)mim3tL6|1gyzCU$=On+T-l9#6#T;CbIkw zyPp4;rUZ|(Me^BmJ%>U#_U?REHPnJ|jG~vV6b=H?Z%{aHNC*_dkw2EgF^TCuv2fI= z(ICR{_Zb4WSU8?dG^q8Ug7MtaUkJtZXBLVCLUC=2g@OR|`3gm+H>GJHw)6x!f)oR! z;PhuX%6X@KQn*mW-^}#Rvb!>K`^`IdZ@yv7E?k?Ihr=&8(XP|Sl4snpLgPPobQgeb zJ_(?ECfz;iSj-YAVsDl|lo@B0JiEL+Pj#zi)pfQY#84Jpp1Y>5Y*t1XP3Tf94N&Pm zE2Q30m|x~V#$Kha>KGSHktT8k_aWt7&`z&u)k|7jdv#8WuS%DLC%qvC5;PZa*Co65 zIvfWv?qbeu6Pl`nglXKAqVcwi{kZf-muijT3hiE1l3k^xtk*ckgm63f5L9Y*-M4}8 zG7`h>RE)f3dI|2vC@-=Y!9CM<5~uUdfq5~y$ZPz{AqgO2y#@j3J8jR9?<)7yIbev7fYz6WEW5m2cem8iYa3Vc89$&^Kg1H?+b4)Kb^2cFu zh>`>h%qC8vvUJ$yb==RH7yBRL<}G>O(Jwb!C>aI&El!g{-u!;o2agP7>jmVahtoQV z8?{R{B-5wjXy;3VhhY#J4)Os!T(rQlV{TTQiUS#^E4>WMUQ%(a>rGb|%^yR)#Qv<` zk_OfKXy=Qr#^NB&Ap)Zuu*j2ltM;jTRNy!+aEKka9xlE@>6M{v*qkB}7zQa5;KNAf zQ6-MJHn7SY?n>&6i2d;C1x8sUcECL^_Ss3RZ4?j$V`Twd`hlz2qYe+q5(#cv{<5eY z@x%@c+yO(agYe!55jUzWB}%N=Sau`IxS+mpuR&%JVImajL(wiJ8W6L+m`ns=kaC81 z`|@fA`SIk9@-g~_LEyk6&m`7H<|JXs_uw9V@d$_>BKZPx{6zrKb6akle)r%>vA@mR z2AGmvIi|@Vkkba zzjf7r0Px~Gz|`){i5$%##nm4^!+H{=*l026fG8-tA^V;xdt$4)x8TO0!>TSg(C z#RQD(_T8E|7_H)}(27yqufvr)4{5k5uIsc+xJtjDK&~S&>MQa&do-l0J!9=L%RweE z?t6rpyn)M-g=oE$v~in{zD6KFF_7zlHJ~T3T)zPfD8+D?R7I53yXv_u#8xqwnMosk zMqnugW++D+BD{*#bvOb_YvKh9wU!Kyh?8gF!wIBlCE16lXIgUHN@-+jZB6V%Dh_>) zK9djqg{RVt${(^K|FH*OIj)WGZp_@`JVfK5x`4RePen2z-)cK_OE)2%z3jOmQl|RBii5R8&6eyH*$QEnPr)#qEnyiS+ zNngiOX8r7SK5;DBiSrZLgG^OR#J;NNNJ91@T`}9wL1|V(8dBBEKvOLtv6iI}wN^dw z3Tc#uU+pR^YL9mGII2dKjShG8kIgQOX?K00yRZBWYz*jciB{UE_TZ8TUC;tFv4`)P zArzzhW3c&y^bP1DeB%OI4NDk7`mzBFHQrIYrzn;Jw8!-kv9n2F7wIz|noT=Ru9V4a z5*h`S4Z16vEz6%^t>(7NC8&N`z>% literal 0 HcmV?d00001 diff --git a/stable/.doctrees/clients/discovery.doctree b/stable/.doctrees/clients/discovery.doctree new file mode 100644 index 0000000000000000000000000000000000000000..22a61658e9a5bd43ceb2cbdda8fd56c6a4adaf8d GIT binary patch literal 16073 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 literal 0 HcmV?d00001 diff --git a/stable/.doctrees/clients/index.doctree b/stable/.doctrees/clients/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3e482427664f9ff78b1140080a40cdb52a523b0e GIT binary patch literal 3759 zcmb_fZEqa65w%JwSV)U{<**Hx|%#Qs?ag@?gBJo#zms3^q+dy59*c+ zGphG*8X8-!WV4;MSetEr>Tk2IYgujuU0QP2{%p9M4*nRQ2|+&kaPYzJe`|bDhxX+^ z(OGcg#Y$iL%DZ+>;EVNa*L9=DdA8x&wa>@yvfz^X<6=VG7O__INnvr$+I1HgZ0==w!!w@$77r2;W3jb6^HlV z9UtD0-%bzj9Ndi$4-VeBd;j3hxx{PqW_9`yRUIVPZ!1FquH}JfP z=Z4!}ISo+YXw6FiZXdhd`D(&VtWK#u^Z)Y4?#f&oKNY25Z!RFhQZ0#98glA-T*jhE zXv#%plD*G9WFJx2$;d3Bxn=(GMZiz;GHVd5sZbMt?%Iqe36kvGZPz9mK}QzZgld}j z#~0jInNvndapwQ+wvej}{|ojj_BPvRZvnm*!Zbz-uw^LRPL0^`nI?HowI|Eyg#E)s zc!M2e5u)%jQ%npFM(QgWh1*HKmi6xA(P;4b>E{DYb3tNybTl}Eb3gA>AZo%wEMaE^-gEUtwe!0Ax7Qx@CRIy9iDX*a#Oq-r~^W2m*b7P{+h(=Jo3q@|#7 z*ZvC;1-P;4w{2C}ys-Y5?Hs%AluD{gI>k#u(6}tg@<74Wfe}tQ!RuE2T4;f{ZSYzY z8dg}v!L2}wXWs3lN?EBaU0MYHZilW7R*hz%3~KJ%>Y`lPTbT8P{wj@;T#iY$+s`~#|` zfFt$LqeU>dQ%cJ053yf}azl$mMc`p*U8S>J85%9`EK?-5(J41Pw0qc!FeQ+Q2p6fn z+?>}1YOIILplf0{2m>NgrdEsQ!-0D_{K6q%`?3(J4Av6F`wIF7;#9pNKX*fMA#LOo zStxkMt^eKCH(Wobc?3`}9mu!@tQRB`0^dVrxSum?b8|EvLu^L*nPp0jl%9^gyB;)4 z2cQ{QnxSvovi;C}`1+lDz_YK@c+Gr}EX@CMZXT6NLcX3*J>t}+VW6&syUOE%p%68OyCKPQmBykJ(Ces+0z0=Z2;7@^1XVE zgo;Tuce(wT5%`0^SH%XDO9-+1q{uO5g;BnorD_tu-~|bnDRN-W3VVSkF#D|O@hl{- zP^2owFmIoD1f=<>Vk16j%4Y{oueU!gO(y_NN9rVsN!rUN!}7g0iA z72%Y0zU11WwD588920R6R=?SI>|5iyL152vc>dh8@6HW-4S&C7J>#~QgIMm~jyX~x z%!#mANkXm8^(yz5C6yj7g`j5>C7Qe_RbN^YHrm}4i{1ID<)*zA``}z{1Ib@sw^grT zss@w9_{>1McnteW2mp>dpp|U?x|V;9%YW(rfU3YJ80rfHkU<_)2R4MVBEHgy%TQja WCwrvMG(>SL37l8cL+IkgWb{AH!?5@O literal 0 HcmV?d00001 diff --git a/stable/.doctrees/contributing.doctree b/stable/.doctrees/contributing.doctree new file mode 100644 index 0000000000000000000000000000000000000000..508bac1c4e710e30e1e3740b85ef0e3c357a2b78 GIT binary patch literal 28823 zcmeHQZHye}UAJT3*|+xjY{zxq5@%vJwa>oYi(@;9O`68B6FWWpg5$JqU3YJGXLe`q zW@k3@a_6f^m8xlzD^psLMQNa=tpo`Ai5DS61qh^8ssx{Skw8=`3P>OXh)R4x@PXg| z|2)q;v$K19yUC?BB9VN#o0;c%{?GsYZJv2?>=)DaCjKv-irS9r->#UJb<*ut zP)}O6A9r5uOnn3hiF7P>W6#drO7A-t_;KjgFo)kX;=p*ezT$bNaiwjCW*mea8j6uy zuiLi?r1b}Uz9XO>Z<~NI?l^nWiE6efXG=OR_i{Pi>bbt%xt!F@v}DEt4B&wFyv4O5 z+TXUiXGRe&;`cG%Y>D5tTS;60Q8Vj{q1~Wol5|^aHtAN!nQ{)yZFcTWpPP+aZTc70 znzncP)FZQ}Pt_l4oPO}c@%rf#Cmue2>coS!laD@9w@;sFH0r00TPLmK4?g^;{pc*f zj%Ee8v-KRJDlMzyyx-aB+~aIXYR(QpD2?ge>OwksHMB$f`NWOf7_c)o_ZP29lwrmP zX-4PX%gzD9igO=O;oJ`b9Kyc`@b57GO=FwRG2R{?b!ITEECHEFCxCUc8JcY;Pvwi( z1H-bHY%gdVfp0`i<8mNrJY%eYyA0c3a>KwU-ZNTB6dR7YWE-(#8;!v8f@Lts8MT3p zn^5oliQ)JDI7mCzv-c_6hva~5ZL8|Jk(MA$7$Au5R6&eZ4naynKAh3*{+ky9<9Oxx ziCagUIBrL0W@np$XZp=b5H@EmZ+2Qq#spXoB=#YlN@AU{bekNm5SIO|_xq{g_M47l zfh2T0>HhwZFgJV>7}+Ko9 zl!Uf%^TL&@XRlw(;mwVmq*kd1Er~+>Z+6*TbZ4KnV^TX}z_j5;Mr6mNgyzMi4}IX` zl}k_I@%akl@rbiOE$Njy8kawt$E9;i!I_SWi4+yopL*a+`GIR=%<E-!qs(=}_v!3gEi?0v2Mbas+fhl^y-CS7kUZ91+R9}%|{v6ac;Ea=)v&Oa!LfQisc5d`1PA}P>Mmz z{j_Z?ov0kIJlL1T7n7PD`Zkn(IdYrP?4lYp8`_?2!j#RzLd}X9q!Q8my1TfBqHpgF zP2fKtj=M{k}F>Wg-$=|a9$1wU|+ZG-DavFT-oRm;S<7^yI={>-quuzT~SO+zEtPzYXY z{S19O1o{?s%IVj0$OwaK%*2pm2#Ioxvpy2{U2tQg?z!ZlNp#t8M9D+npZ340u~Zov zOG;#SN(3AmVKZ{f5S!VB&A=}(%z8aYC{7UDC|=eZcxvPgOv(*BIl>0y7`1`5El9eZ z+|78Uji_uKPIt|%5Ym<@&^j=;TL)X3Gtx;so(u9!6|VK(knvl(HS&^Xr+A;( zq=Z#eST{_3`Hb(zuIU-@rIWV8(PZ~kO}$q~q8>%i`=ktgMUGr2+&vfCh`$Wecsd9d zGjO`EYH)saWN`LNaK5F%(L(g<(_zpO!E7xImO(+oH<#QdL4>H{CaHc3|-CscE8!vv1kom@oU(e8~K~y7ExSclNkSj90`nT(K&{MpN}mf%M}HlZ6MoY1InnK&9>^CWOroOv8~5RlLxxl`l&})gY^Vg65!&s*Xq&N9YAsrBXq4N=2Sgw} z8-?|L3ZYawWL(ba4w@Cl3W_$HOY$laj`L^49i_T8%*=w^*{B&~*?|Eu9!sFI9;f60 z--3g5Q9DRbWi7h|-33)cYbrlBr_IFpqAsi831vOsL6yuz4MLS*Rd^Bq4Za%9i&%IG zLl!=dACS7d<8T1eX~D~>ohhbfnFwA~JmQvSF6g8#)zdRnDIX>2!zrJ;&svu8Tsw-P z|60a1yA{O9o(pfh?>#Nb@4jo;$V(}qX(`J477L0HOt5+8`)=3un6l89HD9_6Ye z33d)Z?NHq(>eo?YF>3);FTnh#;)xGl5kV%_=IG8wJQ5`V~mvHVA`%wr=ZdoG+ehf2Cl0L`x{0b4WdH8@UE#s zoo2qAjkp_9T2`nj3+c@{sB~MahU|8it>`<2vKLAzYkQGfe9{#WW*M~^M3_0hSl*zb z4d3WmurN$5CBw;KN~b%{i;5)|!=*jyx~B2{#gSNooZ(ZFRbQ4PyX?^Fbs?ni_z}%g zQ7Z^ZMq5Y}#$8vPhv8ntt6uMn_w376V8<%CAYS1vkz#+9ek}2@(%@WXU=m4yj3iPZQfac`B6>otvxTHUl=&lXcDUZp z?~k+}LiSJf?k7>&UlqL9uIN@dAS71IcExE92YEBm6)^wIr3>?2T?0#I=$bX`AF^VC zvD*Q<9)fU%4JUUKAlYk25$@%k4fCA z_1Kb~e)F5vu&5b_Hw_Aw?`M2D7=EfLs4?Hm#tf=#UQ2vqo|T)Z$CTSiz~jkR+~xgo*n&@8!*JR|BM`9iGAppdV$_8oUXjuo|N&tZjBN|K zsY0$eLu)xbF5So44eG26!7nR~t4)4(Kd%6bVQKbI*CfgTP+B%;cn6q(DVfwUjVIZn zDu(E}uF*fUWz?AT!;&AS<;X5y;0mX0v&7hpk=c0PUY2IsKm`H(kIpI%M=24++=PN= z7#qv@lPm;o=OWY%pI2kx%t#m@Q*pKj16}dzjTug`J>_$Q50$5QpTg5b3<(D*X_H>C zvgm~jhljtSn1joP9m5?emob(yYZ+B@IE)>HQ%HSDTs9iorEMX`LY3GsF1YAOW7mo6 zUG@y6g;4>E>Y>|?=_Vz~Dp=uy?NjRvN@94NlL^pS@iL-p3baETK~@l2)Nn)%bLbc| zYAXOga!_s~rA8rGfVolPLqA7U5s5d)t}oKna!q-LWm+(UbXGvBBItMUHY(l(6C((} z2p-;`nEo85>nqw%s3@8k7|AaS*%9gF6Z_WL)e-DK4jmW?x0&+`-uYXfNDJ?ck%jlC zdxSTq(WivELRCY+oQvP&Edv3K(5*e`MO6@y_mv7)`f@lGzW2E{)B-6$xX|6@jefT@ zCc=?0K_2{NiHSgt%q#L6yP(6)qmPo>oIzdL4$IxHp4+hND|HY01mx`w=@xCf4f!s| zLAjrH%S0c+p-@t1Baynn|9oC4rnD+~REneetTG?kr1$0pdkJn66Hv!)gXa7|;w9%dzF1&~ zoZpBJS;C%j4%DBTm0l@~9qe9_k9bwGl3JC0L|I!_C?@*8o#fH*D=3C{DHZ&EMPWZg z;bX`|Aioka$E!qpLZT|mS-RRKf;hpoV$8CM4kXf*#Bw5kcJ!#}Et@OR(W63s1W78! z6|i5p>_$ARxP`_Rhz*J zqG>%a;Cn&hFk8zwGEWnV3la6SmlNaQV^ILZow*Ky|MRuar}p);FxpZeGz;YI7?5ea6h~>t4Xyqclqb(F~URM$ELr91ZD=R;G2#%MgR{- z>aT#14f4ybV>-Pd-HUL88ZNJqMkiZMw$6Z_S~1$evK=-OPr2S?7caQ6P(PUlL(?2; zh-Cd7RBV6-3cp}V@qUY!S3;p1Eux~&Yp_p8&s9+VG%W*l7&!SDEA`P$EMp)w!tZ6l zmkE5`#tKZAqk4;5SgECynhB7iCwqjpJX)VBnFv0XZTugLptM6kKSSLXei9?%@Vps8 zEZVOXAOayJSa|7%-hKGe9fg$~NB?6%OmZDddwOuEq_NK(EhGP0m~n08hW?{Nxn791 zh>^AReq3rm1v6{F3mZi$y#qD>@KUZI%L&B@3ENK`e9ot?o#>!&B8B~yz6uLTC_7k` z|02SkRB zIdZ*jZOWmkF=N@70a?=1*CCX`2Um`~z?3S?aUO*0>Es%b2uu7a^u2`{G-eKtjG3Df zGxue?Tw9nZ#3Rh8F+*Wyh6B4UMqpfocG+yV(XLLZF=UKa=zj_sqYcvgKRxpPKPmVB z@Cf@?V}{!QYj9CPZX^*%qEr~>H_#Cp=N(iS0i;x0ZOS%*Lr_8#{%Ord#*kt(A7OF= zBOuKXu@DSV8@32dLXqvQz-&l^5|cHdV3n*KCWB13@#3DS%n0)%oLQKSI~G1o)vF^@ z^_HaSr4gvA#tcQ(^ArKV9D{QipP)-F*ocrpq(mru5LSaqr%I2Zs5v)gGL5h1$oTq{ z#FsS!zSJ0vFP&NHtudsV%WPz+%Aho>Hf4Hbx|hRD;InVnTXt6eXoQqw8i+u&JEDIGvF)_VAVpBGZloJ$BuJb|mJ7o1ekq*oW1Nv;q zo4tBX8NSRUaw*VwQYbijj9grr9?#mMoWM$qAP}ZALAMFKk%%-Wsna%I|5t-tK!I;%juw0UPdV68O2MGT7y_!&1Oc>C$>r9zbmTiDiN2-gC()WlYiJ_2*#dPW^ zgl24gnSsESSduNcmE&*j+EWpx;3dOsn$Y!fa4yUfgB45tzu2ngliwYgPpn=(8Bh-1 zbx!25FN!?2(xAo58ldlv1Q4msh6LzO`>9PzoLa`r}D6SD{ zN$8#yy5?GVjX)F@$$#*Irb{mtC>H`9qRa3G(Jk5ni^cd?Liw38_JuTl#kdqeU};?7 zBW`02%;^T#uX~9_y=tU8WkV7%sqj)^gRaxdTak{f zN@BDUFLq%lia_hcY4j7oPc9Sj7X^aD{oPy|e82tU#_nKn)&Q4ZKitI0isPeGM@vKz zLE1YidUWLMkSce2B%&+%c;f(s;t=v#Q5)@f{R}b5hK1N91ntxbp6zM`WfW{hXu__UI1&{nI12dc91!eHw&KR zts{qeW1DH^B@j=tw<8>2tuvo^t8nBr%BHdI%vmlKJ5_*Ina`f&OTrD?8}T)Io>lCo3+ zxhPQHQR<->bQTAySWr0(xj1Wp2Qzg}crY-n5t=Ep6Ty0}YXnq=rU8LOKFqSj^)WdT zxX#}6ym1)n`YNA9Bl_8i8Aa)oPGc)1G~f#}oa9L)=xIh7Ms_0z2LhTBU0Wu4pyA9P z@dNr@#@Kc^P0wDDhm4{0LGR6YE?Vee52)Q{rbPN&oR}agC8&)MI4yE(=(wCEsx#w- zO&AtxBko>W6i6V9NGwu+9^Q(ql&)jA01Z~eXxec4TWC(DXS^WbK0E-tK*yV5B`71k zbu@#??jI=iW)N8Svw%?H<>fmBVL3T}tiTmTN2kyIpV@G9zbSZfp3J3<86Y$1@8z2iT9m8>3r8mSjw^-4vqG(~>)^v^z}o>+)^N%Ms*EI8g!{S~5*Ldm zhg|DHrF0Fc7iu(A^DaB$O+6`P^rjv;OknmhONdwvLW8VugWgG7j^Nybv*}4O$kO(u z`Zj}~V}nnu!KkbLGX+jyGq96J8ciIXbgk(x*P1!Qo^ zR|eZ7IVUw6-fyEfwS?Y7xTmsX4eomo;UDTMhe=zBJ~A$EF-XYv26dMkvIR8Ej#L5@ zP!Lb%Kw$Nuq5&&qV&pxHD`Wg<93|mw=b;2Z+-56y!Kx8< z>UaFaE10ogG>{%X3xVRSU?0lBqi({gp#+-IW9a8KCB8ED8FT#K z-$=%<-yfb|7ybaxuF0xj>S9%`bkZqdddgYotlvwMw^Xzm6=V0Fp(=P+k@9fCdr8-F zRqiBzNwfSvjKuO3vcD!-{_o|;u8{rRkZPPKElu0aXS%^q^MgGmzS66&<}O! z@>&OjOw)wAa!?{jhUyjvXCgmDXd}x(?<5LUgD~#n#DAEC9nCnzmj-g~XOy)>P?rjGsC(8Wm92QvnhZG1x~};ojogB{hhXmWEe1skk$bW@odQQT)TpMP94z-`r}SXI z^ro0lx!DI6au9VrN>VHyB|Xd@N)fKE=le~qpu?9g_)`#D);qg7`~HSAlkNjY`w_|l z=%}f}Z)xJ#Q}O+cu{gkK%$>PSX-Pd}Tlh1f^)@4mo`m#uk81WUkDclYWxG0;)9unH z!Y57kQ0qK@qXeDB$c*_G4$A$g>EYOu?1dK`N5q|uoy*SD<#eLSukXTR!%P$OP7+%B zTW$QYLo6sN4VP0Cs_DBZ)g<(Ab21L?% zNfp*QyoTept0esx8ez)!i!1N|`AU`E3$Chfl3+zSKz^j;a=Mc`o1Ty3;T$v!HgGwmQ z$$cf=<@yMPt2h=IFF`@H(upK)lpm#&<~!*<-8ZXt7zSY#IVQ`qLtvah#rY}el)!Xu zmNA~ClipjnQ>^)cTyd~3yfPhcK0rP z(yVK4Qvw_L7_<$4d|HVU8HKO`cirqDo^R8m9*N`j0J&MzCaCR zp^tVROf$t-n7N7k`cgZx6Dz3VIAA=r+rEucOzdiYBy&kUt}f9>U6@6us+Jqk$tT!| zgmRk_4T#xJY$k#(WI4m6lk%}DzrseJw%Jd=VG)#3SQc%cX0t%@9r*YUNG1LRi|!%$ z0_XTmFrw$8t*LWq_u+I`+iq90FOkq@cG4B9R{%IGlewL_ly=h;2EUyEr{?6Qo)XG$5`ZDNO75qRU0imUKO2= zq-YuJJ@R`^U{fSK?;@q!g*t)!f)(*{2baRCI97rxTeQ1901B)XL%%|W zBM%_d_Y}fli_cXr({Csji{keq3ykUdNk2YKKbGmoS5Pxw_!9kiU<-a6q#uj)!=WE9(+w)CFH~syWAx)N z;*f<8(2pO`kH4iK573Q+_>rU&1Q{Ju&pT$=RvE5UhG~`IS!GyO8IDzkVU^ck<+WFN z-Bn(5mDgM4weSpy*V-=|DNLRXTE6Y?V$y6r6U`}R;h_xY?VAgu~n+=i>*>xi?_N!u|See=CujaX0q-=Cy{)Bc;X5f4fULm zqx==|9Ha}{r&SBQOhNIZ`wADcrzg5*oKUOspuJu5!~TacIUMgQ&L!`_?Se^T0VdnM zgHDHp2ErcT)@(aRA56gYSHXFo?_7g=MyUykKFf>%^u3v7>$X*HQMk`*$>UKQmA|nVlK)G`$gkyLZ#r_c2qYJqKmu{tI+}nprLFdyXxh zc@=ClcZ!)X?K)c!_l|(==1wzPru|Qw!$Uqj^kL>$0Ko@l7};S(xc^03;4<@Z+V8jv zJaU{cI?oKA4tN&;PaXw>&ox*8(qhjmZvT*OFSAqtmO`Hi?jNCrUSnBF^LeY6I|)uj F{$JBqWZ(b* literal 0 HcmV?d00001 diff --git a/stable/.doctrees/eks.doctree b/stable/.doctrees/eks.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5611ddbd0af5444777c430aa3e9dd626613b72e7 GIT binary patch literal 23049 zcmeHPYm6LMR<>i0?P+`b%EsQvaa=n|@Hm<3_V}@J92VB=N7hU-F&-y&VwrYzRrOT$ zR9AKC;h6~=SP;9(h(ZFkceD9{gwQToSi}m1_91>F#N!vzf1l@M7#z)JjDq!r(} zkGfSg-90t2y@VB(rrlk2ALpKX&Uel|_uTvGvCseDl}+qlx+m&6uD@J2EXxlpJL;!9 ztiVjVwjcLD*FW|P{Wtnk>3C=?ML`mpc0b*O5~kyNR%rYETm5u56^~sns*C#DBioGK zz|X2XW6m~b`>pHQ&4}aBZ6z_rOk>>QS`m$B zyXhHGgopS(<{Mr9ZHJZg)Q^^7E{1lS$|ULb*jS)feP@sJ=J<7=BYZMx>Tk+zVymaXAS8WfLs_UJdCXpPB@76)3G_`Ic?QEbGn zshPb*>jj=`uH2e(;$&+lZ6U)*W}j z@$eVxXhX-aj0HPv9McTnqM=0EO)oGFPm3%|v)pJgQXS9~)FJP6qieh#_;oYrHqKq2 zzj*#c!!yur+;}On!{><8jVQ8o*9Wy=n;ykMXxE*%>mAcvU%Ptl@`dA=h!E^pcDqTp zz+)!fQ_g{O_8v}LU#J2^ra>a(9G-I?g|wra&9xCPuT-A!?|k~5DpNk9uR(-3)6kqv zjLw-23(L^Hpe;~Rl1Si|#4=|r-M2=%IMy5(^hR;?a-O4xa|EE_d;}2n82+BX-%

        4~P}z*D+SOD18 z4&E&!)52XP`#JlF9k34(v<5IT0RGr=0Nh?3r{0++1=7Kj<(P!?y#=;{96%Vc|B)$2 z28xlJN+!WV$=A}-{juNgzB+x?t-XJI+&#wSdd%kH_{*of8{z)xT`ogv^mwXdcTDiV zmol23-0c$0Nw2c`)4Nue^zO5#1ODvGS+;IK+7k5KXa7&}x7_g$zoM@S100u`b%(cR zK3Mg%YmSu$1iiZ&9OPYl3OAVoutiBMfGVm_sSg1eA;~*Wk%|c|xKNX4Atgg}U#>?t zgwkC;g{C^k!tp-=4`=m>SThjN7gZ@{jVfr<9}qOlQLw%*Xz5(f+Xm~c#C}h({QUtET&enVICu9S;F$MU(p%KsUhG%By2e#> z^eZwep4EZ>ZgACsnjQ}z$CD+9{;YE@V+0rMWlK6E#%Cen!5N|QpX31C_E zu!dEZh^idbJh3{J!AY0hZd&TlA(MGO?93=tUvw=)twn3bh_FBJ`D3j@!OgsD{(*=R zHFQ2SG*xMf()uCW8@l#{%Fy9qC>9w(XSF0Ru-L8?CeU(%1Z9YN%zBohjEql>#MXpQb2 zO;e>aG@t@7ftoNS3|$kwWDFbO4xRz1Xirnmnr=7r`D8(IS2(b>la+aq%<%`WMndTI zS`rZi?nO#Oe~A5pR2W)jDnYFV*EKpVl%dJ;$q13uCa2u+3ZHvP#tj*XU`Tz-%~@U` z$2u?uomIvpgV3FtEtw4w?pF8(CFlsT`(h%2v<&gyMsGo!swMEbACe2OkrSX$@SI!! z+iUN;-GUYgoPr4gqf9WS6DT8syNAqhKW5ez=6Emw+4PHZ%arUZJsEg+GjPTWfHSc) z$7E$=i=svE-h)T*=dK>7YvKcCA^vAG@yJvX@OnaZpHn-II*|Q?&;p^XZOI5Jl!Y0o zI&k{9lpIhU496UHY@;0w)EsDS&9$qBOT&n1%Dz)|nSb+t@{N=Y@J zxr3Au+y{ZLk_}#tF2v~*422i*Jrd`wx(Hx6!+p6N0|T?Fa6Qxs%tvc{JP+U%id3l> z9t0;In875MA%D+t1xBfblA9^GP7;cFQzUpgg(@4by&veS_}huCMG@kB;y_!34oxxywkQZ_1!$ zJlk^3kXm@XyvC3oh}CcQ9sAa}b|BdE0ylr{*>@L)y@$WwvW{^(%R!8%cTx^0gjo_2 zD@w@K8DDk%WlF^dqY(6bq{JK-k@dzJan9Xdk=UMTjfbwU$Vbi9HWc}r>$2({Ox~y@ zDIP$8i+9_p5&{l~4QM5szpCk9!}zcK7sv{{5s_aQk_>QADV!IS74r6+97DNXPyc|< TBt&s53pKAU521^fqyB#YnNtEj literal 0 HcmV?d00001 diff --git a/stable/.doctrees/nodeoperations/maintenance-mode.doctree b/stable/.doctrees/nodeoperations/maintenance-mode.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f9750d29d9568855f3f919983596297fce0bdecc GIT binary patch literal 5381 zcmdT|TW=h<6}Bv|q+Q(|+bIyso}@@)quyQHvSTSgUwV5{qZWjQ)lGjXo6p$hqw7TC&puDo_Cn4G#}_4$t|{h5SwD z&;Pu3$^Ds4l`@{34oDOwGNP(5E0GNIm?paTqPY9p;(2k$bTe|IWS)hzFqgm)GA^Qw zCdH?P*|6-I3pJ?LFDn{qE|X?C>#!xZ{AqEAbxlWeEof`XY<*04qG>{ska{sxC@e2n zuRNuvR);e_2`o z+?T{x1DL3b^OJE#Qr5QUzkbSS;4uyP=1bkEBu ziC`C{yfl*m_2kI=B%BCAydTNPJK;ijM4XU`0;kTi#2XPV@{D>Ui9ErNX=`npTjgO$ zX*BSjGKdRF4zqfi5$*QPlZa+*#d=^0C{M-^6U$>7d816m-oc*oejrKYeVYgii_D4r z?%^k38*`4SC5-yI%^5c0(0 zf!1jIp#!_jJS{z&1u_z9z)!Q9!Q!n#W<*m803{&@rg)-wMBP?E?4b93>_JaSoC@jz zbQWb3&mmWi8f*jWAuxZ>i=?MyOf@p!xD;n~8gW6@L}?m3yakz^wG-7k&n5wnj1iSn zkogyUvX=M1_d00IPp1EKi%elNqsyCNvve+O$WvM6tajEY(-{hu_nC4@%jL~}E8%_S z2@+6YQ3Wg zv@M3bHuypWU$?TN)6S)iyIinDd$aFqsneRYURlErgba_`Hu=R-9-uW4UO(|l z^Hd6|J@i?>%I4SwP7z-NNFdexL>Q_e3zIN zl&x`2#%PzW1VpjIbWdaPkxGf}pjOh1T3Aw-IG;Pe-8xu3GjToyEF-RL*}hlWXj0Wm zWF}<)66daJR!A=)jmq)gES=)uPhTB=K@_N7V`9+FoJpPye%;W42 z?2ooC*6!V&x_25?W~-I7T#Hwby135Fm5ni}3$D4ML_S7m{K|4GvR5{xt`sj?H=_AH zH+?j%GP`H4>5L>wxbD+O(HjG&WvkrLQX|0~Tr$0yhejCYR^Ecy2=mM~;(pV1uho>Y z{WdF#YK?k|`^9#1VQ>i zN<9Xvr9dB2jxg+1!#ooht!o+jwr1N|2<||`Y*Lu3BPn$vHEm5EESPnBZ%OjlKOM;| zEyLzrH>|Vzr>UPaK-HjHWWvzM#hx=DTcqjEH8~ zG28T%!)lu7T-8h+(}`#R_a2&!6Otvc8aU9g$Dnj!{*c;36~8wdJb{gTv_ul!Jn+!X z^{BtsR~+9rXD5A{Wis;_8Y)3ESlp@_>cVW6mTv9Rak~^|XKrS03-%AQQEoa_pk8`& zc4BU&*|G-!&=iAxgiDI+b;^XfaR)S)al15cWi*so)c!G7yu|0GU*&5Yq|$P^jtj)t8V;in2`3YTHyYACoL2uYE2thu#*FZSN zUE1L9Rb0cHA@I3vgA1@p#z3LqG1tY%TOXK>l%_t6LJ^YacOhiWQc#GfZzIEejcJ{# zkA_2#)gYZ{CX<28#>2u~x13G^aQbM4;U4X37ESx_-+u&qZe*iyZhK3aZvTyXdqgU+ zcs-)ofKxqkG7$YkregtNT}=XnP^4LLuwr%q$k=aUvpIlYmdzJtOHC3@PJPD5OyCFb zUJ=sbeoe&$QTEFmL9Jk@x7@fK`e;K48hdNnosi+e9HPM}gAG=8CdBHaJS|?h#|-yE zQ6+&FK#vT0G6DwbtZ>!l36%$Pd^|?IhcJ7whD!F`;RqR;#sQ5GzZ0myDAf>hJp|X0 zPm#QZk2cn3S*P}P^>PBRicy)f zX1$Gew|YI~h#BiY>{wE4Qmgq&Kes6*AH0v~hyy8_0CKF?=7JY-ygt8IHG`f2Dc1qa7M9ge3ISx|45+!w-?6|0{R*4PTU|{fX Do^kn% literal 0 HcmV?d00001 diff --git a/stable/.doctrees/nodeoperations/replace-node.doctree b/stable/.doctrees/nodeoperations/replace-node.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0d55b47bdc53d7bb586157ccf24bd0183d2a22d8 GIT binary patch literal 15883 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 wi;PI7Z^6+BPx# literal 0 HcmV?d00001 diff --git a/stable/.doctrees/nodeoperations/restore.doctree b/stable/.doctrees/nodeoperations/restore.doctree new file mode 100644 index 0000000000000000000000000000000000000000..91c5d8948fc301c8f60a2df51092b083fb4f629e GIT binary patch literal 35794 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 literal 0 HcmV?d00001 diff --git a/stable/.doctrees/performance.doctree b/stable/.doctrees/performance.doctree new file mode 100644 index 0000000000000000000000000000000000000000..12a91351e6bc34813dbdc4763d2a94121a0cbd4b GIT binary patch literal 16111 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 Dr;=5s literal 0 HcmV?d00001 diff --git a/stable/.doctrees/releases.doctree b/stable/.doctrees/releases.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5c66442f4d7720b04664bc1c7af9c0ed0a9eea8f GIT binary patch literal 40933 zcmeHQ36LCDdA79LQ>$HFR-k0dZ5wQ9(ac`DiG^j!*kZ8^k^vdVjC*E!w|ll{dfbPk zm1Tk*T$YkfxCROnQ%f#n$z${%2vs% zYBjge<-Bxgul)-YFgujS5*Bm)pc#7=(*^dxEL_X4pBT@GF68L#P7kHS`B`Ul)bvR zD5|ApTU(?$o-u=@D_m<`s56;ZbmJZI( z@0;B_KU3UuV1G$FIKQ}9+B;j`Q=XmKcR)KZ4YHl-fZS<2WIbOkH}viLxPFyB;1%`t zf!KxIHu3_0q_r(p5DE$X%uql2)hF~FBnSN(Ft1+=*rns!zRSy9w_ z-L}pdRn^tZ6-7Iv*(=IE<*cSHJ9*_UT~ih<)3nY~2fT?BvZNS}V%5+}EuS$Q%U;>7 zxVlCI;$O{DN>;UMxP(kcsj6j-D9{bpWyI*3qbX&K>g2g-{>RWOG?<%mnAMQGWLsW6rchy(!zIgf>RM^l&8FCa53tO$M%mRH3)d2mP6I%%0Cw-@ zPz?ue2EP7vKu$*2)beU(M*RWXI=iZz`6ZyrURiZZe-UTL9}fK#M^|($wD+it_O|P< zPaCJd-i7PSl|YMTH`KJPJ`556JVg8poTgC3g2wen;lh+D=;76i(o zRn9=zYm?gC*+RYRX7jUqxQK!aA(C&(iR5c($~yqx-?aqa*xbzAp4`lVoS-pYBq;rf z9Hl?*AEooNT$&N3D2gbpY*}-~6;i}jHljs$^tK1vSJEA)!S>|SB8(xo`B}GwTJMxnE5&@{0mGG-hAm+T!t0(yT;v3#P{5*? z6ot6TTtt;(EwUR{9S+a6YzkbKj5Asg9$7U+GDek!GhQ80S6Pcfn0|CERetSn= zd2=Au=7B`^{2Nl9eN(XUA!#-~*e5o|Ll2>7H9Y!-CJHUwz@x+P*$@fT;e7a90r*IQJ4y-B{#5>Z& z*LxwpUwDdQb;46TN^eN>_onXn`xVx#4W8z6v$MIGgK<3ZBB7EGNR#}&K9Y>5w)QUd zPozoyR4*j=3q{eyK`5GuJ?s60G=Jadj=!(6W^GY~2kE(Jwji%GPtVpU5-9plX_EiF zk0b*{?H%cr1F{qIX0+&HVh*I-4-^f|<|FH7zlB2fNpm;f9d|RVS$hoa&&@V@P!VJM0?fT061qkdGHyVrNe-9xNddkoF4_Cu^lVCV^H zk{|Cc$?aX|$D~RANG~M!2}ApNlmQIwk74M`(%gNqJMKQunzg~uTy6${iD)H1#ES%m zzAsJkQ+*^Eb8UOqIkHZ6E*nIPF6Od8%6-Dnz8Hq~#W1u>n!6jiAQb64q( zyCv4FJ%;uIGdy++{SYe>7=oy*42 zqKmm~lr?LQAw1+ncn>keiUfvklqUIk{Uy1*>wJ+k$v@i*$(>@Tbv@*Ng~!nk` zD$5yb^_9aYT$O)HnO_@MCjhm`R-e2DY4nt$rPM9cC`IX=tI7pd>QaKI+^p+DlB!|L zL~ho_S2&((nn)#QndL^6s8MUKQuLOTMdO_2uEaQey%)gmo8K+kuFeEN|*fw#`ZH9ZhS5#ECZ^yZJ zr|!CS=g{=@lHuxJF^`QG(@tr{G}Ur3{E_3ijMHJG>9dx-yojA0&h(O%Us0>(i|+TZ z`QxUdt=3BV^XHFLRR?M9FTj?Nnv2W2=jgkby5wYVt3--t z&=2g`R#c^AYk}b*t439@Jx4ifm`Ei@#wvE67$q`!1)G1CmNcqfv5J&)S@f`N37bkN zJCiK7?iEeL(U~omtk6^y>|Md=bl;-wC-4uhu?Q|5#Wa>RMc2%#Qqob14K255a2Oi4 zw?uuZwUwZU-HPEVRS!ee;ThN%+8iZ{8g7{1N#0;MR6)#OKbF!n_HK+~D-t%s)Uf}G z@5#~!{fVU7IB?R%0zscj_1qjm{t!m=Y@^}pKP@cKcBINDiNYNVH-^CFqJT@^=KuKr zELemFxj^{lF5$(pk_gGwa#6;7K#K``>yf~MU~kyQRkdhxixMZZZwli6zGHZib0i0~ zE7bGfge{@x{-zT@je#&oFPoGqm$8o?(up^~_%R`Iw-CM{PL&GXJa<_3sbL#hbn(=% zg*9vO)UfWZm3p)}DYy`1&PtP+?-QAmN0So*_pYnT1@XtFiGOh~#J9G6N+8~t(S15j zpakL&(Y+)Pk4;Sl^ZV2klN9DQeMpGLNr{H`BRZ~a)t2HD+ECC17d5{W-CRg@(|iJ> z$>coM-m#Dmoea@H6A7maj8latvrANp4aXV1>HyD3NMAY zK9Opk)L07oX?)PwaeVBA;?wlBhsuXpFUf&BhDz)1$)qa*krJucBU4jnPUr6yI^p;y z{=S_OSW@2Ws3Dhja3N&ZjB08sp>$b8yfMXW5*Pz9T(I8)7SpMQNkz4R1&tbq1wk}TNoyM+ zZ~eSp#NN95?o1GqBUw`Z)!9aPcS>YQSq}wGxf$|HA@TcC%{!9#OlXKSc3k2R9~E_C zh_7T#lcRNDh^K-Pn;YT)9_Kl??6+X`A+(j74qw|RB6oLcf^ntG8sTFpc9XyuWRT*L z3a^B$em&JVsi-D~$YDVv$6-N+n5L$+rH~=Mtry|9?!G%i+{_Izr=kTulxqe-@tfZ4zdm5;*lk}4H&*^=rkslXX; zP+;YeR98vuwZRI}5yuLdY?`*#Hbo|Tz88(O?!G&dos3M@E;XBIe>)|&qzcxDrb+F& zxhBel0)98uQAY}x4~>zOK~SqSu!2Br-aAFgS}$9Iu#pPax{hn2a&flGnaaH2cGrfK+sn(CG!N$=`M) zSU+ZoDYY9ZQw6KmIMmImDozRK2bFXbVeLm{tJ8r9v0le2s5M19XE^LgM1H(t2}{{V za5AFuDqXA5YIRvF88|6U)m9#oLO;EWXDKt2ojjf5l{D|TpJ;tHc zZEJCn9nqN43-V^8_zNk^<2*=~SF?;P9LK{tI^7SJ--!zC99G?F z9Ur9*j^D%qkT@6*={2-Af9m!l$hcwmXgyz?0VP=BrzoAiW0hFH@w&(UU$8w0R#?F8 zQWiif()(9gK+HL8Sqe@CG*@!M7KLvRw_~Q7at)$RtPAcLxcLds5F323WaLWaSndxB zrddHE-Dh3NKq2ojOtR@D!DoUWM}!;|+c?K#nsl)c?y{6{$-Nv5g{x<{7yrY_@sT$} zDQ}LBq#cF@B;Poc&1P%&dxotAC#_OOoQfP4WWkg?Q?-?;sUR09N&%XhQo@#$5EELm zg?u@3RWM#;7{z-;3J(hHvj)l?@(PPyjU^rhPKG7&)GSw_grdNNDN*Lu%R+l>sc9u8 z+hj~Jnc|V_YE`*V)JplSc$;KS7fk^l+NvyFELdmG2g+H&=&#? zH-8cuJcBJ1(Y~(mN)Y-3X+odwC!x`13Pxyr`_R~WnMjc&I*b-wtR8kI(I{h|5gOm4 za-B4x*YuOnXd470G`1t06kZB` z9+u&!@;a)$W8vm-lD&|@T3SJ5c`F(9I`CzZBB(rsVMK0AJI;TDc^S!V(Y0^`lj9P`z~Yl}wCG|s9c9g0xV3fnoe5o9(w^6ziKbZkDM){T4C&mC zkAxoV#tbg9bo#uEdL8KW@^gDfFWer_;3A9L7iZLaM!2$TDCN#m+&{%igqeR_MmWqveY87HKg^o7@KD1Dy!Phz z1aVi=Ne!|)oR9EI@bCp09=NNzC3IDPp21F*g8wX|UIz;9knNeKY>NjA5<>jJ;zzx( z{euj4veR9K zGR$zmALTD>Gx*BV{F#h;9caE&{_%1w%fkii(%~cF#xPMJ_A{v z!vCjw;r|mEd}ZqHDp)4Kkc?hj%P=c-Lhx zm8I}&GU{DU=J&N=J~|I8WIleL>FvERe=LKkEas17)VmzaQw$HyXR(f`9e23a!z-cl zN-u0LX0VgRb}6IYO+420K{_e=?(92MX^a+yBxF+fQY%lg0LTGU`3EY;T#An3L1moc`suwm69{cJ~3@- zi!SmUQy+uJ2c|3U4kXe%A!p>yQ_68VA}b;`DiFl}u{5!N*gdh$eFUkQGBe(l(RrGA z%FGDi&`V~=mYLMTs33*|c*bo=cz_-)pxMUXZ0ilSF@Jx(RR6od|Ll$c#v zJh&Du(o<@Ogtph-w*rPF&b%17bs<`vVZQ}$H%Rk#eK))*tWgUkjN?4K^T@S*sZsNy zOyFdpAo{R0(J$Vx*kp8fjKp=$EWbMdd5R%Q!iaO}4s)69Df#wOd(6#+IqMyA@K8>v-cV)*+?BLktnsv5@lz2*5hyE#N9otlF z#9i3Ag2Z@W!=+6w^nvgE*w~>%haO;A_YaO;Q24B`@c%9VD8byyN-ikJu-Vx#9p%E< zg+saYf2pDiN?3(zE0~3NufhK>C`Y3M%`nP^=q}ZUyNs^cj|<8zmg}0DO@}_YsC~+F z>fi||50E=uTCy##j%`4W<55@%MvFL#+ga*R}65W)Bxr_K@5YaAl^F`83+(u0ZJ~g+6QU=J&t}LWWy&n)J4AnT^MJHm&vnC_7tq|?^NhzshzJacLIH-i zNE7|Wz7T!#@&`Jc^?r0M1o(bw0lv3;0d|V$*7fKSG4PAc>+wg#0se^i-VBG^{1Ne< zFnkIkoaV!z_sYXG32v|O_p7Ysj)hkv>cRo+csdNeubEzzQScE=>#F;K_f zF^iYtG3q8l>T==kWw9%p-=QtPw68feI={^u^3lS*%6#W^Y^afp?=Zy665FxG4c_sZ zK*;(4?UzYU{qfluhY;fh0Z!G|cl%piTdg^G5sL?v0?sa2vNgwPAUgF2UCYHbrG+c} zFF zJ=?_92G=ST=t~-O7Yh^*`&?(qk)nMoXl+03&F~P z>!7pkK?&Ypusz`gdb?35ne2-vG*;LkDj2sl!g0aG#~vWKwf>l{n$hK;zX^v_Kwhru zdJeBN=ns}Pe3b?LO@t5PsDVeyDoREn_>xBKG%orRMh(&_;ByF8nI6~uQO{k>9mqKb zeqWWmSzBGZ+T1fgpz=_@PCx z35ghGpj5*rY#REIKS5`z6hx7~)&Q_Jl)Y-b5P=VZWd-adRZTUi!%0@cU`^^5MRiB> z%2wfAmB6%7J6E?Htq^a?P*QRWXAFD>hkKH+J z?)fu&AkPVVv6SkbN<{ZJ@a|!zaD`AcotUk;i);*-{2I?A>@+3(OJRtbFQG{MIpXaqyxX}OgcQ>A9t!anW1pM2fKD4s4eU|xGb0! zK7(;xr(z5U_rZogOohSkot3qyTKO-8J(b(=618%S{=5svNL8MoKabI$ zx6z+6*6k}Q{h6mfGxX;k`g5B8{2O)fBl`1w`tub2c>XAjHo_&= z`z6-%CD!XD*5f7C+a=c1B~QN=lRG0&A7|9*xqvkKNK`-?eNrqSjn0b+NTV~Y0@COR zr+_qyml$a*di4Aaaa(4R*-$dz5eS_ST~Iv9YSA(y_rR)dO%+D9 zM-x4c@=;l%&58ao``Ru|_gAL-3hyA?!Gyxhhi1<8cpqm5R*E=g_$Zkb%HIOLKhih} z=ZGU>;AVj-2Xk34U^K5Jiq}WQXpb-k>m8<7hC8>G$e71)IF*Idt;i@(Pz2|XRaYE@ z3#Nw%igY#zWG$>=s`E!qA}WD@cN&j2Ds+Cl-qh0?EZ4(GU literal 0 HcmV?d00001 diff --git a/stable/.doctrees/support/index.doctree b/stable/.doctrees/support/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..34ddbc10cc7a42c97ef76891215b2bc57a565118 GIT binary patch literal 3757 zcmb_fTW=gS6mFaDW;fa0G`#>)8%T?QBG}!Qw9rJQLV$Rw$O9mdxM=E~@vN=P*n{m! zHi$~_03wp#Fb_yP@n`s3e4g80ga9F`jmTP?CY5ns1sWGWp)-HL8}a^~y}RN5-rk#c@9*82 z+RIJ|#1x)>c(ld!KzkZ6_tOh-QYl$LA3&k`=jx&`uLMac8#8coZS^&TPLj(g->t zPbXB-$UQ!1H;PQtQY5GDC%b_Ro_m|K*Vr3uhrJH4TL|hH3BwkFvs)Fu!xKfa47VnW zSo;0Lc`|rA$T`I9S)ETb4n{#p5qSRuU#SKA*=V%;?eVv}ie?E3>A}J70WLRWCQS~W zJmkAYe!hK+3!lqF9!jwr6Z{{BjD|(Rq8fApj-pfy-qNE!RV z|7rdid+^_{=*mh4a1*@>c&El-8EM;&rAmo$_M!*K+3pN5=?uVuhcZPqa+NwCkSD0h z-b0j7Kr^1m=_6lCKDuA7M%RbZoU1c_Nq}t=!6u7n<+U(YL$(nWuzfV zNhy_1!7#aZ^t>H}x$;Sl zXnP)wxWNfg0;oYlQIbN^MTkP` zodTf`xBx~06`_ov1!BleJbWy71wm7VsIcL0f|S=9iX?I%P`b26oXI|8p=Kzp-S6b+?{&_pt% z36AlN`p~w~4`TQTICvC*0AoILtZfG*H!_%u>;;b8>PLB+1x@||)k46LdPXz$uU7*H#a0cB` z6h#K3{YovU#{m0`|Aj-q>O~<^;jKl8_a^!S;#9sOKev5xA#KDIS(xyY8~5R*SL`68 zSpZNl1&FW!tmh>Yg1h_5u+K4LGJP-}L##*HsbNx#q?(SMz2-HG3qUh4G(~?lMVq17 z@TEKVfagHP;fi@LnVWyPHjhdrK3|Wh8gXjk;tW*(*tanp)-_~;5{mqs)3G~9$TVnb zvvD9OJKY(Evr}QnEMR=f5kCer79Pp1S`_H~Y;)&S~C@m{_Li3~|OVcDIK5!?rX zFN+N*7Z76iQJ!I(@`HRaGgTyj0Sgi?V&p*03YR@kV8&U|Tyol(U8CaIPxH1@atVqTsfbyb zqc}`ph?-Jx6T12K>flvyH~WTt$s9V6y}YzuPWt|<08;?_#-2wBVbaGbalK^QzO?Yk z@Dy{h7nZ--Z|qlXyIx>UGu-^CW51ngb`yVpWj$^Ci$N@Q_d||U@be%nmJ(m9wO)Ds zMMHng zp-d704j<4;*59k-Kg0PS+()Pie3+rWFz9IHL3v<9C`;naMqGq)vzp+MI#VCTjmUFe LMGwA<=abQ&iI}wv literal 0 HcmV?d00001 diff --git a/stable/.doctrees/support/known-issues.doctree b/stable/.doctrees/support/known-issues.doctree new file mode 100644 index 0000000000000000000000000000000000000000..379b35b86f87fba80ad85015ded35cbf42a7b2d3 GIT binary patch literal 5378 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 literal 0 HcmV?d00001 diff --git a/stable/.doctrees/support/must-gather.doctree b/stable/.doctrees/support/must-gather.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6d1bc26487ead6ee22d91ee1db0cd5bd9c73d211 GIT binary patch literal 19890 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 CcL~t| literal 0 HcmV?d00001 diff --git a/stable/.doctrees/support/troubleshooting/index.doctree b/stable/.doctrees/support/troubleshooting/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ae72caf0541d3cdfac87bf2572fbe2909eeb52ef GIT binary patch literal 3747 zcmb_fTW=gS6mFaDW;fYvnnD4o4TN$R>~2e1XrfXfA@Nd?2ULp0MT2+7JGSDn2iucu z1eM?cL?nxs8pPk>pYeHScCx#aix5>u**QKwKK{;kF7sXMm*4v5%71RtfFQ!<4dIraq`b^WpQM(SMa=s=M6kp-S*#}4yb^(<|RM} z?&ZH$HkJrMN)G(!iR*D0iz1;Djwk~{_C9f)j7$@nTjuXyKnO@)Y9nB&P-B1U+KeX& z2zKf=>fMc?Ba3WIHBJ2eb8fBVlTlKfKz9v1J@c_(Z?d=9HhT+@wGgTiXu#&L?>1|c z2FIG@In|!bBNFxx&O#jQfJs39SyPM+4hHR&jKakvUt+xbbU57k_UPLkO>;qFy1&1( z59bEVW@7)VyL_i)-Fw%$3=AFcSjn9U!T&+bXnc5mhiFa))t%qFZgoMg-@7~F_r98? z#|o^?1>Sx5f0}>B?f-WdeU+a8?hCUFcxQ&eBGRrsQ92{myNdxJ@48dKWO4w9YLjbf zs6L`T1mrX1TJJ6rA)+}KD!msHB1HG$a&$u|-T5P&R5Ltme*iwHdPkYM2&Jx-%_nMFO>ZWtT8`@&YC}ImN8M^#D=P|^KK(_YE;u`8q&{0(l;pZd4$dq1^@$-S1Sn>w3I~0 z+_GraGI3(Pq3)pvu7`q$1{Mi=L;>Fgx5kKQUR!R9PB~Ds#1>|z)N-waj*Aq>^^b{` zKn)t2k_?hALKM?*DgTq}a|w(hDr1#|S;2J+I~m*=7>?i978fI`wbBtIG7%{42s`c; zqsDAjNY7bml~%mlURqf)!G3rB%IKK`v#r+_7nXLqOW^__nqhTA@NPp8nHD6afIC5* zyMT7*p3*c{Izdy(K@%Jk+URH?MNnurVCUO@zxV4cKSspd~ z1FEHfgL+yL5e#mYl9K%)_GhBp&>~S0>Myh|(P^#>jplcj6p3wg#0{_bxfvzg5R7oR zNbTk7EH98_JzNIeQdR>2C{wFNvw6Th6Mo?kRQa-_QW>lzi1#}B1>#h_f}dL@*q~$Zf4m-_A@$?yS%Vo>XQ$5gc0DF|q=mU&t>EJ_bCf4r~g_f_S|Vm!Vv* WCwfpP4N+W6Ld~noL+Ikgc=!j&SFs8J literal 0 HcmV?d00001 diff --git a/stable/.doctrees/support/troubleshooting/installation.doctree b/stable/.doctrees/support/troubleshooting/installation.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b4145733999227ba1e100f1f9505a85e74cba3f5 GIT binary patch literal 9193 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 literal 0 HcmV?d00001 diff --git a/stable/.doctrees/upgrade.doctree b/stable/.doctrees/upgrade.doctree new file mode 100644 index 0000000000000000000000000000000000000000..08548acc005f505b82c6a862484d1b02f58fbdf7 GIT binary patch literal 30400 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 literal 0 HcmV?d00001 diff --git a/stable/.nojekyll b/stable/.nojekyll new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/404.html b/stable/404.html new file mode 100644 index 00000000000..fa7ae55164f --- /dev/null +++ b/stable/404.html @@ -0,0 +1,31 @@ + + + + + + + + + ScyllaDB + + + + + + + + + + + +

        + + + \ No newline at end of file diff --git a/stable/CNAME b/stable/CNAME new file mode 100644 index 00000000000..12aae904168 --- /dev/null +++ b/stable/CNAME @@ -0,0 +1 @@ +operator.docs.scylladb.com \ No newline at end of file diff --git a/stable/_images/clusterip.svg b/stable/_images/clusterip.svg new file mode 100644 index 00000000000..1c74e5e69ba --- /dev/null +++ b/stable/_images/clusterip.svg @@ -0,0 +1,3 @@ + + +
        Service
        ClusterIP
        10.0.0.1
        Servi...
        Service
        ClusterIP
        10.0.0.2
        Servi...
        Service
        ClusterIP
        10.0.0.3
        Servi...
        Pod
        Client
        Pod...
        Kubernetes cluster
        Kubernetes cluster
        Text is not SVG - cannot display
        \ No newline at end of file diff --git a/stable/_images/loadbalancer.svg b/stable/_images/loadbalancer.svg new file mode 100644 index 00000000000..c86a9a2a46b --- /dev/null +++ b/stable/_images/loadbalancer.svg @@ -0,0 +1,3 @@ + + +
        Service
        LoadBalancer
        Servi...
        Service
        LoadBalancer
        Servi...
        Service
        LoadBalancer
        Servi...
        Kubernetes cluster
        Kubernetes cluster
        VPC
        VPC
        Cloud Load
        Balancing
        Cloud...
        Cloud Load
        Balancing
        Cloud...
        Cloud Load
        Balancing
        Cloud...
        Client
        Client
        Internet
        Internet
        Text is not SVG - cannot display
        \ No newline at end of file diff --git a/stable/_images/logo.png b/stable/_images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbfedad2ac875f6fa53f8f100e926c473364409 GIT binary patch literal 35103 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 + +
        Kubernetes cluster
        Kubernetes cluster
        Virtual Machine
        Client
        10.0.0.4
        Virtu...
        VPC A
        VPC A
        Pod
        Client
        20.0.0.5
        Pod...
        Kubernetes cluster
        Kubernetes cluster
        Virtual Machine
        Client
        20.0.0.4
        Virtu...
        VPC B
        VPC B
        Pod
        Client
        10.0.0.5
        Pod...
        VPC Peering
        VPC Peering


        Service
        Headless
        Service...


        Service
        Headless
        Service...


        Service
        Headless
        Service...


        Service
        Headless
        Service...


        Service
        Headless
        Service...


        Service
        Headless
        Service...
        PodIP: 10.0.0.3
        PodIP: 10.0.0...
        PodIP: 10.0.0.2
        PodIP: 10.0.0...
        PodIP: 10.0.0.1
        PodIP: 10.0.0...
        PodIP: 20.0.0.1
        PodIP: 20.0.0...
        PodIP: 20.0.0.2
        PodIP: 20.0.0...
        PodIP: 20.0.0.1
        PodIP: 20.0.0...
        Text is not SVG - cannot display
        \ No newline at end of file diff --git a/stable/_images/podips.svg b/stable/_images/podips.svg new file mode 100644 index 00000000000..03f1a44c7d6 --- /dev/null +++ b/stable/_images/podips.svg @@ -0,0 +1,3 @@ + + +
        Service
        ClusterIP
        10.0.0.1
        Servi...
        Service
        ClusterIP
        10.0.0.2
        Servi...
        Service
        ClusterIP
        10.0.0.3
        Servi...
        Pod
        Client
        20.0.0.5
        Pod...
        Kubernetes cluster
        Kubernetes cluster
        Virtual Machine
        Client
        20.0.0.4
        Virtu...
        PodIP: 20.0.0.1
        PodIP: 20.0.0...
        PodIP: 20.0.0.2
        PodIP: 20.0.0...
        PodIP: 20.0.0.3
        PodIP: 20.0.0...
        VPC
        VPC
        Text is not SVG - cannot display
        \ No newline at end of file diff --git a/stable/_sources/api-reference/groups/scylla.scylladb.com.rst.txt b/stable/_sources/api-reference/groups/scylla.scylladb.com.rst.txt new file mode 100644 index 00000000000..235ba241a48 --- /dev/null +++ b/stable/_sources/api-reference/groups/scylla.scylladb.com.rst.txt @@ -0,0 +1,8 @@ +scylla.scylladb.com +=================== + +.. toctree:: + :glob: + :maxdepth: 1 + + scylla.scylladb.com/* diff --git a/stable/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt b/stable/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt new file mode 100644 index 00000000000..e1e9324bcad --- /dev/null +++ b/stable/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt @@ -0,0 +1,1629 @@ +NodeConfig (scylla.scylladb.com/v1alpha1) +========================================= + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: NodeConfig +| **PluralName**: nodeconfigs +| **SingularName**: nodeconfig +| **Scope**: Cluster +| **ListKind**: NodeConfigList +| **Served**: true +| **Storage**: true + +Description +----------- + + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - + * - :ref:`status` + - object + - + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - disableOptimizations + - boolean + - disableOptimizations controls if nodes matching placement requirements are going to be optimized. Turning off optimizations on already optimized Nodes does not revert changes. + * - :ref:`localDiskSetup` + - object + - localDiskSetup contains options of automatic local disk setup. + * - :ref:`placement` + - object + - placement contains scheduling rules for NodeConfig Pods. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup: + +.spec.localDiskSetup +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +localDiskSetup contains options of automatic local disk setup. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`filesystems` + - array (object) + - filesystems is a list of filesystem configurations. + * - :ref:`loopDevices` + - array (object) + - loops is a list of loop device configurations. + * - :ref:`mounts` + - array (object) + - mounts is a list of mount configuration. + * - :ref:`raids` + - array (object) + - raids is a list of raid configurations. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.filesystems[]: + +.spec.localDiskSetup.filesystems[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +FilesystemConfiguration specifies filesystem configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - device + - string + - device is a path to the device where the desired filesystem should be created. + * - type + - string + - type is a desired filesystem type. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.loopDevices[]: + +.spec.localDiskSetup.loopDevices[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +LoopDeviceConfiguration specifies loop device configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - imagePath + - string + - imagePath specifies path on host where backing image file for loop device should be located. + * - name + - string + - name specifies the name of the symlink that will point to actual loop device, created under `/dev/loops/`. + * - size + - + - size specifies the size of the loop device. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.mounts[]: + +.spec.localDiskSetup.mounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +MountConfiguration specifies mount configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - device + - string + - device is path to a device that should be mounted. + * - fsType + - string + - fsType specifies the filesystem on the device. + * - mountPoint + - string + - mountPoint is a path where the device should be mounted at. If the mountPoint is a symlink, the mount will be set up for the target. + * - unsupportedOptions + - array (string) + - unsupportedOptions is a list of mount options used during device mounting. unsupported in this field name means that we won't support all the available options passed down using this field. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[]: + +.spec.localDiskSetup.raids[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RAIDConfiguration is a configuration of a raid array. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`RAID0` + - object + - RAID0 specifies RAID0 options. + * - name + - string + - name specifies the name of the raid device to be created under in `/dev/md/`. + * - type + - string + - type is a type of raid array. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[].RAID0: + +.spec.localDiskSetup.raids[].RAID0 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RAID0 specifies RAID0 options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`devices` + - object + - devices defines which devices constitute the raid array. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[].RAID0.devices: + +.spec.localDiskSetup.raids[].RAID0.devices +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +devices defines which devices constitute the raid array. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - modelRegex + - string + - modelRegex is a regular expression filtering devices by their model name. + * - nameRegex + - string + - nameRegex is a regular expression filtering devices by their name. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement: + +.spec.placement +^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement contains scheduling rules for NodeConfig Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`affinity` + - object + - affinity is a group of affinity scheduling rules for NodeConfig Pods. + * - :ref:`nodeSelector` + - object + - nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. + * - :ref:`tolerations` + - array (object) + - tolerations is a group of tolerations NodeConfig Pods are going to have. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity: + +.spec.placement.affinity +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +affinity is a group of affinity scheduling rules for NodeConfig Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - Describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + * - :ref:`podAntiAffinity` + - object + - Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity: + +.spec.placement.affinity.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity: + +.spec.placement.affinity.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity: + +.spec.placement.affinity.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.nodeSelector: + +.spec.placement.nodeSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.tolerations[]: + +.spec.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`conditions` + - array (object) + - conditions represents the latest available observations of current state. + * - :ref:`nodeStatuses` + - array (object) + - nodeStatuses hold the status for each tuned node. + * - observedGeneration + - integer + - observedGeneration indicates the most recent generation observed by the controller. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is last time the condition transitioned from one status to another. + * - message + - string + - message is a human-readable message indicating details about the transition. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason is the reason for condition's last transition. + * - status + - string + - status represents the state of the condition, one of True, False, or Unknown. + * - type + - string + - type is the type of the NodeConfig condition. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status.nodeStatuses[]: + +.status.nodeStatuses[] +^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - + * - tunedContainers + - array (string) + - + * - tunedNode + - boolean + - diff --git a/stable/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt b/stable/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt new file mode 100644 index 00000000000..12a36b6c388 --- /dev/null +++ b/stable/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt @@ -0,0 +1,4996 @@ +ScyllaCluster (scylla.scylladb.com/v1) +====================================== + +| **APIVersion**: scylla.scylladb.com/v1 +| **Kind**: ScyllaCluster +| **PluralName**: scyllaclusters +| **SingularName**: scyllacluster +| **Scope**: Namespaced +| **ListKind**: ScyllaClusterList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaCluster defines a Scylla cluster. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of this scylla cluster. + * - :ref:`status` + - object + - status is the current status of this scylla cluster. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of this scylla cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - agentRepository + - string + - agentRepository is the repository to pull the agent image from. + * - agentVersion + - string + - agentVersion indicates the version of Scylla Manager Agent to use. + * - :ref:`alternator` + - object + - alternator designates this cluster an Alternator cluster. + * - automaticOrphanedNodeCleanup + - boolean + - automaticOrphanedNodeCleanup controls if automatic orphan node cleanup should be performed. + * - :ref:`backups` + - array (object) + - backups specifies backup tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored. + * - cpuset + - boolean + - cpuset determines if the cluster will use cpu-pinning. Deprecated: `cpuset` is deprecated and may be ignored in the future. + * - :ref:`datacenter` + - object + - datacenter holds a specification of a datacenter. + * - developerMode + - boolean + - developerMode determines if the cluster runs in developer-mode. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this cluster is reachable by. These domains are used when setting up the infrastructure, like certificates. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing ScyllaCluster services. This field is immutable. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - externalSeeds + - array (string) + - externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as "seeds" parameter of seed-provider. + * - forceRedeploymentReason + - string + - forceRedeploymentReason can be used to force a rolling update of all racks by providing a unique string. + * - :ref:`genericUpgrade` + - object + - genericUpgrade allows to configure behavior of generic upgrade logic. + * - :ref:`imagePullSecrets` + - array (object) + - imagePullSecrets is an optional list of references to secrets in the same namespace used for pulling Scylla and Agent images. + * - minReadySeconds + - integer + - minReadySeconds is the minimum number of seconds for which a newly created ScyllaDB node should be ready for it to be considered available. When used to control load balanced traffic, this can give the load balancer in front of a node enough time to notice that the node is ready and start forwarding traffic in time. Because it all depends on timing, the order is not guaranteed and, if possible, you should use readinessGates instead. If not provided, Operator will determine this value. + * - minTerminationGracePeriodSeconds + - integer + - minTerminationGracePeriodSeconds specifies minimum duration in seconds to wait before every drained node is terminated. This gives time to potential load balancer in front of a node to notice that node is not ready anymore and stop forwarding new requests. This applies only when node is terminated gracefully. If not provided, Operator will determine this value. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`network` + - object + - network holds the networking config. + * - :ref:`podMetadata` + - object + - podMetadata controls shared metadata for all pods created based on this spec. + * - :ref:`readinessGates` + - array (object) + - readinessGates specifies custom readiness gates that will be evaluated for every ScyllaDB Pod readiness. It's projected into every ScyllaDB Pod as its readinessGate. Refer to upstream documentation to learn more about readiness gates. + * - :ref:`repairs` + - array (object) + - repairs specify repair tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored. + * - repository + - string + - repository is the image repository to pull the Scylla image from. + * - scyllaArgs + - string + - scyllaArgs will be appended to Scylla binary during startup. This is supported from 4.2.0 Scylla version. + * - sysctls + - array (string) + - sysctls holds the sysctl properties to be applied during initialization given as a list of key=value pairs. Example: fs.aio-max-nr=232323 + * - version + - string + - version is a version tag of Scylla to use. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator: + +.spec.alternator +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +alternator designates this cluster an Alternator cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - insecureDisableAuthorization + - boolean + - insecureDisableAuthorization disables Alternator authorization. If not specified, the authorization is enabled. For backwards compatibility the authorization is disabled when this field is not specified and a manual port is used. + * - insecureEnableHTTP + - boolean + - insecureEnableHTTP enables serving Alternator traffic also on insecure HTTP port. + * - port + - integer + - port is the port number used to bind the Alternator API. Deprecated: `port` is deprecated and may be ignored in the future. Please make sure to avoid using hostNetworking and work with standard Kubernetes concepts like Services. + * - :ref:`servingCertificate` + - object + - servingCertificate references a TLS certificate for serving secure traffic. + * - writeIsolation + - string + - writeIsolation indicates the isolation level. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate: + +.spec.alternator.servingCertificate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +servingCertificate references a TLS certificate for serving secure traffic. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`operatorManagedOptions` + - object + - operatorManagedOptions specifies options for certificates manged by the operator. + * - type + - string + - type determines the source of this certificate. + * - :ref:`userManagedOptions` + - object + - userManagedOptions specifies options for certificates manged by users. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate.operatorManagedOptions: + +.spec.alternator.servingCertificate.operatorManagedOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +operatorManagedOptions specifies options for certificates manged by the operator. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - additionalDNSNames + - array (string) + - additionalDNSNames represents external DNS names that the certificates should be signed for. + * - additionalIPAddresses + - array (string) + - additionalIPAddresses represents external IP addresses that the certificates should be signed for. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate.userManagedOptions: + +.spec.alternator.servingCertificate.userManagedOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +userManagedOptions specifies options for certificates manged by users. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - secretName + - string + - secretName references a kubernetes.io/tls type secret containing the TLS cert and key. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.backups[]: + +.spec.backups[] +^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]. + * - dc + - array (string) + - dc is a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup. + * - interval + - string + - interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead. + * - keyspace + - array (string) + - keyspace is a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - location + - array (string) + - location is a list of backup locations in the format [:]: ex. s3:my-bucket. The : part is optional and is only needed when different datacenters are being used to upload data to different locations. must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden. The only supported storage at the moment are s3 and gcs. + * - name + - string + - name specifies the name of a task. + * - numRetries + - integer + - numRetries indicates how many times a scheduled task will be retried before failing. + * - rateLimit + - array (string) + - rateLimit is a list of megabytes (MiB) per second rate limits expressed in the format [:]. The : part is optional and only needed when different datacenters need different upload limits. Set to 0 for no limit (default 100). + * - retention + - integer + - retention is the number of backups which are to be stored. + * - snapshotParallel + - array (string) + - snapshotParallel is a list of snapshot parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set, the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. + * - startDate + - string + - startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. + * - timezone + - string + - timezone specifies the timezone of cron field. + * - uploadParallel + - array (string) + - uploadParallel is a list of upload parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter: + +.spec.datacenter +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +datacenter holds a specification of a datacenter. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - name is the name of the scylla datacenter. Used in the cassandra-rackdc.properties file. + * - :ref:`racks` + - array (object) + - racks specify the racks in the datacenter. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[]: + +.spec.datacenter.racks[] +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RackSpec is the desired state for a Scylla Rack. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`agentResources` + - object + - agentResources specify the resources for the Agent container. + * - :ref:`agentVolumeMounts` + - array (object) + - AgentVolumeMounts to be added to Agent container. + * - members + - integer + - members is the number of Scylla instances in this rack. + * - name + - string + - name is the name of the Scylla Rack. Used in the cassandra-rackdc.properties file. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Scylla is scheduled on. + * - :ref:`resources` + - object + - resources the Scylla container will use. + * - scyllaAgentConfig + - string + - Scylla config map name to customize scylla manager agent + * - scyllaConfig + - string + - Scylla config map name to customize scylla.yaml + * - :ref:`storage` + - object + - storage describes the underlying storage that Scylla will consume. + * - :ref:`volumeMounts` + - array (object) + - VolumeMounts to be added to Scylla container. + * - :ref:`volumes` + - array (object) + - Volumes added to Scylla Pod. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources: + +.spec.datacenter.racks[].agentResources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +agentResources specify the resources for the Agent container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.claims[]: + +.spec.datacenter.racks[].agentResources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.limits: + +.spec.datacenter.racks[].agentResources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.requests: + +.spec.datacenter.racks[].agentResources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentVolumeMounts[]: + +.spec.datacenter.racks[].agentVolumeMounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +VolumeMount describes a mounting of a Volume within a container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - mountPath + - string + - Path within the container at which the volume should be mounted. Must not contain ':'. + * - mountPropagation + - string + - mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + * - name + - string + - This must match the Name of a Volume. + * - readOnly + - boolean + - Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + * - subPath + - string + - Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + * - subPathExpr + - string + - Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement: + +.spec.datacenter.racks[].placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Scylla is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity: + +.spec.datacenter.racks[].placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity: + +.spec.datacenter.racks[].placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity: + +.spec.datacenter.racks[].placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.tolerations[]: + +.spec.datacenter.racks[].placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources: + +.spec.datacenter.racks[].resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Scylla container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.claims[]: + +.spec.datacenter.racks[].resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.limits: + +.spec.datacenter.racks[].resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.requests: + +.spec.datacenter.racks[].resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage: + +.spec.datacenter.racks[].storage +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storage describes the underlying storage that Scylla will consume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - capacity + - string + - capacity describes the requested size of each persistent volume. + * - :ref:`metadata` + - object + - metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn't be relied on in any way. + * - storageClassName + - string + - storageClassName is the name of a storageClass to request. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata: + +.spec.datacenter.racks[].storage.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn't be relied on in any way. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata.annotations: + +.spec.datacenter.racks[].storage.metadata.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata.labels: + +.spec.datacenter.racks[].storage.metadata.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumeMounts[]: + +.spec.datacenter.racks[].volumeMounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +VolumeMount describes a mounting of a Volume within a container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - mountPath + - string + - Path within the container at which the volume should be mounted. Must not contain ':'. + * - mountPropagation + - string + - mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + * - name + - string + - This must match the Name of a Volume. + * - readOnly + - boolean + - Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + * - subPath + - string + - Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + * - subPathExpr + - string + - Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[]: + +.spec.datacenter.racks[].volumes[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Volume represents a named volume in a pod that may be accessed by any container in the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`awsElasticBlockStore` + - object + - awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + * - :ref:`azureDisk` + - object + - azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + * - :ref:`azureFile` + - object + - azureFile represents an Azure File Service mount on the host and bind mount to the pod. + * - :ref:`cephfs` + - object + - cephFS represents a Ceph FS mount on the host that shares a pod's lifetime + * - :ref:`cinder` + - object + - cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - :ref:`configMap` + - object + - configMap represents a configMap that should populate this volume + * - :ref:`csi` + - object + - csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). + * - :ref:`downwardAPI` + - object + - downwardAPI represents downward API about the pod that should populate this volume + * - :ref:`emptyDir` + - object + - emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + * - :ref:`ephemeral` + - object + - ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. + Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). + Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. + Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. + A pod can use both types of ephemeral volumes and persistent volumes at the same time. + * - :ref:`fc` + - object + - fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + * - :ref:`flexVolume` + - object + - flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + * - :ref:`flocker` + - object + - flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + * - :ref:`gcePersistentDisk` + - object + - gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - :ref:`gitRepo` + - object + - gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. + * - :ref:`glusterfs` + - object + - glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md + * - :ref:`hostPath` + - object + - hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. + * - :ref:`iscsi` + - object + - iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md + * - name + - string + - name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + * - :ref:`nfs` + - object + - nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - :ref:`persistentVolumeClaim` + - object + - persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + * - :ref:`photonPersistentDisk` + - object + - photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + * - :ref:`portworxVolume` + - object + - portworxVolume represents a portworx volume attached and mounted on kubelets host machine + * - :ref:`projected` + - object + - projected items for all in one resources secrets, configmaps, and downward API + * - :ref:`quobyte` + - object + - quobyte represents a Quobyte mount on the host that shares a pod's lifetime + * - :ref:`rbd` + - object + - rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md + * - :ref:`scaleIO` + - object + - scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + * - :ref:`secret` + - object + - secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + * - :ref:`storageos` + - object + - storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + * - :ref:`vsphereVolume` + - object + - vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].awsElasticBlockStore: + +.spec.datacenter.racks[].volumes[].awsElasticBlockStore +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine + * - partition + - integer + - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + * - readOnly + - boolean + - readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + * - volumeID + - string + - volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].azureDisk: + +.spec.datacenter.racks[].volumes[].azureDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cachingMode + - string + - cachingMode is the Host Caching mode: None, Read Only, Read Write. + * - diskName + - string + - diskName is the Name of the data disk in the blob storage + * - diskURI + - string + - diskURI is the URI of data disk in the blob storage + * - fsType + - string + - fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - kind + - string + - kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared + * - readOnly + - boolean + - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].azureFile: + +.spec.datacenter.racks[].volumes[].azureFile +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +azureFile represents an Azure File Service mount on the host and bind mount to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - secretName + - string + - secretName is the name of secret that contains Azure Storage Account Name and Key + * - shareName + - string + - shareName is the azure share Name + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cephfs: + +.spec.datacenter.racks[].volumes[].cephfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cephFS represents a Ceph FS mount on the host that shares a pod's lifetime + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - monitors + - array (string) + - monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - path + - string + - path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / + * - readOnly + - boolean + - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - secretFile + - string + - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - :ref:`secretRef` + - object + - secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - user + - string + - user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cephfs.secretRef: + +.spec.datacenter.racks[].volumes[].cephfs.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cinder: + +.spec.datacenter.racks[].volumes[].cinder +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - :ref:`secretRef` + - object + - secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. + * - volumeID + - string + - volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cinder.secretRef: + +.spec.datacenter.racks[].volumes[].cinder.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].configMap: + +.spec.datacenter.racks[].volumes[].configMap +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +configMap represents a configMap that should populate this volume + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional specify whether the ConfigMap or its keys must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].configMap.items[]: + +.spec.datacenter.racks[].volumes[].configMap.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi: + +.spec.datacenter.racks[].volumes[].csi +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - driver + - string + - driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. + * - fsType + - string + - fsType to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. + * - :ref:`nodePublishSecretRef` + - object + - nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + * - readOnly + - boolean + - readOnly specifies a read-only configuration for the volume. Defaults to false (read/write). + * - :ref:`volumeAttributes` + - object + - volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef: + +.spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi.volumeAttributes: + +.spec.datacenter.racks[].volumes[].csi.volumeAttributes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI: + +.spec.datacenter.racks[].volumes[].downwardAPI +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +downwardAPI represents downward API about the pod that should populate this volume + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - Items is a list of downward API volume file + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[]: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +DownwardAPIVolumeFile represents information to create the file containing the pod field + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`fieldRef` + - object + - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + * - mode + - integer + - Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + * - :ref:`resourceFieldRef` + - object + - Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - Version of the schema the FieldPath is written in terms of, defaults to "v1". + * - fieldPath + - string + - Path of the field to select in the specified API version. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - containerName + - string + - Container name: required for volumes, optional for env vars + * - divisor + - + - Specifies the output format of the exposed resources, defaults to "1" + * - resource + - string + - Required: resource to select + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].emptyDir: + +.spec.datacenter.racks[].volumes[].emptyDir +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - medium + - string + - medium represents what type of storage medium should back this directory. The default is "" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + * - sizeLimit + - + - sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral: + +.spec.datacenter.racks[].volumes[].ephemeral +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. + Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). + Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. + Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. + A pod can use both types of ephemeral volumes and persistent volumes at the same time. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`volumeClaimTemplate` + - object + - Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). + An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. + This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. + Required, must not be nil. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). + An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. + This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. + Required, must not be nil. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`metadata` + - object + - May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + * - :ref:`spec` + - object + - The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - accessModes + - array (string) + - accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + * - :ref:`dataSource` + - object + - dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + * - :ref:`dataSourceRef` + - object + - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + * - :ref:`resources` + - object + - resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + * - :ref:`selector` + - object + - selector is a label query over volumes to consider for binding. + * - storageClassName + - string + - storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + * - volumeAttributesClassName + - string + - volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. + * - volumeMode + - string + - volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + * - volumeName + - string + - volumeName is the binding reference to the PersistentVolume backing this claim. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + * - namespace + - string + - Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +selector is a label query over volumes to consider for binding. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].fc: + +.spec.datacenter.racks[].volumes[].fc +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine + * - lun + - integer + - lun is Optional: FC target lun number + * - readOnly + - boolean + - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - targetWWNs + - array (string) + - targetWWNs is Optional: FC target worldwide names (WWNs) + * - wwids + - array (string) + - wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume: + +.spec.datacenter.racks[].volumes[].flexVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - driver + - string + - driver is the name of the driver to use for this volume. + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + * - :ref:`options` + - object + - options is Optional: this field holds extra command options if any. + * - readOnly + - boolean + - readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume.options: + +.spec.datacenter.racks[].volumes[].flexVolume.options +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +options is Optional: this field holds extra command options if any. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume.secretRef: + +.spec.datacenter.racks[].volumes[].flexVolume.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flocker: + +.spec.datacenter.racks[].volumes[].flocker +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - datasetName + - string + - datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated + * - datasetUUID + - string + - datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].gcePersistentDisk: + +.spec.datacenter.racks[].volumes[].gcePersistentDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine + * - partition + - integer + - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - pdName + - string + - pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].gitRepo: + +.spec.datacenter.racks[].volumes[].gitRepo +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - directory + - string + - directory is the target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. + * - repository + - string + - repository is the URL + * - revision + - string + - revision is the commit hash for the specified revision. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].glusterfs: + +.spec.datacenter.racks[].volumes[].glusterfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - endpoints + - string + - endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + * - path + - string + - path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + * - readOnly + - boolean + - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].hostPath: + +.spec.datacenter.racks[].volumes[].hostPath +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - path + - string + - path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + * - type + - string + - type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].iscsi: + +.spec.datacenter.racks[].volumes[].iscsi +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - chapAuthDiscovery + - boolean + - chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication + * - chapAuthSession + - boolean + - chapAuthSession defines whether support iSCSI Session CHAP authentication + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine + * - initiatorName + - string + - initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. + * - iqn + - string + - iqn is the target iSCSI Qualified Name. + * - iscsiInterface + - string + - iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). + * - lun + - integer + - lun represents iSCSI Target Lun number. + * - portals + - array (string) + - portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. + * - :ref:`secretRef` + - object + - secretRef is the CHAP Secret for iSCSI target and initiator authentication + * - targetPortal + - string + - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].iscsi.secretRef: + +.spec.datacenter.racks[].volumes[].iscsi.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is the CHAP Secret for iSCSI target and initiator authentication + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].nfs: + +.spec.datacenter.racks[].volumes[].nfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - path + - string + - path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - readOnly + - boolean + - readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - server + - string + - server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].persistentVolumeClaim: + +.spec.datacenter.racks[].volumes[].persistentVolumeClaim +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - claimName + - string + - claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + * - readOnly + - boolean + - readOnly Will force the ReadOnly setting in VolumeMounts. Default false. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].photonPersistentDisk: + +.spec.datacenter.racks[].volumes[].photonPersistentDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - pdID + - string + - pdID is the ID that identifies Photon Controller persistent disk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].portworxVolume: + +.spec.datacenter.racks[].volumes[].portworxVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +portworxVolume represents a portworx volume attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - volumeID + - string + - volumeID uniquely identifies a Portworx volume + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected: + +.spec.datacenter.racks[].volumes[].projected +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +projected items for all in one resources secrets, configmaps, and downward API + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`sources` + - array (object) + - sources is the list of volume projections + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[]: + +.spec.datacenter.racks[].volumes[].projected.sources[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Projection that may be projected along with other supported volume types + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`clusterTrustBundle` + - object + - ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. + Alpha, gated by the ClusterTrustBundleProjection feature gate. + ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. + Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. + * - :ref:`configMap` + - object + - configMap information about the configMap data to project + * - :ref:`downwardAPI` + - object + - downwardAPI information about the downwardAPI data to project + * - :ref:`secret` + - object + - secret information about the secret data to project + * - :ref:`serviceAccountToken` + - object + - serviceAccountToken is information about the serviceAccountToken data to project + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. + Alpha, gated by the ClusterTrustBundleProjection feature gate. + ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. + Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". + * - name + - string + - Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector. + * - optional + - boolean + - If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles. + * - path + - string + - Relative path from the volume root to write the bundle. + * - signerName + - string + - Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].configMap: + +.spec.datacenter.racks[].volumes[].projected.sources[].configMap +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +configMap information about the configMap data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional specify whether the ConfigMap or its keys must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +downwardAPI information about the downwardAPI data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - Items is a list of DownwardAPIVolume file + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +DownwardAPIVolumeFile represents information to create the file containing the pod field + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`fieldRef` + - object + - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + * - mode + - integer + - Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + * - :ref:`resourceFieldRef` + - object + - Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - Version of the schema the FieldPath is written in terms of, defaults to "v1". + * - fieldPath + - string + - Path of the field to select in the specified API version. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - containerName + - string + - Container name: required for volumes, optional for env vars + * - divisor + - + - Specifies the output format of the exposed resources, defaults to "1" + * - resource + - string + - Required: resource to select + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].secret: + +.spec.datacenter.racks[].volumes[].projected.sources[].secret +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secret information about the secret data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional field specify whether the Secret or its key must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].secret.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken: + +.spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +serviceAccountToken is information about the serviceAccountToken data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - audience + - string + - audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. + * - expirationSeconds + - integer + - expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. + * - path + - string + - path is the path relative to the mount point of the file to project the token into. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].quobyte: + +.spec.datacenter.racks[].volumes[].quobyte +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +quobyte represents a Quobyte mount on the host that shares a pod's lifetime + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - group + - string + - group to map volume access to Default is no group + * - readOnly + - boolean + - readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. + * - registry + - string + - registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes + * - tenant + - string + - tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin + * - user + - string + - user to map volume access to Defaults to serivceaccount user + * - volume + - string + - volume is a string that references an already created Quobyte volume by name. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].rbd: + +.spec.datacenter.racks[].volumes[].rbd +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine + * - image + - string + - image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - keyring + - string + - keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - monitors + - array (string) + - monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - pool + - string + - pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - :ref:`secretRef` + - object + - secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - user + - string + - user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].rbd.secretRef: + +.spec.datacenter.racks[].volumes[].rbd.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].scaleIO: + +.spec.datacenter.racks[].volumes[].scaleIO +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". + * - gateway + - string + - gateway is the host address of the ScaleIO API Gateway. + * - protectionDomain + - string + - protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. + * - readOnly + - boolean + - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + * - sslEnabled + - boolean + - sslEnabled Flag enable/disable SSL communication with Gateway, default false + * - storageMode + - string + - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. + * - storagePool + - string + - storagePool is the ScaleIO Storage Pool associated with the protection domain. + * - system + - string + - system is the name of the storage system as configured in ScaleIO. + * - volumeName + - string + - volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].scaleIO.secretRef: + +.spec.datacenter.racks[].volumes[].scaleIO.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].secret: + +.spec.datacenter.racks[].volumes[].secret +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - optional + - boolean + - optional field specify whether the Secret or its keys must be defined + * - secretName + - string + - secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].secret.items[]: + +.spec.datacenter.racks[].volumes[].secret.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].storageos: + +.spec.datacenter.racks[].volumes[].storageos +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + * - volumeName + - string + - volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. + * - volumeNamespace + - string + - volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].storageos.secretRef: + +.spec.datacenter.racks[].volumes[].storageos.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].vsphereVolume: + +.spec.datacenter.racks[].volumes[].vsphereVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - storagePolicyID + - string + - storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + * - storagePolicyName + - string + - storagePolicyName is the storage Policy Based Management (SPBM) profile name. + * - volumePath + - string + - volumePath is the path that identifies vSphere volume vmdk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions: + +.spec.exposeOptions +^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing ScyllaCluster services. This field is immutable. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`broadcastOptions` + - object + - BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients. + * - :ref:`cql` + - object + - cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`nodeService` + - object + - nodeService controls properties of Service dedicated for each ScyllaCluster node. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions: + +.spec.exposeOptions.broadcastOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`clients` + - object + - clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config. + * - :ref:`nodes` + - object + - nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.clients: + +.spec.exposeOptions.broadcastOptions.clients +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podIP` + - object + - podIP holds options related to Pod IP address. + * - type + - string + - type of the address that is broadcasted. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.clients.podIP: + +.spec.exposeOptions.broadcastOptions.clients.podIP +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podIP holds options related to Pod IP address. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - source + - string + - sourceType specifies source of the Pod IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.nodes: + +.spec.exposeOptions.broadcastOptions.nodes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podIP` + - object + - podIP holds options related to Pod IP address. + * - type + - string + - type of the address that is broadcasted. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.nodes.podIP: + +.spec.exposeOptions.broadcastOptions.nodes.podIP +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podIP holds options related to Pod IP address. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - source + - string + - sourceType specifies source of the Pod IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql: + +.spec.exposeOptions.cql +^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress: + +.spec.exposeOptions.cql.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. Unless disabled, there is an Ingress objects created for every Scylla node. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress.annotations: + +.spec.exposeOptions.cql.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress.labels: + +.spec.exposeOptions.cql.ingress.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService: + +.spec.exposeOptions.nodeService +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeService controls properties of Service dedicated for each ScyllaCluster node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - allocateLoadBalancerNodePorts + - boolean + - allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - externalTrafficPolicy + - string + - externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - internalTrafficPolicy + - string + - internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + * - loadBalancerClass + - string + - loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - type + - string + - type is the Kubernetes Service type. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService.annotations: + +.spec.exposeOptions.nodeService.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService.labels: + +.spec.exposeOptions.nodeService.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.genericUpgrade: + +.spec.genericUpgrade +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +genericUpgrade allows to configure behavior of generic upgrade logic. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - failureStrategy + - string + - failureStrategy specifies which logic is executed when upgrade failure happens. Currently only Retry is supported. + * - pollInterval + - string + - pollInterval specifies how often upgrade logic polls on state updates. Increasing this value should lower number of requests sent to apiserver, but it may affect overall time spent during upgrade. DEPRECATED. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.imagePullSecrets[]: + +.spec.imagePullSecrets[] +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.network: + +.spec.network +^^^^^^^^^^^^^ + +Description +""""""""""" +network holds the networking config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - dnsPolicy + - string + - dnsPolicy defines how a pod's DNS will be configured. + * - hostNetworking + - boolean + - hostNetworking determines if scylla uses the host's network namespace. Setting this option avoids going through Kubernetes SDN and exposes scylla on node's IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata: + +.spec.podMetadata +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podMetadata controls shared metadata for all pods created based on this spec. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata.annotations: + +.spec.podMetadata.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata.labels: + +.spec.podMetadata.labels +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.readinessGates[]: + +.spec.readinessGates[] +^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +PodReadinessGate contains the reference to a pod condition + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - conditionType + - string + - ConditionType refers to a condition in the pod's condition list with matching type. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.repairs[]: + +.spec.repairs[] +^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]. + * - dc + - array (string) + - dc is a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from backup. + * - failFast + - boolean + - failFast indicates if a repair should be stopped on first error. + * - host + - string + - host specifies a host to repair. If empty, all hosts are repaired. + * - intensity + - string + - intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs). Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs. Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume. For Scylla clusters that *do not support row-level repair*, intensity can be a decimal between (0,1). In that case it specifies percent of shards that can be repaired in parallel on a repair master node. For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1. + * - interval + - string + - interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead. + * - keyspace + - array (string) + - keyspace is a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - name + - string + - name specifies the name of a task. + * - numRetries + - integer + - numRetries indicates how many times a scheduled task will be retried before failing. + * - parallel + - integer + - parallel is the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used. The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes. The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2. + * - smallTableThreshold + - string + - smallTableThreshold enable small table optimization for tables of size lower than given threshold. Supported units [B, MiB, GiB, TiB]. + * - startDate + - string + - startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. + * - timezone + - string + - timezone specifies the timezone of cron field. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status is the current status of this scylla cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - availableMembers + - integer + - availableMembers is the number of ScyllaDB members in all racks that are available. + * - :ref:`backups` + - array (object) + - backups reflects status of backup tasks. + * - :ref:`conditions` + - array (object) + - conditions hold conditions describing ScyllaCluster state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False. + * - managerId + - string + - managerId contains ID under which cluster was registered in Scylla Manager. + * - members + - integer + - members is the number of ScyllaDB members in all racks. + * - observedGeneration + - integer + - observedGeneration is the most recent generation observed for this ScyllaCluster. It corresponds to the ScyllaCluster's generation, which is updated on mutation by the API Server. + * - rackCount + - integer + - rackCount is the number of ScyllaDB racks in this cluster. + * - :ref:`racks` + - object + - racks reflect status of cluster racks. + * - readyMembers + - integer + - readyMembers is the number of ScyllaDB members in all racks that are ready. + * - :ref:`repairs` + - array (object) + - repairs reflects status of repair tasks. + * - :ref:`upgrade` + - object + - upgrade reflects state of ongoing upgrade procedure. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.backups[]: + +.status.backups[] +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron reflects the task schedule as a cron expression. + * - dc + - array (string) + - dc reflects a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup. + * - error + - string + - error holds the task error, if any. + * - id + - string + - id reflects identification number of the repair task. + * - interval + - string + - interval reflects a task schedule interval. + * - keyspace + - array (string) + - keyspace reflects a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - location + - array (string) + - location reflects a list of backup locations in the format [:]: ex. s3:my-bucket. + * - name + - string + - name reflects the name of a task. + * - numRetries + - integer + - numRetries reflects how many times a scheduled task will be retried before failing. + * - rateLimit + - array (string) + - rateLimit reflects a list of megabytes (MiB) per second rate limits expressed in the format [:]. + * - retention + - integer + - retention reflects the number of backups which are to be stored. + * - snapshotParallel + - array (string) + - snapshotParallel reflects a list of snapshot parallelism limits in the format [:]. + * - startDate + - string + - startDate reflects the task start date expressed in the RFC3339 format + * - timezone + - string + - timezone reflects the timezone of cron field. + * - uploadParallel + - array (string) + - uploadParallel reflects a list of upload parallelism limits in the format [:]. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + // other fields } + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + * - message + - string + - message is a human readable message indicating details about the transition. This may be an empty string. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + * - status + - string + - status of the condition, one of True, False, Unknown. + * - type + - string + - type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.racks: + +.status.racks +^^^^^^^^^^^^^ + +Description +""""""""""" +racks reflect status of cluster racks. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.repairs[]: + +.status.repairs[] +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron reflects the task schedule as a cron expression. + * - dc + - array (string) + - dc reflects a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from repair. + * - error + - string + - error holds the task error, if any. + * - failFast + - boolean + - failFast indicates if a repair should be stopped on first error. + * - host + - string + - host reflects a host to repair. + * - id + - string + - id reflects identification number of the repair task. + * - intensity + - string + - intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. + * - interval + - string + - interval reflects a task schedule interval. + * - keyspace + - array (string) + - keyspace reflects a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - name + - string + - name reflects the name of a task. + * - numRetries + - integer + - numRetries reflects how many times a scheduled task will be retried before failing. + * - parallel + - integer + - parallel reflects the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). + * - smallTableThreshold + - string + - smallTableThreshold reflects whether small table optimization for tables, of size lower than given threshold, are enabled. + * - startDate + - string + - startDate reflects the task start date expressed in the RFC3339 format + * - timezone + - string + - timezone reflects the timezone of cron field. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.upgrade: + +.status.upgrade +^^^^^^^^^^^^^^^ + +Description +""""""""""" +upgrade reflects state of ongoing upgrade procedure. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - currentNode + - string + - currentNode node under upgrade. DEPRECATED. + * - currentRack + - string + - currentRack rack under upgrade. DEPRECATED. + * - dataSnapshotTag + - string + - dataSnapshotTag is the snapshot tag of data keyspaces. + * - fromVersion + - string + - fromVersion reflects from which version ScyllaCluster is being upgraded. + * - state + - string + - state reflects current upgrade state. + * - systemSnapshotTag + - string + - systemSnapshotTag is the snapshot tag of system keyspaces. + * - toVersion + - string + - toVersion reflects to which version ScyllaCluster is being upgraded. diff --git a/stable/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt b/stable/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt new file mode 100644 index 00000000000..8116bbb2bf7 --- /dev/null +++ b/stable/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt @@ -0,0 +1,3441 @@ +ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1) +================================================= + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: ScyllaDBMonitoring +| **PluralName**: scylladbmonitorings +| **SingularName**: scylladbmonitoring +| **Scope**: Namespaced +| **ListKind**: ScyllaDBMonitoringList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaDBMonitoring defines a monitoring instance for ScyllaDB clusters. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of this ScyllaDBMonitoring. + * - :ref:`status` + - object + - status is the current status of this ScyllaDBMonitoring. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of this ScyllaDBMonitoring. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`components` + - object + - components hold additional config for the monitoring components in use. + * - :ref:`endpointsSelector` + - object + - endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors. + * - type + - string + - type determines the platform type of the monitoring setup. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components: + +.spec.components +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +components hold additional config for the monitoring components in use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`grafana` + - object + - grafana holds configuration for the grafana instance, if any. + * - :ref:`prometheus` + - object + - prometheus holds configuration for the prometheus instance, if any. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana: + +.spec.components.grafana +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +grafana holds configuration for the grafana instance, if any. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`authentication` + - object + - authentication hold the authentication options for accessing Grafana. + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing Grafana UI. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Grafana is scheduled on. + * - :ref:`resources` + - object + - resources the Grafana container will use. + * - servingCertSecretName + - string + - servingCertSecretName is the name of the secret holding a serving cert-key pair. If not specified, the operator will create a self-signed CA that creates the default serving cert-key pair. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.authentication: + +.spec.components.grafana.authentication +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +authentication hold the authentication options for accessing Grafana. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - insecureEnableAnonymousAccess + - boolean + - insecureEnableAnonymousAccess allows access to Grafana without authentication. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions: + +.spec.components.grafana.exposeOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing Grafana UI. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`webInterface` + - object + - webInterface specifies expose options for the user web interface. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface: + +.spec.components.grafana.exposeOptions.webInterface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +webInterface specifies expose options for the user web interface. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface.ingress: + +.spec.components.grafana.exposeOptions.webInterface.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations specifies custom annotations merged into every Ingress object. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this ingress is reachable by. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface.ingress.annotations: + +.spec.components.grafana.exposeOptions.webInterface.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations specifies custom annotations merged into every Ingress object. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement: + +.spec.components.grafana.placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Grafana is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity: + +.spec.components.grafana.placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity: + +.spec.components.grafana.placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity: + +.spec.components.grafana.placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.tolerations[]: + +.spec.components.grafana.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources: + +.spec.components.grafana.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Grafana container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.claims[]: + +.spec.components.grafana.resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.limits: + +.spec.components.grafana.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.requests: + +.spec.components.grafana.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus: + +.spec.components.prometheus +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +prometheus holds configuration for the prometheus instance, if any. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing Prometheus UI. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Prometheus is scheduled on. + * - :ref:`resources` + - object + - resources the Prometheus container will use. + * - :ref:`storage` + - object + - storage describes the underlying storage that Prometheus will consume. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions: + +.spec.components.prometheus.exposeOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing Prometheus UI. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`webInterface` + - object + - webInterface specifies expose options for the user web interface. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface: + +.spec.components.prometheus.exposeOptions.webInterface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +webInterface specifies expose options for the user web interface. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface.ingress: + +.spec.components.prometheus.exposeOptions.webInterface.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations specifies custom annotations merged into every Ingress object. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this ingress is reachable by. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface.ingress.annotations: + +.spec.components.prometheus.exposeOptions.webInterface.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations specifies custom annotations merged into every Ingress object. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement: + +.spec.components.prometheus.placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Prometheus is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity: + +.spec.components.prometheus.placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity: + +.spec.components.prometheus.placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity: + +.spec.components.prometheus.placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.tolerations[]: + +.spec.components.prometheus.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources: + +.spec.components.prometheus.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Prometheus container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.claims[]: + +.spec.components.prometheus.resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.limits: + +.spec.components.prometheus.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.requests: + +.spec.components.prometheus.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage: + +.spec.components.prometheus.storage +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storage describes the underlying storage that Prometheus will consume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations + * - :ref:`labels` + - object + - Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels + * - :ref:`volumeClaimTemplate` + - object + - volumeClaimTemplates is a PVC template defining storage to be used by Prometheus. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.annotations: + +.spec.components.prometheus.storage.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.labels: + +.spec.components.prometheus.storage.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate: + +.spec.components.prometheus.storage.volumeClaimTemplate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +volumeClaimTemplates is a PVC template defining storage to be used by Prometheus. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`metadata` + - object + - May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + * - :ref:`spec` + - object + - The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.metadata: + +.spec.components.prometheus.storage.volumeClaimTemplate.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - accessModes + - array (string) + - accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + * - :ref:`dataSource` + - object + - dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + * - :ref:`dataSourceRef` + - object + - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + * - :ref:`resources` + - object + - resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + * - :ref:`selector` + - object + - selector is a label query over volumes to consider for binding. + * - storageClassName + - string + - storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + * - volumeAttributesClassName + - string + - volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. + * - volumeMode + - string + - volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + * - volumeName + - string + - volumeName is the binding reference to the PersistentVolume backing this claim. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + * - namespace + - string + - Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +selector is a label query over volumes to consider for binding. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector: + +.spec.endpointsSelector +^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector.matchExpressions[]: + +.spec.endpointsSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector.matchLabels: + +.spec.endpointsSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status is the current status of this ScyllaDBMonitoring. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`conditions` + - array (object) + - conditions hold conditions describing ScyllaDBMonitoring state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False. + * - observedGeneration + - integer + - observedGeneration is the most recent generation observed for this ScyllaDBMonitoring. It corresponds to the ScyllaDBMonitoring's generation, which is updated on mutation by the API Server. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + // other fields } + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + * - message + - string + - message is a human readable message indicating details about the transition. This may be an empty string. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + * - status + - string + - status of the condition, one of True, False, Unknown. + * - type + - string + - type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) diff --git a/stable/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt b/stable/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt new file mode 100644 index 00000000000..fee8be92d66 --- /dev/null +++ b/stable/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt @@ -0,0 +1,126 @@ +ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1) +=================================================== + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: ScyllaOperatorConfig +| **PluralName**: scyllaoperatorconfigs +| **SingularName**: scyllaoperatorconfig +| **Scope**: Cluster +| **ListKind**: ScyllaOperatorConfigList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaOperatorConfig describes the Scylla Operator configuration. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of the operator. + * - :ref:`status` + - object + - status defines the observed state of the operator. + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of the operator. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - scyllaUtilsImage + - string + - scyllaUtilsImage is a ScyllaDB image used for running ScyllaDB utilities. + * - unsupportedBashToolsImageOverride + - string + - unsupportedBashToolsImageOverride allows to adjust a generic Bash image with extra tools used by the operator for auxiliary purposes. Setting this field renders your cluster unsupported. Use at your own risk. + * - unsupportedGrafanaImageOverride + - string + - unsupportedGrafanaImageOverride allows to adjust Grafana image used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk. + * - unsupportedPrometheusVersionOverride + - string + - unsupportedPrometheusVersionOverride allows to adjust Prometheus version used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk. + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status defines the observed state of the operator. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - bashToolsImage + - string + - bashToolsImage is a generic Bash image with extra tools used by the operator for auxiliary purposes. + * - grafanaImage + - string + - grafanaImage is the image used by the operator to create a Grafana instance. + * - observedGeneration + - integer + - observedGeneration is the most recent generation observed for this ScyllaOperatorConfig. It corresponds to the ScyllaOperatorConfig's generation, which is updated on mutation by the API Server. + * - prometheusVersion + - string + - prometheusVersion is the Prometheus version used by the operator to create a Prometheus instance. + * - scyllaDBUtilsImage + - string + - scyllaDBUtilsImage is the ScyllaDB image used for running ScyllaDB utilities. diff --git a/stable/_sources/api-reference/index.rst.txt b/stable/_sources/api-reference/index.rst.txt new file mode 100644 index 00000000000..85f7201ce76 --- /dev/null +++ b/stable/_sources/api-reference/index.rst.txt @@ -0,0 +1,13 @@ +API Reference +============= + +All APIs provided by Scylla Operator are defined using CRDs and adhere to Kubernetes API standards. You can find out how Kubernetes style REST APIs work on ``_ and ``_. + +API Groups and Kinds +-------------------- + +.. toctree:: + :maxdepth: 2 + :glob: + + groups/* diff --git a/stable/_sources/clients/alternator.md.txt b/stable/_sources/clients/alternator.md.txt new file mode 100644 index 00000000000..e6651c4c26f --- /dev/null +++ b/stable/_sources/clients/alternator.md.txt @@ -0,0 +1,94 @@ +# Using Alternator (DynamoDB) + +Alternator is a DynamoDB compatible API provided by ScyllaDB. +You can enable it on your ScyllaClusters by adding this section: +```yaml +spec: + alternator: {} +``` +While this is enough to turn it on, there are more options available. +Please refer to our [API documentation]() for details. + +:::{note} +Contrary to CQL clients, Alternator clients don't need to connect to every ScyllaDB node directly, nor discover the ScyllaDB node IP addresses. +Alternator protocol is based on HTTP and you can also expose the service "manually" with other networking concepts like Ingresses. +::: + +## Credentials + +Scylla Operator enables Alternator authorization by default. +Here is a quick example of how to get the token for accessing Alternator API. +To find out more, please refer to [ScyllaDB Alternator documentation](https://opensource.docs.scylladb.com/stable/alternator/compatibility.html#authorization). + +:::{caution} +The `salted_hash` is only present if password authentication for CQL is set up. + +Always make sure your clusters are configured to use Authentication and Authorization. +::: + +:::{tip} +You can find a quick example that enables Authentication and Authorization [here](./cql.md#authentication-and-authorization). +::: + +```bash +kubectl exec -it service/-client -c scylla -- cqlsh --user \ +-e "SELECT salted_hash FROM system_auth.roles WHERE role = ''" +``` + +## AWS CLI + +This paragraph shows how to use `aws dynamodb` cli to remotely connect to ScyllaDB Alternator API. + +:::{note} +This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured networking options differently, +or are using additional networking concepts like Ingresses, this address will need to be adjusted. +::: +:::{caution} +At the time of writing this document `kubectl exec -i` echoes passwords into the terminal. +It can be avoided by manually running `kubectl exec -it` and copying the output into a file / variable. +Because using `kubectl exec` with `-t` option merges standard and error outputs, we can't use it in the scripts bellow. + +See for more details. +::: + +```bash +SCYLLACLUSTER_NAME=scylladb +CQL_USER=cassandra +``` +```bash +SCYLLADB_EP="$( kubectl get "service/${SCYLLACLUSTER_NAME}-client" -o='jsonpath={.spec.clusterIP}' )" +AWS_ENDPOINT_URL_DYNAMODB="https://${SCYLLADB_EP}:8043" +export AWS_ENDPOINT_URL_DYNAMODB + +AWS_ACCESS_KEY_ID="${CQL_USER}" +export AWS_ACCESS_KEY_ID +AWS_SECRET_ACCESS_KEY="$( kubectl exec -i "service/${SCYLLACLUSTER_NAME}-client" -c scylla -- cqlsh --user ${CQL_USER} --no-color \ +-e "SELECT salted_hash from system_auth.roles WHERE role = '${AWS_ACCESS_KEY_ID}';" \ +| sed -e 's/\r//g' | sed -e '4q;d' | sed -E -e 's/^\s+//' )" +export AWS_SECRET_ACCESS_KEY + +AWS_CA_BUNDLE="$( mktemp )" +export AWS_CA_BUNDLE +kubectl get "configmap/${SCYLLACLUSTER_NAME}-alternator-local-serving-ca" --template='{{ index .data "ca-bundle.crt" }}' > "${AWS_CA_BUNDLE}" +``` + +Now we can use `aws dynamodb` cli without modifications. + +```bash +aws dynamodb create-table --table-name MusicCollection --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 +``` +```text +TABLEDESCRIPTION 2024-03-01T16:35:41+01:00 5c8aae70-d7e1-11ee-a99e-6f31aaf1d6d3 MusicCollection ACTIVE +ATTRIBUTEDEFINITIONS Artist S +ATTRIBUTEDEFINITIONS SongTitle S +KEYSCHEMA Artist HASH +KEYSCHEMA SongTitle RANGE +PROVISIONEDTHROUGHPUT 5 5 +``` + +```bash +aws dynamodb list-tables +``` +```text +TABLENAMES MusicCollection +``` diff --git a/stable/_sources/clients/cql.md.txt b/stable/_sources/clients/cql.md.txt new file mode 100644 index 00000000000..bd7e05dff93 --- /dev/null +++ b/stable/_sources/clients/cql.md.txt @@ -0,0 +1,129 @@ +# Using CQL + +`cqlsh` is the CQL shell for ScyllaDB. You can learn more about it in [ScyllaDB documentation](https://opensource.docs.scylladb.com/stable/cql/cqlsh.html). + +## Authentication and Authorization + +For security reasons, you should always enable Authentication and Authorization. +At this point, this needs to be done manually in ScyllaDB Config. +You can find an example configuration bellow: + +:::{code-block} yaml + :emphasize-lines: 7-8 + +apiVersion: v1 +kind: ConfigMap +metadata: + name: scylla-config +data: + scylla.yaml: | + authenticator: PasswordAuthenticator + authorizer: CassandraAuthorizer +::: + +## Embedded cqlsh (aka localhost) + +Every ScyllaDB node has an integrated `cqlsh` available. Here is an example of how it can be used: + +::::{tab-set} +:::{tab-item} Any ScyllaDB Node +```bash +kubectl exec -it service/-client -c scylla -- cqlsh -u +``` +::: +:::{tab-item} Specific ScyllaDB Node +```bash +kubectl exec -it pod/-- -c scylla -- cqlsh -u +``` +::: +:::: +```text +Password: +Connected to scylla at 127.0.0.1:9042 +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4] +Use HELP for help. +@cqlsh> +``` + +## Remote cqlsh + +This paragraph shows how to use `cqlsh` to remotely connect to a ScyllaDB node. +It is strongly recommended to access CQL over TLS connections on port `9142` instead of unencrypted `9042`. +Note that Scylla Operator sets up TLS certificates by default and makes them accessible in the Kubernetes API, +so the encrypted port `9142` works by default. + +:::{caution} +In future releases the unencrypted port `9042` will be disabled by default, unless explicitly opted-in. +::: + +:::{caution} +To avoid unnecessary complexity, the following example simplifies how the credentials file is created. +Please create the credentials file with your text editor and avoid your password leaking into your bash history or environment variables. +To store the configuration permanently, please adjust `SCYLLADB_CONFIG` variable to an empty folder of your choice. +::: + +:::{note} +This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured the networking options differently, +you may need to adjust this endpoint. Please refer to [discovery documentation page](./discovery.md). +::: + +```bash +SCYLLADB_CONFIG="$( mktemp -d )" + +cat < "${SCYLLADB_CONFIG}/credentials" +[PlainTextAuthProvider] +username = +password = +EOF +chmod 600 "${SCYLLADB_CONFIG}/credentials" + +SCYLLADB_DISCOVERY_EP="$( kubectl get service/-client -o='jsonpath={.spec.clusterIP}' )" +kubectl get configmap/-local-serving-ca -o='jsonpath={.data.ca-bundle\.crt}' > "${SCYLLADB_CONFIG}/serving-ca-bundle.crt" +kubectl get secret/-local-user-admin -o='jsonpath={.data.tls\.crt}' | base64 -d > "${SCYLLADB_CONFIG}/admin.crt" +kubectl get secret/-local-user-admin -o='jsonpath={.data.tls\.key}' | base64 -d > "${SCYLLADB_CONFIG}/admin.key" + +cat < "${SCYLLADB_CONFIG}/cqlshrc" +[authentication] +credentials = ${SCYLLADB_CONFIG}/credentials +[connection] +hostname = ${SCYLLADB_DISCOVERY_EP} +port = 9142 +ssl=true +factory = cqlshlib.ssl.ssl_transport_factory +[ssl] +validate=true +certfile=${SCYLLADB_CONFIG}/serving-ca-bundle.crt +usercert=${SCYLLADB_CONFIG}/admin.crt +userkey=${SCYLLADB_CONFIG}/admin.key +EOF +``` + +::::{tab-set} +:::{tab-item} Native +```bash +cqlsh --cqlshrc="${SCYLLADB_CONFIG}/cqlshrc" +``` +::: +:::{tab-item} Podman +```bash +podman run -it --rm --entrypoint=cqlsh \ +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro,Z" \ +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro,Z" \ +docker.io/scylladb/scylla:5.4.3 +``` +::: +:::{tab-item} Docker +```bash +docker run -it --rm --entrypoint=cqlsh \ +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro" \ +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro" \ +docker.io/scylladb/scylla:5.4.3 +``` +::: +:::: +```text +Connected to scylla at :9142 +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4] +Use HELP for help. +@cqlsh> +``` diff --git a/stable/_sources/clients/discovery.md.txt b/stable/_sources/clients/discovery.md.txt new file mode 100644 index 00000000000..b823a01cd04 --- /dev/null +++ b/stable/_sources/clients/discovery.md.txt @@ -0,0 +1,72 @@ +# Discovering ScyllaDB Nodes + +## Preface + +Outside the Kubernetes ecosystem, ScyllaDB nodes are usually set up on static IP addresses +and a fixed subset of them is configured as the initial contact points for ScyllaDB clients. +This has several disadvantages because this particular subset of nodes can be down at the time the client is (re)started, +or the nodes can be replaced and change their IP addresses. +The latter can be mitigated by using DNS and updating the records. + +Scylla Operator allows setting up ScyllaDB in several network configurations, some of which are based on ephemeral IPs. +This makes solving the above-mentioned issues more pressing. + +## ScyllaDB Discovery Endpoint + +For every ScyllaCluster, the operator will set up a Kubernetes Service (an internal load balancer) selecting all ScyllaDB nodes +and the internal Kubernetes controllers make sure to continuously update its endpoints with a subset of ScyllaDB nodes that are ready. +Because of that, you can always talk to ScyllaDB through this endpoint, as long as there are nodes to back it. +In case you are in the same Kubernetes cluster you can also use internal DNS for this service. + +Clients can use this endpoint for the initial connection to reach one of the ScyllaDB nodes that are ready +and from there the drivers will automatically discover the per-node IP address for every ScyllaDB node that's part of this cluster. + +This service is called `-client` and in its default configuration it uses ClusterIP which is virtual and local to the Kubernetes cluster. +It can be configured to be backed by an external load balancer, be exposed through an Ingress, an additional hop or in other ways. +Depending on how you have configured the networking, use the appropriate IP address or DNS name for your client. + +Here is an example of how the unmodified service looks like: + +```bash +kubectl get scyllacluster/scylla service/scylla-client +``` +``` +NAME READY MEMBERS RACKS AVAILABLE PROGRESSING DEGRADED AGE +scyllacluster.scylla.scylladb.com/scylla 1 1 1 True True True 10d + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-client ClusterIP 10.102.44.43 7000/TCP,7001/TCP,9042/TCP,9142/TCP,19042/TCP,19142/TCP,7199/TCP,10001/TCP,9180/TCP,5090/TCP,9100/TCP,9160/TCP,8043/TCP 10d +``` + +You can get only the ClusterIP using +```bash +kubectl get service/scylla-client -o='jsonpath={.spec.clusterIP}' +``` +or use its DNS name (`scylla-client..svc`). + +### Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary + +In case you are connecting from outside the Kubernetes cluster and using Pod IPs as your exposure type, you can expose just the `-client` service using an internal load balancer. +Having a stable contact point is especially important when using ephemeral Pod IPs. +Services configure internal load balancer using provider-specific annotations, so this may differ with your provider. + +:::{tip} +To learn more about exposing ScyllaClusters, visit our dedicated documentation [page](../exposing.md). +::: + +::::{tab-set} +:::{tab-item} GKE +```bash +kubectl patch service/-client -p '{"metadata": {"annotations": {"networking.gke.io/load-balancer-type": "Internal"}}, "spec": {"type": "LoadBalancer"}}' +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/-client +kubectl get service/-client -o='jsonpath={.status.loadBalancer.ingress[0].ip}' +``` +::: +:::{tab-item} EKS +```bash +kubectl patch service/-client -p '{"metadata": {"annotations": {"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal", "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "tcp"}}, "spec": {"type": "LoadBalancer"}}' +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/-client +kubectl get service/-client -o='jsonpath={.status.loadBalancer.ingress[0].hostname}' +``` +::: +:::: diff --git a/stable/_sources/clients/index.rst.txt b/stable/_sources/clients/index.rst.txt new file mode 100644 index 00000000000..0c8c4697608 --- /dev/null +++ b/stable/_sources/clients/index.rst.txt @@ -0,0 +1,12 @@ +========================================================== +Using ScyllaDB APIs +========================================================== + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + + discovery + cql + alternator diff --git a/stable/_sources/contributing.md.txt b/stable/_sources/contributing.md.txt new file mode 100644 index 00000000000..da5fc078732 --- /dev/null +++ b/stable/_sources/contributing.md.txt @@ -0,0 +1,155 @@ +# Contributing to Scylla Operator + +## Prerequisites + +To develop on scylla-operator, your environment must have the following: + +1. [Go 1.13](https://golang.org/dl/) + * Make sure [GOPATH](https://github.com/golang/go/wiki/SettingGOPATH) is set to `GOPATH=$HOME/go`. +2. [Kustomize v3.1.0](https://github.com/kubernetes-sigs/kustomize/releases/tag/v3.1.0) +3. [kubebuilder v2.3.1](https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v2.3.1) +4. [Docker](https://docs.docker.com/install/) +5. Git client installed +6. Github account + +To install all dependencies (Go, kustomize, kubebuilder, dep), simply run: +```bash +./install-dependencies.sh +``` + +## Initial Setup + +### Create a Fork + +From your browser navigate to [http://github.com/scylladb/scylla-operator](http://github.com/scylladb/scylla-operator) and click the "Fork" button. + +### Clone Your Fork + +Open a console window and do the following: + +```bash +# Create the scylla operator repo path +mkdir -p $GOPATH/src/github.com/scylladb + +# Navigate to the local repo path and clone your fork +cd $GOPATH/src/github.com/scylladb + +# Clone your fork, where is your GitHub account name +git clone https://github.com//scylla-operator.git +``` + +### Add Upstream Remote + +First you will need to add the upstream remote to your local git: +```bash +# Add 'upstream' to the list of remotes +git remote add upstream https://github.com/scylladb/scylla-operator.git + +# Verify the remote was added +git remote -v +``` +Now you should have at least `origin` and `upstream` remotes. You can also add other remotes to collaborate with other contributors. + +## Development + +To add a feature or to make a bug fix, you will need to create a branch in your fork and then submit a pull request (PR) from the branch. + +### Building the project + +You can build the project using the Makefile commands: +* Open the Makefile and change the `IMG` environment variable to a repository you have access to. +* Run `make docker-push` and wait for the image to be built and uploaded in your repo. + +### Create a Branch + +From a console, create a new branch based on your fork and start working on it: + +```bash +# Ensure all your remotes are up to date with the latest +git fetch --all + +# Create a new branch that is based off upstream master. Give it a simple, but descriptive name. +# Generally it will be two to three words separated by dashes and without numbers. +git checkout -b feature-name upstream/master +``` + +Now you are ready to make the changes and commit to your branch. + +### Updating Your Fork + +During the development lifecycle, you will need to keep up-to-date with the latest upstream master. As others on the team push changes, you will need to `rebase` your commits on top of the latest. This avoids unnecessary merge commits and keeps the commit history clean. + +Whenever you need to update your local repository, you never want to merge. You **always** will rebase. Otherwise you will end up with merge commits in the git history. If you have any modified files, you will first have to stash them (`git stash save -u ""`). + +```bash +git fetch --all +git rebase upstream/master +``` + +Rebasing is a very powerful feature of Git. You need to understand how it works or else you will risk losing your work. Read about it in the [Git documentation](https://git-scm.com/docs/git-rebase), it will be well worth it. In a nutshell, rebasing does the following: +- "Unwinds" your local commits. Your local commits are removed temporarily from the history. +- The latest changes from upstream are added to the history +- Your local commits are re-applied one by one +- If there are merge conflicts, you will be prompted to fix them before continuing. Read the output closely. It will tell you how to complete the rebase. +- When done rebasing, you will see all of your commits in the history. + +## Submitting a Pull Request + +Once you have implemented the feature or bug fix in your branch, you will open a PR to the upstream repo. Before opening the PR ensure you have added unit tests, are passing the integration tests, cleaned your commit history, and have rebased on the latest upstream. + +In order to open a pull request (PR) it is required to be up to date with the latest changes upstream. If other commits are pushed upstream before your PR is merged, you will also need to rebase again before it will be merged. + +### Commit History + +To prepare your branch to open a PR, you will need to have the minimal number of logical commits so we can maintain +a clean commit history. Most commonly a PR will include a single commit where all changes are squashed, although +sometimes there will be multiple logical commits. + +```bash +# Inspect your commit history to determine if you need to squash commits +git log + +# Rebase the commits and edit, squash, or even reorder them as you determine will keep the history clean. +# In this example, the last 5 commits will be opened in the git rebase tool. +git rebase -i HEAD~5 +``` + +Once your commit history is clean, ensure you have based on the [latest upstream](#updating-your-fork) before you open the PR. + +### Commit messages + +Please make the first line of your commit message a summary of the change that a user (not a developer) of Operator would like to read, +and prefix it with the most relevant directory of the change followed by a colon. +The changelog gets made by looking at just these first lines so make it good! + +If you have more to say about the commit, then enter a blank line and carry on the description. +Remember to say why the change was needed - the commit itself shows what was changed. + +Writing more is better than less. Comparing the behaviour before the change to that after the change is very useful. +Imagine you are writing to yourself in 12 months time when you've forgotten everything about what you just did, and you need to get up to speed quickly. + +If the change fixes an issue then write Fixes #1234 in the commit message. +This can be on the subject line if it will fit. If you don't want to close the associated issue just put #1234 and the change will get linked into the issue. + +Here is an example of a short commit message: + +``` +sidecar: log on reconcile loop - fixes #1234 +``` + +And here is an example of a longer one: +``` + +api: now supports host networking (#1234) + +The operator CRD now has a "network" property that can be used to +select host networking as well as setting the apropriate DNS policy. + +Fixes #1234 +``` + +### Submitting + +Go to the [Scylla Operator github](https://www.github.com/scylladb/scylla-operator) to open the PR. If you have pushed recently, you should see an obvious link to open the PR. If you have not pushed recently, go to the Pull Request tab and select your fork and branch for the PR. + +After the PR is open, you can make changes simply by pushing new commits. Your PR will track the changes in your fork and update automatically. diff --git a/stable/_sources/eks.md.txt b/stable/_sources/eks.md.txt new file mode 100644 index 00000000000..94abd21b15e --- /dev/null +++ b/stable/_sources/eks.md.txt @@ -0,0 +1,128 @@ +# Deploying Scylla on EKS + +This guide is focused on deploying Scylla on EKS with improved performance. +Performance tricks used by the script won't work with different machine tiers. +It sets up the kubelets on EKS nodes to run with [static cpu policy](https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/) and uses [local sdd disks](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html) in RAID0 for maximum performance. + +Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the [general guide](generic.md). + +## TL;DR; + +If you don't want to run the commands step-by-step, you can just run a script that will set everything up for you: +```bash +# Edit according to your preference +EKS_REGION=us-east-1 +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c + +# From inside the examples/eks folder +cd examples/eks +./eks.sh -z "$EKS_ZONES" -r "$EKS_REGION" +``` + +After you deploy, see how you can [benchmark your cluster with cassandra-stress](generic.md#benchmark-with-cassandra-stress). + +## Walkthrough + +### EKS Setup + +#### Configure environment variables + +First of all, we export all the configuration options as environment variables. +Edit according to your own environment. + +``` +EKS_REGION=us-east-1 +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c +CLUSTER_NAME=scylla-demo +``` + +#### Creating an EKS cluster + +For this guide, we'll create an EKS cluster with the following: + +* A NodeGroup of 3 `i3-2xlarge` Nodes, where the Scylla Pods will be deployed. These nodes will only accept pods having `scylla-clusters` toleration. + +``` + - name: scylla-pool + instanceType: i3.2xlarge + desiredCapacity: 3 + labels: + scylla.scylladb.com/node-type: scylla + taints: + role: "scylla-clusters:NoSchedule" + ssh: + allow: true + kubeletExtraConfig: + cpuManagerPolicy: static +``` + +* A NodeGroup of 4 `c4.2xlarge` Nodes to deploy `cassandra-stress` later on. These nodes will only accept pods having `cassandra-stress` toleration. + +``` + - name: cassandra-stress-pool + instanceType: c4.2xlarge + desiredCapacity: 4 + labels: + pool: "cassandra-stress-pool" + taints: + role: "cassandra-stress:NoSchedule" + ssh: + allow: true +``` + +* A NodeGroup of 1 `i3.large` Node, where the monitoring stack and operator will be deployed. +``` + - name: monitoring-pool + instanceType: i3.large + desiredCapacity: 1 + labels: + pool: "monitoring-pool" + ssh: + allow: true +``` + +### Prerequisites + +#### Installing script third party dependencies + +Script requires several dependencies: +- eksctl - See: https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html +- kubectl - See: https://kubernetes.io/docs/tasks/tools/install-kubectl/ + +### Deploying ScyllaDB Operator + +Refer to [Deploying Scylla on a Kubernetes Cluster](generic.md) in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites. + +#### Setting up nodes for ScyllaDB + +ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you'll first need to form a RAID array from those disks. +`NodeConfig` performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in [Performance tuning](performance.md) section of ScyllaDB Operator's documentation. + +Deploy `NodeConfig` to let it take care of the above operations: +``` +kubectl apply --server-side -f examples/eks/nodeconfig-alpha.yaml +``` + +#### Deploying Local Volume Provisioner + +Afterwards, deploy ScyllaDB's [Local Volume Provisioner](https://github.com/scylladb/k8s-local-volume-provisioner), capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays. +``` +kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/ +``` + +### Deploying ScyllaDB + +Now you can follow the steps described in [Deploying Scylla on a Kubernetes Cluster](generic.md) to launch your ScyllaDB cluster in a highly performant environment. + +#### Accessing the database + +Instructions on how to access the database can also be found in the [generic guide](generic.md). + +### Deleting an EKS cluster + +Once you are done with your experiments delete your cluster using the following command: + +``` +eksctl delete cluster "${CLUSTER_NAME}" +``` diff --git a/stable/_sources/exposing.md.txt b/stable/_sources/exposing.md.txt new file mode 100644 index 00000000000..9ec6e0ba4e5 --- /dev/null +++ b/stable/_sources/exposing.md.txt @@ -0,0 +1,304 @@ +# Exposing ScyllaCluster + +This document explains how ScyllaDB Operator exposes ScyllaClusters in different network setups. +A ScyllaCluster can be exposed in various network configurations, independently to clients and nodes. + +:::{note} +ScyllaClusters can be only exposed when the ScyllaDB version used version is `>=2023.1` ScyllaDB Enterprise or `>=5.2` ScyllaDB Open Source. +::: + +## Expose Options + +:::{note} +`exposeOptions` are immutable, they cannot be changed after ScyllaCluster is created. +::: + +`exposeOptions` specifies configuration options for exposing ScyllaCluster's. +A ScyllaCluster created without any `exposeOptions` is equivalent to the following: + +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: ServiceClusterIP + nodes: + type: ServiceClusterIP +``` + +The following sections cover what every field controls and what the configuration options are. + +### Node Service Template + +`nodeService` serves as a template for a node-dedicated Service managed by the Scylla Operator for each node within a ScyllaCluster. +The properties of the Services depend on the selected type. +Additionally, there's an option to define custom annotations, incorporated into each node's Service, +which might be useful for further tweaking the Service properties or related objects. + +#### Headless Type + +For `Headless` type, Scylla Operator creates a Headless Service with a selector pointing to the particular node in the ScyllaCluster. +Such Service doesn't provide any additional IP addresses, and the internal DNS record resolves to the PodIP of a node. + +This type of Service is useful when ScyllaCluster nodes broadcast PodIPs to clients and other nodes. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless +``` + +#### ClusterIP Type + +For `ClusterIP` type, Scylla Operator creates a ClusterIP Service backed by a specific node in the ScyllaCluster. + +These IP addresses are only routable within the same Kubernetes cluster, so it's a good fit, if you don't want to expose them to other networks. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP +``` + +#### LoadBalancer Type + +For the `LoadBalancer` type, Scylla Operator generates a LoadBalancer Service that directs traffic to a specific node within the ScyllaCluster. +On platforms with support for external load balancers, this Service provisions one. +The accessibility of this load balancer's address depends on the platform and any customizations made; in some cases it may be reachable from the internal network or public Internet. + +Customizations are usually managed via Service annotations, key-value pairs provided in `annotations` field are merged into each Service object. +LoadBalancer Services should be configured to pass through entire traffic. +For example, to expose LoadBalancer only to internal network use the following annotations: + +::::{tab-set} +:::{tab-item} EKS +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + annotations: + service.beta.kubernetes.io/aws-load-balancer-scheme: internal + service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp +``` +::: +:::{tab-item} GKE +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + annotations: + networking.gke.io/load-balancer-type: Internal +``` +::: +:::: + +Check platform-specific documentation regarding LoadBalancer configuration to learn more about available options. + +LoadBalancer Service is a superset of ClusterIP Service, implying that each LoadBalancer Service also contains an allocated ClusterIP. +They can be configured using the following fields, which propagate to every node Service: +* externalTrafficPolicy +* internalTrafficPolicy +* loadBalancerClass +* allocateLoadBalancerNodePorts + +Check [Kubernetes Service documentation](https://kubernetes.io/docs/concepts/services-networking/service) to learn more about these options. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + loadBalancerClass: my-custom-load-balancer-class +``` + +--- + +### Broadcast Options + +Broadcast options control what is the source of the address being broadcasted to clients and nodes. +It's configured independently for clients and nodes because you may want to expose these two types of traffic on different networks. +Using different networks can help manage costs, reliability, latency, security policies or other metrics you care about. + +#### PodIP Type + +Address broadcasted to clients/nodes is taken from Pod. +By default, the address is taken from Pod's `status.PodIP` field. +Because a Pod can use multiple address, you may want to provide source options by specifying `podIP.source`. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: PodIP + podIP: + source: Status +``` + +#### ServiceClusterIP Type + +Address broadcasted to clients or nodes is taken from `spec.ClusterIP` field of a node's dedicated Service. + +In order to configure it, the `nodeService` template must specify a Service having a ClusterIP assigned. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: ServiceClusterIP +``` + +#### ServiceLoadBalancerIngress Type + +Address broadcasted to clients/nodes is taken from the node dedicated Service, from `status.ingress[0].ipAddress` or `status.ingress[0].hostname` field. + +In order to configure it, the `nodeService` template must specify the LoadBalancer Service. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: ServiceLoadBalancerIngress + podIP: + source: Status +``` + +## Deployment Examples + +The following section contains several specific examples of various network scenarios and explains how nodes and clients communicate with one another. +### In-cluster only + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: ServiceClusterIP + nodes: + type: ServiceClusterIP +``` + +Both client and nodes are deployed within the same Kubernetes cluster. +They talk through ClusterIP addresses taken from the Service. +Because ClusterIP Services are only routable within the same Kubernetes cluster, this cluster won't be reachable from outside. + +![ClusterIPs](static/exposing/clusterip.svg) + +### In-cluster node-to-node, VPC clients-to-nodes + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: PodIP + nodes: + type: ServiceClusterIP +``` + +In this scenario, we assume that the Pod IP subnet is routable within a VPC. +Clients within the VPC network can communicate directly with ScyllaCluster nodes using PodIPs. +Nodes communicate with each other exclusively within the same Kubernetes cluster. + +![PodIPs](static/exposing/podips.svg) + +### Multi VPC + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP +``` + +In this scenario, we set up two separate Kubernetes clusters in distinct VPCs. +These VPCs are interconnected to facilitate inter-VPC connectivity. +We operate on the assumption that the Pod IP subnet is routable within each VPC. + +Both ScyllaClusters use the same `exposeOptions`, nodes broadcast their Pod IP addresses, enabling them to establish connections with one another. +****Check other documentation pages to know how to connect two ScyllaClusters into one logical cluster. + +Clients, whether deployed within the same Kubernetes cluster or within a VPC, have the capability to reach nodes using their Pod IPs. +Since there is no requirement for any address other than the Pod IP, the `Headless` service type is sufficient. + +![MultiVPC](static/exposing/multivpc.svg) + +### Internet + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + broadcastOptions: + clients: + type: ServiceLoadBalancerIngress + nodes: + type: ClusterIP +``` + +We assume that a Kubernetes cluster has been deployed in a cloud provider environment that supports external load balancers. +By specifying the LoadBalancer type in the nodeService template, the Scylla Operator generates a dedicated LB Service for each node. +The cloud provider then establishes an external load balancer with an internet-accessible address. +ScyllaDB nodes broadcast this external address to clients, enabling drivers to connect and discover other nodes. +Since all ScyllaDB nodes reside within the same Kubernetes cluster, there is no need to route traffic through the internet. +Consequently, the nodes are configured to communicate via ClusterIP, which is also accessible within LoadBalancer Services. + +![Internet](static/exposing/loadbalancer.svg) + +--- + +Other more complex scenarios can be built upon these simple ones. diff --git a/stable/_sources/generic.md.txt b/stable/_sources/generic.md.txt new file mode 100644 index 00000000000..4ed517774f9 --- /dev/null +++ b/stable/_sources/generic.md.txt @@ -0,0 +1,372 @@ +# Deploying Scylla on a Kubernetes Cluster + +This is a guide to deploy a Scylla Cluster in a generic Kubernetes environment, meaning that Scylla will not be deployed with the ideal performance. +Scylla performs the best when it has fast disks and direct access to the cpu. +This requires some extra setup, which is platform-specific. +For specific configuration and setup, check for details about your particular environment: + +* [GKE](gke.md) + +## Prerequisites + +* A Kubernetes cluster +* A [Storage Class](https://kubernetes.io/docs/concepts/storage/storage-classes/) to provision [PersistentVolumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/). +* Helm 3 installed, Go to the [helm docs](https://docs.helm.sh/using_helm/#installing-helm) if you need to install it. + Make sure that you enable the [stable repository](https://github.com/helm/charts#how-do-i-enable-the-stable-repository-for-helm-3) + +## Running locally + +Running kubernetes locally is a daunting and error prone task. +Fortunately there are ways to make life easier and [Minikube](https://minikube.sigs.k8s.io/docs/) makes it a breeze. + +We need to give minikube a little bit more resources than default so start minikube like this: +```console +minikube start --cpus=6 +``` + +Then make kubectl aware of this local installation like this: +```console +eval $(minikube docker-env) +``` + +## Download Scylla Operator +In this guide you will be using the examples and manifests from [Scylla Operator repository](https://github.com/scylladb/scylla-operator), so start off by cloning it to your local machine. +```console +git clone git@github.com:scylladb/scylla-operator.git +cd scylla-operator +``` + +## Deploy Cert Manager +First deploy Cert Manager, you can either follow [upsteam instructions](https://cert-manager.io/docs/installation/kubernetes/) or use following command: + +```console +kubectl apply -f examples/common/cert-manager.yaml +``` +This will install Cert Manager to provision a self-signed certificate. + +Once it's deployed, wait until Cert Manager is ready: + +```console +kubectl wait --for condition=established crd/certificates.cert-manager.io crd/issuers.cert-manager.io +kubectl -n cert-manager rollout status deployment.apps/cert-manager-webhook +``` + +## Deploy Scylla Operator + +Deploy the Scylla Operator using the following commands: + +```console +kubectl apply -f deploy/operator.yaml +``` + +This will install the operator in namespace `scylla-operator`. +Wait until it's ready: + +```console +kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator +``` + +If you want to check the logs of the operator you can do so with: + + ```console +kubectl -n scylla-operator logs deployment.apps/scylla-operator +``` + +## Create and Initialize a Scylla Cluster + +Now that the operator is running, we can create an instance of a Scylla cluster by creating an instance of the `clusters.scylla.scylladb.com` resource. +Some of that resource's values are configurable, so feel free to browse `cluster.yaml` and tweak the settings to your liking. +Full details for all the configuration options can be found in the [Scylla Cluster CRD documentation](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). + +When you are ready to create a Scylla cluster, simply run: + +```console +kubectl create -f examples/generic/cluster.yaml +``` + +We can verify that a Kubernetes object has been created that represents our new Scylla cluster with the command below. +This is important because it shows that has successfully extended Kubernetes to make Scylla clusters a first class citizen in the Kubernetes cloud-native environment. + +```console +kubectl -n scylla get ScyllaCluster +``` + +Checking the pods that are created is as easy as: + +```console +kubectl -n scylla get pods +``` + +The output should be something like: + +```console +NAME READY STATUS RESTARTS AGE +simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 9m49s +simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 7m43s +simple-cluster-us-east-1-us-east-1a-2 2/2 Running 0 6m46s +``` + +It is important to note that the operator creates these instances according to a pattern. +This pattern is as follows: `CLUSTER_NAME-DATACENTER_NAME-RACK_NAME-INSTANCE_NUMBER` as specified in `cluster.yaml`. + +In the above example we have the following properties: + + - CLUSTER_NAME: `simple-cluster` + - DATACENTER_NAME: `us-east-1` + - RACK_NAME: `us-east-1a` + - INSTANCE_NUMBER: An automatically generated number attached to the pod name. + +We picked the names to resemble something you can find in a cloud service but this is inconsequential, they can be set to anything you want. + +To check if all the desired members are running, you should see the same number of entries from the following command as the number of members that was specified in `cluster.yaml`: + +```console +kubectl -n scylla get pod -l app=scylla +``` + +You can also track the state of a Scylla cluster from its status. To check the current status of a Cluster, run: + +```console +kubectl -n scylla describe ScyllaCluster simple-cluster +``` + +Checking the logs of the running scylla instances can be done like this: + +```console +kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 scylla +``` + + +### Configure container kernel parameters + +Sometimes it is necessary to run the container with different kernel parameters. +In order to support this, the Scylla Operator defines a cluster property `sysctls` that is a list of the desired key-value pairs to set. + +___For example___: To increase the number events available for asynchronous IO processing in the Linux kernel to N set sysctls to`fs.aio-max-nr=N`. + +```yaml +spec: + sysctls: + - "fs.aio-max-nr=2097152" +``` + +### Deploying Alternator + +The operator is also capable of deploying [Alternator](https://www.scylladb.com/alternator/) instead of the regular Scylla. +This requires a small change in the cluster definition. +Change the `cluster.yaml` file from this: +```yaml +spec: + agentVersion: 3.3.0 + version: 6.1.1 + developerMode: true + datacenter: + name: us-east-1 +``` +to this: +```yaml +spec: + version: 6.1.1 + alternator: + port: 8000 + writeIsolation: only_rmw_uses_lwt + agentVersion: 3.3.0 + developerMode: true + datacenter: + name: us-east-1 +``` +You can specify whichever port you want. + +You must provide desired write isolation, supported values are: "always", "forbid_rmw", "only_rmw_uses_lwt". +Difference between those isolation levels can be found in Scylla Alternator documentation. + +Once this is done the regular CQL ports will no longer be available, the cluster is a pure Alternator cluster. + +## Accessing the Database + +* From kubectl: + +To get a cqlsh shell in your new Cluster: +```console +kubectl exec -n scylla -it simple-cluster-us-east-1-us-east-1a-0 -- cqlsh +> DESCRIBE KEYSPACES; +``` + + +* From inside a Pod: + +When you create a new Cluster, automatically creates a Service for the clients to use in order to access the Cluster. +The service's name follows the convention `-client`. +You can see this Service in your cluster by running: +```console +kubectl -n scylla describe service simple-cluster-client +``` +Pods running inside the Kubernetes cluster can use this Service to connect to Scylla. +Here's an example using the [Python Driver](https://github.com/datastax/python-driver): +```python +from cassandra.cluster import Cluster + +cluster = Cluster(['simple-cluster-client.scylla.svc']) +session = cluster.connect() +``` + +If you are running the Alternator you can access the API on the port you specified using plain http. + +## Configure Scylla + +The operator can take a ConfigMap and apply it to the scylla.yaml configuration file. +This is done by adding a ConfigMap to Kubernetes and refering to this in the Rack specification. +The ConfigMap is just a file called `scylla.yaml` that has the properties you want to change in it. +The operator will take the default properties for the rest of the configuration. + +* Create a ConfigMap the default name that the operator uses is `scylla-config`: +```console +kubectl create configmap scylla-config -n scylla --from-file=/path/to/scylla.yaml +``` +* Wait for the mount to propagate and then restart the cluster: +```console +kubectl rollout restart -n scylla statefulset/simple-cluster-us-east-1-us-east-1a +``` +* The new config should be applied automatically by the operator, check the logs to be sure. + +Configuring `cassandra-rackdc.properties` is done by adding the file to the same mount as `scylla.yaml`. +```console +kubectl create configmap scylla-config -n scylla --from-file=/tmp/scylla.yaml --from-file=/tmp/cassandra-rackdc.properties -o yaml --dry-run | kubectl replace -f - +``` +The operator will then apply the overridable properties `prefer_local` and `dc_suffix` if they are available in the provided mounted file. + +:::{note} +If you want to enable authentication, you first need to adjust `system_auth` keyspace replication factor to the number of nodes in the datacenter via cqlsh. It allows you to ensure that the user’s information is kept highly available for the cluster. If `system_auth` is not equal to the number of nodes and a node fails, the user whose information is on that node will be denied access. +For production environments only use `NetworkTopologyStrategy`. + +```shell +kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : };" +``` + +You can read more about enabling authentication in the [Enable authentication](https://opensource.docs.scylladb.com/stable/operating-scylla/security/authentication.html) section of ScyllaDB's documentation. +::: + +## Configure Scylla Manager Agent + +The operator creates a second container for each scylla instance that runs [Scylla Manager Agent](https://hub.docker.com/r/scylladb/scylla-manager-agent). +This container serves as a sidecar and it's the main endpoint for interacting with Scylla API. +The Scylla Manager Agent can be configured with various things such as the security token used to allow access to Scylla API and storage providers for backups. + +To configure the agent you just create a new secret called _scylla-agent-config-secret_ and populate it with the contents in the `scylla-manager-agent.yaml` file like this: +```console +kubectl create secret -n scylla generic scylla-agent-config-secret --from-file scylla-manager-agent.yaml +``` + +See [Scylla Manager Agent configuration](https://manager.docs.scylladb.com/stable/config/scylla-manager-config.html) for a complete reference of the Scylla Manager agent config file. + +### Scylla Manager Agent auth token + +Operator provisions Agent auth token by copying value from user provided config secret or auto generates it if it's empty. +To check which value is being used, decode content of `-auth-token` secret. +To change it simply remove the secret. Operator will create a new one. To pick up the change in the cluster, initiate a rolling restart. + +## Set up monitoring + +To set up monitoring using Prometheus and Grafana follow [this guide](monitoring.md). + +## Scale a ScyllaCluster + +The operator supports adding new nodes to existing racks, adding new racks to the cluster, as well as removing both single nodes and entire racks. To introduce the changes, edit the cluster with: +```console +kubectl -n scylla edit scyllaclusters.scylla.scylladb.com/simple-cluster +``` +* To modify the number of nodes in a rack, update the `members` field of the selected rack to a desired value. +* To add a new rack, append it to the `.spec.datacenter.racks` list. Remember to choose a unique rack name for the new rack. +* To remove a rack, first scale it down to zero nodes, and then remove it from `.spec.datacenter.racks` list. + +Having edited and saved the yaml, you can check your cluster's Status and Events to retrieve information about what's happening: +```console +kubectl -n scylla describe scyllaclusters.scylla.scylladb.com/simple-cluster +``` + +:::{note} +If you have configured ScyllaDB with `authenticator` set to `PasswordAuthenticator`, you need to manually configure the replication factor of the `system_auth` keyspace with every scaling operation. + +```shell +kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -u -p -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : };" +``` + +It is recommended to set `system_auth` replication factor to the number of nodes in each datacenter. +::: + +## Benchmark with cassandra-stress + +After deploying our cluster along with the monitoring, we can benchmark it using cassandra-stress and see its performance in Grafana. We have a mini cli that generates Kubernetes Jobs that run cassandra-stress against a cluster. + +> Because cassandra-stress doesn't scale well to multiple cores, we use multiple jobs with a small core count for each + +```bash + +# Run a benchmark with 10 jobs, with 6 cpus and 50.000.000 operations each. +# Each Job will throttle throughput to 30.000 ops/sec for a total of 300.000 ops/sec. +hack/cass-stress-gen.py --num-jobs=10 --cpu=6 --memory=20G --ops=50000000 --limit=30000 +kubectl apply -f scripts/cassandra-stress.yaml +``` + +Make sure you set the proper arguments in case you have altered things such as _name_ or _namespace_. + +```bash +./hack/cass-stress-gen.py -h +usage: cass-stress-gen.py [-h] [--num-jobs NUM_JOBS] [--name NAME] [--namespace NAMESPACE] [--scylla-version SCYLLA_VERSION] [--host HOST] [--cpu CPU] [--memory MEMORY] [--ops OPS] [--threads THREADS] [--limit LIMIT] + [--connections-per-host CONNECTIONS_PER_HOST] [--print-to-stdout] [--nodeselector NODESELECTOR] + +Generate cassandra-stress job templates for Kubernetes. + +optional arguments: + -h, --help show this help message and exit + --num-jobs NUM_JOBS number of Kubernetes jobs to generate - defaults to 1 + --name NAME name of the generated yaml file - defaults to cassandra-stress + --namespace NAMESPACE + namespace of the cassandra-stress jobs - defaults to "default" + --scylla-version SCYLLA_VERSION + version of scylla server to use for cassandra-stress - defaults to 4.0.0 + --host HOST ip or dns name of host to connect to - defaults to scylla-cluster-client.scylla.svc + --cpu CPU number of cpus that will be used for each job - defaults to 1 + --memory MEMORY memory that will be used for each job in GB, ie 2G - defaults to 2G * cpu + --ops OPS number of operations for each job - defaults to 10000000 + --threads THREADS number of threads used for each job - defaults to 50 * cpu + --limit LIMIT rate limit for each job - defaults to no rate-limiting + --connections-per-host CONNECTIONS_PER_HOST + number of connections per host - defaults to number of cpus + --print-to-stdout print to stdout instead of writing to a file + --nodeselector NODESELECTOR + nodeselector limits cassandra-stress pods to certain nodes. Use as a label selector, eg. --nodeselector role=scylla +``` +While the benchmark is running, open up Grafana and take a look at the monitoring metrics. + +After the Jobs finish, clean them up with: +```bash +kubectl delete -f scripts/cassandra-stress.yaml +``` + +## Clean Up + +To clean up all resources associated with this walk-through, you can run the commands below. + +**NOTE:** this will destroy your database and delete all of its associated data. + +```console +kubectl delete -f examples/generic/cluster.yaml +kubectl delete -f deploy/operator.yaml +kubectl delete -f examples/common/cert-manager.yaml +``` + +## Troubleshooting + +If the cluster does not come up, the first step would be to examine the operator's logs: + +```console +kubectl -n scylla-operator logs deployment.apps/scylla-operator +``` + +If everything looks OK in the operator logs, you can also look in the logs for one of the Scylla instances: + +```console +kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 +``` diff --git a/stable/_sources/gke.md.txt b/stable/_sources/gke.md.txt new file mode 100644 index 00000000000..3ea9e1c9de3 --- /dev/null +++ b/stable/_sources/gke.md.txt @@ -0,0 +1,173 @@ +# Deploying Scylla on GKE + +This guide is focused on deploying Scylla on GKE with maximum performance (without any persistence guarantees). +It sets up the kubelets on GKE nodes to run with [static cpu policy](https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/) and uses [local sdd disks](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/local-ssd) in RAID0 for maximum performance. + +Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the [general guide](generic.md). + +## TL;DR; + +If you don't want to run the commands step-by-step, you can just run a script that will set everything up for you: +```bash +# Edit according to your preference +GCP_USER=$(gcloud config list account --format "value(core.account)") +GCP_PROJECT=$(gcloud config list project --format "value(core.project)") +GCP_ZONE=us-west1-b + +# From inside the examples/gke folder +cd examples/gke +./gke.sh -u "$GCP_USER" -p "$GCP_PROJECT" -z "$GCP_ZONE" + +# Example: +# ./gke.sh -u yanniszark@arrikto.com -p gke-demo-226716 -z us-west1-b +``` + +:::{warning} +Make sure to pass a ZONE (ex.: us-west1-b) and not a REGION (ex.: us-west1) or it will deploy nodes in each ZONE available in the region. +::: + +After you deploy, see how you can [benchmark your cluster with cassandra-stress](generic.md#benchmark-with-cassandra-stress). + +## Walkthrough + +### Google Kubernetes Engine Setup + +#### Configure environment variables + +First of all, we export all the configuration options as environment variables. +Edit according to your own environment. + +``` +GCP_USER=$( gcloud config list account --format "value(core.account)" ) +GCP_PROJECT=$( gcloud config list project --format "value(core.project)" ) +GCP_REGION=us-west1 +GCP_ZONE=us-west1-b +CLUSTER_NAME=scylla-demo +CLUSTER_VERSION=$( gcloud container get-server-config --zone ${GCP_ZONE} --format "value(validMasterVersions[0])" ) +``` + +#### Creating a GKE cluster + +First we need to change kubelet CPU Manager policy to static by providing a config file. Create file called `systemconfig.yaml` with the following content: +``` +kubeletConfig: + cpuManagerPolicy: static +``` + +Then we'll create a GKE cluster with the following: + +1. A NodePool of 2 `n1-standard-8` Nodes, where the operator and the monitoring stack will be deployed. These are generic Nodes and their free capacity can be used for other purposes. + ``` + gcloud container \ + clusters create "${CLUSTER_NAME}" \ + --cluster-version "${CLUSTER_VERSION}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-8" \ + --num-nodes "2" \ + --disk-type "pd-ssd" --disk-size "20" \ + --image-type "UBUNTU_CONTAINERD" \ + --enable-stackdriver-kubernetes \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +2. A NodePool of 2 `n1-standard-32` Nodes to deploy `cassandra-stress` later on. + + ``` + gcloud container --project "${GCP_PROJECT}" \ + node-pools create "cassandra-stress-pool" \ + --cluster "${CLUSTER_NAME}" \ + --zone "${GCP_ZONE}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-32" \ + --num-nodes "2" \ + --disk-type "pd-ssd" --disk-size "20" \ + --node-taints role=cassandra-stress:NoSchedule \ + --image-type "UBUNTU_CONTAINERD" \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +3. A NodePool of 4 `n1-standard-32` Nodes, where the Scylla Pods will be deployed. Each of these Nodes has 8 local NVMe SSDs attached, which are provided as [raw block devices](https://cloud.google.com/kubernetes-engine/docs/concepts/local-ssd#block). It is important to disable `autoupgrade` and `autorepair`. Automatic cluster upgrade or node repair has a hard timeout after which it no longer respect PDBs and force deletes the Compute Engine instances, which also deletes all data on the local SSDs. At this point, it's better to handle upgrades manually, with more control over the process and error handling. + ``` + gcloud container \ + node-pools create "scylla-pool" \ + --cluster "${CLUSTER_NAME}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-32" \ + --num-nodes "4" \ + --disk-type "pd-ssd" --disk-size "20" \ + --local-nvme-ssd-block count="8" \ + --node-taints role=scylla-clusters:NoSchedule \ + --node-labels scylla.scylladb.com/node-type=scylla \ + --image-type "UBUNTU_CONTAINERD" \ + --system-config-from-file=systemconfig.yaml \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +#### Setting Yourself as `cluster-admin` +> (By default GKE doesn't give you the necessary RBAC permissions) + +Get the credentials for your new cluster +``` +gcloud container clusters get-credentials "${CLUSTER_NAME}" --zone="${GCP_ZONE}" +``` + +Create a ClusterRoleBinding for your user. +In order for this to work you need to have at least permission `container.clusterRoleBindings.create`. +The easiest way to obtain this permission is to enable the `Kubernetes Engine Admin` role for your user in the GCP IAM web interface. +``` +kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user "${GCP_USER}" +``` + + +### Prerequisites + +### Deploying ScyllaDB Operator + +Refer to [Deploying Scylla on a Kubernetes Cluster](generic.md) in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites. + +#### Setting up nodes for ScyllaDB + +ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you'll first need to form a RAID array from those disks. +`NodeConfig` performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in [Performance tuning](performance.md) section of ScyllaDB Operator's documentation. + +Deploy `NodeConfig` to let it take care of the above operations: +``` +kubectl apply --server-side -f examples/gke/nodeconfig-alpha.yaml +``` + +#### Deploying Local Volume Provisioner + +Afterwards, deploy ScyllaDB's [Local Volume Provisioner](https://github.com/scylladb/k8s-local-volume-provisioner), capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays. +``` +kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/ +kubectl apply --server-side -f examples/common/local-volume-provisioner/storageclass_xfs.yaml +``` + +### Deploy Scylla cluster +In order for the example to work you need to modify the cluster definition in the following way: + +``` +sed -i "s//${GCP_REGION}/g;s//${GCP_ZONE}/g" examples/gke/cluster.yaml +``` + +This will inject your region and zone into the cluster definition so that it matches the kubernetes cluster you just created. + +### Deploying ScyllaDB + +Now you can follow the steps described in [Deploying Scylla on a Kubernetes Cluster](generic.md) to launch your ScyllaDB cluster in a highly performant environment. + +#### Accessing the database + +Instructions on how to access the database can also be found in the [generic guide](generic.md). + +### Deleting a GKE cluster + +Once you are done with your experiments delete your cluster using the following command: + +``` +gcloud container --project "${GCP_PROJECT}" clusters delete --zone "${GCP_ZONE}" "${CLUSTER_NAME}" +``` diff --git a/stable/_sources/helm.md.txt b/stable/_sources/helm.md.txt new file mode 100644 index 00000000000..e157523c417 --- /dev/null +++ b/stable/_sources/helm.md.txt @@ -0,0 +1,339 @@ +# Deploying Scylla stack using Helm Charts + +In this example we will install Scylla stack on Kubernetes. This includes the following components: +- Scylla Operator +- Scylla Manager +- Scylla + +We will use Minikube K8s cluster, but this could be any K8s cluster supported by the Scylla Operator. + +## Prerequisites + +- Kubernetes 1.16+ +- Helm 3+ + +## TL;DR + +``` +helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable +helm repo update +kubectl apply -f examples/common/cert-manager.yaml +helm install scylla-operator scylla/scylla-operator --create-namespace --namespace scylla-operator +helm install scylla-manager scylla/scylla-manager --create-namespace --namespace scylla-manager +helm install scylla scylla/scylla --create-namespace --namespace scylla +``` + +## Deploy Cert Manager + +This step is optional if you want to use your own certificate. +If you don't have one, make sure to not disable autogeneration using Scylla Operator Helm Chart. + +First deploy Cert Manager, you can either follow [upsteam instructions](https://cert-manager.io/docs/installation/kubernetes/) or use following command: + +```console +kubectl apply -f examples/common/cert-manager.yaml +``` + +Once it's deployed, wait until all Cert Manager pods will enter into Running state: + +```console +kubectl wait -n cert-manager --for=condition=ready pod -l app=cert-manager --timeout=60s +``` + +## Helm Chart repository + +To install Scylla Helm Chart repository execute the following commands: +``` +helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable +helm repo update +``` + +Then you can search through repository, it should contain at least three Helm charts: +``` +helm search repo scylla +NAME CHART VERSION APP VERSION DESCRIPTION +scylla/scylla 1.0.1 v1.0.1 Scylla is a close-to-the-hardware rewrite of Ca... +scylla/scylla-manager 1.0.1 v1.0.1 Scylla Manager automates database operations. +scylla/scylla-operator 1.0.1 v1.0.1 Scylla Operator is a Kubernetes Operator for ma... +``` + +All these charts should be installable without any need of customizing (defaults are provided). +Although Helm is used for this particular reason, so lets customize them a bit. + +## Scylla Operator Chart + +This chart is very simple, most interesting customizable fields are `image`, `resources` and `webhook`. +All others can be looked up in Chart source in Scylla Operator repository. + +### image + +Image allows to define which Scylla Operator image will be used. By default it downloads the image from main +Docker Hub repository, using version defined in Helm Chart. +You can also change `pullPolicy` if default one does not +fullfill your needs. In [Kubernetes documentation](https://kubernetes.io/docs/concepts/containers/images/) you +can read more about different pull policies. + +Image URL will be composed based on these fields in follwing pattern: +`repository/scylla-operator:tag` +```yaml +image: + repository: scylladb + pullPolicy: IfNotPresent + tag: "" +``` + +### resources + +You can customize how much resources will be allocated for Operator pods via `resource` field: +```yaml +resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 100m + memory: 32Mi +``` + +To read more about resource specification, follow [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). + +### webhook + +Webhook field allows to decide whether you want to use autogenerated self-signed certificate using Cert Manager or +whether you want to provide your own certificate. + +`createSelfSignedCertificate` specifies whether a self-signed certificate should be created using Cert Manager +`certificateSecretName`: name of a secret containing custom certificate. + +```yaml +webhook: + createSelfSignedCertificate: true + certificateSecretName: "" +``` + +### Customization + +You can customize all these fields and others by providing file containing desired values. +Content of this file will overwrite default values. + +You can find an example in Scylla Operator repository under `examples/helm/values.operator.yaml` + +### Installation + +To deploy Scylla Operator using customized values file execute the following: +``` +helm install scylla-operator scylla/scylla-operator --values examples/helm/values.operator.yaml --create-namespace --namespace scylla-operator +``` + +## Scylla Helm Chart + +Scylla Chart allows to customize and deploy Scylla cluster. +By default Scylla Helm charts deploys working Scylla cluster, but of course we can customize it. + +### Customization + +Versions of images used in the cluster can be set via `scyllaImage` and `agentImage` +```yaml +scyllaImage: + repository: scylladb/scylla + tag: 4.3.0 + +agentImage: + repository: scylladb/scylla-manager-agent + tag: 2.2.1 +``` + +A minimal Scylla cluster can be expressed as: +```yaml +datacenter: us-east-1 +racks: +- name: us-east-1b + members: 2 + storage: + capacity: 5G + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 1 + memory: 1Gi +``` + +Above cluster will use 4.3.0 Scylla, 2.2.1 Scylla Manager Agent sidecar and will have a single rack having 2 nodes. +Each node will have a single CPU and 1 GiB of memory. + +For other customizable fields, please refer to [ScyllaCluster CRD](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). +CRD Rack Spec and Helm Chart Rack should have the same fields. + +### Installation + +To deploy Scylla cluster using customzied values file execute the following command: +``` +helm install scylla scylla/scylla --values examples/helm/values.cluster.yaml --create-namespace --namespace scylla +``` + +Scylla Operator will provision this cluster on your K8s environment. + +## Scylla Manager Helm Chart + +Scylla Manager Chart allows to customize and deploy Scylla Manager in K8s environment. +Scylla Manager consist of two applications (Scylla Manager itself and Scylla Manager Controller) and additional Scylla cluster. + +To read more about Scylla Manager see [Manager guide](manager.md). + +### Scylla Manager + +To set version of used Scylla Manager you can use `image` field: +```yaml +image: + repository: scylladb + pullPolicy: IfNotPresent + tag: 2.2.1 +``` +To control how many resources are allocated for Scylla Manager use `resource` field: +```yaml +resources: + limits: + cpu: 500m + memory: 500Mi + requests: + cpu: 500m + memory: 500Mi +``` + +### Scylla Manager Controller + +Similarly Scylla Manager Controller image can be customized: + +```yaml +controllerImage: + repository: scylladb + pullPolicy: IfNotPresent + tag: "" +``` + +And allocated resources: +```yaml +controllerResources: + limits: + cpu: 100m + memory: 30Mi + requests: + cpu: 100m + memory: 20Mi +``` + +### Scylla + +To customize internal Scylla instance dedicated to Scylla Manager, see guide above customizing Scylla Helm Chart. +It's definition should land as a `scylla` field. + +### Customization + +All others customizable fields can be looked up in Chart source in Scylla Operator repository. + +### Installation + +To deploy Scylla Manager using customized values file execute the following command: +``` +helm install scylla-manager scylla/scylla-manager --values examples/helm/values.manager.yaml --create-namespace --namespace scylla-manager +``` + +## Results + +Scylla need some time to bootstrap all nodes, but after some time you should be ready to roll. It was simple isn't it? +You can validate if everything was set up correctly by looking at the all resources created in used namespaces. + +Scylla Operator: +```shell +$ kubectl -n scylla-operator get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-operator-5dbcb54f5c-vjm4m 1/1 Running 0 51s +pod/scylla-operator-5dbcb54f5c-wfjbw 1/1 Running 0 51s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-operator-webhook ClusterIP 10.105.207.130 443/TCP 51s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/scylla-operator 2/2 2 2 51s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/scylla-operator-5dbcb54f5c 2 2 2 51s + +``` + +Operator is running! + +Scylla Manager: +```shell +$ kubectl -n scylla-manager get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-manager-669db64dd-bcm4v 1/1 Running 0 89s +pod/scylla-manager-controller-844ccc56c4-drbth 1/1 Running 0 89s +pod/scylla-manager-controller-844ccc56c4-rhwqx 1/1 Running 0 89s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-manager ClusterIP 10.105.231.53 80/TCP,5090/TCP 89s +service/scylla-manager-client ClusterIP None 9180/TCP,5090/TCP 89s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/scylla-manager 1/1 1 1 89s +deployment.apps/scylla-manager-controller 2/2 2 2 89s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/scylla-manager-669db64dd 1 1 1 89s +replicaset.apps/scylla-manager-controller-844ccc56c4 2 2 2 89s + + +``` + +Good to go, ready to serve! + +Scylla itself: +```shell +$ kubectl -n scylla get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-us-east-1-us-east-1b-0 2/2 Running 0 5m58s +pod/scylla-us-east-1-us-east-1b-1 2/2 Running 0 4m29s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-client ClusterIP None 9180/TCP,5090/TCP 5m59s +service/scylla-us-east-1-us-east-1b-0 ClusterIP 10.43.149.92 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 5m58s +service/scylla-us-east-1-us-east-1b-1 ClusterIP 10.43.49.0 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 4m29s + +NAME READY AGE +statefulset.apps/scylla-us-east-1-us-east-1b 2/2 5m59s +``` + +Two running nodes, exactly what we were asking for. + +## Monitoring + +To spin up a Prometheus monitoring refer to [monitoring guide](monitoring.md). + +Helm charts can create ServiceMonitors needed to observe Scylla Manager and Scylla. +Both of these Helm Charts allows to specify whether you want to create a ServiceMonitor: +```yaml +serviceMonitor: + create: false +``` + +Change `create` to `true` and update your current deployment using: +```shell +helm upgrade --install scylla --namespace scylla scylla/scylla -f examples/helm/values.cluster.yaml +``` + +Helm should notice the difference, install the ServiceMonitor, and then Prometheous will be able to scrape metrics. + +## Cleanup + +To remove these applications you can simply uninstall them using Helm CLI: +```shell +helm uninstall scylla -n scylla +helm uninstall scylla-manager -n scylla-manager +helm uninstall scylla-operator -n scylla-operator +``` diff --git a/stable/_sources/index.rst.txt b/stable/_sources/index.rst.txt new file mode 100644 index 00000000000..32bf1347c2d --- /dev/null +++ b/stable/_sources/index.rst.txt @@ -0,0 +1,67 @@ +============================= +Scylla Operator Documentation +============================= + +.. toctree:: + :hidden: + :maxdepth: 1 + + generic + eks + gke + helm + manager + monitoring + clients/index + migration + nodeoperations/index + exposing + multidc/index + performance + upgrade + releases + support/index + api-reference/index + contributing + +Scylla Operator is an open source project which helps users of Scylla Open Source and Scylla Enterprise run Scylla on Kubernetes (K8s) +The Scylla operator manages Scylla clusters deployed to Kubernetes and automates tasks related to operating a Scylla cluster, like installation, out and downscale, rolling upgrades. + +.. image:: logo.png + :width: 200pt + +For the latest status of the project, and reports issue, see the Github Project. Also check out the `K8s Operator lesson on Scylla University `_. + +scylla-operator is a Kubernetes Operator for managing Scylla clusters. + +Currently it supports: + +* Deploying multi-zone clusters +* Scaling up or adding new racks +* Scaling down +* Monitoring with Prometheus and Grafana +* Integration with `Scylla Manager `_ +* Dead node replacement +* Version Upgrade +* Backup +* Repairs +* Autohealing + +**Choose a topic to begin**: + +* :doc:`Deploying Scylla on a Kubernetes Cluster ` +* :doc:`Deploying Scylla on EKS ` +* :doc:`Deploying Scylla on GKE ` +* :doc:`Deploying Scylla Manager on a Kubernetes Cluster ` +* :doc:`Deploying Scylla stack using Helm Charts ` +* :doc:`Setting up Monitoring using Prometheus and Grafana ` +* :doc:`Using ScyllaDB APIs ` +* :doc:`Node operations ` +* :doc:`Exposing ScyllaCluster to other networks ` +* :doc:`Deploying multi-datacenter ScyllaDB clusters in Kubernetes ` +* :doc:`Performance tuning [Experimental] ` +* :doc:`Upgrade procedures ` +* :doc:`Releases ` +* :doc:`Support ` +* :doc:`API Reference ` +* :doc:`Contributing to the Scylla Operator Project ` diff --git a/stable/_sources/manager.md.txt b/stable/_sources/manager.md.txt new file mode 100644 index 00000000000..9a8db2fd37a --- /dev/null +++ b/stable/_sources/manager.md.txt @@ -0,0 +1,258 @@ +# Deploying Scylla Manager on a Kubernetes Cluster + +Scylla Manager is a product for database operations automation, +it can schedule tasks such as repairs and backups. +Scylla Manager can manage multiple Scylla clusters and run cluster-wide tasks +in a controlled and predictable way. + +Scylla Manager is available for Scylla Enterprise customers and Scylla Open Source users. +With Scylla Open Source, Scylla Manager is limited to 5 nodes. +See the Scylla Manager [Proprietary Software License Agreement](https://www.scylladb.com/scylla-manager-software-license-agreement/) for details. + +## Prerequisites + +* Kubernetes cluster +* Scylla Operator - see [generic guide](generic.md) + +## Architecture + +Scylla Manager in K8s consist of: +- Dedicated Scylla Cluster + + Scylla Manager persists its state to a Scylla cluster. +Additional small single node cluster is spawned in the Manager namespace. + +- Scylla Manager Controller + + Main mission of Controller is to watch changes of Scylla Clusters, and synchronize three states. + 1. What user wants - task definition in CRD. + 2. What Controller registered - Task name to Task ID mapping - CRD status. + 3. Scylla Manager task listing - internal state of Scylla Manager. + + When Scylla Cluster CRD is being deployed Controller will register it in Scylla Manager once cluster reaches desired node count. +Once Cluster is fully up and running it will schedule all tasks defined in Cluster CRD. +Controller also supports task updates and unscheduling. + +- Scylla Manager + + Regular Scylla Manager, the same used in cloud and bare metal deployments. + + + +## Deploy Scylla Manager + +Deploy the Scylla Manager using the following commands: + +```console +kubectl apply -f deploy/manager-prod.yaml +``` + +This will install the Scylla Manager in the `scylla-manager` namespace. +You can check if the Scylla Manager is up and running with: + +```console +kubectl -n scylla-manager get pods +NAME READY STATUS RESTARTS AGE +scylla-manager-cluster-manager-dc-manager-rack-0 2/2 Running 0 37m +scylla-manager-controller-0 1/1 Running 0 28m +scylla-manager-scylla-manager-7bd9f968b9-w25jw 1/1 Running 0 37m +``` + +As you can see there are three pods: +* `scylla-manager-cluster-manager-dc-manager-rack-0` - is a single node Scylla cluster. +* `scylla-manager-controller-0` - Scylla Manager Controller. +* `scylla-manager-scylla-manager-7bd9f968b9-w25jw` - Scylla Manager. + +To see if Scylla Manager is fully up and running we can check their logs. +To do this, execute following command: + + ```console +kubectl -n scylla-manager logs scylla-manager-controller-0 +``` + +The output should be something like: +```console +{"L":"INFO","T":"2020-09-23T11:25:27.882Z","M":"Scylla Manager Controller started","version":"","build_date":"","commit":"","built_by":"","go_version":"","options":{"Name":"scylla-manager-controller-0","Namespace":"scylla-manager","LogLevel":"debug","ApiAddress":"http://127.0.0.1:5080/api/v1"},"_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"} +{"L":"INFO","T":"2020-09-23T11:25:28.435Z","M":"Registering Components.","_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"} +``` + +To check logs of Scylla Manager itself, use following command: +```console +kubectl -n scylla-manager logs scylla-manager-scylla-manager-7bd9f968b9-w25jw +``` + +The output should be something like: + +```console +{"L":"INFO","T":"2020-09-23T11:26:53.238Z","M":"Scylla Manager Server","version":"2.1.2-0.20200816.76cc4dcc","pid":1,"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Using config","config":{"HTTP":"127.0.0.1:5080","HTTPS":"","TLSCertFile":"/var/lib/scylla-manager/scylla_manager.crt","TLSKeyFile":"/var/lib/scylla-manager/scylla_manager.key","TLSCAFile":"","Prometheus":":56090","PrometheusScrapeInterval":5000000000,"debug":"127.0.0.1:56112","Logger":{"Mode":"stderr","Level":"info","Development":false},"Database":{"Hosts":["scylla-manager-cluster-manager-dc-manager-rack-0.scylla-manager.svc"],"SSL":false,"User":"","Password":"","LocalDC":"","Keyspace":"scylla_manager","MigrateDir":"/etc/scylla-manager/cql","MigrateTimeout":30000000000,"MigrateMaxWaitSchemaAgreement":300000000000,"ReplicationFactor":1,"Timeout":600000000,"TokenAware":true},"SSL":{"CertFile":"","Validate":true,"UserCertFile":"","UserKeyFile":""},"Healthcheck":{"Timeout":250000000,"SSLTimeout":750000000},"Backup":{"DiskSpaceFreeMinPercent":10,"AgeMax":43200000000000},"Repair":{"SegmentsPerRepair":1,"ShardParallelMax":0,"ShardFailedSegmentsMax":100,"PollInterval":200000000,"ErrorBackoff":300000000000,"AgeMax":0,"ShardingIgnoreMsbBits":12}},"config_files":["/mnt/etc/scylla-manager/scylla-manager.yaml"],"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Checking database connectivity...","_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +``` + +If there are no errors in the logs, let's spin a Scylla Cluster. + +## Cluster registration + + +When the Scylla Manager is fully up and running, lets create a regular instance of Scylla cluster. + +See [generic tutorial](generic.md) to spawn your cluster. + +Note: If you already have some Scylla Clusters, after installing Manager they should be +automatically registered in Scylla Manager. + +Once cluster reaches desired node count, cluster status will be updated with ID under which it was registered in Manager. + + ```console +kubectl -n scylla describe Cluster + +[...] +Status: + Manager Id: d1d532cd-49f2-4c97-9263-25126532803b + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.0.0 +``` +You can use this ID to talk to Scylla Manager using `sctool` CLI installed in Scylla Manager Pod. +You can also use Cluster name in `namespace/cluster-name` format. + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list + +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b) +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮ +│ Task │ Arguments │ Next run │ Status │ +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤ +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b │ │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE │ +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd │ │ 23 Sep 20 14:29:57 CEST (+1m) │ NEW │ +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯ + +``` + +Scylla Manager by default registers recurring healhcheck tasks for Agent and for each of the enabled frontends (CQL, Alternator). + +In this task listing we can see CQL and REST healthchecks. + +## Task scheduling + +You can either define tasks prior Cluster creation, or for existing Cluster. +Let's edit already running cluster definition to add repair and backup task. +```console +kubectl -n scylla edit Cluster simple-cluster +``` + +Add following task definition to Cluster spec: +``` + repairs: + - name: "users repair" + keyspace: ["users"] + interval: "1d" + backups: + - name: "weekly backup" + location: ["s3:cluster-backups"] + retention: 3 + interval: "7d" + - name: "daily backup" + location: ["s3:cluster-backups"] + retention: 7 + interval: "1d" +``` + +For full task definition configuration consult [ScyllaCluster CRD](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). + +**Note**: Scylla Manager Agent must have access to above bucket prior the update in order to schedule backup task. +Consult Scylla Manager documentation for details on how to set it up. + +Scylla Manager Controller will spot this change and will schedule tasks in Scylla Manager. + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list + +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b) +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮ +│ Task │ Arguments │ Next run │ Status │ +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤ +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b │ │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE │ +│ backup/275aae7f-c436-4fc8-bcec-479e65fb8372 │ -L s3:cluster-backups --retention 3 │ 23 Sep 20 14:28:58 CEST (+7d) │ NEW │ +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd │ │ 23 Sep 20 14:29:57 CEST (+1m) │ NEW │ +│ repair/d4946360-c29d-4bb4-8b9d-619ada495c2a │ │ 23 Sep 20 14:38:42 CEST │ NEW │ +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯ + +``` + +As you can see, we have two new tasks, weekly recurring backup, and one repair which should start shortly. + +To check progress of run you can use following command: + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task progress --cluster d1d532cd-49f2-4c97-9263-25126532803b repair/d4946360-c29d-4bb4-8b9d-619ada495c2a +Status: RUNNING +Start time: 23 Sep 20 14:38:42 UTC +Duration: 13s +Progress: 2.69% +Datacenters: + - us-east-1 ++--------------------+-------+ +| system_auth | 8.06% | +| system_distributed | 0.00% | +| system_traces | 0.00% | ++--------------------+-------+ + +``` +Other tasks can be also tracked using the same command, but using different task ID. +Task IDs are present in Cluster Status as well as in task listing. + +## Clean Up + +To clean up all resources associated with Scylla Manager, you can run the commands below. + +**NOTE:** this will destroy your Scylla Manager database and delete all of its associated data. + +```console +kubectl delete -f deploy/manager-prod.yaml +``` + +## Troubleshooting + +**Manager is not running** + +If the Scylla Manager does not come up, the first step would be to examine the Manager and Controller logs: + +```console +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-controller +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-scylla-manager-7bd9f968b9-w25jw +``` + + +**My task wasn't scheduled** + +If your task wasn't scheduled, Cluster status will be updated with error messages for each failed task. +You can also consult Scylla Manager logs. + +Example: + +Following status describes error when backup task cannot be scheduled, due to lack of access to bucket: +```console +Status: + Backups: + Error: create backup target: location is not accessible: 10.100.16.62: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.100.16.62 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.107.193.33: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.107.193.33 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.109.197.60: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.109.197.60 and run "scylla-manager-agent check-location -L s3:manager-test --debug" + Id: 00000000-0000-0000-0000-000000000000 + Interval: 0 + Location: + s3:manager-test + Name: adhoc backup + Num Retries: 3 + Retention: 3 + Start Date: now + Manager Id: 2b9dbe8c-9daa-4703-a66d-c29f63a917c8 + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.0.0 +``` + +Because Controller is infinitely retrying to schedule each defined task, once permission issues will be resolved, +task should appear in task listing and Cluster status. diff --git a/stable/_sources/migration.md.txt b/stable/_sources/migration.md.txt new file mode 100644 index 00000000000..6b450637a22 --- /dev/null +++ b/stable/_sources/migration.md.txt @@ -0,0 +1,146 @@ +# Version migrations + + +## `v0.3.0` -> `v1.0.0` migration + +`v0.3.0` used a very common name as a CRD kind (`Cluster`). In `v1.0.0` this issue was solved by using less common kind +which is easier to disambiguate (`ScyllaCluster`). +***This change is backward incompatible, which means manual migration is needed.*** + +This procedure involves having two CRDs registered at the same time. We will detach Scylla Pods +from Scylla Operator for a short period to ensure that nothing is garbage collected when Scylla Operator is upgraded. +Compared to the [upgrade guide](upgrade.md) where full deletion is requested, this procedure shouldn't cause downtimes. +Although detaching resources from their controller is considered hacky. This means that you shouldn't run procedure +out of the box on production. Make sure this procedure works well multiple times on your staging environment first. + +***Read the whole procedure and make sure you understand what is going on before executing any of the commands!*** + +In case of any issues or questions regarding this procedure, you're welcomed on our [Scylla Users Slack](http://slack.scylladb.com/) +on #kubernetes channel. + +## Procedure + +1. Execute this whole procedure for each cluster sequentially. To get a list of existing clusters execute the following + ``` + kubectl -n scylla get cluster.scylla.scylladb.com + + NAME AGE + simple-cluster 30m + ``` + All below commands will use `scylla` namespace and `simple-cluster` as a cluster name. +1. Make sure you're using v1.0.0 tag: + ``` + git checkout v1.0.0 + ``` +1. Upgrade your `cert-manager` to `v1.0.0`. If you installed it from a static file from this repo, simply execute the following: + ``` + kubectl apply -f examples/common/cert-manager.yaml + ``` + If your `cert-manager` was installed in another way, follow official instructions on `cert-manager` website. +1. `deploy/operator.yaml` file contains multiple resources. Extract **only** `CustomResourceDefinition` to separate file. +1. Install v1.0.0 CRD definition from file created in the previous step: + ``` + kubectl apply -f examples/common/crd.yaml + ``` +1. Save your existing `simple-cluster` Cluster definition to a file: + ``` + kubectl -n scylla get cluster.scylla.scylladb.com simple-cluster -o yaml > existing-cluster.yaml + ``` +1. Migrate `Kind` and `ApiVersion` to new values using: + ``` + sed -i 's/scylla.scylladb.com\/v1alpha1/scylla.scylladb.com\/v1/g' existing-cluster.yaml + sed -i 's/kind: Cluster/kind: ScyllaCluster/g' existing-cluster.yaml + ``` +1. Install migrated CRD instance + ``` + kubectl apply -f existing-cluster.yaml + ``` + At this point, we should have two CRDs describing your Scylla cluster, although the new one is not controlled by the Operator. +1. Get UUID of newly created ScyllaCluster resource: + ``` + kubectl -n scylla get ScyllaCluster simple-cluster --template="{{ .metadata.uid }}" + + 12a3678d-8511-4c9c-8a48-fa78d3992694 + ``` + Save output UUID somewhere, it will be referred as `` in commands below. + + ***Depending on your shell, you might get additional '%' sign at the end of UUID, make sure to remove it!*** + +1. Upgrade ClusterRole attached to each of the Scylla nodes to grant them permission to lookup Scylla clusters: + ``` + kubectl patch ClusterRole simple-cluster-member --type "json" -p '[{"op":"add","path":"/rules/-","value":{"apiGroups":["scylla.scylladb.com"],"resources":["scyllaclusters"],"verbs":["get"]}}]' + ``` + Amend role name according to your cluster name, it should look like `-member`. +1. Get a list of all Services associated with your cluster. First get list of all services: + ``` + kubectl -n scylla get svc -l "scylla/cluster=simple-cluster" + + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 109m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.23.96 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 109m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.66.22 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 108m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.246.25 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 106m + + ``` +1. For each service, change its `ownerReference` to point to new CRD instance: + ``` + kubectl -n scylla patch svc --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":""}]' + ``` + Replace `` with Service name, and `` with saved UUID from one of the previous steps. +1. Get a list of all Services again to see if none was deleted. Check also "Age" column, it shouldn't be lower than previous result. + ``` + kubectl -n scylla get svc -l "scylla/cluster=simple-cluster" + + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 110m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.23.96 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 110m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.66.22 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 109m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.246.25 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 107m + + ``` +1. Get a list of StatefulSets associated with your cluster: + ``` + kubectl -n scylla get sts -l "scylla/cluster=simple-cluster" + + NAME READY AGE + simple-cluster-us-east-1-us-east-1a 3/3 104m + ``` +1. For each StatefulSet from previous step, change its `ownerReference` to point to new CRD instance. + + ``` + kubectl -n scylla patch sts --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":""}]' + ``` + Replace `` with StatefulSet name, and `` with saved UUID from one of the previous steps. + +1. Now when all k8s resources bound to Scylla are attached to new CRD, we can remove 0.3.0 Operator and old CRD definition. + Checkout `v0.3.0` version, and remove Scylla Operator, and old CRD: + ``` + git checkout v0.3.0 + kubectl delete -f examples/generic/operator.yaml + ``` +1. Checkout `v1.0.0`, and install upgraded Scylla Operator: + ``` + git checkout v1.0.0 + kubectl apply -f deploy/operator.yaml + ``` +1. Wait until Scylla Operator boots up: + ``` + kubectl -n scylla-operator-system wait --for=condition=ready pod --all --timeout=600s + ``` +1. Get a list of StatefulSets associated with your cluster: + ``` + kubectl -n scylla get sts -l "scylla/cluster=simple-cluster" + + NAME READY AGE + simple-cluster-us-east-1-us-east-1a 3/3 104m +1. For each StatefulSet from previous step, change its sidecar container image to `v1.0.0`, and wait until change will be propagated. This step will initiate a rolling restart of pods one by one. + ``` + kubectl -n scylla patch sts --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/initContainers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]' + kubectl -n scylla rollout status sts + ``` + Replace `` with StatefulSet name. +1. If you're using Scylla Manager, bump Scylla Manager Controller image to `v1.0.0` + ``` + kubectl -n scylla-manager-system patch sts scylla-manager-controller --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]' + ``` +1. Your Scylla cluster is now migrated to `v1.0.0`. diff --git a/stable/_sources/monitoring.md.txt b/stable/_sources/monitoring.md.txt new file mode 100644 index 00000000000..22bda7f2501 --- /dev/null +++ b/stable/_sources/monitoring.md.txt @@ -0,0 +1,181 @@ +# Monitoring + +Scylla Operator 1.8 introduced a new API resource `ScyllaDBMonitoring`, allowing users to deploy a managed monitoring +setup for their Scylla Clusters. + +```yaml +apiVersion: scylla.scylladb.com/v1alpha1 +kind: ScyllaDBMonitoring +metadata: + name: example +spec: + type: Platform + endpointsSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla-operator.scylladb.com/scylla-service-type: member + scylla/cluster: replace-with-your-scyllacluster-name + components: + prometheus: + storage: + volumeClaimTemplate: + spec: + storageClassName: scylladb-local-xfs + resources: + requests: + storage: 1Gi + grafana: + exposeOptions: + webInterface: + ingress: + ingressClassName: haproxy + dnsDomains: + - test-grafana.test.svc.cluster.local + annotations: + haproxy-ingress.github.io/ssl-passthrough: "true" +``` + +For details, refer to the below command: +```console +$ kubectl explain scylladbmonitorings.scylla.scylladb.com/v1alpha1 +``` + +## Deploy managed monitoring + +**Note**: as of v1.8, ScyllaDBMonitoring is experimental. The API is currently in version v1alpha1 and may change in future versions. + +### Requirements + +Before you can set up your ScyllaDB monitoring, you need Scylla Operator already installed in your Kubernetes cluster. +For more information on how to deploy Scylla Operator, see: +* [Deploying Scylla on a Kubernetes Cluster](generic.md) +* [Deploying Scylla stack using Helm Charts](helm.md) + +The above example of the monitoring setup also makes use of HAProxy Ingress and Prometheus Operator. +You can deploy them in your Kubernetes cluster using the provided third party examples. If you already have them deployed +in your cluster, you can skip the below steps. + +#### Deploy Prometheus Operator +Deploy Prometheus Operator using kubectl: +```console +$ kubectl -n prometheus-operator apply --server-side -f ./examples/third-party/prometheus-operator +``` + +##### Wait for Prometheus Operator to roll out +```console +$ kubectl -n prometheus-operator rollout status --timeout=5m deployments.apps/prometheus-operator +deployment "prometheus-operator" successfully rolled out +``` + +#### Deploy HAProxy Ingress +Deploy HAProxy Ingress using kubectl: +```console +$ kubectl -n haproxy-ingress apply --server-side -f ./examples/third-party/haproxy-ingress +``` + +##### Wait for HAProxy Ingress to roll out +```console +$ kubectl -n haproxy-ingress rollout status --timeout=5m deployments.apps/haproxy-ingress +deployment "haproxy-ingress" successfully rolled out +``` + +### Deploy ScyllaDBMonitoring + +First, update the `endpointsSelector` in `examples/monitoring/v1alpha1/scylladbmonitoring.yaml` with a label +matching your ScyllaCluster instance name. + +Deploy the monitoring setup using kubectl: +```console +$ kubectl -n scylla apply --server-side -f ./examples/monitoring/v1alpha1/scylladbmonitoring.yaml +``` + +Scylla Operator will notice the new ScyllaDBMonitoring object, and it will reconcile all necessary resources. + +#### Wait for ScyllaDBMonitoring to roll out +```console +$ kubectl wait --for='condition=Progressing=False' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met + +$ kubectl wait --for='condition=Degraded=False' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met + +$ kubectl wait --for='condition=Available=True' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met +``` + +#### Wait for Prometheus to roll out +```console +$ kubectl rollout status --timeout=5m statefulset.apps/prometheus-example +statefulset rolling update complete 1 pods at revision prometheus-example-65b89d55bb... +``` + +#### Wait for Grafana to roll out +```console +$ kubectl rollout status --timeout=5m deployments.apps/example-grafana +deployment "example-grafana" successfully rolled out +``` + +### Accessing Grafana + +For accessing Grafana service from outside the Kubernetes cluster we recommend using an Ingress, although there are many other ways to do so. +When using Ingress, what matters is to direct your packets to the ingress controller Service/Pods and have the correct TLS SNI field set by the caller when reaching out to the service, so it is routed properly, and your client can successfully validate the grafana serving certificate. +This is easier when you are using a real DNS domain that resolves to your Ingress controller's IP address but most clients and tools allow setting the SNI field manually. + +### Prerequisites + +To access Grafana, you first need to collect the serving CA and the credentials. + +```console +$ GRAFANA_SERVING_CERT="$( kubectl -n scylla get secret/example-grafana-serving-ca --template '{{ index .data "tls.crt" }}' | base64 -d )" +$ GRAFANA_USER="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "username" }}' | base64 -d )" +$ GRAFANA_PASSWORD="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "password" }}' | base64 -d )" +``` + +### Connecting through Ingress using a resolvable domain + +In production clusters, the Ingress controller and appropriate DNS records should be set up already. Often there is already a generic wildcard record like `*.app.mydomain` pointing to the Ingress controller's external IP. For custom service domains, it is usually a CNAME pointing to the Ingress controller's A record. + +Note: The ScyllaDBMonitoring example creates an Ingress object with `test-grafana.test.svc.cluster.local` DNS domain that you should adjust to your domain. Below examples use `example-grafana.apps.mydomain`. + +Note: To test a resolvable domain from your machine without creating DNS records, you can adjust `/etc/hosts` or similar. + +```console +$ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://example-grafana.apps.mydomain" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}" +200 +``` + +### Connecting through Ingress using an unresolvable domain + +To connect to an Ingress without a resolvable domain you first need to find out your Ingress controller's IP that can be resolved externally. Again, there are many ways to do so beyond the below examples. + +Unless stated otherwise, we assume your Ingress is running on port 443. + +```console +$ INGRESS_PORT=443 +``` + +#### Variants + +##### Ingress ExternalIP + +When you are running in a real cluster there is usually a cloud LoadBalancer or a bare metal alternative providing you with an externally reachable IP address. + +```console +$ INGRESS_IP="$( kubectl -n=haproxy-ingress get service/haproxy-ingress --template='{{ ( index .status.loadBalancer.ingress 0 ).ip }}' )" +``` + +##### Ingress NodePort + +NodePort is slightly less convenient, but it's available in development clusters as well. + +```console +$ INGRESS_IP="$( kubectl get nodes --template='{{ $internal_ip := "" }}{{ $external_ip := "" }}{{ range ( index .items 0 ).status.addresses }}{{ if eq .type "InternalIP" }}{{ $internal_ip = .address }}{{ else if eq .type "ExternalIP" }}{{ $external_ip = .address }}{{ end }}{{ end }}{{ if $external_ip }}{{ $external_ip }}{{ else }}{{ $internal_ip }}{{ end }}' )" +$ INGRESS_PORT="$( kubectl -n=haproxy-ingress get services/haproxy-ingress --template='{{ range .spec.ports }}{{ if eq .port 443 }}{{ .nodePort }}{{ end }}{{ end }}' )" +``` + +##### Connection + +```console +$ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://test-grafana.test.svc.cluster.local:${INGRESS_PORT}" --resolve "test-grafana.test.svc.cluster.local:${INGRESS_PORT}:${INGRESS_IP}" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}" +200 +``` diff --git a/stable/_sources/multidc/eks.md.txt b/stable/_sources/multidc/eks.md.txt new file mode 100644 index 00000000000..266dd7d3a4d --- /dev/null +++ b/stable/_sources/multidc/eks.md.txt @@ -0,0 +1,168 @@ +# Build multiple Amazon EKS clusters with inter-Kubernetes networking + +This document describes the process of creating multiple Amazon EKS clusters in different regions, using separate VPCs, and explains the steps necessary for configuring inter-Kubernetes networking between the clusters. +The interconnected clusters can serve as a platform for [deploying a multi-datacenter ScyllaDB cluster](multidc.md). + +This guide will walk you through the process of creating and configuring EKS clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference. + +## Prerequisites + +To follow the below guide, you first need to install and configure the tools that you will need to create and manage AWS and Kubernetes resources: +- eksctl – A command line tool for working with EKS clusters. +- kubectl – A command line tool for working with Kubernetes clusters. + +For more information see [Getting started with Amazon EKS – eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) in AWS documentation. + +## Create EKS clusters + +### Create the first EKS cluster + +Below is the required specification for the first cluster. + +```yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: scylladb-us-east-1 + region: us-east-1 + +availabilityZones: +- us-east-1a +- us-east-1b +- us-east-1c + +vpc: + cidr: 10.0.0.0/16 + +nodeGroups: + ... +``` + +Specify the first cluster's configuration file and save it as `cluster-us-east-1.yaml`. +Refer to [Creating an EKS cluster](../eks.md#creating-an-eks-cluster) section of ScyllaDB Operator documentation for the reference of the configuration of node groups. + +To deploy the first cluster, use the below command: +```shell +eksctl create cluster -f=cluster-us-east-1.yaml +``` + +Run the following command to learn the status and VPC ID of the cluster: +```shell +eksctl get cluster --name=scylladb-us-east-1 --region=us-east-1 +``` + +You will need to get the cluster's context for future operations. To do so, use the below command: +```shell +kubectl config current-context +``` + +For any `kubectl` commands that you will want to run against this cluster, use the `--context` flag with the value returned by the above command. + +#### Deploy ScyllaDB Operator + +Once the cluster is ready, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) to deploy the ScyllaDB Operator and its prerequisites. + +#### Prepare nodes for running ScyllaDB + +Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in [Deploying Scylla on EKS](../eks.md#prerequisites) in ScyllaDB Operator documentation. + +### Create the second EKS cluster + +Below is the required specification for the second cluster. As was the case with the first cluster, the provided values are only exemplary and can be adjusted according to your needs. + +:::{caution} +It is required that the VPCs of the two EKS clusters have non-overlapping IPv4 network ranges. +::: + +```yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: scylladb-us-east-2 + region: us-east-2 + +availabilityZones: +- us-east-2a +- us-east-2b +- us-east-2c + +vpc: + cidr: 172.16.0.0/16 + +nodeGroups: + ... +``` + +Follow analogous steps to create the second EKS cluster and prepare it for running ScyllaDB. + +## Configure the network + +The prepared Kubernetes clusters each have a dedicated VPC network. +To be able to route the traffic between the two VPC networks, you need to create a networking connection between them, otherwise known as [VPC peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). + +### Create VPC peering + +Refer to [Create a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html#create-vpc-peering-connection-local) in AWS documentation for instructions on creating a VPC peering connection between the two earlier created VPCs. + +In this example, the ID of the created VPC peering connection is `pcx-08077dcc008fbbab6`. + +### Update route tables + +To enable private IPv4 traffic between the instances in the VPC peered network, you need to establish a communication channel by adding a route to the route tables associated with all the subnets associated with the instances for both VPCs. +The destination of the new route in a given route table is the CIDR of the VPC of the other cluster and the target is the ID of the VPC peering connection. + +The following is an example of the route tables that enable communication of instances in two peered VPCs. Each table has a local route and the added route which sends traffic targeted at the other VPC to the peered network connection. The other preconfigured routes are omitted for readability. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Route tableDestinationTarget
        eksctl-scylladb-us-east-1-cluster/PublicRouteTable10.0.0.0/16local
        172.16.0.0/16pcx-08077dcc008fbbab6
        eksctl-scylladb-us-east-2-cluster/PublicRouteTable172.16.0.0/16local
        10.0.0.0/16pcx-08077dcc008fbbab6
        + + +Refer to [Update your route tables for a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html) in AWS documentation for more information. + +### Update security groups + +To allow traffic to flow to and from instances associated with security groups in the peered VPC, you need to update the inbound rules of the VPCs' shared security groups. + +Below is an example of the inbound rules that to be added to the corresponding security groups of the two VPCs. + +| Security group name | Type | Protocol | Port range | Source | +|--------------------------------------------------------------------------------|-------------|----------|------------|----------------------| +| eksctl-scylladb-us-east-1-cluster-ClusterSharedNodeSecurityGroup-TD05V9EVU3B8 | All traffic | All | All | Custom 172.16.0.0/16 | +| eksctl-scylladb-us-east-2-cluster-ClusterSharedNodeSecurityGroup-1FR9YDLU0VE7M | All traffic | All | All | Custom 10.0.0.0/16 | + +The names of the shared security groups of your VPCs should be similar to the ones presented in the example. + +--- + +Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to [Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters](multidc.md) in ScyllaDB Operator documentation for guidance. diff --git a/stable/_sources/multidc/gke.md.txt b/stable/_sources/multidc/gke.md.txt new file mode 100644 index 00000000000..b119d9e9b3b --- /dev/null +++ b/stable/_sources/multidc/gke.md.txt @@ -0,0 +1,156 @@ +# Build multiple GKE clusters with inter-Kubernetes networking + +This document describes the process of creating multiple GKE clusters in a shared VPC and explains the steps necessary for configuring inter-Kubernetes networking between clusters in different regions. +The interconnected clusters can serve as a platform for [deploying a Multi Datacenter ScyllaDB cluster](multidc.md). + +This guide will walk you through the process of creating and configuring GKE clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference. + +## Prerequisites + +To follow the below guide, you first need to install and configure the following tools that you will need to create and manage GCP and Kubernetes resources: +- gcloud CLI - Google Cloud Command Line Interface, a command line tool for working with Google Cloud resources and services directly. +- kubectl – A command line tool for working with Kubernetes clusters. + +See [Install the Google Cloud CLI](https://cloud.google.com/sdk/docs/install-sdk) in GCP documentation and [Install Tools](https://kubernetes.io/docs/tasks/tools/) in Kubernetes documentation for reference. + +## Create and configure a VPC network + +For the clusters to have inter-Kubernetes networking, you will create a virtual network shared between all the instances, with dedicated subnets for each of the clusters. +To create the subnets manually, create the network in custom subnet mode. + +### Create the VPC network + +Run the below command to create the network: +```shell +gcloud compute networks create scylladb --subnet-mode=custom +``` + +With the VPC network created, create a dedicated subnet with secondary CIDR ranges for their Pod and Service pools in each region which the clusters will reside in. + +### Create VPC network subnets + +To create a subnet for the first cluster in region `us-east1`, run the below command: +```shell +gcloud compute networks subnets create scylladb-us-east1 \ + --region=us-east1 \ + --network=scylladb \ + --range=10.0.0.0/20 \ + --secondary-range='cluster=10.1.0.0/16,services=10.2.0.0/20' +``` + +To create a subnet for the second cluster in region `us-west1`, run the below command: +```shell +gcloud compute networks subnets create scylladb-us-west1 \ + --region=us-west1 \ + --network=scylladb \ + --range=172.16.0.0/20 \ + --secondary-range='cluster=172.17.0.0/16,services=172.18.0.0/20' +``` + +:::{caution} +It is required that the IPv4 address ranges of the subnets allocated for the GKE clusters do not overlap. +::: + +Refer to [Create a VPC-native cluster](https://cloud.google.com/kubernetes-engine/docs/how-to/alias-ips) and [Alias IP ranges](https://cloud.google.com/vpc/docs/alias-ip) in GKE documentation for more information about VPC native clusters and alias IP ranges. + +## Create GKE clusters + +With the VPC network created, you will now create two VPC native GKE clusters in dedicated regions. + +### Create the first GKE cluster + +Run the following command to create the first GKE cluster in the `us-east1` region: +```shell +gcloud container clusters create scylladb-us-east1 \ + --location=us-east1-b \ + --node-locations='us-east1-b,us-east1-c' \ + --machine-type=n1-standard-8 \ + --num-nodes=1 \ + --disk-type=pd-ssd \ + --disk-size=20 \ + --image-type=UBUNTU_CONTAINERD \ + --no-enable-autoupgrade \ + --no-enable-autorepair \ + --enable-ip-alias \ + --network=scylladb \ + --subnetwork=scylladb-us-east1 \ + --cluster-secondary-range-name=cluster \ + --services-secondary-range-name=services +``` + +Refer to [Creating a GKE cluster](../gke.md#creating-a-gke-cluster) section of ScyllaDB Operator documentation for more information regarding the configuration and deployment of additional node pools, including the one dedicated for ScyllaDB nodes. + +You will need to get the cluster's context for future operations. To do so, use the below command: +```shell +kubectl config current-context +``` + +For any `kubectl` commands that you will want to run against this cluster, use the `--context` flag with the value returned by the above command. + +#### Deploy ScyllaDB Operator + +Once the cluster is ready, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) to deploy the ScyllaDB Operator and its prerequisites. + +#### Prepare nodes for running ScyllaDB + +Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in [Deploying Scylla on GKE](../gke.md) page of the documentation. + +### Create the second GKE cluster + +Run the following command to create the second GKE cluster in the `us-west1` region: +```shell +gcloud container clusters create scylladb-us-west1 \ + --location=us-west1-b \ + --node-locations='us-west1-b,us-west1-c' \ + --machine-type=n1-standard-8 \ + --num-nodes=1 \ + --disk-type=pd-ssd \ + --disk-size=20 \ + --image-type=UBUNTU_CONTAINERD \ + --no-enable-autoupgrade \ + --no-enable-autorepair \ + --enable-ip-alias \ + --network=scylladb \ + --subnetwork=scylladb-us-west1 \ + --cluster-secondary-range-name=cluster \ + --services-secondary-range-name=services +``` + +Follow analogous steps to create the second GKE cluster and prepare it for running ScyllaDB. + +## Configure the firewall rules + +When creating a cluster, GKE creates several ingress firewall rules that enable the instances to communicate with each other. +To establish interconnectivity between the two created Kubernetes clusters, you will now add the allocated IPv4 address ranges to their corresponding source address ranges. + +First, retrieve the name of the firewall rule associated with the first cluster, which permits traffic between all Pods on a cluster, as required by the Kubernetes networking model. +The rule name is in the following format: `gke-[cluster-name]-[cluster-hash]-all`. + +To retrieve it, run the below command: +```shell +gcloud compute firewall-rules list --filter='name~gke-scylladb-us-east1-.*-all' +``` + +The output should resemble the following: +```console +NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED +gke-scylladb-us-east1-f17db261-all scylladb INGRESS 1000 udp,icmp,esp,ah,sctp,tcp False +``` + +Modify the rule by updating the rule's source ranges with the allocated Pod IPv4 address ranges of both clusters: +```shell +gcloud compute firewall-rules update gke-scylladb-us-east1-f17db261-all --source-ranges='10.1.0.0/16,172.17.0.0/16' +``` + +Follow the analogous steps for the other cluster. In this example, its corresponding firewall rule name is `gke-scylladb-us-west1-0bb60902-all`. To update it, you would run: +```shell +gcloud compute firewall-rules update gke-scylladb-us-west1-0bb60902-all --source-ranges='10.1.0.0/16,172.17.0.0/16' +``` + +Refer to [Automatically created firewall rules](https://cloud.google.com/kubernetes-engine/docs/concepts/firewall-rules) in GKE documentation for more information. + +--- + +Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to [Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters](multidc.md) in ScyllaDB Operator documentation for guidance. diff --git a/stable/_sources/multidc/index.rst.txt b/stable/_sources/multidc/index.rst.txt new file mode 100644 index 00000000000..a2f1eae7709 --- /dev/null +++ b/stable/_sources/multidc/index.rst.txt @@ -0,0 +1,18 @@ +========================================================== +Deploying multi-datacenter ScyllaDB clusters in Kubernetes +========================================================== + +Prepare a platform for a multi datacenter ScyllaDB cluster deployment: + +.. toctree:: + :maxdepth: 1 + + eks + gke + +Deploy a multi-datacenter ScyllaDB cluster in Kubernetes: + +.. toctree:: + :maxdepth: 1 + + multidc diff --git a/stable/_sources/multidc/multidc.md.txt b/stable/_sources/multidc/multidc.md.txt new file mode 100644 index 00000000000..806e6bb5151 --- /dev/null +++ b/stable/_sources/multidc/multidc.md.txt @@ -0,0 +1,601 @@ +# Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters + +This document describes the process of deploying a Multi Datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters. + +This guide will walk you through the example procedure of deploying two datacenters in distinct regions of a selected cloud provider. + +:::{note} +This guide is dedicated to deploying multi-datacenter ScyllaDB clusters and does not discuss unrelated configuration options. +For details of ScyllaDB cluster deployments and their configuration, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) in ScyllaDB Operator documentation. +::: + +## Prerequisites + +As this document describes the procedure of deploying a Multi Datacenter ScyllaDB cluster, you are expected to have the required infrastructure prepared. +Let's assume two interconnected Kubernetes clusters, capable of communicating with each other over PodIPs, with each cluster meeting the following requirements: +- a node pool dedicated to ScyllaDB nodes composed of at least 3 nodes running in different zones (with unique `topology.kubernetes.io/zone` label), configured to run ScyllaDB, each labeled with `scylla.scylladb.com/node-type: scylla` +- running ScyllaDB Operator and its prerequisites +- running a storage provisioner capable of provisioning XFS volumes of StorageClass `scylladb-local-xfs` in each of the nodes dedicated to ScyllaDB instances + +You can refer to one of our guides describing the process of preparing such infrastructure: +- [Build multiple Amazon EKS clusters with Inter-Kubernetes networking](eks.md) +- [Build multiple GKE clusters with Inter-Kubernetes networking](gke.md) + +Additionally, to follow the below guide, you need to install and configure the following tools that you will need to manage Kubernetes resources: +- kubectl – A command line tool for working with Kubernetes clusters. + +See [Install Tools](https://kubernetes.io/docs/tasks/tools/) in Kubernetes documentation for reference. + +## Multi Datacenter ScyllaDB Cluster + +In v1.11, ScyllaDB Operator introduced support for manual multi-datacenter ScyllaDB cluster deployments. + +:::{warning} +ScyllaDB Operator only supports *manual configuration* of multi-datacenter ScyllaDB clusters. +In other words, although ScyllaCluster API exposes the machinery necessary for setting up multi-datacenter ScylaDB clusters, the ScyllaDB Operator only automates operations for a single datacenter. + +Operations related to multiple datacenters may require manual intervention of a human operator. +Most notably, destroying one of the Kubernetes clusters or ScyllaDB datacenters is going to leave DN nodes behind in other datacenters, and their removal has to be carried out manually. +::: + +The main mechanism used to set up a manual multi-datacenter ScyllaDB cluster is a field in ScyllaCluster's specification - `externalSeeds`. + +### External seeds + +The `externalSeeds` field in ScyllaCluster's specification enables control over external seeds that are propagated to ScyllaDB binary as `--seed-provider-parameters seeds=`. +In this context, external should be understood as "external to the datacenter being specified by the API". +The provided seeds are used by the nodes as initial points of contact, which allows them to discover the cluster ring topology when joining it. + +Refer to [Scylla Seed Nodes](https://opensource.docs.scylladb.com/stable/kb/seed-nodes.html) in ScyllaDB documentation for more information regarding the function of seed nodes in ScyllaDB. +For more details regarding the function and implementation of external seeds, refer to [the original enhancement proposal](https://github.com/scylladb/scylla-operator/tree/v1.11/enhancements/proposals/1304-external-seeds). + +### Networking + +Since this guide assumes interconnectivity over PodIPs of the Kubernetes clusters, you are going to configure the ScyllaDB cluster's nodes to communicate over PodIPs. +This is enabled by a subset of `exposeOptions` specified in ScyllaCluster API, introduced in v1.11. + +For this particular setup, define the ScyllaClusers as follows: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP +``` + +However, other configuration options allow for the manual deployment of multi-datacenter ScyllaDB clusters in different network setups. For details, refer to [Exposing ScyllaClusters](../exposing.md) in ScyllaDB Operator documentation. + +#### Deploy a multi-datacenter ScyllaDB Cluster + +#### Using context + +Let's specify contexts for `kubectl` commands used throughout the guide. +To retrieve the context of your current cluster, run: +```shell +kubectl config current-context +``` + +Save the contexts of the two clusters, which you are going to deploy the datacenters in, as `CONTEXT_DC1` and `CONTEXT_DC2` environment variables correspondingly. + +#### Deploy the first datacenter + +First, run the below command to create a dedicated 'scylla' namespace: +```shell +kubectl --context="${CONTEXT_DC1}" create ns scylla +``` + +For this guide, let's assume that your cluster is running in `us-east-1` region and the nodes dedicated to running ScyllaDB nodes are running in zones `us-east-1a`, `us-east-1b` and `us-east-1c` correspondingly. If that is not the case, adjust the manifest accordingly. + +:::{caution} +The `.spec.name` field of the ScyllaCluster objects represents the ScyllaDB cluster name and has to be consistent across all datacenters of this ScyllaDB cluster. +The names of the datacenters, specified in `.spec.datacenter.name`, have to be unique across the entire multi-datacenter cluster. + +For more information see [Create a ScyllaDB Cluster - Multi Data Centers (DC)](https://opensource.docs.scylladb.com/stable/operating-scylla/procedures/cluster-management/create-cluster-multidc.html) in ScyllaDB documentation. +::: + +Save the ScyllaCluster manifest in `dc1.yaml`: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: scylla-cluster + namespace: scylla +spec: + agentVersion: 3.3.0 + version: 6.1.1 + cpuset: true + sysctls: + - "fs.aio-max-nr=2097152" + automaticOrphanedNodeCleanup: true + exposeOptions: + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP + nodeService: + type: Headless + datacenter: + name: us-east-1 + racks: + - name: a + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1a + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: b + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1b + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: c + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1c + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule +``` + +Apply the manifest: +```shell +kubectl --context="${CONTEXT_DC1}" apply --server-side -f=dc1.yaml +``` + +Wait for the cluster to be fully rolled out: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +You can now verify that all the nodes of your cluster are in UN state: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla exec -it pod/scylla-cluster-us-east-1-a-0 -c=scylla -- nodetool status +``` + +The expected output should look similar to the below: +```console +Datacenter: us-east-1 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 10.0.70.195 290 KB 256 ? 494277b9-121c-4af9-bd63-3d0a7b9305f7 c +UN 10.0.59.24 559 KB 256 ? a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37 b +UN 10.0.19.237 107 KB 256 ? 64b6292a-327f-4128-852a-6004039f402e a +``` + +##### Retrieve PodIPs of ScyllaDB nodes for use as external seeds + +:::{warning} +Due to the ephemeral nature of PodIPs, it is ill-advised to use them as seeds in production environments. +This is because there is a high likelihood that the Pods of your ScyllaDB clusters will change their IPs during the cluster's lifecycle, and so the provided seeds will no longer point to the ScyllaDB nodes. +It is undesired, as the seeds provided on node's startup may serve as fallback contact points when all of the node's peers are unreachable. +In production environments, it is recommended that you use domain names or non-ephemeral IP addresses as external seeds. +PodIPs are being used in this example for the sheer simplicity of this setup. +::: + +Use the below commands and their expected outputs as a reference for retrieving the PodIPs used by the cluster for inter-node communication. +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-a-0 --template='{{ .status.podIP }}' +``` +```console +10.0.19.237 +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-b-0 --template='{{ .status.podIP }}' +``` +```console +10.0.59.24 +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-c-0 --template='{{ .status.podIP }}' +``` +```console +10.0.70.195 +``` + +You are going to utilize the retrieved addresses as seeds for the other datacenter. + +#### Deploy the second datacenter + +To deploy the second datacenter, you will follow similar steps. + +First, create a dedicated 'scylla' namespace: +```shell +kubectl --context="${CONTEXT_DC2}" create ns scylla +``` + +Replace the values in `.spec.externalSeeds` of the below manifest with the Pod IP addresses that you retrieved earlier. +The provided values are going to serve as initial contact points for the joining nodes of the second datacenter. + +For this guide, let's assume that the second cluster is running in `us-east-2` region and the nodes dedicated for running ScyllaDB nodes are running in zones `us-east-2a`, `us-east-2b` and `us-east-2c` correspondingly. If that is not the case, adjust the manifest accordingly. +Having configured it, save the manifest as `dc2.yaml`: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: scylla-cluster + namespace: scylla +spec: + agentVersion: 3.3.0 + version: 6.1.1 + cpuset: true + sysctls: + - "fs.aio-max-nr=2097152" + automaticOrphanedNodeCleanup: true + exposeOptions: + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP + nodeService: + type: Headless + externalSeeds: + - 10.0.19.237 + - 10.0.59.24 + - 10.0.70.195 + datacenter: + name: us-east-2 + racks: + - name: a + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2a + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: b + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2b + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: c + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2c + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule +``` + +To apply the manifest, run: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla apply --server-side -f=dc2.yaml +``` + +Wait for the second datacenter to roll out: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +You can verify that the nodes have joined the existing cluster and that you are now running a multi-datacenter ScyllaDB cluster by running `nodetool status` with the below command: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla exec -it pod/scylla-cluster-us-east-2-a-0 -c=scylla -- nodetool status +``` +```console +Datacenter: us-east-1 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 10.0.70.195 705 KB 256 ? 494277b9-121c-4af9-bd63-3d0a7b9305f7 c +UN 10.0.59.24 764 KB 256 ? a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37 b +UN 10.0.19.237 634 KB 256 ? 64b6292a-327f-4128-852a-6004039f402e a +Datacenter: us-east-2 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 172.16.39.209 336 KB 256 ? 7c30ea55-7a4f-4d93-86f7-c881772ebe62 b +UN 172.16.25.18 759 KB 256 ? 665dde7e-e420-4db3-8c54-ca71efd39b2e a +UN 172.16.87.27 503 KB 256 ? c19c89cb-e24c-4062-9df4-2aa90ab29a99 c +``` + +## Scylla Manager + +To integrate a multi-datacenter ScyllaDB cluster with Scylla Manager, you must deploy the Scylla Manager in only one datacenter. + +In this example, let's choose the Kubernetes cluster deployed in the first datacenter to host it. +To deploy Scylla Manager, follow the steps described in [Deploying Scylla Manager on a Kubernetes Cluster](../manager.md) +in ScyllaDB Operator documentation. + +In order to define the Scylla Manager tasks, add them to the ScyllaCluster object deployed in the same Kubernetes cluster +in which your Scylla Manager is running. + +Every datacenter (represented by ScyllaCluster CR) is, by default, provisioned with a new, random Scylla Manager Agent auth token. +To use Scylla Manager with multiple datacenter (represented by ScyllaClusters), you have to make sure they all use the same token. + +Extract it from the first datacenter with the below command: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get secrets/scylla-cluster-auth-token --template='{{ index .data "auth-token.yaml" }}' | base64 -d +``` +```console +auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf +``` + +Save the output, replace the token with your own, and patch the secret in the second datacenter with the below command: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla patch secret/scylla-cluster-auth-token--type='json' -p='[{"op": "add", "path": "/stringData", "value": {"auth-token.yaml": "auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf"}}]' +``` + +Execute a rolling restart of the nodes in DC2 to make sure they pick up the new token: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla patch scyllacluster/scylla-cluster --type='merge' -p='{"spec": {"forceRedeploymentReason": "sync scylla-manager-agent token ('"$( date )"')"}}' +``` + + +## ScyllaDBMonitoring + +To monitor your cluster, deploy ScyllaDBMonitoring in every datacenter independently. +To deploy ScyllaDB Monitoring, follow the steps described in [Deploy managed monitoring](../monitoring.md#deploy-managed-monitoring) in ScyllaDB Operator documentation. diff --git a/stable/_sources/nodeoperations/automatic-cleanup.md.txt b/stable/_sources/nodeoperations/automatic-cleanup.md.txt new file mode 100644 index 00000000000..5e0535cca97 --- /dev/null +++ b/stable/_sources/nodeoperations/automatic-cleanup.md.txt @@ -0,0 +1,6 @@ +# Automatic cleanup and replacement in case when k8s node is lost + +In case when your k8s cluster loses one of the nodes due to incident or explicit removal, Scylla Pods may become unschedulable due to PVC node affinity. + +When `automaticOrphanedNodeCleanup` flag is enabled in your ScyllaCluster, Scylla Operator will perform automatic +node replacement of a Pod which lost his bound resources. diff --git a/stable/_sources/nodeoperations/index.rst.txt b/stable/_sources/nodeoperations/index.rst.txt new file mode 100644 index 00000000000..bf481452d7c --- /dev/null +++ b/stable/_sources/nodeoperations/index.rst.txt @@ -0,0 +1,12 @@ +====================================== +Node operations using Scylla Operator +====================================== + +.. toctree:: + :maxdepth: 1 + + scylla-upgrade + replace-node + automatic-cleanup + maintenance-mode + restore diff --git a/stable/_sources/nodeoperations/maintenance-mode.md.txt b/stable/_sources/nodeoperations/maintenance-mode.md.txt new file mode 100644 index 00000000000..c976ecc2b87 --- /dev/null +++ b/stable/_sources/nodeoperations/maintenance-mode.md.txt @@ -0,0 +1,19 @@ +# Maintenance mode + +When maintenance mode is enabled, readiness probe of Scylla Pod will always return failure and liveness probe will always succeed. This causes that Pod under maintenance +is being removed from K8s Load Balancer and DNS registry but Pod itself stays alive. + +This allows the Scylla Operator to interact with Scylla and Scylla dependencies inside the Pod. +For example user may turn off Scylla process, do something with the filesystem and bring the process back again. + +To enable maintenance mode add `scylla/node-maintenance` label to service in front of Scylla Pod. + +```bash +kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance="" +``` + +To disable, simply remove this label from service. + +```bash +kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance- +``` diff --git a/stable/_sources/nodeoperations/replace-node.md.txt b/stable/_sources/nodeoperations/replace-node.md.txt new file mode 100644 index 00000000000..3e6a8c7f024 --- /dev/null +++ b/stable/_sources/nodeoperations/replace-node.md.txt @@ -0,0 +1,74 @@ +# Replacing a Scylla node + +## Replacing a dead node +In the case of a host failure, it may not be possible to bring back the node to life. + +Replace dead node operation will cause the other nodes in the cluster to stream data to the node that was replaced. +This operation can take some time (depending on the data size and network bandwidth). + +_This procedure is for replacing one dead node. To replace more than one dead node, run the full procedure to completion one node at a time_ + +**Procedure** + +1. Verify the status of the node using `nodetool status` command, the node with status DN is down and need to be replaced + ```bash + kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status + Datacenter: us-east-1 + ===================== + Status=Up/Down + |/ State=Normal/Leaving/Joining/Moving + -- Address Load Tokens Owns Host ID Rack + UN 10.43.125.110 74.63 KB 256 ? 8ebd6114-969c-44af-a978-87a4a6c65c3e us-east-1a + UN 10.43.231.189 91.03 KB 256 ? 35d0cb19-35ef-482b-92a4-b63eee4527e5 us-east-1a + DN 10.43.43.51 74.77 KB 256 ? 1ffa7a82-c41c-4706-8f5f-4d45a39c7003 us-east-1a + ``` +1. Identify service which is bound to down node by checking IP address + ```bash + kubectl -n scylla get svc + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 3h12m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.231.189 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h12m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.125.110 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h11m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.43.51 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h5m + ``` +1. Drain node which we would like to replace using. **This command may delete your data from local disks attached to given node!** + ```bash + kubectl drain gke-scylla-demo-default-pool-b4b390a1-6j12 --ignore-daemonsets --delete-local-data + ``` + + Pod which will be replaced should enter the `Pending` state + ```bash + kubectl -n scylla get pods + NAME READY STATUS RESTARTS AGE + simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 3h21m + simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 3h19m + simple-cluster-us-east-1-us-east-1a-2 0/2 Pending 0 8m14s + ``` +1. To being node replacing, add `scylla/replace=""` label to service bound to pod we are replacing. + ```bash + kubectl -n scylla label svc simple-cluster-us-east-1-us-east-1a-2 scylla/replace="" + ``` + Your failed Pod should be recreated on available k8s node + ```bash + kubectl -n scylla get pods + NAME READY STATUS RESTARTS AGE + simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 3h27m + simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 3h25m + simple-cluster-us-east-1-us-east-1a-2 1/2 Running 0 9s + ``` + Because other nodes in cluster must stream data to new node this operation might take some time depending on how much data your cluster stores. + After bootstraping is over, your new Pod should be ready to go. + Old one shouldn't be no longer visible in `nodetool status` + ```bash + kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status + Datacenter: us-east-1 + ===================== + Status=Up/Down + |/ State=Normal/Leaving/Joining/Moving + -- Address Load Tokens Owns Host ID Rack + UN 10.43.125.110 74.62 KB 256 ? 8ebd6114-969c-44af-a978-87a4a6c65c3e us-east-1a + UN 10.43.231.189 91.03 KB 256 ? 35d0cb19-35ef-482b-92a4-b63eee4527e5 us-east-1a + UN 10.43.191.172 74.77 KB 256 ? 1ffa7a82-c41c-4706-8f5f-4d45a39c7003 us-east-1a + ``` +1. Run the repair on the cluster to make sure that the data is synced with the other nodes in the cluster. + You can use [Scylla Manager](../manager.md) to run the repair. diff --git a/stable/_sources/nodeoperations/restore.md.txt b/stable/_sources/nodeoperations/restore.md.txt new file mode 100644 index 00000000000..91f36704386 --- /dev/null +++ b/stable/_sources/nodeoperations/restore.md.txt @@ -0,0 +1,239 @@ +# Restore from backup + +This procedure will describe how to restore from backup taken using [Scylla Manager](../manager.md) to a fresh **empty** cluster of any size. + +:::{warning} +Restoring schema with **ScyllaDB OS 5.4.X** or **ScyllaDB Enterprise 2024.1.X** and `consistent_cluster_management` isn’t supported. + +When creating the `target` ScyllaDB cluster, configure it with `consistent_cluster_management: false`. +Refer to [API Reference](../api-reference/index.rst) to learn how to customize ScyllaDB configuration files. + +When following the steps for schema restore, ensure you follow the additional steps dedicated to affected ScyllaDB versions. +::: + +In the following example, the ScyllaCluster, which was used to take the backup, is called `source`. Backup will be restored into the ScyllaCluster named `target`. + +::::{tab-set} +:::{tab-item} Source ScyllaCluster +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: source +spec: + agentVersion: 3.3.0 + version: 6.1.1 + developerMode: true + backups: + - name: foo + location: + - s3:source-backup + keyspace: + - '*' + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 1 + storage: + capacity: 1Gi + resources: + limits: + cpu: 1 + memory: 1Gi +``` +::: +:::{tab-item} Target ScyllaCluster +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: target +spec: + agentVersion: 3.3.0 + version: 6.1.1 + developerMode: true + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 1 + storage: + capacity: 1Gi + resources: + limits: + cpu: 1 + memory: 1Gi +``` +::: +:::: + +Make sure your target cluster is already registered in Scylla Manager. To get a list of all registered clusters, execute the following command: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool cluster list ++--------------------------------------+---------------------------------------+---------+-----------------+ +| ID | Name | Port | CQL credentials | ++--------------------------------------+---------------------------------------+---------+-----------------+ +| af1dd5cd-0406-4974-949f-dc9842980080 | scylla/target | default | set | +| ebd82268-efb7-407e-a540-3619ae053778 | scylla/source | default | set | ++--------------------------------------+---------------------------------------+---------+-----------------+ +``` + +Identify the tag of a snapshot which you want to restore. To get a list of all available snapshots, execute following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c --all-clusters -L +``` + +Where: +* `CLUSTER_ID` - the name or ID of a registered cluster with access to `BACKUP_LOCATION`. +* `BACKUP_LOCATION` - the location in which the backup is stored. + +In this example, `BACKUP_LOCATION` is `s3:source-backup`. Use the name of cluster which has access to the backup location for `CLUSTER_ID`. +In this example, it's `scylla/target`. + +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c scylla/target --all-clusters -L s3:source-backup +backup/ff36d7e0-af2e-458c-afe6-868e0f3396b2 +Snapshots: + - sm_20240105115931UTC (409MiB, 1 nodes) +Keyspaces: + - system_schema (15 tables) + - users (9 tables) + +``` + +## Restore schema + +In the below commands, we are restoring the `sm_20240105115931UTC` snapshot. Replace it with a tag of a snapshot that you want to restore. +Restoring consist of two steps. First, you'll restore the schema, and then the data. +To restore schema, create a restore task manually on target ScyllaCluster by executing following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c -L -T --restore-schema +``` + +Where: +* `CLUSTER_ID` - a name or ID of a cluster you want to restore into. +* `BACKUP_LOCATION` - the location in which the backup is stored. +* `SNAPSHOT_TAG` - a tag of a snapshot that you want to restore. + +When the task is created, the command will output the ID of a restore task. +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-schema +restore/57228c52-7cf6-4271-8c8d-d446ff160747 +``` + +Use the following command to check progress of the restore task: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/57228c52-7cf6-4271-8c8d-d446ff160747 +Restore progress +Run: 0dd20cdf-abc4-11ee-951c-6e7993cf42ed +Status: DONE - restart required (see restore docs) +Start time: 05 Jan 24 12:15:02 UTC +End time: 05 Jan 24 12:15:09 UTC +Duration: 6s +Progress: 100% | 100% +Snapshot Tag: sm_20240105115931UTC + ++---------------+-------------+----------+----------+------------+--------+ +| Keyspace | Progress | Size | Success | Downloaded | Failed | ++---------------+-------------+----------+----------+------------+--------+ +| system_schema | 100% | 100% | 214.150k | 214.150k | 214.150k | 0 | ++---------------+-------------+----------+----------+------------+--------+ +``` + +As suggested in the progress output, you will need to execute a rolling restart of the ScyllaCluster. +```console +kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "schema restored"}}' +``` + +Use the following commands to wait until restart is finished: +```console +$ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met +``` + +:::{caution} +### Restoring schema with **ScyllaDB OS 5.4.X** or **ScyllaDB Enterprise 2024.1.X** and `consistent_cluster_management` + +After you've followed the above steps with a ScyllaDB target cluster with `consistent_cluster_management` disabled, you'll need to enable Raft by configuring the target cluster with `consistent_cluster_management: true`. +Refer to [API Reference](../api-reference/index.rst) to learn how to customize ScyllaDB configuration files. + +You will then need to execute a rolling restart of the ScyllaCluster for the change to take effect. +```console +kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "raft enabled"}}' +``` + +Use the following commands to wait until restart is finished: +```console +$ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met +``` +::: + +## Restore tables + +To restore the tables content, create a restore task manually on target ScyllaCluster by executing the following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c -L -T --restore-tables +``` + +Where: +* `CLUSTER_ID` - a name or ID of a cluster you want to restore into. +* `BACKUP_LOCATION` - the location in which the backup is stored. +* `SNAPSHOT_TAG` - a tag of a snapshot that you want to restore. + +When the task is created, the command will output the ID of a restore task. +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-tables +restore/63642069-bed5-4def-ba0f-68c49e47ace1 +``` + +Use the following command to check progress of the restore task: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/63642069-bed5-4def-ba0f-68c49e47ace1 +Restore progress +Run: ab015cef-abc8-11ee-9521-6e7993cf42ed +Status: DONE +Start time: 05 Jan 24 12:48:04 UTC +End time: 05 Jan 24 12:48:15 UTC +Duration: 11s +Progress: 100% | 100% +Snapshot Tag: sm_20240105115931UTC + ++-------------+-------------+--------+---------+------------+--------+ +| Keyspace | Progress | Size | Success | Downloaded | Failed | ++-------------+-------------+--------+---------+------------+--------+ +| users | 100% | 100% | 409MiB | 409MiB | 409MiB | 0 | ++-------------+-------------+--------+---------+------------+--------+ + +Post-restore repair progress +Run: ab015cef-abc8-11ee-9521-6e7993cf42ed +Status: DONE +Start time: 05 Jan 24 12:48:04 UTC +End time: 05 Jan 24 12:48:15 UTC +Duration: 11s +Progress: 100% +Intensity: 1 +Parallel: 0 +Datacenters: + - us-east-1 + ++-------------+--------------+----------+----------+ +| Keyspace | Table | Progress | Duration | ++-------------+--------------+----------+----------+ +| users | users | 100% | 0s | ++-------------+--------------+----------+----------+ + +``` diff --git a/stable/_sources/nodeoperations/scylla-upgrade.md.txt b/stable/_sources/nodeoperations/scylla-upgrade.md.txt new file mode 100644 index 00000000000..d39c9666c5e --- /dev/null +++ b/stable/_sources/nodeoperations/scylla-upgrade.md.txt @@ -0,0 +1,102 @@ +# Upgrading version of Scylla + +To upgrade Scylla version using Operator user have to modify existing ScyllaCluster definition. + +In this example cluster will be upgraded to version `4.4.5`. +```bash +kubectl -n scylla patch ScyllaCluster simple-cluster -p '{"spec":{"version": "4.4.5"}}' --type=merge +``` + +Operator supports two types of version upgrades: +1. Patch upgrade +1. Generic upgrade + + +**Patch upgrade** + +Patch upgrade is executed when only patch version change is detected according to [semantic versioning format](https://semver.org/). +Procedure simply rolls out a restart of whole cluster and upgrades Scylla container image for each node one by one. + +Example: `4.0.0 -> 4.0.1` + +**Generic upgrade** + +Generic upgrades are executed for the non patch version changes. + +Example: `4.0.0 -> 2020.1.0` or `4.0.0 -> 4.1.0` or even `4.0.0 -> nightly` + +User can observe current state of upgrade in ScyllaCluster status. +```bash +kubectl -n scylla describe ScyllaCluster simple-cluster +[...] +Status: + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.1.9 + Upgrade: + Current Node: simple-cluster-us-east-1-us-east-1a-2 + Current Rack: us-east-1a + Data Snapshot Tag: so_data_20201228135002UTC + From Version: 4.1.9 + State: validate_upgrade + System Snapshot Tag: so_system_20201228135002UTC + To Version: 4.2.2 +``` + +Each upgrade begins with taking a snapshot of `system` and `system_schema` keyspaces on all nodes in parallel. +Name of this snapshot tag is saved in upgrade status under `System Snapshot Tag`. + +Before nodes in rack are upgraded, underlying StatefulSet is changed to use `OnDelete` UpgradeStrategy. +This allows Operator have a full control over when Pod image is changed. + +When a node is being upgraded, [maintenance mode](#maintenance-mode) is enabled, then the node is drained and snapshot of all data keyspaces is taken. +Snapshot tag is saved under `Data Snapshot Tag` and is the same for all nodes during the procedure. +Once everything is set up, maintenance mode is disabled and Scylla Pod is deleted. Underlying StatefulSet will bring up a new +Pod with upgraded version. +Once Pod will become ready, data snapshot from this particular node is removed, and Operator moves to next node. + +Once every rack is upgraded, system snapshot is removed from all nodes in parallel and previous StatefulSet UpgradeStrategy is restored. +At this point, all your nodes should be already in desired version. + +Current state of upgrade can be traced using `Current Node`, `Current Rack` and `State` status fields. +* `Current Node` shows which node is being upgraded. +* `Current Rack` displays which rack is being upgraded. +* `State` contain information at which stage upgrade is. + +`State` can have following values: +* `begin_upgrade` - upgrade is starting +* `check_schema_agreement` - Operator waits until all nodes reach schema agreement. It waits for it for 1 minute, prints an error log message and check is retried. +* `create_system_backup` - system keyspaces snapshot is being taken +* `find_next_rack` - Operator finds out which rack must be upgraded next, decision is saved in `Current Rack` +* `upgrade_image_in_pod_spec` - Image and UpgradeStrategy is upgraded in underlying StatefulSet +* `find_next_node` - Operator finds out which node must be upgraded next, decision is saved in `Current Node` +* `enable_maintenance_mode` - maintenance mode is being enabled +* `drain_node` - node is being drained +* `backup_data` - snapshot of data keyspaces is being taken +* `disable_maintenance_mode` - maintenance mode is being disabled +* `delete_pod` - Scylla Pod is being deleted +* `validate_upgrade` - Operator validates if new pod enters Ready state and if Scylla version is upgraded +* `clear_data_backup` - snapshot of data keyspaces is being removed +* `clear_system_backup` - snapshot of system keyspaces is being removed +* `restore_upgrade_strategy` - restore UpgradeStrategy in underlying StatefulSet +* `finish_upgrade` - upgrade cleanup + +**Recovering from upgrade failure** + +Upgrade may get stuck on `validate_upgrade` stage. This happens when Scylla Pod refuses to properly boot up. + +To continue with upgrade, first turn off operator by scaling Operator replicas to zero: +```bash +kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=0 +``` +Then user have to manually resolve issue with Scylla by checking what is the root cause of a failure in Scylla container logs. +If needed data and system keyspaces SSTable snapshots are available on the node. You can check ScyllaCluster status for their names. + +Once issue is resolved and Scylla Pod is up and running (Pod is in Ready state), scale Operator back to two replicas: +```bash +kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=2 +``` + +Operator should continue upgrade process from where it left off. diff --git a/stable/_sources/performance.md.txt b/stable/_sources/performance.md.txt new file mode 100644 index 00000000000..7c4ee664c4a --- /dev/null +++ b/stable/_sources/performance.md.txt @@ -0,0 +1,100 @@ +# Performance tuning + +Scylla Operator 1.6 introduces a new experimental feature allowing users to optimize Kubernetes nodes. + +:::{warning} +We recommend that you first try out the performance tuning on a pre-production instance. +Given the nature of the underlying tuning script, undoing the changes requires rebooting the Kubernetes node(s). +::: + +## Node tuning + +Starting from Operator 1.6, a new CRD called NodeConfig is available, allowing users to target Nodes which should be tuned. +When a Node is supposed to be optimized, the Scylla Operator creates a DaemonSet covering these Nodes. +Nodes matching the provided placement conditions will be subject to tuning. + +Below example NodeConfig tunes nodes having `scylla.scylladb.com/node-type=scylla` label: +``` +apiVersion: scylla.scylladb.com/v1alpha1 +kind: NodeConfig +metadata: + name: cluster +spec: + placement: + nodeSelector: + scylla.scylladb.com/node-type: scylla +``` +For more details about new CRD use: +``` +kubectl explain nodeconfigs.scylla.scylladb.com/v1alpha1 +``` + +For all optimizations we use a Python script available in the Scylla image called perftune. +Perftune executes the performance optmizations like tuning the kernel, network, disk devices, spreading IRQs across CPUs and more. + +Tuning consists of two separate optimizations: common node tuning, and tuning based on Scylla Pods and their resource assignment. +Node tuning is executed immediately. Pod tuning is executed when Scylla Pod lands on the same Node. + +Scylla works most efficently when it's pinned to CPU and not interrupted. +One of the most common causes of context-switching are network interrupts. Packets coming to a node need to be processed, +and this requires CPU shares. + +On K8s we always have at least a couple of processes running on the node: kubelet, kubernetes provider applications, daemons etc. +These processes require CPU shares, so we cannot dedicate entire node processing power to Scylla, we need to leave space for others. +We take advantage of it, and we pin IRQs to CPUs not used by any Scylla Pods exclusively. + +Tuning resources are created in a special namespace called `scylla-operator-node-tuning`. + +The tuning is applied only to pods with `Guaranteed` QoS class. Please double check your ScyllaCluster resource specification +to see if it meets all conditions. + +## Kubernetes tuning + +By default, the kubelet uses the CFS quota to enforce pod CPU limits. +When the node runs many CPU-bound pods, the workload can move around different CPU cores depending on whether the pod +is throttled and which CPU cores are available. +However, kubelet may be configured to assign CPUs exclusively, by setting the CPU manager policy to static. + +Setting up kubelet configuration is provider specific. Please check the docs for your distribution or talk to your +provider. + +Only pods within the [Guaranteed QoS class](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/#create-a-pod-that-gets-assigned-a-qos-class-of-guaranteed)) can take advantage of this option. +When such pod lands on a Node, kubelet will pin them to specific CPUs, and those won't be part of the shared pool. + +In our case there are two requirements each ScyllaCluster must fulfill to receive a Guaranteed QoS class: +* resource request and limits must be equal or only limits have to be provided +* agentResources must be provided and their requests and limits must be equal, or only limits have to be provided + +An example of such a ScyllaCluster that receives a Guaranteed QoS class is below: + +``` +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: guaranteed-cluster + namespace: scylla +spec: + agentVersion: 3.3.0 + version: 6.1.1 + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 3 + storage: + capacity: 500Gi + agentResources: + requests: + cpu: 1 + memory: 1G + limits: + cpu: 1 + memory: 1G + resources: + requests: + cpu: 4 + memory: 16G + limits: + cpu: 4 + memory: 16G +``` diff --git a/stable/_sources/releases.md.txt b/stable/_sources/releases.md.txt new file mode 100644 index 00000000000..8137d546cd4 --- /dev/null +++ b/stable/_sources/releases.md.txt @@ -0,0 +1,96 @@ +# Releases + +## Schedule +We are aiming to ship a new release approximately every 6 weeks. The following release schedule is only advisory, there are no commitments made to hitting these dates. + +:::{table} +| Release | Code freeze | General availability | +|:-------:|:-----------:|:--------------------:| +| 1.14 | 2024-08-14 | 2024-08-31 | +::: + +## Supported releases +We support the latest 2 releases of the operator to give everyone time to upgrade. + +:::{table} +| Release | General availability | Support ends | +|:-------:|:--------------------:|:---------------:| +| 1.13 | 2024-06-20 | Release of 1.15 | +| 1.12 | 2024-03-28 | Release of 1.14 | +| 1.11 | 2023-11-09 | 2024-06-20 | +| 1.10 | 2023-08-25 | 2024-03-28 | +| 1.9 | 2023-07-04 | 2023-11-09 | +| 1.8 | 2023-01-25 | 2023-08-25 | +| 1.7 | 2022-01-27 | 2023-07-04 | +| 1.6 | 2021-12-03 | 2023-01-25 | +| 1.5 | 2021-09-16 | 2022-01-27 | +| 1.4 | 2021-08-10 | 2021-12-03 | +| 1.3 | 2021-06-17 | 2021-09-16 | +| 1.2 | 2021-05-06 | 2021-08-10 | +| 1.1 | 2021-03-22 | 2021-06-17 | +| 1.0 | 2021-01-21 | 2021-05-06 | +::: + +### Backport policy +Usually, only important bug fixes are eligible for being backported. +This may depend on the situation and assessment of the maintainers. + +## CI/CD +We use [GitHub actions](https://github.com/scylladb/scylla-operator/actions/workflows/go.yaml?query=branch%3Amaster+event%3Apush) for our CI/CD. Every merge to a supported branch, or a creation of a tag will automatically trigger a job to build, test and publish the container image and other artifacts like helm charts. Before we publish any image, it must pass the e2e suite. + +### Automated promotions + +:::{table} +| Git reference | Type | Container image | +| :----------------: | :----: | :--------------------------------------------------: | +| **master** | branch | docker.io/scylladb/scylla-operator:**latest** | +| **vX.Y** | branch | docker.io/scylladb/scylla-operator:**X.Y** | +| **vX.Y.Z** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z** | +| **vX.Y.Z-alpha.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-alpha.N** | +| **vX.Y.Z-beta.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-beta.N** | +| **vX.Y.Z-rc.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-rc.N** | +::: + +### Generally available +GA images aren't build from scratch but rather promoted from an existing release candidates. When we decide a release candidate has the acceptable quality and QA sings it off, the release candidate is promoted to become the GA release. This makes sure the image has exactly the same content and SHA as the tested release candidate. + +## Support matrix + +Support matrix table shows the version requirements for a particular **scylla-operator** version. Be sure to match these requirements, otherwise some functionality will not work. + +:::{table} +| Component | v1.13 | v1.12 | v1.11 | v1.10 | +|:-----------------:|:----------:|:----------:|:----------:|:----------:| +| Kubernetes | `>=1.21` | `>=1.21` | `>=1.21` | `>=1.21` | +| CRI API | `v1` | `v1` | `v1` | `v1` | +| Scylla OS | `>=5.4` | `>=5.0` | `>=5.0` | `>=5.0` | +| Scylla Enterprise | `>=2023.1` | `>=2021.1` | `>=2021.1` | `>=2021.1` | +| Scylla Manager | `>=3.2.8` | `>=3.2.6` | `>=3.2` | `>=2.6` | +| Scylla Monitoring | `(CRD)` | `(CRD)` | `(CRD)` | `>=4.0` | +::: + +### Supported Kubernetes platforms + +We officially test and recommend to use the following platforms: + +:::{table} +| Platform | OS Image | +|:-----------------|:-------------| +| GKE | Ubuntu | +| EKS | Amazon Linux | +::: + +While our APIs generally work on any Kubernetes conformant cluster, +performance tuning and other pieces that need to interact with the host OS, kubelet, CRI, kernel, etc. might hit some incompatibilities. + + +:::{warning} +The following platforms are known **not to work correctly** at this time. + +:::{table} +| Platform | OS Image | Details | +|:-----------------|:-------------| :------ | +| GKE | Container OS | | +| EKS | Bottlerocket | Suspected kernel/cgroups issue that breaks available memory detection for ScyllaDB | +::: +::: diff --git a/stable/_sources/support/index.rst.txt b/stable/_sources/support/index.rst.txt new file mode 100644 index 00000000000..9c623218acb --- /dev/null +++ b/stable/_sources/support/index.rst.txt @@ -0,0 +1,12 @@ +========================================================== +Support +========================================================== + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + overview + known-issues + troubleshooting/index + must-gather diff --git a/stable/_sources/support/known-issues.md.txt b/stable/_sources/support/known-issues.md.txt new file mode 100644 index 00000000000..c00d84bef58 --- /dev/null +++ b/stable/_sources/support/known-issues.md.txt @@ -0,0 +1,14 @@ +# Known issues + +## Scylla Manager does not boot up on Minikube + +If your Scylla Manager is failing to apply 8th migration (008_*), then apply fix for [TRUNCATE queries](#truncate-queries-does-not-work-on-minikube). + +## TRUNCATE queries does not work on Minikube + +The `TRUNCATE` queries requires [hairpinning](https://en.wikipedia.org/wiki/Hairpinning) to be enabled. On minikube this is disabled by default. + +To fix it execute the following command: +``` +minikube ssh sudo ip link set docker0 promisc on +``` diff --git a/stable/_sources/support/must-gather.md.txt b/stable/_sources/support/must-gather.md.txt new file mode 100644 index 00000000000..7e0089084da --- /dev/null +++ b/stable/_sources/support/must-gather.md.txt @@ -0,0 +1,101 @@ +# Gathering data with must-gather + +`must-gather` is an embedded tool in Scylla Operator that helps collecting all the necessary info when something goes wrong. + +The tool talks to the Kubernetes API, retrieves a predefined set of resources and saves them into a folder in your current directory. +By default, all collected Secrets are censored to avoid sending sensitive data. +That said, you can always review the archive before you attach it to an issue or your support request. + +Given it needs to talk to the Kubernetes API, at the very least, you need to supply the `--kubeconfig` flag with a path to the kubeconfig file for your Kubernetes cluster, or set the `KUBECONFIG` environment variable. + +## Running must-gather + +There is more than one way to run `must-gather`. +Here are some examples of how you can run the tool. + +### Prerequisites + +All examples assume you have exported `KUBECONFIG` environment variable that points to a kubeconfig file on your machine. +If not, you can run this command to export the common default location. +Please make sure such a file exists. + +```bash +export KUBECONFIG=~/.kube/config +ls -l "${KUBECONFIG}" +``` + +:::{note} + There can be slight deviations in the arguments for your container tool, depending on the container runtime, whether you use SELinux or similar factors. + + As an example, the need for the `Z` option on volume mounts depends on whether you use SELinux and what context is applied on your file or directory. + If you get an error mentioning `Error: lsetxattr : operation not supported`, try it without the `Z` option. +::: + +Let's also check whether your kubeconfig uses [external authentication plugin](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#client-go-credential-plugins). +You can determine that by running +```bash +kubectl config view --minify +``` +and checking whether it uses an external exec plugin by looking for this pattern (containing the `exec` key) +```yaml +users: +- name: + user: + exec: +``` +If not, you can skip the rest of this section. + +In case your kubeconfig depends on external binaries, you have to take a few extra steps because the external binary won't be available within our container to authenticate the requests. + +Similarly to how Pods are run within Kubernetes, we'll create a dedicated ServiceAccount for must-gather and use it to run the tool. +(When you are done using it, feel free to remove the Kubernetes resources created for that purpose.) + +```bash +kubectl create namespace must-gather +kubectl -n must-gather create serviceaccount must-gather +kubectl create clusterrolebinding must-gather --clusterrole=cluster-admin --serviceaccount=must-gather:must-gather +export MUST_GATHER_TOKEN +MUST_GATHER_TOKEN=$( kubectl -n must-gather create token must-gather --duration=1h ) +kubeconfig=$( mktemp ) +# Create a copy of the existing kubeconfig and +# replace user authentication using yq, or by adjusting the fields manually. +kubectl config view --minify --raw -o yaml | yq -e '.users[0].user = {"token": env(MUST_GATHER_TOKEN)}' > "${kubeconfig}" +KUBECONFIG="${kubeconfig}" +``` + +:::{note} + If you don't have `yq` installed, you can get it at https://github.com/mikefarah/yq/#install or you can replace the user authentication settings manually. +::: + +### Podman +```bash +podman run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro,Z" -v="$( pwd ):/workspace:Z" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig +``` + +### Docker +```bash +docker run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro" -v="$( pwd ):/workspace" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig +``` + +## Limiting must-gather to a particular namespace + +If you are running a large Kubernetes cluster with many ScyllaClusters, it may be useful to limit the collection of ScyllaClusters to a particular namespace. +Unless you hit scale issues, we advise not to use this mode, as sometimes the ScyllaClusters affect other collected resources, like the manager or they form a multi-datacenter. + +```bash +scylla-operator must-gather --namespace="" +``` + +:::{note} + The `--namespace` flag affects only `ScyllaClusters`. + Other resources related to the operator installation or cluster state will still be collected from other namespaces. +::: + +### Collecting every resource in the cluster + +By default, `must-gather` collects only a predefined subset of resources. +You can also request collecting every resource in the Kubernetes API, if the default set wouldn't be enough to debug an issue. + +```bash +scylla-operator must-gather --all-resources +``` diff --git a/stable/_sources/support/overview.md.txt b/stable/_sources/support/overview.md.txt new file mode 100644 index 00000000000..7097438589c --- /dev/null +++ b/stable/_sources/support/overview.md.txt @@ -0,0 +1,14 @@ +# Support overview + +## Get support + +ScyllaDB provides administrators with [paid support](https://www.scylladb.com/product/support/#enterprise-support), including Scylla Operator. + +## Troubleshooting issues + +To learn more about what to do when issues arise, visit our dedicated [troubleshooting section](troubleshooting/index). + +## Gather data about your cluster + +Scylla Operator contains an embedded tool called [must-gather](must-gather.md) that can collect the required information for requesting support or reporting issues. +Support requests and bug reports are required to attach the must-gather archive to help us understand the issue. diff --git a/stable/_sources/support/troubleshooting/index.rst.txt b/stable/_sources/support/troubleshooting/index.rst.txt new file mode 100644 index 00000000000..b83118e6b18 --- /dev/null +++ b/stable/_sources/support/troubleshooting/index.rst.txt @@ -0,0 +1,8 @@ +========================================================== +Troubleshooting +========================================================== + +.. toctree:: + :maxdepth: 2 + + installation diff --git a/stable/_sources/support/troubleshooting/installation.md.txt b/stable/_sources/support/troubleshooting/installation.md.txt new file mode 100644 index 00000000000..b93fcce7b51 --- /dev/null +++ b/stable/_sources/support/troubleshooting/installation.md.txt @@ -0,0 +1,34 @@ +# Troubleshooting installation issues + +## Webhooks +Scylla Operator provides several custom API resources that use webhooks to function properly. + +Unfortunately, it is often the case that user's clusters have modified SDN, that doesn't extend to the control plane, and Kubernetes apiserver is not able to reach the pods that serve the webhook traffic. +Another common case are firewall rules that block the webhook traffic. + +:::{note} + To be called a Kubernetes cluster, clusters are required to pass Kubernetes conformance test suite. + This suite includes tests that require Kubernetes apiserver to be able to reach webhook services. +::: + +:::{note} + Before filing an issue, please make sure your cluster webhook traffic can reach your webhook services, independently of Scylla Operator resources. +::: + +### EKS + +#### Custom CNI +EKS is currently breaking Kubernetes webhooks [when used with custom CNI networking](https://github.com/aws/containers-roadmap/issues/1215). + +:::{note} + We advise you to avoid using such setups and use a conformant Kubernetes cluster that supports webhooks. +::: + +There are some workarounds where you can reconfigure the webhook to use Ingress or hostNetwork instead, but it's beyond a standard configuration that we support and not specific to the Scylla Operator. + +### GKE + +#### Private clusters + +If you use GKE private clusters you need to manually configure the firewall to allow webhook traffic. +You can find more information on how to do that in [GKE private clusters docs](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules). diff --git a/stable/_sources/upgrade.md.txt b/stable/_sources/upgrade.md.txt new file mode 100644 index 00000000000..bc458be7c3d --- /dev/null +++ b/stable/_sources/upgrade.md.txt @@ -0,0 +1,184 @@ +# Upgrade of Scylla Operator + +This page describes Scylla Operator upgrade procedures. +There are two generic update procedures - via Helm and via kubectl. Before upgrading, please check this page to find out +if your target version requires additional upgrade steps. + +## Upgrade via Helm + +Helm doesn't support managing CustomResourceDefinition resources ([#5871](https://github.com/helm/helm/issues/5871), [#7735](https://github.com/helm/helm/issues/7735)) +These are only created on first install and never updated. In order to update them, users have to do it manually. + +Replace `` with the name of your Helm release for Scylla Operator and replace `` with the version number you want to install: +1. Make sure Helm chart repository is up-to-date: + ``` + helm repo add scylla-operator https://storage.googleapis.com/scylla-operator-charts/stable + helm repo update + ``` +2. Update CRD resources. We recommend using `--server-side` flag for `kubectl apply`, if your version supports it. + ``` + tmpdir=$( mktemp -d ) \ + && helm pull scylla-operator/scylla-operator --version --untar --untardir "${tmpdir}" \ + && find "${tmpdir}"/scylla-operator/crds/ -name '*.yaml' -printf '-f=%p ' \ + | xargs kubectl apply + ``` +3. Update Scylla Operator + ``` + helm upgrade --version scylla-operator/scylla-operator + ``` + +## Upgrade via kubectl + +Replace `` with the version number you want to install: + +1. Checkout source code of version you want to use: + ``` + git checkout + ``` +2. Manifests use rolling minor version tag, you may want to pin it to specific version: + ``` + find deploy/operator -name "*.yaml" | xargs sed --follow-symlinks -i -E "s^docker.io/scylladb/scylla-operator:[0-9]+\.[0-9]+^docker.io/scylladb/scylla-operator:^g" + ``` +3. Update Scylla Operator. We recommend using `--server-side` flag for `kubectl apply`, if your version supports it. + ``` + kubectl apply -f deploy/operator + ``` + +--- + +## `v1.2.0` -> `v1.3.0` + +Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure. + +1. Checkout source code of v1.3.0: + ``` + git checkout v1.3.0 + ``` +1. Update Scylla Operator from deploy directory: + ``` + kubectl -n scylla-operator apply -f deploy/operator + ``` +1. Wait until Scylla Operator is up and running: + ``` + kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com + kubectl -n scylla-operator rollout status deployment.apps/scylla-operator + ``` + +## `v1.1.0` -> `v1.2.0` + +1.2.0 release brought a lot of changes to the Scylla Operator deployment process. +To properly update Scylla Operator one must delete old objects and install updated ones. + +Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure. + +1. Checkout source code of v1.2.0: + ``` + git checkout v1.2.0 + ``` +1. Remove old scylla operator namespace - in our case it's called `scylla-operator-system`: + ``` + kubectl delete namespace scylla-operator-system --wait=true + ``` +1. Remove old webhooks: + ``` + kubectl delete MutatingWebhookConfiguration scylla-operator-mutating-webhook-configuration + kubectl delete ValidatingWebhookConfiguration scylla-operator-validating-webhook-configuration + ``` +1. Install Scylla Operator from deploy directory: + ``` + kubectl -n scylla-operator apply -f deploy/operator + ``` +1. Wait until Scylla Operator is up and running: + ``` + kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com + kubectl -n scylla-operator rollout status deployment.apps/scylla-operator + ``` + +## `v1.0.0` -> `v1.1.0` + +During this update we will change probes and image for Scylla Operator. +A new version brings an automation for upgrade of sidecar image, so a rolling restart of managed Scylla clusters is expected. + +1. Get name of StatefulSet managing Scylla Operator + ```shell + kubectl --namespace scylla-operator-system get sts --selector="control-plane=controller-manager" + + NAME READY AGE + scylla-operator-controller-manager 1/1 95m + ``` + +1. Change probes and used container image by applying following patch: + ```yaml + spec: + template: + spec: + containers: + - name: manager + image: docker.io/scylladb/scylla-operator:1.1.0 + livenessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP + readinessProbe: + $retainKeys: + - httpGet + httpGet: + path: /readyz + port: 8080 + scheme: HTTP + ``` + To apply above patch save it to file (`operator-patch.yaml` for example) and apply to Operator StatefulSet: + ```shell + kubectl -n scylla-operator-system patch sts scylla-operator-controller-manager --patch "$(cat operator-patch.yaml)" + ``` + + +## `v0.3.0` -> `v1.0.0` + +***Note:*** There's an experimental migration procedure available [here](migration.md). + +`v0.3.0` used a very common name as a CRD kind (`Cluster`). In `v1.0.0` this issue was solved by using less common +kind which is easier to disambiguate. (`ScyllaCluster`). +This change is backward incompatible, so Scylla cluster must be turned off and recreated from scratch. +In case you need to preserve your data, refer to backup and restore guide. + +1. Get list of existing Scylla clusters + ``` + kubectl -n scylla get cluster.scylla.scylladb.com + + NAME AGE + simple-cluster 30m + ``` +1. Delete each one of them + + ``` + kubectl -n scylla delete cluster.scylla.scylladb.com simple-cluster + ``` +1. Make sure you're on `v0.3.0` branch + ``` + git checkout v0.3.0 + ``` +1. Delete existing CRD and Operator + ``` + kubectl delete -f examples/generic/operator.yaml + ``` +1. Checkout `v1.0.0` version + ``` + git checkout v1.0.0 + ``` +1. Install new CRD and Scylla Operator + ``` + kubectl apply -f deploy/operator.yaml + ``` +1. Migrate your existing Scylla Cluster definition. Change `apiVersion` and `kind` from: + ``` + apiVersion: scylla.scylladb.com/v1alpha1 + kind: Cluster + ``` + to: + ``` + apiVersion: scylla.scylladb.com/v1 + kind: ScyllaCluster + ``` +1. Once your cluster definition is ready, use `kubectl apply` to install fresh Scylla cluster. diff --git a/stable/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css b/stable/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css new file mode 100644 index 00000000000..eb19f698afc --- /dev/null +++ b/stable/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/stable/_sphinx_design_static/design-tabs.js b/stable/_sphinx_design_static/design-tabs.js new file mode 100644 index 00000000000..36b38cf0d91 --- /dev/null +++ b/stable/_sphinx_design_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/stable/_static/basic.css b/stable/_static/basic.css new file mode 100644 index 00000000000..f316efcb47b --- /dev/null +++ b/stable/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/stable/_static/check-solid.svg b/stable/_static/check-solid.svg new file mode 100644 index 00000000000..92fad4b5c0b --- /dev/null +++ b/stable/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/stable/_static/clipboard.min.js b/stable/_static/clipboard.min.js new file mode 100644 index 00000000000..54b3c463811 --- /dev/null +++ b/stable/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/stable/_static/copybutton.css b/stable/_static/copybutton.css new file mode 100644 index 00000000000..f1916ec7d1b --- /dev/null +++ b/stable/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

        Short

        + */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/stable/_static/copybutton.js b/stable/_static/copybutton.js new file mode 100644 index 00000000000..2ea7ff3e217 --- /dev/null +++ b/stable/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/stable/_static/copybutton_funcs.js b/stable/_static/copybutton_funcs.js new file mode 100644 index 00000000000..dbe1aaad79c --- /dev/null +++ b/stable/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/stable/_static/css/main.css b/stable/_static/css/main.css new file mode 100644 index 00000000000..2682ad8a319 --- /dev/null +++ b/stable/_static/css/main.css @@ -0,0 +1 @@ +@media print,screen and (min-width:40em){.reveal,.reveal.large,.reveal.small,.reveal.tiny{left:auto;margin:0 auto;right:auto}}/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}[data-whatinput=mouse] *,[data-whatinput=mouse] :focus,[data-whatinput=touch] *,[data-whatinput=touch] :focus,[data-whatintent=mouse] *,[data-whatintent=mouse] :focus,[data-whatintent=touch] *,[data-whatintent=touch] :focus{outline:0}[draggable=false]{-webkit-touch-callout:none;-webkit-user-select:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{-webkit-box-sizing:border-box;font-size:100%}*,:after,:before{-webkit-box-sizing:inherit}body{background:#fefefe;color:#0a0a0a;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;height:auto;vertical-align:middle;-ms-interpolation-mode:bicubic}textarea{border-radius:0;height:auto;min-height:50px}select{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;border:0;border-radius:0;cursor:auto;line-height:1;padding:0}[data-whatinput=mouse] button{outline:0}pre{overflow:auto;-webkit-overflow-scrolling:touch}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block!important}.is-hidden{display:none!important}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;-webkit-box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);-webkit-box-sizing:border-box;box-sizing:border-box;color:#0a0a0a;display:block;font-family:inherit;font-size:1rem;font-weight:400;height:2.4375rem;line-height:1.5;margin:0 0 1rem;padding:.5rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s;width:100%}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:0;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}textarea{max-width:100%}textarea[rows]{height:auto}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type=search]{-webkit-box-sizing:border-box;box-sizing:border-box}::-webkit-input-placeholder{color:#cacaca}::-moz-placeholder{color:#cacaca}:-ms-input-placeholder{color:#cacaca}::-ms-input-placeholder{color:#cacaca}::placeholder{color:#cacaca}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-bottom:0;margin-left:.5rem;margin-right:1rem;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{color:#0a0a0a;display:block;font-size:.875rem;font-weight:400;line-height:1.8;margin:0}label.middle{line-height:1.5;margin:0 0 1rem;padding:.5625rem 0}.help-text{color:#0a0a0a;font-size:.8125rem;font-style:italic;margin-top:-.5rem}.input-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:1rem;width:100%;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.input-group>:first-child,.input-group>:first-child.input-group-button>*,.input-group>:last-child,.input-group>:last-child.input-group-button>*{border-radius:0}.input-group-button,.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label,.input-group-field,.input-group-label{margin:0;white-space:nowrap}.input-group-label{background:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 1rem;text-align:center;white-space:nowrap;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;min-width:0}.input-group-button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-bottom:0;padding-top:0;text-align:center;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;font-size:1rem;height:auto;padding-bottom:0;padding-top:0}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:.5rem;max-width:100%}.fieldset{border:1px solid #cacaca;margin:1.125rem 0;padding:1.25rem}.fieldset legend{margin:0 0 0 -.1875rem;padding:0 .1875rem}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;background-image:url('data:image/svg+xml;utf8,');background-origin:content-box;background-position:right -1rem center;background-repeat:no-repeat;background-size:9px 6px;border:1px solid #cacaca;border-radius:0;color:#0a0a0a;font-family:inherit;font-size:1rem;font-weight:400;height:2.4375rem;line-height:1.5;margin:0 0 1rem;padding:.5rem 1.5rem .5rem .5rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}@media screen and (min-width:0\0){select{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==)}}select:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:0;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{background-image:none;height:auto}select:not([multiple]){padding-bottom:0;padding-top:0}.is-invalid-input:not(:focus){background-color:#f9ecea;border-color:#cc4b37}.is-invalid-input:not(:focus)::-webkit-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-moz-placeholder{color:#cc4b37}.is-invalid-input:not(:focus):-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::placeholder{color:#cc4b37}.form-error,.is-invalid-label{color:#cc4b37}.form-error{display:none;font-size:.75rem;font-weight:700;margin-bottom:1rem;margin-top:-.5rem}.form-error.is-visible{display:block}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:inherit;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:400;text-rendering:optimizeLegibility}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}.h1,h1{font-size:1.5rem}.h1,.h2,h1,h2{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h2,h2{font-size:1.25rem}.h3,h3{font-size:1.1875rem}.h3,.h4,h3,h4{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h4,h4{font-size:1.125rem}.h5,h5{font-size:1.0625rem}.h5,.h6,h5,h6{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h6,h6{font-size:1rem}@media print,screen and (min-width:40em){.h1,h1{font-size:3rem}.h2,h2{font-size:2.5rem}.h3,h3{font-size:1.9375rem}.h4,h4{font-size:1.5625rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}}a{color:#1779ba;cursor:pointer;line-height:inherit;text-decoration:none}a:focus,a:hover{color:#1468a0}a img,hr{border:0}hr{border-bottom:1px solid #cacaca;clear:both;height:0;margin:1.25rem auto;max-width:75rem}dl,ol,ul{line-height:1.6;list-style-position:outside;margin-bottom:1rem}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-left:1.25rem}dl{margin-bottom:1rem}dl dt{font-weight:700;margin-bottom:.3rem}blockquote{border-left:1px solid #cacaca;margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem}blockquote,blockquote p{color:#8a8a8a;line-height:1.6}abbr,abbr[title]{border-bottom:1px dotted #0a0a0a;cursor:help;text-decoration:none}figure,kbd{margin:0}kbd{background-color:#e6e6e6;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;padding:.125rem .25rem 0}.subheader{color:#8a8a8a;font-weight:400;line-height:1.4;margin-bottom:.5rem;margin-top:.2rem}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}ol.no-bullet,ul.no-bullet{list-style:none;margin-left:0}.cite-block,cite{color:#8a8a8a;display:block;font-size:.8125rem}.cite-block:before,cite:before{content:"— "}.code-inline,code{display:inline;max-width:100%;word-wrap:break-word;padding:.125rem .3125rem .0625rem}.code-block,.code-inline,code{background-color:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;font-weight:400}.code-block{display:block;margin-bottom:1.5rem;overflow:auto;padding:1rem;white-space:pre}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print,screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print,screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:#000!important;-webkit-print-color-adjust:economy;print-color-adjust:economy;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.print-break-inside{page-break-inside:auto}}.grid-container{margin-left:auto;margin-right:auto;max-width:75rem;padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-container{padding-left:.9375rem;padding-right:.9375rem}}.grid-container.fluid{margin-left:auto;margin-right:auto;max-width:100%;padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-container.fluid{padding-left:.9375rem;padding-right:.9375rem}}.grid-container.full{margin-left:auto;margin-right:auto;max-width:100%;padding-left:0;padding-right:0}.grid-x{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.cell{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;min-height:0;min-width:0;width:100%}.cell.auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0}.cell.shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.auto,.grid-x>.shrink{width:auto}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-full,.grid-x>.small-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-full,.grid-x>.medium-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-full,.grid-x>.large-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.small-1{width:8.3333333333%}.grid-x>.small-2{width:16.6666666667%}.grid-x>.small-3{width:25%}.grid-x>.small-4{width:33.3333333333%}.grid-x>.small-5{width:41.6666666667%}.grid-x>.small-6{width:50%}.grid-x>.small-7{width:58.3333333333%}.grid-x>.small-8{width:66.6666666667%}.grid-x>.small-9{width:75%}.grid-x>.small-10{width:83.3333333333%}.grid-x>.small-11{width:91.6666666667%}.grid-x>.small-12{width:100%}@media print,screen and (min-width:40em){.grid-x>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.medium-shrink{width:auto}.grid-x>.medium-1{width:8.3333333333%}.grid-x>.medium-2{width:16.6666666667%}.grid-x>.medium-3{width:25%}.grid-x>.medium-4{width:33.3333333333%}.grid-x>.medium-5{width:41.6666666667%}.grid-x>.medium-6{width:50%}.grid-x>.medium-7{width:58.3333333333%}.grid-x>.medium-8{width:66.6666666667%}.grid-x>.medium-9{width:75%}.grid-x>.medium-10{width:83.3333333333%}.grid-x>.medium-11{width:91.6666666667%}.grid-x>.medium-12{width:100%}}@media print,screen and (min-width:64em){.grid-x>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.large-shrink{width:auto}.grid-x>.large-1{width:8.3333333333%}.grid-x>.large-2{width:16.6666666667%}.grid-x>.large-3{width:25%}.grid-x>.large-4{width:33.3333333333%}.grid-x>.large-5{width:41.6666666667%}.grid-x>.large-6{width:50%}.grid-x>.large-7{width:58.3333333333%}.grid-x>.large-8{width:66.6666666667%}.grid-x>.large-9{width:75%}.grid-x>.large-10{width:83.3333333333%}.grid-x>.large-11{width:91.6666666667%}.grid-x>.large-12{width:100%}}.grid-margin-x:not(.grid-x)>.cell{width:auto}.grid-margin-y:not(.grid-y)>.cell{height:auto}.grid-margin-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-margin-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-margin-x>.cell{margin-left:.625rem;margin-right:.625rem;width:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x>.cell{margin-left:.9375rem;margin-right:.9375rem;width:calc(100% - 1.875rem)}}.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.25rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.25rem)}.grid-margin-x>.small-3{width:calc(25% - 1.25rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.25rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.25rem)}.grid-margin-x>.small-6{width:calc(50% - 1.25rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.25rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.25rem)}.grid-margin-x>.small-9{width:calc(75% - 1.25rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.25rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.25rem)}.grid-margin-x>.small-12{width:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.small-3{width:calc(25% - 1.875rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.small-6{width:calc(50% - 1.875rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.small-9{width:calc(75% - 1.875rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.small-12{width:calc(100% - 1.875rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.875rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.875rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.875rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-x>.large-auto,.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.large-3{width:calc(25% - 1.875rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.large-6{width:calc(50% - 1.875rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.large-9{width:calc(75% - 1.875rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.large-12{width:calc(100% - 1.875rem)}}.grid-padding-x .grid-padding-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-padding-x .grid-padding-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-container:not(.full)>.grid-padding-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-padding-x>.cell{padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-padding-x>.cell{padding-left:.9375rem;padding-right:.9375rem}}.small-up-1>.cell{width:100%}.small-up-2>.cell{width:50%}.small-up-3>.cell{width:33.3333333333%}.small-up-4>.cell{width:25%}.small-up-5>.cell{width:20%}.small-up-6>.cell{width:16.6666666667%}.small-up-7>.cell{width:14.2857142857%}.small-up-8>.cell{width:12.5%}@media print,screen and (min-width:40em){.medium-up-1>.cell{width:100%}.medium-up-2>.cell{width:50%}.medium-up-3>.cell{width:33.3333333333%}.medium-up-4>.cell{width:25%}.medium-up-5>.cell{width:20%}.medium-up-6>.cell{width:16.6666666667%}.medium-up-7>.cell{width:14.2857142857%}.medium-up-8>.cell{width:12.5%}}@media print,screen and (min-width:64em){.large-up-1>.cell{width:100%}.large-up-2>.cell{width:50%}.large-up-3>.cell{width:33.3333333333%}.large-up-4>.cell{width:25%}.large-up-5>.cell{width:20%}.large-up-6>.cell{width:16.6666666667%}.large-up-7>.cell{width:14.2857142857%}.large-up-8>.cell{width:12.5%}}.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.25rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.25rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.25rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.25rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.25rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.25rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.25rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.875rem)}.grid-margin-x.medium-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.medium-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.medium-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.medium-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.medium-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.medium-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.medium-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.medium-up-8>.cell{width:calc(12.5% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-x.large-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.large-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.large-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.large-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.large-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.large-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.large-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.large-up-8>.cell{width:calc(12.5% - 1.875rem)}}.small-margin-collapse,.small-margin-collapse>.cell{margin-left:0;margin-right:0}.small-margin-collapse>.small-1{width:8.3333333333%}.small-margin-collapse>.small-2{width:16.6666666667%}.small-margin-collapse>.small-3{width:25%}.small-margin-collapse>.small-4{width:33.3333333333%}.small-margin-collapse>.small-5{width:41.6666666667%}.small-margin-collapse>.small-6{width:50%}.small-margin-collapse>.small-7{width:58.3333333333%}.small-margin-collapse>.small-8{width:66.6666666667%}.small-margin-collapse>.small-9{width:75%}.small-margin-collapse>.small-10{width:83.3333333333%}.small-margin-collapse>.small-11{width:91.6666666667%}.small-margin-collapse>.small-12{width:100%}@media print,screen and (min-width:40em){.small-margin-collapse>.medium-1{width:8.3333333333%}.small-margin-collapse>.medium-2{width:16.6666666667%}.small-margin-collapse>.medium-3{width:25%}.small-margin-collapse>.medium-4{width:33.3333333333%}.small-margin-collapse>.medium-5{width:41.6666666667%}.small-margin-collapse>.medium-6{width:50%}.small-margin-collapse>.medium-7{width:58.3333333333%}.small-margin-collapse>.medium-8{width:66.6666666667%}.small-margin-collapse>.medium-9{width:75%}.small-margin-collapse>.medium-10{width:83.3333333333%}.small-margin-collapse>.medium-11{width:91.6666666667%}.small-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.small-margin-collapse>.large-1{width:8.3333333333%}.small-margin-collapse>.large-2{width:16.6666666667%}.small-margin-collapse>.large-3{width:25%}.small-margin-collapse>.large-4{width:33.3333333333%}.small-margin-collapse>.large-5{width:41.6666666667%}.small-margin-collapse>.large-6{width:50%}.small-margin-collapse>.large-7{width:58.3333333333%}.small-margin-collapse>.large-8{width:66.6666666667%}.small-margin-collapse>.large-9{width:75%}.small-margin-collapse>.large-10{width:83.3333333333%}.small-margin-collapse>.large-11{width:91.6666666667%}.small-margin-collapse>.large-12{width:100%}}.small-padding-collapse{margin-left:0;margin-right:0}.small-padding-collapse>.cell{padding-left:0;padding-right:0}@media print,screen and (min-width:40em){.medium-margin-collapse,.medium-margin-collapse>.cell{margin-left:0;margin-right:0}.medium-margin-collapse>.small-1{width:8.3333333333%}.medium-margin-collapse>.small-2{width:16.6666666667%}.medium-margin-collapse>.small-3{width:25%}.medium-margin-collapse>.small-4{width:33.3333333333%}.medium-margin-collapse>.small-5{width:41.6666666667%}.medium-margin-collapse>.small-6{width:50%}.medium-margin-collapse>.small-7{width:58.3333333333%}.medium-margin-collapse>.small-8{width:66.6666666667%}.medium-margin-collapse>.small-9{width:75%}.medium-margin-collapse>.small-10{width:83.3333333333%}.medium-margin-collapse>.small-11{width:91.6666666667%}.medium-margin-collapse>.small-12{width:100%}.medium-margin-collapse>.medium-1{width:8.3333333333%}.medium-margin-collapse>.medium-2{width:16.6666666667%}.medium-margin-collapse>.medium-3{width:25%}.medium-margin-collapse>.medium-4{width:33.3333333333%}.medium-margin-collapse>.medium-5{width:41.6666666667%}.medium-margin-collapse>.medium-6{width:50%}.medium-margin-collapse>.medium-7{width:58.3333333333%}.medium-margin-collapse>.medium-8{width:66.6666666667%}.medium-margin-collapse>.medium-9{width:75%}.medium-margin-collapse>.medium-10{width:83.3333333333%}.medium-margin-collapse>.medium-11{width:91.6666666667%}.medium-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.medium-margin-collapse>.large-1{width:8.3333333333%}.medium-margin-collapse>.large-2{width:16.6666666667%}.medium-margin-collapse>.large-3{width:25%}.medium-margin-collapse>.large-4{width:33.3333333333%}.medium-margin-collapse>.large-5{width:41.6666666667%}.medium-margin-collapse>.large-6{width:50%}.medium-margin-collapse>.large-7{width:58.3333333333%}.medium-margin-collapse>.large-8{width:66.6666666667%}.medium-margin-collapse>.large-9{width:75%}.medium-margin-collapse>.large-10{width:83.3333333333%}.medium-margin-collapse>.large-11{width:91.6666666667%}.medium-margin-collapse>.large-12{width:100%}}@media print,screen and (min-width:40em){.medium-padding-collapse{margin-left:0;margin-right:0}.medium-padding-collapse>.cell{padding-left:0;padding-right:0}}@media print,screen and (min-width:64em){.large-margin-collapse,.large-margin-collapse>.cell{margin-left:0;margin-right:0}.large-margin-collapse>.small-1{width:8.3333333333%}.large-margin-collapse>.small-2{width:16.6666666667%}.large-margin-collapse>.small-3{width:25%}.large-margin-collapse>.small-4{width:33.3333333333%}.large-margin-collapse>.small-5{width:41.6666666667%}.large-margin-collapse>.small-6{width:50%}.large-margin-collapse>.small-7{width:58.3333333333%}.large-margin-collapse>.small-8{width:66.6666666667%}.large-margin-collapse>.small-9{width:75%}.large-margin-collapse>.small-10{width:83.3333333333%}.large-margin-collapse>.small-11{width:91.6666666667%}.large-margin-collapse>.small-12{width:100%}.large-margin-collapse>.medium-1{width:8.3333333333%}.large-margin-collapse>.medium-2{width:16.6666666667%}.large-margin-collapse>.medium-3{width:25%}.large-margin-collapse>.medium-4{width:33.3333333333%}.large-margin-collapse>.medium-5{width:41.6666666667%}.large-margin-collapse>.medium-6{width:50%}.large-margin-collapse>.medium-7{width:58.3333333333%}.large-margin-collapse>.medium-8{width:66.6666666667%}.large-margin-collapse>.medium-9{width:75%}.large-margin-collapse>.medium-10{width:83.3333333333%}.large-margin-collapse>.medium-11{width:91.6666666667%}.large-margin-collapse>.medium-12{width:100%}.large-margin-collapse>.large-1{width:8.3333333333%}.large-margin-collapse>.large-2{width:16.6666666667%}.large-margin-collapse>.large-3{width:25%}.large-margin-collapse>.large-4{width:33.3333333333%}.large-margin-collapse>.large-5{width:41.6666666667%}.large-margin-collapse>.large-6{width:50%}.large-margin-collapse>.large-7{width:58.3333333333%}.large-margin-collapse>.large-8{width:66.6666666667%}.large-margin-collapse>.large-9{width:75%}.large-margin-collapse>.large-10{width:83.3333333333%}.large-margin-collapse>.large-11{width:91.6666666667%}.large-margin-collapse>.large-12{width:100%}.large-padding-collapse{margin-left:0;margin-right:0}.large-padding-collapse>.cell{padding-left:0;padding-right:0}}.small-offset-0{margin-left:0}.grid-margin-x>.small-offset-0{margin-left:.625rem}.small-offset-1{margin-left:8.3333333333%}.grid-margin-x>.small-offset-1{margin-left:calc(8.33333% + .625rem)}.small-offset-2{margin-left:16.6666666667%}.grid-margin-x>.small-offset-2{margin-left:calc(16.66667% + .625rem)}.small-offset-3{margin-left:25%}.grid-margin-x>.small-offset-3{margin-left:calc(25% + .625rem)}.small-offset-4{margin-left:33.3333333333%}.grid-margin-x>.small-offset-4{margin-left:calc(33.33333% + .625rem)}.small-offset-5{margin-left:41.6666666667%}.grid-margin-x>.small-offset-5{margin-left:calc(41.66667% + .625rem)}.small-offset-6{margin-left:50%}.grid-margin-x>.small-offset-6{margin-left:calc(50% + .625rem)}.small-offset-7{margin-left:58.3333333333%}.grid-margin-x>.small-offset-7{margin-left:calc(58.33333% + .625rem)}.small-offset-8{margin-left:66.6666666667%}.grid-margin-x>.small-offset-8{margin-left:calc(66.66667% + .625rem)}.small-offset-9{margin-left:75%}.grid-margin-x>.small-offset-9{margin-left:calc(75% + .625rem)}.small-offset-10{margin-left:83.3333333333%}.grid-margin-x>.small-offset-10{margin-left:calc(83.33333% + .625rem)}.small-offset-11{margin-left:91.6666666667%}.grid-margin-x>.small-offset-11{margin-left:calc(91.66667% + .625rem)}@media print,screen and (min-width:40em){.medium-offset-0{margin-left:0}.grid-margin-x>.medium-offset-0{margin-left:.9375rem}.medium-offset-1{margin-left:8.3333333333%}.grid-margin-x>.medium-offset-1{margin-left:calc(8.33333% + .9375rem)}.medium-offset-2{margin-left:16.6666666667%}.grid-margin-x>.medium-offset-2{margin-left:calc(16.66667% + .9375rem)}.medium-offset-3{margin-left:25%}.grid-margin-x>.medium-offset-3{margin-left:calc(25% + .9375rem)}.medium-offset-4{margin-left:33.3333333333%}.grid-margin-x>.medium-offset-4{margin-left:calc(33.33333% + .9375rem)}.medium-offset-5{margin-left:41.6666666667%}.grid-margin-x>.medium-offset-5{margin-left:calc(41.66667% + .9375rem)}.medium-offset-6{margin-left:50%}.grid-margin-x>.medium-offset-6{margin-left:calc(50% + .9375rem)}.medium-offset-7{margin-left:58.3333333333%}.grid-margin-x>.medium-offset-7{margin-left:calc(58.33333% + .9375rem)}.medium-offset-8{margin-left:66.6666666667%}.grid-margin-x>.medium-offset-8{margin-left:calc(66.66667% + .9375rem)}.medium-offset-9{margin-left:75%}.grid-margin-x>.medium-offset-9{margin-left:calc(75% + .9375rem)}.medium-offset-10{margin-left:83.3333333333%}.grid-margin-x>.medium-offset-10{margin-left:calc(83.33333% + .9375rem)}.medium-offset-11{margin-left:91.6666666667%}.grid-margin-x>.medium-offset-11{margin-left:calc(91.66667% + .9375rem)}}@media print,screen and (min-width:64em){.large-offset-0{margin-left:0}.grid-margin-x>.large-offset-0{margin-left:.9375rem}.large-offset-1{margin-left:8.3333333333%}.grid-margin-x>.large-offset-1{margin-left:calc(8.33333% + .9375rem)}.large-offset-2{margin-left:16.6666666667%}.grid-margin-x>.large-offset-2{margin-left:calc(16.66667% + .9375rem)}.large-offset-3{margin-left:25%}.grid-margin-x>.large-offset-3{margin-left:calc(25% + .9375rem)}.large-offset-4{margin-left:33.3333333333%}.grid-margin-x>.large-offset-4{margin-left:calc(33.33333% + .9375rem)}.large-offset-5{margin-left:41.6666666667%}.grid-margin-x>.large-offset-5{margin-left:calc(41.66667% + .9375rem)}.large-offset-6{margin-left:50%}.grid-margin-x>.large-offset-6{margin-left:calc(50% + .9375rem)}.large-offset-7{margin-left:58.3333333333%}.grid-margin-x>.large-offset-7{margin-left:calc(58.33333% + .9375rem)}.large-offset-8{margin-left:66.6666666667%}.grid-margin-x>.large-offset-8{margin-left:calc(66.66667% + .9375rem)}.large-offset-9{margin-left:75%}.grid-margin-x>.large-offset-9{margin-left:calc(75% + .9375rem)}.large-offset-10{margin-left:83.3333333333%}.grid-margin-x>.large-offset-10{margin-left:calc(83.33333% + .9375rem)}.large-offset-11{margin-left:91.6666666667%}.grid-margin-x>.large-offset-11{margin-left:calc(91.66667% + .9375rem)}}.grid-y{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.grid-y>.cell{height:auto;max-height:none}.grid-y>.auto,.grid-y>.shrink{height:auto}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-full,.grid-y>.small-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-full,.grid-y>.medium-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-full,.grid-y>.large-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.small-1{height:8.3333333333%}.grid-y>.small-2{height:16.6666666667%}.grid-y>.small-3{height:25%}.grid-y>.small-4{height:33.3333333333%}.grid-y>.small-5{height:41.6666666667%}.grid-y>.small-6{height:50%}.grid-y>.small-7{height:58.3333333333%}.grid-y>.small-8{height:66.6666666667%}.grid-y>.small-9{height:75%}.grid-y>.small-10{height:83.3333333333%}.grid-y>.small-11{height:91.6666666667%}.grid-y>.small-12{height:100%}@media print,screen and (min-width:40em){.grid-y>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.medium-shrink{height:auto}.grid-y>.medium-1{height:8.3333333333%}.grid-y>.medium-2{height:16.6666666667%}.grid-y>.medium-3{height:25%}.grid-y>.medium-4{height:33.3333333333%}.grid-y>.medium-5{height:41.6666666667%}.grid-y>.medium-6{height:50%}.grid-y>.medium-7{height:58.3333333333%}.grid-y>.medium-8{height:66.6666666667%}.grid-y>.medium-9{height:75%}.grid-y>.medium-10{height:83.3333333333%}.grid-y>.medium-11{height:91.6666666667%}.grid-y>.medium-12{height:100%}}@media print,screen and (min-width:64em){.grid-y>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.large-shrink{height:auto}.grid-y>.large-1{height:8.3333333333%}.grid-y>.large-2{height:16.6666666667%}.grid-y>.large-3{height:25%}.grid-y>.large-4{height:33.3333333333%}.grid-y>.large-5{height:41.6666666667%}.grid-y>.large-6{height:50%}.grid-y>.large-7{height:58.3333333333%}.grid-y>.large-8{height:66.6666666667%}.grid-y>.large-9{height:75%}.grid-y>.large-10{height:83.3333333333%}.grid-y>.large-11{height:91.6666666667%}.grid-y>.large-12{height:100%}}.grid-padding-y .grid-padding-y{margin-bottom:-.625rem;margin-top:-.625rem}@media print,screen and (min-width:40em){.grid-padding-y .grid-padding-y{margin-bottom:-.9375rem;margin-top:-.9375rem}}.grid-padding-y>.cell{padding-bottom:.625rem;padding-top:.625rem}@media print,screen and (min-width:40em){.grid-padding-y>.cell{padding-bottom:.9375rem;padding-top:.9375rem}}.grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .grid-frame{width:100%}.cell-block{max-width:100%;overflow-x:auto}.cell-block,.cell-block-y{-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.cell-block-y{max-height:100%;min-height:100%;overflow-y:auto}.cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}@media print,screen and (min-width:40em){.medium-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .medium-grid-frame{width:100%}.medium-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.medium-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.medium-cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.medium-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media print,screen and (min-width:64em){.large-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .large-grid-frame{width:100%}.large-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.large-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.large-cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.large-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}.grid-y.grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}@media print,screen and (min-width:40em){.grid-y.medium-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}@media print,screen and (min-width:64em){.grid-y.large-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}.cell .grid-y.grid-frame{height:100%}@media print,screen and (min-width:40em){.cell .grid-y.medium-grid-frame{height:100%}}@media print,screen and (min-width:64em){.cell .grid-y.large-grid-frame{height:100%}}.grid-margin-y{margin-bottom:-.625rem;margin-top:-.625rem}@media print,screen and (min-width:40em){.grid-margin-y{margin-bottom:-.9375rem;margin-top:-.9375rem}}.grid-margin-y>.cell{height:calc(100% - 1.25rem);margin-bottom:.625rem;margin-top:.625rem}@media print,screen and (min-width:40em){.grid-margin-y>.cell{height:calc(100% - 1.875rem);margin-bottom:.9375rem;margin-top:.9375rem}}.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.25rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.25rem)}.grid-margin-y>.small-3{height:calc(25% - 1.25rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.25rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.25rem)}.grid-margin-y>.small-6{height:calc(50% - 1.25rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.25rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.25rem)}.grid-margin-y>.small-9{height:calc(75% - 1.25rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.25rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.25rem)}.grid-margin-y>.small-12{height:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.small-3{height:calc(25% - 1.875rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.small-6{height:calc(50% - 1.875rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.small-9{height:calc(75% - 1.875rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.small-12{height:calc(100% - 1.875rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.875rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.875rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.875rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-y>.large-auto,.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.large-3{height:calc(25% - 1.875rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.large-6{height:calc(50% - 1.875rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.large-9{height:calc(75% - 1.875rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.large-12{height:calc(100% - 1.875rem)}}.grid-frame.grid-margin-y{height:calc(100vh + 1.25rem)}@media print,screen and (min-width:40em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:64em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:40em){.grid-margin-y.medium-grid-frame{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-y.large-grid-frame{height:calc(100vh + 1.875rem)}}.button{-webkit-appearance:none;border:1px solid transparent;border-radius:0;cursor:pointer;display:inline-block;font-family:inherit;font-size:.9rem;line-height:1;margin:0 0 1rem;padding:.85em 1em;text-align:center;-webkit-transition:background-color .25s ease-out,color .25s ease-out;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle}[data-whatinput=mouse] .button{outline:0}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;margin-left:0;margin-right:0;width:100%}.button,.button.disabled,.button.disabled:focus,.button.disabled:hover,.button[disabled],.button[disabled]:focus,.button[disabled]:hover{background-color:#1779ba;color:#fefefe}.button:focus,.button:hover{background-color:#14679e;color:#fefefe}.button.primary,.button.primary.disabled,.button.primary.disabled:focus,.button.primary.disabled:hover,.button.primary[disabled],.button.primary[disabled]:focus,.button.primary[disabled]:hover{background-color:#1779ba;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#126195;color:#fefefe}.button.secondary,.button.secondary.disabled,.button.secondary.disabled:focus,.button.secondary.disabled:hover,.button.secondary[disabled],.button.secondary[disabled]:focus,.button.secondary[disabled]:hover{background-color:#767676;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5e5e5e;color:#fefefe}.button.success,.button.success.disabled,.button.success.disabled:focus,.button.success.disabled:hover,.button.success[disabled],.button.success[disabled]:focus,.button.success[disabled]:hover{background-color:#3adb76;color:#0a0a0a}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#0a0a0a}.button.warning,.button.warning.disabled,.button.warning.disabled:focus,.button.warning.disabled:hover,.button.warning[disabled],.button.warning[disabled]:focus,.button.warning[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#0a0a0a}.button.alert,.button.alert.disabled,.button.alert.disabled:focus,.button.alert.disabled:hover,.button.alert[disabled],.button.alert[disabled]:focus,.button.alert[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#a53b2a;color:#fefefe}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow:focus,.button.hollow:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{background-color:transparent}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button.hollow:focus,.button.hollow:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.primary,.button.hollow.primary.disabled,.button.hollow.primary.disabled:focus,.button.hollow.primary.disabled:hover,.button.hollow.primary[disabled],.button.hollow.primary[disabled]:focus,.button.hollow.primary[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.secondary,.button.hollow.secondary.disabled,.button.hollow.secondary.disabled:focus,.button.hollow.secondary.disabled:hover,.button.hollow.secondary[disabled],.button.hollow.secondary[disabled]:focus,.button.hollow.secondary[disabled]:hover{border:1px solid #767676;color:#767676}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3b3b3b;color:#3b3b3b}.button.hollow.success,.button.hollow.success.disabled,.button.hollow.success.disabled:focus,.button.hollow.success.disabled:hover,.button.hollow.success[disabled],.button.hollow.success[disabled]:focus,.button.hollow.success[disabled]:hover{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning,.button.hollow.warning.disabled,.button.hollow.warning.disabled:focus,.button.hollow.warning.disabled:hover,.button.hollow.warning[disabled],.button.hollow.warning[disabled]:focus,.button.hollow.warning[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert,.button.hollow.alert.disabled,.button.hollow.alert.disabled:focus,.button.hollow.alert.disabled:hover,.button.hollow.alert[disabled],.button.hollow.alert[disabled]:focus,.button.hollow.alert[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#67251a;color:#67251a}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear:focus,.button.clear:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{background-color:transparent;border-color:transparent}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{color:#1779ba}.button.clear:focus,.button.clear:hover{color:#0c3d5d}.button.clear.primary,.button.clear.primary.disabled,.button.clear.primary.disabled:focus,.button.clear.primary.disabled:hover,.button.clear.primary[disabled],.button.clear.primary[disabled]:focus,.button.clear.primary[disabled]:hover{color:#1779ba}.button.clear.primary:focus,.button.clear.primary:hover{color:#0c3d5d}.button.clear.secondary,.button.clear.secondary.disabled,.button.clear.secondary.disabled:focus,.button.clear.secondary.disabled:hover,.button.clear.secondary[disabled],.button.clear.secondary[disabled]:focus,.button.clear.secondary[disabled]:hover{color:#767676}.button.clear.secondary:focus,.button.clear.secondary:hover{color:#3b3b3b}.button.clear.success,.button.clear.success.disabled,.button.clear.success.disabled:focus,.button.clear.success.disabled:hover,.button.clear.success[disabled],.button.clear.success[disabled]:focus,.button.clear.success[disabled]:hover{color:#3adb76}.button.clear.success:focus,.button.clear.success:hover{color:#157539}.button.clear.warning,.button.clear.warning.disabled,.button.clear.warning.disabled:focus,.button.clear.warning.disabled:hover,.button.clear.warning[disabled],.button.clear.warning[disabled]:focus,.button.clear.warning[disabled]:hover{color:#ffae00}.button.clear.warning:focus,.button.clear.warning:hover{color:#805700}.button.clear.alert,.button.clear.alert.disabled,.button.clear.alert.disabled:focus,.button.clear.alert.disabled:hover,.button.clear.alert[disabled],.button.clear.alert[disabled]:focus,.button.clear.alert[disabled]:hover{color:#cc4b37}.button.clear.alert:focus,.button.clear.alert:hover{color:#67251a}.button.disabled,.button[disabled]{cursor:not-allowed;opacity:.25}.button.dropdown:after{border-color:#fefefe transparent transparent;border-style:solid;border-width:.4em .4em 0;content:"";display:block;display:inline-block;float:right;height:0;margin-left:1em;position:relative;top:.4em;width:0}.button.dropdown.clear.primary:after,.button.dropdown.clear:after,.button.dropdown.hollow.primary:after,.button.dropdown.hollow:after{border-top-color:#1779ba}.button.dropdown.clear.secondary:after,.button.dropdown.hollow.secondary:after{border-top-color:#767676}.button.dropdown.clear.success:after,.button.dropdown.hollow.success:after{border-top-color:#3adb76}.button.dropdown.clear.warning:after,.button.dropdown.hollow.warning:after{border-top-color:#ffae00}.button.dropdown.clear.alert:after,.button.dropdown.hollow.alert:after{border-top-color:#cc4b37}.button.arrow-only:after{float:none;margin-left:0;top:-.1em}a.button:focus,a.button:hover{text-decoration:none}.button-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1rem;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.button-group:after,.button-group:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.button-group:after{clear:both}.button-group:after,.button-group:before{display:none}.button-group .button{font-size:.9rem;margin:0 1px 1px 0;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.button-group.primary .button,.button-group.primary .button.disabled,.button-group.primary .button.disabled:focus,.button-group.primary .button.disabled:hover,.button-group.primary .button[disabled],.button-group.primary .button[disabled]:focus,.button-group.primary .button[disabled]:hover{background-color:#1779ba;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#126195;color:#fefefe}.button-group.secondary .button,.button-group.secondary .button.disabled,.button-group.secondary .button.disabled:focus,.button-group.secondary .button.disabled:hover,.button-group.secondary .button[disabled],.button-group.secondary .button[disabled]:focus,.button-group.secondary .button[disabled]:hover{background-color:#767676;color:#fefefe}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#5e5e5e;color:#fefefe}.button-group.success .button,.button-group.success .button.disabled,.button-group.success .button.disabled:focus,.button-group.success .button.disabled:hover,.button-group.success .button[disabled],.button-group.success .button[disabled]:focus,.button-group.success .button[disabled]:hover{background-color:#3adb76;color:#0a0a0a}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#22bb5b;color:#0a0a0a}.button-group.warning .button,.button-group.warning .button.disabled,.button-group.warning .button.disabled:focus,.button-group.warning .button.disabled:hover,.button-group.warning .button[disabled],.button-group.warning .button[disabled]:focus,.button-group.warning .button[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button,.button-group.alert .button.disabled,.button-group.alert .button.disabled:focus,.button-group.alert .button.disabled:hover,.button-group.alert .button[disabled],.button-group.alert .button[disabled]:focus,.button-group.alert .button[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#a53b2a;color:#fefefe}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button:focus,.button-group.hollow .button:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{background-color:transparent}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button-group.hollow .button:focus,.button-group.hollow .button:hover{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow .button.primary,.button-group.hollow .button.primary.disabled,.button-group.hollow .button.primary.disabled:focus,.button-group.hollow .button.primary.disabled:hover,.button-group.hollow .button.primary[disabled],.button-group.hollow .button.primary[disabled]:focus,.button-group.hollow .button.primary[disabled]:hover,.button-group.hollow.primary .button,.button-group.hollow.primary .button.disabled,.button-group.hollow.primary .button.disabled:focus,.button-group.hollow.primary .button.disabled:hover,.button-group.hollow.primary .button[disabled],.button-group.hollow.primary .button[disabled]:focus,.button-group.hollow.primary .button[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button-group.hollow .button.primary:focus,.button-group.hollow .button.primary:hover,.button-group.hollow.primary .button:focus,.button-group.hollow.primary .button:hover{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow .button.secondary,.button-group.hollow .button.secondary.disabled,.button-group.hollow .button.secondary.disabled:focus,.button-group.hollow .button.secondary.disabled:hover,.button-group.hollow .button.secondary[disabled],.button-group.hollow .button.secondary[disabled]:focus,.button-group.hollow .button.secondary[disabled]:hover,.button-group.hollow.secondary .button,.button-group.hollow.secondary .button.disabled,.button-group.hollow.secondary .button.disabled:focus,.button-group.hollow.secondary .button.disabled:hover,.button-group.hollow.secondary .button[disabled],.button-group.hollow.secondary .button[disabled]:focus,.button-group.hollow.secondary .button[disabled]:hover{border:1px solid #767676;color:#767676}.button-group.hollow .button.secondary:focus,.button-group.hollow .button.secondary:hover,.button-group.hollow.secondary .button:focus,.button-group.hollow.secondary .button:hover{border-color:#3b3b3b;color:#3b3b3b}.button-group.hollow .button.success,.button-group.hollow .button.success.disabled,.button-group.hollow .button.success.disabled:focus,.button-group.hollow .button.success.disabled:hover,.button-group.hollow .button.success[disabled],.button-group.hollow .button.success[disabled]:focus,.button-group.hollow .button.success[disabled]:hover,.button-group.hollow.success .button,.button-group.hollow.success .button.disabled,.button-group.hollow.success .button.disabled:focus,.button-group.hollow.success .button.disabled:hover,.button-group.hollow.success .button[disabled],.button-group.hollow.success .button[disabled]:focus,.button-group.hollow.success .button[disabled]:hover{border:1px solid #3adb76;color:#3adb76}.button-group.hollow .button.success:focus,.button-group.hollow .button.success:hover,.button-group.hollow.success .button:focus,.button-group.hollow.success .button:hover{border-color:#157539;color:#157539}.button-group.hollow .button.warning,.button-group.hollow .button.warning.disabled,.button-group.hollow .button.warning.disabled:focus,.button-group.hollow .button.warning.disabled:hover,.button-group.hollow .button.warning[disabled],.button-group.hollow .button.warning[disabled]:focus,.button-group.hollow .button.warning[disabled]:hover,.button-group.hollow.warning .button,.button-group.hollow.warning .button.disabled,.button-group.hollow.warning .button.disabled:focus,.button-group.hollow.warning .button.disabled:hover,.button-group.hollow.warning .button[disabled],.button-group.hollow.warning .button[disabled]:focus,.button-group.hollow.warning .button[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button-group.hollow .button.warning:focus,.button-group.hollow .button.warning:hover,.button-group.hollow.warning .button:focus,.button-group.hollow.warning .button:hover{border-color:#805700;color:#805700}.button-group.hollow .button.alert,.button-group.hollow .button.alert.disabled,.button-group.hollow .button.alert.disabled:focus,.button-group.hollow .button.alert.disabled:hover,.button-group.hollow .button.alert[disabled],.button-group.hollow .button.alert[disabled]:focus,.button-group.hollow .button.alert[disabled]:hover,.button-group.hollow.alert .button,.button-group.hollow.alert .button.disabled,.button-group.hollow.alert .button.disabled:focus,.button-group.hollow.alert .button.disabled:hover,.button-group.hollow.alert .button[disabled],.button-group.hollow.alert .button[disabled]:focus,.button-group.hollow.alert .button[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button-group.hollow .button.alert:focus,.button-group.hollow .button.alert:hover,.button-group.hollow.alert .button:focus,.button-group.hollow.alert .button:hover{border-color:#67251a;color:#67251a}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button:focus,.button-group.clear .button:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{background-color:transparent;border-color:transparent}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{color:#1779ba}.button-group.clear .button:focus,.button-group.clear .button:hover{color:#0c3d5d}.button-group.clear .button.primary,.button-group.clear .button.primary.disabled,.button-group.clear .button.primary.disabled:focus,.button-group.clear .button.primary.disabled:hover,.button-group.clear .button.primary[disabled],.button-group.clear .button.primary[disabled]:focus,.button-group.clear .button.primary[disabled]:hover,.button-group.clear.primary .button,.button-group.clear.primary .button.disabled,.button-group.clear.primary .button.disabled:focus,.button-group.clear.primary .button.disabled:hover,.button-group.clear.primary .button[disabled],.button-group.clear.primary .button[disabled]:focus,.button-group.clear.primary .button[disabled]:hover{color:#1779ba}.button-group.clear .button.primary:focus,.button-group.clear .button.primary:hover,.button-group.clear.primary .button:focus,.button-group.clear.primary .button:hover{color:#0c3d5d}.button-group.clear .button.secondary,.button-group.clear .button.secondary.disabled,.button-group.clear .button.secondary.disabled:focus,.button-group.clear .button.secondary.disabled:hover,.button-group.clear .button.secondary[disabled],.button-group.clear .button.secondary[disabled]:focus,.button-group.clear .button.secondary[disabled]:hover,.button-group.clear.secondary .button,.button-group.clear.secondary .button.disabled,.button-group.clear.secondary .button.disabled:focus,.button-group.clear.secondary .button.disabled:hover,.button-group.clear.secondary .button[disabled],.button-group.clear.secondary .button[disabled]:focus,.button-group.clear.secondary .button[disabled]:hover{color:#767676}.button-group.clear .button.secondary:focus,.button-group.clear .button.secondary:hover,.button-group.clear.secondary .button:focus,.button-group.clear.secondary .button:hover{color:#3b3b3b}.button-group.clear .button.success,.button-group.clear .button.success.disabled,.button-group.clear .button.success.disabled:focus,.button-group.clear .button.success.disabled:hover,.button-group.clear .button.success[disabled],.button-group.clear .button.success[disabled]:focus,.button-group.clear .button.success[disabled]:hover,.button-group.clear.success .button,.button-group.clear.success .button.disabled,.button-group.clear.success .button.disabled:focus,.button-group.clear.success .button.disabled:hover,.button-group.clear.success .button[disabled],.button-group.clear.success .button[disabled]:focus,.button-group.clear.success .button[disabled]:hover{color:#3adb76}.button-group.clear .button.success:focus,.button-group.clear .button.success:hover,.button-group.clear.success .button:focus,.button-group.clear.success .button:hover{color:#157539}.button-group.clear .button.warning,.button-group.clear .button.warning.disabled,.button-group.clear .button.warning.disabled:focus,.button-group.clear .button.warning.disabled:hover,.button-group.clear .button.warning[disabled],.button-group.clear .button.warning[disabled]:focus,.button-group.clear .button.warning[disabled]:hover,.button-group.clear.warning .button,.button-group.clear.warning .button.disabled,.button-group.clear.warning .button.disabled:focus,.button-group.clear.warning .button.disabled:hover,.button-group.clear.warning .button[disabled],.button-group.clear.warning .button[disabled]:focus,.button-group.clear.warning .button[disabled]:hover{color:#ffae00}.button-group.clear .button.warning:focus,.button-group.clear .button.warning:hover,.button-group.clear.warning .button:focus,.button-group.clear.warning .button:hover{color:#805700}.button-group.clear .button.alert,.button-group.clear .button.alert.disabled,.button-group.clear .button.alert.disabled:focus,.button-group.clear .button.alert.disabled:hover,.button-group.clear .button.alert[disabled],.button-group.clear .button.alert[disabled]:focus,.button-group.clear .button.alert[disabled]:hover,.button-group.clear.alert .button,.button-group.clear.alert .button.disabled,.button-group.clear.alert .button.disabled:focus,.button-group.clear.alert .button.disabled:hover,.button-group.clear.alert .button[disabled],.button-group.clear.alert .button[disabled]:focus,.button-group.clear.alert .button[disabled]:hover{color:#cc4b37}.button-group.clear .button.alert:focus,.button-group.clear .button.alert:hover,.button-group.clear.alert .button:focus,.button-group.clear.alert .button:hover{color:#67251a}.button-group.no-gaps .button{margin-right:-.0625rem}.button-group.no-gaps .button+.button{border-left-color:transparent}.button-group.stacked,.button-group.stacked-for-medium,.button-group.stacked-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.button-group.stacked .button,.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%}.button-group.stacked .button:last-child,.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child{margin-bottom:0}.button-group.stacked-for-medium.expanded .button,.button-group.stacked-for-small.expanded .button,.button-group.stacked.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}@media print,screen and (min-width:40em){.button-group.stacked-for-small .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (min-width:64em){.button-group.stacked-for-medium .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (max-width:39.99875em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}@media print,screen and (max-width:63.99875em){.button-group.stacked-for-medium.expanded{display:block}.button-group.stacked-for-medium.expanded .button{display:block;margin-right:0}}.close-button{color:#8a8a8a;cursor:pointer;position:absolute;z-index:10}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.close-button.small{font-size:1.5em;line-height:1;right:.66rem;top:.33em}.close-button,.close-button.medium{font-size:2em;line-height:1;right:1rem;top:.5rem}.label{border-radius:0;cursor:default;display:inline-block;font-size:.8rem;line-height:1;padding:.33333rem .5rem;white-space:nowrap}.label,.label.primary{background:#1779ba;color:#fefefe}.label.secondary{background:#767676;color:#fefefe}.label.success{background:#3adb76;color:#0a0a0a}.label.warning{background:#ffae00;color:#0a0a0a}.label.alert{background:#cc4b37;color:#fefefe}.progress{background-color:#cacaca;border-radius:0;height:1rem;margin-bottom:1rem}.progress.primary .progress-meter{background-color:#1779ba}.progress.secondary .progress-meter{background-color:#767676}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#cc4b37}.progress-meter{background-color:#1779ba;display:block;height:100%;position:relative;width:0}.progress-meter-text{color:#fefefe;font-size:.75rem;font-weight:700;left:50%;margin:0;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);white-space:nowrap}.slider{background-color:#e6e6e6;cursor:pointer;height:.5rem;margin-bottom:2.25rem;margin-top:1.25rem;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.slider-fill{background-color:#cacaca;display:inline-block;height:.5rem;left:0;max-width:100%;position:absolute;top:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.slider-fill.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider-handle{background-color:#1779ba;border-radius:0;cursor:-webkit-grab;cursor:grab;display:inline-block;height:1.4rem;left:0;position:absolute;top:50%;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;width:1.4rem;z-index:1}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#14679e}.slider-handle.is-dragging{cursor:-webkit-grabbing;cursor:grabbing;-webkit-transition:all 0s linear;transition:all 0s linear}.slider.disabled,.slider[disabled]{cursor:not-allowed;opacity:.25}.slider.vertical{display:inline-block;height:12.5rem;margin:0 1.25rem;-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);width:.5rem}.slider.vertical .slider-fill{max-height:100%;top:0;width:.5rem}.slider.vertical .slider-handle{height:1.4rem;left:50%;position:absolute;top:0;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:1.4rem}.switch{color:#fefefe;font-size:.875rem;font-weight:700;height:2rem;margin-bottom:1rem;outline:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-input{margin-bottom:0;opacity:0;position:absolute}.switch-paddle{background:#cacaca;border-radius:0;color:inherit;cursor:pointer;display:block;font-weight:inherit;height:2rem;position:relative;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:4rem}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;border-radius:0;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:1.5rem}input:checked~.switch-paddle{background:#1779ba}input:checked~.switch-paddle:after{left:2.25rem}input:disabled~.switch-paddle{cursor:not-allowed;opacity:.5}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{display:none;left:8%}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{font-size:.625rem;height:1.5rem;width:3rem}.switch.tiny .switch-paddle:after{height:1rem;left:.25rem;top:.25rem;width:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{font-size:.75rem;height:1.75rem;width:3.5rem}.switch.small .switch-paddle:after{height:1.25rem;left:.25rem;top:.25rem;width:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{font-size:1rem;height:2.5rem;width:5rem}.switch.large .switch-paddle:after{height:2rem;left:.25rem;top:.25rem;width:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{border-collapse:collapse;border-radius:0;margin-bottom:1rem;width:100%}tbody,tfoot,thead{background-color:#fefefe;border:1px solid #f1f1f1}caption{font-weight:700;padding:.5rem .625rem .625rem}thead{background:#f8f8f8}tfoot,thead{color:#0a0a0a}tfoot{background:#f1f1f1}tfoot tr,thead tr{background:0 0}tfoot td,tfoot th,thead td,thead th{font-weight:700;padding:.5rem .625rem .625rem;text-align:left}tbody td,tbody th{padding:.5rem .625rem .625rem}tbody tr:nth-child(2n){background-color:#f1f1f1;border-bottom:0}table.unstriped tbody{background-color:#fefefe}table.unstriped tbody tr{background-color:#fefefe;border-bottom:1px solid #f1f1f1}@media print,screen and (max-width:63.99875em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;overflow-x:auto;width:100%}table.hover thead tr:hover{background-color:#f3f3f3}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f9f9}table.hover:not(.unstriped) tr:nth-of-type(2n):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.badge{border-radius:50%;display:inline-block;font-size:.6rem;min-width:2.1em;padding:.3em;text-align:center}.badge,.badge.primary{background:#1779ba;color:#fefefe}.badge.secondary{background:#767676;color:#fefefe}.badge.success{background:#3adb76;color:#0a0a0a}.badge.warning{background:#ffae00;color:#0a0a0a}.badge.alert{background:#cc4b37;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.breadcrumbs:after{clear:both}.breadcrumbs li{color:#0a0a0a;cursor:default;float:left;font-size:.6875rem;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"/";margin:0 .75rem;opacity:1;position:relative}.breadcrumbs a{color:#1779ba}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.callout{background-color:#fff;border:1px solid hsla(0,0%,4%,.25);border-radius:0;color:#0a0a0a;margin:0 0 1rem;padding:1rem;position:relative}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#d7ecfa;color:#0a0a0a}.callout.secondary{background-color:#eaeaea;color:#0a0a0a}.callout.success{background-color:#e1faea;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding:.5rem}.callout.large{padding:3rem}.card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;background:#fefefe;border:1px solid #e6e6e6;border-radius:0;-webkit-box-shadow:none;box-shadow:none;color:#0a0a0a;flex-grow:1;margin-bottom:1rem;overflow:hidden}.card>:last-child{margin-bottom:0}.card-divider{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;background:#e6e6e6;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;padding:1rem}.card-divider>:last-child{margin-bottom:0}.card-section{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;padding:1rem}.card-section>:last-child{margin-bottom:0}.card-image{min-height:1px}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:none;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:10}.dropdown-pane.is-opening{display:block}.dropdown-pane.is-open{display:block;visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.pagination{margin-bottom:1rem;margin-left:0}.pagination:after,.pagination:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.pagination:after{clear:both}.pagination li{border-radius:0;display:none;font-size:.875rem;margin-right:.0625rem}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media print,screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{border-radius:0;color:#0a0a0a;display:block;padding:.1875rem .625rem}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{background:#1779ba;color:#fefefe;cursor:default;padding:.1875rem .625rem}.pagination .disabled{color:#cacaca;cursor:not-allowed;padding:.1875rem .625rem}.pagination .disabled:hover{background:0 0}.pagination .ellipsis:after{color:#0a0a0a;content:"…";padding:.1875rem .625rem}.pagination-previous a:before,.pagination-previous.disabled:before{content:"«";display:inline-block;margin-right:.5rem}.pagination-next a:after,.pagination-next.disabled:after{content:"»";display:inline-block;margin-left:.5rem}.has-tip{border-bottom:1px dotted #8a8a8a;cursor:help;display:inline-block;font-weight:700;position:relative}.tooltip{background-color:#0a0a0a;border-radius:0;color:#fefefe;font-size:80%;max-width:10rem;padding:.75rem;top:calc(100% + .6495rem);z-index:1200}.tooltip,.tooltip:before{position:absolute}.tooltip.bottom:before{border-color:transparent transparent #0a0a0a;border-style:solid;border-width:0 .75rem .75rem;bottom:100%;content:"";display:block;height:0;width:0}.tooltip.bottom.align-center:before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem 0;bottom:auto;content:"";display:block;height:0;top:100%;width:0}.tooltip.top.align-center:before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-style:solid;border-width:.75rem 0 .75rem .75rem;content:"";display:block;height:0;left:100%;width:0}.tooltip.left.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem .75rem 0;content:"";display:block;height:0;left:auto;right:100%;width:0}.tooltip.right.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.align-top:before{bottom:auto;top:10%}.tooltip.align-bottom:before{bottom:10%;top:auto}.tooltip.align-left:before{left:10%;right:auto}.tooltip.align-right:before{left:auto;right:10%}.accordion{background:#fefefe;list-style-type:none;margin-left:0}.accordion[disabled] .accordion-title{cursor:not-allowed}.accordion-item:first-child>:first-child,.accordion-item:last-child>:last-child{border-radius:0}.accordion-title{border:1px solid #e6e6e6;border-bottom:0;color:#1779ba;display:block;font-size:.75rem;line-height:1;padding:1.25rem 1rem;position:relative}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:"+";margin-top:-.5rem;position:absolute;right:1rem;top:50%}.is-active>.accordion-title:before{content:"–"}.accordion-content{background-color:#fefefe;border:1px solid #e6e6e6;border-bottom:0;color:#0a0a0a;display:none;padding:1rem}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.media-object{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;margin-bottom:1rem}.media-object img{max-width:none}@media print,screen and (max-width:39.99875em){.media-object.stack-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.media-object-section{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}@media print,screen and (max-width:39.99875em){.stack-for-small .media-object-section{-webkit-flex-basis:100%;padding:0 0 1rem;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.stack-for-small .media-object-section img{width:100%}}.media-object-section.main-section{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.orbit,.orbit-container{position:relative}.orbit-container{height:0;list-style:none;margin:0;overflow:hidden}.orbit-slide{position:absolute;width:100%}.orbit-slide.no-motionui.is-active{left:0;top:0}.orbit-figure{margin:0}.orbit-image{margin:0;max-width:100%;width:100%}.orbit-caption{background-color:hsla(0,0%,4%,.5);bottom:0;margin-bottom:0;width:100%}.orbit-caption,.orbit-next,.orbit-previous{color:#fefefe;padding:1rem;position:absolute}.orbit-next,.orbit-previous{top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:10}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{margin-bottom:.8rem;margin-top:.8rem;position:relative;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{background-color:#cacaca;border-radius:50%;height:1.2rem;margin:.1rem;width:1.2rem}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.flex-video,.responsive-embed{height:0;margin-bottom:1rem;overflow:hidden;padding-bottom:75%;position:relative}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video,.responsive-embed embed,.responsive-embed iframe,.responsive-embed object,.responsive-embed video{height:100%;left:0;position:absolute;top:0;width:100%}.flex-video.widescreen,.responsive-embed.widescreen{padding-bottom:56.25%}.tabs{background:#fefefe;border:1px solid #e6e6e6;list-style-type:none;margin:0}.tabs:after,.tabs:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.tabs:after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:0 0}.tabs.primary{background:#1779ba}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#1673b1}.tabs-title{float:left}.tabs-title>a{color:#1779ba;display:block;font-size:.75rem;line-height:1;padding:1.25rem 1.5rem}[data-whatinput=mouse] .tabs-title>a{outline:0}.tabs-title>a:hover{background:#fefefe;color:#1468a0}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6;color:#1779ba}.tabs-content{background:#fefefe;border:1px solid #e6e6e6;border-top:0;color:#0a0a0a;-webkit-transition:all .5s ease;transition:all .5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;border-radius:0;-webkit-box-shadow:0 0 0 1px hsla(0,0%,4%,.2);box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;margin-bottom:1rem;max-width:100%}a.thumbnail{-webkit-transition:-webkit-box-shadow .2s ease-out;transition:-webkit-box-shadow .2s ease-out;transition:box-shadow .2s ease-out;transition:box-shadow .2s ease-out,-webkit-box-shadow .2s ease-out}a.thumbnail:focus,a.thumbnail:hover{-webkit-box-shadow:0 0 6px 1px rgba(23,121,186,.5);box-shadow:0 0 6px 1px rgba(23,121,186,.5)}a.thumbnail image{-webkit-box-shadow:none;box-shadow:none}.menu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:0;padding:0;position:relative}[data-whatinput=mouse] .menu li{outline:0}.menu .button,.menu a{display:block;line-height:1;padding:.7rem 1rem;text-decoration:none}.menu a,.menu button,.menu input,.menu select{margin-bottom:0}.menu input{display:inline-block}.menu,.menu.horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.vertical.icon-bottom li a i,.menu.vertical.icon-bottom li a img,.menu.vertical.icon-bottom li a svg,.menu.vertical.icon-top li a i,.menu.vertical.icon-top li a img,.menu.vertical.icon-top li a svg{text-align:left}.menu.expanded li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.menu.expanded.icon-bottom li a i,.menu.expanded.icon-bottom li a img,.menu.expanded.icon-bottom li a svg,.menu.expanded.icon-top li a i,.menu.expanded.icon-top li a img,.menu.expanded.icon-top li a svg{text-align:left}.menu.simple{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.menu.simple li+li{margin-left:1rem}.menu.simple a{padding:0}@media print,screen and (min-width:40em){.menu.medium-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.medium-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.medium-expanded li,.menu.medium-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}@media print,screen and (min-width:64em){.menu.large-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.large-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.large-expanded li,.menu.large-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}.menu.nested{margin-left:1rem;margin-right:0}.menu.icon-bottom a,.menu.icon-left a,.menu.icon-right a,.menu.icon-top a,.menu.icons a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu.icon-left li a,.menu.nested.icon-left li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-left li a i,.menu.icon-left li a img,.menu.icon-left li a svg,.menu.nested.icon-left li a i,.menu.nested.icon-left li a img,.menu.nested.icon-left li a svg{margin-right:.25rem}.menu.icon-right li a,.menu.nested.icon-right li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-right li a i,.menu.icon-right li a img,.menu.icon-right li a svg,.menu.nested.icon-right li a i,.menu.nested.icon-right li a img,.menu.nested.icon-right li a svg{margin-left:.25rem}.menu.icon-top li a,.menu.nested.icon-top li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-top li a i,.menu.icon-top li a img,.menu.icon-top li a svg,.menu.nested.icon-top li a i,.menu.nested.icon-top li a img,.menu.nested.icon-top li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu.icon-bottom li a,.menu.nested.icon-bottom li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-bottom li a i,.menu.icon-bottom li a img,.menu.icon-bottom li a svg,.menu.nested.icon-bottom li a i,.menu.nested.icon-bottom li a img,.menu.nested.icon-bottom li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu .active>a,.menu .is-active>a{background:#1779ba;color:#fefefe}.menu.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.menu.align-right li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right.vertical li{display:block;text-align:right}.menu.align-right.icon-bottom li a i,.menu.align-right.icon-bottom li a img,.menu.align-right.icon-bottom li a svg,.menu.align-right.icon-top li a i,.menu.align-right.icon-top li a img,.menu.align-right.icon-top li a svg,.menu.align-right.vertical li .submenu li{text-align:right}.menu.align-right .nested{margin-left:0;margin-right:1rem}.menu.align-center li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu.align-center li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu .menu-text{color:inherit;font-weight:700;line-height:1;padding:.7rem 1rem}.menu-centered>.menu,.menu-centered>.menu li{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu-centered>.menu li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu-centered>.menu li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.no-js [data-responsive-menu] ul{display:none}.menu-icon{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon:after{background:#fefefe;-webkit-box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon:hover:after{background:#cacaca;-webkit-box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.menu-icon.dark{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon.dark:after{background:#0a0a0a;-webkit-box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon.dark:hover:after{background:#8a8a8a;-webkit-box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.accordion-menu li{width:100%}.accordion-menu .is-accordion-submenu a,.accordion-menu a{padding:.7rem 1rem}.accordion-menu .nested.is-accordion-submenu{margin-left:1rem;margin-right:0}.accordion-menu.align-right .nested.is-accordion-submenu{margin-left:0;margin-right:1rem}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a{position:relative}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;margin-top:-3px;position:absolute;right:1rem;top:50%;width:0}.accordion-menu.align-left .is-accordion-submenu-parent>a:after{left:auto;right:1rem}.accordion-menu.align-right .is-accordion-submenu-parent>a:after{left:1rem;right:auto}.accordion-menu .is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.is-accordion-submenu-parent{position:relative}.has-submenu-toggle>a{margin-right:40px}.submenu-toggle{cursor:pointer;height:40px;position:absolute;right:0;top:0;width:40px}.submenu-toggle:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;bottom:0;content:"";display:block;height:0;margin:auto;top:0;width:0}.submenu-toggle[aria-expanded=true]:after{-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.submenu-toggle-text{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.is-drilldown{overflow:hidden;position:relative}.is-drilldown li{display:block}.is-drilldown.animate-height{-webkit-transition:height .5s;transition:height .5s}.drilldown a{background:#fefefe;padding:.7rem 1rem}.drilldown .is-drilldown-submenu{background:#fefefe;left:100%;position:absolute;top:0;-webkit-transition:-webkit-transform .15s linear;transition:-webkit-transform .15s linear;transition:transform .15s linear;transition:transform .15s linear,-webkit-transform .15s linear;width:100%;z-index:-1}.drilldown .is-drilldown-submenu.is-active{display:block;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);z-index:1}.drilldown .is-drilldown-submenu.is-closing{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.drilldown .is-drilldown-submenu a{padding:.7rem 1rem}.drilldown .nested.is-drilldown-submenu{margin-left:0;margin-right:0}.drilldown .drilldown-submenu-cover-previous{min-height:100%}.drilldown .is-drilldown-submenu-parent>a{position:relative}.drilldown .is-drilldown-submenu-parent>a:after{margin-top:-6px;position:absolute;top:50%}.drilldown .is-drilldown-submenu-parent>a:after,.drilldown.align-left .is-drilldown-submenu-parent>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;right:1rem;width:0}.drilldown.align-left .is-drilldown-submenu-parent>a:after{left:auto}.drilldown.align-right .is-drilldown-submenu-parent>a:after{left:1rem;right:auto}.drilldown .js-drilldown-back>a:before,.drilldown.align-right .is-drilldown-submenu-parent>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;width:0}.drilldown .js-drilldown-back>a:before{display:inline-block;margin-right:.75rem;vertical-align:middle}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}[data-whatinput=mouse] .dropdown.menu a{outline:0}.dropdown.menu>li>a{padding:.7rem 1rem}.dropdown.menu>li.is-active>a{background:0 0;color:#1779ba}.no-js .dropdown.menu ul{display:none}.dropdown.menu .nested.is-dropdown-submenu{margin-left:0;margin-right:0}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.vertical>li>a:after{right:14px}.dropdown.menu.vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}@media print,screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.medium-vertical>li>a:after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}@media print,screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.large-vertical>li>a:after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{left:auto;right:0;top:100%}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{left:auto;margin-top:-6px;position:absolute;right:5px;top:50%}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{left:auto;top:100%}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{left:100%;right:auto}.is-dropdown-submenu{background:#fefefe;border:1px solid #cacaca;display:none;left:100%;min-width:200px;position:absolute;top:0;z-index:1}.dropdown .is-dropdown-submenu a{padding:.7rem 1rem}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{background:hsla(0,0%,100%,.25);height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;-webkit-transition:opacity .5s ease,visibility .5s ease;transition:opacity .5s ease,visibility .5s ease;visibility:hidden;width:100%;z-index:11}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{overflow:hidden;position:relative}.off-canvas{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:fixed;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.is-transition-push{z-index:12}.off-canvas.is-closed{visibility:hidden}.off-canvas.is-transition-overlap{z-index:13}.off-canvas.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-absolute{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:absolute;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-push{z-index:12}.off-canvas-absolute.is-closed{visibility:hidden}.off-canvas-absolute.is-transition-overlap{z-index:13}.off-canvas-absolute.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas-absolute.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.position-left{height:100%;left:0;overflow-y:auto;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-left,.position-left{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-left.has-transition-push{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.position-left.is-transition-push{-webkit-box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25)}.position-right{height:100%;overflow-y:auto;right:0;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-right,.position-right{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-right.has-transition-push{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.position-right.is-transition-push{-webkit-box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25)}.position-top{left:0;overflow-x:auto;top:0;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-top,.position-top{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-top.has-transition-push{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.position-top.is-transition-push{-webkit-box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25)}.position-bottom{bottom:0;left:0;overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-bottom,.position-bottom{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-bottom.has-transition-push{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.position-bottom.is-transition-push{-webkit-box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25)}.off-canvas-content{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-transition-overlap,.off-canvas-content.has-transition-push{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.off-canvas-content .off-canvas.is-open,.off-canvas-content.has-transition-push{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}@media print,screen and (min-width:40em){.position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-medium .close-button{display:none}.off-canvas-content .position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-medium .close-button{display:none}.off-canvas-content .position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-medium .close-button{display:none}.off-canvas-content .position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-medium~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-medium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-medium~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:64em){.position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-large .close-button{display:none}.off-canvas-content .position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-large .close-button{display:none}.off-canvas-content .position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}.position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-large .close-button{display:none}.off-canvas-content .position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-large~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-large .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-large~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:40em){.off-canvas.in-canvas-for-medium{background:0 0;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-medium.position-bottom,.off-canvas.in-canvas-for-medium.position-left,.off-canvas.in-canvas-for-medium.position-right,.off-canvas.in-canvas-for-medium.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-medium .close-button{display:none}}@media print,screen and (min-width:64em){.off-canvas.in-canvas-for-large{background:0 0;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-large.position-bottom,.off-canvas.in-canvas-for-large.position-left,.off-canvas.in-canvas-for-large.position-right,.off-canvas.in-canvas-for-large.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-large .close-button{display:none}}html.is-reveal-open{overflow-y:hidden;position:fixed;width:100%}html.is-reveal-open.zf-has-scroll{overflow-y:scroll;-webkit-overflow-scrolling:touch}html.is-reveal-open body{overflow-y:hidden}.reveal-overlay{background-color:hsla(0,0%,4%,.45);bottom:0;left:0;position:fixed;right:0;top:0;z-index:1005}.reveal,.reveal-overlay{display:none;overflow-y:auto;-webkit-overflow-scrolling:touch}.reveal{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;margin-left:auto;margin-right:auto;padding:1rem;position:relative;top:100px;z-index:1006}[data-whatinput=mouse] .reveal{outline:0}@media print,screen and (min-width:40em){.reveal{min-height:0}}.reveal .column{min-width:0}.reveal>:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.reveal{max-width:75rem;width:600px}}.reveal.collapse{padding:0}@media print,screen and (min-width:40em){.reveal.tiny{max-width:75rem;width:30%}.reveal.small{max-width:75rem;width:50%}.reveal.large{max-width:75rem;width:90%}}.reveal.full{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}@media print,screen and (max-width:39.99875em){.reveal{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}}.reveal.without-overlay{position:fixed}.sticky,.sticky-container{position:relative}.sticky{-webkit-transform:translateZ(0);transform:translateZ(0);z-index:0}.sticky.is-stuck{position:fixed;width:100%;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{left:auto;position:relative;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.title-bar{background:#0a0a0a;color:#fefefe;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left,.title-bar-right{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{display:inline-block;font-weight:700;vertical-align:middle}.top-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.5rem}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{margin-right:1rem;max-width:200px}.top-bar .input-group-field{margin-right:0;width:100%}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}@media print,screen and (min-width:40em){.top-bar{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.top-bar .top-bar-left{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:auto}.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;margin-left:auto}}@media print,screen and (max-width:63.99875em){.top-bar.stacked-for-medium{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media print,screen and (max-width:74.99875em){.top-bar.stacked-for-large{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.top-bar-title{margin:.5rem 1rem .5rem 0}.top-bar-left,.top-bar-right,.top-bar-title{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.clearfix:after{clear:both}.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.align-spaced{-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.align-left.vertical.menu>li>a{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right.vertical.menu>li>a{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center.vertical.menu>li>a{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-top{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.align-self-top{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.align-bottom{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.align-self-bottom{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.align-middle{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.align-self-middle{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.align-stretch{-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.align-self-stretch{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch}.align-center-middle{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-webkit-align-content:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.small-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.small-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.small-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.small-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.small-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.small-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}@media print,screen and (min-width:40em){.medium-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.medium-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.medium-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.medium-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.medium-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.medium-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}@media print,screen and (min-width:64em){.large-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.large-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.large-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.large-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.large-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.large-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}.flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}@media print,screen and (min-width:40em){.medium-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.medium-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.medium-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.medium-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.medium-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.medium-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.medium-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.medium-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media print,screen and (min-width:64em){.large-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.large-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.large-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.large-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.large-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.large-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.large-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.large-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.hide{display:none!important}.invisible{visibility:hidden}.visible{visibility:visible}@media print,screen and (max-width:39.99875em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media print,screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.99875em){.show-for-medium{display:none!important}}@media print,screen and (min-width:40em)and (max-width:63.99875em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.99875em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media print,screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.99875em){.show-for-large{display:none!important}}@media print,screen and (min-width:64em)and (max-width:74.99875em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.99875em),screen and (min-width:75em){.show-for-large-only{display:none!important}}.show-for-sr,.show-on-focus{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.show-on-focus:active,.show-on-focus:focus{height:auto!important;overflow:visible!important;position:static!important;width:auto!important;clip:auto!important;white-space:normal!important}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.show-for-dark-mode{display:none}.hide-for-dark-mode{display:block}@media screen and (prefers-color-scheme:dark){.show-for-dark-mode{display:block!important}.hide-for-dark-mode{display:none!important}}.show-for-ie{display:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.show-for-ie{display:block!important}.hide-for-ie{display:none!important}}.show-for-sticky{display:none}.is-stuck .show-for-sticky{display:block}.is-stuck .hide-for-sticky{display:none}@font-face{font-family:fonticon;src:url(data:font/ttf;base64,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AG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAAFcmFkaW8McmFkaW8tYWN0aXZlFmNoZWNrYm94LWluZGV0ZXJtaW5hdGUIY2hlY2tib3gPY2hlY2tib3gtYWN0aXZlBHN3YXAGdW5mb2xkB2FjY291bnQDYWRkCWFwYXJ0bWVudAphcnJvdy1sZWZ0CmFycm93LWRvd24OYXJyb3ctZHJvcGRvd24MYXJyb3ctZHJvcHVwC2Fycm93LXJpZ2h0CGFycm93LXVwBWJlYWNoB3JlZnJlc2gOY2FsZW5kYXItdG9kYXkNY2FuY2VsLWZpbGxlZBNjaGVjay1jaXJjbGUtZmlsbGVkDGNoZWNrLWNpcmNsZQVjaGVjawxjaGV2cm9uLWxlZnQNY2hldnJvbi1yaWdodAZjYW5jZWwFY2xvdWQKY29sbGVjdGlvbgRjb3B5A2N1dAVwYXN0ZQpjcmVkaXRjYXJkCGNhbGVuZGFyBmRlbGV0ZQhkb3dubG9hZAV0aXRsZQltYWlsLW9wZW4EZWRpdAVlcnJvcg1lcnJvci1vdXRsaW5lCmNoZXZyb24tdXAMY2hldnJvbi1kb3duBWhlYXJ0BHNvcnQGZm9sZGVyFUZvcm1hdEFsaWduTGVmdEZpbGxlZARob21lBWluYm94BGluZm8MaW5mby1vdXRsaW5lBmxheWVycwhsb2NhdGlvbgRsb2NrBmxvZ291dARtYWlsDG1haWwtb3V0bGluZQRtZW51B21vbml0b3IPbW9yZS1ob3Jpem9udGFsDW1vcmUtdmVydGljYWwMbm90aWZpY2F0aW9uBm5ld3RhYgV1c2VycwhhZGQtdXNlcgR1c2VyBXBob25lBXBob3RvDXBob3RvLW91dGxpbmUEcGxheQtwbGF5LWNpcmNsZQVjbG9jawZ1bmxvY2sIZGF0YWJhc2UHbmV0d29yaxBkYXNoYm9hcmQtZmlsbGVkCHNldHRpbmdzC3N0YXItZmlsbGVkDHN0YXItb3V0bGluZQttYWludGVuYW5jZQRzZW5kBG5leHQIcHJldmlvdXMPd2FybmluZy1vdXRsaW5lElZpZXdIZWFkbGluZUZpbGxlZAp1bml2ZXJzaXR5BXVzYWdlBGhlbHAHd2FybmluZwdzdXBwb3J0BnNlYXJjaARsb2dzEWRhc2hib2FyZC1vdXRsaW5lEHN0YXItaGFsZi1maWxsZWQHbW9kdWxlcwR3b3JrBnVwbG9hZAR3aWZpBXRoZW1lBXNsYWNrCWRvY3MtbWFpbA5kb2NzLWNvbW11bml0eRBkb2NzLW9wZW4tc291cmNlD2RvY3MtZW50ZXJwcmlzZQ9kb2NzLWFsdGVybmF0b3INZG9jcy1vcGVyYXRvcgxkb2NzLW1hbmFnZXIPZG9jcy1tb25pdG9yaW5nEmRvY3MtY2hldnJvbi1yaWdodAlkb2NzLWluZm8MZG9jcy13YXJuaW5nEWRvY3MtY2hldnJvbi1sZWZ0EmRvY3MtbWVudS1jb2xsYXBzZRBkb2NzLXRodW1icy1kb3duDmRvY3MtdGh1bWJzLXVwBmdpdGh1YghpbnN0YW5jZQVwYXVzZQRzdG9wBXJlc2V0A2V5ZQ5zdGFjay1vdmVyZmxvdxBkb2NzLW5zcWwtZ3VpZGVzCmRvY3MtY2xvdWQUZG9jcy1nZXR0aW5nLXN0YXJ0ZWQJZG9jcy1ibG9nD2RvY3MtY29udHJpYnV0ZQ1kb2NzLXRyYWluaW5nDWRvY3MtY29tbWFuZHMSZG9jcy1jb25maWd1cmF0aW9uEWRvY3MtZW50ZXJwcmlzZS1tAAAAAA==) format("truetype"),url(data:application/vnd.ms-fontobject;base64,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AGUAYQB0AGUAIABiAHkAIABpAGMAbwBuADIAZgBvAG4AdAAgADwAQQBiAGQAZQBsAGgAYQBrAGkAbQAgAFIAQQBGAEkASwA+AGYAbwBuAHQAaQBjAG8AbgBSAGUAZwB1AGwAYQByAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AGkAYwBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAGYAbwBuAHQAaQBjAG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAAFcmFkaW8McmFkaW8tYWN0aXZlFmNoZWNrYm94LWluZGV0ZXJtaW5hdGUIY2hlY2tib3gPY2hlY2tib3gtYWN0aXZlBHN3YXAGdW5mb2xkB2FjY291bnQDYWRkCWFwYXJ0bWVudAphcnJvdy1sZWZ0CmFycm93LWRvd24OYXJyb3ctZHJvcGRvd24MYXJyb3ctZHJvcHVwC2Fycm93LXJpZ2h0CGFycm93LXVwBWJlYWNoB3JlZnJlc2gOY2FsZW5kYXItdG9kYXkNY2FuY2VsLWZpbGxlZBNjaGVjay1jaXJjbGUtZmlsbGVkDGNoZWNrLWNpcmNsZQVjaGVjawxjaGV2cm9uLWxlZnQNY2hldnJvbi1yaWdodAZjYW5jZWwFY2xvdWQKY29sbGVjdGlvbgRjb3B5A2N1dAVwYXN0ZQpjcmVkaXRjYXJkCGNhbGVuZGFyBmRlbGV0ZQhkb3dubG9hZAV0aXRsZQltYWlsLW9wZW4EZWRpdAVlcnJvcg1lcnJvci1vdXRsaW5lCmNoZXZyb24tdXAMY2hldnJvbi1kb3duBWhlYXJ0BHNvcnQGZm9sZGVyFUZvcm1hdEFsaWduTGVmdEZpbGxlZARob21lBWluYm94BGluZm8MaW5mby1vdXRsaW5lBmxheWVycwhsb2NhdGlvbgRsb2NrBmxvZ291dARtYWlsDG1haWwtb3V0bGluZQRtZW51B21vbml0b3IPbW9yZS1ob3Jpem9udGFsDW1vcmUtdmVydGljYWwMbm90aWZpY2F0aW9uBm5ld3RhYgV1c2VycwhhZGQtdXNlcgR1c2VyBXBob25lBXBob3RvDXBob3RvLW91dGxpbmUEcGxheQtwbGF5LWNpcmNsZQVjbG9jawZ1bmxvY2sIZGF0YWJhc2UHbmV0d29yaxBkYXNoYm9hcmQtZmlsbGVkCHNldHRpbmdzC3N0YXItZmlsbGVkDHN0YXItb3V0bGluZQttYWludGVuYW5jZQRzZW5kBG5leHQIcHJldmlvdXMPd2FybmluZy1vdXRsaW5lElZpZXdIZWFkbGluZUZpbGxlZAp1bml2ZXJzaXR5BXVzYWdlBGhlbHAHd2FybmluZwdzdXBwb3J0BnNlYXJjaARsb2dzEWRhc2hib2FyZC1vdXRsaW5lEHN0YXItaGFsZi1maWxsZWQHbW9kdWxlcwR3b3JrBnVwbG9hZAR3aWZpBXRoZW1lBXNsYWNrCWRvY3MtbWFpbA5kb2NzLWNvbW11bml0eRBkb2NzLW9wZW4tc291cmNlD2RvY3MtZW50ZXJwcmlzZQ9kb2NzLWFsdGVybmF0b3INZG9jcy1vcGVyYXRvcgxkb2NzLW1hbmFnZXIPZG9jcy1tb25pdG9yaW5nEmRvY3MtY2hldnJvbi1yaWdodAlkb2NzLWluZm8MZG9jcy13YXJuaW5nEWRvY3MtY2hldnJvbi1sZWZ0EmRvY3MtbWVudS1jb2xsYXBzZRBkb2NzLXRodW1icy1kb3duDmRvY3MtdGh1bWJzLXVwBmdpdGh1YghpbnN0YW5jZQVwYXVzZQRzdG9wBXJlc2V0A2V5ZQ5zdGFjay1vdmVyZmxvdxBkb2NzLW5zcWwtZ3VpZGVzCmRvY3MtY2xvdWQUZG9jcy1nZXR0aW5nLXN0YXJ0ZWQJZG9jcy1ibG9nD2RvY3MtY29udHJpYnV0ZQ1kb2NzLXRyYWluaW5nDWRvY3MtY29tbWFuZHMSZG9jcy1jb25maWd1cmF0aW9uEWRvY3MtZW50ZXJwcmlzZS1tAAAAAA==) format("embedded-opentype"),url(data:font/woff;base64,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) format("woff")}[class*=" icon-addon-"]:before,[class^=icon-addon-]:before{clip-path:polygon(0 0,100% 0,100% 59%,95.5% 54.5%,88% 50.3%,80% 48.5%,71% 49.2%,64% 52%,58% 56%,53% 62%,50% 69%,48.8% 79%,50.5% 87%,55% 95%,60% 100%,0 100%)}.admonition-title:before,.icon,.search-box:before,.secondary-side-nav__content li a:before,.side-nav__content .scylla-icon--expand,[class*=" icon-"],[class^=icon-]{font-family:fonticon!important;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400!important;vertical-align:middle}.icon-radio:before{content:""}.icon-radio-active:before{content:""}.icon-checkbox-indeterminate:before{content:""}.icon-checkbox:before{content:""}.icon-checkbox-active:before{content:""}.icon-swap:before{content:""}.icon-unfold:before{content:""}.icon-account:before{content:""}.icon-add:before{content:""}.icon-apartment:before{content:""}.icon-arrow-left:before{content:""}.icon-arrow-down:before{content:""}.icon-arrow-dropdown:before{content:""}.icon-arrow-dropup:before{content:""}.icon-arrow-right:before{content:""}.icon-arrow-up:before{content:""}.icon-beach:before{content:""}.icon-refresh:before{content:""}.icon-calendar-today:before{content:""}.icon-cancel-filled:before{content:""}.icon-check-circle-filled:before{content:""}.icon-check-circle:before{content:""}.icon-check:before{content:""}.icon-chevron-left:before{content:""}.icon-chevron-right:before{content:""}.icon-cancel:before{content:""}.icon-cloud:before{content:""}.icon-collection:before{content:""}.icon-copy:before{content:""}.icon-cut:before{content:""}.icon-paste:before{content:""}.icon-creditcard:before{content:""}.icon-calendar:before{content:""}.icon-delete:before{content:""}.icon-download:before{content:""}.icon-title:before{content:""}.icon-mail-open:before{content:""}.icon-edit:before{content:""}.icon-error:before{content:""}.icon-error-outline:before{content:""}.icon-chevron-up:before{content:""}.icon-chevron-down:before{content:""}.icon-heart:before{content:""}.icon-sort:before{content:""}.icon-folder:before{content:""}.icon-FormatAlignLeftFilled:before{content:""}.icon-home:before{content:""}.icon-inbox:before{content:""}.icon-info:before{content:""}.icon-info-outline:before{content:""}.icon-layers:before{content:""}.icon-location:before{content:""}.icon-lock:before{content:""}.icon-logout:before{content:""}.icon-mail:before{content:""}.icon-mail-outline:before{content:""}.icon-menu:before{content:""}.icon-monitor:before{content:""}.icon-more-horizontal:before{content:""}.icon-more-vertical:before{content:""}.icon-notification:before{content:""}.icon-newtab:before{content:""}.icon-users:before{content:""}.icon-add-user:before{content:""}.icon-user:before{content:""}.icon-phone:before{content:""}.icon-photo:before{content:""}.icon-photo-outline:before{content:""}.icon-play:before{content:""}.icon-play-circle:before{content:""}.icon-clock:before{content:""}.icon-unlock:before{content:""}.icon-database:before{content:""}.icon-network:before{content:""}.icon-dashboard-filled:before{content:""}.icon-settings:before{content:""}.icon-star-filled:before{content:""}.icon-star-outline:before{content:""}.icon-maintenance:before{content:""}.icon-send:before{content:""}.icon-next:before{content:""}.icon-previous:before{content:""}.icon-warning-outline:before{content:""}.icon-ViewHeadlineFilled:before{content:""}.icon-university:before{content:""}.icon-usage:before{content:""}.icon-help:before{content:""}.icon-warning:before{content:""}.icon-support:before{content:""}.icon-search:before{content:""}.icon-logs:before{content:""}.icon-dashboard-outline:before{content:""}.icon-star-half-filled:before{content:""}.icon-modules:before{content:""}.icon-work:before{content:""}.icon-upload:before{content:""}.icon-wifi:before{content:""}.icon-theme:before{content:""}.icon-slack:before{content:""}.icon-docs-mail:before{content:""}.icon-docs-community:before{content:""}.icon-docs-open-source:before{content:""}.icon-docs-enterprise:before{content:""}.icon-docs-alternator:before{content:""}.icon-docs-operator:before{content:""}.icon-docs-manager:before{content:""}.icon-docs-monitoring:before{content:""}.icon-docs-chevron-right:before{content:""}.icon-docs-info:before{content:""}.icon-docs-warning:before{content:""}.icon-docs-chevron-left:before{content:""}.icon-docs-menu-collapse:before{content:""}.icon-docs-thumbs-down:before{content:""}.icon-docs-thumbs-up:before{content:""}.icon-github:before{content:""}.icon-instance:before{content:""}.icon-pause:before{content:""}.icon-stop:before{content:""}.icon-reset:before{content:""}.icon-eye:before{content:""}.icon-stack-overflow:before{content:""}.icon-docs-nsql-guides:before{content:""}.icon-docs-cloud:before{content:""}.icon-docs-getting-started:before{content:""}.icon-docs-blog:before{content:""}.icon-docs-contribute:before{content:""}.icon-docs-training:before{content:""}.icon-docs-commands:before{content:""}.icon-docs-configuration:before{content:""}.icon-docs-enterprise-m:before{content:""}:root{--white:#fff;--gray-50:#f7fcfc;--gray-100:#edf5f7;--gray-200:#d8e5eb;--gray-300:#c3d5de;--gray-400:#aec0cf;--gray-500:#95a7ba;--gray-600:#7b8ba2;--gray-700:#616d87;--gray-800:#4b546f;--gray-900:#383d57;--gray-950:#2f324b;--black:#23263b;--primary:#42c4e6;--secondary:#3a2d55;--success:#43a047;--info:#1976d2;--warning:#ffab00;--danger:#ce291f;--link-color:#3c4fe0;--link-color-hover:#3c4fe0;--text-color:#23263b;--code-color:#23263b;--text-emphasis:#23263b;--text-muted:#95a7ba;--border-color:#f1f1f1;--header-border:#4458a3;--bg-color:#fefefe;--well-bg:#f7f8f9;--navigation-bg:#f6f8ff;--card-bg:var(--white);--admonition:#6f7071;--scollbar-bg:#b3bac5;--tooltip-bg:#383d57;--shadow-lg:0px 4px 25px rgba(0,0,0,.15);--border-width:1px;--border-radius:5px;--border-radius-md:8px;--line-number:#5a7184;--logo-url:"../img/logo-scylla-horizontal-color.svg"}.dark{--primary:#42c4e6;--secondary:#3a2d55;--success:#43a047;--info:#1976d2;--warning:#ffab00;--danger:#ce291f;--link-color:#42c4e6;--link-color-hover:#42c4e6;--text-color:var(--gray-200);--code-color:var(--gray-200);--text-emphasis:var(--white);--text-muted:var(--gray-300);--border-color:var(--gray-800);--header-border:#4458a3;--bg-color:var(--black);--well-bg:#1e2031;--navigation-bg:#1e2031;--card-bg:var(--gray-950);--admonition:var(--gray-400);--logo-url:"../img/logo-scylla-horizontal-light.svg"}html{box-sizing:border-box;scroll-padding-top:100px}body{background-color:var(--bg-color);color:var(--text-color);font-family:Roboto,sans-serif;font-size:16px;line-height:1}*,:after,:before{box-sizing:inherit}a{color:var(--link-color)}a.reference:after{font-family:FontAwesome;font-size:12px;padding:0 4px}a.reference.external:after{content:""}a.reference.download:after{content:""}a:hover{color:var(--link-color-hover);font-weight:500}.headerlink{margin-left:5px;visibility:hidden}.toc-backref:hover{color:var(--black)}h1,h2,h3,h4,h5,h6{font-family:Roboto,sans-serif;font-size:16px;font-weight:500;letter-spacing:.2px;line-height:24px;margin-bottom:16px}h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{visibility:visible}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}h1{font-size:32px;font-weight:700;line-height:40px;margin-bottom:28px}h2{font-size:24px;line-height:32px}h3{font-size:20px}h4{font-size:18px}h5{font-size:16px}h6{font-weight:400}img{max-width:100%}button:focus{outline:0}blockquote{border:0;margin:0;padding:0}blockquote,blockquote p,cite{color:inherit}cite{display:inline;font-size:inherit}cite:before{content:""}.show{display:block!important}.centered{display:block;margin:0 auto}.break{flex-basis:100%;height:0}@media screen and (min-width:1024px){h1{font-size:36px}}.dark .highlight .c{color:#6272a4}.dark .highlight .err,.dark .highlight .g{color:#f8f8f2}.dark .highlight .k{color:#ff79c6}.dark .highlight .l,.dark .highlight .n{color:#f8f8f2}.dark .highlight .o{color:#ff79c6}.dark .highlight .p,.dark .highlight .x{color:#f8f8f2}.dark .highlight .ch,.dark .highlight .cm{color:#6272a4}.dark .highlight .cp{color:#ff79c6}.dark .highlight .c1,.dark .highlight .cpf,.dark .highlight .cs{color:#6272a4}.dark .highlight .gd{color:#8b080b}.dark .highlight .ge{color:#f8f8f2;text-decoration:underline}.dark .highlight .gr{color:#f8f8f2}.dark .highlight .gh,.dark .highlight .gi{color:#f8f8f2;font-weight:700}.dark .highlight .go{color:#dfdfe6}.dark .highlight .gp,.dark .highlight .gs{color:#f8f8f2}.dark .highlight .gu{color:#f8f8f2;font-weight:700}.dark .highlight .gt{color:#f8f8f2}.dark .highlight .kc{color:#ff79c6}.dark .highlight .kd{color:#8be9fd;font-style:italic}.dark .highlight .kn,.dark .highlight .kp,.dark .highlight .kr{color:#ff79c6}.dark .highlight .kt{color:#8be9fd}.dark .highlight .ld{color:#f8f8f2}.dark .highlight .m{color:#bd93f9}.dark .highlight .s{color:#f1fa8c}.dark .highlight .na{color:#50fa7b}.dark .highlight .nb{color:#8be9fd;font-style:italic}.dark .highlight .nc{color:#50fa7b}.dark .highlight .nd,.dark .highlight .ne,.dark .highlight .ni,.dark .highlight .no{color:#f8f8f2}.dark .highlight .nf{color:#50fa7b}.dark .highlight .nl{color:#8be9fd;font-style:italic}.dark .highlight .nn,.dark .highlight .nx,.dark .highlight .py{color:#f8f8f2}.dark .highlight .nt{color:#ff79c6}.dark .highlight .nv{color:#8be9fd;font-style:italic}.dark .highlight .ow{color:#ff79c6}.dark .highlight .w{color:#f8f8f2}.dark .highlight .mb,.dark .highlight .mf,.dark .highlight .mh,.dark .highlight .mi,.dark .highlight .mo{color:#bd93f9}.dark .highlight .dl,.dark .highlight .s1,.dark .highlight .s2,.dark .highlight .sa,.dark .highlight .sb,.dark .highlight .sc,.dark .highlight .sd,.dark .highlight .se,.dark .highlight .sh,.dark .highlight .si,.dark .highlight .sr,.dark .highlight .ss,.dark .highlight .sx{color:#f1fa8c}.dark .highlight .bp{color:#f8f8f2;font-style:italic}.dark .highlight .fm{color:#50fa7b}.dark .highlight .vc,.dark .highlight .vg,.dark .highlight .vi,.dark .highlight .vm{color:#8be9fd;font-style:italic}.dark .highlight .il{color:#bd93f9}.contents.local>ul>li .dark a:before,.dark .contents.local>ul>li a:before,.dark .scylla-icon{filter:brightness(0) saturate(100%) invert(100%) sepia(4%) saturate(10%) hue-rotate(140deg) brightness(106%) contrast(100%)}.contents.local>ul>li a:before,.scylla-icon{background-repeat:no-repeat;background-size:contain;display:inline-block;filter:brightness(0);vertical-align:middle}.scylla-icon--about-team{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMntzdHJva2UtbGluZWNhcDpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik00LjY2IDkuODEgMi42MyAxMWEyLjA4IDIuMDggMCAwIDAtMS4xMyAxLjgzdjcuODFjLjE5IDEuMTEuNSAxLjUzIDEuNSAxLjQ3TTcuMDYgOS45NGwxLjQ0Ljk0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMy41IDE4LjV2NS4zNE05LjUgMTguNXY1LjM0TTguNTQgMTguNDJ2NS4zM00xNS41IDE4LjV2NS4zNE0xNi41IDE4LjV2NS4zNE0zLjMzIDIwLjUzaDUuMDhNMTEuNDUgOC44NGwuMDYuMDZhMS42NSAxLjY1IDAgMCAwIDIuMzQgMGgwIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJNMTIuNDIgNy41YTEuODEgMS44MSAwIDAgMS0xLjkyLTEuNzdWNWExLjk0IDEuOTQgMCAwIDEgMS45Mi0yIDIuMDcgMi4wNyAwIDAgMSAyLjA4IDJ2Ljc3YTIgMiAwIDAgMS0yLjA4IDEuNzNaTTExLjQyIDguNzQgOS42MyA5LjlhMi4wNyAyLjA3IDAgMCAwLTEuMTMgMS44NXY3LjgyQTEuNDcgMS40NyAwIDAgMCAxMCAyMU0xMy43NSA5LjE4bDIgLjY1Yy43LjM1Ljc2IDEuMDYuNzYgMS44NHY3LjljMCAuNzctLjIzIDEuMjQtMSAxLjI0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNOS45MyAxOS41aDUuNCIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTE5LjQyIDkuMTJhMi4wNyAyLjA3IDAgMCAwIDIuMDgtMS45M3YtLjc3YTIuMDcgMi4wNyAwIDAgMC0yLjA4LTEuOTIgMS45MyAxLjkzIDAgMCAwLTEuOTIgMS45MnYuNzdhMS45NCAxLjk0IDAgMCAwIDEuOTIgMS45M1pNNS41OSA5LjEyYTEuOTMgMS45MyAwIDAgMCAxLjkyLTEuOTN2LS43N0ExLjkzIDEuOTMgMCAwIDAgNS41OSA0LjUgMi4wOCAyLjA4IDAgMCAwIDMuNSA2LjQydi43N2EyLjA4IDIuMDggMCAwIDAgMi4wOSAxLjkzWk0yMC40NCA5LjgxbDIgMS4xN2EyLjA2IDIuMDYgMCAwIDEgMS4xMyAxLjg1djcuODFjLS4xOCAxLjExLS40NyAxLjUzLTEuNDcgMS40N00xOC4wNCA5Ljk0bC0xLjQ0LjkzIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMjEuNiAxOC41djUuMzRNMjEuNzcgMjAuNTNoLTUuMDgiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--about-us{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6LjhweH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNi4yOCAxOS40OGMtLjEyLjA4LS4wOC4wNy0uMjMuMS0uNTguMDktMS4xMi0uMjgtMS4yNS0uODQgMCAwLTIuMy05LjE4LTIuMy0xMS4xMUMyLjUgMy42IDUuODguNDQgMTAuMzguNDRTMTcuNSAzLjQ4IDE3LjUgNy41YzAgMS45My0xLjMyIDExLjIzLTEuMzIgMTEuMjMtLjEzLjU2LS42Ny45NC0xLjI1Ljg0LS4xMi0uMDItLjEzIDAtLjIzLS4wNyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1Ljc1IDE1Ljc1Yy0uMTcgMS4xNS0uMjIgMi4zNC0uNTUgMy40Ni0uMzcuODUtMS42MyAxLjA2LTIuMjIuMzMtLjI1LS4yOC4xOS0uNjguNDQtLjQuNDMuNDYgMS4yNC4xOCAxLjMxLS40NGwuMDYtLjM0Yy4xOS0uODkuMzUtMS43OS41Ny0yLjY4LjA1LS4yNC40Mi0uMTcuMzkuMDciLz48cGF0aCBkPSJNMTEuNSA3YzAgMS45LTEuNTYgMy41LTMuNDYgMy41UzQuNSA4LjkgNC41IDdzMS42NC0zLjUgMy41NC0zLjVTMTEuNSA1LjEgMTEuNSA3IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNOC41NSA0Ljc1Yy0uNTkuMTItLjcxIDEuNDItLjM2IDEuNzguMjMuMjMuNzEuMzEuNzEuNDdzLS40OC4yNC0uNzEuNDdjLS4zNi4zNi0uMjQgMS42Ni4zNiAxLjc4LjcxLjE0IDEuNzgtLjcxIDEuNzgtMi4yNVM5LjI2IDQuNjEgOC41NSA0Ljc1TTYuNTEgMTIuMmMyLjEyLjMxIDQuMzQtLjIgNS42OC0xLjk2LjMyLS40MS45Ni4xMS42Mi41MS0uNzYuOS0xLjc4IDEuNjMtMi45MyAxLjk1LTEuMTQuMzMtMi4zMy4zMS0zLjQ2LjE2YS4zNC4zNCAwIDAgMS0uMjktLjM4Yy4wMi0uMTguMTktLjMxLjM3LS4yOVpNNy45NyAxOS41OWMtLjk5Ljk2LTIuMzYuMDgtMi4zNi0xLjE1LS4xMi0uOS0uMjctMS43OS0uMzctMi42OS0uMDEtLjExLjA3LS4yMS4xOC0uMjIuMS0uMDEuMTkuMDYuMjEuMTUuMjIuODguMzggMS43Ny41NiAyLjY2LjAxLjc4LjY4IDEuMzggMS4zNS44My4yNy0uMjcuNjkuMTYuNDIuNDNaIi8+PHBhdGggZD0iTTkuNzUgMTkuMjdjLS40Mi45LTEuOC45Ni0yLjMyLjExLS41LTEuMTMtLjMxLTIuNS0uNDctMy43MiAwLS4xMS4wOC0uMi4xOS0uMjEuMSAwIC4xOS4wNy4yMS4xNy4xNy45NS4yOCAxLjkxLjQyIDIuODcuMDEuNDUuMjMuNzQuNTcuODUuMzMuMS43MS0uMDUuODgtLjM2LjE4LS4zNC43MS0uMDUuNTIuMjlNMTQuMDMgMTUuNjZjLS4xNiAxLjIzLjAzIDIuNTctLjQ2IDMuNzItLjUyLjg2LTEuOTEuNzktMi4zMi0uMTEtLjE3LS4zNC4zNS0uNjEuNTMtLjI4LjQyLjcxIDEuNDguMzggMS40NS0uNDkuMTQtLjk2LjI1LTEuOTIuNDItMi44Ny4wNC0uMjQuNDEtLjIuNC4wNFoiLz48cGF0aCBkPSJNMTEuODUgMTUuNTRjLjAyLjc5LjAxIDEuNTguMDEgMi4zNy0uMDIuNDEuMDcuOS0uMTQgMS4yOS0uNDMgMS4wMi0yLjAxIDEuMDItMi40NSAwLS4yMS0uMzktLjEzLS44OS0uMTQtMS4yOSAwLS43OSAwLTEuNTguMDEtMi4zNyAwLS4xMS4xLS4yLjIxLS4xOS4xIDAgLjE4LjA4LjE5LjE4LjA3Ljc5LjEgMS41OC4xNSAyLjM3LjAzLjI3IDAgLjgyLjEzIDEuMDQuMTMuMjYuNC40My42OC40Mi40NiAwIC43OS0uNC43Ny0uODdsLjAzLS41OWMuMDQtLjc5LjA4LTEuNTguMTUtMi4zNy4wMi0uMjQuNC0uMjMuNC4wMSIvPjwvc3ZnPg==)}.scylla-icon--about-us-m{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNi4zOCAzMi40MyI+PHBhdGggZD0iTTYuNTUgMzEuNjRjLS4yLjEzLS40My4yMi0uNjkuMjZhMS44MSAxLjgxIDAgMCAxLTIuMDYtMS4zOVMuNDkgMTQuOTkuNDkgMTEuODJDLjUgNS4xOSA1Ljc3LjUgMTMuMTkuNXMxMi42OSA0LjY5IDEyLjY5IDExLjMyYzAgMy4xOC0zLjMxIDE4LjY5LTMuMzEgMTguNjlhMS44MSAxLjgxIDAgMCAxLTIuNjIgMS4yIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIvPjxwYXRoIGQ9Ik0yMS44NiAyNS4zNmMtLjI4IDEuOS0uMzcgMy44Ni0uOTEgNS43MS0uNjEgMS40MS0yLjY4IDEuNzUtMy42Ni41NS0uNDEtLjQ3LjMxLTEuMTEuNzMtLjY2LjcxLjc2IDIuMDQuMjkgMi4xNi0uNzMuMzItMS42Ni42NS0zLjMzIDEuMDQtNC45OC4wOS0uMzkuNy0uMjguNjUuMTFaIi8+PHBhdGggZD0iTTE0LjggMTAuNTdjMCAzLjEzLTIuNTMgNS42Ni01LjY2IDUuNjZzLTUuNDctMi41My01LjQ3LTUuNjYgMi4zNC01LjY2IDUuNDctNS42NiA1LjY2IDIuNTMgNS42NiA1LjY2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6LjlweCIvPjxwYXRoIGQ9Ik0xMC4zMSA2Ljg2Yy0uOTguMi0xLjE3IDIuMzQtLjU5IDIuOTMuMzguMzggMS4xNy41MSAxLjE3Ljc4cy0uNzkuNC0xLjE3Ljc4Yy0uNTkuNTktLjM5IDIuNzMuNTkgMi45MyAxLjE2LjIzIDIuOTMtMS4xNyAyLjkzLTMuNzFzLTEuNzYtMy45NC0yLjkzLTMuNzFNNi44MiAxOC41MWMzLjQ5Ljg5IDYuOTctLjUgOS41MS0yLjkzLjQ3LS40NCAxLjE2LjMxLjY4Ljc0LTEuMzggMS4yMy0yLjk4IDIuMjktNC43OSAyLjg3LTEuOC41OS0zLjc3LjU4LTUuNTguMTRhLjQyLjQyIDAgMCAxLS4zMS0uNWMuMDUtLjIyLjI4LS4zNi41LS4zMVoiLz48cGF0aCBkPSJNMTYuNzMgMTYuNjdjLS4xMi0uNDYtLjUxLS44My0uOTktLjgzLS43NS0uMDItLjU5LTEuMTcuMTQtLjk5LjgxLjE2IDEuNDMuODUgMS41IDEuNjYuMDguNC0uNTQuNTQtLjY1LjE1Wk05LjAzIDMxLjdjLTEuMjYgMS4zNi0zLjYyLjQ1LTMuOC0xLjM1bC0uMDktLjU1Yy0uMjEtMS40OC0uNDUtMi45NS0uNi00LjQ0LS4wMi0uMTguMTEtLjM0LjI5LS4zNi4xNy0uMDIuMzIuMDkuMzUuMjUuMzkgMS42My43MSAzLjI4IDEuMDMgNC45My4wOSAxLjAyIDEuMzggMS41NCAyLjEyLjgxLjQ1LS40NCAxLjE0LjI2LjY5LjdaIi8+PHBhdGggZD0iTTExLjk2IDMxLjE2Yy0xIDEuOTgtNC4wNCAxLjMtNC4yMS0uODgtLjE1LTEuNjktLjMtMy4zOC0uMzktNS4wNyAwLS4xOC4xMy0uMzQuMzEtLjM0LjE3IDAgLjMxLjExLjM0LjI3LjI4IDEuNjcuNSAzLjM1LjcyIDUuMDMuMDkgMS4yIDEuNzcgMS41OSAyLjM2LjUxLjMxLS41NiAxLjE2LS4wOS44Ny40N1pNMTkuMDMgMjUuMjFjLS4wOCAxLjY5LS4yNCAzLjM4LS4zOSA1LjA3LS4wNC4zNy0uMTcuNzUtLjM4IDEuMDYtLjg2IDEuNC0zLjExIDEuMzEtMy44My0uMTctLjMtLjU2LjU1LTEuMDMuODYtLjQ4LjU5IDEuMDggMi4yNy42OSAyLjM1LS41Mi4yMi0xLjY4LjQzLTMuMzYuNzItNS4wMy4wNi0uNC42OC0uMzMuNjUuMDdaIi8+PHBhdGggZD0iTTE1LjQzIDI1LjAyYy4wNCAxLjMxLjAyIDIuNjEuMDIgMy45MS0uMDMuNjcuMTEgMS40OC0uMjMgMi4xMy0uNzQgMS42OS0zLjI5IDEuNjktNC4wMyAwLS4zNC0uNjUtLjIxLTEuNDctLjI0LTIuMTMgMC0xLjMtLjAyLTIuNjEuMDItMy45MSAwLS4xOC4xNi0uMzIuMzQtLjMyLjE3IDAgLjMuMTQuMzIuMy4xMSAxLjMuMTcgMi42LjI0IDMuOTEuMDUuNDUgMCAxLjM1LjIxIDEuNzIuMjEuNDMuNjYuNzEgMS4xMi43LjQ2LjAyLjkxLS4yNyAxLjEyLS42OS4yMi0uMzYuMTYtMS4yOC4yMS0xLjcyLjA3LTEuMy4xMy0yLjYxLjI0LTMuOTEuMDItLjQuNjYtLjM4LjY2LjAyWiIvPjwvc3ZnPg==)}.scylla-icon--alternator{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMTcuNSAyLjkxYzAgMS4yOC0zLjY3IDIuNTktOCAyLjU5cy04LTEuMzEtOC0yLjU5UzUuMDkuNSA5LjQyLjVzOC4wOCAxLjEzIDguMDggMi40MU0xNy41IDcuNjZjMCAxLjI4LTMuNjMgMi44LTcuOTYgMi44UzEuNSA4LjkzIDEuNSA3LjY2TTE3LjUgMTIuNDdjMCAxLjI4LTMuNjcgMy4wMy04IDMuMDNzLTgtMS43NS04LTMuMDNNMTcuNSAxNy4yOWMwIDEuMjgtMy43NSAyLjMtOC4wOCAyLjNzLTcuOTItMS4wMy03LjkyLTIuM00xLjUgMTcuMTlWMi45MU0xNy41IDE3LjE5VjIuOTEiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--apps{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTS41IDEuNWgyMHYxNEguNXpNNy41IDE1Ljc0djIuODlNMTIuODMgMTUuNjN2Mi4zMk01LjUgMTguNWg5LjE0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMy42NCA1LjU2IDQuNTggMi45MS00LjU4IDIuOTJNOS4xIDEyLjA4aDQuMzIiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--architecture{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTIsLmNscy01e2ZpbGw6bm9uZTtzdHJva2U6Z3JheX0uY2xzLTF7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMiwuY2xzLTV7c3Ryb2tlLW1pdGVybGltaXQ6MTB9LmNscy0ye3N0cm9rZS13aWR0aDouOThweH0uY2xzLTV7c3Ryb2tlLXdpZHRoOi45OXB4fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0iTTEuOSAxMC4yN2ExMC44MyAxMC44MyAwIDAgMSA4LjczLTguMzhNMTAuNTEgMjMuMDhBMTAuNzkgMTAuNzkgMCAwIDEgMS43NyAxNE0yMy4yMyAxNGExMC44MSAxMC44MSAwIDAgMS05IDkuMTFNMTQuMjcgMS44OGExMC44MSAxMC44MSAwIDAgMSA4LjgzIDguMzciIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjEyLjI1IiBjeT0iMS43NSIgcj0iMS43NSIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iMTIuMjUiIGN5PSIyMi43NSIgcj0iMS43NSIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iNC45MiIgY3k9IjQuNzUiIHI9IjEuNzUiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOi45OXB4Ii8+PGNpcmNsZSBjeD0iMjAuMDkiIGN5PSIxOS45MSIgcj0iMS43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk5cHgiLz48Y2lyY2xlIGN4PSIxLjc1IiBjeT0iMTIuMjUiIHI9IjEuNzUiIGNsYXNzPSJjbHMtNSIvPjxjaXJjbGUgY3g9IjIzLjI1IiBjeT0iMTIuMjUiIHI9IjEuNzUiIGNsYXNzPSJjbHMtNSIvPjxjaXJjbGUgY3g9IjQuNzUiIGN5PSIxOS42NCIgcj0iMS43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk5cHgiLz48Y2lyY2xlIGN4PSIxOS45MSIgY3k9IjQuNDgiIHI9IjEuNzUiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOi45OXB4Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--benchmarks{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDozcHh9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV8yIiBkYXRhLW5hbWU9IkNhbHF1ZSAyIj48cGF0aCBkPSJNNS41MSAyNC45MXYtNS44NU0xMi41NyAyNC45MXYtOS43NE0xOS42MiAyNC45MVYxMC4xNSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibS45MSAxNC45OCA1LjEzLTcuOTQgNi4yNSA1Ljg4TDI0IDEiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1saW5lY2FwOnJvdW5kIi8+PHBhdGggZD0ibTI1IDUtNS01aDV6IiBzdHlsZT0iZmlsbDpncmF5Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTkgMTUtMi41LTEuNSA4LTEyTDE3IDN6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNi41IDEzLjUtLjUgM0w5IDE1eiIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTkuMjUgMi41aDQuMjV2MTZoLTEzdjQuMTdMNi40NiAxOC41bC00Ljk2LS4wNFYyLjVoOC4zMU0xNC41IDIuNWwxLjY3IDEuMzMiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--careers{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTEuNSAxMS41NXY4YzAgLjU2IDEuMDcgMiAyIDJoMThjLjg5IDAgMi0xLjQ0IDItMnYtOCIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTIzLjMxIDMuNUgxLjgxYy0uNDggMC0xLjMxLjU1LTEuMzEgMXY2bDEwIDJhOC40NSA4LjQ1IDAgMCAwIDQgMGwxMC0ydi02YzAtLjQ1LS43Mi0xLTEuMTktMU0xNS42MiAzLjV2LTFjMC0uNzYtLjYxLTEtMS4zOC0xaC0zLjQ1Yy0uNzYgMC0xLjM4LjI0LTEuMzggMXYxIiBjbGFzcz0iY2xzLTEiLz48cmVjdCB3aWR0aD0iNSIgaGVpZ2h0PSIzLjk5IiB4PSIxMCIgeT0iMTEiIHJ4PSIuNTUiIHJ5PSIuNTUiIHN0eWxlPSJmaWxsOmdyYXkiLz48L3N2Zz4=)}.scylla-icon--chevron-left{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTguMDkyIDE2IDEwIDE0LjExMyAzLjgxNyA4IDEwIDEuODg3IDguMDkyIDAgMCA4eiIvPjwvc3ZnPg==)}.contents.local>ul>li a:before,.scylla-icon--chevron-right{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTEuOTA4IDAgMCAxLjg4NyA2LjE4MyA4IDAgMTQuMTEzIDEuOTA4IDE2IDEwIDh6Ii8+PC9zdmc+)}.scylla-icon--circe{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzOCAzMCI+PGRlZnM+PHN0eWxlPi5jbHMtMiwuY2xzLTN7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH0uY2xzLTN7c3Ryb2tlLXdpZHRoOjEuMTFweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik0yMi4xIDEyaC02LjE2YTEuMDYgMS4wNiAwIDAgMS0uOTQtMS4wNy45My45MyAwIDAgMSAuOTQtLjkzaDYuMTZhLjkzLjkzIDAgMCAxIC45NC45M0ExLjA2IDEuMDYgMCAwIDEgMjIuMSAxMiIgc3R5bGU9ImZpbGw6IzRkNGQ0ZCIvPjxwYXRoIGQ9Ik0xMy40NCA0LjQ5SDkuNTF2MjRoMTl2LTI0SDI0LjUiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0xMyAzLjQ5SDguNWwtLjA4IDI2LjFIMjkuNVYzLjM5SDI1IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNMTIuNSAxOC4zOGgxM00xMi41IDE1LjQ5aDEzTTEyLjUgMjEuNDNoMTNNMTIuNSAyNC40N2gxM00xMy41IDIuNWgxMXYzLjk4aC0xMXoiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0yMS41LjVoLTUuMDR2MS45NWw1LjA0LjA1eiIgY2xhc3M9ImNscy0zIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--clock{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PGNpcmNsZSBjeD0iMTAuNSIgY3k9IjkuNSIgcj0iOSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTEwLjUgMy41djZsMy4wNiAzIiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNCIgaGVpZ2h0PSIzNCIgZmlsbD0ibm9uZSI+PGcgZmlsbD0iI2ZmZiIgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBkPSJNMTEuNjcgMjIuMTNhLjU2NC41NjQgMCAwIDEtLjM5OC0uOTYybDkuODk2LTkuODk2YS41NjMuNTYzIDAgMSAxIC43OTcuNzk3bC05Ljg5NiA5Ljg5NmEuNTYuNTYgMCAwIDEtLjM5OS4xNjUiLz48cGF0aCBkPSJNMjEuNTY2IDIyLjEzYS41Ni41NiAwIDAgMS0uMzk4LS4xNjVsLTkuODk2LTkuODk2YS41NjMuNTYzIDAgMSAxIC43OTctLjc5N2w5Ljg5NiA5Ljg5NWEuNTY0LjU2NCAwIDAgMS0uMzk5Ljk2MyIvPjxwYXRoIGQ9Ik0xNi42MTkgMzMuMjM3QzcuNDU1IDMzLjIzNyAwIDI1Ljc4MiAwIDE2LjYxOVM3LjQ1NSAwIDE2LjYxOSAwczE2LjYxOSA3LjQ1NSAxNi42MTkgMTYuNjE5LTcuNDU2IDE2LjYxOC0xNi42MiAxNi42MThtMC0zMi4xMWMtOC41NDIgMC0xNS40OTIgNi45NS0xNS40OTIgMTUuNDkyUzguMDc3IDMyLjExIDE2LjYxOSAzMi4xMSAzMi4xMSAyNS4xNiAzMi4xMSAxNi42MTkgMjUuMTYgMS4xMjcgMTYuNjE5IDEuMTI3Ii8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgzMy4yMzd2MzMuMjM3SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+)}.scylla-icon--cloud{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8yIiB2aWV3Qm94PSIwIDAgNDMuMDQgMzIuMDMiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMWQxZDFiO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iTGF5ZXJfMyI+PHBhdGggZD0iTTQyLjU0IDQuMDZjMCAxLjY4LTMuNjMgMi40NC05IDIuNDRzLTEwLS43My0xMC0yLjRTMjcuNjcuNSAzMy4wNC41czkuNSAxLjg5IDkuNSAzLjU2TTQyLjU0IDkuNjNjMCAxLjY4LTMuNzYgMi45MS05LjEyIDIuOTFzLTkuODQtMS4yMy05Ljg0LTIuOTFNNDIuNTQgMTUuMzRjMCAxLjY4LTMuNjggMy4yNS05LjA0IDMuMjUtNCAwLTcuNi0uOTYtOS4wOS0yLjA0TTQyLjU0IDIwLjY1YzAgMS42OC0zLjcyIDIuOTctOS4wOCAyLjk3TTIzLjU0IDE1LjQ2VjQuMU00Mi41NCAyMC43N1Y0LjEiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0yOC4xMSAyMS4wOGMtLjg3IDAtMS42Ny4yMy0yLjM5LjYxIDAtLjA3LjAxLS4xNC4wMS0uMjEgMC00Ljg1LTMuODMtOC45LTguNjgtOC45cy04Ljg4IDQuMDUtOC44OCA4LjljMCAuMTcuMDIuMzQuMDMuNTEtLjg0LS41Ny0xLjg1LS45MS0yLjk1LS45MS0yLjg4IDAtNC43NCAyLjU3LTQuNzQgNS40NnMxLjg2IDQuOTkgNC43NCA0Ljk5aDIyLjg2YzIuODggMCA1LjUyLTIuMjcgNS41Mi01LjE2cy0yLjYzLTUuMjktNS41Mi01LjI5IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--cloud-docs{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTYuNSAxMS41aDh2MWgtOHpNMTUuNjUgNi41NWEzLjQyIDMuNDIgMCAwIDAtMy4xNSAyIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTAuMDYgMi44QTUuMTcgNS4xNyAwIDAgMSAxNSA2LjM1aC4yNGE0Ljg0IDQuODQgMCAwIDEgMCA5LjY3aC0xMWEzLjQ1IDMuNDUgMCAwIDEgMC02LjlBMy4yIDMuMiAwIDAgMSA1IDkuMiA1LjMgNS4zIDAgMCAxIDQuODYgOGE1LjIgNS4yIDAgMCAxIDUuMi01LjJtMC0uOGE2IDYgMCAwIDAtNiA2di4zMWE0LjI1IDQuMjUgMCAwIDAgLjE4IDguNDloMTFhNS42MyA1LjYzIDAgMCAwIC4zLTExLjI2QTYgNiAwIDAgMCAxMC4wNiAyIiBzdHlsZT0iZmlsbDojNGQ0ZDRkIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--comparison{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTIsLmNscy00e2ZpbGw6bm9uZTtzdHJva2U6Z3JheX0uY2xzLTEsLmNscy0ye3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMiwuY2xzLTR7c3Ryb2tlLWxpbmVjYXA6cm91bmR9LmNscy00e3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik00LjUgMTMuNjN2Mi44OGg2LjA2TTIwLjUgMTMuNTR2Mi45NmwtNS41LjAxIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTIuNSAxOC41djIuNzJNNy41IDIxLjVoMTAiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjEyLjUiIGN5PSIxNi41IiByPSIyIiBzdHlsZT0ic3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7ZmlsbDpncmF5O3N0cm9rZS13aWR0aDouOTVweCIvPjxwYXRoIGQ9Ik01LjA2IDEzLjU4SDMuODhBMy4xIDMuMSAwIDAgMSAuNSAxMC41aDhhMy4xNiAzLjE2IDAgMCAxLTMuNDQgMy4wOE0yMSAxMy41OGgtMS4xN2EzLjA5IDMuMDkgMCAwIDEtMy4zNy0zLjA3aDhBMy4xNiAzLjE2IDAgMCAxIDIxIDEzLjU4TTcuNDYgNS4xMmMwIC41Ny0xLjEuNDYtMi43OS40NlMxLjU4IDUuNiAxLjU4IDUgMyA0LjQgNC42OSA0LjRzMi43Ny4xNiAyLjc3LjcyTTEuNSA5Ljg1VjUuMzFNNy41IDEwLjM1VjUuODFNMjMuNSA1LjEyYzAgLjU3LTEuMS40Ni0yLjc5LjQ2cy0zLjA5IDAtMy4wOS0uNTRTMTkgNC40IDIwLjczIDQuNHMyLjc3LjE2IDIuNzcuNzJNMTcuNTQgOS44NVY1LjMxTTIzLjU0IDEwLjM1VjUuODEiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.scylla-icon--contact-us{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDZweH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJtNi4yOTggMTAuMTggMTMuODMtNy4xOTcgNC42NzYgOC45ODYtMTMuODMgNy4xOTd6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNi4zIDEwLjE4IDguNjMgMS41NmExLjQyIDEuNDIgMCAwIDAgMS41My0uNzRsMy42Ny04TTExLjAyIDE5LjAzbDEuNzQtNU0yNC41OSAxMS45N2wtNS4wOS0xLjQ1TTcuMDkgMTcuNTggMy45IDE5LjM0TTYuMDYgMTUuNDEuNTQgMTguMzYiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--developers-blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJtNi40OCAxMC41OS0uNS4xNy41LjE2TDExIDEyLjE2VjE0bC03LTIuNDlWMTBsNy0yLjV2MS44M1pNMTQgOS4zMlY3LjVsNyAyLjV2MS41NEwxNCAxNHYtMS44M2w0LjE0LTEuMy40NC0uMTMtLjQzLS4xNFoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0xLjUgMi41aDIydjE2aC0xM3Y0LjE3TDYuNDYgMTguNWwtNC45Ni0uMDR6IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6Ljk4cHgiLz48L2c+PC9zdmc+)}.scylla-icon--docs{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNMy41IDIuNTFoMTYuOTR2MjAuOTFIMy41eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTIyLjQ1IDIxLjUuMDUtMjFoLTE3YTIuMTYgMi4xNiAwIDAgMC0yIDIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik02IDZoN3YySDZ6TTYgOWgxMXYySDZ6IiBjbGFzcz0iY2xzLTIiLz48L2c+PC9zdmc+)}.scylla-icon--enterprise{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTEsLmNscy0ye2ZpbGw6bm9uZTtzdHJva2U6IzAwMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye3N0cm9rZS13aWR0aDoxLjA3cHh9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0ibTEzLjYyIDcuNSAxLjg4LTEuMDggMiAyLjA4djdoMU0xNS41IDE1LjV2LTUiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik01LjUgMTUuNXYtMTJsNC0yIDQgMnYxMk05LjUgMTUuNVYxLjZNNy41IDUuNXYxME0xMS41IDUuNXYxMCIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTUuNSA4LjU0IDMuNDYgNy41bC0xLjk2Ljk2djcuMDRoLTFNMy41IDEwLjV2NU0uNSAxNy41aDE4IiBjbGFzcz0iY2xzLTEiLz48L3N2Zz4=)}.scylla-icon--enterprise-m{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIGlkPSJMYXllcl8yXzAwMDAwMDE2NzY4MDY2MDE5MjYzMjMyNzcwMDAwMDA1NDc1ODA5NTExODI4NjY2MDM2XyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQzIDMxIj48c3R5bGU+LnN0MHtmaWxsOm5vbmU7c3Ryb2tlOiMxZDFkMWI7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PGcgaWQ9IkxheWVyXzMiPjxwYXRoIGQ9Im0yOS42IDkuNSA0LTIgNi45IDQuMXYxNS45aDJNMzMuNiAyNy41VjcuNk0xNC42IDI3LjVWNC44TDIyLjUuNSAyOS42IDV2MjIuNU0yMi41IDI3LjVWMU0yNC41IDUuNmwzIDJNMjQuNSA5LjZsMyAyTTI0LjUgMTMuNmwzIDJNMjQuNSAxNy41bDMgMk0yNC41IDIxLjVsMyAyTTM1LjQgMTEuNmwzIDJNMzUuNCAxNS42bDMgMS45TTM1LjQgMTkuNWwzIDJNMzUuNCAyMy41bDMgMS45TTE4LjUgNS44djIxLjdNMTQuNiA5LjdsLTQuMS0yLjUtOCA0LjR2MTUuOWgtMk0xMC41IDI3LjVWNy4yTTEyLjUgMTEuNmwyIDFNMTIuNSAxNS42bDIgLjlNMTIuNSAxOS41bDIgMU0xMi41IDIzLjVsMi4xIDFNNi40IDEyLjR2MTUuMU0uNSAzMC41aDQyIiBjbGFzcz0ic3QwIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--events{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye2ZpbGw6Z3JheX08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMjIuNSAyMy41aC0yMXYtMjBoMjJ2MTUuMjEiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik00LjQyIDMuNWMwLTEuMzYgMS4wOS0yIDIuNDUtMmEyLjQ2IDIuNDYgMCAxIDEgMCA0LjkxIDIuNiAyLjYgMCAwIDEtMS0uMjFNMTAuNjcgMy41YzAtMS4zNiAxLjEtMiAyLjQ2LTJhMi40NiAyLjQ2IDAgMCAxIDAgNC45MSAyLjYgMi42IDAgMCAxLTEtLjIxTTE2LjkzIDMuNWMwLTEuMzYgMS4xLTIgMi40NS0yYTIuNDYgMi40NiAwIDEgMSAwIDQuOTEgMi41IDIuNSAwIDAgMS0xLS4yMSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTcgOWgzdjNIN3pNMTIgOWgzdjNoLTN6TTE3IDloM3YzaC0zek03IDE0aDN2M0g3ek0xMiAxNGgzdjNoLTN6TTE3IDE0aDN2M2gtM3oiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0zLjUgMy42N3YxNi42Nk0zLjUgMjAuNDNjMCAxLjI5LjQ0IDIuMzMgMS43MyAyLjMzczIuMzMtMS45IDIuMzMtMy4xOWwxNi45NC0uMDdjMCAxLjI5LS41NSAzLjEyLTEuODMgMy4xMkg2LjMiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--exclamation{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PG1hc2sgaWQ9ImEiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiIgeD0iMSIgeT0iMSIgbWFzay10eXBlPSJhbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEyIDIzQzUuOSAyMyAxIDE4LjEgMSAxMlM1LjkgMSAxMiAxczExIDQuOSAxMSAxMS00LjkgMTEtMTEgMTFtMC0yMGMtNSAwLTkgNC05IDlzNCA5IDkgOSA5LTQgOS05LTQtOS05LTkiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTIgMTNjLS42IDAtMS0uNC0xLTFWOGMwLS42LjQtMSAxLTFzMSAuNCAxIDF2NGMwIC42LS40IDEtMSAxTTEyIDE3Yy0uMyAwLS41LS4xLS43LS4zcy0uMy0uNC0uMy0uN2MwLS4xIDAtLjMuMS0uNHMuMS0uMi4yLS4zYy4zLS4zLjctLjQgMS4xLS4yLjEgMCAuMSAwIC4yLjEgMCAwIC4xLjEuMi4xLjEuMS4yLjIuMi4zdi40YzAgLjEgMCAuMy0uMS40cy0uMS4yLS4yLjNjLS4yLjItLjQuMy0uNy4zIi8+PC9tYXNrPjxnIG1hc2s9InVybCgjYSkiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoMjR2MjRIMHoiLz48L2c+PC9zdmc+)}.scylla-icon--expand{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNi4wMDEiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik01IDEzYTEgMSAwIDAgMS0uNzEtLjI5bC00LTRhMSAxIDAgMCAxIDAtMS40MWw0LTRhMSAxIDAgMCAxIDEuNDIgMS40MUwyLjQxIDhsMy4yOSAzLjI5QTEgMSAwIDAgMSA1IDEzIi8+PHBhdGggZD0iTTExIDlIMWExIDEgMCAwIDEgMC0yaDEwYTEgMSAwIDAgMSAwIDJNMTUgMTZhMSAxIDAgMCAxLTEtMVYxYTEgMSAwIDAgMSAyIDB2MTRhMSAxIDAgMCAxLTEgMSIvPjwvc3ZnPg==)}.scylla-icon--forum{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItdXNlcnMiPjxwYXRoIGQ9Ik0xNyAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyIi8+PGNpcmNsZSBjeD0iOSIgY3k9IjciIHI9IjQiLz48cGF0aCBkPSJNMjMgMjF2LTJhNCA0IDAgMCAwLTMtMy44N00xNiAzLjEzYTQgNCAwIDAgMSAwIDcuNzUiLz48L3N2Zz4=)}.scylla-icon--help{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWhlbHAtY2lyY2xlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIvPjxwYXRoIGQ9Ik05LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgM00xMiAxN2guMDEiLz48L3N2Zz4=)}.scylla-icon--home{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl81IiBkYXRhLW5hbWU9IkxheWVyIDUiPjxwYXRoIGQ9Ik0zLjUgNi4xNHYxMWExLjM4IDEuMzggMCAwIDAgMS4zNyAxLjM2aDExLjI2YTEuMzggMS4zOCAwIDAgMCAxLjM3LTEuMzd2LTExIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMTkuNSA3LjUtOC02LjI1YTEuNTkgMS41OSAwIDAgMC0xLjk0IDBMMS41IDcuNU0xMi43MyAxOC4wMnYtNy4yMUg4LjI3djcuMjEiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--getting-started{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTcgNC41IDguNTEgNS4wNUw3IDE0LjV6IiBzdHlsZT0iZmlsbDojNGQ0ZDRkIi8+PHJlY3Qgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiB4PSIxLjUiIHk9Ii41IiByeD0iMi40MyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzRkNGQ0ZDtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjwvZz48L3N2Zz4=)}.scylla-icon--glossary{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIuNSAyLjVoMTN2MTZoLTEzeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1LjU4IDE3LjIxaDEuOTJWLjVoLTEzYTIuMzQgMi4zNCAwIDAgMC0yIDIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik00LjggMTMuOTNhMSAxIDAgMCAwIC43NS0uNDMgNiA2IDAgMCAwIC41Mi0xLjA4bDIuODctNy4wN2guMzZsMi44OCA2Ljc5YTkgOSAwIDAgMCAuNzIgMS40Ny43Ni43NiAwIDAgMCAuNjguMzJ2LjMySDkuNHYtLjMyYTMuMiAzLjIgMCAwIDAgLjgzLS4xMWMuMTMtLjA2LjItLjE5LjItLjQyYTEuNiAxLjYgMCAwIDAtLjEtLjQ2YzAtLjEyLS4xLS4yNy0uMTctLjQ0bC0uMzMtLjc4aC0yLjljLS4xOS41MS0uMzEuODUtLjM2IDFhMi40IDIuNCAwIDAgMC0uMTcuNzNjMCAuMTguMTIuMzIuMzcuNGEyLjYgMi42IDAgMCAwIC42Ni4wOHYuMzJINC44Wm00Ljg0LTIuNzItMS4yNC0zaC0uMTFsLTEuMTYgM1oiIHN0eWxlPSJmaWxsOiM0ZDRkNGQiLz48L2c+PC9zdmc+)}.scylla-icon--infoworld{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTB9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNMTIgMi41SDYuNVY2YzAgMyAuNTUgNy4xNyA1IDkuNXY0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNi40IDQuNDRoLTRTMi41NiAxMSA4LjUgMTNNMTguNSA0LjVsNC0uMDZzLS4wNiA2LjU2LTYgOC41NiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTEyIDIuNWg2LjVWNmMwIDIuOTQtLjQgNy4wOC01IDkuNXY0TTkuNSAxOS41aDZ2MmgtNnoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik03LjUgMjEuNWgxMHYxaC0xMHoiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXkiLz48L2c+PC9zdmc+)}.scylla-icon--integrations{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTE0LjU2IDEyLjctMS4yNS0xLjU3LTEuMzEuNzZhNiA2IDAgMCAwLTEuNjUtMWwuMDgtMS40OS0yLS40LS41MyAxLjQ0YTUuNyA1LjcgMCAwIDAtMS44Ny4zMWwtLjg4LTEuMTktMS43NyAxTDMuOTIgMTJhNi4zIDYuMyAwIDAgMC0xLjIyIDEuNDFsLTEuNS0uMzUtLjc0IDEuODcgMS4zOC44YTYuMiA2LjIgMCAwIDAgMCAxLjgzbC0xLjQxLjcyLjY0IDEuOTEgMS41OS0uMjhhOCA4IDAgMCAwIC40OC42OCA2IDYgMCAwIDAgLjY3LjczbC0uNjIgMS40NiAxLjcyIDEgMS0xLjI0YTYuNSA2LjUgMCAwIDAgMS43OS4zNWwuNDYgMS41MiAyLS4zdi0xLjZhNi40IDYuNCAwIDAgMCAxLjYyLS44OWwxLjMuODVMMTQuNDMgMjFsLTEtMS4yYTYuMiA2LjIgMCAwIDAgLjY4LTEuNzVsMS41MS0uMTkuMDUtMi0xLjUxLS4yNmE2IDYgMCAwIDAtLjYyLTEuODFabS01LjM1IDUuNTFhMS45MyAxLjkzIDAgMSAxIC4zMS0yLjcxIDEuOTIgMS45MiAwIDAgMS0uMzEgMi43MSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTI0LjMxIDguMDUtLjEzLTEuNjUtMS4yNS0uMDlhNS4zIDUuMyAwIDAgMC0uNjctMS40NGwuNzUtMS0xLjE2LTEuMTctMSAuNzRhNS4yIDUuMiAwIDAgMC0xLjQzLS42NmwtLjA2LTEuMjQtMS42NS0uMTctLjMyIDEuMjVhNS44IDUuOCAwIDAgMC0xLjUyLjM4TDE1IDIuMWwtMS4zNy45LjU4IDEuMThhNC45IDQuOSAwIDAgMC0uODYgMS4yNWwtMS4zLS4xNi0uNDUgMS42IDEuMjIuNTVhNSA1IDAgMCAwIDAgLjY4QTQuMyA0LjMgMCAwIDAgMTMgOWwtMS4xMS43Mi42OSAxLjUxIDEuMjgtLjM3YTUgNSAwIDAgMCAxLjA3IDEuMDdsLS4zOSAxLjI2IDEuNS43MS43NC0xLjA5YTUgNSAwIDAgMCAxLjUyLjE0bC41IDEuMTkgMS42MS0uNDEtLjEzLTEuMjlhNS4xIDUuMSAwIDAgMCAxLjI3LS44OGwxLjEyLjU3IDEtMS4zNS0uOTEtLjg4YTQuOSA0LjkgMCAwIDAgLjQyLTEuNTJabS02LjIgMS40M2ExLjc0IDEuNzQgMCAxIDEgMS42LTEuODYgMS43NCAxLjc0IDAgMCAxLTEuNiAxLjg2IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--knowledge-base{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkfS5jbHMtMXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye3N0cm9rZS1taXRlcmxpbWl0OjEwfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl81IiBkYXRhLW5hbWU9IkxheWVyIDUiPjxwYXRoIGQ9Ik0xNi4yMSA2LjM4YTUuMzYgNS4zNiAwIDAgMS0xLjUxIDMuNzMgNSA1IDAgMCAwLTEuNDUgMy4zMUg4LjQ3YTUuNCA1LjQgMCAwIDAtMS4yOC0zLjExIDUuMzcgNS4zNyAwIDEgMSA5LTMuOTNaTTEzLjIzIDE1LjY3SDguNDUiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0xMy4yNCAxMy40aC00Ljh2NC4xNmEuNy43IDAgMCAwIC43MS43aDMuMzhhLjcuNyAwIDAgMCAuNzEtLjdaIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTAuODQgOC4yMWExLjY1IDEuNjUgMCAxIDEgMS42NC0xLjY1IDEuNjUgMS42NSAwIDAgMS0xLjY0IDEuNjVaTTEwLjg0IDguNjd2NC42NCIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--less{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNyIgZmlsbD0ibm9uZSI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiBmaWxsPSIjYjNiYWM1IiByeD0iMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMyA4LjVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMSAwLTJoN2ExIDEgMCAwIDEgMSAxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEzIDguNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxIDAtMmg3YTEgMSAwIDAgMSAxIDEiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTMgOC41YTEgMSAwIDAgMS0xIDFINWExIDEgMCAwIDEgMC0yaDdhMSAxIDAgMCAxIDEgMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMyA4LjVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMSAwLTJoN2ExIDEgMCAwIDEgMSAxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEzIDguNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxIDAtMmg3YTEgMSAwIDAgMSAxIDEiLz48L3N2Zz4=);filter:none}.scylla-icon--live-test{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtNntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWxpbmVjYXA6cm91bmR9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTUiIHI9IjkuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MS41cHgiLz48cGF0aCBkPSJNMTAgLjVoNXYyaC01eiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMXB4Ii8+PHBhdGggZD0iTTUuOCA4LjIgNC4xMyA2LjUzbDEuOC0xLjgxTDcuNiA2LjQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjExcHgiLz48cGF0aCBkPSJNMTIgNlYyLjUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjEuMTNweCIvPjxwYXRoIGQ9Ik0xMyA2VjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MS4wOHB4Ii8+PHBhdGggZD0iTTEyLjUgOC4wNlYxME0xMi41IDIwLjA0djEuODhNNy4xMyAxMC4wOGwxLjc5IDEuODhNMTYuMDQgMTcuMDhsMiAxLjg4TTcgMTguOTJsMS44OC0xLjg4TTE2LjEzIDExLjk2bDEuNzktMS44MyIgY2xhc3M9ImNscy02Ii8+PGVsbGlwc2UgY3g9IjEyLjUiIGN5PSIxNC4zNiIgcng9IjEuNSIgcnk9IjEuMzYiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJtMTIuNjMgMTQuNTQgMi41IDYuMzgiIGNsYXNzPSJjbHMtNiIvPjwvZz48L3N2Zz4=)}.scylla-icon--mail-list{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItbWFpbCI+PHBhdGggZD0iTTQgNGgxNmMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTIiLz48cGF0aCBkPSJtMjIgNi0xMCA3TDIgNiIvPjwvc3ZnPg==)}.scylla-icon--manager{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtM3tmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOTdweH0uY2xzLTR7ZmlsbDpncmF5fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGlkPSJDYWxxdWVfMiIgZD0iTTE4IDJoNXYyMkgzVjJoNC45MiIgZGF0YS1uYW1lPSJDYWxxdWUgMiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiLz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik04IDBoMTB2NEg4eiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDdweCIvPjxwYXRoIGQ9Ik03IDloM3YzSDd6TTcgMTZoM3YzSDd6IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNMTIuNSA5LjVoN3YyaC03ek0xMi41IDE2LjVoN3YyaC03eiIgY2xhc3M9ImNscy00Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--memory-management{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH0uY2xzLTJ7c3Ryb2tlLXdpZHRoOjEuMTNweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxyZWN0IHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgeD0iNS41IiB5PSI1LjUiIGNsYXNzPSJjbHMtMSIgcng9IjIuNzQiIHJ5PSIyLjc0Ii8+PHBhdGggZD0iTTkuNSA5LjVoN3Y3aC03eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTguNSA1LjV2LTRNMTEuNSA1LjV2LTRNMTQuNSA1LjV2LTRNMTcuNSA1LjV2LTRNOC41IDI0LjV2LTRNMTEuNSAyNC41di00TTE0LjUgMjQuNXYtNE0xNy41IDI0LjV2LTRNMjAuNSA4LjVoNE0yMC41IDExLjVoNE0yMC41IDE0LjVoNE0yMC41IDE3LjVoNE0xLjUgOC41aDRNMS41IDExLjVoNE0xLjUgMTQuNWg0TTEuNSAxNy41aDQiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--monitoring{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTUuNTUgMTAuODlhMy44MyAzLjgzIDAgMCAxLS4xNS0zLjc2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIvPjxyZWN0IHdpZHRoPSIzLjA1IiBoZWlnaHQ9IjEwLjgiIHg9IjE3LjYzIiB5PSIxNC4wMSIgcng9Ii41NyIgcnk9Ii41NyIgc3R5bGU9InN0cm9rZTpncmF5O2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk1cHg7c3Ryb2tlLW1pdGVybGltaXQ6MTAiIHRyYW5zZm9ybT0icm90YXRlKC00NSAxOS4xNTggMTkuNDA1KSIvPjxjaXJjbGUgY3g9IjguNSIgY3k9IjkiIHI9IjciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjJweCIvPjxwYXRoIGQ9Im0xNi4wNSAxNi4zOS0yLjI4LTIuMjgiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48L2c+PC9zdmc+)}.scylla-icon--networking{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTB9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTIuNSIgcj0iNCIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6Ljk0cHgiLz48Y2lyY2xlIGN4PSI1IiBjeT0iMyIgcj0iMi41IiBjbGFzcz0iY2xzLTIiLz48Y2lyY2xlIGN4PSIxOSIgY3k9IjIwIiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjIyIiBjeT0iNi42IiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjQuNSIgY3k9IjIyIiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Im02LjgzIDUuNSAzLjI1IDQuMzNNMjAuMjMgNy44NSAxNS4zMyAxMU05LjgzIDE1LjA4bC00LjA5IDUuODRNMTQuNTggMTUuMzNsMyAzLjA5IiBjbGFzcz0iY2xzLTIiLz48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTIuNSIgcj0iMS41IiBzdHlsZT0iZmlsbDpncmF5Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--news{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTMgMTUuMTcgMTYuMzEgMy44MmExLjQ4IDEuNDggMCAwIDEgMi4yMi40Nmw1LjE1IDkuNjVhMS40NiAxLjQ2IDAgMCAxLS45MyAyLjEyTDUuNjkgMTkuOVpNOC43MSAxOS4zM2wuNzYgMi4yMmExLjUxIDEuNTEgMCAwIDAgMS44NSAxbDMuNTgtMS4wNmExLjUgMS41IDAgMCAwIDEtMS44NkwxNS40NSAxOE01LjU0IDIwbC0xLjgzIDFhLjkyLjkyIDAgMCAxLTEuMjUtLjM3TC42MSAxNy40OUEuOTIuOTIgMCAwIDEgMSAxNi4yNGwxLjgzLTFNOC41IDE0bDcuMzgtNS41IiBjbGFzcz0iY2xzLTEiLz48L3N2Zz4=)}.scylla-icon--newsletter{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMntzdHJva2UtbGluZWNhcDpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik0xOS41IDkuNWgzdjEyaC0yMHYtMTJoMyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTIuNjUgOS44NCA5Ljg1IDYuODggOC42My02Ljg4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNS41IDcuNS0zIDJNMTQuMzUgMy44NmwtMS40Ni0xLjA5LTEuNDcgMS4wOU0yMS41IDkuNWwtMi0yTTE5LjUgMTEuNXYtN2gtMTR2Ny40NyIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--nsql-guides{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHJlY3Qgd2lkdGg9IjEuMTUiIGhlaWdodD0iOS43MiIgeD0iNC4zNyIgeT0iMTMuNzEiIHJ4PSIuNTQiIHJ5PSIuNTQiIHN0eWxlPSJmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOjEuMDlweDtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIgdHJhbnNmb3JtPSJyb3RhdGUoNDUgNC45NDggMTguNTcpIi8+PGNpcmNsZSBjeD0iMTIuMjUiIGN5PSIxMi4yNSIgcj0iNC43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MS41cHgiLz48cGF0aCBkPSJNOC41IDIwLjV2M2gxNXYtMjFoLTE1djIiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOm5vbmU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDZweCIvPjwvZz48L3N2Zz4=)}.scylla-icon--open-source{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNLjMxIDIxLjUxIDUgMTkuNjlhMi4zNyAyLjM3IDAgMCAxIDEuODguMTlsNS4yNCAxLjY4YTIuMjMgMi4yMyAwIDAgMCAyLS4xMmw5LjUtNC43NWMuOC0uNDQgMS42NC0xLjMxIDEuMTMtMS45MWEyLjM0IDIuMzQgMCAwIDAtMi42NC0uNDJMMTggMTYuMDkiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Im0uMjUgMTUuNjkgNC44OC0xLjIxYzEuMjUtLjMgMi4xNy0uNjMgMy40NC0uMTNhMTUuMiAxNS4yIDAgMCAwIDQgMS4xaDQuNTJjLjg1IDAgLjk1LjU0Ljk1IDEuMTNhMSAxIDAgMCAxLTEuMDggMSA2NiA2NiAwIDAgMS03LS4zMSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTguNTYgOS42OHYtLjgxYzAtLjkxLS4zOC0xLjIxLTEuMjktMS4yMUg3VjYuM2guMzFjLjkxIDAgMS4yOS0uMyAxLjI5LTEuMjF2LS44MWMwLTEuMi42Ni0xLjkyIDIuODItMi4zdjEuMTZjLTEuMjQuMzUtMS40My42OC0xLjQzIDEuNHYuODdBMS41MiAxLjUyIDAgMCAxIDguNzUgNyAxLjUyIDEuNTIgMCAwIDEgMTAgOC41NnYuODdjMCAuNzEuMTkgMSAxLjQzIDEuNFYxMmMtMi4yMS0uMzUtMi44Ny0xLjEyLTIuODctMi4zMk0xNy40MyA0LjN2LjgxYzAgLjkxLjM3IDEuMjEgMS4yOSAxLjIxSDE5djEuMzZoLS4zMWMtLjkyIDAtMS4yOS4zLTEuMjkgMS4yMXYuODFjMCAxLjItLjY1IDItMi44MSAyLjM1di0xLjJjMS4yNS0uMzYgMS40NC0uNjkgMS40NC0xLjR2LS44N0ExLjUzIDEuNTMgMCAwIDEgMTcuMjUgNyAxLjUzIDEuNTMgMCAwIDEgMTYgNS40M3YtLjg3YzAtLjcyLS4xOS0xLTEuNDQtMS40VjJjMi4yMi4zOCAyLjg3IDEuMSAyLjg3IDIuMyIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--operator{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjQuODEgMS4wMSAyOC4zMiAyNy42NCI+PHBhdGggZD0iTTMyLjUyIDE4cy0uMDkgMC0uMDktLjA1LS4wOCAwLS4xNyAwYTIuMiAyLjIgMCAwIDAtLjUxIDAgLjQ3LjQ3IDAgMCAxLS4yNi0uMDUgOS4zIDkuMyAwIDAgMS0xLjQ5LS4zMi41NC41NCAwIDAgMS0uMy0uMzFsLS4zNC0uMDhhMTEuMyAxMS4zIDAgMCAwLS4xOC0zLjc5IDExLjYgMTEuNiAwIDAgMC0xLjUtMy41MmwuMjYtLjI2YS42LjYgMCAwIDEgLjEzLS4zOSA3LjcgNy43IDAgMCAxIDEuMi0uODZsLjI2LS4xMy40Ny0uM3MuMDkgMCAuMTMtLjA4IDAtLjA1IDAtLjA5YS44NC44NCAwIDAgMCAuMTctMS4yLjc4Ljc4IDAgMCAwLS42LS4zIDEgMSAwIDAgMC0uNi4yMWMtLjA1LjA1LS4wOS4wOS0uMTMuMDlhMyAzIDAgMCAwLS4zNS4zOWMwIC4wOC0uMTMuMTMtLjE3LjE3YTUuNiA1LjYgMCAwIDEtMS4wNy45NC42LjYgMCAwIDEtLjI2LjA5LjI1LjI1IDAgMCAxLS4xNyAwaC0uMDVsLS4zNC4yMS0xLjA4LTFhMTEgMTEgMCAwIDAtNS42NS0yLjI3di0uMzRhLjYuNiAwIDAgMS0uMjItLjM0QTggOCAwIDAgMSAxOS42NiAzdi0uMjVjMC0uMDguMDUtLjM1LjA5LS41MnYtLjMxYS44Mi44MiAwIDAgMC0xLjQ2LS42Ljg2Ljg2IDAgMCAwLS4yNi42di4yMmExLjggMS44IDAgMCAwIC4wOS41MS42LjYgMCAwIDEgMCAuMjZWM2E5IDkgMCAwIDEgLjA4IDEuNDcuNi42IDAgMCAxLS4yMS4zNHYuNDNjLS40OCAwLTEgLjEzLTEuNDcuMjJhMTAuMTYgMTAuMTYgMCAwIDAtNS4yOCAzTDExIDguMjRoLS4xN2EuNy43IDAgMCAxLS4yNi0uMDkgOCA4IDAgMCAxLTEuMDctMWMwLS4wOC0uMTMtLjEzLS4xNy0uMTdzLS4yNS0uMi0uMzMtLjMzLS4wOCAwLS4xMy0uMDh2LS4wNWExIDEgMCAwIDAtLjYtLjIxLjY0LjY0IDAgMCAwLS42LjMuOTEuOTEgMCAwIDAgLjE3IDEuMnMwIC4wNSAwIC4wNS4wOS4wOC4xMy4wOGE1IDUgMCAwIDAgLjQ3LjI2bC4yNi4xM2E2LjYgNi42IDAgMCAxIDEuMjEuODYuNDcuNDcgMCAwIDEgLjEzLjM5di0uMDVsLjI1LjI2YTMgMyAwIDAgMS0uMTMuMjIgMTAuMiAxMC4yIDAgMCAwLTEuNSA3bC0uMzUuMDljMCAuMTMtLjE3LjIxLS4zLjNhOC42IDguNiAwIDAgMS0xLjQ2LjI2LjYuNiAwIDAgMC0uMjYgMGgtLjUyYy0uMTggMC0uMDguMDUtLjE3LjA1aC0uMDhhLjg0Ljg0IDAgMCAwLS42OSAxIC43OS43OSAwIDAgMCAuODYuNi40LjQgMCAwIDAgLjIxIDBoLjIyYTQgNCAwIDAgMCAuNDctLjE3LjY1LjY1IDAgMCAxIC4yNi0uMDggNy43IDcuNyAwIDAgMSAxLjQyLS4zOS41LjUgMCAwIDEgLjM1LjEzaC4zOWExMC4zIDEwLjMgMCAwIDAgMy41MyA1IDYuMyA2LjMgMCAwIDAgMS4xNi43N2wtLjIyLjNhLjUxLjUxIDAgMCAxIDAgLjQzIDYuNSA2LjUgMCAwIDEtLjY5IDEuMjR2LjA1YS44LjggMCAwIDEtLjE3LjIxYy0uMDkuMDktLjE3LjI2LS4zLjQzczAgLjA5LS4wOS4xMyAwIC4wNSAwIC4wNWEuODguODggMCAwIDAgLjM0IDEuMTYuOS45IDAgMCAwIC4zLjA4IDEgMSAwIDAgMCAuODItLjUxczAtLjA4LjA5LS4xMy4xMy0uMy4xNy0uNDdsLjA5LS4yNmE3IDcgMCAwIDEgLjU2LTEuMzMuNjIuNjIgMCAwIDEgLjM0LS4yNmwuMTctLjM1YTEwIDEwIDAgMCAwIDMuNzUuNjkgOC41IDguNSAwIDAgMCAyLjMyLS4zIDEyIDEyIDAgMCAwIDEuMzctLjM5bC4xOC4zMWEuNjIuNjIgMCAwIDEgLjM0LjI2IDcgNyAwIDAgMSAuNTYgMS4zM2wuMDkuMjZhMS4zIDEuMyAwIDAgMCAuMTcuNDdjMCAuMDUgMCAuMDkuMDkuMTNhMSAxIDAgMCAwIC44Mi41MSAxIDEgMCAwIDAgLjM0LS4wOC43Ni43NiAwIDAgMCAuMzktLjQ4IDEuMSAxLjEgMCAwIDAtLjA1LS42NC4yLjIgMCAwIDAtLjA4LS4xMyAxLjUgMS41IDAgMCAwLS4zMS0uNDMuNjUuNjUgMCAwIDAtLjE3LS4yMnYtLjA5YTUuMiA1LjIgMCAwIDEtLjY5LTEuMjQuNTEuNTEgMCAwIDEgLjA1LS40M2wtLjEzLS4zNEExMC42OCAxMC42OCAwIDAgMCAyOSAxOC44MmwuMzQuMDV2LS4wNWEuNTQuNTQgMCAwIDEgLjM1LS4xMyA4IDggMCAwIDEgMS4zOC4zOS42LjYgMCAwIDAgLjI2LjA5IDIuNCAyLjQgMCAwIDAgLjQ3LjIxcy4wOSAwIC4xNyAwaC4wOWEuNC40IDAgMCAwIC4yMSAwIC45NC45NCAwIDAgMCAuODYtLjYgMSAxIDAgMCAwLS43Ny0uOVptLTEyLjQzLTEuMzMtMS4xNi41Ni0xLjE2LS41Ni0uMy0xLjI1LjgxLTFoMS4yOWwuODIgMVptNy0yLjc5YTggOCAwIDAgMSAuMTcgMi43MWwtNC4xNS0uNzVjLS4zOC0uMDgtLjY4LS45LS43MS0xLjIyYTQgNCAwIDAgMSAuMjEtLjc0bDMuNDUtMi41NGE4LjYgOC42IDAgMCAxIDEuMDQgMi41NFptLTIuMzEtNC4xMy0zLjIyIDIuNjlhMS4yOCAxLjI4IDAgMCAxLTEuMjUtLjM3Yy0uMDktLjA5LS4zNy0uMjUtLjM3LS4zOFY3LjQzYTguMDcgOC4wNyAwIDAgMSA0Ljg2IDIuMzJaTTE3IDcuNTZsMS0uMTgtLjA2IDQuMzFjMCAuMzgtLjY0LjY4LTEgLjY4YTEuMSAxLjEgMCAwIDEtLjM1LS4wOEwxMyA5Ljc1YTguNCA4LjQgMCAwIDEgNC0yLjE5bS01LjI0IDMuNzggMy4zNyAyLjQ3LjMyLjUzYTEuMTQgMS4xNCAwIDAgMS0uMjUgMSAuNzguNzggMCAwIDEtLjM4LjMxbC00LjMxLjlhOSA5IDAgMCAxIDEuMjQtNS4yMVpNMTEgMTguNjFsNC4xLTEuMjNjLjM1IDAgLjg0LjcxLjg5IDEuMDZhLjUxLjUxIDAgMCAxLS4wNS40M2wtMS42MyAzLjk1QTguNCA4LjQgMCAwIDEgMTEgMTguNjFtOS43NiA1LjMzYTguNyA4LjcgMCAwIDEtMS44NS4yMSA5LjYgOS42IDAgMCAxLTIuNzEtLjQzbDEuNjYtNGMuMjEtLjI2IDEtLjIgMS4zMSAwYTIuNSAyLjUgMCAwIDEgLjM0LjNsMi4wNyAzLjc0YTYgNiAwIDAgMC0uOC4xOFpNMjYgMjAuMmE4LjQgOC40IDAgMCAxLTIuNTggMi41OGwtMS45Mi0zLjcyYTEuMTUgMS4xNSAwIDAgMSAuNDEtMWMuMjEtLjI1LjU5LS41OS43MS0uNTlsNC4yMiAxLjA2QTYuMyA2LjMgMCAwIDEgMjYgMjAuMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiIgc3R5bGU9ImZpbGw6IzRkNGQ0ZCIvPjwvc3ZnPg==)}.scylla-icon--overview{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIyLjYxIDMuNDVDMjIuNjEgNS4wNiAxOCA2LjUgMTIuNSA2LjVzLTEwLTEuNDQtMTAtMyA0LjUtMyAxMC0zIDEwLjExIDEuMzMgMTAuMTEgMi45NU0yMi42MSA5LjQ0YzAgMS42MS00LjY0IDMuMDYtMTAuMTEgMy4wNnMtMTAtMS40NS0xMC0zLjA2TTIyLjYxIDE1LjUxYzAgMS42Mi00LjY0IDMtMTAuMTEgM3MtMTAtMS4zNy0xMC0zTTIyLjYxIDIxLjU5YzAgMS42Mi00LjY0IDIuOTEtMTAuMTEgMi45MXMtMTAtMS4yOS0xMC0yLjkxTTIuNSAyMS40N1YzLjQ1TTIyLjUgMjEuNDdWMy40NSIgY2xhc3M9ImNscy0xIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--partners{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTE4LjUgOC4yNmgtNC43MmwtMS4yMyAxLjI3TTIuMzkgMTUuMDkuMTUgMTMuNzRsNC44Ny04LjQyIDIuMjQgMS4zNHpNMjIuNTkgMTUuMDlsMi4yNC0xLjM1LTQuODYtOC40Mi0yLjI0IDEuMzR6TTEwLjcxIDE1LjI2bC0yLjkzIDIuMjFNMTIuMTggMTYuNGwtMi45MyAyLjIxTTEzLjY4IDE3LjUzbC0yLjkzIDIuMjIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik02LjM4IDguM2gzLjc4YTIuMjcgMi4yNyAwIDAgMSAxLjM3LjQ3YzEuMjYgMSA0LjA5IDMuMTggNC40OCAzLjU2cy0xLjE0IDEuNjgtMi4yNyAxLjFhMTggMTggMCAwIDAtMi4xMS0uOTIuNTcuNTcgMCAwIDAtLjU2LjA5bC00Ljc5IDMuODlMMTIuMzMgMjFsOS40Ni03LjA5TTMuMjQgMTQuMjJsMy40IDEuODUiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--plus{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNyIgZmlsbD0ibm9uZSI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiBmaWxsPSIjYjNiYWM1IiByeD0iMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSA1YTEgMSAwIDEgMC0yIDB2Mi41SDVhMSAxIDAgMSAwIDAgMmgyLjVWMTJhMSAxIDAgMSAwIDIgMFY5LjVIMTJhMSAxIDAgMSAwIDAtMkg5LjV6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgNWExIDEgMCAxIDAtMiAwdjIuNUg1YTEgMSAwIDEgMCAwIDJoMi41VjEyYTEgMSAwIDEgMCAyIDBWOS41SDEyYTEgMSAwIDEgMCAwLTJIOS41eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS41IDVhMSAxIDAgMSAwLTIgMHYyLjVINWExIDEgMCAxIDAgMCAyaDIuNVYxMmExIDEgMCAxIDAgMiAwVjkuNUgxMmExIDEgMCAxIDAgMC0ySDkuNXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSA1YTEgMSAwIDEgMC0yIDB2Mi41SDVhMSAxIDAgMSAwIDAgMmgyLjVWMTJhMSAxIDAgMSAwIDIgMFY5LjVIMTJhMSAxIDAgMSAwIDAtMkg5LjV6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgNWExIDEgMCAxIDAtMiAwdjIuNUg1YTEgMSAwIDEgMCAwIDJoMi41VjEyYTEgMSAwIDEgMCAyIDBWOS41SDEyYTEgMSAwIDEgMCAwLTJIOS41eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+);filter:none}.scylla-icon--pricing{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0ibTIxLjczIDctMi40MS01LjEyYTIuNTIgMi41MiAwIDAgMC0yLjgyLTFsLTYuMDggMi4wNEExLjY5IDEuNjkgMCAwIDAgOS41MSA0TDMuOTMgMTkuMjlhMS4wNiAxLjA2IDAgMCAwIC42NCAxLjE3bDEwLjM0IDMuNzZhMSAxIDAgMCAwIDEuMjItLjQzbDUuNTgtMTUuMzNBMS44NyAxLjg3IDAgMCAwIDIxLjczIDciIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjE1LjczIiBjeT0iNS44OSIgcj0iMiIgY2xhc3M9ImNscy0xIi8+PHRleHQgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZpbGw6Z3JheTtmb250LWZhbWlseTpSb2JvdG8tTWVkaXVtLFJvYm90byIgdHJhbnNmb3JtPSJyb3RhdGUoMjAgLTQ4LjI0NCAzMC42NykiPiQ8L3RleHQ+PC9nPjwvc3ZnPg==)}.scylla-icon--release-note{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOTFweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzIiIGRhdGEtbmFtZT0iQ2FscXVlIDIiPjxwYXRoIGQ9Ik0yMS41IDI0LjVoLTE3VjUuN0w4Ljk1LjU0IDIxLjUuNXoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOXB4Ii8+PHBhdGggZD0iTTQuNjUgNS41SDkuNVYxTTcuNSA4LjVoMTFNNy41IDExLjVoMTFNNy41IDE0LjVoMTFNNy41IDE3LjVoMTFNNy41IDIwLjVoMTEiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--resource-center{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNNS41IDIuNWg2LjkxbC4wOSAyMGgtN3oiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik04IDRoMnYxMC45N0w4IDE1eiIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTUuMzYgMi4yOSAyLjUgMy41djE4bDIuNzkgMS4xNCIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTEyLjU3IDIxLjg2IDEuNTcuNzUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouNjhweCIvPjxwYXRoIGQ9Im0xNC4xMSAyLjUtMS41NC41NyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOi44NXB4Ii8+PGNpcmNsZSBjeD0iOSIgY3k9IjE5IiByPSIxIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJNMTQuNSAyLjVoNi45NGwuMDYgMjBoLTd6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTcgNGgydjEwLjk3TDE3IDE1eiIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOSIgcj0iMSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTEyLjYgMi43M2gxLjY3VjIyLjZIMTIuNnpNMi41OCAyMS41bDIuNzUgMS4xVjIuNzNsLTIuNjYuOTR6IiBjbGFzcz0iY2xzLTIiLz48L2c+PC9zdmc+)}.scylla-icon--roadmap{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5fS5jbHMtMXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOi45OHB4fS5jbHMtMntzdHJva2UtbWl0ZXJsaW1pdDoxMH0uY2xzLTN7ZmlsbDpncmF5fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibS41IDQuNSA4LTMgOCA0IDgtM3YxN2wtOCAzLTgtNC04IDN6TTguNSAxLjVWMThNMTYuNSA1LjVWMjIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0yLjUgMTMgNyAxNi41TTcgMTJsLTQuNSA1LjVNMTguNSA4bDQuNSAzLjVNMjMgN2wtNC41IDUuNSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTEwIDEzaDF2MWgtMXpNMTIgMTJoMXYxaC0xek0xNCAxMWgxdjFoLTF6IiBjbGFzcz0iY2xzLTMiLz48L2c+PC9zdmc+)}.scylla-icon--search{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTEwLjUgMThhNy41IDcuNSAwIDEgMCAwLTE1IDcuNSA3LjUgMCAwIDAgMCAxNU0yMSAyMWwtNS4yLTUuMiIvPjwvc3ZnPg==)}.scylla-icon--slack{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tISBGb250IEF3ZXNvbWUgUHJvIDYuMC4wIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIyIEZvbnRpY29ucywgSW5jLi0tPjxwYXRoIGQ9Ik05NC4xMiAzMTUuMWMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZTMCAzNDEgMCAzMTUuMXMyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNmg0Ny4wNnptMjMuNzIgMGMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ2MTE3Ljg0YzAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNnMtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZ6bTQ3LjA2LTE4OC45OGMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2UzEzOSAzMiAxNjQuOSAzMnM0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnY0Ny4wNnptMCAyMy43MmMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2SDQ3LjA2QzIxLjE2IDI0My45NiAwIDIyMi44IDAgMTk2LjlzMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZ6bTE4OC45OCA0Ny4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZTNDQ4IDE3MSA0NDggMTk2LjlzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2aC00Ny4wNnptLTIzLjcyIDBjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2cy00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlY3OS4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ6TTI4My4xIDM4NS44OGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZTMzA5IDQ4MCAyODMuMSA0ODBzLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2di00Ny4wNnptMC0yMy43MmMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2czIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDExNy44NGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2eiIvPjwvc3ZnPg==)}.scylla-icon--stack-overflow{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIzMSIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJtMjEuOTQ5LjExMyAyLjA0MyAxMS42Ny0yLjUxNC40MzJMMTkuNDM1LjU0NXptLTE3Ljk3MyAyNiAxMS45NDUtLjAwNS0uMDAyLTIuNTMtMTEuOTQ0LjAwNnptMTIuMjMyLTUuNzc3TDQuMzE1IDE5LjI1bC0uMjM1IDIuNTIgMTEuODk0IDEuMDg1em0tMTAuNzUtNi4zNzUgMTEuNTM1IDMuMDc0LS42NjIgMi40NDMtMTEuNTM1LTMuMDc1em0xMy4wNC4xOEw4LjIxMiA4LjEyNmwtMS4yOTcgMi4xNzggMTAuMjg5IDYuMDE3em0tNC4yMDYtMTEuNTYgNi43MyA5Ljc4Ny0yLjEwOCAxLjQyNC02LjczLTkuNzg1eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTE3Ljk1IDE3Ljc4OVYyOC4xM0gyLjI4MlYxNy43ODlILjI0M3YxMi4zMjZIMTkuOThWMTcuNzg5eiIvPjwvc3ZnPg==)}.scylla-icon--summit{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6IzRkNGQ0ZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0ibTE2LjUgMjIgMS02LjUtMTAgLjAzIDEgNi40MyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTMuNDYgMTJBNS42OSA1LjY5IDAgMCAxIDUgNy41IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MS4xcHgiLz48cGF0aCBkPSJNMTQuNjIgNWEyLjMzIDIuMzMgMCAwIDEtMi4yNSAyLjVjLTEuMzMgMC0yLTEuMTItMS45NS0yLjQ0cy43LTIuNSAyLTIuNDhBMi4yNyAyLjI3IDAgMCAxIDE0LjYyIDVNMTcuNTggMTJhMy4yMyAzLjIzIDAgMCAwLTMuNDYtMy41SDExQTMuMjYgMy4yNiAwIDAgMCA3LjUgMTIiIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjQuOTQiIGN5PSI2Ljk2IiByPSIxLjAxIiBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjFweDtmaWxsOiM0ZDRkNGQiLz48cGF0aCBkPSJNNy41NCAxOC41SDQuNWwtMi02aDIwbC0yIDZoLTMiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--support{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTE4LjE5IDcuNWExMCAxMCAwIDAgMSAuMjEgMi4wN2MwIDQuMzYtMi42MyA2LjkzLTUuOSA2Ljkzcy01Ljk0LTIuNTctNS45NC02LjkzYTEwLjUgMTAuNSAwIDAgMSAuMjItMi4xMiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTcuNjcgMi4yM0E2LjU4IDYuNTggMCAwIDEgMTIuNS41YTUuNjUgNS42NSAwIDAgMSA0LjI5IDEuN2MxLjkzIDEuOTQgMi4zNSA1LjA3IDIuNDMgNi43MmExLjUgMS41IDAgMCAwLS43OS4wNSA5IDkgMCAwIDAtLjA4LTEuMTZoMGE1LjUzIDUuNTMgMCAwIDEtMS43Ny0yLjM0TDE2LjQ5IDVsLS4zOC4yMkExOSAxOSAwIDAgMSA2LjggNy4zOGEuNTIuNTIgMCAwIDAtLjQyLjE2Yy0uMjMuMjQtLjE1LjY1LS4wNyAxLjA4IDAgLjExIDAgLjIyLjA1LjMyYTEuNCAxLjQgMCAwIDAtLjU4IDBjLS4xLTEuNDUtLjA2LTQuNjggMS44OS02LjcxTTYuMzggOWMtLjY1LS4wOC0xIC4xLTEuMTQuNzlhMi4wNiAyLjA2IDAgMCAwIDEuMzcgMi4yOU0xOC41NiA5Yy42NS0uMDggMS4wNS4xIDEuMTQuNzlhMi4wNiAyLjA2IDAgMCAxLTEuMzcgMi4yOU05LjUgMTguMjNWMTUuNU0xNS41IDE1LjV2Mi43M00yLjUgMjQuMTZjLjI0LTIgLjU5LTMuNjMgMi40My00LjQ5YTI0LjMgMjQuMyAwIDAgMSA0LjgyLTEuMzdNMjIuNSAyNC4zM2MtLjI0LTItLjQyLTMuOC0yLjI2LTQuNjZhMjQuMyAyNC4zIDAgMCAwLTQuODItMS4zNyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1LjM5IDE4LjM5YTQuMzcgNC4zNyAwIDAgMS0yLjkxIDEuMDcgNC40MiA0LjQyIDAgMCAxLTIuODktMS4wNSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTExIDEzaDN2MmgtM3oiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTguMDcgMTJhOS4yIDkuMiAwIDAgMS01LjUzIDIuMDciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48L2c+PC9zdmc+)}.scylla-icon--tech-talks{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTguMzkgNC41SDIzLjV2MTNoLTE1IiBjbGFzcz0iY2xzLTEiLz48Y2lyY2xlIGN4PSI0LjUiIGN5PSI2LjUiIHI9IjIiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNMS41IDkuNWgybC44Ljg2LjctLjg2aDUuNThhMSAxIDAgMSAxIDAgMkg2LjV2MTAuODhhMSAxIDAgMCAxLTEgMS4xMiAxIDEgMCAwIDEtMS0xIDEgMSAwIDAgMS0xIDEgLjkzLjkzIDAgMCAxLTEtMXYtNmMtLjc4IDAtMi0uNDctMi0xdi01YTEgMSAwIDAgMSAxLTEiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--testing{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTYuNSA2LjVoMTJ2MTJoLTEyeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTQuNSA0LjVoMTZ2MTZoLTE2eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTguNSAxMC41IDUgNSAxMS0xMiIgY2xhc3M9ImNscy0xIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--thumbs-up{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXRodW1icy11cCI+PHBhdGggZD0iTTE0IDlWNWEzIDMgMCAwIDAtMy0zbC00IDl2MTFoMTEuMjhhMiAyIDAgMCAwIDItMS43bDEuMzgtOWEyIDIgMCAwIDAtMi0yLjN6TTcgMjJINGEyIDIgMCAwIDEtMi0ydi03YTIgMiAwIDAgMSAyLTJoMyIvPjwvc3ZnPg==)}.scylla-icon--thumbs-down{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXRodW1icy1kb3duIj48cGF0aCBkPSJNMTAgMTV2NGEzIDMgMCAwIDAgMyAzbDQtOVYySDUuNzJhMiAyIDAgMCAwLTIgMS43bC0xLjM4IDlhMiAyIDAgMCAwIDIgMi4zem03LTEzaDIuNjdBMi4zMSAyLjMxIDAgMCAxIDIyIDR2N2EyLjMxIDIuMzEgMCAwIDEtMi4zMyAySDE3Ii8+PC9zdmc+)}.scylla-icon--tip{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEyIDI0QzUuNCAyNCAwIDE4LjYgMCAxMlM1LjQgMCAxMiAwczEyIDUuNCAxMiAxMi01LjQgMTItMTIgMTJtMC0yMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDIiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTEgMTZjLS4zIDAtLjUtLjEtLjctLjNsLTMtM2MtLjQtLjQtLjQtMSAwLTEuNHMxLS40IDEuNCAwbDMgM2MuNC40LjQgMSAwIDEuNC0uMi4yLS40LjMtLjcuMyIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMSAxNmMtLjMgMC0uNS0uMS0uNy0uMy0uNC0uNC0uNC0xIDAtMS40bDYtNmMuNC0uNCAxLS40IDEuNCAwcy40IDEgMCAxLjRsLTYgNmMtLjIuMi0uNC4zLS43LjMiLz48L3N2Zz4=)}.scylla-icon--training{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0iTTE3LjUgMTUuNUguNXYtMTNoMThNNS41IDI1bDQtNC4zIDQgNC4zIiBjbGFzcz0iY2xzLTEiLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjQiIHI9IjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjxwYXRoIGQ9Ik0yMy40MSA3LjVoLTEuNTJMMjEgOWwtLjktMS41SDEzQTEuOCAxLjggMCAwIDAgMTEuNSA5YTEuOCAxLjggMCAwIDAgMS41IDEuNWg0LjV2MTMuMjRBMS40MSAxLjQxIDAgMCAwIDE5IDI1YTEuNDIgMS40MiAwIDAgMCAxLjUtMS4yMiAxLjUzIDEuNTMgMCAwIDAgMyAwdi03LjExYTEuMTEgMS4xMSAwIDAgMCAxLjA5LTEuMThWOC42N2ExLjE4IDEuMTggMCAwIDAtMS4xOC0xLjE3TTkuNSAxNS40NHY1LjM4IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--triangle-down{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI1IiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSIjM2EyZDU1IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0wIDAgNSA1IDUtNXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==)}.scylla-icon--university{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTEuNSA4LjUgMTEtNCAxMSA0djNsLTExIDQtMTEtNHoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik01LjUgMTIuNXY1YTEyLjQ2IDEyLjQ2IDAgMCAwIDcgMiAxMS4yIDExLjIgMCAwIDAgNy0ydi01IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMTMuNSA5LjUgOCAxLjIzdjguNzdNMjIuNSAxNi41djMiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--users-blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIzLjUgMi41aC0yMnYxNmgxM3Y0LjE3bDQuMDQtNC4xNyA0Ljk2LS4wNHoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOThweCIvPjxwYXRoIGQ9Ik0xMC44NSA4QTEwLjQgMTAuNCAwIDAgMSAxMSA5LjVjMCAyLjQ3LTEuMjEgNC0zIDRzLTMuNS0yLTMuNS00LjVhNC4yIDQuMiAwIDAgMSAwLTEiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik01LjIgNS4wN2EzLjIyIDMuMjIgMCAwIDEgMi41LTEgMy4xNiAzLjE2IDAgMCAxIDIuNCAxIDYuMjIgNi4yMiAwIDAgMSAxLjMgMy44MS43NC43NCAwIDAgMC0uNDIgMGMwLS4yNCAwLS40NC0uMDUtLjY2aDBBMyAzIDAgMCAxIDEwIDYuOXYtLjI0bC0uMjEuMTJBOS42IDkuNiAwIDAgMSA0LjczIDhhLjI1LjI1IDAgMCAwLS4yMi4wOWMtLjEzLjE0LS4wOS4zNyAwIC42MXYuMThhLjkuOSAwIDAgMC0uMzIgMEE1LjM3IDUuMzcgMCAwIDEgNS4yIDUuMDdNNC41MSA4LjkzYy0uMzUgMC0uNTcuMDUtLjYxLjQ0YTEuMTcgMS4xNyAwIDAgMCAuNzMgMS4zTTExIDguOTNjLjM2IDAgLjU3LjA1LjYyLjQ0YTEuMTcgMS4xNyAwIDAgMS0uNzQgMS4zTTYuMzEgMTQuMTN2LS44NE05LjI1IDEzLjE5di45NE0yLjQyIDE4Yy4xMy0xLjE1LjU4LTIuNTIgMS41OC0zYTE1IDE1IDAgMCAxIDIuMzEtLjgyTTEzLjUgMThjLS4xMy0xLjE1LS41MS0yLjUyLTEuNS0zcy0yLjUtMS0yLjUtMSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTkuMzQgMTQuMjJhMi4yMyAyLjIzIDAgMCAxLTEuNTYuNjEgMi4zMiAyLjMyIDAgMCAxLTEuNTUtLjU5TTIxLjUgNi41aC03TTIxLjUgOS41aC03TTE4LjUgMTIuNWgtNCIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--warning{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PG1hc2sgaWQ9ImEiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMSIgeD0iMCIgeT0iMSIgbWFzay10eXBlPSJhbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZmlsbD0iIzA2MTkzOCIgZD0iTTMuNSAyMmMtLjUgMC0xLS4xLTEuNS0uNEMuNiAyMC44LjEgMTguOS45IDE3LjVMOS40IDMuM2MuMy0uNC42LS44IDEtMSAuNy0uNCAxLjUtLjUgMi4zLS4zczEuNC43IDEuOSAxLjRMMjMgMTcuNWMuMy41LjQgMSAuNCAxLjUgMCAuOC0uMyAxLjYtLjkgMi4xLS41LjYtMS4yLjktMiAuOXptNy42LTE3LjZMMi43IDE4LjVjLS4zLjUtLjEgMS4xLjQgMS40LjEuMS4zLjEuNC4xaDE2LjljLjMgMCAuNS0uMS43LS4zcy4zLS40LjMtLjdjMC0uMiAwLS4zLS4xLS41TDEyLjkgNC40Yy0uMy0uNS0uOS0uNi0xLjQtLjQtLjIuMS0uMy4yLS40LjQiLz48cGF0aCBmaWxsPSIjMDYxOTM4IiBkPSJNMTIgMTRjLS42IDAtMS0uNC0xLTFWOWMwLS42LjQtMSAxLTFzMSAuNCAxIDF2NGMwIC42LS40IDEtMSAxTTEyIDE4Yy0uMyAwLS41LS4xLS43LS4zcy0uMy0uNC0uMy0uN2MwLS4xIDAtLjMuMS0uNHMuMS0uMi4yLS4zLjItLjIuMy0uMmMuMi0uMS40LS4xLjYtLjEuMSAwIC4xIDAgLjIuMS4xIDAgLjEgMCAuMi4xIDAgMCAuMS4xLjIuMS4xLjEuMi4yLjIuM3MuMS4zLjEuNGMwIC4zLS4xLjUtLjMuNy0uMy4yLS41LjMtLjguMyIvPjwvbWFzaz48ZyBtYXNrPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjMDYxOTM4IiBkPSJNMCAwaDI0djI0SDB6Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--webinars{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTEuNSA1LjVoMjJ2MTRoLTIyeiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjxwYXRoIGQ9Ik05LjQ3IDIwLjV2MS44OE0xNS41IDIwLjV2Mk02LjUgMjIuNWgxMiIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0ibTkgOSA3LjUgMy41M0w5IDE2eiIgc3R5bGU9ImZpbGw6Z3JheSIvPjwvZz48L3N2Zz4=)}.scylla-icon--whitepapers{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTggOWg4djJIOHoiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTQuMDYgMS41IDMuNSAxLjUyVjIzLjVoMTdWN3oiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0xNC4zMiAxLjQydjMuMzdhMi4wNiAyLjA2IDAgMCAwIDIuMDggMi4xaDMuNjciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNNi41IDE5LjVoNE0xMy41IDE5LjVoNE02LjUgMTYuNWg0TTEzLjUgMTYuNWg0TTYuNSAxMy41aDRNMTMuNSAxMy41aDQiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--workshop{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkfS5jbHMtMXtzdHJva2UtbWl0ZXJsaW1pdDoxMH0uY2xzLTJ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTEuNSA1LjVoMjJ2MTRoLTIyeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTkuNSAxOS41LS4wMyAyLjg4TTE1LjUgMTkuNXYzTTYuNSAyMi41aDEyIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJtNCA4IDIgOCAuOTctMy45NUwxMSAxMnoiIHN0eWxlPSJmaWxsOiM0ZDRkNGQiLz48cGF0aCBkPSJtNi40NyAxMS4zNCAzLjM3IDQuMjgiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.button{background:transparent;border:1px solid var(--text-color);border-radius:4px;color:var(--text-color);display:inline;font-size:14px;letter-spacing:1px;line-height:21px;margin:0;padding:12px 14px}.button:focus,.button:hover{background:transparent;color:var(--link-color);text-decoration:none}.button--reverse{border:0}.button--reverse,.button--reverse:focus,.button--reverse:hover{background:var(--bg-color)}.tooltip{background-color:var(--tooltip-bg);border:0;border-radius:4px;font-size:12px;max-width:50%;padding:6px}.tooltip:before,.tooltip:empty{display:none!important}.has-tip{border:0;cursor:pointer}.content .has-tip{cursor:help;font-weight:inherit;text-decoration:underline;text-decoration-style:dotted}.scylla-dropdown{color:var(--text-color);font-size:14px;line-height:20px}.scylla-dropdown a,.scylla-dropdown a:focus,.scylla-dropdown a:hover{color:var(--text-emphasis)!important;padding:0!important}.scylla-dropdown__item{font-size:16px;padding:15px}.scylla-dropdown__title{align-items:center;color:inherit;display:flex!important;position:static!important}.scylla-dropdown__title:after{display:none!important}.scylla-dropdown__title .chevron{min-height:5px;width:10px}.scylla-dropdown__content{background:var(--white);border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);font-size:16px;list-style:none;margin-top:15px;overflow:hidden;padding:16px 0;width:max-content}.scylla-dropdown__content li{padding:7px 16px}.scylla-dropdown__content li a{align-items:center;display:flex}.scylla-dropdown__content li i{font-size:24px;margin-right:10px}.enlarge-image{cursor:zoom-in}.enlarge-image-reveal{background:transparent;border:none;cursor:zoom-out;padding:0;text-align:center;width:fit-content}.enlarge-image-reveal img{background-color:var(--white);padding:15px}.header{background-color:var(--card-bg);box-shadow:0 2px 22px rgba(0,0,0,.1);justify-content:space-between;padding:12.75px 0;position:fixed;width:100%;z-index:99}.header,.header-logo{align-items:center;display:flex}.header-logo{margin-left:20px;width:auto}.header-logo__img{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0ze2ZpbGw6IzRkOWJiNn0uY2xzLTR7ZmlsbDojM2IyZDU1fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8xIj48cGF0aCBkPSJNMTg1LjYgMTAzLjFjMi4xIDMuMSA0LjggNS41IDggNi45IDMuMyAxLjUgNi42IDIuMiAxMC4xIDIuMnMzLjktLjMgNS45LS45IDMuOC0xLjUgNS41LTIuN2MxLjYtMS4yIDMtMi43IDQtNC41czEuNi0zLjggMS42LTYuMi0xLTUuOC0zLjEtNy41LTQuNy0zLjItNy44LTQuM2MtMy4xLTEuMi02LjUtMi4zLTEwLjEtMy40LTMuNy0xLjEtNy0yLjYtMTAuMS00LjVxLTQuNjUtMi44NS03LjgtNy44Yy0yLjEtMy4zLTMuMS03LjctMy4xLTEzLjJzLjUtNS4yIDEuNi04IDIuOC01LjQgNS4xLTcuNyA1LjMtNC4zIDktNS45cTUuNTUtMi40IDEzLjItMi40YzcuNjUgMCA5LjEuNiAxMy40IDEuOXM4IDMuOSAxMS4yIDcuOWwtOS40IDguNmMtMS41LTIuMy0zLjUtNC4xLTYuMi01LjQtMi43LTEuNC01LjctMi4xLTkuMS0yLjFzLTUuOS40LTggMS4zcS0zLjE1IDEuMi01LjEgMy4zYy0xLjMgMS4zLTIuMiAyLjgtMi43IDQuM3MtLjggMi45LS44IDQuMmMwIDMuNiAxIDYuNCAzLjEgOC4zczQuNyAzLjUgNy44IDQuNyA2LjUgMi4zIDEwLjEgMy4zYzMuNyAxIDcgMi4zIDEwLjEgNHM1LjcgNC4xIDcuOCA3IDMuMSA3IDMuMSAxMi4xLS44IDcuOC0yLjQgMTEuMS0zLjcgNi4xLTYuMyA4LjNjLTIuNyAyLjMtNS44IDQtOS40IDUuMnMtNy41IDEuOC0xMS42IDEuOC0xMC43LTEtMTUuNi0yLjktOC44LTQuOS0xMS43LTguOWw5LjUtOC4yWk0yODYuMSA3OXEtMy0zLjE1LTYuMy00LjhjLTIuMi0xLjEtNC45LTEuNi03LjktMS42cy01LjYuNS03LjggMS42LTQuMSAyLjYtNS42IDQuNS0yLjYgNC4xLTMuNCA2LjVjLS44IDIuNS0xLjEgNS0xLjEgNy43cy40IDUuMiAxLjMgNy41Yy45IDIuNCAyLjEgNC40IDMuNyA2LjJzMy41IDMuMiA1LjggNC4yIDQuOCAxLjUgNy42IDEuNSA1LjctLjUgNy45LTEuNnEzLjMtMS42NSA2LTQuOGw3LjcgNy43Yy0yLjggMy4xLTYuMSA1LjQtOS44IDYuOHMtNy43IDIuMS0xMS45IDIuMS04LjUtLjctMTIuMS0yLjJjLTMuNy0xLjUtNi44LTMuNS05LjUtNi4xcy00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4xIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4zIDYzLjhoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN0gzNTZsLTI3LjIgNjkuNmMtMSAyLjUtMiA0LjgtMyA2LjgtMSAyLjEtMi4zIDMuOC0zLjcgNS4zcy0zLjIgMi42LTUuMiAzLjRxLTMgMS4yLTcuNSAxLjJjLTQuNSAwLTMuMi0uMS00LjktLjMtMS42LS4yLTMuMi0uNi00LjgtMS4zbDEuMy05LjljMi4yLjkgNC4zIDEuMyA2LjUgMS4zczMuMS0uMiA0LjMtLjdjMS4yLS40IDIuMi0xLjEgMy0xLjlxMS4yLTEuMiAyLjEtM2MuNi0xLjEgMS4xLTIuNCAxLjctMy45bDMuNS05LjEtMjMuNy01Ny42Wk0zNjQuMSAyOS43SDM3NVYxMjFoLTEwLjl6TTM4Ni43IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi44IDcwLjhjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczgtMi4xIDEyLjEtMi4xIDcuOC41IDEwLjggMS42YzMgMSA1LjUgMi41IDcuNCA0LjIgMS45IDEuOCAzLjQgMy44IDQuMyA2LjFzMS40IDQuNyAxLjQgNy4ydjI5LjJjMCAyIDAgMy45LjEgNS42IDAgMS43LjIgMy4zLjQgNC44aC05LjdjLS4yLTIuOS0uNC01LjgtLjQtOC43aC0uMmMtMi40IDMuNy01LjMgNi4zLTguNiA3LjktMy4zIDEuNS03LjEgMi4zLTExLjUgMi4zcy01LjItLjQtNy42LTEuMXEtMy42LTEuMDUtNi4zLTMuM2MtMS44LTEuNS0zLjItMy4yLTQuMy01LjQtMS0yLjEtMS42LTQuNi0xLjYtNy40cy44LTYuOCAyLjUtOS4zYzEuNi0yLjUgMy45LTQuNSA2LjgtNi4xczYuMi0yLjcgMTAtMy40IDcuOS0xIDEyLjMtMWg4di0yLjRjMC0xLjUtLjMtMi45LS44LTQuMy0uNi0xLjUtMS40LTIuOC0yLjUtMy45LTEuMS0xLjItMi41LTIuMS00LjItMi44cy0zLjctMS02LTEtMy45LjItNS41LjYtMyAuOS00LjMgMS41LTIuNSAxLjMtMy41IDIuMS0yLjEgMS42LTMgMi4zbC02LjUtNi44Wm0zMC43IDIyLjdjLTIuNiAwLTUuMi4xLTcuOS40cy01LjIuOC03LjQgMS42LTQgMS45LTUuNCAzLjQtMi4xIDMuMy0yLjEgNS42YzAgMy4zIDEuMSA1LjcgMy4zIDcuMSAyLjIgMS41IDUuMiAyLjIgOSAyLjJzNS41LS41IDcuNi0xLjVxMy4xNS0xLjUgNS4xLTMuOWMxLjMtMS42IDIuMi0zLjQgMi44LTUuNHMuOC0zLjkuOC01Ljl2LTMuNnpNNDczLjggMzUuNWgyOS44cTkgMCAxNS45IDIuMWM0LjYgMS40IDguNSAzLjIgMTEuOCA1LjVzNi4xIDQuOSA4LjMgNy45IDQgNiA1LjMgOS4yYzEuMyAzLjEgMi4yIDYuMyAyLjggOS40cy44IDYgLjggOC43cTAgOC4yNS0zIDE1LjljLTIgNS4xLTUgOS43LTguOSAxMy42LTQgNC04LjggNy4yLTE0LjcgOS42LTUuOCAyLjQtMTIuNiAzLjYtMjAuMiAzLjZoLTI3Ljl6bTExLjYgNzQuN0g1MDBjNC45IDAgOS42LS43IDE0LTJzOC4yLTMuMyAxMS41LTYgNS45LTYgNy45LTEwYzEuOS00IDIuOS04LjYgMi45LTEzLjlzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC40cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40djYzLjhaTTU2MS43IDM1LjVoMjkuN2MzLjcgMCA3LjEuNCAxMC4zIDEuM3M1LjkgMi4yIDguMiAzLjlxMy40NSAyLjU1IDUuNCA2LjZjMS4zIDIuNyAyIDUuOSAyIDkuNXMtMS40IDguOS00LjEgMTItNi4zIDUuNC0xMC42IDYuOHYuMmMyLjYuMiA1IC44IDcuMiAyIDIuMyAxLjIgNC4yIDIuNyA1LjkgNC42IDEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjRWMzUuNVpNNTczLjMgNzFoMTUuOGMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4ydjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yIDEuOC0xLjEgMy40LTIuNiA0LjctNC40IDEuMy0xLjkgMS45LTQuMyAxLjktNy40IDAtNS4xLTEuNy04LjktNS0xMS40cy03LjgtMy44LTEzLjQtMy44aC0xNy4ydjI5LjdaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNODYuMyA0LjJDNTMuNCA0LjIgMzAuNCAyNC43IDMwLjQgNTRzNC45IDM0LjggOS4xIDU1LjhjMyAxNS4xIDUuNiAyNy4zIDUuNyAyNy42LjggMy43IDQuNCA2LjEgOC4yIDUuNWguOGMwLS4xLS42LS43LS42LS43LTEuMS0xLjEtMS44LTIuNC0yLjMtMy44LS4yLS44LS4zLTEuNS0uNC0yLjEgMC0uMyAwLS42LS4xLS45bC0xLjUtOC45Yy0uNi00LTEuMy04LTEuOC0xMS44IDAtLjMuMS0uNS40LS41cy41LjEuNS40cTEuMiA1LjcgMi40IDExLjdsMS43IDguOGMwIC4zLjEuNi4yLjkuMS43LjMgMS40LjQgMiAuNSAxLjUgMS41IDIuOCAyLjggMy44LjEuMS4zLjIuNC4zLjguNCAxLjYuNyAyLjUuOS45LjEgMS44LjEgMi42IDAgLjktLjIgMS45LS42IDIuNy0xLjJsLjMtLjItLjItLjNjLS43LS45LTEuMS0xLjktMS40LTMtLjItLjgtLjMtMS41LS4zLTIuMnYtLjlsLS45LTguOWMtLjQtNC4xLS43LTguMS0xLTExLjkgMC0uMSAwLS4yLjEtLjMgMCAwIC4yLS4yLjMtLjIuMyAwIC41LjIuNS40LjUgMy44IDEuMSA3LjggMS42IDExLjhsMS4xIDguOWMwIC4zIDAgLjUuMS44IDAgLjcuMiAxLjQuMyAyIC4yLjcuNCAxLjMuOCAxLjkuNS45IDEuMiAxLjYgMiAyLjIgMCAwIDAgLjEuMS4xIDEuNCAxIDMuMyAxLjQgNSAxLjFzMy4zLTEuMiA0LjUtMi41Yy4zLS4zLjUtLjcuNy0xLjF2LS40Yy0uMS0uNC0uMi0uOC0uNC0xLjItLjEtLjYtLjItMS40LS4yLTIuM3YtNC40Yy0uMi01LjYtLjItMTEuMy0uMi0xNy42IDAtLjMuMi0uNS41LS41cy41LjIuNS40Yy40IDYuMy43IDEyIC45IDE3LjZsLjIgNC40YzAgLjggMCAxLjQuMiAyIC4xLjUuMyAxLjIuNyAxLjh2LjFjMS4yIDIuMiAzLjYgMy43IDYuMSAzLjdoLjFjMi41IDAgNS0xLjQgNi4zLTMuNy4zLS41LjUtMS4xLjctMS44LjEtLjYuMi0xLjIuMi0xLjlsLjItNC41Yy4yLTUuMy41LTExIC45LTE3LjYgMC0uMy4yLS41LjUtLjQuMiAwIC40LjIuNC41IDAgNi42IDAgMTIuMy0uMSAxNy42djQuNGMwIC42IDAgMS41LS4zIDIuMyAwIC40LS4yLjgtLjMgMS4ydi40Yy4yLjQuNS43LjcgMS4xIDEuMSAxLjQgMi43IDIuMyA0LjUgMi41IDEuNy4zIDMuNi0uMSA1LTEuMWguMWMuOC0uNiAxLjUtMS40IDItMi4yLjQtLjYuNi0xLjIuOC0xLjkuMS0uNi4yLTEuMy4zLTIgMC0uMyAwLS41LjEtLjhsMS4xLTguOWMuNS00IDEuMS04IDEuNi0xMS44IDAtLjEgMC0uMi4yLS4zLjEgMCAuMi0uMS4zIDAgLjIgMCAuNC4zLjQuNS0uMyAzLjgtLjcgNy44LTEgMTEuOWwtLjkgOC45di44YzAgLjctLjEgMS40LS4zIDIuMi0uMyAxLjEtLjcgMi4xLTEuNCAzbC0uMi4zLjMuMmMuOC42IDEuOCAxIDIuNyAxLjJzMS43LjIgMi42IDBjLjktLjEgMS43LS40IDIuNS0uOS4yIDAgLjMtLjIuNC0uMyAxLjMtLjkgMi4zLTIuMyAyLjgtMy44LjItLjUuMy0xLjMuNC0yIDAtLjMuMS0uNi4yLS44bDEuNy04LjhjLjgtNCAxLjYtOCAyLjQtMTEuNyAwLS4zLjMtLjQuNi0uNC4yIDAgLjQuMy40LjUtLjYgMy44LTEuMiA3LjgtMS44IDExLjhsLTEuNSA4LjljMCAuMy0uMS42LS4xLjktLjEuNy0uMiAxLjMtLjQgMi4yLS40IDEuNC0xLjIgMi43LTIuMyAzLjhsLS41LjUuNy4yYy40IDAgLjguMSAxLjIuMSAzLjMgMCA2LjMtMi4zIDctNS42IDAtLjMgMi44LTEyLjkgNS44LTI4LjUgNC4xLTIwLjkgOS00NyA5LTU1QzE0MiAyNSAxMTkgNC41IDg2LjEgNC41WiIgc3R5bGU9ImZpbGw6IzU3ZDFlNSIvPjxwYXRoIGQ9Ik0xMzMuMSAxMDkuN2MtMy4xIDE1LjctNS43IDI3LjUtNS43IDI3LjctLjcgMy4yLTMuNyA1LjQtNyA1LjRoLTEuNmwuMy0uNGMxLjEtMS4xIDEuOS0yLjQgMi4zLTMuOC4yLS44LjMtMS41LjQtMi4yIDAtLjQgMC0uNi4xLS45bDEuNS04LjljLjYtNCAxLjMtOCAxLjgtMTEuOCAwLS4zLS4yLS43LS41LS43aC0uNWMtLjEgMC0uMy4yLS4zLjQtLjggMy43LTEuNiA3LjctMi40IDExLjdsLTEuNyA4LjhjMCAuMiAwIC40LS4xLjZ2LjNjLS4yLjctLjMgMS40LS41IDEuOS0uNCAxLjUtMS40IDIuOC0yLjcgMy43LS4xIDAtLjMuMi0uNC4zLS43LjQtMS41LjctMi40LjhzLTEuNy4xLTIuNiAwYy0uOS0uMi0xLjgtLjYtMi42LTEuMmgtLjJjMC0uMS4xLS4zLjEtLjMuNy0xIDEuMS0yIDEuNC0zLjEuMi0uOC4zLTEuNS4zLTIuM3YtLjhsLjktOC45Yy40LTQuMS43LTguMSAxLTExLjkgMC0uMy0uMi0uNy0uNi0uNy0uMiAwLS4zIDAtLjUuMS0uMS4xLS4yLjMtLjMuNC0uNSAzLjgtMS4xIDcuNy0xLjYgMTEuOGwtMS4xIDguOWMwIC4zIDAgLjUtLjEuOCAwIC43LS4yIDEuNC0uMyAyLS4yLjYtLjQgMS4yLS44IDEuOC0uNS44LTEuMiAxLjYtMiAyLjEgMCAwIDAgLjEtLjEuMS0xLjQuOS0zLjIgMS4zLTQuOSAxLjFzLTMuMy0xLjEtNC4zLTIuNWMtLjMtLjMtLjUtLjctLjctMXYtLjJjLjEtLjQuMy0uOC40LTEuMi4yLS44LjItMS44LjItMi40di00LjRjLjItNS4yLjItMTAuOS4yLTE3LjYgMC0uMy0uMy0uNi0uNi0uNy0uNCAwLS43LjMtLjcuNi0uNCA2LjUtLjcgMTIuMy0uOSAxNy42bC0uMiA0LjVjMCAuNyAwIDEuMy0uMiAxLjktLjIuNy0uNCAxLjMtLjcgMS44LTEuMiAyLjItMy42IDMuNi02IDMuNkg4NmMtMi40IDAtNC44LTEuNC02LTMuNnYtLjFjLS4zLS42LS41LTEuMi0uNy0xLjctLjEtLjYtLjItMS4yLS4yLTJsLS4yLTQuNGMtLjItNS41LS41LTExLjMtLjktMTcuNiAwLS4zLS4zLS42LS43LS42cy0uNy4zLS43LjdjMCA2LjMgMCAxMiAuMSAxNy42djQuNHEwIDEuNS4zIDIuNGMuMS40LjIuOS40IDEuMnYuMmMtLjIuNC0uNS43LS43IDFhNy42IDcuNiAwIDAgMS00LjMgMi41Yy0xLjcuMy0zLjUtLjEtNC45LTEuMWgtLjFjLS44LS42LTEuNS0xLjMtMi0yLjItLjMtLjYtLjYtMS4yLS44LTEuOC0uMS0uNS0uMi0xLjItLjMtMiAwLS4zIDAtLjUtLjEtLjhsLTEuMS04LjljLS41LTQuMS0xLjEtOC4xLTEuNi0xMS44IDAtLjQtLjMtLjYtLjctLjYtLjIgMC0uMyAwLS40LjItLjEuMS0uMi4zLS4yLjUuMyAzLjguNyA3LjggMSAxMS45bC45IDguOXYuOWMwIC43LjEgMS40LjMgMi4yLjMgMS4xLjcgMi4xIDEuNCAzLjF2LjJjLjEgMCAwIC4xIDAgLjEtLjguNi0xLjcgMS0yLjYgMS4yLS44LjItMS43LjItMi42IDBxLTEuMzUtLjE1LTIuNC0uOWMtLjEgMC0uMy0uMi0uNC0uMy0xLjMtLjktMi4zLTIuMi0yLjctMy43LS4yLS41LS4zLTEuMi0uNC0xLjkgMC0uNC0uMS0uNy0uMi0uOWwtMS43LTguOGMtLjgtNC0xLjYtOC0yLjQtMTEuNyAwLS4zLS40LS42LS43LS41LS40IDAtLjYuNC0uNi43LjYgMy44IDEuMiA3LjggMS44IDExLjhsMS41IDguOWMwIC4zIDAgLjUuMS44LjEuOC4yIDEuNS40IDIuMy40IDEuNCAxLjIgMi43IDIuMyAzLjhsLjMuM2gtLjRjLTMuNy43LTcuMi0xLjctOC01LjMtLjMtMS4zLTMtMTMuMS01LjktMjcuNmw0LjIgMjhjMCAuMi4xLjUuMi43di4yYy4xLjIuMi4zLjMuNSAwIDAgMCAuMi4xLjMgMCAuMS4xLjIuMi40IDAgLjEuMS4yLjIuM3YuMmwuNi45Yy4xLjIuMi4zLjQuNS4xLjIuMy4zLjQuNSAxLjYgMS41IDMuNyAyLjMgNS45IDIuM3MxIDAgMS40LS4xbDMuMi0uNWMuNS4yIDEuMS40IDEuNy40IDEuMS4yIDIuMi4xIDMuMiAwIDEuMS0uMiAyLjMtLjcgMy4zLTEuNWwuOC0uNmMuMi4yLjUuNC44LjZsLjIuMmMxLjcgMS4xIDQgMS42IDYuMSAxLjNzNC4xLTEuNCA1LjQtMy4xYy4yLS4zLjUtLjYuNy0uOSAxLjUgMi41IDQuNCA0LjEgNy4zIDQuMWguMmMyLjkgMCA1LjctMS42IDcuMi00LjEuMi4zLjQuNy43LjkgMS4zIDEuNyAzLjMgMi44IDUuNCAzLjFoMS4zYzEuNyAwIDMuNC0uNSA0LjgtMS40IDAgMCAuMSAwIC4yLS4xLjMtLjIuNS0uNC44LS42bC44LjZxMS41IDEuMDUgMy4zIDEuNWMxIC4yIDIuMS4yIDMuMiAwcTEuMDUtLjE1IDIuMS0uNmwyLjcuN2guMWMuNS4xLjkuMSAxLjQuMSA0IDAgNy42LTIuOSA4LjUtNi44IDAtLjEgNC4yLTI4IDQuMi0yOFoiIGNsYXNzPSJjbHMtNCIvPjxwYXRoIGQ9Ik00Ni40IDE3LjdjLTEwLjEgOC44LTE2IDIxLjQtMTYgMzYuMnMxNC41IDgyLjggMTQuNyA4My41Yy4zIDEuNSAxLjQgMi42IDIuNCAzLjYtMy42LTE3LjQtMTUuNC03My41LTE1LjQtODYuNnM1LjItMjcuMiAxNC4zLTM2LjciIHN0eWxlPSJmaWxsOiM5M2UxZWYiLz48cGF0aCBkPSJNNzEuMyAyNS42QzU3LjkgMjUuNiA0NyAzNi41IDQ3IDQ5LjlzMTAuOSAyNC4zIDI0LjMgMjQuMyAyNC4zLTEwLjkgMjQuMy0yNC4zLTEwLjktMjQuMy0yNC4zLTI0LjMiIGNsYXNzPSJjbHMtMyIvPjxwYXRoIGQ9Ik00NC42IDQ4YzAgMTMuNCAxMC45IDI0LjMgMjQuMyAyNC4zUzkzLjIgNjEuNCA5My4yIDQ4IDgyLjMgMjMuNyA2OC45IDIzLjcgNDQuNiAzNC42IDQ0LjYgNDgiIHN0eWxlPSJmaWxsOiNmZmYiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=);background-position:50%;background-repeat:no-repeat;width:110px}.header-logo__img img{opacity:0}.dark .header-logo__img{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZn0uY2xzLTN7ZmlsbDojNGQ5YmI2fS5jbHMtNHtmaWxsOiMzYjJkNTV9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkxheWVyXzEiPjxwYXRoIGQ9Ik0xODUuNCAxMDMuMWMyLjEgMy4xIDQuOCA1LjUgOCA2LjkgMy4zIDEuNSA2LjYgMi4yIDEwLjEgMi4yczMuOS0uMyA1LjktLjkgMy44LTEuNSA1LjUtMi43YzEuNi0xLjIgMy0yLjcgNC00LjVzMS42LTMuOCAxLjYtNi4yLTEtNS44LTMuMS03LjUtNC43LTMuMi03LjgtNC4zYy0zLjEtMS4yLTYuNS0yLjMtMTAuMi0zLjRxLTUuNTUtMS42NS0xMC4yLTQuNXQtNy44LTcuOGMtMi4xLTMuMy0zLjEtNy43LTMuMS0xMy4ycy41LTUuMiAxLjYtOCAyLjgtNS40IDUuMS03LjcgNS4zLTQuMyA5LTUuOXE1LjU1LTIuNCAxMy4yLTIuNGM3LjY1IDAgOS4xLjYgMTMuNCAxLjlzOCAzLjkgMTEuMiA3LjlsLTkuNCA4LjZjLTEuNS0yLjMtMy41LTQuMS02LjItNS40LTIuNy0xLjQtNS43LTIuMS05LjEtMi4xcy01LjkuNC04IDEuM3EtMy4xNSAxLjItNS4xIDMuM2MtMS4zIDEuMy0yLjIgMi44LTIuNyA0LjNzLS44IDIuOS0uOCA0LjJjMCAzLjYgMSA2LjQgMy4xIDguM3M0LjcgMy41IDcuOCA0LjdxNC42NSAxLjggMTAuMiAzLjNjMy43IDEgNy4xIDIuMyAxMC4yIDRzNS43IDQuMSA3LjggNyAzLjEgNyAzLjEgMTIuMS0uOCA3LjgtMi40IDExLjEtMy43IDYuMS02LjMgOC4zYy0yLjcgMi4zLTUuOCA0LTkuNCA1LjJzLTcuNSAxLjgtMTEuNiAxLjgtMTAuNy0xLTE1LjYtMi45LTguOC00LjktMTEuNy04LjlsOS41LTguMlpNMjg2IDc5cS0zLTMuMTUtNi4zLTQuOGMtMi4yLTEuMS00LjktMS42LTcuOS0xLjZzLTUuNi41LTcuOCAxLjYtNC4xIDIuNi01LjYgNC41LTIuNiA0LjEtMy40IDYuNWMtLjggMi41LTEuMSA1LTEuMSA3LjdzLjQgNS4yIDEuMyA3LjVjLjkgMi40IDIuMSA0LjUgMy43IDYuMnMzLjUgMy4yIDUuOCA0LjIgNC44IDEuNSA3LjYgMS41IDUuNy0uNSA3LjktMS42cTMuMy0xLjY1IDYtNC44bDcuNyA3LjdjLTIuOCAzLjEtNi4xIDUuNC05LjkgNi44LTMuNyAxLjQtNy43IDIuMS0xMS45IDIuMXMtOC41LS43LTEyLjItMi4yLTYuOC0zLjUtOS41LTYuMS00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4yIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4yIDYzLjdoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN2gxMS42bC0yNy4yIDY5LjZjLTEgMi41LTIgNC44LTMgNi44LTEgMi4xLTIuMyAzLjgtMy43IDUuM3MtMy4yIDIuNi01LjIgMy40LTQuNiAxLjItNy41IDEuMi0zLjItLjEtNC45LS4zYy0xLjYtLjItMy4yLS42LTQuOC0xLjNsMS4zLTkuOWMyLjIuOSA0LjMgMS4zIDYuNSAxLjNzMy4xLS4yIDQuMy0uN2MxLjItLjQgMi4yLTEuMSAzLTEuOXExLjItMS4yIDIuMS0zYy42LTEuMSAxLjEtMi40IDEuNy0zLjlsMy41LTkuMS0yMy43LTU3LjZaTTM2My45IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTM4Ni42IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi43IDcwLjdjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczguMS0yLjEgMTIuMS0yLjEgNy44LjUgMTAuOCAxLjZjMyAxIDUuNSAyLjUgNy40IDQuMiAxLjkgMS44IDMuNCAzLjggNC4zIDYuMXMxLjQgNC43IDEuNCA3LjJ2MjkuMmMwIDIgMCAzLjkuMSA1LjYgMCAxLjcuMiAzLjMuNCA0LjhoLTkuN2MtLjItMi45LS40LTUuOC0uNC04LjdoLS4yYy0yLjQgMy43LTUuMyA2LjMtOC42IDcuOS0zLjMgMS41LTcuMSAyLjMtMTEuNSAyLjNzLTUuMi0uNC03LjYtMS4xcS0zLjYtMS4wNS02LjMtMy4zYy0xLjgtMS41LTMuMi0zLjItNC4zLTUuNC0xLTIuMS0xLjYtNC42LTEuNi03LjRzLjgtNi44IDIuNS05LjNjMS42LTIuNSAzLjktNC41IDYuOC02LjFzNi4yLTIuNyAxMC0zLjQgNy45LTEgMTIuMy0xaDh2LTIuNGMwLTEuNS0uMy0yLjktLjgtNC4zLS42LTEuNS0xLjQtMi44LTIuNS0zLjktMS4xLTEuMi0yLjUtMi4xLTQuMi0yLjhzLTMuNy0xLTYtMS0zLjkuMi01LjUuNi0zIC45LTQuMyAxLjUtMi41IDEuMy0zLjUgMi4xLTIuMSAxLjYtMyAyLjNsLTYuNS02LjhabTMwLjcgMjIuOGMtMi42IDAtNS4yLjEtNy45LjRzLTUuMi44LTcuNCAxLjYtNCAxLjktNS40IDMuNC0yLjEgMy4zLTIuMSA1LjZjMCAzLjMgMS4xIDUuNyAzLjMgNy4xIDIuMiAxLjUgNS4yIDIuMiA5IDIuMnM1LjUtLjUgNy42LTEuNXEzLjE1LTEuNSA1LjEtMy45YzEuMy0xLjYgMi4yLTMuNCAyLjgtNS40cy44LTMuOS44LTUuOXYtMy42ek00NzMuOCAzNS41aDI5LjlxOSAwIDE1LjkgMi4xYzQuNiAxLjQgOC41IDMuMiAxMS44IDUuNXM2LjEgNC45IDguMyA3LjkgNCA2IDUuMyA5LjJjMS4zIDMuMSAyLjIgNi4zIDIuOCA5LjRzLjggNiAuOCA4LjdxMCA4LjI1LTMgMTUuOWMtMiA1LjEtNSA5LjctOC45IDEzLjctNCA0LTguOCA3LjItMTQuNyA5LjYtNS44IDIuNC0xMi42IDMuNi0yMC4zIDMuNmgtMjcuOXptMTEuNiA3NC42SDUwMGM0LjkgMCA5LjYtLjcgMTQtMnM4LjItMy4zIDExLjUtNiA1LjktNiA3LjktMTBjMS45LTQgMi45LTguNiAyLjktMTRzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC41cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40VjExMFpNNTYxLjYgMzUuNWgyOS43YzMuNyAwIDcuMi40IDEwLjMgMS4zIDMuMi45IDUuOSAyLjIgOC4yIDMuOXEzLjQ1IDIuNTUgNS40IDYuNmMxLjMgMi43IDIgNS45IDIgOS41cy0xLjQgOC45LTQuMSAxMi02LjMgNS40LTEwLjYgNi44di4yYzIuNi4yIDUgLjggNy4zIDJzNC4yIDIuNyA1LjkgNC42YzEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjR6TTU3My4yIDcxSDU4OWMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4zdjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yczMuNC0yLjYgNC43LTQuNGMxLjMtMS45IDEuOS00LjMgMS45LTcuNCAwLTUuMS0xLjctOC45LTUtMTEuNHMtNy44LTMuOC0xMy40LTMuOGgtMTcuMnYyOS43WiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTg2LjMgNC4yQzUzLjQgNC4yIDMwLjQgMjQuNyAzMC40IDU0czQuOSAzNC44IDkuMSA1NS44YzMgMTUuMSA1LjYgMjcuMyA1LjcgMjcuNi44IDMuNyA0LjQgNi4xIDguMiA1LjVoLjhjMC0uMS0uNi0uNy0uNi0uNy0xLjEtMS4xLTEuOC0yLjQtMi4zLTMuOC0uMi0uOC0uMy0xLjUtLjQtMi4xIDAtLjMgMC0uNi0uMS0uOWwtMS41LTguOWMtLjYtNC0xLjMtOC0xLjgtMTEuOCAwLS4zLjEtLjUuNC0uNXMuNS4xLjUuNHExLjIgNS43IDIuNCAxMS43bDEuNyA4LjhjMCAuMy4xLjYuMi45LjEuNy4zIDEuNC40IDIgLjUgMS41IDEuNSAyLjggMi44IDMuOC4xLjEuMy4yLjQuMy44LjQgMS42LjcgMi41LjkuOS4xIDEuOC4xIDIuNiAwIC45LS4yIDEuOS0uNiAyLjctMS4ybC4zLS4yLS4yLS4zYy0uNy0uOS0xLjEtMS45LTEuNC0zLS4yLS44LS4zLTEuNS0uMy0yLjJ2LS45bC0uOS04LjljLS40LTQuMS0uNy04LjEtMS0xMS45IDAtLjEgMC0uMi4xLS4zIDAgMCAuMi0uMi4zLS4yLjMgMCAuNS4yLjUuNC41IDMuOCAxLjEgNy44IDEuNiAxMS44bDEuMSA4LjljMCAuMyAwIC41LjEuOCAwIC43LjIgMS40LjMgMiAuMi43LjQgMS4zLjggMS45LjUuOSAxLjIgMS42IDIgMi4yIDAgMCAwIC4xLjEuMSAxLjQgMSAzLjMgMS40IDUgMS4xczMuMy0xLjIgNC41LTIuNWMuMy0uMy41LS43LjctMS4xdi0uNGMtLjEtLjQtLjItLjgtLjQtMS4yLS4xLS42LS4yLTEuNC0uMi0yLjN2LTQuNGMtLjItNS42LS4yLTExLjMtLjItMTcuNiAwLS4zLjItLjUuNS0uNXMuNS4yLjUuNGMuNCA2LjMuNyAxMiAuOSAxNy42bC4yIDQuNGMwIC44IDAgMS40LjIgMiAuMS41LjMgMS4yLjcgMS44di4xYzEuMiAyLjIgMy42IDMuNyA2LjEgMy43aC4xYzIuNSAwIDUtMS40IDYuMy0zLjcuMy0uNS41LTEuMS43LTEuOC4xLS42LjItMS4yLjItMS45bC4yLTQuNWMuMi01LjMuNS0xMSAuOS0xNy42IDAtLjMuMi0uNS41LS40LjIgMCAuNC4yLjQuNSAwIDYuNiAwIDEyLjMtLjEgMTcuNnY0LjRjMCAuNiAwIDEuNS0uMyAyLjMgMCAuNC0uMi44LS4zIDEuMnYuNGMuMi40LjUuNy43IDEuMSAxLjEgMS40IDIuNyAyLjMgNC41IDIuNSAxLjcuMyAzLjYtLjEgNS0xLjFoLjFjLjgtLjYgMS41LTEuNCAyLTIuMi40LS42LjYtMS4yLjgtMS45LjEtLjYuMi0xLjMuMy0yIDAtLjMgMC0uNS4xLS44bDEuMS04LjljLjUtNCAxLjEtOCAxLjYtMTEuOCAwLS4xIDAtLjIuMi0uMy4xIDAgLjItLjEuMyAwIC4yIDAgLjQuMy40LjUtLjMgMy44LS43IDcuOC0xIDExLjlsLS45IDguOXYuOGMwIC43LS4xIDEuNC0uMyAyLjItLjMgMS4xLS43IDIuMS0xLjQgM2wtLjIuMy4zLjJjLjguNiAxLjggMSAyLjcgMS4yczEuNy4yIDIuNiAwYy45LS4xIDEuNy0uNCAyLjUtLjkuMiAwIC4zLS4yLjQtLjMgMS4zLS45IDIuMy0yLjMgMi44LTMuOC4yLS41LjMtMS4zLjQtMiAwLS4zLjEtLjYuMi0uOGwxLjctOC44Yy44LTQgMS42LTggMi40LTExLjcgMC0uMy4zLS40LjYtLjQuMiAwIC40LjMuNC41LS42IDMuOC0xLjIgNy44LTEuOCAxMS44bC0xLjUgOC45YzAgLjMtLjEuNi0uMS45LS4xLjctLjIgMS4zLS40IDIuMi0uNCAxLjQtMS4yIDIuNy0yLjMgMy44bC0uNS41LjcuMmMuNCAwIC44LjEgMS4yLjEgMy4zIDAgNi4zLTIuMyA3LTUuNiAwLS4zIDIuOC0xMi45IDUuOC0yOC41IDQuMS0yMC45IDktNDcgOS01NUMxNDIgMjUgMTE5IDQuNSA4Ni4xIDQuNVoiIHN0eWxlPSJmaWxsOiM1N2QxZTUiLz48cGF0aCBkPSJNMTMzLjEgMTA5LjdjLTMuMSAxNS43LTUuNyAyNy41LTUuNyAyNy43LS43IDMuMi0zLjcgNS40LTcgNS40aC0xLjZsLjMtLjRjMS4xLTEuMSAxLjktMi40IDIuMy0zLjguMi0uOC4zLTEuNS40LTIuMiAwLS40IDAtLjYuMS0uOWwxLjUtOC45Yy42LTQgMS4zLTggMS44LTExLjggMC0uMy0uMi0uNy0uNS0uN2gtLjVjLS4xIDAtLjMuMi0uMy40LS44IDMuNy0xLjYgNy43LTIuNCAxMS43bC0xLjcgOC44YzAgLjIgMCAuNC0uMS42di4zYy0uMi43LS4zIDEuNC0uNSAxLjktLjQgMS41LTEuNCAyLjgtMi43IDMuNy0uMSAwLS4zLjItLjQuMy0uNy40LTEuNS43LTIuNC44cy0xLjcuMS0yLjYgMGMtLjktLjItMS44LS42LTIuNi0xLjJoLS4yYzAtLjEuMS0uMy4xLS4zLjctMSAxLjEtMiAxLjQtMy4xLjItLjguMy0xLjUuMy0yLjN2LS44bC45LTguOWMuNC00LjEuNy04LjEgMS0xMS45IDAtLjMtLjItLjctLjYtLjctLjIgMC0uMyAwLS41LjEtLjEuMS0uMi4zLS4zLjQtLjUgMy44LTEuMSA3LjctMS42IDExLjhsLTEuMSA4LjljMCAuMyAwIC41LS4xLjggMCAuNy0uMiAxLjQtLjMgMi0uMi42LS40IDEuMi0uOCAxLjgtLjUuOC0xLjIgMS42LTIgMi4xIDAgMCAwIC4xLS4xLjEtMS40LjktMy4yIDEuMy00LjkgMS4xcy0zLjMtMS4xLTQuMy0yLjVjLS4zLS4zLS41LS43LS43LTF2LS4yYy4xLS40LjMtLjguNC0xLjIuMi0uOC4yLTEuOC4yLTIuNHYtNC40Yy4yLTUuMi4yLTEwLjkuMi0xNy42IDAtLjMtLjMtLjYtLjYtLjctLjQgMC0uNy4zLS43LjYtLjQgNi41LS43IDEyLjMtLjkgMTcuNmwtLjIgNC41YzAgLjcgMCAxLjMtLjIgMS45LS4yLjctLjQgMS4zLS43IDEuOC0xLjIgMi4yLTMuNiAzLjYtNiAzLjZIODZjLTIuNCAwLTQuOC0xLjQtNi0zLjZ2LS4xYy0uMy0uNi0uNS0xLjItLjctMS43LS4xLS42LS4yLTEuMi0uMi0ybC0uMi00LjRjLS4yLTUuNS0uNS0xMS4zLS45LTE3LjYgMC0uMy0uMy0uNi0uNy0uNnMtLjcuMy0uNy43YzAgNi4zIDAgMTIgLjEgMTcuNnY0LjRxMCAxLjUuMyAyLjRjLjEuNC4yLjkuNCAxLjJ2LjJjLS4yLjQtLjUuNy0uNyAxYTcuNiA3LjYgMCAwIDEtNC4zIDIuNWMtMS43LjMtMy41LS4xLTQuOS0xLjFoLS4xYy0uOC0uNi0xLjUtMS4zLTItMi4yLS4zLS42LS42LTEuMi0uOC0xLjgtLjEtLjUtLjItMS4yLS4zLTIgMC0uMyAwLS41LS4xLS44bC0xLjEtOC45Yy0uNS00LjEtMS4xLTguMS0xLjYtMTEuOCAwLS40LS4zLS42LS43LS42LS4yIDAtLjMgMC0uNC4yLS4xLjEtLjIuMy0uMi41LjMgMy44LjcgNy44IDEgMTEuOWwuOSA4Ljl2LjljMCAuNy4xIDEuNC4zIDIuMi4zIDEuMS43IDIuMSAxLjQgMy4xdi4yYy4xIDAgMCAuMSAwIC4xLS44LjYtMS43IDEtMi42IDEuMi0uOC4yLTEuNy4yLTIuNiAwcS0xLjM1LS4xNS0yLjQtLjljLS4xIDAtLjMtLjItLjQtLjMtMS4zLS45LTIuMy0yLjItMi43LTMuNy0uMi0uNS0uMy0xLjItLjQtMS45IDAtLjQtLjEtLjctLjItLjlsLTEuNy04LjhjLS44LTQtMS42LTgtMi40LTExLjcgMC0uMy0uNC0uNi0uNy0uNS0uNCAwLS42LjQtLjYuNy42IDMuOCAxLjIgNy44IDEuOCAxMS44bDEuNSA4LjljMCAuMyAwIC41LjEuOC4xLjguMiAxLjUuNCAyLjMuNCAxLjQgMS4yIDIuNyAyLjMgMy44bC4zLjNoLS40Yy0zLjcuNy03LjItMS43LTgtNS4zLS4zLTEuMy0zLTEzLjEtNS45LTI3LjZsNC4yIDI4YzAgLjIuMS41LjIuN3YuMmMuMS4yLjIuMy4zLjUgMCAwIDAgLjIuMS4zIDAgLjEuMS4yLjIuNCAwIC4xLjEuMi4yLjN2LjJsLjYuOWMuMS4yLjIuMy40LjUuMS4yLjMuMy40LjUgMS42IDEuNSAzLjcgMi4zIDUuOSAyLjNzMSAwIDEuNC0uMWwzLjItLjVjLjUuMiAxLjEuNCAxLjcuNCAxLjEuMiAyLjIuMSAzLjIgMCAxLjEtLjIgMi4zLS43IDMuMy0xLjVsLjgtLjZjLjIuMi41LjQuOC42bC4yLjJjMS43IDEuMSA0IDEuNiA2LjEgMS4zczQuMS0xLjQgNS40LTMuMWMuMi0uMy41LS42LjctLjkgMS41IDIuNSA0LjQgNC4xIDcuMyA0LjFoLjJjMi45IDAgNS43LTEuNiA3LjItNC4xLjIuMy40LjcuNy45IDEuMyAxLjcgMy4zIDIuOCA1LjQgMy4xaDEuM2MxLjcgMCAzLjQtLjUgNC44LTEuNCAwIDAgLjEgMCAuMi0uMS4zLS4yLjUtLjQuOC0uNmwuOC42cTEuNSAxLjA1IDMuMyAxLjVjMSAuMiAyLjEuMiAzLjIgMHExLjA1LS4xNSAyLjEtLjZsMi43LjdoLjFjLjUuMS45LjEgMS40LjEgNCAwIDcuNi0yLjkgOC41LTYuOCAwLS4xIDQuMi0yOCA0LjItMjhaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNNDYuNCAxNy43Yy0xMC4xIDguOC0xNiAyMS40LTE2IDM2LjJzMTQuNSA4Mi44IDE0LjcgODMuNWMuMyAxLjUgMS40IDIuNiAyLjQgMy42LTMuNi0xNy40LTE1LjQtNzMuNS0xNS40LTg2LjZzNS4yLTI3LjIgMTQuMy0zNi43IiBzdHlsZT0iZmlsbDojOTNlMWVmIi8+PHBhdGggZD0iTTcxLjMgMjUuNkM1Ny45IDI1LjYgNDcgMzYuNSA0NyA0OS45czEwLjkgMjQuMyAyNC4zIDI0LjMgMjQuMy0xMC45IDI0LjMtMjQuMy0xMC45LTI0LjMtMjQuMy0yNC4zIiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNDQuNiA0OGMwIDEzLjQgMTAuOSAyNC4zIDI0LjMgMjQuM1M5My4yIDYxLjQgOTMuMiA0OCA4Mi4zIDIzLjcgNjguOSAyMy43IDQ0LjYgMzQuNiA0NC42IDQ4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.header-logo__bar{background-color:var(--text-color);border-left:1px solid var(--text-color);height:11.56px;margin:0 7.5px;width:0}.header-logo__text{color:var(--text-color);font-size:10.11px;letter-spacing:.722408px;line-height:12px;text-transform:uppercase}.header-navigation{display:none}.header-button{display:none;margin-left:15px;text-transform:uppercase}.header-search-box{display:none;margin-right:20px;width:200px}.scylla-dropdown__content{background-color:var(--card-bg)}.scylla-dropdown--header .scylla-dropdown__item{font-size:14px}.scylla-dropdown--header .scylla-dropdown__title{text-transform:uppercase}.scylla-dropdown--header .scylla-dropdown__title .chevron{font-size:24px;line-height:.5em;margin-left:4px}.contents.local>ul>li .scylla-dropdown--header .scylla-dropdown__content a:before,.scylla-dropdown--header .scylla-dropdown__content .contents.local>ul>li a:before,.scylla-dropdown--header .scylla-dropdown__content .scylla-icon{min-height:20px;width:20px}@media screen and (min-width:1024px){.header{padding:18px 0}.header-logo__img{width:152px}.header-logo__bar{height:16px;margin:0 10px}.header-logo__text{font-size:14px;letter-spacing:.722408px;line-height:12px;text-transform:uppercase}.header-navigation{align-items:center;display:flex;justify-content:center}.header-search-box{align-items:center;display:flex;flex-direction:row;gap:20px}}@media screen and (min-width:1200px){.header-logo{margin-left:30px;width:357px}.header-search-box{margin-right:30px;max-width:20%;width:318px}.header-button{display:block}}.side-nav{background:var(--navigation-bg);display:none;height:100vh;left:0;line-height:24px;max-height:calc(100vh - 50px);overflow-y:auto;padding:20px 20px 0;position:fixed;top:50px;width:100%;z-index:100}.side-nav__title{font-weight:700;margin-bottom:20px}.side-nav__title a{color:var(--text-color);text-decoration:none}.side-nav__title a:hover{font-weight:700}.side-nav__content{max-width:90%;overflow-wrap:break-word}.side-nav__content label,.side-nav__content label i{align-items:center;display:flex;margin:0;padding:0}.side-nav__content label{color:inherit;font-size:22px;line-height:1;width:12px}.side-nav__content .scylla-icon--expand{height:5px;vertical-align:top;width:10px}.side-nav__content .toctree-checkbox{display:none;position:absolute;right:20px}.side-nav__content .toctree-checkbox~ul{display:none;margin-right:20px}.side-nav__content .toctree-checkbox:checked~ul{display:block}.side-nav__content ul{margin:0}.side-nav__content a:not(.current){color:var(--text-color)}.side-nav__content a:not(.current):hover{color:var(--link-color-hover);font-weight:400}.side-nav__content li{list-style:none;padding:0 0 24px}.side-nav__content li.has-children{align-items:center;display:flex;flex-wrap:wrap}.side-nav__content li.has-children>a{max-width:calc(100% - 15px)}.side-nav__content li.has-children.current{padding-bottom:20px}.side-nav__content li.has-children:hover{color:var(--link-color-hover)}.side-nav__content li.current-page{color:var(--link-color)}.side-nav__content li ul{margin-top:18px;width:100%}.side-nav__content li ul li{border-left:1px solid var(--link-color);padding:4px 0 4px 13px}.side-nav__content li ul ul{margin-left:0}.side-nav__content li .label{display:none}.side-nav__versions{max-width:90%}.side-nav__search,.side-nav__versions .dropdown{margin-bottom:20px}.collapsible-button{background:var(--white);background-color:var(--card-bg);border:0;border-radius:8px;border-radius:50%;bottom:10px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;display:none;font-size:0;left:300px;overflow:hidden;padding:13.5px;position:fixed}.collapsible-button i{display:block;font-size:20px}.side-nav--collapsed .collapsible-button{border-radius:0 30px 30px 0;left:-10px}.side-nav--collapsed .collapsible-button i{transform:rotate(180deg)}.layout--has-banner .side-nav{max-height:calc(100vh - 92.5px)}@media screen and (min-width:1024px){.side-nav{background-color:var(--navigation-bg);display:block;height:100%;left:auto;max-height:calc(100vh - 80px);padding:30px 40px;top:80px;width:286px;z-index:25}.side-nav__content{max-width:100%}.side-nav__search{display:none}.side-nav__versions{max-width:100%}.toctree-checkbox{right:40px}.layout--has-banner .side-nav{max-height:calc(100vh - 150px)}}@media screen and (min-width:1200px){.side-nav{width:357px}.side-nav--collapsed{background-color:transparent;padding-left:0;padding-right:0;width:126px}.side-nav--collapsed .side-nav-content{display:none}.collapsible-button{display:block}}.dark-theme-toggler,.side-nav-toggle{cursor:pointer;font-size:22px}.side-nav-toggle{display:flex;gap:10px;margin-right:20px;position:relative;z-index:300}@media screen and (min-width:1024px){.side-nav-toggle{display:none}}.secondary-side-nav{display:none;height:100%;line-height:24px;padding:20px;width:100%}.secondary-side-nav__content{overflow-wrap:break-word}.secondary-side-nav__content ul{list-style:none;margin:0}.secondary-side-nav__content li{border-bottom:1px solid var(--border-color);display:none;padding:10px 0;word-break:break-word}.secondary-side-nav__content li:last-child{border:0}.secondary-side-nav__content li .label{display:none}.secondary-side-nav__content li a{align-items:baseline;color:var(--text-muted);display:flex;font-size:14px}.secondary-side-nav__content li a:before{content:"";flex-shrink:0;font-size:8px;margin-right:10px;min-height:10px;opacity:.5}.secondary-side-nav__content li a.current,.secondary-side-nav__content li a:hover{color:var(--text-color);font-weight:400}.secondary-side-nav__content li a.current:before,.secondary-side-nav__content li a:hover:before{opacity:1}.secondary-side-nav__content li a.current{font-weight:700}.secondary-side-nav__content>ul>li>ul>li{display:block}.secondary-side-nav__content>ul>li{border:0;display:block}.secondary-side-nav__content>ul>li>a{display:none}@media screen and (min-width:1200px){.secondary-side-nav{display:block;max-height:100vh;max-height:calc(100vh - 80px);overflow-y:auto;padding:60px 60px 60px 20px;position:fixed;top:80px;width:286px}.layout--has-banner .secondary-side-nav{max-height:calc(100vh - 150px)}}.layout{background-color:var(--bg-color);display:flex}.pre-content{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.content{margin-top:50px;max-width:1440px;overflow-wrap:break-word;padding:20px;width:100%}.content .line-block,.content p{line-height:28px;margin-bottom:20px}.content ul{list-style:none}.content ul li:before{color:var(--text-muted);content:"•";float:left;font-family:FontAwesome;font-size:20px;font-weight:700;margin-left:-1em;margin-top:-2px;width:1em}.content ul ul{list-style:circle}.content ul ul li:before{content:""}.content ol ol{list-style:lower-latin}.content img{margin-bottom:30px}.content .inline-icon{font-size:22px}.content .inline-icon.icon-check{color:var(--primary)}.layout--full-width .content{max-width:100%;padding:0;width:100%}.layout--full-width .content .hero-wrapper,.layout--full-width .content .topics-grid{max-width:1190px}.layout--full-width .content.content--collapsed,.layout--full-width:not(.layout--sidebar) .content{margin-left:0}.landing__content{padding:0 16px}@media screen and (min-width:1024px){.content{margin-left:286px;margin-top:80px;min-height:calc(100vh - 260px);padding-bottom:100px;width:calc(100% - 286px)}}@media screen and (min-width:1200px){.content{margin-left:357px;padding:60px 40px 40px;width:calc(100% - 643px)}.content--collapsed{margin-left:126px;width:calc(100% - 412px)}.pre-content{margin-bottom:10px}.landing__content{padding:0 60px}.landing--floating .landing__content{position:relative;top:-70px}}.contents.local>ul{margin-bottom:30px;margin-left:0}.contents.local>ul>li{border-bottom:1px solid rgba(90,94,154,.1);padding:10px 0;word-break:break-word}.contents.local>ul>li:before{content:""}.contents.local>ul>li:last-child{border:0}.contents.local>ul>li ul{display:none}.contents.local>ul>li p{margin:0}.contents.local>ul>li a{font-size:14px}.contents.local>ul>li a:before{content:"";filter:invert(38%) sepia(71%) saturate(6789%) hue-rotate(231deg) brightness(90%) contrast(95%)!important;margin-right:10px;min-height:10px;opacity:.5;width:10px}.contents.local>ul>li a.current:before,.contents.local>ul>li a:hover:before{filter:brightness(0);opacity:1}.topic-title{color:var(--text-muted);font-size:10px;letter-spacing:1.5px;margin-bottom:0;text-transform:uppercase}.notice{margin-top:40px}.footer{background-color:var(--card-bg);box-shadow:0 -4px 10px rgba(0,0,0,.1);padding:30px 0;position:relative;width:100%;z-index:50}.footer-group{margin:0 auto;max-width:1030px;padding:0 20px}.footer-top{align-items:center;border-bottom:1px solid var(--border-color);display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:20px;text-align:center}.footer-logo{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0ze2ZpbGw6IzRkOWJiNn0uY2xzLTR7ZmlsbDojM2IyZDU1fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8xIj48cGF0aCBkPSJNMTg1LjYgMTAzLjFjMi4xIDMuMSA0LjggNS41IDggNi45IDMuMyAxLjUgNi42IDIuMiAxMC4xIDIuMnMzLjktLjMgNS45LS45IDMuOC0xLjUgNS41LTIuN2MxLjYtMS4yIDMtMi43IDQtNC41czEuNi0zLjggMS42LTYuMi0xLTUuOC0zLjEtNy41LTQuNy0zLjItNy44LTQuM2MtMy4xLTEuMi02LjUtMi4zLTEwLjEtMy40LTMuNy0xLjEtNy0yLjYtMTAuMS00LjVxLTQuNjUtMi44NS03LjgtNy44Yy0yLjEtMy4zLTMuMS03LjctMy4xLTEzLjJzLjUtNS4yIDEuNi04IDIuOC01LjQgNS4xLTcuNyA1LjMtNC4zIDktNS45cTUuNTUtMi40IDEzLjItMi40YzcuNjUgMCA5LjEuNiAxMy40IDEuOXM4IDMuOSAxMS4yIDcuOWwtOS40IDguNmMtMS41LTIuMy0zLjUtNC4xLTYuMi01LjQtMi43LTEuNC01LjctMi4xLTkuMS0yLjFzLTUuOS40LTggMS4zcS0zLjE1IDEuMi01LjEgMy4zYy0xLjMgMS4zLTIuMiAyLjgtMi43IDQuM3MtLjggMi45LS44IDQuMmMwIDMuNiAxIDYuNCAzLjEgOC4zczQuNyAzLjUgNy44IDQuNyA2LjUgMi4zIDEwLjEgMy4zYzMuNyAxIDcgMi4zIDEwLjEgNHM1LjcgNC4xIDcuOCA3IDMuMSA3IDMuMSAxMi4xLS44IDcuOC0yLjQgMTEuMS0zLjcgNi4xLTYuMyA4LjNjLTIuNyAyLjMtNS44IDQtOS40IDUuMnMtNy41IDEuOC0xMS42IDEuOC0xMC43LTEtMTUuNi0yLjktOC44LTQuOS0xMS43LTguOWw5LjUtOC4yWk0yODYuMSA3OXEtMy0zLjE1LTYuMy00LjhjLTIuMi0xLjEtNC45LTEuNi03LjktMS42cy01LjYuNS03LjggMS42LTQuMSAyLjYtNS42IDQuNS0yLjYgNC4xLTMuNCA2LjVjLS44IDIuNS0xLjEgNS0xLjEgNy43cy40IDUuMiAxLjMgNy41Yy45IDIuNCAyLjEgNC40IDMuNyA2LjJzMy41IDMuMiA1LjggNC4yIDQuOCAxLjUgNy42IDEuNSA1LjctLjUgNy45LTEuNnEzLjMtMS42NSA2LTQuOGw3LjcgNy43Yy0yLjggMy4xLTYuMSA1LjQtOS44IDYuOHMtNy43IDIuMS0xMS45IDIuMS04LjUtLjctMTIuMS0yLjJjLTMuNy0xLjUtNi44LTMuNS05LjUtNi4xcy00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4xIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4zIDYzLjhoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN0gzNTZsLTI3LjIgNjkuNmMtMSAyLjUtMiA0LjgtMyA2LjgtMSAyLjEtMi4zIDMuOC0zLjcgNS4zcy0zLjIgMi42LTUuMiAzLjRxLTMgMS4yLTcuNSAxLjJjLTQuNSAwLTMuMi0uMS00LjktLjMtMS42LS4yLTMuMi0uNi00LjgtMS4zbDEuMy05LjljMi4yLjkgNC4zIDEuMyA2LjUgMS4zczMuMS0uMiA0LjMtLjdjMS4yLS40IDIuMi0xLjEgMy0xLjlxMS4yLTEuMiAyLjEtM2MuNi0xLjEgMS4xLTIuNCAxLjctMy45bDMuNS05LjEtMjMuNy01Ny42Wk0zNjQuMSAyOS43SDM3NVYxMjFoLTEwLjl6TTM4Ni43IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi44IDcwLjhjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczgtMi4xIDEyLjEtMi4xIDcuOC41IDEwLjggMS42YzMgMSA1LjUgMi41IDcuNCA0LjIgMS45IDEuOCAzLjQgMy44IDQuMyA2LjFzMS40IDQuNyAxLjQgNy4ydjI5LjJjMCAyIDAgMy45LjEgNS42IDAgMS43LjIgMy4zLjQgNC44aC05LjdjLS4yLTIuOS0uNC01LjgtLjQtOC43aC0uMmMtMi40IDMuNy01LjMgNi4zLTguNiA3LjktMy4zIDEuNS03LjEgMi4zLTExLjUgMi4zcy01LjItLjQtNy42LTEuMXEtMy42LTEuMDUtNi4zLTMuM2MtMS44LTEuNS0zLjItMy4yLTQuMy01LjQtMS0yLjEtMS42LTQuNi0xLjYtNy40cy44LTYuOCAyLjUtOS4zYzEuNi0yLjUgMy45LTQuNSA2LjgtNi4xczYuMi0yLjcgMTAtMy40IDcuOS0xIDEyLjMtMWg4di0yLjRjMC0xLjUtLjMtMi45LS44LTQuMy0uNi0xLjUtMS40LTIuOC0yLjUtMy45LTEuMS0xLjItMi41LTIuMS00LjItMi44cy0zLjctMS02LTEtMy45LjItNS41LjYtMyAuOS00LjMgMS41LTIuNSAxLjMtMy41IDIuMS0yLjEgMS42LTMgMi4zbC02LjUtNi44Wm0zMC43IDIyLjdjLTIuNiAwLTUuMi4xLTcuOS40cy01LjIuOC03LjQgMS42LTQgMS45LTUuNCAzLjQtMi4xIDMuMy0yLjEgNS42YzAgMy4zIDEuMSA1LjcgMy4zIDcuMSAyLjIgMS41IDUuMiAyLjIgOSAyLjJzNS41LS41IDcuNi0xLjVxMy4xNS0xLjUgNS4xLTMuOWMxLjMtMS42IDIuMi0zLjQgMi44LTUuNHMuOC0zLjkuOC01Ljl2LTMuNnpNNDczLjggMzUuNWgyOS44cTkgMCAxNS45IDIuMWM0LjYgMS40IDguNSAzLjIgMTEuOCA1LjVzNi4xIDQuOSA4LjMgNy45IDQgNiA1LjMgOS4yYzEuMyAzLjEgMi4yIDYuMyAyLjggOS40cy44IDYgLjggOC43cTAgOC4yNS0zIDE1LjljLTIgNS4xLTUgOS43LTguOSAxMy42LTQgNC04LjggNy4yLTE0LjcgOS42LTUuOCAyLjQtMTIuNiAzLjYtMjAuMiAzLjZoLTI3Ljl6bTExLjYgNzQuN0g1MDBjNC45IDAgOS42LS43IDE0LTJzOC4yLTMuMyAxMS41LTYgNS45LTYgNy45LTEwYzEuOS00IDIuOS04LjYgMi45LTEzLjlzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC40cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40djYzLjhaTTU2MS43IDM1LjVoMjkuN2MzLjcgMCA3LjEuNCAxMC4zIDEuM3M1LjkgMi4yIDguMiAzLjlxMy40NSAyLjU1IDUuNCA2LjZjMS4zIDIuNyAyIDUuOSAyIDkuNXMtMS40IDguOS00LjEgMTItNi4zIDUuNC0xMC42IDYuOHYuMmMyLjYuMiA1IC44IDcuMiAyIDIuMyAxLjIgNC4yIDIuNyA1LjkgNC42IDEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjRWMzUuNVpNNTczLjMgNzFoMTUuOGMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4ydjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yIDEuOC0xLjEgMy40LTIuNiA0LjctNC40IDEuMy0xLjkgMS45LTQuMyAxLjktNy40IDAtNS4xLTEuNy04LjktNS0xMS40cy03LjgtMy44LTEzLjQtMy44aC0xNy4ydjI5LjdaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNODYuMyA0LjJDNTMuNCA0LjIgMzAuNCAyNC43IDMwLjQgNTRzNC45IDM0LjggOS4xIDU1LjhjMyAxNS4xIDUuNiAyNy4zIDUuNyAyNy42LjggMy43IDQuNCA2LjEgOC4yIDUuNWguOGMwLS4xLS42LS43LS42LS43LTEuMS0xLjEtMS44LTIuNC0yLjMtMy44LS4yLS44LS4zLTEuNS0uNC0yLjEgMC0uMyAwLS42LS4xLS45bC0xLjUtOC45Yy0uNi00LTEuMy04LTEuOC0xMS44IDAtLjMuMS0uNS40LS41cy41LjEuNS40cTEuMiA1LjcgMi40IDExLjdsMS43IDguOGMwIC4zLjEuNi4yLjkuMS43LjMgMS40LjQgMiAuNSAxLjUgMS41IDIuOCAyLjggMy44LjEuMS4zLjIuNC4zLjguNCAxLjYuNyAyLjUuOS45LjEgMS44LjEgMi42IDAgLjktLjIgMS45LS42IDIuNy0xLjJsLjMtLjItLjItLjNjLS43LS45LTEuMS0xLjktMS40LTMtLjItLjgtLjMtMS41LS4zLTIuMnYtLjlsLS45LTguOWMtLjQtNC4xLS43LTguMS0xLTExLjkgMC0uMSAwLS4yLjEtLjMgMCAwIC4yLS4yLjMtLjIuMyAwIC41LjIuNS40LjUgMy44IDEuMSA3LjggMS42IDExLjhsMS4xIDguOWMwIC4zIDAgLjUuMS44IDAgLjcuMiAxLjQuMyAyIC4yLjcuNCAxLjMuOCAxLjkuNS45IDEuMiAxLjYgMiAyLjIgMCAwIDAgLjEuMS4xIDEuNCAxIDMuMyAxLjQgNSAxLjFzMy4zLTEuMiA0LjUtMi41Yy4zLS4zLjUtLjcuNy0xLjF2LS40Yy0uMS0uNC0uMi0uOC0uNC0xLjItLjEtLjYtLjItMS40LS4yLTIuM3YtNC40Yy0uMi01LjYtLjItMTEuMy0uMi0xNy42IDAtLjMuMi0uNS41LS41cy41LjIuNS40Yy40IDYuMy43IDEyIC45IDE3LjZsLjIgNC40YzAgLjggMCAxLjQuMiAyIC4xLjUuMyAxLjIuNyAxLjh2LjFjMS4yIDIuMiAzLjYgMy43IDYuMSAzLjdoLjFjMi41IDAgNS0xLjQgNi4zLTMuNy4zLS41LjUtMS4xLjctMS44LjEtLjYuMi0xLjIuMi0xLjlsLjItNC41Yy4yLTUuMy41LTExIC45LTE3LjYgMC0uMy4yLS41LjUtLjQuMiAwIC40LjIuNC41IDAgNi42IDAgMTIuMy0uMSAxNy42djQuNGMwIC42IDAgMS41LS4zIDIuMyAwIC40LS4yLjgtLjMgMS4ydi40Yy4yLjQuNS43LjcgMS4xIDEuMSAxLjQgMi43IDIuMyA0LjUgMi41IDEuNy4zIDMuNi0uMSA1LTEuMWguMWMuOC0uNiAxLjUtMS40IDItMi4yLjQtLjYuNi0xLjIuOC0xLjkuMS0uNi4yLTEuMy4zLTIgMC0uMyAwLS41LjEtLjhsMS4xLTguOWMuNS00IDEuMS04IDEuNi0xMS44IDAtLjEgMC0uMi4yLS4zLjEgMCAuMi0uMS4zIDAgLjIgMCAuNC4zLjQuNS0uMyAzLjgtLjcgNy44LTEgMTEuOWwtLjkgOC45di44YzAgLjctLjEgMS40LS4zIDIuMi0uMyAxLjEtLjcgMi4xLTEuNCAzbC0uMi4zLjMuMmMuOC42IDEuOCAxIDIuNyAxLjJzMS43LjIgMi42IDBjLjktLjEgMS43LS40IDIuNS0uOS4yIDAgLjMtLjIuNC0uMyAxLjMtLjkgMi4zLTIuMyAyLjgtMy44LjItLjUuMy0xLjMuNC0yIDAtLjMuMS0uNi4yLS44bDEuNy04LjhjLjgtNCAxLjYtOCAyLjQtMTEuNyAwLS4zLjMtLjQuNi0uNC4yIDAgLjQuMy40LjUtLjYgMy44LTEuMiA3LjgtMS44IDExLjhsLTEuNSA4LjljMCAuMy0uMS42LS4xLjktLjEuNy0uMiAxLjMtLjQgMi4yLS40IDEuNC0xLjIgMi43LTIuMyAzLjhsLS41LjUuNy4yYy40IDAgLjguMSAxLjIuMSAzLjMgMCA2LjMtMi4zIDctNS42IDAtLjMgMi44LTEyLjkgNS44LTI4LjUgNC4xLTIwLjkgOS00NyA5LTU1QzE0MiAyNSAxMTkgNC41IDg2LjEgNC41WiIgc3R5bGU9ImZpbGw6IzU3ZDFlNSIvPjxwYXRoIGQ9Ik0xMzMuMSAxMDkuN2MtMy4xIDE1LjctNS43IDI3LjUtNS43IDI3LjctLjcgMy4yLTMuNyA1LjQtNyA1LjRoLTEuNmwuMy0uNGMxLjEtMS4xIDEuOS0yLjQgMi4zLTMuOC4yLS44LjMtMS41LjQtMi4yIDAtLjQgMC0uNi4xLS45bDEuNS04LjljLjYtNCAxLjMtOCAxLjgtMTEuOCAwLS4zLS4yLS43LS41LS43aC0uNWMtLjEgMC0uMy4yLS4zLjQtLjggMy43LTEuNiA3LjctMi40IDExLjdsLTEuNyA4LjhjMCAuMiAwIC40LS4xLjZ2LjNjLS4yLjctLjMgMS40LS41IDEuOS0uNCAxLjUtMS40IDIuOC0yLjcgMy43LS4xIDAtLjMuMi0uNC4zLS43LjQtMS41LjctMi40LjhzLTEuNy4xLTIuNiAwYy0uOS0uMi0xLjgtLjYtMi42LTEuMmgtLjJjMC0uMS4xLS4zLjEtLjMuNy0xIDEuMS0yIDEuNC0zLjEuMi0uOC4zLTEuNS4zLTIuM3YtLjhsLjktOC45Yy40LTQuMS43LTguMSAxLTExLjkgMC0uMy0uMi0uNy0uNi0uNy0uMiAwLS4zIDAtLjUuMS0uMS4xLS4yLjMtLjMuNC0uNSAzLjgtMS4xIDcuNy0xLjYgMTEuOGwtMS4xIDguOWMwIC4zIDAgLjUtLjEuOCAwIC43LS4yIDEuNC0uMyAyLS4yLjYtLjQgMS4yLS44IDEuOC0uNS44LTEuMiAxLjYtMiAyLjEgMCAwIDAgLjEtLjEuMS0xLjQuOS0zLjIgMS4zLTQuOSAxLjFzLTMuMy0xLjEtNC4zLTIuNWMtLjMtLjMtLjUtLjctLjctMXYtLjJjLjEtLjQuMy0uOC40LTEuMi4yLS44LjItMS44LjItMi40di00LjRjLjItNS4yLjItMTAuOS4yLTE3LjYgMC0uMy0uMy0uNi0uNi0uNy0uNCAwLS43LjMtLjcuNi0uNCA2LjUtLjcgMTIuMy0uOSAxNy42bC0uMiA0LjVjMCAuNyAwIDEuMy0uMiAxLjktLjIuNy0uNCAxLjMtLjcgMS44LTEuMiAyLjItMy42IDMuNi02IDMuNkg4NmMtMi40IDAtNC44LTEuNC02LTMuNnYtLjFjLS4zLS42LS41LTEuMi0uNy0xLjctLjEtLjYtLjItMS4yLS4yLTJsLS4yLTQuNGMtLjItNS41LS41LTExLjMtLjktMTcuNiAwLS4zLS4zLS42LS43LS42cy0uNy4zLS43LjdjMCA2LjMgMCAxMiAuMSAxNy42djQuNHEwIDEuNS4zIDIuNGMuMS40LjIuOS40IDEuMnYuMmMtLjIuNC0uNS43LS43IDFhNy42IDcuNiAwIDAgMS00LjMgMi41Yy0xLjcuMy0zLjUtLjEtNC45LTEuMWgtLjFjLS44LS42LTEuNS0xLjMtMi0yLjItLjMtLjYtLjYtMS4yLS44LTEuOC0uMS0uNS0uMi0xLjItLjMtMiAwLS4zIDAtLjUtLjEtLjhsLTEuMS04LjljLS41LTQuMS0xLjEtOC4xLTEuNi0xMS44IDAtLjQtLjMtLjYtLjctLjYtLjIgMC0uMyAwLS40LjItLjEuMS0uMi4zLS4yLjUuMyAzLjguNyA3LjggMSAxMS45bC45IDguOXYuOWMwIC43LjEgMS40LjMgMi4yLjMgMS4xLjcgMi4xIDEuNCAzLjF2LjJjLjEgMCAwIC4xIDAgLjEtLjguNi0xLjcgMS0yLjYgMS4yLS44LjItMS43LjItMi42IDBxLTEuMzUtLjE1LTIuNC0uOWMtLjEgMC0uMy0uMi0uNC0uMy0xLjMtLjktMi4zLTIuMi0yLjctMy43LS4yLS41LS4zLTEuMi0uNC0xLjkgMC0uNC0uMS0uNy0uMi0uOWwtMS43LTguOGMtLjgtNC0xLjYtOC0yLjQtMTEuNyAwLS4zLS40LS42LS43LS41LS40IDAtLjYuNC0uNi43LjYgMy44IDEuMiA3LjggMS44IDExLjhsMS41IDguOWMwIC4zIDAgLjUuMS44LjEuOC4yIDEuNS40IDIuMy40IDEuNCAxLjIgMi43IDIuMyAzLjhsLjMuM2gtLjRjLTMuNy43LTcuMi0xLjctOC01LjMtLjMtMS4zLTMtMTMuMS01LjktMjcuNmw0LjIgMjhjMCAuMi4xLjUuMi43di4yYy4xLjIuMi4zLjMuNSAwIDAgMCAuMi4xLjMgMCAuMS4xLjIuMi40IDAgLjEuMS4yLjIuM3YuMmwuNi45Yy4xLjIuMi4zLjQuNS4xLjIuMy4zLjQuNSAxLjYgMS41IDMuNyAyLjMgNS45IDIuM3MxIDAgMS40LS4xbDMuMi0uNWMuNS4yIDEuMS40IDEuNy40IDEuMS4yIDIuMi4xIDMuMiAwIDEuMS0uMiAyLjMtLjcgMy4zLTEuNWwuOC0uNmMuMi4yLjUuNC44LjZsLjIuMmMxLjcgMS4xIDQgMS42IDYuMSAxLjNzNC4xLTEuNCA1LjQtMy4xYy4yLS4zLjUtLjYuNy0uOSAxLjUgMi41IDQuNCA0LjEgNy4zIDQuMWguMmMyLjkgMCA1LjctMS42IDcuMi00LjEuMi4zLjQuNy43LjkgMS4zIDEuNyAzLjMgMi44IDUuNCAzLjFoMS4zYzEuNyAwIDMuNC0uNSA0LjgtMS40IDAgMCAuMSAwIC4yLS4xLjMtLjIuNS0uNC44LS42bC44LjZxMS41IDEuMDUgMy4zIDEuNWMxIC4yIDIuMS4yIDMuMiAwcTEuMDUtLjE1IDIuMS0uNmwyLjcuN2guMWMuNS4xLjkuMSAxLjQuMSA0IDAgNy42LTIuOSA4LjUtNi44IDAtLjEgNC4yLTI4IDQuMi0yOFoiIGNsYXNzPSJjbHMtNCIvPjxwYXRoIGQ9Ik00Ni40IDE3LjdjLTEwLjEgOC44LTE2IDIxLjQtMTYgMzYuMnMxNC41IDgyLjggMTQuNyA4My41Yy4zIDEuNSAxLjQgMi42IDIuNCAzLjYtMy42LTE3LjQtMTUuNC03My41LTE1LjQtODYuNnM1LjItMjcuMiAxNC4zLTM2LjciIHN0eWxlPSJmaWxsOiM5M2UxZWYiLz48cGF0aCBkPSJNNzEuMyAyNS42QzU3LjkgMjUuNiA0NyAzNi41IDQ3IDQ5LjlzMTAuOSAyNC4zIDI0LjMgMjQuMyAyNC4zLTEwLjkgMjQuMy0yNC4zLTEwLjktMjQuMy0yNC4zLTI0LjMiIGNsYXNzPSJjbHMtMyIvPjxwYXRoIGQ9Ik00NC42IDQ4YzAgMTMuNCAxMC45IDI0LjMgMjQuMyAyNC4zUzkzLjIgNjEuNCA5My4yIDQ4IDgyLjMgMjMuNyA2OC45IDIzLjcgNDQuNiAzNC42IDQ0LjYgNDgiIHN0eWxlPSJmaWxsOiNmZmYiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=);background-position:50%;background-repeat:no-repeat;height:36px;margin-bottom:0;width:156px!important}.dark .footer-logo{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZn0uY2xzLTN7ZmlsbDojNGQ5YmI2fS5jbHMtNHtmaWxsOiMzYjJkNTV9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkxheWVyXzEiPjxwYXRoIGQ9Ik0xODUuNCAxMDMuMWMyLjEgMy4xIDQuOCA1LjUgOCA2LjkgMy4zIDEuNSA2LjYgMi4yIDEwLjEgMi4yczMuOS0uMyA1LjktLjkgMy44LTEuNSA1LjUtMi43YzEuNi0xLjIgMy0yLjcgNC00LjVzMS42LTMuOCAxLjYtNi4yLTEtNS44LTMuMS03LjUtNC43LTMuMi03LjgtNC4zYy0zLjEtMS4yLTYuNS0yLjMtMTAuMi0zLjRxLTUuNTUtMS42NS0xMC4yLTQuNXQtNy44LTcuOGMtMi4xLTMuMy0zLjEtNy43LTMuMS0xMy4ycy41LTUuMiAxLjYtOCAyLjgtNS40IDUuMS03LjcgNS4zLTQuMyA5LTUuOXE1LjU1LTIuNCAxMy4yLTIuNGM3LjY1IDAgOS4xLjYgMTMuNCAxLjlzOCAzLjkgMTEuMiA3LjlsLTkuNCA4LjZjLTEuNS0yLjMtMy41LTQuMS02LjItNS40LTIuNy0xLjQtNS43LTIuMS05LjEtMi4xcy01LjkuNC04IDEuM3EtMy4xNSAxLjItNS4xIDMuM2MtMS4zIDEuMy0yLjIgMi44LTIuNyA0LjNzLS44IDIuOS0uOCA0LjJjMCAzLjYgMSA2LjQgMy4xIDguM3M0LjcgMy41IDcuOCA0LjdxNC42NSAxLjggMTAuMiAzLjNjMy43IDEgNy4xIDIuMyAxMC4yIDRzNS43IDQuMSA3LjggNyAzLjEgNyAzLjEgMTIuMS0uOCA3LjgtMi40IDExLjEtMy43IDYuMS02LjMgOC4zYy0yLjcgMi4zLTUuOCA0LTkuNCA1LjJzLTcuNSAxLjgtMTEuNiAxLjgtMTAuNy0xLTE1LjYtMi45LTguOC00LjktMTEuNy04LjlsOS41LTguMlpNMjg2IDc5cS0zLTMuMTUtNi4zLTQuOGMtMi4yLTEuMS00LjktMS42LTcuOS0xLjZzLTUuNi41LTcuOCAxLjYtNC4xIDIuNi01LjYgNC41LTIuNiA0LjEtMy40IDYuNWMtLjggMi41LTEuMSA1LTEuMSA3LjdzLjQgNS4yIDEuMyA3LjVjLjkgMi40IDIuMSA0LjUgMy43IDYuMnMzLjUgMy4yIDUuOCA0LjIgNC44IDEuNSA3LjYgMS41IDUuNy0uNSA3LjktMS42cTMuMy0xLjY1IDYtNC44bDcuNyA3LjdjLTIuOCAzLjEtNi4xIDUuNC05LjkgNi44LTMuNyAxLjQtNy43IDIuMS0xMS45IDIuMXMtOC41LS43LTEyLjItMi4yLTYuOC0zLjUtOS41LTYuMS00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4yIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4yIDYzLjdoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN2gxMS42bC0yNy4yIDY5LjZjLTEgMi41LTIgNC44LTMgNi44LTEgMi4xLTIuMyAzLjgtMy43IDUuM3MtMy4yIDIuNi01LjIgMy40LTQuNiAxLjItNy41IDEuMi0zLjItLjEtNC45LS4zYy0xLjYtLjItMy4yLS42LTQuOC0xLjNsMS4zLTkuOWMyLjIuOSA0LjMgMS4zIDYuNSAxLjNzMy4xLS4yIDQuMy0uN2MxLjItLjQgMi4yLTEuMSAzLTEuOXExLjItMS4yIDIuMS0zYy42LTEuMSAxLjEtMi40IDEuNy0zLjlsMy41LTkuMS0yMy43LTU3LjZaTTM2My45IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTM4Ni42IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi43IDcwLjdjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczguMS0yLjEgMTIuMS0yLjEgNy44LjUgMTAuOCAxLjZjMyAxIDUuNSAyLjUgNy40IDQuMiAxLjkgMS44IDMuNCAzLjggNC4zIDYuMXMxLjQgNC43IDEuNCA3LjJ2MjkuMmMwIDIgMCAzLjkuMSA1LjYgMCAxLjcuMiAzLjMuNCA0LjhoLTkuN2MtLjItMi45LS40LTUuOC0uNC04LjdoLS4yYy0yLjQgMy43LTUuMyA2LjMtOC42IDcuOS0zLjMgMS41LTcuMSAyLjMtMTEuNSAyLjNzLTUuMi0uNC03LjYtMS4xcS0zLjYtMS4wNS02LjMtMy4zYy0xLjgtMS41LTMuMi0zLjItNC4zLTUuNC0xLTIuMS0xLjYtNC42LTEuNi03LjRzLjgtNi44IDIuNS05LjNjMS42LTIuNSAzLjktNC41IDYuOC02LjFzNi4yLTIuNyAxMC0zLjQgNy45LTEgMTIuMy0xaDh2LTIuNGMwLTEuNS0uMy0yLjktLjgtNC4zLS42LTEuNS0xLjQtMi44LTIuNS0zLjktMS4xLTEuMi0yLjUtMi4xLTQuMi0yLjhzLTMuNy0xLTYtMS0zLjkuMi01LjUuNi0zIC45LTQuMyAxLjUtMi41IDEuMy0zLjUgMi4xLTIuMSAxLjYtMyAyLjNsLTYuNS02LjhabTMwLjcgMjIuOGMtMi42IDAtNS4yLjEtNy45LjRzLTUuMi44LTcuNCAxLjYtNCAxLjktNS40IDMuNC0yLjEgMy4zLTIuMSA1LjZjMCAzLjMgMS4xIDUuNyAzLjMgNy4xIDIuMiAxLjUgNS4yIDIuMiA5IDIuMnM1LjUtLjUgNy42LTEuNXEzLjE1LTEuNSA1LjEtMy45YzEuMy0xLjYgMi4yLTMuNCAyLjgtNS40cy44LTMuOS44LTUuOXYtMy42ek00NzMuOCAzNS41aDI5LjlxOSAwIDE1LjkgMi4xYzQuNiAxLjQgOC41IDMuMiAxMS44IDUuNXM2LjEgNC45IDguMyA3LjkgNCA2IDUuMyA5LjJjMS4zIDMuMSAyLjIgNi4zIDIuOCA5LjRzLjggNiAuOCA4LjdxMCA4LjI1LTMgMTUuOWMtMiA1LjEtNSA5LjctOC45IDEzLjctNCA0LTguOCA3LjItMTQuNyA5LjYtNS44IDIuNC0xMi42IDMuNi0yMC4zIDMuNmgtMjcuOXptMTEuNiA3NC42SDUwMGM0LjkgMCA5LjYtLjcgMTQtMnM4LjItMy4zIDExLjUtNiA1LjktNiA3LjktMTBjMS45LTQgMi45LTguNiAyLjktMTRzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC41cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40VjExMFpNNTYxLjYgMzUuNWgyOS43YzMuNyAwIDcuMi40IDEwLjMgMS4zIDMuMi45IDUuOSAyLjIgOC4yIDMuOXEzLjQ1IDIuNTUgNS40IDYuNmMxLjMgMi43IDIgNS45IDIgOS41cy0xLjQgOC45LTQuMSAxMi02LjMgNS40LTEwLjYgNi44di4yYzIuNi4yIDUgLjggNy4zIDJzNC4yIDIuNyA1LjkgNC42YzEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjR6TTU3My4yIDcxSDU4OWMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4zdjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yczMuNC0yLjYgNC43LTQuNGMxLjMtMS45IDEuOS00LjMgMS45LTcuNCAwLTUuMS0xLjctOC45LTUtMTEuNHMtNy44LTMuOC0xMy40LTMuOGgtMTcuMnYyOS43WiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTg2LjMgNC4yQzUzLjQgNC4yIDMwLjQgMjQuNyAzMC40IDU0czQuOSAzNC44IDkuMSA1NS44YzMgMTUuMSA1LjYgMjcuMyA1LjcgMjcuNi44IDMuNyA0LjQgNi4xIDguMiA1LjVoLjhjMC0uMS0uNi0uNy0uNi0uNy0xLjEtMS4xLTEuOC0yLjQtMi4zLTMuOC0uMi0uOC0uMy0xLjUtLjQtMi4xIDAtLjMgMC0uNi0uMS0uOWwtMS41LTguOWMtLjYtNC0xLjMtOC0xLjgtMTEuOCAwLS4zLjEtLjUuNC0uNXMuNS4xLjUuNHExLjIgNS43IDIuNCAxMS43bDEuNyA4LjhjMCAuMy4xLjYuMi45LjEuNy4zIDEuNC40IDIgLjUgMS41IDEuNSAyLjggMi44IDMuOC4xLjEuMy4yLjQuMy44LjQgMS42LjcgMi41LjkuOS4xIDEuOC4xIDIuNiAwIC45LS4yIDEuOS0uNiAyLjctMS4ybC4zLS4yLS4yLS4zYy0uNy0uOS0xLjEtMS45LTEuNC0zLS4yLS44LS4zLTEuNS0uMy0yLjJ2LS45bC0uOS04LjljLS40LTQuMS0uNy04LjEtMS0xMS45IDAtLjEgMC0uMi4xLS4zIDAgMCAuMi0uMi4zLS4yLjMgMCAuNS4yLjUuNC41IDMuOCAxLjEgNy44IDEuNiAxMS44bDEuMSA4LjljMCAuMyAwIC41LjEuOCAwIC43LjIgMS40LjMgMiAuMi43LjQgMS4zLjggMS45LjUuOSAxLjIgMS42IDIgMi4yIDAgMCAwIC4xLjEuMSAxLjQgMSAzLjMgMS40IDUgMS4xczMuMy0xLjIgNC41LTIuNWMuMy0uMy41LS43LjctMS4xdi0uNGMtLjEtLjQtLjItLjgtLjQtMS4yLS4xLS42LS4yLTEuNC0uMi0yLjN2LTQuNGMtLjItNS42LS4yLTExLjMtLjItMTcuNiAwLS4zLjItLjUuNS0uNXMuNS4yLjUuNGMuNCA2LjMuNyAxMiAuOSAxNy42bC4yIDQuNGMwIC44IDAgMS40LjIgMiAuMS41LjMgMS4yLjcgMS44di4xYzEuMiAyLjIgMy42IDMuNyA2LjEgMy43aC4xYzIuNSAwIDUtMS40IDYuMy0zLjcuMy0uNS41LTEuMS43LTEuOC4xLS42LjItMS4yLjItMS45bC4yLTQuNWMuMi01LjMuNS0xMSAuOS0xNy42IDAtLjMuMi0uNS41LS40LjIgMCAuNC4yLjQuNSAwIDYuNiAwIDEyLjMtLjEgMTcuNnY0LjRjMCAuNiAwIDEuNS0uMyAyLjMgMCAuNC0uMi44LS4zIDEuMnYuNGMuMi40LjUuNy43IDEuMSAxLjEgMS40IDIuNyAyLjMgNC41IDIuNSAxLjcuMyAzLjYtLjEgNS0xLjFoLjFjLjgtLjYgMS41LTEuNCAyLTIuMi40LS42LjYtMS4yLjgtMS45LjEtLjYuMi0xLjMuMy0yIDAtLjMgMC0uNS4xLS44bDEuMS04LjljLjUtNCAxLjEtOCAxLjYtMTEuOCAwLS4xIDAtLjIuMi0uMy4xIDAgLjItLjEuMyAwIC4yIDAgLjQuMy40LjUtLjMgMy44LS43IDcuOC0xIDExLjlsLS45IDguOXYuOGMwIC43LS4xIDEuNC0uMyAyLjItLjMgMS4xLS43IDIuMS0xLjQgM2wtLjIuMy4zLjJjLjguNiAxLjggMSAyLjcgMS4yczEuNy4yIDIuNiAwYy45LS4xIDEuNy0uNCAyLjUtLjkuMiAwIC4zLS4yLjQtLjMgMS4zLS45IDIuMy0yLjMgMi44LTMuOC4yLS41LjMtMS4zLjQtMiAwLS4zLjEtLjYuMi0uOGwxLjctOC44Yy44LTQgMS42LTggMi40LTExLjcgMC0uMy4zLS40LjYtLjQuMiAwIC40LjMuNC41LS42IDMuOC0xLjIgNy44LTEuOCAxMS44bC0xLjUgOC45YzAgLjMtLjEuNi0uMS45LS4xLjctLjIgMS4zLS40IDIuMi0uNCAxLjQtMS4yIDIuNy0yLjMgMy44bC0uNS41LjcuMmMuNCAwIC44LjEgMS4yLjEgMy4zIDAgNi4zLTIuMyA3LTUuNiAwLS4zIDIuOC0xMi45IDUuOC0yOC41IDQuMS0yMC45IDktNDcgOS01NUMxNDIgMjUgMTE5IDQuNSA4Ni4xIDQuNVoiIHN0eWxlPSJmaWxsOiM1N2QxZTUiLz48cGF0aCBkPSJNMTMzLjEgMTA5LjdjLTMuMSAxNS43LTUuNyAyNy41LTUuNyAyNy43LS43IDMuMi0zLjcgNS40LTcgNS40aC0xLjZsLjMtLjRjMS4xLTEuMSAxLjktMi40IDIuMy0zLjguMi0uOC4zLTEuNS40LTIuMiAwLS40IDAtLjYuMS0uOWwxLjUtOC45Yy42LTQgMS4zLTggMS44LTExLjggMC0uMy0uMi0uNy0uNS0uN2gtLjVjLS4xIDAtLjMuMi0uMy40LS44IDMuNy0xLjYgNy43LTIuNCAxMS43bC0xLjcgOC44YzAgLjIgMCAuNC0uMS42di4zYy0uMi43LS4zIDEuNC0uNSAxLjktLjQgMS41LTEuNCAyLjgtMi43IDMuNy0uMSAwLS4zLjItLjQuMy0uNy40LTEuNS43LTIuNC44cy0xLjcuMS0yLjYgMGMtLjktLjItMS44LS42LTIuNi0xLjJoLS4yYzAtLjEuMS0uMy4xLS4zLjctMSAxLjEtMiAxLjQtMy4xLjItLjguMy0xLjUuMy0yLjN2LS44bC45LTguOWMuNC00LjEuNy04LjEgMS0xMS45IDAtLjMtLjItLjctLjYtLjctLjIgMC0uMyAwLS41LjEtLjEuMS0uMi4zLS4zLjQtLjUgMy44LTEuMSA3LjctMS42IDExLjhsLTEuMSA4LjljMCAuMyAwIC41LS4xLjggMCAuNy0uMiAxLjQtLjMgMi0uMi42LS40IDEuMi0uOCAxLjgtLjUuOC0xLjIgMS42LTIgMi4xIDAgMCAwIC4xLS4xLjEtMS40LjktMy4yIDEuMy00LjkgMS4xcy0zLjMtMS4xLTQuMy0yLjVjLS4zLS4zLS41LS43LS43LTF2LS4yYy4xLS40LjMtLjguNC0xLjIuMi0uOC4yLTEuOC4yLTIuNHYtNC40Yy4yLTUuMi4yLTEwLjkuMi0xNy42IDAtLjMtLjMtLjYtLjYtLjctLjQgMC0uNy4zLS43LjYtLjQgNi41LS43IDEyLjMtLjkgMTcuNmwtLjIgNC41YzAgLjcgMCAxLjMtLjIgMS45LS4yLjctLjQgMS4zLS43IDEuOC0xLjIgMi4yLTMuNiAzLjYtNiAzLjZIODZjLTIuNCAwLTQuOC0xLjQtNi0zLjZ2LS4xYy0uMy0uNi0uNS0xLjItLjctMS43LS4xLS42LS4yLTEuMi0uMi0ybC0uMi00LjRjLS4yLTUuNS0uNS0xMS4zLS45LTE3LjYgMC0uMy0uMy0uNi0uNy0uNnMtLjcuMy0uNy43YzAgNi4zIDAgMTIgLjEgMTcuNnY0LjRxMCAxLjUuMyAyLjRjLjEuNC4yLjkuNCAxLjJ2LjJjLS4yLjQtLjUuNy0uNyAxYTcuNiA3LjYgMCAwIDEtNC4zIDIuNWMtMS43LjMtMy41LS4xLTQuOS0xLjFoLS4xYy0uOC0uNi0xLjUtMS4zLTItMi4yLS4zLS42LS42LTEuMi0uOC0xLjgtLjEtLjUtLjItMS4yLS4zLTIgMC0uMyAwLS41LS4xLS44bC0xLjEtOC45Yy0uNS00LjEtMS4xLTguMS0xLjYtMTEuOCAwLS40LS4zLS42LS43LS42LS4yIDAtLjMgMC0uNC4yLS4xLjEtLjIuMy0uMi41LjMgMy44LjcgNy44IDEgMTEuOWwuOSA4Ljl2LjljMCAuNy4xIDEuNC4zIDIuMi4zIDEuMS43IDIuMSAxLjQgMy4xdi4yYy4xIDAgMCAuMSAwIC4xLS44LjYtMS43IDEtMi42IDEuMi0uOC4yLTEuNy4yLTIuNiAwcS0xLjM1LS4xNS0yLjQtLjljLS4xIDAtLjMtLjItLjQtLjMtMS4zLS45LTIuMy0yLjItMi43LTMuNy0uMi0uNS0uMy0xLjItLjQtMS45IDAtLjQtLjEtLjctLjItLjlsLTEuNy04LjhjLS44LTQtMS42LTgtMi40LTExLjcgMC0uMy0uNC0uNi0uNy0uNS0uNCAwLS42LjQtLjYuNy42IDMuOCAxLjIgNy44IDEuOCAxMS44bDEuNSA4LjljMCAuMyAwIC41LjEuOC4xLjguMiAxLjUuNCAyLjMuNCAxLjQgMS4yIDIuNyAyLjMgMy44bC4zLjNoLS40Yy0zLjcuNy03LjItMS43LTgtNS4zLS4zLTEuMy0zLTEzLjEtNS45LTI3LjZsNC4yIDI4YzAgLjIuMS41LjIuN3YuMmMuMS4yLjIuMy4zLjUgMCAwIDAgLjIuMS4zIDAgLjEuMS4yLjIuNCAwIC4xLjEuMi4yLjN2LjJsLjYuOWMuMS4yLjIuMy40LjUuMS4yLjMuMy40LjUgMS42IDEuNSAzLjcgMi4zIDUuOSAyLjNzMSAwIDEuNC0uMWwzLjItLjVjLjUuMiAxLjEuNCAxLjcuNCAxLjEuMiAyLjIuMSAzLjIgMCAxLjEtLjIgMi4zLS43IDMuMy0xLjVsLjgtLjZjLjIuMi41LjQuOC42bC4yLjJjMS43IDEuMSA0IDEuNiA2LjEgMS4zczQuMS0xLjQgNS40LTMuMWMuMi0uMy41LS42LjctLjkgMS41IDIuNSA0LjQgNC4xIDcuMyA0LjFoLjJjMi45IDAgNS43LTEuNiA3LjItNC4xLjIuMy40LjcuNy45IDEuMyAxLjcgMy4zIDIuOCA1LjQgMy4xaDEuM2MxLjcgMCAzLjQtLjUgNC44LTEuNCAwIDAgLjEgMCAuMi0uMS4zLS4yLjUtLjQuOC0uNmwuOC42cTEuNSAxLjA1IDMuMyAxLjVjMSAuMiAyLjEuMiAzLjIgMHExLjA1LS4xNSAyLjEtLjZsMi43LjdoLjFjLjUuMS45LjEgMS40LjEgNCAwIDcuNi0yLjkgOC41LTYuOCAwLS4xIDQuMi0yOCA0LjItMjhaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNNDYuNCAxNy43Yy0xMC4xIDguOC0xNiAyMS40LTE2IDM2LjJzMTQuNSA4Mi44IDE0LjcgODMuNWMuMyAxLjUgMS40IDIuNiAyLjQgMy42LTMuNi0xNy40LTE1LjQtNzMuNS0xNS40LTg2LjZzNS4yLTI3LjIgMTQuMy0zNi43IiBzdHlsZT0iZmlsbDojOTNlMWVmIi8+PHBhdGggZD0iTTcxLjMgMjUuNkM1Ny45IDI1LjYgNDcgMzYuNSA0NyA0OS45czEwLjkgMjQuMyAyNC4zIDI0LjMgMjQuMy0xMC45IDI0LjMtMjQuMy0xMC45LTI0LjMtMjQuMy0yNC4zIiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNDQuNiA0OGMwIDEzLjQgMTAuOSAyNC4zIDI0LjMgMjQuM1M5My4yIDYxLjQgOTMuMiA0OCA4Mi4zIDIzLjcgNjguOSAyMy43IDQ0LjYgMzQuNiA0NC42IDQ4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.footer-links{margin-bottom:0!important;text-align:left}.footer-links__link{color:var(--text-color);font-size:12px;font-weight:500;letter-spacing:2.4px;margin-right:16px;text-transform:uppercase}.footer-actions{align-items:center;display:flex;gap:12px;justify-content:space-between}.footer-actions__link{color:var(--text-color);font-size:26px}.footer-bottom{color:var(--text-muted);display:flex;flex-wrap:wrap;font-size:12px;font-style:normal;font-weight:400;justify-content:center;letter-spacing:1.4px;line-height:23px;padding:20px 0 10px;text-align:center;text-transform:uppercase}@media screen and (max-width:510px){.footer-links{margin-bottom:20px}}@media screen and (min-width:1024px){.footer{padding:30px 0}.footer-group{padding:0}.footer-top{padding-bottom:30px}.footer-logo{margin:0;width:auto}.footer-links{padding:0 40px}.footer-links__link{font-size:14px;margin-right:28px}.footer-actions__link img{height:28px}.footer-bottom .footer-bottom__copyright,.footer-bottom .footer-bottom__last-updated,.footer-bottom .footer-bottom__version{padding:0 10px}.footer-bottom .footer-bottom__copyright{border-left:none}}.not-found{background-color:var(--navigation-bg);height:100%;overflow:hidden}.not-found__icon{display:block;margin:40px auto;max-width:300px}.not-found__text{text-align:center}.not-found__text h1{font-size:60px;line-height:1}.not-found__text p{margin:30px 0;width:100%}.not-found__button{text-transform:uppercase}.admonition{background-color:var(--body-bg);border-radius:4px;box-shadow:0 4px 4px rgba(0,0,0,.12);color:var(--text-muted);font-size:14px;line-height:20px;margin-bottom:30px;overflow:auto;padding:20px 20px 20px 52px;position:relative}.admonition:before{bottom:0;content:" ";left:0;position:absolute;right:0;top:0;z-index:-1}.admonition-title{color:var(--primary);display:flex;font-weight:700;left:-32px;position:relative}.admonition-title:before{background-image:none!important;content:"";font-size:24px;margin-right:8px;width:24px}.admonition p{margin-bottom:0!important}.admonition.tip{border:1px solid var(--success)}.admonition.tip:before{border-left:8px solid var(--success)}.admonition.tip .admonition-title{color:var(--success)!important}.admonition.note{border:1px solid var(--info)}.admonition.note:before{border-left:8px solid var(--info)}.admonition.note .admonition-title{color:var(--info)!important}.admonition.caution{border:1px solid var(--warning)}.admonition.caution:before{border-left:8px solid var(--warning)}.admonition.caution .admonition-title:before{content:""}.admonition.caution .admonition-title{color:var(--warning)!important}.admonition.warning{border:1px solid var(--danger)}.admonition.warning:before{border-left:8px solid var(--danger)}.admonition.warning .admonition-title:before{content:""}.admonition.warning .admonition-title{color:var(--danger)!important}.breadcrumbs{margin-bottom:0;text-transform:uppercase}.breadcrumbs .bread__item,.breadcrumbs .bread__item:not(.bread__item--last):after,.breadcrumbs a{color:var(--text-color);font-size:12px;font-weight:400;letter-spacing:1.5px;line-height:2;margin:0;padding:0}.breadcrumbs .bread__item:before{display:none}.breadcrumbs .bread__item:not(.bread__item--last):after{content:"/";margin:0 5px;opacity:1;position:relative}.breadcrumbs .bread__highlight{color:var(--link-color)}.breadcrumbs .bread__highlight:hover{font-weight:700;text-decoration:none}code{background-color:var(--well-bg);border:none;border-radius:4px;font-size:14px}code,code.download{color:var(--code-color)}code.download{background:none}.highlight{background:transparent!important}.highlight pre{background-color:var(--well-bg);border-radius:8px;color:var(--code-color);font-size:14px;line-height:26px;margin-bottom:30px;overflow:auto;padding:16px}.highlight a.copybtn{right:1em;top:1em}.highlighttable{background-color:var(--well-bg);border-radius:16px;box-shadow:none}.highlighttable tbody{background-color:transparent;border:0}.highlighttable tbody td{padding:15px!important}.highlighttable tbody tr{border-top:none}.highlighttable .linenos{background-color:var(--well-bg);color:var(--line-number);width:50px}.highlighttable .linenos span{line-height:26px}.highlighttable .highlight pre{background-color:transparent;margin:0;padding:0}.highlighttable .highlight a.copybtn{right:.2em;top:.2em}.copybtn{background-color:var(--card-bg)!important}.hide-copy-button .copybtn{display:none}.sphinx_collapse__label{color:var(--text-color);display:flex!important;flex-direction:row-reverse;font-size:medium;font-weight:700;justify-content:flex-end;margin-left:0!important}.sphinx_collapse__icon{border-top-color:var(--text-color)!important;margin-left:5px;margin-right:0}.sphinx_collapse__input:checked~.sphinx_collapse__label,.sphinx_collapse__label:hover{color:var(--link-color)}.sphinx_collapse__input:checked~.sphinx_collapse__label .sphinx_collapse__icon,.sphinx_collapse__label:hover .sphinx_collapse__icon{border-top-color:var(--link-color)!important}.sphinx_collapse__content{margin-top:10px}.contribute{margin:0 0 20px}.contribute__item{font-size:14px;list-style:none;padding-bottom:10px}.contribute__item a{align-items:center;display:flex}.contribute__item i{font-size:1.2em;line-height:1em;margin-right:5px}.content-navigation{display:flex;justify-content:space-between;margin-top:40px}.navigation{max-width:50%;word-break:break-word}.navigation,.navigation__link{display:flex}.navigation__title{color:var(--text-color);font-size:12px;font-weight:500;letter-spacing:1.5px;line-height:24px;text-transform:uppercase;word-wrap:break-word}.navigation__title .colored{color:var(--primary)}.navigation__button{background:var(--white);background-color:var(--card-bg);border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;display:none;font-size:0;height:fit-content;overflow:hidden;padding:8px}.navigation__button i{font-size:26px}.navigation--prev .navigation__title{margin-left:15px}.navigation--next .navigation__title{margin-right:15px;text-align:right}@media screen and (min-width:1200px){.navigation__title{display:inline-block}.navigation__button{display:block}.navigation--next .navigation__title{text-align:left}}.scylla-dropdown--versions .scylla-dropdown__item{background:var(--card-bg);border-radius:8px;box-shadow:0 28px 32px rgba(0,0,0,.06);width:100%}.scylla-dropdown--versions .scylla-dropdown__title{align-items:center;display:flex;justify-content:space-between}.scylla-dropdown--versions .scylla-dropdown__title .chevron{min-height:12px;transform:rotate(90deg);width:8px}@media screen and (min-width:1024px){.scylla-dropdown--versions .scylla-dropdown__item{box-shadow:none}}.feedback-container{font-size:16px;margin-top:40px;text-align:left}.feedback-container__title{font-weight:700;margin-bottom:5px!important}.feedback-container__button{background:var(--white);background-color:var(--card-bg)!important;border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;margin:4px;overflow:hidden;padding:8px}.feedback-container__button.active{border-color:var(--primary)}.feedback-container__icon{font-size:22px}.feedback-container__message{font-size:16px;margin-top:10px}.hero{background:var(--navigation-bg);margin-bottom:30px;overflow:hidden;padding:30px 16px;text-align:left}.hero__title{font-size:28px;font-weight:500;line-height:38px;margin-bottom:14px;max-width:229px}.hero__text{font-size:16px;line-height:26px;max-width:343px}.hero__text a{border-bottom:1px dotted var(--text-color);color:var(--text-color)}.hero__text p{margin-bottom:0!important}.hero__img{position:absolute;right:-18px;top:20px}.hero__img img{margin-bottom:0!important;width:124px}.hero__button{margin-top:20px;text-transform:uppercase}.hero__button--bold{border-width:2px;font-weight:700}.hero__button .admonition-title:before,.hero__button .icon,.hero__button .search-box:before,.hero__button .secondary-side-nav__content li a:before,.hero__button .side-nav__content .scylla-icon--expand,.secondary-side-nav__content li .hero__button a:before,.side-nav__content .hero__button .scylla-icon--expand{margin-right:5px}.hero__button .icon--right{margin-left:5px;margin-right:0}.hero__button .icon--link,.hero__cta{color:var(--link-color)}.hero__search-box{box-shadow:0 4px 25px rgba(0,0,0,.02);margin-top:20px}.hero-wrapper{align-items:center;display:flex;justify-content:space-between;margin:0 auto;position:relative}@media screen and (min-width:640px){.hero{padding:60px 16px}.hero__title{font-size:32px;line-height:42px;max-width:482px}.hero__text{font-size:18px;line-height:26px;max-width:482px}.hero__img{display:block;position:static}.hero__img img{height:100%;width:295px}.hero .hero-wrapper{flex-direction:row-reverse}.hero .landing--floating .hero{padding:30px 16px 100px}}@media screen and (min-width:1024px){.hero{padding:60px}}.label{background-color:var(--navigation-bg);border:0;border-radius:4px;color:var(--white);font-size:inherit}.label--default{color:var(--text-color)}.label--note{background-color:var(--info)}.label--tip{background-color:var(--success)}.label--caution{background-color:var(--warning)}.label--warning{background-color:var(--danger)}.last-updated{color:var(--link);font-size:12px;letter-spacing:1.5px;margin:10px 0;text-transform:uppercase}.last-updated__icon{font-size:14px}@media screen and (min-width:1024px){.last-updated{float:right;margin:0}}.panel{border:0;border-radius:4px;margin-bottom:30px}.promo-banner{background-color:var(--header-border);background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDQwIiBoZWlnaHQ9IjcwIiBmaWxsPSJub25lIj48bWFzayBpZD0iYSIgd2lkdGg9IjE0NDAiIGhlaWdodD0iNzAiIHg9IjAiIHk9IjAiIG1hc2stdHlwZT0iYWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9IiM0NDU4YTMiIGQ9Ik0wIDBoMTQ0MHY3MEgweiIvPjwvbWFzaz48ZyBmaWxsPSIjNTA2NGFlIiBtYXNrPSJ1cmwoI2EpIj48cGF0aCBkPSJNLTE5MyAyMDEuODg0IDEuNS0xMzUgMzU3LjQzNiA3MC41bC0xOTQuNSAzMzYuODg0ek0xMDkyLjkyLTM4LjAwOSA5NzIuODAzLTI0Ni4wNTcgNDAyLjk5NiA4Mi45MiA1MjMuMTEzIDI5MC45N3oiLz48cGF0aCBkPSJtMTAzOC0zOC4wMDkgMTIwLjExNy0yMDguMDQ5IDU2OS44MDcgMzI4Ljk3OS0xMjAuMTE3IDIwOC4wNDl6Ii8+PC9nPjwvc3ZnPg==);background-position:50%;background-repeat:no-repeat;background-size:cover;display:none;overflow:hidden;position:fixed;top:0;width:100%;z-index:900}.promo-banner__icon{margin-right:15px}.promo-banner__icon img{height:40px}.promo-banner__title{color:var(--white);font-size:12px;line-height:16px;margin-right:15px}.promo-banner__button{background:var(--white);border-radius:4px;color:var(--black);font-size:12px;min-width:max-content;padding:5px}.promo-banner__close{display:none;position:absolute;right:16px;top:16px}.promo-banner__close i{color:var(--white);font-size:34px;height:34px;width:34px}.promo-banner__close:hover{cursor:pointer;filter:opacity(.8)}.promo-banner-wrapper{align-items:center;display:flex;justify-content:center;padding:5.85px 20px}@media(min-width:1024px){.promo-banner__title{font-size:18px;line-height:23px}.promo-banner__button{font-size:14px;padding:8.5px}.promo-banner__close{display:block}.promo-banner-wrapper{flex-direction:unset;padding:16px}}.custom-scroll-bar::-webkit-scrollbar{background-color:transparent;width:5px}.custom-scroll-bar::-webkit-scrollbar-thumb{background-color:var(--scollbar-bg);-webkit-border-radius:8px;border-radius:8px}.search-box{align-items:center;background:var(--well-bg);border-radius:4px;display:flex;flex-grow:1;padding:10px 15px}.search-box--hero{background-color:var(--well-bg);padding:12px 14px}.search-box:before{background-repeat:no-repeat;background-size:contain;content:"";display:inline-block;font-size:24px;margin-right:8px;min-height:18px;min-width:18px;vertical-align:middle;width:20px}.search-box .er-dummy-search,.search-box .er-dummy-search-box,.search-box .er-search-form,.search-box ci-search,.search-box input{margin:0!important;width:100%!important}.search-box input{background:transparent!important;color:var(--text-color)!important;font-size:14px!important;padding:0!important}.search-box input::placeholder{color:var(--text-muted)!important;opacity:1!important}.search-box button{display:none!important}.er_search_suggestions{background-color:var(--card-bg)!important;border:0!important;border-radius:var(--border-radius);box-shadow:0 4px 25px rgba(0,0,0,.15)!important;color:var(--text-muted)}.er_search_suggestions strong{color:var(--text-color)}.er_search_suggestions .er-cse-suggest-query{border-bottom:1px solid var(--border-color);padding:8px 20px!important}.er_search_suggestions .er-search-result-box{border-bottom:1px solid var(--border-color)!important;padding:0!important}.er_search_suggestions .er-search-result-box .text-container{padding:0!important}.er_search_suggestions .er-search-result-box .text-container>a{display:block;padding:12px 20px}.er_search_suggestions .er-search-result-box .er_highlight{border-bottom:1px solid var(--primary)!important;color:var(--text-emphasis)!important}.er_search_suggestions .er-search-result-box .title{color:var(--text-color)!important}.er_search_suggestions .er-search-result-box .text{color:var(--text-muted)!important}.er_search_suggestions .er-search-result-box:hover{background:var(--well-bg)!important}.er_search_suggestions .er_more_result_btn{color:var(--link-color)!important;cursor:pointer}.er_search_suggestions h3{font-size:16px!important}.er-search-content{background-color:var(--bg-color)!important;padding:32px!important}.er_search_results_count{border-bottom:1px solid var(--border-color)!important;color:var(--text-color)!important}.er-cse-shimmer .er-shimmer,.er-ecom-shimmer .er-shimmer{background-color:var(--well-bg)!important;background-image:linear-gradient(to right,var(--well-bg) 0,var(--card-bg) 20%,var(--well-bg) 40%,var(--well-bg) 0)!important}#er_search_results h3.heading{color:var(--text-color)!important}#er_search_results .er-search-result-box{border-bottom:var(--border-color);color:var(--text-muted);display:block!important;margin:10px auto 0!important;width:100%!important}#er_search_results .er-search-result-box .er_highlight{border-bottom:1px solid var(--primary)!important;color:var(--text-emphasis)!important}#er_search_results .er-search-result-box .title a,#er_search_results .er-search-result-box .url a{color:var(--link-color)!important}#er_search_results .er-search-result-box .text{color:var(--text-muted)!important}#er_search_results .er-search-result-box .text,#er_search_results .er-search-result-box .title a,#er_search_results .er-search-result-box .url a{max-width:100%!important}#search-result-input-form{box-shadow:0 4px 25px rgba(0,0,0,.15)!important;max-width:800px!important}#er_search_button{background-color:var(--card-bg)!important;color:var(--primary)!important;text-align:center}#er_search_input{background-color:var(--well-bg)!important;color:var(--text-color)!important;margin:0!important}#er_search_input::placeholder{color:var(--text-muted)!important;opacity:.5!important}#er_clear_input{color:var(--text-color)!important;right:0!important;top:0!important}.er_gcs_facet_ul::-webkit-scrollbar{background-color:transparent;width:5px}.er_gcs_facet_ul::-webkit-scrollbar-thumb{background-color:var(--scollbar-bg);-webkit-border-radius:8px;border-radius:8px}.er-facet-header{background-color:transparent!important;border:0!important;color:var(--text-color)!important;padding:0 0 8px!important}.er-facet-val{padding:5px 2px!important}.er-facet-val input{display:block!important;margin:0}.er-facet-val label{color:var(--text-color)!important}#er_search_pagination{margin-top:20px!important}#er_search_pagination li.er-paginator-list{color:var(--text-color)!important}#er_search_pagination li.er-paginator-list.er-active{border-bottom:0!important;font-weight:700}.er-suggestion-sm .er_search_input_dummy{margin:0!important}.er-suggestion-sm .er_search_button_dummy{border:0!important}#er_gcs_mobile_model_container .er-facet-values .er-facet-val{align-items:baseline}@media screen and (min-width:640px){.er-facets{display:none;max-width:300px!important;min-width:auto!important;width:auto!important}}@media screen and (min-width:1024px){.er-suggestions{left:15px!important}}@media screen and (min-width:1200px){.er-facets{display:block;position:fixed!important}.er-facet-count{display:none}}.sphinx-tabs{margin-bottom:30px}.sphinx-tabs-tab{border-bottom:1px solid var(--text-muted);color:var(--text-muted);cursor:pointer;font-size:14px;font-weight:500;line-height:13px;padding:20px 25px}.sphinx-tabs-tab[aria-selected=true]{border-bottom:2px solid var(--link-color);color:var(--link-color);padding-bottom:19px}.sphinx-tabs-panel{margin:30px 0}.table-wrapper{border:1px solid var(--border-color);border-radius:4px;box-shadow:1px 1px 2px rgba(0,0,0,.25);display:block;margin-bottom:30px;max-width:100%;overflow-x:auto;scrollbar-color:var(--border-color)}table{color:var(--text-color);font-size:14px;line-height:24px;margin:0;overflow:hidden}table p{margin:0!important}table caption{border-bottom:1px solid var(--border-color);color:var(--text-emphasis);padding:10px 25px}table caption,table thead{background:var(--navigation-bg)}table thead{border:0;border-bottom:1px solid var(--border-color)}table thead th{color:var(--text-emphasis);font-size:14px;font-weight:700}table td,table thead th{padding:20px 25px}table tbody{background:transparent;border:1px solid var(--border-color)}table tbody tr{background-color:transparent!important;border-top:1px solid var(--border-color);line-height:18px}table:not(.highlighttable) tbody tr:first-child{border-top:1px solid var(--header-border)}table.thead-border thead .row-odd th{color:var(--text-emphasis)}table.thead-border thead .row-even th{font-weight:400}table.thead-border thead th{border:1px solid var(--border-color)}table.thead-border thead tr:first-child th{border-top:none}table.thead-border thead tr:last-child th{border-bottom:none}table.thead-border thead tr th:first-child{border-left:none}table.thead-border thead tr th:last-child{border-right:none}.topics-grid{display:block;margin:0 auto 30px}.topics-grid__title{color:var(--text-emphasis);font-size:24px;font-weight:700;line-height:32px;margin-bottom:6px}.topics-grid__text{color:var(--text-color);font-size:18px;line-height:24px}.topics-grid--scrollable .hs{display:grid;grid-auto-flow:column;overflow-x:scroll;padding:20px 10px;-ms-overflow-style:none;scrollbar-width:none}.topics-grid--scrollable .hs::-webkit-scrollbar{display:none}.topics-grid--scrollable .hs .topic-box:last-child:after{content:"";width:20px}.topic-box{align-items:stretch;display:flex}.topic-box .card{background:var(--white);background-color:var(--card-bg)!important;border:1px solid transparent;border:1px solid var(--card-bg);border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);display:flex;flex-direction:column;font-size:18px;margin:0 auto 30px;overflow:hidden;padding:20px;position:relative}.topic-box .card:hover{border:1px solid var(--text-color)!important;color:var(--text-color);font-weight:400}.topic-box__title{color:var(--text-emphasis);font-size:16px;font-weight:700;line-height:24px;margin-bottom:0}.topic-box__title img{bottom:0;opacity:.3;position:absolute;right:0;top:0}.topic-box__body{color:var(--text-color);display:flex;flex-direction:column;flex-grow:1;max-width:80%}.topic-box__body .container{flex-grow:1;margin:0;padding:0}.topic-box__body .line-block,.topic-box__body p{font-size:16px;line-height:19px;margin-top:10px}.topic-box__anchor{color:var(--link-color);font-size:14px;font-weight:700;line-height:24px}.topic-box__icon{display:block;font-size:50px;margin-bottom:20px}.topic-box__icon i{min-height:50px;width:100%}.topic-box__icon img{bottom:-12px;display:none;height:140px;margin:0;opacity:.3;position:absolute;right:-5px}.topic-box--product .card{box-shadow:none;padding:20px;text-align:center}.topic-box--product .card .topic-box__title{color:var(--text-color);font-size:14px}.topic-box--product .card .topic-box__body{display:flex;flex-direction:column;max-width:100%}.topic-box--product .card .topic-box__body .line-block,.topic-box--product .card .topic-box__body p{font-size:12px}.topic-box--product .card .topic-box__icon img{display:inline-block;max-height:84px;opacity:1;position:static}.topic-box--product .card:hover{background:var(--white);background-color:var(--card-bg);border:0;border:1px solid var(--text-color)!important;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);overflow:hidden}@media screen and (max-width:1024px){.topics-grid--scrollable .topic-box{width:280px!important}.topic-box--product:nth-last-child(-n+2) .card{margin-bottom:0}}@media screen and (min-width:1024px){.topics-grid{margin-bottom:10px}.topics-grid__text{font-size:16px}.topics-grid--scrollable .hs{display:flex;overflow-x:initial;padding:0}.topics-grid--scrollable .hs .topic-box:last-child:after{display:none}.topic-box .card{margin-bottom:60px;padding:45px 30px}.topic-box__title{font-size:20px;line-height:32px}.topic-box__body .line-block,.topic-box__body p{font-size:18px;line-height:26px}.topic-box__anchor{font-size:20px;line-height:26px}.topic-box .topic-box__icon img{display:inline-block}.topic-box--product .card{padding:20px}.topic-box--product .card .topic-box__title{font-size:18px;line-height:24px}.topic-box--product .card .topic-box__body .line-block,.topic-box--product .card .topic-box__body p{font-size:14px}.topic-box--product .card .topic-box__icon img{max-height:111px}.landing .topics-grid--products{margin-bottom:40px}} \ No newline at end of file diff --git a/stable/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css b/stable/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css new file mode 100644 index 00000000000..eb19f698afc --- /dev/null +++ b/stable/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/stable/_static/design-tabs.js b/stable/_static/design-tabs.js new file mode 100644 index 00000000000..36b38cf0d91 --- /dev/null +++ b/stable/_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/stable/_static/doctools.js b/stable/_static/doctools.js new file mode 100644 index 00000000000..4d67807d17d --- /dev/null +++ b/stable/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/stable/_static/documentation_options.js b/stable/_static/documentation_options.js new file mode 100644 index 00000000000..7e4c114f212 --- /dev/null +++ b/stable/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/stable/_static/file.png b/stable/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/stable/_static/img/banner-background.svg b/stable/_static/img/banner-background.svg new file mode 100644 index 00000000000..f8520d5b3e4 --- /dev/null +++ b/stable/_static/img/banner-background.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/stable/_static/img/favicon-228x228.png b/stable/_static/img/favicon-228x228.png new file mode 100644 index 0000000000000000000000000000000000000000..f30770c7edd4c0c8356c8f3c2ce60d84c395f9c7 GIT binary patch literal 4428 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/favicon-32x32.png b/stable/_static/img/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..aae1708f26fc93bd9b9e40284a4376a0e41f0494 GIT binary patch literal 837 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10qB_7Q#1%+e>xNqCh5|_t zGKc_@HWu;D2~9wTV{o~HZ=q*yubpE$L=BMZ-Mcby)2Wc7w?a?d58i(@VAUay>RI6z zp9bwXA9nunvb2athiah++x|x-ey3NdwQMqSUB14g?3w9~1u}nE7wzJ(aG9FkUgPBu z6ej3@WxA~3GgE^*Tl)K|TjKs|Z)Cdr<*>n*^B1)*nukA7a!tSNY;NlRhGAyDLkLsc zJO0Zid*!AopSkuX_Qci$27bZcP52T%vRepWTH|2v_xQp66_fc3TK!uqXFXFdXK;*W zeQCNy_p_*(!bUxleBM}lFZPb#Y0Z06ZeL%0FyxifpM2x! zQqN^u6{NCv-t3)weP!vs5U*kz`#ro5=J2c&S|Sl0H+kph zNZmh2R*>;5!~2>T^>Z6najoJC6zvf^bnfks`okQmFWMgIcy6jLaxNFCHLCa0bqLSi z_>Bh`k*X!G5hW>!C8<`)MX5lF!N|bKP}jg**T5pgz|zXp(8|mdKI;Vst0JRQDYXATM literal 0 HcmV?d00001 diff --git a/stable/_static/img/favicon.ico b/stable/_static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6c7484f082f4dd44edbb9bccb87391e6fae208cd GIT binary patch literal 1150 zcmaizJ4gdT5QZlxSl9#v>y$QvwH7&oCW;S4jJ6?-k|?nWYUP!_Km@f@I}tk2UcB zP3WLEc>CrgsM*uK0lkm-W{g6?k*kY z-PJfx5Bb=v1$rkh?<#*i$#1WDE|;D;pUrXkabMShGdc4^FT6TS3woWq2=n{f3uDa3 zrf^0+O&)XUVdoo*JkWzf4rML$v~a(sS=`VA@R7hEzm_k5@YQ!){bZBRet;;dPM!+w6lJ2q1FIruC9NrA9`V7aRz*U(m&lh)kE~p+#5RRoqRP% zNZy0Vh+nNcWU}HTFTM@@C-S|+!bjZP_qK*e=AnzIGK;CNXChlAmnm^D#X6!7=ZqzD literal 0 HcmV?d00001 diff --git a/stable/_static/img/icons/icon-about-team.svg b/stable/_static/img/icons/icon-about-team.svg new file mode 100644 index 00000000000..5448c7f007b --- /dev/null +++ b/stable/_static/img/icons/icon-about-team.svg @@ -0,0 +1 @@ +icon-about-team diff --git a/stable/_static/img/icons/icon-about-us-m.svg b/stable/_static/img/icons/icon-about-us-m.svg new file mode 100644 index 00000000000..09107d9520a --- /dev/null +++ b/stable/_static/img/icons/icon-about-us-m.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/stable/_static/img/icons/icon-about-us.svg b/stable/_static/img/icons/icon-about-us.svg new file mode 100644 index 00000000000..1b1fcc83e30 --- /dev/null +++ b/stable/_static/img/icons/icon-about-us.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/stable/_static/img/icons/icon-alternator.svg b/stable/_static/img/icons/icon-alternator.svg new file mode 100644 index 00000000000..7c2b4ebae0d --- /dev/null +++ b/stable/_static/img/icons/icon-alternator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/stable/_static/img/icons/icon-apps.svg b/stable/_static/img/icons/icon-apps.svg new file mode 100644 index 00000000000..7e93612026b --- /dev/null +++ b/stable/_static/img/icons/icon-apps.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-architecture.svg b/stable/_static/img/icons/icon-architecture.svg new file mode 100644 index 00000000000..67ebbc2f38c --- /dev/null +++ b/stable/_static/img/icons/icon-architecture.svg @@ -0,0 +1 @@ +icon-architecture diff --git a/stable/_static/img/icons/icon-benchmarks.svg b/stable/_static/img/icons/icon-benchmarks.svg new file mode 100644 index 00000000000..e1ce2c1d784 --- /dev/null +++ b/stable/_static/img/icons/icon-benchmarks.svg @@ -0,0 +1 @@ +icon-benchmarks diff --git a/stable/_static/img/icons/icon-blog.svg b/stable/_static/img/icons/icon-blog.svg new file mode 100644 index 00000000000..f4096cbf111 --- /dev/null +++ b/stable/_static/img/icons/icon-blog.svg @@ -0,0 +1 @@ +icon-blog2 diff --git a/stable/_static/img/icons/icon-careers.svg b/stable/_static/img/icons/icon-careers.svg new file mode 100644 index 00000000000..2a7c6ea0b74 --- /dev/null +++ b/stable/_static/img/icons/icon-careers.svg @@ -0,0 +1 @@ +icon-careers diff --git a/stable/_static/img/icons/icon-chevron-left.svg b/stable/_static/img/icons/icon-chevron-left.svg new file mode 100644 index 00000000000..3afa25c4812 --- /dev/null +++ b/stable/_static/img/icons/icon-chevron-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/stable/_static/img/icons/icon-chevron-right.svg b/stable/_static/img/icons/icon-chevron-right.svg new file mode 100644 index 00000000000..44eb829cdcb --- /dev/null +++ b/stable/_static/img/icons/icon-chevron-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/stable/_static/img/icons/icon-circe.svg b/stable/_static/img/icons/icon-circe.svg new file mode 100644 index 00000000000..875e4216707 --- /dev/null +++ b/stable/_static/img/icons/icon-circe.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-clock.svg b/stable/_static/img/icons/icon-clock.svg new file mode 100644 index 00000000000..8c924698089 --- /dev/null +++ b/stable/_static/img/icons/icon-clock.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-close.svg b/stable/_static/img/icons/icon-close.svg new file mode 100644 index 00000000000..d1162b73e73 --- /dev/null +++ b/stable/_static/img/icons/icon-close.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/stable/_static/img/icons/icon-cloud-docs.svg b/stable/_static/img/icons/icon-cloud-docs.svg new file mode 100644 index 00000000000..a9069bb6e5c --- /dev/null +++ b/stable/_static/img/icons/icon-cloud-docs.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-cloud.svg b/stable/_static/img/icons/icon-cloud.svg new file mode 100644 index 00000000000..cfb2318daef --- /dev/null +++ b/stable/_static/img/icons/icon-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/stable/_static/img/icons/icon-comparison.svg b/stable/_static/img/icons/icon-comparison.svg new file mode 100644 index 00000000000..49d809a5df4 --- /dev/null +++ b/stable/_static/img/icons/icon-comparison.svg @@ -0,0 +1 @@ +icon-comparison diff --git a/stable/_static/img/icons/icon-contact-us.svg b/stable/_static/img/icons/icon-contact-us.svg new file mode 100644 index 00000000000..9df3145dd21 --- /dev/null +++ b/stable/_static/img/icons/icon-contact-us.svg @@ -0,0 +1 @@ +icon-contact-us diff --git a/stable/_static/img/icons/icon-developers-blog.svg b/stable/_static/img/icons/icon-developers-blog.svg new file mode 100644 index 00000000000..ee804197a0b --- /dev/null +++ b/stable/_static/img/icons/icon-developers-blog.svg @@ -0,0 +1 @@ +icon-developers-blog diff --git a/stable/_static/img/icons/icon-docs.svg b/stable/_static/img/icons/icon-docs.svg new file mode 100644 index 00000000000..5501492f3e0 --- /dev/null +++ b/stable/_static/img/icons/icon-docs.svg @@ -0,0 +1 @@ +icon-docs diff --git a/stable/_static/img/icons/icon-enterprise-m.svg b/stable/_static/img/icons/icon-enterprise-m.svg new file mode 100644 index 00000000000..97be900b501 --- /dev/null +++ b/stable/_static/img/icons/icon-enterprise-m.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/icons/icon-enterprise.svg b/stable/_static/img/icons/icon-enterprise.svg new file mode 100644 index 00000000000..ee1ac26283d --- /dev/null +++ b/stable/_static/img/icons/icon-enterprise.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/stable/_static/img/icons/icon-events.svg b/stable/_static/img/icons/icon-events.svg new file mode 100644 index 00000000000..ba5f2118644 --- /dev/null +++ b/stable/_static/img/icons/icon-events.svg @@ -0,0 +1 @@ +icon-events diff --git a/stable/_static/img/icons/icon-exclamation.svg b/stable/_static/img/icons/icon-exclamation.svg new file mode 100644 index 00000000000..a7eb4b77a42 --- /dev/null +++ b/stable/_static/img/icons/icon-exclamation.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/stable/_static/img/icons/icon-expand.svg b/stable/_static/img/icons/icon-expand.svg new file mode 100644 index 00000000000..38065653675 --- /dev/null +++ b/stable/_static/img/icons/icon-expand.svg @@ -0,0 +1,50 @@ + + + + + + + + + diff --git a/stable/_static/img/icons/icon-forum.svg b/stable/_static/img/icons/icon-forum.svg new file mode 100644 index 00000000000..37a709f7a8f --- /dev/null +++ b/stable/_static/img/icons/icon-forum.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-getting-started.svg b/stable/_static/img/icons/icon-getting-started.svg new file mode 100644 index 00000000000..702500be409 --- /dev/null +++ b/stable/_static/img/icons/icon-getting-started.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-glossary.svg b/stable/_static/img/icons/icon-glossary.svg new file mode 100644 index 00000000000..e8329c2afee --- /dev/null +++ b/stable/_static/img/icons/icon-glossary.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-help.svg b/stable/_static/img/icons/icon-help.svg new file mode 100644 index 00000000000..51fddd80de7 --- /dev/null +++ b/stable/_static/img/icons/icon-help.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/stable/_static/img/icons/icon-home.svg b/stable/_static/img/icons/icon-home.svg new file mode 100644 index 00000000000..f0b9c25419c --- /dev/null +++ b/stable/_static/img/icons/icon-home.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-infoworld.svg b/stable/_static/img/icons/icon-infoworld.svg new file mode 100644 index 00000000000..906e87279c2 --- /dev/null +++ b/stable/_static/img/icons/icon-infoworld.svg @@ -0,0 +1 @@ +icon-infoworld diff --git a/stable/_static/img/icons/icon-integrations.svg b/stable/_static/img/icons/icon-integrations.svg new file mode 100644 index 00000000000..1ef0920d49e --- /dev/null +++ b/stable/_static/img/icons/icon-integrations.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-knowledge-base.svg b/stable/_static/img/icons/icon-knowledge-base.svg new file mode 100644 index 00000000000..884451270d2 --- /dev/null +++ b/stable/_static/img/icons/icon-knowledge-base.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-less.svg b/stable/_static/img/icons/icon-less.svg new file mode 100644 index 00000000000..3094127decf --- /dev/null +++ b/stable/_static/img/icons/icon-less.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/stable/_static/img/icons/icon-live-test.svg b/stable/_static/img/icons/icon-live-test.svg new file mode 100644 index 00000000000..dcb5916c264 --- /dev/null +++ b/stable/_static/img/icons/icon-live-test.svg @@ -0,0 +1 @@ +icon-live-test diff --git a/stable/_static/img/icons/icon-mail-list.svg b/stable/_static/img/icons/icon-mail-list.svg new file mode 100644 index 00000000000..0e6192a352c --- /dev/null +++ b/stable/_static/img/icons/icon-mail-list.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-manager.svg b/stable/_static/img/icons/icon-manager.svg new file mode 100644 index 00000000000..02b4e425beb --- /dev/null +++ b/stable/_static/img/icons/icon-manager.svg @@ -0,0 +1 @@ +icon-manager diff --git a/stable/_static/img/icons/icon-memory-management.svg b/stable/_static/img/icons/icon-memory-management.svg new file mode 100644 index 00000000000..e34eb4504f7 --- /dev/null +++ b/stable/_static/img/icons/icon-memory-management.svg @@ -0,0 +1 @@ +icon-memory-management diff --git a/stable/_static/img/icons/icon-modeling.svg b/stable/_static/img/icons/icon-modeling.svg new file mode 100644 index 00000000000..97fa3a0e213 --- /dev/null +++ b/stable/_static/img/icons/icon-modeling.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-monitoring.svg b/stable/_static/img/icons/icon-monitoring.svg new file mode 100644 index 00000000000..80b3787f668 --- /dev/null +++ b/stable/_static/img/icons/icon-monitoring.svg @@ -0,0 +1 @@ +icon-monitoring diff --git a/stable/_static/img/icons/icon-networking.svg b/stable/_static/img/icons/icon-networking.svg new file mode 100644 index 00000000000..40a3fd5f6f1 --- /dev/null +++ b/stable/_static/img/icons/icon-networking.svg @@ -0,0 +1 @@ +icon-networking diff --git a/stable/_static/img/icons/icon-news.svg b/stable/_static/img/icons/icon-news.svg new file mode 100644 index 00000000000..a952b59937d --- /dev/null +++ b/stable/_static/img/icons/icon-news.svg @@ -0,0 +1 @@ +icon-news diff --git a/stable/_static/img/icons/icon-newsletter.svg b/stable/_static/img/icons/icon-newsletter.svg new file mode 100644 index 00000000000..5b8d47eb157 --- /dev/null +++ b/stable/_static/img/icons/icon-newsletter.svg @@ -0,0 +1 @@ +icon-newsletter diff --git a/stable/_static/img/icons/icon-nsql-guides.svg b/stable/_static/img/icons/icon-nsql-guides.svg new file mode 100644 index 00000000000..60ebab37953 --- /dev/null +++ b/stable/_static/img/icons/icon-nsql-guides.svg @@ -0,0 +1 @@ +icon-nsql-guides diff --git a/stable/_static/img/icons/icon-open-source.svg b/stable/_static/img/icons/icon-open-source.svg new file mode 100644 index 00000000000..98c2ea7d5bf --- /dev/null +++ b/stable/_static/img/icons/icon-open-source.svg @@ -0,0 +1 @@ +icon-open-source diff --git a/stable/_static/img/icons/icon-operator.svg b/stable/_static/img/icons/icon-operator.svg new file mode 100644 index 00000000000..bb7d8d3ea86 --- /dev/null +++ b/stable/_static/img/icons/icon-operator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/stable/_static/img/icons/icon-overview.svg b/stable/_static/img/icons/icon-overview.svg new file mode 100644 index 00000000000..515c1528a2a --- /dev/null +++ b/stable/_static/img/icons/icon-overview.svg @@ -0,0 +1 @@ +icon-overview diff --git a/stable/_static/img/icons/icon-partners.svg b/stable/_static/img/icons/icon-partners.svg new file mode 100644 index 00000000000..d0146fc4972 --- /dev/null +++ b/stable/_static/img/icons/icon-partners.svg @@ -0,0 +1 @@ +icon-partners diff --git a/stable/_static/img/icons/icon-plus.svg b/stable/_static/img/icons/icon-plus.svg new file mode 100644 index 00000000000..5757435085a --- /dev/null +++ b/stable/_static/img/icons/icon-plus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/stable/_static/img/icons/icon-pricing.svg b/stable/_static/img/icons/icon-pricing.svg new file mode 100644 index 00000000000..74b01db1684 --- /dev/null +++ b/stable/_static/img/icons/icon-pricing.svg @@ -0,0 +1 @@ +icon-pricing$ diff --git a/stable/_static/img/icons/icon-release-notes.svg b/stable/_static/img/icons/icon-release-notes.svg new file mode 100644 index 00000000000..80c490c7b01 --- /dev/null +++ b/stable/_static/img/icons/icon-release-notes.svg @@ -0,0 +1 @@ +icon-release-notes diff --git a/stable/_static/img/icons/icon-resource-center.svg b/stable/_static/img/icons/icon-resource-center.svg new file mode 100644 index 00000000000..6e3ab08e792 --- /dev/null +++ b/stable/_static/img/icons/icon-resource-center.svg @@ -0,0 +1 @@ +icon-ressource-center diff --git a/stable/_static/img/icons/icon-roadmap.svg b/stable/_static/img/icons/icon-roadmap.svg new file mode 100644 index 00000000000..c8cbf67c8cf --- /dev/null +++ b/stable/_static/img/icons/icon-roadmap.svg @@ -0,0 +1 @@ +icon-roadmap-4 diff --git a/stable/_static/img/icons/icon-search.svg b/stable/_static/img/icons/icon-search.svg new file mode 100644 index 00000000000..81aae93eef6 --- /dev/null +++ b/stable/_static/img/icons/icon-search.svg @@ -0,0 +1,4 @@ + + + + diff --git a/stable/_static/img/icons/icon-slack.svg b/stable/_static/img/icons/icon-slack.svg new file mode 100644 index 00000000000..fc164ea1e77 --- /dev/null +++ b/stable/_static/img/icons/icon-slack.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-stack-overflow.svg b/stable/_static/img/icons/icon-stack-overflow.svg new file mode 100644 index 00000000000..bebe9b82742 --- /dev/null +++ b/stable/_static/img/icons/icon-stack-overflow.svg @@ -0,0 +1,4 @@ + + + + diff --git a/stable/_static/img/icons/icon-summit.svg b/stable/_static/img/icons/icon-summit.svg new file mode 100644 index 00000000000..4b900bd0c0a --- /dev/null +++ b/stable/_static/img/icons/icon-summit.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/icons/icon-support.svg b/stable/_static/img/icons/icon-support.svg new file mode 100644 index 00000000000..a4228b34e86 --- /dev/null +++ b/stable/_static/img/icons/icon-support.svg @@ -0,0 +1 @@ +icon-support diff --git a/stable/_static/img/icons/icon-tech-talks.svg b/stable/_static/img/icons/icon-tech-talks.svg new file mode 100644 index 00000000000..df42b5522ba --- /dev/null +++ b/stable/_static/img/icons/icon-tech-talks.svg @@ -0,0 +1 @@ +icon-tech-talks diff --git a/stable/_static/img/icons/icon-testing.svg b/stable/_static/img/icons/icon-testing.svg new file mode 100644 index 00000000000..2fe54efdbc3 --- /dev/null +++ b/stable/_static/img/icons/icon-testing.svg @@ -0,0 +1 @@ +icon-testing diff --git a/stable/_static/img/icons/icon-thumbs-down.svg b/stable/_static/img/icons/icon-thumbs-down.svg new file mode 100644 index 00000000000..3e7bcd6d905 --- /dev/null +++ b/stable/_static/img/icons/icon-thumbs-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/stable/_static/img/icons/icon-thumbs-up.svg b/stable/_static/img/icons/icon-thumbs-up.svg new file mode 100644 index 00000000000..226c44d853c --- /dev/null +++ b/stable/_static/img/icons/icon-thumbs-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/stable/_static/img/icons/icon-tip.svg b/stable/_static/img/icons/icon-tip.svg new file mode 100644 index 00000000000..bf7aa6af840 --- /dev/null +++ b/stable/_static/img/icons/icon-tip.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/stable/_static/img/icons/icon-training.svg b/stable/_static/img/icons/icon-training.svg new file mode 100644 index 00000000000..08b95a88eda --- /dev/null +++ b/stable/_static/img/icons/icon-training.svg @@ -0,0 +1 @@ +icon-training diff --git a/stable/_static/img/icons/icon-triangle-down.svg b/stable/_static/img/icons/icon-triangle-down.svg new file mode 100644 index 00000000000..e8ae088106f --- /dev/null +++ b/stable/_static/img/icons/icon-triangle-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/stable/_static/img/icons/icon-university.svg b/stable/_static/img/icons/icon-university.svg new file mode 100644 index 00000000000..f7547ab9599 --- /dev/null +++ b/stable/_static/img/icons/icon-university.svg @@ -0,0 +1 @@ +icon-university diff --git a/stable/_static/img/icons/icon-users-blog.svg b/stable/_static/img/icons/icon-users-blog.svg new file mode 100644 index 00000000000..47e56cddcf7 --- /dev/null +++ b/stable/_static/img/icons/icon-users-blog.svg @@ -0,0 +1 @@ +icon-users-blog diff --git a/stable/_static/img/icons/icon-warning.svg b/stable/_static/img/icons/icon-warning.svg new file mode 100644 index 00000000000..e4b1d40331b --- /dev/null +++ b/stable/_static/img/icons/icon-warning.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/stable/_static/img/icons/icon-webinars.svg b/stable/_static/img/icons/icon-webinars.svg new file mode 100644 index 00000000000..5e9f5cd4270 --- /dev/null +++ b/stable/_static/img/icons/icon-webinars.svg @@ -0,0 +1 @@ +icon-webinars diff --git a/stable/_static/img/icons/icon-whitepapers.svg b/stable/_static/img/icons/icon-whitepapers.svg new file mode 100644 index 00000000000..3351e51d23c --- /dev/null +++ b/stable/_static/img/icons/icon-whitepapers.svg @@ -0,0 +1 @@ +icon-whitepapers diff --git a/stable/_static/img/icons/icon-workshop.svg b/stable/_static/img/icons/icon-workshop.svg new file mode 100644 index 00000000000..5206e58e986 --- /dev/null +++ b/stable/_static/img/icons/icon-workshop.svg @@ -0,0 +1 @@ + diff --git a/stable/_static/img/logo-scylla-horizontal-color.svg b/stable/_static/img/logo-scylla-horizontal-color.svg new file mode 100644 index 00000000000..0feee9e1373 --- /dev/null +++ b/stable/_static/img/logo-scylla-horizontal-color.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/stable/_static/img/logo-scylla-horizontal-light.svg b/stable/_static/img/logo-scylla-horizontal-light.svg new file mode 100644 index 00000000000..6c6758f7d72 --- /dev/null +++ b/stable/_static/img/logo-scylla-horizontal-light.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/stable/_static/img/mascots-2/2-monster-laptop.svg b/stable/_static/img/mascots-2/2-monster-laptop.svg new file mode 100644 index 00000000000..b0cdb2caac8 --- /dev/null +++ b/stable/_static/img/mascots-2/2-monster-laptop.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/alternator.svg b/stable/_static/img/mascots-2/alternator.svg new file mode 100644 index 00000000000..066e2390aeb --- /dev/null +++ b/stable/_static/img/mascots-2/alternator.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/award.svg b/stable/_static/img/mascots-2/award.svg new file mode 100644 index 00000000000..dcb4be862ce --- /dev/null +++ b/stable/_static/img/mascots-2/award.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/care-pet.svg b/stable/_static/img/mascots-2/care-pet.svg new file mode 100644 index 00000000000..dd528340c76 --- /dev/null +++ b/stable/_static/img/mascots-2/care-pet.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/cdc.svg b/stable/_static/img/mascots-2/cdc.svg new file mode 100644 index 00000000000..4b6530d7c7b --- /dev/null +++ b/stable/_static/img/mascots-2/cdc.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/chef.svg b/stable/_static/img/mascots-2/chef.svg new file mode 100644 index 00000000000..4705a253c36 --- /dev/null +++ b/stable/_static/img/mascots-2/chef.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/cloud.svg b/stable/_static/img/mascots-2/cloud.svg new file mode 100644 index 00000000000..94e535b44be --- /dev/null +++ b/stable/_static/img/mascots-2/cloud.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/default.svg b/stable/_static/img/mascots-2/default.svg new file mode 100644 index 00000000000..41939b5aeab --- /dev/null +++ b/stable/_static/img/mascots-2/default.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/docs.svg b/stable/_static/img/mascots-2/docs.svg new file mode 100644 index 00000000000..1edb30b2d84 --- /dev/null +++ b/stable/_static/img/mascots-2/docs.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/driver.svg b/stable/_static/img/mascots-2/driver.svg new file mode 100644 index 00000000000..5b1a3c4011e --- /dev/null +++ b/stable/_static/img/mascots-2/driver.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/enterprise.svg b/stable/_static/img/mascots-2/enterprise.svg new file mode 100644 index 00000000000..6bf7d4ab0c7 --- /dev/null +++ b/stable/_static/img/mascots-2/enterprise.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/forward-2.svg b/stable/_static/img/mascots-2/forward-2.svg new file mode 100644 index 00000000000..11c53943a2f --- /dev/null +++ b/stable/_static/img/mascots-2/forward-2.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/forward.svg b/stable/_static/img/mascots-2/forward.svg new file mode 100644 index 00000000000..e2d7559db39 --- /dev/null +++ b/stable/_static/img/mascots-2/forward.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/headphones.svg b/stable/_static/img/mascots-2/headphones.svg new file mode 100644 index 00000000000..09845dd9fa8 --- /dev/null +++ b/stable/_static/img/mascots-2/headphones.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/heart.svg b/stable/_static/img/mascots-2/heart.svg new file mode 100644 index 00000000000..5f397de2c22 --- /dev/null +++ b/stable/_static/img/mascots-2/heart.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/laptop.svg b/stable/_static/img/mascots-2/laptop.svg new file mode 100644 index 00000000000..debb3f5dde5 --- /dev/null +++ b/stable/_static/img/mascots-2/laptop.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/magnifying-glass.svg b/stable/_static/img/mascots-2/magnifying-glass.svg new file mode 100644 index 00000000000..5668fc4844d --- /dev/null +++ b/stable/_static/img/mascots-2/magnifying-glass.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/manager.svg b/stable/_static/img/mascots-2/manager.svg new file mode 100644 index 00000000000..523d5a0c859 --- /dev/null +++ b/stable/_static/img/mascots-2/manager.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/monitor.svg b/stable/_static/img/mascots-2/monitor.svg new file mode 100644 index 00000000000..2aa1a147ab9 --- /dev/null +++ b/stable/_static/img/mascots-2/monitor.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/open-mouth.svg b/stable/_static/img/mascots-2/open-mouth.svg new file mode 100644 index 00000000000..062f25b7772 --- /dev/null +++ b/stable/_static/img/mascots-2/open-mouth.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/operator.svg b/stable/_static/img/mascots-2/operator.svg new file mode 100644 index 00000000000..3a794489398 --- /dev/null +++ b/stable/_static/img/mascots-2/operator.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/plug.svg b/stable/_static/img/mascots-2/plug.svg new file mode 100644 index 00000000000..e06ac69f3e3 --- /dev/null +++ b/stable/_static/img/mascots-2/plug.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/repair.svg b/stable/_static/img/mascots-2/repair.svg new file mode 100644 index 00000000000..8a2f27b3166 --- /dev/null +++ b/stable/_static/img/mascots-2/repair.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/server.svg b/stable/_static/img/mascots-2/server.svg new file mode 100644 index 00000000000..805b85f4626 --- /dev/null +++ b/stable/_static/img/mascots-2/server.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/sleepy.svg b/stable/_static/img/mascots-2/sleepy.svg new file mode 100644 index 00000000000..376ada21206 --- /dev/null +++ b/stable/_static/img/mascots-2/sleepy.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/smile-learning.svg b/stable/_static/img/mascots-2/smile-learning.svg new file mode 100644 index 00000000000..46fd91af9f6 --- /dev/null +++ b/stable/_static/img/mascots-2/smile-learning.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/stretched-up.svg b/stable/_static/img/mascots-2/stretched-up.svg new file mode 100644 index 00000000000..3d24b2c671c --- /dev/null +++ b/stable/_static/img/mascots-2/stretched-up.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/toolbox.svg b/stable/_static/img/mascots-2/toolbox.svg new file mode 100644 index 00000000000..218d7c0ceb3 --- /dev/null +++ b/stable/_static/img/mascots-2/toolbox.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/university.svg b/stable/_static/img/mascots-2/university.svg new file mode 100644 index 00000000000..086914cffcc --- /dev/null +++ b/stable/_static/img/mascots-2/university.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/workshop.svg b/stable/_static/img/mascots-2/workshop.svg new file mode 100644 index 00000000000..27d50a3ca5a --- /dev/null +++ b/stable/_static/img/mascots-2/workshop.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/wow-up.svg b/stable/_static/img/mascots-2/wow-up.svg new file mode 100644 index 00000000000..bea380c19a1 --- /dev/null +++ b/stable/_static/img/mascots-2/wow-up.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/wow.svg b/stable/_static/img/mascots-2/wow.svg new file mode 100644 index 00000000000..d809f8f074a --- /dev/null +++ b/stable/_static/img/mascots-2/wow.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots-2/yummy.svg b/stable/_static/img/mascots-2/yummy.svg new file mode 100644 index 00000000000..f93596e8cfa --- /dev/null +++ b/stable/_static/img/mascots-2/yummy.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/stable/_static/img/mascots/404.jpg b/stable/_static/img/mascots/404.jpg new file mode 100644 index 0000000000000000000000000000000000000000..769fa0889f8b33a7edfa1b6903e9bb33bd27da3a GIT binary patch literal 29400 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 *o#A4Bm2Pwzp|eK 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

        AsHsQZ?@8G~>-T9LgVg?Qm;9iIbZON|N- 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-advisor-crystal.png b/stable/_static/img/mascots/scylla-advisor-crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..d33fddd62f0900fceaf8bc7785aad0dd6badf111 GIT binary patch literal 67593 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 HdEoy8fIc?4 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-alternator.svg b/stable/_static/img/mascots/scylla-alternator.svg new file mode 100644 index 00000000000..0462f893d5f --- /dev/null +++ b/stable/_static/img/mascots/scylla-alternator.svg @@ -0,0 +1 @@ +scylla-alternator diff --git a/stable/_static/img/mascots/scylla-cloud.svg b/stable/_static/img/mascots/scylla-cloud.svg new file mode 100644 index 00000000000..a6c6a26fc99 --- /dev/null +++ b/stable/_static/img/mascots/scylla-cloud.svg @@ -0,0 +1 @@ +scylla-cloud diff --git a/stable/_static/img/mascots/scylla-computer-3-monsters.png b/stable/_static/img/mascots/scylla-computer-3-monsters.png new file mode 100644 index 0000000000000000000000000000000000000000..d0368a7027b1ee216abf8d8a1a83cb13dcf732c7 GIT binary patch literal 44539 zcmd>l^;er+uyt`OPH_$H#WlDVx8m+@p_Bkci(7Elphb$7qAkVUU5Yyt4bGSMe)qq) zKO|Y}S?kG}nKNt7o;~|SYpN?^W0GUOdGiKaSxHX&%^Re{H*XM<&{5$}rW5JR;Xh;` zc>|D+yB)~a(#!UZw2ix!Ev>SvrM<1Tt)-2h=a8-Vn>RIi%5u`WpO;TMu~YTt0$&5= z>`1k2KI0=GsW$1dCBMb2#FFplFbrZ${E&@U+xy~IuV!WO&P1cgAO*4JBc>^~jr96F zz08s1I|rj)=4`I#0qIoc`!L>lDOq&8By>VjGet{_N%4LEGoVM-l79ir`&MHA(Q-|| z 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-computer-headset.png b/stable/_static/img/mascots/scylla-computer-headset.png new file mode 100644 index 0000000000000000000000000000000000000000..0cdadaa2167503eaedfd33ca50de93801b46b4d8 GIT binary patch literal 22297 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

        k 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 diff --git a/stable/_static/img/mascots/scylla-drivers.svg b/stable/_static/img/mascots/scylla-drivers.svg new file mode 100644 index 00000000000..6012e71679b --- /dev/null +++ b/stable/_static/img/mascots/scylla-drivers.svg @@ -0,0 +1 @@ +scylla-manager diff --git a/stable/_static/img/mascots/scylla-enterprise.svg b/stable/_static/img/mascots/scylla-enterprise.svg new file mode 100644 index 00000000000..a1aa0b46ac1 --- /dev/null +++ b/stable/_static/img/mascots/scylla-enterprise.svg @@ -0,0 +1 @@ +scylla-enterprise diff --git a/stable/_static/img/mascots/scylla-forklift-boxes.png b/stable/_static/img/mascots/scylla-forklift-boxes.png new file mode 100644 index 0000000000000000000000000000000000000000..f64c29e6c7c37c8d30c704311ef9269553e87e81 GIT binary patch literal 29196 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 QE6QPBsOhT0m0w5vAK^}|lK=n! literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-forklift-migration.png b/stable/_static/img/mascots/scylla-forklift-migration.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f645c645adae7e881e0cb9cc099ec7a80faa34 GIT binary patch literal 24191 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-gear.png b/stable/_static/img/mascots/scylla-gear.png new file mode 100644 index 0000000000000000000000000000000000000000..0f53b26afa5a7e94e2e87b8baa568dd6c7dfb2da GIT binary patch literal 64841 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-hardhat.png b/stable/_static/img/mascots/scylla-hardhat.png new file mode 100644 index 0000000000000000000000000000000000000000..630f2d909427ebd1cf94b141b405c30e8a84f6ce GIT binary patch literal 20163 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-headband.png b/stable/_static/img/mascots/scylla-headband.png new file mode 100644 index 0000000000000000000000000000000000000000..c87abe684d5b67e5972edef5ad41990dcb2a6686 GIT binary patch literal 40533 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 CA}Z$q literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-looking-down.png b/stable/_static/img/mascots/scylla-looking-down.png new file mode 100644 index 0000000000000000000000000000000000000000..75cccbfdf12dfe20458552b79aadb3c21ad21d33 GIT binary patch literal 70044 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 HDWM4fznpb_ literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-looking-up.png b/stable/_static/img/mascots/scylla-looking-up.png new file mode 100644 index 0000000000000000000000000000000000000000..6f10405f2182a1f8359cb01cc51910d1ef88be41 GIT binary patch literal 69083 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 VQ?0M~bpRiX>}QZKi0@A5;BPd-mKvHm| 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 SK@E5k2!p4qpUXO@geCwl#5%|T literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-magnifying-glass.png b/stable/_static/img/mascots/scylla-magnifying-glass.png new file mode 100644 index 0000000000000000000000000000000000000000..74ad66950056c9952006d05ff406e4f74966322d GIT binary patch literal 16651 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 zwzscylla-manager-2 diff --git a/stable/_static/img/mascots/scylla-monitor.svg b/stable/_static/img/mascots/scylla-monitor.svg new file mode 100644 index 00000000000..48bec7dde32 --- /dev/null +++ b/stable/_static/img/mascots/scylla-monitor.svg @@ -0,0 +1 @@ +scylla-monitor diff --git a/stable/_static/img/mascots/scylla-movement-fast.png b/stable/_static/img/mascots/scylla-movement-fast.png new file mode 100644 index 0000000000000000000000000000000000000000..956d1dd0e227eb1a2ca927bfafe1551890c1ba57 GIT binary patch literal 18439 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-movement.png b/stable/_static/img/mascots/scylla-movement.png new file mode 100644 index 0000000000000000000000000000000000000000..7ee2b043384aff3efefccd431719dfe2fce9569d GIT binary patch literal 14720 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-opensource.svg b/stable/_static/img/mascots/scylla-opensource.svg new file mode 100644 index 00000000000..299e9cb9955 --- /dev/null +++ b/stable/_static/img/mascots/scylla-opensource.svg @@ -0,0 +1 @@ +Plan de travail 1 diff --git a/stable/_static/img/mascots/scylla-operator.svg b/stable/_static/img/mascots/scylla-operator.svg new file mode 100644 index 00000000000..655a450b2a4 --- /dev/null +++ b/stable/_static/img/mascots/scylla-operator.svg @@ -0,0 +1 @@ +scylla-operator diff --git a/stable/_static/img/mascots/scylla-plugin.png b/stable/_static/img/mascots/scylla-plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..b28dc857ccfefaf6b20f893ae11c51d827c70e0d GIT binary patch literal 52683 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-release-mascot.png b/stable/_static/img/mascots/scylla-release-mascot.png new file mode 100644 index 0000000000000000000000000000000000000000..09342ac6875c5ac16477e7cddb811569e0eff483 GIT binary patch literal 31893 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-repair.png b/stable/_static/img/mascots/scylla-repair.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4c613e702e46802b3a2921f81f339d3c153bb6 GIT binary patch literal 21261 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 Bgz*3X literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-server.png b/stable/_static/img/mascots/scylla-server.png new file mode 100644 index 0000000000000000000000000000000000000000..96dc785298bdb82ffdac74c64e6d360f12dfccff GIT binary patch literal 48529 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

        kp; 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-sleeping.png b/stable/_static/img/mascots/scylla-sleeping.png new file mode 100644 index 0000000000000000000000000000000000000000..f88598e05ad61c07b8fd4dd2df25db2c3b331ec5 GIT binary patch literal 12942 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 UO=AtOBHIEKWK^W9B;N=AKL$v=ApigX literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-tall-measure.png b/stable/_static/img/mascots/scylla-tall-measure.png new file mode 100644 index 0000000000000000000000000000000000000000..6f0ca146c0d4a9ca231919e5a38d26cecb176fd3 GIT binary patch literal 18996 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

        7V#U-M2EVk_UGHzyn=t98lh6Suk{M*aQ=9*yn^ z49B>TtLy9AdX1P^u_t?J>9J3^gn-wl^40sAO`<4dCFsE(BaLqDQ27L$KCr2&iQUGklXe9P5nHH= zv3cY-(0%IT#w7)|49v!!uFhB9tx}$yn98NgKrTxumvUy~aRVEq?ntJ-$Ktu^F}k7R z9DQtF^zw>kU|-XTk~lmzI@T0q7Gor_T6Nf%EB*Q+=A3Q7812TG*vrw>aML_oc5wnOoHmMNr}cd7yy!w8oa_|pcJvN~|W zq5xQ}%vL2+NcicUlg>_`2R*l+ z8KpFy8kEUgv2Tne&SbD!faP_vw(541y%o%V^yvxEmq)>c<*I(0=KLqWA)I)=;%zhP ziMS0LPDY|iQe|F{Gv0efDD3fA$u?Z&tW^NXHZ4S-YX7T6PDBKyj8Xtj8%iw7`krb)xZU-|c|JCaep4-bt& z0HQA2b_M_+`Ak-`R2qI@2&toJXl6FPNw;+^!g^q&bGyn9I8Qt2+TJcS4Q*NYV}|`v z-fkTScsGBPFV+sRi>0Oqw;i^a&vTFVc6Q`7HF4WhwSKHTDj<2X!cA{!rC8vE6B}td z=<11|$7WFC@72C~x|rDodD(6>Ir=Wgm0T`>?&X}c@~@cr%GK&3v2p0n26O*zS+W{DlnY3D!?F${Y@MfgI_QuEOHX2MRxz#dA)UAveKyAW_@Op` zg01M-{@0YpV8HAsg9y?Ry5O)z>8c^zhh>z@!yp_q+VuG@pA>Y|N35@3Z_UD9J(G5Jk?3|*)!eD?o z>R>IqISq)?jS48vZ2iN6^UxQ>Y&V||^-1zNb_B*X=jo>6tv<;bzXL+(kFZ?e(7CzU z&w3Kz(Z=9Si*&on3DDISoBoFO0nn&($1a10zO`7t+J;8S;QG~C$7%cqSUcMZ!=v!Q zWXl6j{_QG3e5GCsiLM8*P$BFrmBYX3(%b!!c~es;tL6lZXQ=uqm=d--z=`26q+BX{ za@S&~&tR9owf?B*V*f0lqmv~JuV1TCWjE+x{CG*)46S6}|AwiAfG$6<1a5Ps>3AAL zCM41i0S6g|NLxHUOQ9SEw+!+V_Ai*_UIdF{Fin-IVVj9QK0eqnK3BMn@zYw=DtK^d z_IPpe;An$~s|DcAwGNB&0PWsw{ns1OYFuJsLk&=@!bRc(DnXT*6R@3%=n}Rnyqw0<}N9Sr3HsQaC0YW3|F9O=vA2+x%S&%L8sLrD+M#EC0^{YcUTE#xq!NGX3 z-h`bj6aQFe73Ope+VRs*7_oIRZD9+9A6yZQZ3br){%jQ zB@D5x=K&)r1Rfa+gpJ9m@%UAaThiyEqN{lMb>H{XA~e4;B!Ih%8nY%qt z>r9SE{Ss|~9yVW(g^w@IHr|S*Ey-uIY*}-V@$TVwbaWJ6)q@hj_E$<~Z*TW4H@C6Z zmlztr632hg3t3j=hvhdUVYR;9;^!VlcA7}kRGO6A0!kg@S-XVYZ%;OaB#p%dS^g%E z{7dis)CQIoH%Cs)%*;jazdby%UViAwqeS3vMe;u0fZ8yc%|=g2ro}HGup++!*_Qmm z?S~JfD(jjptW4ZPB$LY`Wl@J#jLzj_uYR$1IGgaQuy(#eV3U=XM`@S!+Bz~X&!W|6 zm?~0G5?R~@k3Gl(*ultseSQ13;I}Z<+`k8GMq#B%XS+@Q68wNjiI8r4CsVRmKACNV zA){xDGFr1MnX1NpIOO8;;*P*!8#8H1qmFwiSy@>D$K?m&&8Om3ipt*I#-{P0J#|G5 z(cSS@FgabFqxNNCQC?S>mz`fAS0N$r(dJht(m=2Wr1X2!>3l5PHEWD+dn;vS^ciwM z)eTM#d$e_Kd03K5P~zD_n&7l>idZPX$FwjfXIMMWjUZ`&nTg3{B#AL;`xArB#J8j6 zhKfliE@3iPT~!xVf{%q{f&f*RqPO%C-eRRLMGy+xFZ+%u-et9KRN+A@3qK0xyoCzx z6WlzPPqvbHJt6hT!T$AzsK_cR#sd$M3x@#c{As|BK=?8VDv9+AQTzCtg*|T-BvKV+ zT1wb7u#`WoKu`z%DctB*ag&Y!ADuZ}6c=6B-i)*Ojlb$Xv4dkRbRzU=^9|p8u2lvK z5tm`9e4VU6QIDoa&L2>R`<)_IXP{df&=Oj1It@LH*63NUY-$}0tFOc37<<=#y9ZAxVbU=i35b7!boGXQuc2o5<=d%^=At z9v&V-1{SdGU()ua?$yT;=oHc}XU6GfbT`&8@xnqA6CyKyXs51L`yhH>M9S2UVnM>; zd&W0A@Pin57<4*6iAzedY?a%G4y9GojGwLLK)o1!Mg2BW8PGi~qII&SQv&YXZqbq! zDFo4Dg;8D%bK_Ij8ZQ0fjHX5_#k=^nz^G42&V~UhOH2tJOG68b;g9L{cJ3b-i0F-h z=Qcrvj1N?R*`_BwZn~a1Fo1-FgR*){_-@@iB@{ONldD?OMxR!6xqMYAn>#224lL;O zMUC_B?pU#|CHNndPf}4)k;D8izU+~;HpWFxLLzS8_Gc^l(}kv<%H*HnbgM1S-X&W? z5PFngO@DM?e}w%2C@fbyV&eMrh=mr1QkNb3LX_wT<+__@uBLgcjhRnymiLhFWtXx| zo9Y=*Ama|IT+n*yy&LNY`qeemgvm_WL}F%ecxGw4C*}9=kz?*ncx?ntM5NaZqFRc__7UL49cGnO2x|m` zc6N8=_GeIu;b66f(}xE~izsO+U!g@=ez4^yfo;gBmwt=f&>1BTOBb!o&nS907cVX; zy;!`PcF$LEl13y`54t&7jN>H5Y!?=h3CV4-VIidW0UbjE4l$tR(AY`q8b+n%E`f~M z8T5}Sjn*TBs^06AStV%DKptD(w#YJ*Pj7pRg1V$)k}oiXBsn=Q#a;umR0puI!v;2H zD%O--DR_&hZ259SD*e*Wp!t_&@>vFr4V@97ThO(drC(k1Ol3vsM+}30bGnMt#tRey z6kR@PW4+>)Njez+4xRb>b6s&t0)|vNgzLy7A8#xda(P`YbVeE?v3T6zf4L3jbzR6^ z1+cdxiO#%#vqS|)l~#+uVNC)8iDDpeV=>u)l2HD=O;Wy@;zFJMo}U2c+t%?A@py#H z7lnW%_O}X^gWkOe-gk@j=e1jh#ofeh|9Qp`F)?xLDEfB56-cKs)g}nMuyL}I)>UfU zp9N7-QQ6oKQUH>D5R}}SMW%#{!hYMr4O+-(w_C2dTQAU%x?Q(yREZs;(d8MK6n}Foga7?|S5{Hk z?i7&ykeQ@`-x5VYhC5*tW?{E?9`E*rTIN`k%G}RZ#YM8)^Q&{Xig=%Ba@6K{3HLaA z&b2EX72kdL2#~hAmr*~fo7a>8RW$l`_w?BM;`o1bv2GXbrIp6v;ozogE-=xturB!l zy#_{HB_Ib5{pt_#nZVgt^Bcz8za_Uk54L;o%@$8O;&Kezu8hqS@?$jQt}0}NXQa9k z0k=sA_26P4CVLvC6|O1>1-)H!F4CZ9cv*?X7HW5R)!J+lg@#4-gjjxiSTHo+p8)7q zQoz0;W(;F-e=ye~GuWlk2{II{Iw2}h0D|XS$hce>u&F*dsM(dzIdSZ7W9roE8yjQj zwsIP^DcDge6lY)1F=GkNV%2`kSS?#N2({*@5^J&kvL|0%Z+1odle{&7ev3t%H6<T58(XVWegi+FE)(lw{i!E=xhv?kWFe>(-!yzA#!@)XCP54w+bWi zwf>e)FU4(p> z`0}rtEqzKrJ|r?BV`d+NmNn#KObBhDvPzwG~9CsIq$7QlV zhF9$6=;XL!f8K_Q7jbvp)%#B_=OYoR)$IvH6c!c}gK4{+(_ry@f-f#A%LDl3Nk>Nx zlTqa9)|%H(yJhrm^_a8efNr7e_)Fti|K-g_j=hPs7#5o4l3+%~Dhd7{n>DCDTYLC%?x9oxFRE7qsbVZZK65F!yd}*eDVLEAS;)wtMWA z8`5{O%4fa)X&nW)f-AEH#FC_Ft79E(4C8`n+~5G zalZu8uHl`oG%??|?WfCcD8h+I=#?{Gpl$i!-+rw&qoWlF`3lPaY|wLae?I`sUPGUr zIHe?6zN<$m|7F)DqHEegIm^@}h(`MbgR-Yi!D{@EkGay1X`oXrkwV~KnDx4=L zBWq7eOf0zgYslXPFJDUQ94*|9zXUE~oF%8B5Ohq}c7FpW6bunccPS((YG>oIYFwEl z_4>q1%GP`{C1KkW!8bsE-uNXTAmBS68zAE~lFppMRhY_->up0t-?F|Q6%_@TeJwCN9KQ8_&7H@~>8RE;X&`S93W0e% zDd5I-`}C zhN5-6ZIUUb(sH?U-7zpWe+_uCbNJ2wQa+%dpuo}p7kC9ceCSJN9-_G{4?-KK`kl*m zd4=#A&Up9Acp;))dG5q`!hS_>5J748q<%d}ck;Ku-g%KizKt=qgK{V{gY%hYOM6^g zoS$)qJEB*+m&-;M6r=r~BoFQo5h2ys9`lf|uP!7B*;(VJ?kH9bS3K;pLLw(NtQ}N* zClwtXBDG4nkdzc{`@_~SJ|7Mia>%1G-H)Fp6wZbGB0%}F7i^xmprmxN(xfn)D;6?t z)qH5=@9*FEEc-&ZiQyrlCd&}s(+3U%Lxp!1La|F8^ZuS5*i=-dy-pt11A(C#3^33) zfT+>C*~60_6ldjg|k}^7Ngjy z>}&R{^OxHL=3xF5 z9LAm6``RZwF2p;t1VDSt8WqHlBKxu^YEoWtd`}nHJ7A6u1q*uh+P;^aNe4mGX;p() z*;cI(LUF`nIj*%nI(gGmQ^T2eJP2Huuh&6MOl9EP`o4s$U()ZV( z+L%8bpB*-wcU)6ydX2g!G3n#_3W5P%p*WynCreL%DjyN;_U@cM|E3ob z=~6FklaRMW5>=Z$uvGUoyHRJo<$415SMI+}L5Mj0crlYn%+BTLx4>}IYW}|3zPid= z8`5Yz%`YU5Ot;II`SSGX_N-joO#_g{6frW|6XUIUO}elJF{F$9OFdLaANEn@posOu zW#CbhG!Za6M=HeraY?Utm&y?w9Nvkf(Qud48ww5ZX7w0L43fUrg4s#@S$b{T+cWaG zyLoS)ri5Gp?9f0vGJX+`3Uc6MTCjVD&y60FE zCg0krC$)Tlo0Og&k;XZ2k^J(vAt6oLkv!2LNk{_M>`U(OWJZ3wHYdxavTZr7++S20l-UIk_a7g=z{~UCCgEs-Pu{$AQi>HRf?PO=?k5tz^4<6hx zTmk|D>Gvfh)c{6(S}K!6B9BFnnN!|O%O$DecK&BJj){)8&P0{qU}+ZgootuW4yf9w z;9%&|)(tS0nfdM4dzIT}Cp;9C&`0C+!I09VX=qr)e%F0kQ6r=L)%Dd%UC-g_l!GW{ z<1vA)B%z(%{ibUh6d*hS2hwnNZ*T5m@gqFtOVjj%sZq7+V&zoKoUMmET}^#HCFZ3A zfQXms5dl4qk8NIFccsiXmHnd!s8pDDD>dWY*$XQ1XB%CTmWzJifKlInLvz#$=YySjygLqcrtH^T$`uOB`vjaiZZGH^a2E6}hn;q3CV%NLXo1C`v0W`KE#dRY zNGI*5-Gj=KK)|CcENDa`unq6;DaiX`h((vQ<1(X38}1uaweA2m62qF9AYN$4Gj?${ zya^l27fEU9xpeEb6?c9{@d|FoB}FUme3h5iS4Q`_QZG-ojyQdW5R_u0Bcp#D*C)bZ z=$Gt+KqP4mQ)p?(CgXGOe8&3AfCBVyg*`oaoK6-dkN1Jnx8HE+FR$Qc4y0e#+4(LW zCwN#MsQ?LpUAoSj_?!c1HKAXs0jGgMOIT{m3rJ=mTQh)2ym`D|g7*1Xg0M0^9@WYt ze_WQrF7+$;oxHqyc8I2LsUCp%nCQDKlvM$8qu{uTO29_+U3wyYk+g^*quTYQd1qi~ z_QizEGH3NywzKcRlWXL@wuv z_$q`5*4Zy>NV6J0&2KaLGndm z;g0=8I|BR21Tp)s<)^NIj1BjKF4Xesw*|66Epv(=D7x^J|FwcU8(x zJZekLuerIo%<{M>SxL#-bi|PPS5;u?`_rnL!GYDWpU;B?o|d|W2Qi4bxJm}b$w^5~ zv6!&>wFCqNY7f4-XYwwp$%2DJ5`8CArVnEIo-jfO|8b@aj_xc1rX|w+qkH?u%d!KEAPL-;#1mz!MmYL&5(u z>^6gnO1GxcX60*)f)P#{2s-V%C@R|}(1W>v(SekFi6%UCm3aco^FI&IE_CC>Rnx>4 z`)_{+CKcrZ^A!>hm$e-nL^Zt~>rS!pFKsVRC%?fne+@*!$q$IWOZaUiHgj}*eB<Cy-(?XA^yJzuln(gn*;E=!U^Pyt~yz!-==L(!rl zH?b2yJqm%$CDmYRY0I1%atC+t;gL(L3z*`WdF0l z%Wf#YE-7_Lv1j@{#WpwdM@0~7w{ZfHmb-xeX~s^%rJ*1>?N~F8AQl0<4z7eYjn<^x zAQ{?@awiQU3;>ZJ$!F?h0~b}u(vtS* z$c&55Lrp|pe!e>d$X7k3<3<=f^J=X9S*!TbL&uPR23=p(jQqdt1uD1- z?H{J$64Fk;;-qCH&aaYmAwTW0Q|k@jJ8!a?8x7CfU|h7&J`G8M;H_=W>353l#h!cqf@|KCDQ zMT3;jwA9DRL+o_CvFnT;gB>gr_9Di)%7Q6v(Nt} z0LV$4!usqE>Pl)M-TDEi6_lygZ!eFh6&wcfwvd0MA7!A`KdIGQU;%o23%jp-`9>#e zbrSajIaEisyd`stb|8SbWaKb9W=mATsg$Qi85^sS&GoOwt1lGI<@I*H78mXF=hT@{ zTke<`IaRMUyMK^s)bgUs0Is5($0@)0DZU;aDC;!=t*q>-s?WE#2&jju+q5)O4Z2TD#&A3^SiETnanv z`K&`5RH+`rS*0f7gocj{hzmDkNeReKGr?GrIG8erm9=MmM%&#jEGnAJ{vj?dZ59QH zMYEIk{xmcsO-@d(4JISEE3GUnjQroloa9SRvKd2&v6=v=EWg%rQeIwMjfuFZaoWAS zR^GyUvVIa}0DiI*QA8w%jOv65LzRXCa3es&;@|N2K*;t$OiY!`@&4`YZDitevD?JT zOm7j>M~oteh7D72&WMT0`Ws=IztI0kJwA{>in9qETwBJ7hzNGaqxkO+agJRAe_#kv zP;K#|^Rjvte#qoHAxpl_|48`?kVh#jJ;cRB|0G4MG5;NTFgs0LsI?`&gYn`21239; zh3@T+k-_?r=3%L(Qd3Zj@i8-lw)-Q@y`%o{(6!yjqoal^m|9th{5f!6594qD#z!#A zI-6__{&?pAEbc3+kv(TS$}iTtujRbm4@tR9KvEK3Pfx!}rwhzty&li;*6C42nW9*}%Q*4lO7)kHZM;Za z*>vgR4vqHhP%1QbVFd{wW4)`r60|;ST_?}}keQGdm$QwjpNtIw>iD)6ir8-n7i#qg zJxomt33cveA@5&IaWh51Wz<#^! zRuWS7&j=Zxs9pz4ju0Ij;^&gPQXQ2UwgE1^!la3)uhft@FdQM+z;Is4avfqG`B7M0 z+zl{xj^bC4IJ;m3-d-)87_rxEH(H$%YK!uqlhRF}_%ZG3_e>lwjh23KWL>hAYs zdV6g1KhbY1fh|6Ic=Ub`!|{Hz=Y<;it@?i2ppFkiZ^V|dyQWJ3bX%B52d?BEDjMXR zv-402CqJdeKyo{Vh2o5}5?UIhBvm3b{UYftZgeYxh*~Yw+rq?ZYtoaYSm!!#Eep71 z9Qmy9wuq8d{@v0z z)WfL~>{&~N;h5fjQO9AcXnrYR2!aNy zzH9o{-@u^1wnLOCsnm?skC^Mr-wPD=1`d`S(~u(5 z<87*^e8YRF#Hp23)q-1vJiMAoB%(t0y^Z-d`=SS%OLj9SNxd5m4`5d7#a7S0;9oDV zRPFE!WM7|Wu5XygDYQBA3^~0Q@@&HPT-r>uJQK zZrR@+2P%`)adDEe2qD!oyytM#%#YQmd( za7x&(4j{c{9&j@>+UcD0nj9O7Wj&uPV}05C;ia+66jMX<#S_HJ)zXTX%rvI^tek=) zcX3}Jr!W&sOwRtP(XPrr`o}(jin=cZl9st|g$$BjaXDf|>l19c=N?vSF*Yiqb2tLU z(|(h2hVa{F53Qaaoy~UBDD=&-+1AzV<%-1&Xds%n_H{iculH~eR;y_^JR?JN-nu2h zD0m@V3iuiEZw5HvXKJ!mrVQVv45u5dyPS=`om8Z-Wc}>PJ+>U6_7z zJ5+>;8)zPjGJi4I2(&kNxT#za3y1?+;r6W;-Pg&TI*{b?4<|tc_4T2UjB(mav2Sf$ z=~NU4*b}`!WZ%8{IAq^Fnjq$BEdS!xqLc}El5mi6_yZFP8|3LxZ=xTf60keCOIY4` z0k!E?9JZbwHvrR8r|U)L8X7CHWrpN!u;bNkHjRwh2xh~lsNPcorPeMe}lw>HTP%}6)w z625NM92f>Zz}4m39aaV^&wfnWXE%5vJ#eP%$I~k?3bX&i72od`@A<6uEDyEXi!KS) zA7S@;LPvzz_{@Y>waK$CuB6oEe%=u@ukDEzfuLFETFL*$QhTzg|A~%60lxKnGu$JA zKcw4Sm2l8!6O~VI6dHJbKD(lTz-)<#jyf(GZz$k1o z!ZEu=CPb^0e06yQ?+wJN;gmYZ8>xO)xZDIo-u_gpuM8sD%-^N*2tQ-Qkijb1_=9HV z9>b`isG_1j3srK_Rjjn8RpN8lAI0~U$s-aV_LIQWeIt+2^=GXy9u6%lUHaC7IXxL} z$yI@^=v_p{ zVe6sQs1vqyQ3WZf=jB8?6RerlLE&p!RnD?|jZd>LE|qbGQDo-!^$L_ynvsU;p zWn_#+du=?teGb9F3rv`MZA0IVitWCaQU^HY5i1OB)c30}u{d%uzr1x9K*?ob>Ptw{ zSypksi6`RH=jOW%n^S9IV@Y#gz0PM^+WyPgbHOSHcCCD}e-DR?R3vQcMif1pWqKlL z=rciHWfTwl9d9AtZ`Yu^B24gjXDUoK&UR;sxk}9OV7$Ee8|r=eK$(3_kI!CI`2`NH z=HkF?X+r0a?IiwCC%JhyV**@QF?ZP;10iWOAX1Bn+vMB1m6V;MRruK>JqthM#~yr2 zkw(qjh%lC|@5qtetTZVmS_(gq^)xuZun3Sd|EE$OH` zmy|ME27A+p!y$9?5SiH3$ZT(2K=OGmMl^E3YFIVmt0*mBU+ zvU5;2Z){*gNBAES%0P$!j0sPXGgv4g^B7XM3x!HDiks>k+b8*O^8iE+f2VWmSG6vb(|Ky`ef z-4aKV3>4L=C8F_$e1xpOyDgyv^AEuS2tX}I~zA2PCfw)yo0)ikh@w*f$2Sj~mQ4Fa<4m?>NcM8^`JdMnuK|xOpY+)>L|Bu4 zG%4fd3O!AuM~oL7GUU^+`iy82UP+tUqFUpA`nt~S^SSwEKzQOe7Mqj|$;^)20HHf7 z3IWu~@!Mr6FD8xdp{C;DDgP*fSz!YiESg^fCHe-dF+l=RlnpIG21kROlP0?j5S$FN zj@rG-&hIcO!+6DDw~7$ha7a04LWD=x)f3;+RS4*3?7pY+{`^91G~9T}4HxMCLv>a7 zdX(L5D%iUe;^_#VfASN3+YJ%0J%K^^PsDnS@(sN0slzW(5mKKMxx# z5E9l%FzX_M7t7dmaid`ck)HgUd=Y;Jr**YhtQIc$>3Z3hs580M$AAg1!wurhxGlSv zE>>JtL6=s(=q@1nd1H%9LVyx9^spOX)a&2mlosY1}!E$KtEMvUfbi*(uY%p*ouIOGgI-|wMS^GTa63Nwk&ty{CJc# zEIu@?_FwhBY90w4{XkU)({TEF<6{zE)1>fqEr{??=U2y{eQy-5zr+&m8Uzj0A~B){ zRApT#=0;w|`qlk|T0ALAA1R{$P5M~}u^#`X_T(BdL^EM`0!OctgAQ>^O5mi3g<&<1 z`cbujNJ|W|`Az@V&rry}@F!N5Sre(rDhr(epyRYvHIIO|d}DxyF{W_&DNRE^3a{X;GEgW+sMvKUDGa zhOMOy&p3j4Bko*-92+GT1q4C>2uxadh`V*Z-FT)AWoi^Fhl0AJqWsTNoP`W#v|RZ$ zujDjJyX=pLT)k{TgqY8Gpn5(z@);bZfiQPRLBSQ`M12H0;h1II*Ja(vT4CPyXhNF z(>R}RbLbV_c@UHYCb@r)u(7x*_g{fw_6z}IEAB*rb$FNOlD7tlU%zPAJg%jHxf{Oo z`YR3qT7eQFUU$0*4fw;Y?nwbCT$RSL&-f`}q>QSo{tXlErcR(W@Ka$_1SS_o)f%dBPaNSOerh9v< zO(9!73PKa##(nLLlQgjl&M3j5C>jr2jfA+qos?&0egbsBpp<(FkWP6Rx5@i;04=&&_S@940WPWT8fo5muv4pUgN<%uPU;x6a+ogB=W%jPad;>=(g z*#(ATu~t&j(syRlE1BYLry~?d=5wE%5!YBuH0&j31^q?a;EqEn^2lW$R_A}MJ)h2^ zoV6~1<@nH|c%2QtFm|@%UF;`pvXa-wF#gSyfdv zc-g8AZJg(s#;mxcDaO%vQBOocVfr@>s-s4)E;i~qnHw~0j>REhs*2I^kHly)439ikjA7&$*EF6HThzI> z@=b`T3uJ2DvnflJFdUQ7I?w7kU!6IquX3w)z@>K`4gPQtO9>xA*Gt0t4`U?jet+Hw zLBgGnjKBWB>dx{ns_*T>O1Cn!bmxF{clVGIQbQ_3w{*h{C5@ysNVkA=H_{z~fJh@9 z&-woTi)TLb{+yY;&)Ivg`&#SXte=zsro;1rW}w2yk8c<<^m13^I+tPw28glcYo5C% z>!tO%dGKxy!Lg+u5^BLZG85d`8oD=mbqWfyZmM{gDi@Sw9|vk!Pzxf5jL?=_Fec+$ zu@;zkKoU3lMWtyhr7iTVtREB|9UZ~gSeh*~?gZ{@H${ph~H?oz`n~) zB`3Yqv9!EDOmVX&#a+*g86kqatVK-fo*p^gV@3T72kPispB1SFcGJwFcO?z+07}8p zSQGOe{^0|< z+WqEUgKZV+=i%ylz5*PgW7plYOuz3~)YYzTRg_}ek5UfUUGILXN&O|w^+Zs`QDmB# zwq%|9R&@Lj@%TNACJ?o`3c}4da;A?`r!98dXL$oOL0DNhBlE(5r|v+411888t!dR* z8HAa}LTEn|_aVSyi$B?z+T&+YupLdmVn|p0V4#NkGAN7muEe=Po?ckAQ3K`X@FuMtN=quUNc4RyDQ>%3uiUNjpoieLv{r@kIWSu{V3{Gd&!-Q{PVr5 ztF>anJgK&=aSH4-o{fb*+oGZQ`E(CkU(sDoyQCdq?@UWPz|#U&IoG>?Yw^O_2%rCe zl)pu(sB<*cGa4FYCw}3XC69~WEg|TWLxlH;KlXkhl6v(-u)}hwG8(9iSje^u-n=}DtS{=D#502$F!Bi@36@D&oQ=~CzR?puNQ`*5OyR$F!WV* z!)3!3ute`lWm|E-U2%Wm0Z4Aux6BofoVHH_bE|q%H+QGm(}o=B48KMg(Mpb#3SC@CvvbcM(`VXcIJsBr*S zw^+Vz7Po8L2<*`}!7st&O6ip~L6!Gkb=GjpBwN^mTYN}iHZ3+~AtjFd?p0ng zj1!$|6yks4qobp#(xSrKMqf7+uLi7H-~adcCbmPvzX;_~zl)o+U+JC}=Ugh*|9My>K1f2pJV2%72{uILda&3%)56@>bqg>8`+Oano6Kin|tMe_i~G zAuVk9c?PiQD0sV+9|Lm!4cORRdULbq8hU+Rl98`ZwVCAf`FipG=AVge0uwqL!HhyvK_ zs?g9rAC^`1pxlt$Z0mueJ=JXX`#1fl|H@$rTo%&Y7*q2n8C2(*LJPF@>O<~L5WY-S z5>(O4?+v>L)e<($o1H2PdCx}Z)lGS zm$6m%TAE5Ws%cAkxl>Vbkp@ssYj+%QF~P=COr;eRwn%8UZWT;9kcG7HP)CAQrMfdKef2A{(zx=; zSM`sBz~RA5Not~Z7+NlC!mfLaa+0)c>vjVCnl{qYDdO|%e>M9eDy2JaOYaLLv!W}l zQM?RQheRyYUyJyEFPPy$6nd)L%uV%S_Z$a3+)d;bZ2m;G1A=LPwSlTSx6raWT^R)n zk%f~p5u(p0K>hLq{g}-mJ_Ie4&8Clo<-kpR+h)%$#?ZkGQBU~?G+YSC!a)D!N1SO^iQlM)v=O|Z3}h;$vFVOiUo`*J{n z#?(n_%}Ph9HA(vN<&S5)wfLHa;3Dtae_@pga>g1VkNr-4uiI?)CK@3zwcIt-&ZEN( zbMw+k*?W>MpYB{}nMK0mz7TbYwkGXtVL2LAHKo9gQ;Jm6wyOjE-$-|NuX^Kc_nrM} z*-bUB@fo$rOpW%$4j&`N5(n*6ZR3bf4(K z^Jllp@8IL-pQ}`^zH~>JIQ)~LVQvG90{EDKO}Ew4$s|ZcGi)r|@!uny|M2~?cdR&v zL(5&W?(&Uq)A9(dpju_Fdz+Su)z|&~?FOc?mb6ovOt6MX#7E!%K*=aV1T zblff+g6W})-z}M`{4ccts=HwFVD!;nSf|*O7LbgR)P?AAvt{dSzmOF0}8N`AM&s211@?NTt;ONxl&AHh=x{HuI14W2c5X*uudcW{k7k3j z&`vv|i0@*4G(AMvf82 zO|XHdM=~Qv6q}%h{Cx9;iR_ktshL3b+GIYEz+iSCjlI`2`{+SfYW~SJ&7Nr%CQzTZ z-`Csp^i^%F?g$^LR`9)zFU`~7ARYk`-$fI@`Olw&(IuvC@Y1|sAdgGO%=UcZHIX~a zJw_ap+%~NG=f+`~1O23N)WmHQ@&hnj(dHl`5|!~B9At9WmVHpU}rz97zbvICZlR;qCik1x%4 z*(9t+`3wq@F_bplWg=wvVe1t{dk4UFX(5qQJzE4fI5^m^<1Y<>X>k3xp#x&se3DaB z@w@|@bGYaQvgBLV4Vix@x4rtXfQc*dO*TY!o`i^~HqTBL15VxFD-1<6ORS79pviB9 zef@zq#X!7Y-z39)w3G(6+u-ZUgsZ{=BEl5@c}dzKMf52KqPx|V6N+EQuh+Q{=P_y- zv{Y`WB1Oh|(OCBllN4S4(7dNeHR_Z!wm%G-?F)#EPYhytUPxnk-sk5eZ90~rX zX*9I8rT=d4)|caXU_V`PDZR|lZktZW%AEv^#`&k;-MOx}B4|c`}1lD}| z_i<-e*i)ICR=;PN+2=s{-)z z#KaJ-Gx-RGstz#w{&naSu*akHQhixHG!uZ`SXAIoyYDo;;b4DQMVF7Hu4tTUcSiuW z)V9}ha1?$Qd`dz~4E+~deEkW@=i0AHKHU8LE;g=akFgDOg zk9V=&_SKs=6eqd->?UJ=Cm(*tm06D25RpjigtikLr7oCR+geNRO>7kU`syF%-IOgV zxRCs5OW%)Yaih5;f1+=STwS73XOXQelaE?`AfR6LaG}2jWnWw^ba-3GhWu%rNh<-I zwY65m+FAY+!s$HLBYEFWq>BcC#&%(iW&zRJZJr|IJ}GG7_LE4*or&O2pNhUJ_sBYt zpKeqhEnqSlw5nsk36393TD^XW>$}!?%dHBjG`t-}mhVR+d9-=c#r2nyNu+V(UF8wU zNyx@|>S7gPr*-8`n_}NZIMmG(P65)9bay&rDx$Dy)M}G9t&@`egK_nBN)#YpP|%eY zGw5y1*9Phb1{AEUt)YWgM~j`gA0JAM{?sKTydFY3iBSStk<9w3Jlzg6d*4?Ip55-{ z{sNGpag{9&r2e^2>tt*L@xKq{-b63P--0Tz0fM=6UK@yYKD2s7|S=$t@-?KV@N`WMQTy9y}S= znw0eBDu&+mLY;j_N1T{0o=xzmlme~C*``(R)g2u=!|@0~$y=A-=Xoxho{l{#9o~+h zIy_b&&3L2~b2t!_(>o?Ot=V?(d*`_LU@?#AiakcZG&@R|TCrNSyOf5(Z~*^6k+4f~ zNqleVbOAmAL1<9Wi#2L?L-M{c?a}_vN!gXV@j~9GFEp}*f=5PF(w=jMErZjZH07-@ zu(5tfNhmPtv6-6uLO6Mru~g3=TU+IN%dBpj0^l0wT<^){VtU?ua41???lk{Yya{A2 zp}9Y(!RYT{$o%8`w?RNFnB&mQ*bTpThZ}z;yNu@U+H#xUDJ{Mx_G+SX3w&U=lL~AT zq_vPWsGyKCo;iCiX>OuQ6F3m5U%p`y*L=gdb#zY{hJJzjGiiu5`D{p($8&d?86{SM zURy`!vxFlBAdzzmxKvyjIsKE?$Pp_uG%Cen0so>H5e)+v_O?ealO{+%b>P4Pe7!0> ztv}moZQ_bHlNd!Zk!J1hL@8c1KH(Z#nN}t5v2u1_f9bq~=Ao1tIam^Ar+(&O-_@Bn z6QE#7cJs~X`g@5-;I|_(NE`0{WhP0(6Rv%J=}~jw!pw=M)IIp`m9fIo4Hz{$U{nfK z{kka!Cck+3tuiSw>A~7CAcjNe@~%CDEvHrQ<(|^H7@R$}^S*^1+ftLg&1YFp&e1z6sr_eJza%CT+G2sT6zqJJV@m7hA-x7~{Qv#>w z&dcwOok^F`#^f z(tpLL0O6QXQmu#)hPA>omQ8J+DW?g=3j^UGEit&aJH`3fm9 z(ru;njf$>3zp!I~0tlKvDtVMZV*>6QI1!Updkqlt?WzZ|*{4J)M)JGS8*k)Yz0VLxMZQOP zXuJ7>&K-=FX&#$f>tuLvC?w?U4Nyf3CF%#MP7-XF9#ih+p6atCU#@0gc~U1r413|w zyqkL!QnEp$RYTZlVp#fH^CJOJ*T+abq#LDLmREpSk?Pay0&uzQXow{--9$#PYqXoD zw&t;YolkB} ze}rX}bmx((tIm2A$;aM$jKPNdg%n|e>FU2J|0^dhEdsbgbvF$;e2f@=96@_+fQZ&g z752&$l$Ecr^E5FSahNs>c?b$Kz*IoSh6kU|d78Cyt)(*vS=|a{&(0Ha+et1~LtwQcsit6&70084u>r~Z}dIwuoG6Xfms0B3D%G4r<$e#?(_6-6+c_OuoZ$IxIPLB@p~F9_F{ zvAumcXpG*3LyRBls}yqSXeuqeWc~pg0J59U%xb~-#y1lbo1sqDtF3^9C`dr0LTnv( zxzE-8L=0ACvZVICV0^gurS@wb&ey|qD8ggwAY41UUNT$~4y{yQoapx^-++U2b0Eb1 z{F%Wvyw$kAyiXEhqQezDq4vD@`5EP-^qFthy z1aTFpZP#ri)6yQ6hOraBe8>6ub+?B^JDSRy!q&kT){bjR#dq$Xa&vsu_A!grY+y4} z3>Iq|$W&&iS>=ay?N^$#45kwk6YE2jeZccHza*za0Fb0!#l=OO`g;F9oXu;0%1sqF zH3DyCdnCUerhdoiIJMJA--<#_)u8b*Y{RWuct47POo$eRLD{rzm>?LMW~&%7?Bt( z1^Wucw)a0iIY-kqgcuN&vxSEuy=u4UyZXy1v)$5CEtZ^=eSy{t0zBXeG^4H&{m|PY z?>jLgI>`n@%SKWxiQ9=V2SbH1@@nWOthfAz(rTpG*qVh)aw+7#l!VGsgwYO?Mq{&s zd}n!ZMNDQZ<*JeK$?Dh8S=#KNt0bROb0Q-wDazWb4DRUY0EJLmjmsGeczF!NXIkYi zi=;EH(-%@D&D48k%_Hk#$fl;T$53eQ;*%Y>vBWQ85z5r!m<1q=fkD>N@|Vilr5BW( zt7*n>Ikd0cc|r)8({L&bpBt?bqMabQVJ9ApzQMO`wvk(mY)8ZOdc~1D^I^=6FTnq_ zt6L=g%hB!aaCCu!I68E1}d+O`%iL9%awQ?}0(Dq}-G8%T?ZzJS!F8ehW+Ro09QlVl4+5`oagx~OH zE_|<3cbuv30n=8SyP``aQ7jz%+g#MjH;&avI*M0+WsJ68J3MQ6>NjQlcNe`4yskS+ zp}Dymy2`1?L|nE}4ni=YX)PfWSW8&Z3{HB+a?EEJT}dR2SNb$=71=8vh?}o@Px$g$ zJ9dG-8?OZ)xzKxSf#3`k1!~Lk*CZt6khJLLpGK7=p2Hhu%53W`gGiFO-7C4nWzBg8 z{nbyu5m`N+E-Kr!IxrHrM9Sbha=@@vt9;kuPL1g2krB%-9KQy!K@K9N zeXB6Y4z;oEDwHECh&(OqH-Rl4B35$kb4^Z&Ll0Acgz=@&8m{~34l$##LY;oKJI}Lu zvD$xS>FRe%m|PoWbezyrBi4?!qtL;3tX~LhnAd~h=ymn=@nn6Y!!?B=gCl|P27p%t(c9ou+2Q5(#<0|nqR$a zc+syZR;2xPeeUU@cVxzZ<624x_#u zmjQX5q|#jP09x02>N1-v;Ig0G49QS&B|hU0SDof~XktWS;zu|zL0f(gWF>-Fs_&x3A^TSE4vrzOF?P*_7kycHpuKHa2DJfqby|Gk>P$kj*`D<_FJ7Ko6CG&{20n&k&J9~RG zpAPkxfnX^~d=Q=fYN;KQkp61J0Ais*>}RTDhMYp1BwFQ0s%{yy-rSh@^*-|l)J(dN z;Gx%K^iW2IKC%RnoM@Ej5L zJ2ePJKC02{91F{F^X1nKpd7euA#!^s=8^;_s{b)5Q)`33uMQ~A&nqYu`bVx3aOLjl zdG+!b71)cD#?uK3rbTqM&sSdHitC2BN2D`qp=s7Z6U-DiMBws`vb^jn9kMHb#+P3s zlJO-B=sG;+-FYJh6Fho-2j?6N(H?G18lo|`{b{Fwz+P?|79=b9Yx@W%FI6EgrgkQF zj_|O6mUWWqs)OwkRS&(K*D~9B694|Ya<%p4{&d~69nNQ59$~*kOI!G&4OTa|Dh3{$ zv(~VaR?I*~rUK45!|-0Hxqo;jlcoIa_VQp5!S2!WR}H9zvc!am@WNkJ#E0 z;2!mh^c{F1|2KWQBSf=r=AsPoU?p(6GoC}~lWAtv^;oUCXg0+uF>JP-3vCk>Wp7KL z6al8cMV?-s-1fc}H&lv}zG___RM@6l>M}2JxJQo`<8A&Vx2a7l%i>$IV==O=n;nz+ z#P(|wzfnBtYkB!3{MSt-Da9h+7Abo_Q6Arn4C3w{=^GUd`le01SZWBA-qANzt`w`$ zKOu<<^z19l&WoV*0&IskmIwfTG~;e5j&cZZ3C{tq=R>+?vc&vjx^AXHzcnGiZ{-M! zFuc~HBa6iKhNgtAMK0TZVW4>uaUYtJ1c*yq9^m<8{f~LuWVA6kVl~fF zsJVuF_ym-))~z25B$5UqdU*2klzN7|M6d%q|N7CdRouPNlEo-lMMe&`z##!=om_I5e=Y***_Lo+k!kMtNMGw z&b{6s(SuGv22`&@G~63Ji()AD0@!DBW6Dln}7{zqx;Zz z8Kqe-z(ga3xP9#XTk)4o!mWy)AIxv6H)q^8krUTdMk4dR2+pC}++aF#$b%3_% z!@5W<`fBV5Sje>f3TKU^Q!2=1tZrCNNyvpm1TwAp_{bqz^aT|v-O;Y7k#VC#LLBs+ zO48#8$05ecmyo;{ z3z*n-GCLH4o4cBNFbSHkUuAh`F;nj9_PI27cXpgzgaAix@4lU77FULv3v)|Uqmfb~4;tK1MLlgC8qy`%igDdU)PjY-wp9#XsSIkzc=YO0)l}r(a|`GKb*tpzVQP z@z3H};(ud+^9#I9CoF6bL!%njlFn+%NxWip2`j2YAIYqX4GUYGx3RUR-X^vM{z9By zZ`KB&DnF|vX_%;33L)q-CX5gx0ZRzddLF6u({j^kVck;qH7V-N^#Y3~d|X{UD-Zs^ zi|~??iNMk+h>7168zgU4Hd?b}HwQ*~LO!?@=to7o!PNfT4`r2f--qxwQvmn$|L42j c_e^5`!dmKx>C2(i*bCsJEUzI~C1W1)e@jLkE)=!Vp^{6DlcdLo*X46GMo*eZR?v7cYXjr9KI(xXtgkV7sYov>e{k z(XDaE#Jr%!_*6_5UH#5IXj(lBwR;bx(09q-sptoC^we~~>N&-)ZF{7G-kkBhx7)S5 zhpZjbUM!SNG+NGWUxL`(4%9yU%oqTPar$GgkzJ3V{S&wxzzXg^Eq0$Cx=CyBnRz=S zWEz*MX*oUQSa$34_$UGpL8lJ<|LzN3-x>oIeA$zc4Gv%Pnpwi{>-g3-EtT)8B-S^g z(;rrdn|yy$5h&r$gm*))iI(B1{JLFX1+T z_$mC3Q77ayJQ<#CW2L=ufWh*q8EmM&kk%)^{NE!a-*ihW%BBew>yX{LDiSrHVRI^0 zaWZ@%y|$qWRA_&);u-;)eT5Qx&R%i-XJgq(p|N7)9TMt5#9;V`FXgI*e#zz;*nbk0 z9c!lP9zwOj5kW`6g4-XKZs0e_RT6K0oJYr2r!N1;OS0kosCnEdR$s~Up%(Glaq%!= zdg(K4zh8Ol(dWyp+#ac*Wo+Fw@?wfJfE)1E$?U&vO5Wt;(Fj+&iHzbVOH+?`;jsXi z-RbYeTAg*tXDy>6zE3O&5}N%iw^(YCsDAx{ZvGYd#V++Qp+1V+H5!q4D2iI3a!5$1@YO{NgG@(stbTp+O%HU)!Q~C@|Lm1*zC%pI`<_8- ze4rYNf;rIf6&fh>Zo>OtIXz@`I&Jpm7$x-w!5jde%gN-w4OU85L%Xg3AdAFM;o`GW zQmGCjp~Y<8T6dYoC`8hY4HWm^#%geLBZ#6?)5QnLh{;w@h7v3h)w2QE?6khBe;eA4 z;{f}SIp(Yx52kj|i@`Kg>Dj>lEvTPvO^Lmg1z$$9TBv;Wd!W)#F~RE%6YRyD|E!}( z2s-Af*j4dvvm0UxC(0DIL8aO3TR6&_M>Yu9wu8L0v&4gk6g;3liPcZ`6^WfFt)02X z8t=GvX(WXNy;z5|dU_}qV!vR5{I?-4<$9rC1bU8%OpS&*bY_(hJ^;9P`H@3a-89cY z{Qq_W>CDs8o8l(~+1KU$`>wbcii^OW`l`%_HL)YrnUlJ!)a1Vf`e6WhKvQzwujYtC ziJb6g{~&9oiYoPG(N`f+=>g94hu9_2vwfdpuE6eh=*wi%i50_C;viW@(v7^NYj^-W z2c#f$(CE(}%^~w|n1M2X0xNPdn>iBXspDUm_AQQj!bA2cqC zWK24J?qfAp`u8l12g%7C>+=6CQ>9)d6lW%He*K}PNIZNzRhf8%QHukBpJx(`#JSV+ zbb#U3CXPrZbw3Z}u+!z}&HID_tQBQo5NamZI4`si2%h`DZE3F=r8x_S5leR~aEXU1 zlP4u+D{Hc&8T{umCn9j-$*zgvm?74N5t5}D$Ck+W=D(Y|;z};K@oY91iA5yM8tw4` zB9hbL$?lxTM%r9S>RN0;gC$9)aq*d>*b?LUTcI-S!i$xT$vlo{DNDK@eKNyi!nBSq zM@!6z7ybc;fIA58zB@A^fKja0Z$JNz9u)94wYmgEp)QZWfB zlBNXQ|AjLq6q6jt1Foev9%_uC5-O+Wn!UsD%YQ@J0pi{b9!Ir4TS>HZn1bLZ zB&7S>4flD}k{4hS+~k_{b|ok#%VKVc?xIY?T9?sqV>5bs(jfvDw#}bSbCJ%Ws>gzF zBksP*T47ui`y3T3`btcMqRV;nhu&-?w1!Y&DH0-`za)o@&~1JMn>(5={SKkI?q^WG zyUY2i?)0(A1!0>*jSUa(81A-jI;;DrpIp0gABoVQoNx@wx5X4s zafxA3AHGZ;ne6|&>-~&%tr5UbqEO(bt|WmU(nR%s17yuRoH%ZH1!;p{eydkWSh~F=0Mnh&^iVCzS>@+byWaeae%yPzdNk3p-wjiUr zNIxjOO&m*zQ-r4lNuto?PR`uoAx!F2#7{#N!`e(nlC?e$>Y+Hjc|B*YsGGH+d#9I~ zKv39Z9aarKXZE(N_|r@OJe>HOUq`}%6rc*wnBv=gpUyD5o#Y9Io^?vRm2H>F3vd05 zLEvacX?c^(Y98dtrg#Tnjs+WI_#!8GFCK_0Y`edN6XOMst`E#^9lz)I0;%_wk{KO! zM^*UPO6I+_XJLdRhP6UnI8hi51V2a3R#dnOPMREDLK9tVo~DRTHYP^nV<*)a_I8Rwn( zhpA6n4^;p)O8yjdU2_?Y3QMAira(O!)Vh9H1b7U6aaTS1R8O_ypN4q?vH?shaXtNY z*mN?JG6bRrTB;e2nwn{3&@ zfqr56>n*$A)6!%1?`XPH+mfB@j7KnoRq#Y`MR7&PZ;FH5LNSwbI0R>)njk&jYmPRX z1`Sv4Z`m?;0!b%V@8|<#Bt5fX`}!@17l)z)CDe(50BVdf5_&C{w_)Iw<)2M5p4bqYm4*73hMZZ~iDBPd<{2@7BJAo7isM@kds}4AJD~7_Qdnd zil-n>A2^C`fz=bknNOFz)StKy9u9X-rL$-Dl!}jXVdes9lv-=!Bmqj5KQ=0=zdapb z$-6;SviT5m;W=V*IN(XsFvO60lV)8FIR;+y5z$*iCPpwgC~H z+a_z|^n7#DrfKT<#_a{Q)k52|xu{8qe0pH#y%^?N4*P3XIGk+jzKtUb2Vk4YXW)Gv z%)n=F`mukg)_pOcNvoseqD7^`pm&}}0FsDIBT`=N{BTy}Pz04l8>nwxxsPbCqejLG zj6_`_|NP|Umq*F$(me`%`D`B!1vgL?;rJ0#EhbAP48g-*!*kVU(A&_RBO*^J&?947 zzAG=g5MUzvp;P{T%sNb|(o73fQTjGAy3X$+&c;(4Uqq6JgwK4POhkG9#f(Y&>y^La zG*I8PJI_D&9cnPX>(SB$d7YZ+OW-vx2AW5OWVS4pzsX3{ZTAxX ztI)E` z>G{twcMB5>q1#BZB#?M;? z>+IhR&l5_<0KBgUip-qrl1JMl){`%`f@z@C*GhM;dsE73cM~p4x}`~&D}n>vGnoxF zG}m*QbeAjKCz;MPD7`3WU@PF@(T&L2j{Cdvnd1XoMkwXOxHdW8vh#dDNi6O6k#m5m zyFO}TNr($S{ljHy>-6a#a*49OzrW^+dPg@F(%}(tj>2Xoa@*HZ{+F2g_k?Yyh9Zw? z!jkT;@u`sHS$o#Xcc+IJi07;;%rDQx+EKI~0+!|vO>akBfJfEX=odT#7Wi<$nx~M^ z6A*X;sX$ER&xsKQ8MGi1^GpDcspXuZ2_HeMB8Vdl9gue7AIvz_e;7doH9mb6Hh4LSI*hq>xK^Sv|j6{&AQkrcF4GnqK**|$H`XzSeqrKGhRX~ z8pk*iHac>lw(Po4nqjnC7r;It^1#3-5gMG{l2CV)gov8n4=8>WPL~G}p%5*4Vls3A zvHDP+J?;F)l670g2t9quj;K$eGOG|F;W?oq?o?Fdj`ss78nkt4+ku#spjV+d1;yj* zu2g!ZqboigMr|K1t7q+Nqj~I0EvJ#M@k2uf)(Q~4O5E-~FWfMlaJcvGCNUu_r)p;KpHiDVSq(unU6?_Rv5KJ<54m-<$6qXCKv+^TY@ zXugqkN?0Hbh+~CF;9c9adY2A-|J<#{z+kQ*oj=$Wn3GVvV7T--<2CJ%Cy+SU@MFPw{G%|pxN^}>ZWX`!9&C>yI3K1gv zdd*!Q7U;8?=(XKss%jIgl(l_K!qOe2lGLHLUM;Ka{|{f!wR+LG6gw{Fn@ z*hlzbCM>8sA~--xJilv|1u||S-Nc=Gye)dKifp%(Ngzp&RXd^M*0yF-&9EsGi zv7NQWx}N!GUJhE+i5!16^KiOOpS~cMY1eriHuke2Yp$*3=AAEv2xHX;7M+(_2RP~W zEuR%)YT~>igrnqsM5C5dn(jVgXSd1a$iTpXKMG{QuPevdHJ-<#G8dB5eRFAXaCAn_ zc~=y)9V*jw7m3^^ukG?y^Y$!(;N|M%g?!Cr2(5n{Xuk{b`sh$}(2F?_db-&1^YHFg zuHy<`X3w>M+?_L{`JPH_rlY`ux~9b2YzYLds~>tgq)hXs>XgrX5nd!o5SgmOQssN| zVq|2N^&47i`oBge$1kgN*?+%NW?5m6L}S;SxM@l~`6Tt+q=Y?+_+qxRxUbcKGeV3V zS$ePZo8|j{R(7Im`ukCEpnbY^l~XyBVD$t0ACMTeo?xSmdkZ$zi*j4}H=b562|u_r z3QeBHjJ9nD+h9@8>k-J&69B!gEP!+)nlJ_!$uE?Dd?0>gBWT|qQqNRm5wAE|e zdk^rkde7chfe@T{FxqSsA8`ii)b8C1Y9j~1RC-iKPGy*)e776b?iW{puWi<3bS`N- z#;$eZ?!`K=DaWiQY&B>tFL*gzZ954w`*ML2v4gM8PgGNn<9{VWeDHhC$%G3K2+w>? z?TYPt;7p%7MjF&xf}D-nP4H=u2Mx9Uf4*+MP zm!cN&AfE>Idj{29^eWkzAJnQ|UNAVSZ~OY^uyea##o+8!_kgQ(vDLTm?1lp9Ws}cZ z|KFUu!}lctH6T^S56-O2Pau;5wy8!ck-Xz2O6;QWqRQ1l3{9f7Z82lFTH?V!VwfEP zaJH~YnEp(eQ*YB^W?1da@+v12BJZf-xp^R3xhzu`VUS`b*>x;jhZVp zx$j@svpd=>Zq43Hs!5|FAW=K|{S!=P&9G?rw4iHwt*g&8IDNM{-3$KH3Ia>_Q|*pb z&SmYTnB^JU6T=t-0gr9XMb7$*-SIt7z=wN16BR%*u{$lvaC=g<-#A8SatMBi3El^IVdED@z&6tsT!F-gncc1FC}*Y8>7occwXE;X;eb--*~hnGdIy2nf0JlkQF@BYJQTA zBwt{?exszh7bP~4MR}KQ8BtCZy2XAmRfgO9_)o%qbGxGNgKH=W+kVBi#Cw+gXeXj8 z!_`TBJ}z+|v~xtIy` zdJgi=4Xf`K(U4H7&A)0G<^PzXmlo4L^|p8Vdn5+WFf$htis32Z z-Z`n6^|1?B4Q;8MxaOD+pyGE&ZUDrD59!XfQ4fon= zj1b*wd>A>NSSlWYtUUZM&?RmL@yIT?T&lE|2AniJ7TD~(eJ%8Rc6T}gYNoVJpDnCs zlLXuNEU3pX(+3x!w!rq;J0FNP_Td?#KGEwJ>6GG#>f0NPy+(OMTl=|Cj18}7N`7h= zt0N7GcaP3(vlG=TH-g?7Aag|DdnLEwUwwzbrc$jSWAQM*8t%x)Wy6N(Xh}b_iM&0; zKZqe4whqxv?|zdZ>na<$>oWWHPh5D6J`bHp~vXV4_7!tE9dZ#^^oA0kc*h@8n}WltZkC65xiR1@L;gI;JGu;b-Wqk^|}Q_$dlwf zp=Gn@(Br${;Hcmj`y^-pGKu-j=|(>3l{8|DvgXElb5E9_c{&?-nK`cJUyXDV(>doP>ZP74x zWM-n#h<;!7v3N+eEe%s}<{!7ysuIfVns+3b`-g)xxkeRiLFVblR>|AOhx~0b+Uc1HL8#93m%zq z?gz1YH~?zXu83iEq#lcc@5p8d2F7qlX&6YYRQ%R4Ji=qv5uQsPi>7}VM z1`S>Yc(*;r>#IJntJ8Ao??&s@eG-~7eZyawK8wyBolAlJ%7xutm|vh)%z931w;Tu| z=8Mj`?3_r30sFFC)B)XWT36!TQ5`ho>5VEm$by53qm&|MM-y$;^E7)xnCm1;^#+{l z;t^_fLR~KsLpv;mcl7y0@NbDkB$cH@;_=w$b~`1Hm1xVB0m0U>oTDal`(S7t;{K|0 z_t-?vT9w|wDt}sYT3Q;&@8M)|!sv2NZvf$2$hW_)e9~+F>y{hr^D{wPADQZ=9N57; zB#t2UVq4aDM24MXgdaDzO3iGqx^ACK?>k%$^K_l0D@RMf%Fp9$@57Li+P$Oa(>d6@Y4pks#$_s%SK2Z<4rvJ`<$yVX-=p+rxC zMkTHUxuTJl;;9?u-erTZ3g|i9s)sbI_hX9ex{T)N>daN7g9n&s@Z%S>8 zE;6Ci6IHF&<@8tazV}#Ld7QFGqE8aS@mJxu=IhZxG|elV^(VCo0$WK-pQVr%r<3yt zSTBc~K7TlirxY8v=OpCn>uZk^Ue!k<>H~1{WMZ1J7tgYFCT3O5PWqc#uHmC7Ob2HN zhGkpwn0WO@N*Af}%Dtl_u}S>{ikxuZtQPZLKl)J|SHgj)j-HB};7gB)5V?;j-HV5E z@~z6N@lDhVrX`jHM4IiH2yv7~AweCW&bzwgly%)P22UyCm5HZn3fAJ=LDvl0Id7fO zOTQp79EA>6Zb4JQ2cxyQI{TEF`cB^45C)`dRNRRITifGf34W`=ff%4e?roy_dNP4! z6$g-QdINUw$TDk|7!}04XXFoZ^17JZslJqXSoPym#{&)NHO$^#ViAD84R&*^`R09fy#bQN>3Ka{0#?CphABM9p|!YsrPl#FQVp5MHZo)nS&$!hJa1$G#Q zhB)e<;(yVLzFI_dYsa*zMhCB#m`MU(aMA02yT2eG4D$$v>mX3*ZxO?oLY$K-lQ{U#t)kG?0$Zf+~=WN27VaHiYI~PBSK)$mN9zSfC*|MXU~#rD?hVh7SJpCFY~5H|`q= zsxS;A00~BlkkCDyCpT6DH4L$SvE%h)i_!dl+Ra%IESQPiwa}r)AI`sELtl9_Z>2Hy=9jKhp0=s!;=dN5wSi zf2x4qU4;M5hM%Orl^rEXp^AP=m2eKLryw2X^Or}8pwFJe%yf530&$4}M~AqYAz-hP zi{&=rNzZH6M$htms+b3Q$C-_fwVMqx2JaqS)Ta|8>5XUUftpBskL3*=q=6QUMmK8u zuN$|b^O0DzMx3i&f89b(SY4HM7WELcoQCorAVGU-l~_MTuDRE*u1r6U5=4xSoDoTg zwd(L@Iv40x=`NPK;Eck(Z63IS<6D`;Obccn1Z|X1 z!#(AbpOv~aDkDRm5?5$}E*b`u(Zh-xY=;@^8kS%w`BYg_Py>-%F~u%9*)qaKxNcE+ zLpKZb%UfRYMGn^=G%aS6N=ru+$8qs+hTu^A2~R0Uxy3XxbV`hP(QD+i9GlR2OB{Jg zX@=PyqLgwsO&X&P3EIIW?^&tY^9)?DqpbcdCP`{m7uze+<)23`YolE1aY8T5B;`N0V5gX`h$Mbqo)u=u_5Jx zC#kHzGy&^0NF@*A2JSLZsjznKwMxmV1w!#rwZ9DX5s42o|9qk=wm{Ux3NhiCptTh_ zjOJTnqVbedqZyV|Shp80QiU%_&5%S7gAukZ?mVNPU?*%qhjgl@XY<-BF=PkMUSw34 z6`#5*S2i7bmO@n0lWfOv9=mra^nCT$hw=?~=`PoGcEJnl?z8rM41utAT*urn@iUaAV#BCkk5#&KHG|Io@*UI}c8gnzwR~%5f#>%F>GZ@Zf*GQ;7TBQ&KsAW4$*s~#^vzPI}l z<07EF-6th7?OI9)Oe}v9%P%#vf)uD$T3y%Pimsc=_Q_v2}F2=%8DPlF)m; zW3P7G8nTem=X!dnb)-#bCq(XoEAZU?vP~(xF+3VrU|!J~QW zL}e3JyELa#{N=|V^D+s&z9S}3I~g8MKlBtM>ycO-IC#dKMxc}+qE})Pj$AD`lmCEs zY4<(y9nl(*pL(TyWBxO8vNwzd!IriQUiqT!?ase#NebE0g@3E-)SnH$Jo0~UZ@80> zG<_6Y(fA|3;~M>>N>UHDVI&1Cs*B`hgNs6DYKakZoLfEjT9+@E&Q*Gmz9FUWX*{|} zRVMX3H^>olwOSOgroB2ye3o*sBMxqfhF}?|LeRy!EOC$9>~mYqgG3}<^t0XH&VY-I zJrKNeXwU!(qvr;&t{goCB`UwHvI{#kDXvNd(lKM7w?tx5d%3%dI3+}=GBm-}`54Cv z?Q%0(yQ~<5aX;hSh?K-$&}SgBh%) zs)4km>EW3q{@Ak=`vnN6&7Jv%H6WosIP^yN)vyP?D3g6YZ>-x$_nQPt9EAAHf8Uq* zvtQtv<8Nl}Rk`^YJ;>^9(l>#j7@y!U#$}x!q1~S7-#+o0@&{oaq|bZj8+K?|;!(oY z4XIV-d!J_rz$;K{k;Llp>!7)AFFc=L*aD@{4-BB$mARvn(qc_p8NX3!7wV_tbVgGo z4ZtI5;!5R++oo_Aj^psjn~A2x-08Ca4Mg2A!Y||dk{Ds=C%3QZ7SYN&mtXsk6e9%% zjYTVQL5%KIgKw_duEN)T9#Hd?0cUJK= z`*NXHSl2sPoX7=9Bf0dvEMY&M!TO~p(o@C;DEuY@Z>Xh)tx)Ovr3Kk2Vw?G1iBA1u zEq34{1b~H6Z#YMxhxa5vu;Ml-A0~eQlv4{C`v-HY?(cMq3kVB3qt=NVaq`m;&Oj=O zWev$(N7w;W$4@8D?MSn8-b%U-z1iR2kx}Ow%B*0fe(tjxW$zd1bG%7eOXNF7RN(7b zjA+aHTvM9Bwk_1Qc;)Sn)>~ta< zlhcMgI;{kA@d}CTXLaXrmPW%gGn%nY4OjXha1dtawViHUBOj9&Ocr?Qi6V|7Ol{R!9%N;6lXm@-Rto6O*3G_>sg3D%uzu>K|m*N>gGs$frr)iT3D#icNJ?O zs2{9|nKFT^%aX;P@I`peX8>ERKTUnMp2H$Bwxa`Xvp*Db@D1qzN1W_|O-fumUWH0r z)vD7qq#^CTV|HXb{O{O*WdBlAf|EaVTof3R`)Jx{WnHVO2*G0T~0W#*%XEF>wpbpexR4JmB~ z9^hs%eIit#xT>`2OyWLV*#4<1jk@OFX4oaotT%1ac`^D|I|d-4Big{xe|kN1k!)){ z&Xyt(J}9nY2M!7)QBts38lPhCTK%KE;Cch{?s}n<03O{4TQc(qYca!Q^UHBm+YiM2 z^l7K$J&F=38fWNVJ#HbQ&Y!~6I{&Wye7$S>joT4?|B9^Pt)e~ri#LMzdJ?}$G$-tP zpm>0;u1%J{X#*2Q16Dt3u`ZZc?L%eazL~m>E@d(=WIWNb#axk=l%1mmeDk>_h^~rk z##ifkAD`X}@jr{zD~-WayUMc>IZW7Nu~?3V7jK+(%gH@_WO^`(L*rYv8ntJReHb%p zT&jP?=46|9@+i6utNNLJ<**dzPID@3W|ISeuO4aQ+agjya9zDOO-8c4^{IEC=ZF}K zxW!R{&8w4Q_ESi`WkwP4-C;QXx8Nw!P+&sjQrgQrJ1q!lKmQ(Xmy}q&+UI#9|&xDbFpj5$3Nv=pL{CWo^1!9N?U~xz&jwe1p8XR(lqgOhszCErcUZYcPh>fF9AWA=#!!ysooa4b=tWQ4}jx?hLEV zfCNk91MgN0cIJiExKZ(4hZUM5laK0pWakf`7m275vu$&FD$8*K zW?_(*8us#=IGG6XvC-Y*@!k(~^SVdfLsUmybHX5TquV35cC0`oVyOwE|C znc(8!?-)0RGXSfOYz)iGHy`9by#Gv5BJOSKi9f^OgGueh7N-d!k}LPIQw;id+$v#d zf}S+unY*BPT(HTJe(=K@%e5Dc6y{-)<2&0CVu1$AK{&p{LN(tiL{eo0=hv; zpAI~xe5z5-t&!;N$OQ&%5!6Gh3N+m{1?h|BCQ2q0iv(mWB1`^}vs%-NdQL%9nistQ zD8}aGr;?vIw{m~O1q{!YnQW^3VR8duk{m(?%Qv%jCd?$k+BBDO8q&dY9OmNLEcBv8 zs5z4AEapslWA;{}3^umUT1AW}B@9iLpm=Z}7&SQ;Y_nnS^U->r zNkW3u>X>&m_ zRCs)SqxY}Mo7Y;+a>I3gvMpea11@hPAIiqr7~3CLaw*rne?I=ACS&qK?{87eF4KJ- zIC;Q3{>?*a{K=sWn5KD&ZT+ZD2MLPa$Y$)abKiKT|Mk^Az`$m=JUGj_)ff@C-yF(i zxN9{L{O{yCNL}R3}E0%f|toti* z)q|uqn<33^&m)VM3Z@2kIw?DyGpf16Kt(2?hut!lgo$zggWh6)cIY2vBFBCeOZ^RfjXLH_MCz#45B-dN~GrA@vzu3^ih2Ef=QV=dgZO z^1BB0mAavb$>Je!fBorjyAY<_=DT;YFfA;_4YDKS2%skulOa!VpwOt%TTr02ufSYG zL=fddt2ejxoKbX(0vCBp8WZzne_PjHnbxFA|LKz&Mm}) z4z0?5EBM~#?D}t@pkFj4R`k=2IcU|j&Es6fM{x9ip~Fb_t1=5Uj0O#TIrdko7^QTZ zlx(I-Yr882vuy>z=p8$}gN0Nxn0S(l$c@6Ru%!FRU;I%@w1x#eS&s{ODb-OKq3Wi4 z<>o?%T90Vtmc;ctV&JuE+BA=qFk&zLLJ($JMZU>s7!tTdp5*~X?N!~qp_9D-VyVk% zX?@HY>(mgBWa_{UXx1a%-0p5M)MG94q$7~9=5a&4ec8iIM-!0IAWL-PY zjkJUDJlPIuW}Ve$^8V=q>8DrVZteF^3}pU5y{faBBa)N?@?}&cunD)DlUKP=O83cr zN6A8QxV~$udY47HBB#&xyQ(pg9;p;_eizhc`JO-0gxPMvsiZv%azHz zz>}%4mxEyoteX!oqm2Uq=mm}}7kdJ`qh4GG9v57&1qe!8kMQi1Pl>f7ueZOb=kVUL z4dteel>2IO`QSBe6aOUVfEZvXc_LUl_=Ilqvdz1{PTrv>)4}MMS={OCo`p3Ca!J!A zlaI}~pX}S~CEH~;6C~FhgaZn+Yv*CAfy49-ZT^28Yt?VL0x`8|@%c9w>%mi(5=iO5 zXCU^c6=vf*;9wr)^Jcr^?luG{8j8$#cI;_#6q*76ppOz*qkP#Z(v}e2CLIyJHhuU= zn+Z#s*2m3(ozr@h=N_RoslSGkX}FsZ;~PA-LYMZrX=|*KSXc0GV@n8(uUCF6JkN3v zIzQa~`yotB394czEOjgr zDSW%mpGj`YqPMypot!K_d@#|Y!|O#_$MRfFQLk3wcGcq|u2<(n3U9}T2swx)8_K*1 z;no>-+pR&!r#B`u%Gr2$x^qDzhJmWuTGU|M((HwFDDf1^fyfMcEIeoo2J-~N41m>9 zR_2lVnJ*2XB0a+1ceb33f?Bk+zeW#@paf|2#sKQ~j4s4ok9m^6;~!N}E)}KKz?IGa z8zq#?lKrkV95v>CJW)M**=w~lRpZHme+o7aYcBJ49zQgCq1#O)XKU)p2}4haWY<+T z4Z4Ugr)JP|k{iHt{~h)+=~J;1*LBlgr87VG(bbNd|+Gj7%; z(b%um`q6eANWdxf#A!sv*G{u2G-h_Ee|F8To*?+yRKvSeVw&xv)C+%5t~?;2NCAEc z=22E$F?c1h>g-pMC9z?&3S7Zit-{OndR#7T{VP$tY<$UiB6>t7d+*F%!taqln0lib zfE*?pNJw7as(g6T`3v!d>rGjb0oTdDMt%K?oc`shN0~N4(UfS8L_+b&6C&S2p%D`S zC+acb22M(#ofar-4BHTrLoiPITPQ}t4N{=pK7ReQS$}{w_8tPnkHZ7Z=ZE3YcYu)~5 zx#2abir@#2lj=*#b^80a5r+6^3_J+JmtypMWL`e9iK2g+zCh^eGAH~J03ZNIAP>S) z_i7`t3rW%E_f}vZpF9HQs!t*K@sdH?+iJBbPe?8a*%pAqqSkFV4_5k|&w<8)MF^K`ga4b4h2H0r0CR_ZR)1y-Z>Sjr;QI3@M<(OU6pD;`c{? zy!xfbmJ!Kj1FDUard9x)i_0I2kRx>X;}~zhF`YFj9uPaGG4int8`j;evhaDD=m_=D z2l-`V>iifY_)U6X+Wb%Q8%YIj~1{;X$uI-7Fy1w3O{Z-C-eG0n|m}4po@*y|@lS@k7 z8Ex>>tM#WKkOkfw3{=M=qEK!UzH@Czda`z?vVxD!YbcT{Wuc3KY$dxFhKKgIP<;f4 z4;eTK&1<|zSB|;nHuGhka({cGiMVYZOOHASEuA*J^=i1)HuO971W^AtujZYLbL%S5 zyz|;O9C4y%_L~DSk#M8$2GA?jvt20EuR@7UTZjH;JX50&Exjtn{QhdO&OogvA=mm|=>DdK zl*!%dGzlb#>3B`d1w!BbQ4fNn)W0NC)>HV7$cJ1k2wv;x(wMUyBwG5jNYOt;T;M7_-Ww2TjK{Ces%kO(Mwmh*-eRy z$WeD!b%mL96|rO}$?N%2!Qr1@H->wMA6q~05HQD}1vAbnFYa`TQC<}MKSpn-oCnu%bc6#Ah8H4vH4Uwq9qPc`OGU< zIEsIU!*157Ujm&fU{bQP_-Fjf^Q$DVn`*p*0 z!i|Q+D6U$G>S}cHal+b%5@vGos^E4yc8Jyc=HEn)_xay!pm85VOR0TiGZQ8M#X}N^ z1|b?>#f`Fbu=Pe&yb~pW33t4}j{3KMmH;%u&+hn*K24BJ-ZuJYXlx08|Z^ss}nM(qD$i zsfaY!AB3-dOyQA1DT!~PsQiwu#dB1oZ~Y<00p9Ruy9|PdcMpmvGj=5?Yox0fQ@{;w zY?udh0wGl~KWOo(8I)8%eVDUxc5cUZfk9Bz1%y+YFN!a|R_qQ{6^1>ygz zCGNy^#W!;?C*b{nfy~_MfohqVMU=O(ug+|jPVAYG?g1b^`$ToE{YF;*>He_Nw9G?H z=)~5m4~67espvYugb3kkz5G-d?fLMRV01C=K#x8O;F z0Z#jAx}1f7Ktz-b4>pY$4`LPbovRl7sW%(5bcQCKHSvCMR{43vJfXY4$WHrJYCwfH zy78J7km3mIgi8@jAAnh9>|t!45v_ZHk~0yZ@KG9rKbbJ+G-c)xQzv;zW;ZgBA63za ziXK%NFK*nP&@wu*yj56%QUt-@FmGX06a$Erb0@3!1*?tq-v=VcSA4l-?-AgB8H5i( z|Jay93KJBBGlFea;J0mpO*D=29BUB8``FhDfqp&k7|0m#U#vDmqe%B%8SYd+}QDdfnVU*Y}}&}y!By!e91XZ z+rM-?i)lQXoBBWVAWC>srzhz{crewc#Z<7^FRlCv?_!dTq!Rhft*xulh(l8#1WsUp zYOaJ94Qd-u?4Oox=12B_TYeu#;s@1OYy)n&$}iMLDfk%$_16b``@rWmn{X4hJe~={ zM=e`_UIy(|-l1Xb#83K7RIbkil$3j0ddO8abseP8iFL`?2)<(0i?MgtOsNrH26#}| zI=p&Pt|foPAZ~t{N={u$BLe$s@G+wdrRMfFF4h)RNa?t^2NApUi%C7oNm;}?3vU%O zA+DjIp_WlgQl!<%lJor%IM#NtjVge3%B0nU`szM7^itSspHnx2=u9{g9K7$vj23KY zCCCn9ZCw@)Vmk9gyr)I$7ioudlPMby9w4+sPpA4lQ@|aAZpvalWRu{)I{L$%W3G^( z5C!U~VUG0JQeTFrXWqLAB*neU4@7l5%@6Fy*U`zOCc0yqkx0x^d`=Y7VK&B6?Fd_{ z9*}wv{KlWPovRaH6SQb8Wey!p6A%7^Rm>uRP88l7M}mbi=vYpRJWgJ zM{VI3iRpiX+KEz}kbL_Q{!)@#tM|;n2v-cjq{Hj7hH__*?| zmfAL|ooFs0(aGoz6(_k=_LW>3<*CM^e<|iMSv^Q*CLz^@IAB6?&u>qOy(|M@S}J3_&-<_I z8C_^zI&kPRaL}^)Dsi>VGxv6Adh0T4_KJ9KEJ zrh`#Yv?!h8Mr;#^_oe|XD`6jgeM)5{SU7B=HrgfhC4O1OK#8mn@7!tx>Zct3IafG^ zgpX|QEc|Vu4q6H~n=!YgwClZGf2eeak=sFY&A{^t+waDU3rn0s%-c;;KX53NU=3Ii#7 z{)a{YS_UL$O2=E?=YJOP65Hh`PI8?qq2XL+=J8>&v7hD_OvY zD4X5p%yz=B+l+z^XQa(|;EmHGA`}xO(QCbKkL>Fm{qS6}M_o<5+0+qDpokJm>7XcB zj}ATwn`v%6D&^wJL($jRyuRreiv815GsT&B0pNj?w)cD?IyH)b!~Fd_#To-BRt%N! zugA&Ehn!)apK)Ob^m$@QWC6Z{iz!)^oB;54F{*2y49CwCv&X-{+DnqNfCUk<`RFE) z^>BZP*SIsaO}T|OC1=}%k@8F)D2dyC!ufYh<}d(siOxM^lD*(g_WVLaB95!^gYjVQ zZ7wcf1)oe?FYe!=?(n1~Hnko5|GN9izo`1JYr2tUXc#&N7^IN~DM3QIQz_|??(P^+ zLQ3iG?rx-{TLkHpdJbN{`=5AtIeg}vZ|+!o?KP=fj;u5^<}|);wol7i;Gofw>E_$4 zC{V3}uVcsq`XT^i4*t<6ZN6qS0B!OQHhk5`;z-2Shsoj{9PI$}YXZ`vmgV)M1Jj9( zH%DzJ@jY+E(ZH*89b63zwr*(s z+c#h49ixQ>p{4;Mtu4>@)D@^>FB03HyN_)EsPz^4JTlnl@Xox`)kH2kAE=jN6}&{- zN1V4R9-J`oMw!Q~apD%S=NRex*N656S?SGTR1GFfq^b8hC$%V v$lNm9so>ZzZN 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/menu.svg b/stable/_static/img/menu.svg new file mode 100644 index 00000000000..30ea1d901e1 --- /dev/null +++ b/stable/_static/img/menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/stable/_static/img/scylladb-logo-horizontal.svg b/stable/_static/img/scylladb-logo-horizontal.svg new file mode 100644 index 00000000000..ad5cf5016f3 --- /dev/null +++ b/stable/_static/img/scylladb-logo-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/stable/_static/js/main.bundle.js b/stable/_static/js/main.bundle.js new file mode 100644 index 00000000000..454abe3b00a --- /dev/null +++ b/stable/_static/js/main.bundle.js @@ -0,0 +1,2 @@ +/*! For license information please see main.bundle.js.LICENSE.txt */ +(self.webpackChunksphinx_scylladb_theme=self.webpackChunksphinx_scylladb_theme||[]).push([[792],{452:(t,e,n)=>{var i;self,i=function(t){return function(){"use strict";var e={"./js/foundation.abide.js":function(t,e,n){n.r(e),n.d(e,{Abide:function(){return f}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function l(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};this.$element=t,this.options=o().extend(!0,{},d.defaults,this.$element.data(),e),this.isEnabled=!0,this.formnovalidate=null,this.className="Abide",this._init()}},{key:"_init",value:function(){var t=this;this.$inputs=o().merge(this.$element.find("input").not('[type="submit"]'),this.$element.find("textarea, select")),this.$submits=this.$element.find('[type="submit"]');var e=this.$element.find("[data-abide-error]");this.options.a11yAttributes&&(this.$inputs.each((function(e,n){return t.addA11yAttributes(o()(n))})),e.each((function(e,n){return t.addGlobalErrorA11yAttributes(o()(n))}))),this._events()}},{key:"_events",value:function(){var t=this;this.$element.off(".abide").on("reset.zf.abide",(function(){t.resetForm()})).on("submit.zf.abide",(function(){return t.validateForm()})),this.$submits.off("click.zf.abide keydown.zf.abide").on("click.zf.abide keydown.zf.abide",(function(e){e.key&&" "!==e.key&&"Enter"!==e.key||(e.preventDefault(),t.formnovalidate=null!==e.target.getAttribute("formnovalidate"),t.$element.submit())})),"fieldChange"===this.options.validateOn&&this.$inputs.off("change.zf.abide").on("change.zf.abide",(function(e){t.validateInput(o()(e.target))})),this.options.liveValidate&&this.$inputs.off("input.zf.abide").on("input.zf.abide",(function(e){t.validateInput(o()(e.target))})),this.options.validateOnBlur&&this.$inputs.off("blur.zf.abide").on("blur.zf.abide",(function(e){t.validateInput(o()(e.target))}))}},{key:"_reflow",value:function(){this._init()}},{key:"_validationIsDisabled",value:function(){return!1===this.isEnabled||("boolean"==typeof this.formnovalidate?this.formnovalidate:!!this.$submits.length&&null!==this.$submits[0].getAttribute("formnovalidate"))}},{key:"enableValidation",value:function(){this.isEnabled=!0}},{key:"disableValidation",value:function(){this.isEnabled=!1}},{key:"requiredCheck",value:function(t){if(!t.attr("required"))return!0;var e=!0;switch(t[0].type){case"checkbox":e=t[0].checked;break;case"select":case"select-one":case"select-multiple":var n=t.find("option:selected");n.length&&n.val()||(e=!1);break;default:t.val()&&t.val().length||(e=!1)}return e}},{key:"findFormError",value:function(t,e){var n=this,i=t.length?t[0].id:"",o=t.siblings(this.options.formErrorSelector);return o.length||(o=t.parent().find(this.options.formErrorSelector)),i&&(o=o.add(this.$element.find('[data-form-error-for="'.concat(i,'"]')))),e&&(o=o.not("[data-form-error-on]"),e.forEach((function(e){o=(o=o.add(t.siblings('[data-form-error-on="'.concat(e,'"]')))).add(n.$element.find('[data-form-error-for="'.concat(i,'"][data-form-error-on="').concat(e,'"]')))}))),o}},{key:"findLabel",value:function(t){var e=t[0].id,n=this.$element.find('label[for="'.concat(e,'"]'));return n.length?n:t.closest("label")}},{key:"findRadioLabels",value:function(t){var e=this,n=t.map((function(t,n){var i=n.id,r=e.$element.find('label[for="'.concat(i,'"]'));return r.length||(r=o()(n).closest("label")),r[0]}));return o()(n)}},{key:"findCheckboxLabels",value:function(t){var e=this,n=t.map((function(t,n){var i=n.id,r=e.$element.find('label[for="'.concat(i,'"]'));return r.length||(r=o()(n).closest("label")),r[0]}));return o()(n)}},{key:"addErrorClasses",value:function(t,e){var n=this.findLabel(t),i=this.findFormError(t,e);n.length&&n.addClass(this.options.labelErrorClass),i.length&&i.addClass(this.options.formErrorClass),t.addClass(this.options.inputErrorClass).attr({"data-invalid":"","aria-invalid":!0}),i.filter(":visible").length&&this.addA11yErrorDescribe(t,i)}},{key:"addA11yAttributes",value:function(t){var e=this.findFormError(t),n=e.filter("label");if(e.length){var i=e.filter(":visible").first();if(i.length&&this.addA11yErrorDescribe(t,i),n.filter("[for]").length=s&&(i=!0)),!0!==this.initialized&&s>1||(n.each((function(t,n){i?e.removeErrorClasses(o()(n)):e.addErrorClasses(o()(n),["required"])})),i)}},{key:"matchValidation",value:function(t,e,n){var i=this;return n=!!n,-1===e.split(" ").map((function(e){return i.options.validators[e](t,n,t.parent())})).indexOf(!1)}},{key:"resetForm",value:function(){var t=this.$element,e=this.options;o()(".".concat(e.labelErrorClass),t).not("small").removeClass(e.labelErrorClass),o()(".".concat(e.inputErrorClass),t).not("small").removeClass(e.inputErrorClass),o()("".concat(e.formErrorSelector,".").concat(e.formErrorClass)).removeClass(e.formErrorClass),t.find("[data-abide-error]").css("display","none"),o()(":input",t).not(":button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]").val("").attr({"data-invalid":null,"aria-invalid":null}),o()(":input:radio",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),o()(":input:checkbox",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),t.trigger("formreset.zf.abide",[t])}},{key:"_destroy",value:function(){var t=this;this.$element.off(".abide").find("[data-abide-error]").css("display","none"),this.$inputs.off(".abide").each((function(){t.removeErrorClasses(o()(this))})),this.$submits.off(".abide")}}],n&&l(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),d}(r.Plugin);f.defaults={validateOn:"fieldChange",labelErrorClass:"is-invalid-label",inputErrorClass:"is-invalid-input",formErrorSelector:".form-error",formErrorClass:"is-visible",a11yAttributes:!0,a11yErrorLevel:"assertive",liveValidate:!1,validateOnBlur:!1,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^((?:(https?|ftps?|file|ssh|sftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,website:{test:function(t){return f.defaults.patterns.domain.test(t)||f.defaults.patterns.url.test(t)}}},validators:{equalTo:function(t){return o()("#".concat(t.attr("data-equalto"))).val()===t.val()}}}},"./js/foundation.accordion.js":function(t,e,n){n.r(e),n.d(e,{Accordion:function(){return d}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js");function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){for(var n=0;n'),t.options.submenuToggle?(n.addClass("has-submenu-toggle"),n.children("a").after('")):n.attr({"aria-controls":r,"aria-expanded":s,id:e}),i.attr({"aria-labelledby":e,"aria-hidden":!s,role:"group",id:r})}));var e=this.$element.find(".is-active");e.length&&e.each((function(){t.down(o()(this))})),this._events()}},{key:"_events",value:function(){var t=this;this.$element.find("li").each((function(){var e=o()(this).children("[data-submenu]");e.length&&(t.options.submenuToggle?o()(this).children(".submenu-toggle").off("click.zf.accordionMenu").on("click.zf.accordionMenu",(function(){t.toggle(e)})):o()(this).children("a").off("click.zf.accordionMenu").on("click.zf.accordionMenu",(function(n){n.preventDefault(),t.toggle(e)})))})).on("keydown.zf.accordionMenu",(function(e){var n,i,s=o()(this),a=s.parent("ul").children("li"),l=s.children("[data-submenu]");a.each((function(t){if(o()(this).is(s))return n=a.eq(Math.max(0,t-1)).find("a").first(),i=a.eq(Math.min(t+1,a.length-1)).find("a").first(),o()(this).children("[data-submenu]:visible").length&&(i=s.find("li:first-child").find("a").first()),o()(this).is(":first-child")?n=s.parents("li").first().find("a").first():n.parents("li").first().children("[data-submenu]:visible").length&&(n=n.parents("li").find("li:last-child").find("a").first()),void(o()(this).is(":last-child")&&(i=s.parents("li").first().next("li").find("a").first()))})),r.Keyboard.handleKey(e,"AccordionMenu",{open:function(){l.is(":hidden")&&(t.down(l),l.find("li").first().find("a").first().focus())},close:function(){l.length&&!l.is(":hidden")?t.up(l):s.parent("[data-submenu]").length&&(t.up(s.parent("[data-submenu]")),s.parents("li").first().find("a").first().focus())},up:function(){return n.focus(),!0},down:function(){return i.focus(),!0},toggle:function(){return!t.options.submenuToggle&&(s.children("[data-submenu]").length?(t.toggle(s.children("[data-submenu]")),!0):void 0)},closeAll:function(){t.hideAll()},handled:function(t){t&&e.preventDefault()}})}))}},{key:"hideAll",value:function(){this.up(this.$element.find("[data-submenu]"))}},{key:"showAll",value:function(){this.down(this.$element.find("[data-submenu]"))}},{key:"toggle",value:function(t){t.is(":animated")||(t.is(":hidden")?this.down(t):this.up(t))}},{key:"down",value:function(t){var e=this;if(!this.options.multiOpen){var n=t.parentsUntil(this.$element).add(t).add(t.find(".is-active")),i=this.$element.find(".is-active").not(n);this.up(i)}t.addClass("is-active").attr({"aria-hidden":!1}),this.options.submenuToggle?t.prev(".submenu-toggle").attr({"aria-expanded":!0}):t.parent(".is-accordion-submenu-parent").attr({"aria-expanded":!0}),t.slideDown(this.options.slideSpeed,(function(){e.$element.trigger("down.zf.accordionMenu",[t])}))}},{key:"up",value:function(t){var e=this,n=t.find("[data-submenu]"),i=t.add(n);n.slideUp(0),i.removeClass("is-active").attr("aria-hidden",!0),this.options.submenuToggle?i.prev(".submenu-toggle").attr("aria-expanded",!1):i.parent(".is-accordion-submenu-parent").attr("aria-expanded",!1),t.slideUp(this.options.slideSpeed,(function(){e.$element.trigger("up.zf.accordionMenu",[t])}))}},{key:"_destroy",value:function(){this.$element.find("[data-submenu]").slideDown(0).css("display",""),this.$element.find("a").off("click.zf.accordionMenu"),this.$element.find("[data-is-parent-link]").detach(),this.options.submenuToggle&&(this.$element.find(".has-submenu-toggle").removeClass("has-submenu-toggle"),this.$element.find(".submenu-toggle").remove()),s.Nest.Burn(this.$element,"accordion")}}])&&u(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),p}(n("./js/foundation.core.plugin.js").Plugin);d.defaults={parentLink:!1,slideSpeed:250,submenuToggle:!1,submenuToggleText:"Toggle menu",multiOpen:!0}},"./js/foundation.core.js":function(t,e,n){n.r(e),n.d(e,{Foundation:function(){return l}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.mediaQuery.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var l={version:"6.8.1",_plugins:{},_uuids:[],plugin:function(t,e){var n=e||u(t),i=c(n);this._plugins[i]=this[n]=t},registerPlugin:function(t,e){var n=e?c(e):u(t.constructor).toLowerCase();t.uuid=(0,r.GetYoDigits)(6,n),t.$element.attr("data-".concat(n))||t.$element.attr("data-".concat(n),t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf.".concat(n)),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var e=c(u(t.$element.data("zfPlugin").constructor));for(var n in this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-".concat(e)).removeData("zfPlugin").trigger("destroyed.zf.".concat(e)),t)"function"==typeof t[n]&&(t[n]=null)},reInit:function(t){var e=t instanceof o();try{if(e)t.each((function(){o()(this).data("zfPlugin")._init()}));else{var n=a(t),i=this;({object:function(t){t.forEach((function(t){t=c(t),o()("[data-"+t+"]").foundation("_init")}))},string:function(){t=c(t),o()("[data-"+t+"]").foundation("_init")},undefined:function(){this.object(Object.keys(i._plugins))}})[n](t)}}catch(t){console.error(t)}finally{return t}},reflow:function(t,e){void 0===e?e=Object.keys(this._plugins):"string"==typeof e&&(e=[e]);var n=this;o().each(e,(function(e,i){var r=n._plugins[i];o()(t).find("[data-"+i+"]").addBack("[data-"+i+"]").filter((function(){return void 0===o()(this).data("zfPlugin")})).each((function(){var t=o()(this),e={reflow:!0};t.attr("data-options")&&t.attr("data-options").split(";").forEach((function(t){var n,i=t.split(":").map((function(t){return t.trim()}));i[0]&&(e[i[0]]="true"===(n=i[1])||"false"!==n&&(isNaN(1*n)?n:parseFloat(n)))}));try{t.data("zfPlugin",new r(o()(this),e))}catch(t){console.error(t)}finally{return}}))}))},getFnName:u,addToJquery:function(){return o().fn.foundation=function(t){var e=a(t),n=o()(".no-js");if(n.length&&n.removeClass("no-js"),"undefined"===e)s.MediaQuery._init(),l.reflow(this);else{if("string"!==e)throw new TypeError("We're sorry, ".concat(e," is not a valid parameter. You must use a string representing the method you wish to invoke."));var i=Array.prototype.slice.call(arguments,1),r=this.data("zfPlugin");if(void 0===r||void 0===r[t])throw new ReferenceError("We're sorry, '"+t+"' is not an available method for "+(r?u(r):"this element")+".");1===this.length?r[t].apply(r,i):this.each((function(e,n){r[t].apply(o()(n).data("zfPlugin"),i)}))}return this},o()}};function u(t){if(void 0===Function.prototype.name){var e=/function\s([^(]{1,})\(/.exec(t.toString());return e&&e.length>1?e[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function c(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}l.util={throttle:function(t,e){var n=null;return function(){var i=this,o=arguments;null===n&&(n=setTimeout((function(){t.apply(i,o),n=null}),e))}}},window.Foundation=l,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e0&&void 0!==arguments[0]?arguments[0]:6,e=arguments.length>1?arguments[1]:void 0,n="",i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=e.ignoreLeaveWindow,i=void 0!==n&&n,r=e.ignoreReappear,s=void 0!==r&&r;return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a'),e.data("savedHref",e.attr("href")).removeAttr("href").attr("tabindex",0),e.children("[data-submenu]").attr({"aria-hidden":!0,tabindex:0,role:"group"}),t._events(e)})),this.$submenus.each((function(){var e=o()(this);if(!e.find(".js-drilldown-back").length)switch(t.options.backButtonPosition){case"bottom":e.append(t.options.backButton);break;case"top":e.prepend(t.options.backButton);break;default:console.error("Unsupported backButtonPosition value '"+t.options.backButtonPosition+"'")}t._back(e)})),this.$submenus.addClass("invisible"),this.options.autoHeight||this.$submenus.addClass("drilldown-submenu-cover-previous"),this.$element.parent().hasClass("is-drilldown")||(this.$wrapper=o()(this.options.wrapper).addClass("is-drilldown"),this.options.animateHeight&&this.$wrapper.addClass("animate-height"),this.$element.wrap(this.$wrapper)),this.$wrapper=this.$element.parent(),this.$wrapper.css(this._getMaxDims())}},{key:"_resize",value:function(){this.$wrapper.css({"max-width":"none","min-height":"none"}),this.$wrapper.css(this._getMaxDims())}},{key:"_events",value:function(t){var e=this;t.off("click.zf.drilldown").on("click.zf.drilldown",(function(n){if(o()(n.target).parentsUntil("ul","li").hasClass("is-drilldown-submenu-parent")&&n.preventDefault(),e._show(t.parent("li")),e.options.closeOnClick){var i=o()("body");i.off(".zf.drilldown").on("click.zf.drilldown",(function(t){t.target===e.$element[0]||o().contains(e.$element[0],t.target)||(t.preventDefault(),e._hideAll(),i.off(".zf.drilldown"))}))}}))}},{key:"_registerEvents",value:function(){this.options.scrollTop&&(this._bindHandler=this._scrollTop.bind(this),this.$element.on("open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown",this._bindHandler)),this.$element.on("mutateme.zf.trigger",this._resize.bind(this))}},{key:"_scrollTop",value:function(){var t=this,e=""!==t.options.scrollTopElement?o()(t.options.scrollTopElement):t.$element,n=parseInt(e.offset().top+t.options.scrollTopOffset,10);o()("html, body").stop(!0).animate({scrollTop:n},t.options.animationDuration,t.options.animationEasing,(function(){this===o()("html")[0]&&t.$element.trigger("scrollme.zf.drilldown")}))}},{key:"_keyboardEvents",value:function(){var t=this;this.$menuItems.add(this.$element.find(".js-drilldown-back > a, .is-submenu-parent-item > a")).on("keydown.zf.drilldown",(function(e){var n,i,s=o()(this),l=s.parent("li").parent("ul").children("li").children("a");l.each((function(t){if(o()(this).is(s))return n=l.eq(Math.max(0,t-1)),void(i=l.eq(Math.min(t+1,l.length-1)))})),r.Keyboard.handleKey(e,"Drilldown",{next:function(){if(s.is(t.$submenuAnchors))return t._show(s.parent("li")),s.parent("li").one((0,a.transitionend)(s),(function(){s.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()})),!0},previous:function(){return t._hide(s.parent("li").parent("ul")),s.parent("li").parent("ul").one((0,a.transitionend)(s),(function(){setTimeout((function(){s.parent("li").parent("ul").parent("li").children("a").first().focus()}),1)})),!0},up:function(){return n.focus(),!s.is(t.$element.find("> li:first-child > a"))},down:function(){return i.focus(),!s.is(t.$element.find("> li:last-child > a"))},close:function(){s.is(t.$element.find("> li > a"))||(t._hide(s.parent().parent()),s.parent().parent().siblings("a").focus())},open:function(){return(!t.options.parentLink||!s.attr("href"))&&(s.is(t.$menuItems)?s.is(t.$submenuAnchors)?(t._show(s.parent("li")),s.parent("li").one((0,a.transitionend)(s),(function(){s.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()})),!0):void 0:(t._hide(s.parent("li").parent("ul")),s.parent("li").parent("ul").one((0,a.transitionend)(s),(function(){setTimeout((function(){s.parent("li").parent("ul").parent("li").children("a").first().focus()}),1)})),!0))},handled:function(t){t&&e.preventDefault()}})}))}},{key:"_hideAll",value:function(){var t=this,e=this.$element.find(".is-drilldown-submenu.is-active");if(e.addClass("is-closing"),e.parent().closest("ul").removeClass("invisible"),this.options.autoHeight){var n=e.parent().closest("ul").data("calcHeight");this.$wrapper.css({height:n})}this.$element.trigger("close.zf.drilldown"),e.one((0,a.transitionend)(e),(function(){e.removeClass("is-active is-closing"),t.$element.trigger("closed.zf.drilldown")}))}},{key:"_back",value:function(t){var e=this;t.off("click.zf.drilldown"),t.children(".js-drilldown-back").on("click.zf.drilldown",(function(){e._hide(t);var n=t.parent("li").parent("ul").parent("li");n.length?e._show(n):e.$currentMenu=e.$element}))}},{key:"_menuLinkEvents",value:function(){var t=this;this.$menuItems.not(".is-drilldown-submenu-parent").off("click.zf.drilldown").on("click.zf.drilldown",(function(){setTimeout((function(){t._hideAll()}),0)}))}},{key:"_setShowSubMenuClasses",value:function(t,e){t.addClass("is-active").removeClass("invisible").attr("aria-hidden",!1),t.parent("li").attr("aria-expanded",!0),!0===e&&this.$element.trigger("open.zf.drilldown",[t])}},{key:"_setHideSubMenuClasses",value:function(t,e){t.removeClass("is-active").addClass("invisible").attr("aria-hidden",!0),t.parent("li").attr("aria-expanded",!1),!0===e&&t.trigger("hide.zf.drilldown",[t])}},{key:"_showMenu",value:function(t,e){var n=this;if(this.$element.find('li[aria-expanded="true"] > ul[data-submenu]').each((function(){n._setHideSubMenuClasses(o()(this))})),this.$currentMenu=t,t.is("[data-drilldown]"))return!0===e&&t.find("li > a").first().focus(),void(this.options.autoHeight&&this.$wrapper.css("height",t.data("calcHeight")));var i=t.children().first().parentsUntil("[data-drilldown]","[data-submenu]");i.each((function(r){0===r&&n.options.autoHeight&&n.$wrapper.css("height",o()(this).data("calcHeight"));var s=r===i.length-1;!0===s&&o()(this).one((0,a.transitionend)(o()(this)),(function(){!0===e&&t.find("li > a").first().focus()})),n._setShowSubMenuClasses(o()(this),s)}))}},{key:"_show",value:function(t){var e=t.children("[data-submenu]");t.attr("aria-expanded",!0),this.$currentMenu=e,t.parent().closest("ul").addClass("invisible"),e.addClass("is-active visible").removeClass("invisible").attr("aria-hidden",!1),this.options.autoHeight&&this.$wrapper.css({height:e.data("calcHeight")}),this.$element.trigger("open.zf.drilldown",[t])}},{key:"_hide",value:function(t){this.options.autoHeight&&this.$wrapper.css({height:t.parent().closest("ul").data("calcHeight")}),t.parent().closest("ul").removeClass("invisible"),t.parent("li").attr("aria-expanded",!1),t.attr("aria-hidden",!0),t.addClass("is-closing").one((0,a.transitionend)(t),(function(){t.removeClass("is-active is-closing visible"),t.blur().addClass("invisible")})),t.trigger("hide.zf.drilldown",[t])}},{key:"_getMaxDims",value:function(){var t=0,e={},n=this;return this.$submenus.add(this.$element).each((function(){var e=l.Box.GetDimensions(this).height;t=e>t?e:t,n.options.autoHeight&&o()(this).data("calcHeight",e)})),this.options.autoHeight?e.height=this.$currentMenu.data("calcHeight"):e["min-height"]="".concat(t,"px"),e["max-width"]="".concat(this.$element[0].getBoundingClientRect().width,"px"),e}},{key:"_destroy",value:function(){o()("body").off(".zf.drilldown"),this.options.scrollTop&&this.$element.off(".zf.drilldown",this._bindHandler),this._hideAll(),this.$element.off("mutateme.zf.trigger"),s.Nest.Burn(this.$element,"drilldown"),this.$element.unwrap().find(".js-drilldown-back, .is-submenu-parent-item").remove().end().find(".is-active, .is-closing, .is-drilldown-submenu").removeClass("is-active is-closing is-drilldown-submenu").off("transitionend otransitionend webkitTransitionEnd").end().find("[data-submenu]").removeAttr("aria-hidden tabindex role"),this.$submenuAnchors.each((function(){o()(this).off(".zf.drilldown")})),this.$element.find("[data-is-parent-link]").detach(),this.$submenus.removeClass("drilldown-submenu-cover-previous invisible"),this.$element.find("a").each((function(){var t=o()(this);t.removeAttr("tabindex"),t.data("savedHref")&&t.attr("href",t.data("savedHref")).removeData("savedHref")}))}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(n("./js/foundation.core.plugin.js").Plugin);h.defaults={autoApplyClass:!0,backButton:'
      1. Back
      2. ',backButtonPosition:"top",wrapper:"
        ",parentLink:!1,closeOnClick:!1,autoHeight:!1,animateHeight:!1,scrollTop:!1,scrollTopElement:"",scrollTopOffset:0,animationDuration:500,animationEasing:"swing"}},"./js/foundation.dropdown.js":function(t,e,n){n.r(e),n.d(e,{Dropdown:function(){return v}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.positionable.js"),l=n("./js/foundation.util.triggers.js"),u=n("./js/foundation.util.touch.js");function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function f(t,e){for(var n=0;n-1,l=s?t.$tabs:r.siblings("li").add(r);l.each((function(t){if(o()(this).is(r))return n=l.eq(t-1),void(i=l.eq(t+1))}));var u=function(){i.children("a:first").focus(),e.preventDefault()},c=function(){n.children("a:first").focus(),e.preventDefault()},f=function(){var n=r.children("ul.is-dropdown-submenu");n.length&&(t._show(n),r.find("li > a:first").focus(),e.preventDefault())},d=function(){var n=r.parent("ul").parent("li");n.children("a:first").focus(),t._hide(n),e.preventDefault()},h={open:f,close:function(){t._hide(t.$element),t.$menuItems.eq(0).children("a").focus(),e.preventDefault()}};s?t._isVertical()?t._isRtl()?o().extend(h,{down:u,up:c,next:d,previous:f}):o().extend(h,{down:u,up:c,next:f,previous:d}):t._isRtl()?o().extend(h,{next:c,previous:u,down:f,up:d}):o().extend(h,{next:u,previous:c,down:f,up:d}):t._isRtl()?o().extend(h,{next:d,previous:f,down:u,up:c}):o().extend(h,{next:f,previous:d,down:u,up:c}),a.Keyboard.handleKey(e,"DropdownMenu",h)}))}},{key:"_addBodyHandler",value:function(){var t=this,e=o()(document.body);this._removeBodyHandler(),e.on("click.zf.dropdownMenu tap.zf.dropdownMenu",(function(e){o()(e.target).closest(t.$element).length||(t._hide(),t._removeBodyHandler())}))}},{key:"_removeBodyHandler",value:function(){o()(document.body).off("click.zf.dropdownMenu tap.zf.dropdownMenu")}},{key:"_show",value:function(t){var e=this.$tabs.index(this.$tabs.filter((function(e,n){return o()(n).find(t).length>0}))),n=t.parent("li.is-dropdown-submenu-parent").siblings("li.is-dropdown-submenu-parent");this._hide(n,e),t.css("visibility","hidden").addClass("js-dropdown-active").parent("li.is-dropdown-submenu-parent").addClass("is-active");var i=u.Box.ImNotTouchingYou(t,null,!0);if(!i){var r="left"===this.options.alignment?"-right":"-left",s=t.parent(".is-dropdown-submenu-parent");s.removeClass("opens".concat(r)).addClass("opens-".concat(this.options.alignment)),(i=u.Box.ImNotTouchingYou(t,null,!0))||s.removeClass("opens-".concat(this.options.alignment)).addClass("opens-inner"),this.changed=!0}t.css("visibility",""),this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdownMenu",[t])}},{key:"_hide",value:function(t,e){var n;if((n=t&&t.length?t:void 0!==e?this.$tabs.not((function(t){return t===e})):this.$element).hasClass("is-active")||n.find(".is-active").length>0){var i=n.find("li.is-active");if(i.add(n).attr({"data-is-click":!1}).removeClass("is-active"),n.find("ul.js-dropdown-active").removeClass("js-dropdown-active"),this.changed||n.find("opens-inner").length){var o="left"===this.options.alignment?"right":"left";n.find("li.is-dropdown-submenu-parent").add(n).removeClass("opens-inner opens-".concat(this.options.alignment)).addClass("opens-".concat(o)),this.changed=!1}clearTimeout(i.data("_delay")),this._removeBodyHandler(),this.$element.trigger("hide.zf.dropdownMenu",[n])}}},{key:"_destroy",value:function(){this.$menuItems.off(".zf.dropdownMenu").removeAttr("data-is-click").removeClass("is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner"),o()(document.body).off(".zf.dropdownMenu"),l.Nest.Burn(this.$element,"dropdown")}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),m}(r.Plugin);v.defaults={disableHover:!1,disableHoverOnTouch:!0,autoclose:!0,hoverDelay:50,clickOpen:!1,closingTime:500,alignment:"auto",closeOnClick:!0,closeOnClickInside:!0,verticalClass:"vertical",rightClass:"align-right",forceFollow:!0}},"./js/foundation.equalizer.js":function(t,e,n){n.r(e),n.d(e,{Equalizer:function(){return d}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.imageLoader.js"),a=n("./js/foundation.core.utils.js");function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){for(var n=0;n0,this.isNested=this.$element.parentsUntil(document.body,"[data-equalizer]").length>0,this.isOn=!1,this._bindHandler={onResizeMeBound:this._onResizeMe.bind(this),onPostEqualizedBound:this._onPostEqualized.bind(this)};var n,i=this.$element.find("img");this.options.equalizeOn?(n=this._checkMQ(),o()(window).on("changed.zf.mediaquery",this._checkMQ.bind(this))):this._events(),(void 0!==n&&!1===n||void 0===n)&&(i.length?(0,s.onImagesLoaded)(i,this._reflow.bind(this)):this._reflow())}},{key:"_pauseEvents",value:function(){this.isOn=!1,this.$element.off({".zf.equalizer":this._bindHandler.onPostEqualizedBound,"resizeme.zf.trigger":this._bindHandler.onResizeMeBound,"mutateme.zf.trigger":this._bindHandler.onResizeMeBound})}},{key:"_onResizeMe",value:function(){this._reflow()}},{key:"_onPostEqualized",value:function(t){t.target!==this.$element[0]&&this._reflow()}},{key:"_events",value:function(){this._pauseEvents(),this.hasNested?this.$element.on("postequalized.zf.equalizer",this._bindHandler.onPostEqualizedBound):(this.$element.on("resizeme.zf.trigger",this._bindHandler.onResizeMeBound),this.$element.on("mutateme.zf.trigger",this._bindHandler.onResizeMeBound)),this.isOn=!0}},{key:"_checkMQ",value:function(){var t=!r.MediaQuery.is(this.options.equalizeOn);return t?this.isOn&&(this._pauseEvents(),this.$watched.css("height","auto")):this.isOn||this._events(),t}},{key:"_killswitch",value:function(){}},{key:"_reflow",value:function(){if(!this.options.equalizeOnStack&&this._isStacked())return this.$watched.css("height","auto"),!1;this.options.equalizeByRow?this.getHeightsByRow(this.applyHeightByRow.bind(this)):this.getHeights(this.applyHeight.bind(this))}},{key:"_isStacked",value:function(){return!this.$watched[0]||!this.$watched[1]||this.$watched[0].getBoundingClientRect().top!==this.$watched[1].getBoundingClientRect().top}},{key:"getHeights",value:function(t){for(var e=[],n=0,i=this.$watched.length;nn;if(this.scrollPos=n,n0&&"push"===this.options.transition&&(this.options.contentScroll=!1);var r=this.$element.attr("class").match(/\bin-canvas-for-(\w+)/);r&&2===r.length?this.options.inCanvasOn=r[1]:this.options.inCanvasOn&&this.$element.addClass("in-canvas-for-".concat(this.options.inCanvasOn)),this.options.inCanvasOn&&this._checkInCanvas(),this._removeContentClasses()}},{key:"_events",value:function(){var t=this;this.$element.off(".zf.trigger .zf.offCanvas").on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"keydown.zf.offCanvas":this._handleKeyboard.bind(this)}),!0===this.options.closeOnClick&&(this.options.contentOverlay?this.$overlay:this.$content).on({"click.zf.offCanvas":this.close.bind(this)}),this.options.inCanvasOn&&o()(window).on("changed.zf.mediaquery",(function(){t._checkInCanvas()}))}},{key:"_setMQChecker",value:function(){var t=this;this.onLoadListener=(0,s.onLoad)(o()(window),(function(){l.MediaQuery.atLeast(t.options.revealOn)&&t.reveal(!0)})),o()(window).on("changed.zf.mediaquery",(function(){l.MediaQuery.atLeast(t.options.revealOn)?t.reveal(!0):t.reveal(!1)}))}},{key:"_checkInCanvas",value:function(){this.isInCanvas=l.MediaQuery.atLeast(this.options.inCanvasOn),!0===this.isInCanvas&&this.close()}},{key:"_removeContentClasses",value:function(t){"boolean"!=typeof t?this.$content.removeClass(this.contentClasses.base.join(" ")):!1===t&&this.$content.removeClass("has-reveal-".concat(this.position))}},{key:"_addContentClasses",value:function(t){this._removeContentClasses(t),"boolean"!=typeof t?this.$content.addClass("has-transition-".concat(this.options.transition," has-position-").concat(this.position)):!0===t&&this.$content.addClass("has-reveal-".concat(this.position))}},{key:"_fixStickyElements",value:function(){this.$sticky.each((function(t,e){var n=o()(e);if("fixed"===n.css("position")){var i=parseInt(n.css("top"),10);n.data("offCanvasSticky",{top:i});var r=o()(document).scrollTop()+i;n.css({top:"".concat(r,"px"),width:"100%",transition:"none"})}}))}},{key:"_unfixStickyElements",value:function(){this.$sticky.each((function(t,e){var n=o()(e),i=n.data("offCanvasSticky");"object"===c(i)&&(n.css({top:"".concat(i.top,"px"),width:"",transition:""}),n.data("offCanvasSticky",""))}))}},{key:"reveal",value:function(t){t?(this.close(),this.isRevealed=!0,this.$element.attr("aria-hidden","false"),this.$element.off("open.zf.trigger toggle.zf.trigger"),this.$element.removeClass("is-closed")):(this.isRevealed=!1,this.$element.attr("aria-hidden","true"),this.$element.off("open.zf.trigger toggle.zf.trigger").on({"open.zf.trigger":this.open.bind(this),"toggle.zf.trigger":this.toggle.bind(this)}),this.$element.addClass("is-closed")),this._addContentClasses(t)}},{key:"_stopScrolling",value:function(){return!1}},{key:"_recordScrollable",value:function(t){this.lastY=t.touches[0].pageY}},{key:"_preventDefaultAtEdges",value:function(t){var e=this,n=t.data,i=e.lastY-t.touches[0].pageY;e.lastY=t.touches[0].pageY,n._canScroll(i,e)||t.preventDefault()}},{key:"_scrollboxTouchMoved",value:function(t){var e=this,n=t.data,i=e.closest("[data-off-canvas], [data-off-canvas-scrollbox-outer]"),o=e.lastY-t.touches[0].pageY;i.lastY=e.lastY=t.touches[0].pageY,t.stopPropagation(),n._canScroll(o,e)||(n._canScroll(o,i)?i.scrollTop+=o:t.preventDefault())}},{key:"_canScroll",value:function(t,e){var n=t<0,i=t>0,o=e.scrollTop>0,r=e.scrollTop1&&this.geoSync(),this.options.accessible&&this.$wrapper.attr("tabindex",0)}},{key:"_loadBullets",value:function(){this.$bullets=this.$element.find(".".concat(this.options.boxOfBullets)).find("button")}},{key:"geoSync",value:function(){var t=this;this.timer=new a.Timer(this.$element,{duration:this.options.timerDelay,infinite:!1},(function(){t.changeSlide(!0)})),this.timer.start()}},{key:"_prepareForOrbit",value:function(){this._setWrapperHeight()}},{key:"_setWrapperHeight",value:function(t){var e,n=0,i=0,r=this;this.$slides.each((function(){e=this.getBoundingClientRect().height,o()(this).attr("data-slide",i),/mui/g.test(o()(this)[0].className)||r.$slides.filter(".is-active")[0]===r.$slides.eq(i)[0]||o()(this).css({display:"none"}),n=e>n?e:n,i++})),i===this.$slides.length&&(this.$wrapper.css({height:n}),t&&t(n))}},{key:"_setSlideHeight",value:function(t){this.$slides.each((function(){o()(this).css("max-height",t)}))}},{key:"_events",value:function(){var t=this;this.$element.off(".resizeme.zf.trigger").on({"resizeme.zf.trigger":this._prepareForOrbit.bind(this)}),this.$slides.length>1&&(this.options.swipe&&this.$slides.off("swipeleft.zf.orbit swiperight.zf.orbit").on("swipeleft.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(!0)})).on("swiperight.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(!1)})),this.options.autoPlay&&(this.$slides.on("click.zf.orbit",(function(){t.$element.data("clickedOn",!t.$element.data("clickedOn")),t.timer[t.$element.data("clickedOn")?"pause":"start"]()})),this.options.pauseOnHover&&this.$element.on("mouseenter.zf.orbit",(function(){t.timer.pause()})).on("mouseleave.zf.orbit",(function(){t.$element.data("clickedOn")||t.timer.start()}))),this.options.navButtons&&this.$element.find(".".concat(this.options.nextClass,", .").concat(this.options.prevClass)).attr("tabindex",0).on("click.zf.orbit touchend.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(o()(this).hasClass(t.options.nextClass))})),this.options.bullets&&this.$bullets.on("click.zf.orbit touchend.zf.orbit",(function(){if(/is-active/g.test(this.className))return!1;var e=o()(this).data("slide"),n=e>t.$slides.filter(".is-active").data("slide"),i=t.$slides.eq(e);t.changeSlide(n,i,e)})),this.options.accessible&&this.$wrapper.add(this.$bullets).on("keydown.zf.orbit",(function(e){r.Keyboard.handleKey(e,"Orbit",{next:function(){t.changeSlide(!0)},previous:function(){t.changeSlide(!1)},handled:function(){o()(e.target).is(t.$bullets)&&t.$bullets.filter(".is-active").focus()}})})))}},{key:"_reset",value:function(){void 0!==this.$slides&&this.$slides.length>1&&(this.$element.off(".zf.orbit").find("*").off(".zf.orbit"),this.options.autoPlay&&this.timer.restart(),this.$slides.each((function(t){o()(t).removeClass("is-active is-active is-in").removeAttr("aria-live").hide()})),this.$slides.first().addClass("is-active").show(),this.$element.trigger("slidechange.zf.orbit",[this.$slides.first()]),this.options.bullets&&this._updateBullets(0))}},{key:"changeSlide",value:function(t,e,n){if(this.$slides){var i=this.$slides.filter(".is-active").eq(0);if(/mui/g.test(i[0].className))return!1;var o,r=this.$slides.first(),a=this.$slides.last(),l=t?"Right":"Left",u=t?"Left":"Right",c=this;(o=e||(t?this.options.infiniteWrap?i.next(".".concat(this.options.slideClass)).length?i.next(".".concat(this.options.slideClass)):r:i.next(".".concat(this.options.slideClass)):this.options.infiniteWrap?i.prev(".".concat(this.options.slideClass)).length?i.prev(".".concat(this.options.slideClass)):a:i.prev(".".concat(this.options.slideClass)))).length&&(this.$element.trigger("beforeslidechange.zf.orbit",[i,o]),this.options.bullets&&(n=n||this.$slides.index(o),this._updateBullets(n)),this.options.useMUI&&!this.$element.is(":hidden")?(s.Motion.animateIn(o.addClass("is-active"),this.options["animInFrom".concat(l)],(function(){o.css({display:"block"}).attr("aria-live","polite")})),s.Motion.animateOut(i.removeClass("is-active"),this.options["animOutTo".concat(u)],(function(){i.removeAttr("aria-live"),c.options.autoPlay&&!c.timer.isPaused&&c.timer.restart()}))):(i.removeClass("is-active is-in").removeAttr("aria-live").hide(),o.addClass("is-active is-in").attr("aria-live","polite").show(),this.options.autoPlay&&!this.timer.isPaused&&this.timer.restart()),this.$element.trigger("slidechange.zf.orbit",[o]))}}},{key:"_updateBullets",value:function(t){var e=this.$bullets.filter(".is-active"),n=this.$bullets.not(".is-active"),i=this.$bullets.eq(t);e.removeClass("is-active").blur(),i.addClass("is-active");var r=e.children("[data-slide-active-label]").last();if(!r.length){var s=e.children("span");n.toArray().map((function(t){return o()(t).children("span").length})).every((function(t){return t1?i[0]:"small",a=i.length>1?i[1]:i[0];null!==v[a]&&(t[s]=v[a])}this.rules=t}this._getAllOptions(),o().isEmptyObject(this.rules)||this._checkMediaQueries()}},{key:"_getAllOptions",value:function(){var t=this;for(var e in t.allOptions={},v)if(v.hasOwnProperty(e)){var n=v[e];try{var i=o()("
          "),r=new n.plugin(i,t.options);for(var s in r.options)if(r.options.hasOwnProperty(s)&&"zfPlugin"!==s){var a=r.options[s];t.allOptions[s]=a}r.destroy()}catch(t){console.warn("Warning: Problems getting Accordion/Tab options: ".concat(t))}}}},{key:"_events",value:function(){this._changedZfMediaQueryHandler=this._checkMediaQueries.bind(this),o()(window).on("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}},{key:"_checkMediaQueries",value:function(){var t,e=this;o().each(this.rules,(function(e){r.MediaQuery.atLeast(e)&&(t=e)})),t&&(this.currentPlugin instanceof this.rules[t].plugin||(o().each(v,(function(t,n){e.$element.removeClass(n.cssClass)})),this.$element.addClass(this.rules[t].cssClass),this.currentPlugin&&(!this.currentPlugin.$element.data("zfPlugin")&&this.storezfData&&this.currentPlugin.$element.data("zfPlugin",this.storezfData),this.currentPlugin.destroy()),this._handleMarkup(this.rules[t].cssClass),this.currentRule=this.rules[t],this.currentPlugin=new this.currentRule.plugin(this.$element,this.options),this.storezfData=this.currentPlugin.$element.data("zfPlugin")))}},{key:"_handleMarkup",value:function(t){var e=this,n="accordion",i=o()("[data-tabs-content="+this.$element.attr("id")+"]");if(i.length&&(n="tabs"),n!==t){var r=e.allOptions.linkClass?e.allOptions.linkClass:"tabs-title",a=e.allOptions.panelClass?e.allOptions.panelClass:"tabs-panel";this.$element.removeAttr("role");var l=this.$element.children("."+r+",[data-accordion-item]").removeClass(r).removeClass("accordion-item").removeAttr("data-accordion-item"),u=l.children("a").removeClass("accordion-title");if("tabs"===n?(i=i.children("."+a).removeClass(a).removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby")).children("a").removeAttr("role").removeAttr("aria-controls").removeAttr("aria-selected"):i=l.children("[data-tab-content]").removeClass("accordion-content"),i.css({display:"",visibility:""}),l.css({display:"",visibility:""}),"accordion"===t)i.each((function(t,n){o()(n).appendTo(l.get(t)).addClass("accordion-content").attr("data-tab-content","").removeClass("is-active").css({height:""}),o()("[data-tabs-content="+e.$element.attr("id")+"]").after('
          ').detach(),l.addClass("accordion-item").attr("data-accordion-item",""),u.addClass("accordion-title")}));else if("tabs"===t){var c=o()("[data-tabs-content="+e.$element.attr("id")+"]"),f=o()("#tabs-placeholder-"+e.$element.attr("id"));f.length?(c=o()('
          ').insertAfter(f).attr("data-tabs-content",e.$element.attr("id")),f.remove()):c=o()('
          ').insertAfter(e.$element).attr("data-tabs-content",e.$element.attr("id")),i.each((function(t,e){var n=o()(e).appendTo(c).addClass(a),i=u.get(t).hash.slice(1),r=o()(e).attr("id")||(0,s.GetYoDigits)(6,"accordion");i!==r&&(""!==i?o()(e).attr("id",i):(i=r,o()(e).attr("id",i),o()(u.get(t)).attr("href",o()(u.get(t)).attr("href").replace("#","")+"#"+i))),o()(l.get(t)).hasClass("is-active")&&n.addClass("is-active")})),l.addClass(r)}}}},{key:"open",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.open)return(t=this.currentRule).open.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"close",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.close)return(t=this.currentRule).close.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"toggle",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.toggle)return(t=this.currentRule).toggle.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"_destroy",value:function(){this.currentPlugin&&this.currentPlugin.destroy(),o()(window).off("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}}],n&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(a.Plugin);m.defaults={}},"./js/foundation.responsiveMenu.js":function(t,e,n){n.r(e),n.d(e,{ResponsiveMenu:function(){return m}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.core.plugin.js"),l=n("./js/foundation.dropdownMenu.js"),u=n("./js/foundation.drilldown.js"),c=n("./js/foundation.accordionMenu.js");function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function d(t,e){for(var n=0;n1?i[0]:"small",l=i.length>1?i[1]:i[0];null!==v[l]&&(t[a]=v[l])}this.rules=t}o().isEmptyObject(this.rules)||this._checkMediaQueries(),this.$element.attr("data-mutate",this.$element.attr("data-mutate")||(0,s.GetYoDigits)(6,"responsive-menu"))}},{key:"_events",value:function(){var t=this;o()(window).on("changed.zf.mediaquery",(function(){t._checkMediaQueries()}))}},{key:"_checkMediaQueries",value:function(){var t,e=this;o().each(this.rules,(function(e){r.MediaQuery.atLeast(e)&&(t=e)})),t&&(this.currentPlugin instanceof this.rules[t].plugin||(o().each(v,(function(t,n){e.$element.removeClass(n.cssClass)})),this.$element.addClass(this.rules[t].cssClass),this.currentPlugin&&this.currentPlugin.destroy(),this.currentPlugin=new this.rules[t].plugin(this.$element,{})))}},{key:"_destroy",value:function(){this.currentPlugin.destroy(),o()(window).off(".zf.ResponsiveMenu")}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(a.Plugin);m.defaults={}},"./js/foundation.responsiveToggle.js":function(t,e,n){n.r(e),n.d(e,{ResponsiveToggle:function(){return f}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.motion.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function l(t,e){for(var n=0;n").addClass("reveal-overlay"+t).appendTo(this.options.appendTo)}},{key:"_updatePosition",value:function(){var t,e=this.$element.outerWidth(),n=o()(window).width(),i=this.$element.outerHeight(),r=o()(window).height(),s=null;t="auto"===this.options.hOffset?parseInt((n-e)/2,10):parseInt(this.options.hOffset,10),"auto"===this.options.vOffset?s=i>r?parseInt(Math.min(100,r/10),10):parseInt((r-i)/4,10):null!==this.options.vOffset&&(s=parseInt(this.options.vOffset,10)),null!==s&&this.$element.css({top:s+"px"}),this.$overlay&&"auto"===this.options.hOffset||(this.$element.css({left:t+"px"}),this.$element.css({margin:"0px"}))}},{key:"_events",value:function(){var t=this,e=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":function(n,i){if(n.target===e.$element[0]||o()(n.target).parents("[data-closable]")[0]===i)return t.close.apply(t)},"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":function(){e._updatePosition()}}),this.options.closeOnClick&&this.options.overlay&&this.$overlay.off(".zf.reveal").on("click.zf.dropdown tap.zf.dropdown",(function(t){t.target!==e.$element[0]&&!o().contains(e.$element[0],t.target)&&o().contains(document,t.target)&&e.close()})),this.options.deepLink&&o()(window).on("hashchange.zf.reveal:".concat(this.id),this._handleState.bind(this))}},{key:"_handleState",value:function(){window.location.hash!=="#"+this.id||this.isActive?this.close():this.open()}},{key:"_disableScroll",value:function(t){t=t||o()(window).scrollTop(),o()(document).height()>o()(window).height()&&o()("html").css("top",-t)}},{key:"_enableScroll",value:function(t){t=t||parseInt(o()("html").css("top"),10),o()(document).height()>o()(window).height()&&(o()("html").css("top",""),o()(window).scrollTop(-t))}},{key:"open",value:function(){var t=this,e="#".concat(this.id);this.options.deepLink&&window.location.hash!==e&&(window.history.pushState?this.options.updateHistory?window.history.pushState({},"",e):window.history.replaceState({},"",e):window.location.hash=e),this.$activeAnchor=o()(document.activeElement).is(this.$anchor)?o()(document.activeElement):this.$anchor,this.isActive=!0,this.$element.css({visibility:"hidden"}).show().scrollTop(0),this.options.overlay&&this.$overlay.css({visibility:"hidden"}).show(),this._updatePosition(),this.$element.hide().css({visibility:""}),this.$overlay&&(this.$overlay.css({visibility:""}).hide(),this.$element.hasClass("fast")?this.$overlay.addClass("fast"):this.$element.hasClass("slow")&&this.$overlay.addClass("slow")),this.options.multipleOpened||this.$element.trigger("closeme.zf.reveal",this.id),0===o()(".reveal:visible").length&&this._disableScroll();var n=this;this.options.animationIn?(this.options.overlay&&u.Motion.animateIn(this.$overlay,"fade-in"),u.Motion.animateIn(this.$element,this.options.animationIn,(function(){t.$element&&(t.focusableElements=a.Keyboard.findFocusable(t.$element),n.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),n._addGlobalClasses(),a.Keyboard.trapFocus(n.$element))}))):(this.options.overlay&&this.$overlay.show(0),this.$element.show(this.options.showDelay)),this.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),a.Keyboard.trapFocus(this.$element),this._addGlobalClasses(),this._addGlobalListeners(),this.$element.trigger("open.zf.reveal")}},{key:"_addGlobalClasses",value:function(){var t=function(){o()("html").toggleClass("zf-has-scroll",!!(o()(document).height()>o()(window).height()))};this.$element.on("resizeme.zf.trigger.revealScrollbarListener",(function(){return t()})),t(),o()("html").addClass("is-reveal-open")}},{key:"_removeGlobalClasses",value:function(){this.$element.off("resizeme.zf.trigger.revealScrollbarListener"),o()("html").removeClass("is-reveal-open"),o()("html").removeClass("zf-has-scroll")}},{key:"_addGlobalListeners",value:function(){var t=this;this.$element&&(this.focusableElements=a.Keyboard.findFocusable(this.$element),this.options.overlay||!this.options.closeOnClick||this.options.fullScreen||o()("body").on("click.zf.dropdown tap.zf.dropdown",(function(e){e.target!==t.$element[0]&&!o().contains(t.$element[0],e.target)&&o().contains(document,e.target)&&t.close()})),this.options.closeOnEsc&&o()(window).on("keydown.zf.reveal",(function(e){a.Keyboard.handleKey(e,"Reveal",{close:function(){t.options.closeOnEsc&&t.close()}})})))}},{key:"close",value:function(){if(!this.isActive||!this.$element.is(":visible"))return!1;var t=this;function e(){var e=parseInt(o()("html").css("top"),10);0===o()(".reveal:visible").length&&t._removeGlobalClasses(),a.Keyboard.releaseFocus(t.$element),t.$element.attr("aria-hidden",!0),0===o()(".reveal:visible").length&&t._enableScroll(e),t.$element.trigger("closed.zf.reveal")}if(this.options.animationOut?(this.options.overlay&&u.Motion.animateOut(this.$overlay,"fade-out"),u.Motion.animateOut(this.$element,this.options.animationOut,e)):(this.$element.hide(this.options.hideDelay),this.options.overlay?this.$overlay.hide(0,e):e()),this.options.closeOnEsc&&o()(window).off("keydown.zf.reveal"),!this.options.overlay&&this.options.closeOnClick&&o()("body").off("click.zf.dropdown tap.zf.dropdown"),this.$element.off("keydown.zf.reveal"),this.options.resetOnClose&&this.$element.html(this.$element.html()),this.isActive=!1,t.options.deepLink&&window.location.hash==="#".concat(this.id))if(window.history.replaceState){var n=window.location.pathname+window.location.search;this.options.updateHistory?window.history.pushState({},"",n):window.history.replaceState("",document.title,n)}else window.location.hash="";this.$activeAnchor.focus()}},{key:"toggle",value:function(){this.isActive?this.close():this.open()}},{key:"_destroy",value:function(){this.options.overlay&&(this.$element.appendTo(o()(this.options.appendTo)),this.$overlay.hide().off().remove()),this.$element.hide().off(),this.$anchor.off(".zf"),o()(window).off(".zf.reveal:".concat(this.id)),this.onLoadListener&&o()(window).off(this.onLoadListener),0===o()(".reveal:visible").length&&this._removeGlobalClasses()}}])&&h(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),y}(r.Plugin);m.defaults={animationIn:"",animationOut:"",showDelay:0,hideDelay:0,closeOnClick:!0,closeOnEsc:!0,multipleOpened:!1,vOffset:"auto",hOffset:"auto",fullScreen:!1,overlay:!0,resetOnClose:!1,deepLink:!1,updateHistory:!1,appendTo:"body",additionalOverlayClasses:""}},"./js/foundation.slider.js":function(t,e,n){n.r(e),n.d(e,{Slider:function(){return v}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.util.motion.js"),a=n("./js/foundation.core.utils.js"),l=n("./js/foundation.core.plugin.js"),u=n("./js/foundation.util.touch.js"),c=n("./js/foundation.util.triggers.js");function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function d(t,e){for(var n=0;n1?this.inputs.eq(1):o()("#".concat(this.$handle2.attr("aria-controls"))),this.inputs[1]||(this.inputs=this.inputs.add(this.$input2)),this._setInitAttr(1)),this.setHandles(),this._events(),this.initialized=!0}},{key:"setHandles",value:function(){var t=this;this.handles[1]?this._setHandlePos(this.$handle,this.inputs.eq(0).val(),(function(){t._setHandlePos(t.$handle2,t.inputs.eq(1).val())})):this._setHandlePos(this.$handle,this.inputs.eq(0).val())}},{key:"_reflow",value:function(){this.setHandles()}},{key:"_pctOfBar",value:function(t){var e=m(t-this.options.start,this.options.end-this.options.start);switch(this.options.positionValueFunction){case"pow":e=this._logTransform(e);break;case"log":e=this._powTransform(e)}return e.toFixed(2)}},{key:"_value",value:function(t){switch(this.options.positionValueFunction){case"pow":t=this._powTransform(t);break;case"log":t=this._logTransform(t)}return this.options.vertical?parseFloat(this.options.end)+t*(this.options.start-this.options.end):(this.options.end-this.options.start)*t+parseFloat(this.options.start)}},{key:"_logTransform",value:function(t){return function(t,e){return Math.log(e)/Math.log(t)}(this.options.nonLinearBase,t*(this.options.nonLinearBase-1)+1)}},{key:"_powTransform",value:function(t){return(Math.pow(this.options.nonLinearBase,t)-1)/(this.options.nonLinearBase-1)}},{key:"_setHandlePos",value:function(t,e,n){if(!this.$element.hasClass(this.options.disabledClass)){(e=parseFloat(e))this.options.end&&(e=this.options.end);var i=this.options.doubleSided;if(i)if(0===this.handles.index(t)){var o=parseFloat(this.$handle2.attr("aria-valuenow"));e=e>=o?o-this.options.step:e}else{var r=parseFloat(this.$handle.attr("aria-valuenow"));e=e<=r?r+this.options.step:e}var a=this,l=this.options.vertical,u=l?"height":"width",c=l?"top":"left",f=t[0].getBoundingClientRect()[u],d=this.$element[0].getBoundingClientRect()[u],h=this._pctOfBar(e),p=(100*m((d-f)*h,d)).toFixed(this.options.decimal);e=parseFloat(e.toFixed(this.options.decimal));var v={};if(this._setValues(t,e),i){var y,g=0===this.handles.index(t),b=Math.floor(100*m(f,d));if(g)v[c]="".concat(p,"%"),y=parseFloat(this.$handle2[0].style[c])-p+b,n&&"function"==typeof n&&n();else{var w=parseFloat(this.$handle[0].style[c]);y=p-(isNaN(w)?(this.options.initialStart-this.options.start)/((this.options.end-this.options.start)/100):w)+b}v["min-".concat(u)]="".concat(y,"%")}var k=this.$element.data("dragging")?1e3/60:this.options.moveTime;(0,s.Move)(k,t,(function(){isNaN(p)?t.css(c,"".concat(100*h,"%")):t.css(c,"".concat(p,"%")),a.options.doubleSided?a.$fill.css(v):a.$fill.css(u,"".concat(100*h,"%"))})),this.initialized&&(this.$element.one("finished.zf.animate",(function(){a.$element.trigger("moved.zf.slider",[t])})),clearTimeout(a.timeout),a.timeout=setTimeout((function(){a.$element.trigger("changed.zf.slider",[t])}),a.options.changedDelay))}}},{key:"_setInitAttr",value:function(t){var e=0===t?this.options.initialStart:this.options.initialEnd,n=this.inputs.eq(t).attr("id")||(0,a.GetYoDigits)(6,"slider");this.inputs.eq(t).attr({id:n,max:this.options.end,min:this.options.start,step:this.options.step}),this.inputs.eq(t).val(e),this.handles.eq(t).attr({role:"slider","aria-controls":n,"aria-valuemax":this.options.end,"aria-valuemin":this.options.start,"aria-valuenow":e,"aria-orientation":this.options.vertical?"vertical":"horizontal",tabindex:0})}},{key:"_setValues",value:function(t,e){var n=this.options.doubleSided?this.handles.index(t):0;this.inputs.eq(n).val(e),t.attr("aria-valuenow",e)}},{key:"_handleEvent",value:function(t,e,n){var i;if(n)i=this._adjustValue(null,n);else{t.preventDefault();var r=this.options.vertical,s=r?"height":"width",l=r?"top":"left",u=r?t.pageY:t.pageX,c=this.$element[0].getBoundingClientRect()[s],f=r?o()(window).scrollTop():o()(window).scrollLeft(),d=this.$element.offset()[l];t.clientY===t.pageY&&(u+=f);var h,p=u-d,v=m(h=p<0?0:p>c?c:p,c);i=this._value(v),(0,a.rtl)()&&!this.options.vertical&&(i=this.options.end-i),i=this._adjustValue(null,i),e||(e=y(this.$handle,l,h,s)<=y(this.$handle2,l,h,s)?this.$handle:this.$handle2)}this._setHandlePos(e,i)}},{key:"_adjustValue",value:function(t,e){var n,i,o,r=this.options.step,s=parseFloat(r/2);return 0===(i=(n=t?parseFloat(t.attr("aria-valuenow")):e)>=0?n%r:r+n%r)?n:n=n>=(o=n-i)+s?o+r:o}},{key:"_events",value:function(){this._eventsForHandle(this.$handle),this.handles[1]&&this._eventsForHandle(this.$handle2)}},{key:"_eventsForHandle",value:function(t){var e,n=this,i=function(t){var e=n.inputs.index(o()(this));n._handleEvent(t,n.handles.eq(e),o()(this).val())};if(this.inputs.off("keyup.zf.slider").on("keyup.zf.slider",(function(t){13===t.keyCode&&i.call(this,t)})),this.inputs.off("change.zf.slider").on("change.zf.slider",i),this.options.clickSelect&&this.$element.off("click.zf.slider").on("click.zf.slider",(function(t){if(n.$element.data("dragging"))return!1;o()(t.target).is("[data-slider-handle]")||(n.options.doubleSided?n._handleEvent(t):n._handleEvent(t,n.$handle))})),this.options.draggable){this.handles.addTouch();var s=o()("body");t.off("mousedown.zf.slider").on("mousedown.zf.slider",(function(i){t.addClass("is-dragging"),n.$fill.addClass("is-dragging"),n.$element.data("dragging",!0),e=o()(i.currentTarget),s.on("mousemove.zf.slider",(function(t){t.preventDefault(),n._handleEvent(t,e)})).on("mouseup.zf.slider",(function(i){n._handleEvent(i,e),t.removeClass("is-dragging"),n.$fill.removeClass("is-dragging"),n.$element.data("dragging",!1),s.off("mousemove.zf.slider mouseup.zf.slider")}))})).on("selectstart.zf.slider touchmove.zf.slider",(function(t){t.preventDefault()}))}t.off("keydown.zf.slider").on("keydown.zf.slider",(function(e){var i,s=o()(this),a=(n.options.doubleSided&&n.handles.index(s),parseFloat(t.attr("aria-valuenow")));r.Keyboard.handleKey(e,"Slider",{decrease:function(){i=a-n.options.step},increase:function(){i=a+n.options.step},decreaseFast:function(){i=a-10*n.options.step},increaseFast:function(){i=a+10*n.options.step},min:function(){i=n.options.start},max:function(){i=n.options.end},handled:function(){e.preventDefault(),n._setHandlePos(s,i)}})}))}},{key:"_destroy",value:function(){this.handles.off(".zf.slider"),this.inputs.off(".zf.slider"),this.$element.off(".zf.slider"),clearTimeout(this.timeout)}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),g}(l.Plugin);function m(t,e){return t/e}function y(t,e,n,i){return Math.abs(t.position()[e]+t[i]()/2-n)}v.defaults={start:0,end:100,step:1,initialStart:0,initialEnd:100,binding:!1,clickSelect:!0,vertical:!1,draggable:!0,disabled:!1,doubleSided:!1,decimal:2,moveTime:200,disabledClass:"disabled",invertVertical:!1,changedDelay:500,nonLinearBase:5,positionValueFunction:"linear"}},"./js/foundation.smoothScroll.js":function(t,e,n){n.r(e),n.d(e,{SmoothScroll:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js");function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function a(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:h.defaults,n=arguments.length>2?arguments[2]:void 0,i=o()(t);if(!i.length)return!1;var r=Math.round(i.offset().top-e.threshold/2-e.offset);o()("html, body").stop(!0).animate({scrollTop:r},e.animationDuration,e.animationEasing,(function(){"function"==typeof n&&n()}))}}],(n=[{key:"_setup",value:function(t,e){this.$element=t,this.options=o().extend({},h.defaults,this.$element.data(),e),this.className="SmoothScroll",this._init()}},{key:"_init",value:function(){var t=this.$element[0].id||(0,r.GetYoDigits)(6,"smooth-scroll");this.$element.attr({id:t}),this._events()}},{key:"_events",value:function(){this._linkClickListener=this._handleLinkClick.bind(this),this.$element.on("click.zf.smoothScroll",this._linkClickListener),this.$element.on("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}},{key:"_handleLinkClick",value:function(t){var e=this;if(o()(t.currentTarget).is('a[href^="#"]')){var n=t.currentTarget.getAttribute("href");this._inTransition=!0,h.scrollToLoc(n,this.options,(function(){e._inTransition=!1})),t.preventDefault()}}},{key:"_destroy",value:function(){this.$element.off("click.zf.smoothScroll",this._linkClickListener),this.$element.off("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}}])&&a(e.prototype,n),i&&a(e,i),Object.defineProperty(e,"prototype",{writable:!1}),h}(n("./js/foundation.core.plugin.js").Plugin);c.defaults={animationDuration:500,animationEasing:"linear",threshold:50,offset:0}},"./js/foundation.sticky.js":function(t,e,n){n.r(e),n.d(e,{Sticky:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.mediaQuery.js"),l=n("./js/foundation.util.triggers.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n=n.topPoint))})),n._events(e.split("-").reverse().join("-"))}))}},{key:"_parsePoints",value:function(){for(var t=[""===this.options.topAnchor?1:this.options.topAnchor,""===this.options.btmAnchor?document.documentElement.scrollHeight:this.options.btmAnchor],e={},n=0,i=t.length;n=this.topPoint?e<=this.bottomPoint?this.isStuck||this._setSticky():this.isStuck&&this._removeSticky(!1):this.isStuck&&this._removeSticky(!0)}},{key:"_setSticky",value:function(){var t=this,e=this.options.stickTo,n="top"===e?"marginTop":"marginBottom",i="top"===e?"bottom":"top",o={};o[n]="".concat(this.options[n],"em"),o[e]=0,o[i]="auto",this.isStuck=!0,this.$element.removeClass("is-anchored is-at-".concat(i)).addClass("is-stuck is-at-".concat(e)).css(o).trigger("sticky.zf.stuckto:".concat(e)),this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",(function(){t._setSizes()}))}},{key:"_removeSticky",value:function(t){var e=this.options.stickTo,n="top"===e,i={},o=(this.points?this.points[1]-this.points[0]:this.anchorHeight)-this.elemHeight,r=t?"top":"bottom";i[n?"marginTop":"marginBottom"]=0,i.bottom="auto",i.top=t?0:o,this.isStuck=!1,this.$element.removeClass("is-stuck is-at-".concat(e)).addClass("is-anchored is-at-".concat(r)).css(i).trigger("sticky.zf.unstuckfrom:".concat(r))}},{key:"_setSizes",value:function(t){this.canStick=a.MediaQuery.is(this.options.stickyOn),this.canStick||t&&"function"==typeof t&&t();var e=this.$container[0].getBoundingClientRect().width,n=window.getComputedStyle(this.$container[0]),i=parseInt(n["padding-left"],10),o=parseInt(n["padding-right"],10);if(this.$anchor&&this.$anchor.length?this.anchorHeight=this.$anchor[0].getBoundingClientRect().height:this._parsePoints(),this.$element.css({"max-width":"".concat(e-i-o,"px")}),this.options.dynamicHeight||!this.containerHeight){var r=this.$element[0].getBoundingClientRect().height||this.containerHeight;r="none"===this.$element.css("display")?0:r,this.$container.css("height",r),this.containerHeight=r}if(this.elemHeight=this.containerHeight,!this.isStuck&&this.$element.hasClass("is-at-bottom")){var s=(this.points?this.points[1]-this.$container.offset().top:this.anchorHeight)-this.elemHeight;this.$element.css("top",s)}this._setBreakPoints(this.containerHeight,(function(){t&&"function"==typeof t&&t()}))}},{key:"_setBreakPoints",value:function(t,e){if(!this.canStick){if(!e||"function"!=typeof e)return!1;e()}var n=p(this.options.marginTop),i=p(this.options.marginBottom),o=this.points?this.points[0]:this.$anchor.offset().top,r=this.points?this.points[1]:o+this.anchorHeight,s=window.innerHeight;"top"===this.options.stickTo?(o-=n,r-=t+n):"bottom"===this.options.stickTo&&(o-=s-(t+i),r-=s-i),this.topPoint=o,this.bottomPoint=r,e&&"function"==typeof e&&e()}},{key:"_destroy",value:function(){this._removeSticky(!0),this.$element.removeClass("".concat(this.options.stickyClass," is-anchored is-at-top")).css({height:"",top:"",bottom:"","max-width":""}).off("resizeme.zf.trigger").off("mutateme.zf.trigger"),this.$anchor&&this.$anchor.length&&this.$anchor.off("change.zf.sticky"),this.scrollListener&&o()(window).off(this.scrollListener),this.onLoadListener&&o()(window).off(this.onLoadListener),this.wasWrapped?this.$element.unwrap():this.$container.removeClass(this.options.containerClass).css({height:""})}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(r.Plugin);function p(t){return parseInt(window.getComputedStyle(document.body,null).fontSize,10)*t}h.defaults={container:"
          ",stickTo:"top",anchor:"",topAnchor:"",btmAnchor:"",marginTop:1,marginBottom:1,stickyOn:"medium",stickyClass:"sticky",containerClass:"sticky-container",dynamicHeight:!0,checkEvery:-1}},"./js/foundation.tabs.js":function(t,e,n){n.r(e),n.d(e,{Tabs:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js"),l=n("./js/foundation.util.imageLoader.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n=0?e.slice(1):e,i=n&&o()("#".concat(n)),r=e&&t.$element.find('[href$="'.concat(e,'"],[data-tabs-target="').concat(n,'"]')).first();if(i.length&&r.length){if(i&&i.length&&r&&r.length?t.selectTab(i,!0):t._collapse(),t.options.deepLinkSmudge){var s=t.$element.offset();o()("html, body").animate({scrollTop:s.top-t.options.deepLinkSmudgeOffset},t.options.deepLinkSmudgeDelay)}t.$element.trigger("deeplink.zf.tabs",[r,i])}},this.options.deepLink&&this._checkDeepLink(),this._events(),this._isInitializing=!1}},{key:"_events",value:function(){this._addKeyHandler(),this._addClickHandler(),this._setHeightMqHandler=null,this.options.matchHeight&&(this._setHeightMqHandler=this._setHeight.bind(this),o()(window).on("changed.zf.mediaquery",this._setHeightMqHandler)),this.options.deepLink&&o()(window).on("hashchange",this._checkDeepLink)}},{key:"_addClickHandler",value:function(){var t=this;this.$element.off("click.zf.tabs").on("click.zf.tabs",".".concat(this.options.linkClass),(function(e){e.preventDefault(),t._handleTabChange(o()(this))}))}},{key:"_addKeyHandler",value:function(){var t=this;this.$tabTitles.off("keydown.zf.tabs").on("keydown.zf.tabs",(function(e){if(9!==e.which){var n,i,r=o()(this),s=r.parent("ul").children("li");s.each((function(e){o()(this).is(r)&&(t.options.wrapOnKeys?(n=0===e?s.last():s.eq(e-1),i=e===s.length-1?s.first():s.eq(e+1)):(n=s.eq(Math.max(0,e-1)),i=s.eq(Math.min(e+1,s.length-1))))})),a.Keyboard.handleKey(e,"Tabs",{open:function(){r.find('[role="tab"]').focus(),t._handleTabChange(r)},previous:function(){n.find('[role="tab"]').focus(),t._handleTabChange(n)},next:function(){i.find('[role="tab"]').focus(),t._handleTabChange(i)},handled:function(){e.preventDefault()}})}}))}},{key:"_handleTabChange",value:function(t,e){if(t.hasClass("".concat(this.options.linkActiveClass)))this.options.activeCollapse&&this._collapse();else{var n=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass)),i=t.find('[role="tab"]'),o=i.attr("data-tabs-target"),r=o&&o.length?"#".concat(o):i[0].hash,s=this.$tabContent.find(r);this._collapseTab(n),this._openTab(t),this.options.deepLink&&!e&&(this.options.updateHistory?history.pushState({},"",r):history.replaceState({},"",r)),this.$element.trigger("change.zf.tabs",[t,s]),s.find("[data-mutate]").trigger("mutateme.zf.trigger")}}},{key:"_openTab",value:function(t){var e=t.find('[role="tab"]'),n=e.attr("data-tabs-target")||e[0].hash.slice(1),i=this.$tabContent.find("#".concat(n));t.addClass("".concat(this.options.linkActiveClass)),e.attr({"aria-selected":"true",tabindex:"0"}),i.addClass("".concat(this.options.panelActiveClass)).removeAttr("aria-hidden")}},{key:"_collapseTab",value:function(t){var e=t.removeClass("".concat(this.options.linkActiveClass)).find('[role="tab"]').attr({"aria-selected":"false",tabindex:-1});o()("#".concat(e.attr("aria-controls"))).removeClass("".concat(this.options.panelActiveClass)).attr({"aria-hidden":"true"})}},{key:"_collapse",value:function(){var t=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass));t.length&&(this._collapseTab(t),this.$element.trigger("collapse.zf.tabs",[t]))}},{key:"selectTab",value:function(t,e){var n,i;(n="object"===u(t)?t[0].id:t).indexOf("#")<0?i="#".concat(n):(i=n,n=n.slice(1));var o=this.$tabTitles.has('[href$="'.concat(i,'"],[data-tabs-target="').concat(n,'"]')).first();this._handleTabChange(o,e)}},{key:"_setHeight",value:function(){var t=0,e=this;this.$tabContent&&this.$tabContent.find(".".concat(this.options.panelClass)).css("min-height","").each((function(){var n=o()(this),i=n.hasClass("".concat(e.options.panelActiveClass));i||n.css({visibility:"hidden",display:"block"});var r=this.getBoundingClientRect().height;i||n.css({visibility:"",display:""}),t=r>t?r:t})).css("min-height","".concat(t,"px"))}},{key:"_destroy",value:function(){this.$element.find(".".concat(this.options.linkClass)).off(".zf.tabs").hide().end().find(".".concat(this.options.panelClass)).hide(),this.options.matchHeight&&null!=this._setHeightMqHandler&&o()(window).off("changed.zf.mediaquery",this._setHeightMqHandler),this.options.deepLink&&o()(window).off("hashchange",this._checkDeepLink),this.onLoadListener&&o()(window).off(this.onLoadListener)}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),p}(r.Plugin);h.defaults={deepLink:!1,deepLinkSmudge:!1,deepLinkSmudgeDelay:300,deepLinkSmudgeOffset:0,updateHistory:!1,autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,activeCollapse:!1,linkClass:"tabs-title",linkActiveClass:"is-active",panelClass:"tabs-panel",panelActiveClass:"is-active"}},"./js/foundation.toggler.js":function(t,e,n){n.r(e),n.d(e,{Toggler:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.motion.js"),s=n("./js/foundation.core.plugin.js"),a=n("./js/foundation.core.utils.js"),l=n("./js/foundation.util.triggers.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n").addClass(e).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:t})}},{key:"_setPosition",value:function(){c(d(v.prototype),"_setPosition",this).call(this,this.$element,this.template)}},{key:"show",value:function(){if("all"!==this.options.showOn&&!s.MediaQuery.is(this.options.showOn))return!1;this.template.css("visibility","hidden").show(),this._setPosition(),this.template.removeClass("top bottom left right").addClass(this.position),this.template.removeClass("align-top align-bottom align-left align-right align-center").addClass("align-"+this.alignment),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),this.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,(function(){})),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,(function(){t.isActive=!1,t.isClick=!1})),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var t=this,e="ontouchstart"in window||void 0!==window.ontouchstart,n=!1;e&&this.options.disableForTouch||(this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",(function(){t.isActive||(t.timeout=setTimeout((function(){t.show()}),t.options.hoverDelay))})).on("mouseleave.zf.tooltip",(0,r.ignoreMousedisappear)((function(){clearTimeout(t.timeout),(!n||t.isClick&&!t.options.clickOpen)&&t.hide()}))),e&&this.$element.on("tap.zf.tooltip touchend.zf.tooltip",(function(){t.isActive?t.hide():t.show()})),this.options.clickOpen?this.$element.on("mousedown.zf.tooltip",(function(){t.isClick||(t.isClick=!0,!t.options.disableHover&&t.$element.attr("tabindex")||t.isActive||t.show())})):this.$element.on("mousedown.zf.tooltip",(function(){t.isClick=!0})),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",(function(){if(n=!0,t.isClick)return t.options.clickOpen||(n=!1),!1;t.show()})).on("focusout.zf.tooltip",(function(){n=!1,t.isClick=!1,t.hide()})).on("resizeme.zf.trigger",(function(){t.isActive&&t._setPosition()})))}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"_destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tooltip").removeClass(this.options.triggerClass).removeClass("top right left bottom").removeAttr("aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box"),this.template.remove()}}])&&u(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(n("./js/foundation.positionable.js").Positionable);h.defaults={hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,disableForTouch:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,position:"auto",alignment:"auto",allowOverlap:!1,allowBottomOverlap:!1,vOffset:0,hOffset:0,tooltipHeight:14,tooltipWidth:12,allowHtml:!1}},"./js/foundation.util.box.js":function(t,e,n){n.r(e),n.d(e,{Box:function(){return i}});var i={ImNotTouchingYou:function(t,e,n,i,r){return 0===o(t,e,n,i,r)},OverlapArea:o,GetDimensions:r,GetExplicitOffsets:function(t,e,n,i,o,s,a){var l,u,c=r(t),f=e?r(e):null;if(null!==f){switch(n){case"top":l=f.offset.top-(c.height+o);break;case"bottom":l=f.offset.top+f.height+o;break;case"left":u=f.offset.left-(c.width+s);break;case"right":u=f.offset.left+f.width+s}switch(n){case"top":case"bottom":switch(i){case"left":u=f.offset.left+s;break;case"right":u=f.offset.left-c.width+f.width-s;break;case"center":u=a?s:f.offset.left+f.width/2-c.width/2+s}break;case"right":case"left":switch(i){case"bottom":l=f.offset.top-o+f.height-c.height;break;case"top":l=f.offset.top+o;break;case"center":l=f.offset.top+o+f.height/2-c.height/2}}}return{top:l,left:u}}};function o(t,e,n,i,o){var s,a,l,u,c=r(t);if(e){var f=r(e);a=f.height+f.offset.top-(c.offset.top+c.height),s=c.offset.top-f.offset.top,l=c.offset.left-f.offset.left,u=f.width+f.offset.left-(c.offset.left+c.width)}else a=c.windowDims.height+c.windowDims.offset.top-(c.offset.top+c.height),s=c.offset.top-c.windowDims.offset.top,l=c.offset.left-c.windowDims.offset.left,u=c.windowDims.width-(c.offset.left+c.width);return a=o?0:Math.min(a,0),s=Math.min(s,0),l=Math.min(l,0),u=Math.min(u,0),n?l+u:i?s+a:Math.sqrt(s*s+a*a+l*l+u*u)}function r(t){if((t=t.length?t[0]:t)===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var e=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),i=document.body.getBoundingClientRect(),o=window.pageYOffset,r=window.pageXOffset;return{width:e.width,height:e.height,offset:{top:e.top+o,left:e.left+r},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+r}},windowDims:{width:i.width,height:i.height,offset:{top:o,left:r}}}}},"./js/foundation.util.imageLoader.js":function(t,e,n){n.r(e),n.d(e,{onImagesLoaded:function(){return r}});var i=n("jquery"),o=n.n(i);function r(t,e){var n=t.length;function i(){0==--n&&e()}0===n&&e(),t.each((function(){if(this.complete&&void 0!==this.naturalWidth)i();else{var t=new Image,e="load.zf.images error.zf.images";o()(t).one(e,(function t(){o()(this).off(e,t),i()})),t.src=o()(this).attr("src")}}))}},"./js/foundation.util.keyboard.js":function(t,e,n){n.r(e),n.d(e,{Keyboard:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",35:"END",36:"HOME",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},a={};function l(t){return!!t&&t.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter((function(){return!(!o()(this).is(":visible")||o()(this).attr("tabindex")<0)})).sort((function(t,e){if(o()(t).attr("tabindex")===o()(e).attr("tabindex"))return 0;var n=parseInt(o()(t).attr("tabindex"),10),i=parseInt(o()(e).attr("tabindex"),10);return void 0===o()(t).attr("tabindex")&&i>0?1:void 0===o()(e).attr("tabindex")&&n>0?-1:0===n&&i>0?1:0===i&&n>0||ni?1:void 0}))}function u(t){var e=s[t.which||t.keyCode]||String.fromCharCode(t.which).toUpperCase();return e=e.replace(/\W+/,""),t.shiftKey&&(e="SHIFT_".concat(e)),t.ctrlKey&&(e="CTRL_".concat(e)),t.altKey&&(e="ALT_".concat(e)),e.replace(/_$/,"")}var c={keys:function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[t[n]]=t[n]);return e}(s),parseKey:u,handleKey:function(t,e,n){var i,s=a[e],l=this.parseKey(t);if(!s)return console.warn("Component not defined!");if(!0!==t.zfIsKeyHandled)if((i=n[(void 0===s.ltr?s:(0,r.rtl)()?o().extend({},s.ltr,s.rtl):o().extend({},s.rtl,s.ltr))[l]])&&"function"==typeof i){var u=i.apply();t.zfIsKeyHandled=!0,(n.handled||"function"==typeof n.handled)&&n.handled(u)}else(n.unhandled||"function"==typeof n.unhandled)&&n.unhandled()},findFocusable:l,register:function(t,e){a[t]=e},trapFocus:function(t){var e=l(t),n=e.eq(0),i=e.eq(-1);t.on("keydown.zf.trapfocus",(function(t){t.target===i[0]&&"TAB"===u(t)?(t.preventDefault(),n.focus()):t.target===n[0]&&"SHIFT_TAB"===u(t)&&(t.preventDefault(),i.focus())}))},releaseFocus:function(t){t.off("keydown.zf.trapfocus")}}},"./js/foundation.util.mediaQuery.js":function(t,e,n){n.r(e),n.d(e,{MediaQuery:function(){return a}});var i=n("jquery"),o=n.n(i);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n').appendTo(document.head);var t,e,n,i=o()(".foundation-mq").css("font-family");for(var r in n=void 0,n={},t="string"!=typeof(e=i)?n:(e=e.trim().slice(1,-1))?(n=e.split("&").reduce((function(t,e){var n=e.replace(/\+/g," ").split("="),i=n[0],o=n[1];return i=decodeURIComponent(i),o=void 0===o?null:decodeURIComponent(o),t.hasOwnProperty(i)?Array.isArray(t[i])?t[i].push(o):t[i]=[t[i],o]:t[i]=o,t}),{}),n):n,this.queries=[],t)t.hasOwnProperty(r)&&this.queries.push({name:r,value:"only screen and (min-width: ".concat(t[r],")")});this.current=this._getCurrentSize(),this._watcher()},_reInit:function(){this.isInitialized=!1,this._init()},atLeast:function(t){var e=this.get(t);return!!e&&window.matchMedia(e).matches},only:function(t){return t===this._getCurrentSize()},upTo:function(t){var e=this.next(t);return!e||!this.atLeast(e)},is:function(t){var e,n,i=(e=t.trim().split(" ").filter((function(t){return!!t.length})),n=2,function(t){if(Array.isArray(t))return t}(e)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,o,r,s,a=[],l=!0,u=!1;try{if(r=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=r.call(n)).done)&&(a.push(i.value),a.length!==e);l=!0);}catch(t){u=!0,o=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(u)throw o}}return a}}(e,n)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(t,e):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=i[0],r=i[1],a=void 0===r?"":r;if("only"===a)return this.only(o);if(!a||"up"===a)return this.atLeast(o);if("down"===a)return this.upTo(o);throw new Error('\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like " ", got "'.concat(t,'".\n '))},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var n=this.queries[e];if(t===n.name)return n.value}return null},next:function(t){var e=this,n=this.queries.findIndex((function(n){return e._getQueryName(n)===t}));if(-1===n)throw new Error('\n Unknown breakpoint "'.concat(t,'" passed to MediaQuery.next().\n Ensure it is present in your Sass "$breakpoints" setting.\n '));var i=this.queries[n+1];return i?i.name:null},_getQueryName:function(t){if("string"==typeof t)return t;if("object"===r(t))return t.name;throw new TypeError('\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got "'.concat(t,'" (').concat(r(t),")\n "))},_getCurrentSize:function(){for(var t,e=0;e1&&void 0!==arguments[1]?arguments[1]:"zf";t.attr("role","menubar"),t.find("a").attr({role:"menuitem"});var n=t.find("li").attr({role:"none"}),i="is-".concat(e,"-submenu"),r="".concat(i,"-item"),s="is-".concat(e,"-submenu-parent"),a="accordion"!==e;n.each((function(){var t=o()(this),n=t.children("ul");if(n.length){if(t.addClass(s),a){var l=t.children("a:first");l.attr({"aria-haspopup":!0,"aria-label":l.attr("aria-label")||l.text()}),"drilldown"===e&&t.attr({"aria-expanded":!1})}n.addClass("submenu ".concat(i)).attr({"data-submenu":"",role:"menubar"}),"drilldown"===e&&n.attr({"aria-hidden":!0})}t.parent("[data-submenu]").length&&t.addClass("is-submenu-item ".concat(r))}))},Burn:function(t,e){var n="is-".concat(e,"-submenu"),i="".concat(n,"-item"),o="is-".concat(e,"-submenu-parent");t.find(">li, > li > ul, .menu, .menu > li, [data-submenu] > li").removeClass("".concat(n," ").concat(i," ").concat(o," is-submenu-item submenu is-active")).removeAttr("data-submenu").css("display","")}}},"./js/foundation.util.timer.js":function(t,e,n){function i(t,e,n){var i,o,r=this,s=e.duration,a=Object.keys(t.data())[0]||"timer",l=-1;this.isPaused=!1,this.restart=function(){l=-1,clearTimeout(o),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(o),l=l<=0?s:l,t.data("paused",!1),i=Date.now(),o=setTimeout((function(){e.infinite&&r.restart(),n&&"function"==typeof n&&n()}),l),t.trigger("timerstart.zf.".concat(a))},this.pause=function(){this.isPaused=!0,clearTimeout(o),t.data("paused",!0);var e=Date.now();l-=e-i,t.trigger("timerpaused.zf.".concat(a))}}n.r(e),n.d(e,{Timer:function(){return i}})},"./js/foundation.util.touch.js":function(t,e,n){n.r(e),n.d(e,{Touch:function(){return f}});var i=n("jquery"),o=n.n(i);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function s(t,e){for(var n=0;n=o().spotSwipe.moveThreshold&&u<=o().spotSwipe.timeThreshold&&(e=i>0?"left":"right"),e&&(t.preventDefault(),p.apply(this,arguments),o()(this).trigger(o().Event("swipe",Object.assign({},t)),e).trigger(o().Event("swipe".concat(e),Object.assign({},t))))}}function m(t){1===t.touches.length&&(a=t.touches[0].pageX,c=t,d=!0,h=!1,l=(new Date).getTime(),this.addEventListener("touchmove",v,{passive:!0===o().spotSwipe.preventDefault}),this.addEventListener("touchend",p,!1))}function y(){this.addEventListener&&this.addEventListener("touchstart",m,{passive:!0})}var g=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.version="1.0.0",this.enabled="ontouchstart"in document.documentElement,this.preventDefault=!1,this.moveThreshold=75,this.timeThreshold=200,this._init()}var e,n;return e=t,(n=[{key:"_init",value:function(){o().event.special.swipe={setup:y},o().event.special.tap={setup:y},o().each(["left","up","down","right"],(function(){o().event.special["swipe".concat(this)]={setup:function(){o()(this).on("swipe",o().noop)}}}))}}])&&s(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();f.setupSpotSwipe=function(){o().spotSwipe=new g(o())},f.setupTouchHandler=function(){o().fn.addTouch=function(){this.each((function(e,n){o()(n).bind("touchstart touchmove touchend touchcancel",(function(e){t(e)}))}));var t=function(t){var e,n=t.changedTouches[0],i={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"}[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=new window.MouseEvent(i,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(e)}}},f.init=function(){void 0===o().spotSwipe&&(f.setupSpotSwipe(o()),f.setupTouchHandler(o()))}},"./js/foundation.util.triggers.js":function(t,e,n){n.r(e),n.d(e,{Triggers:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.motion.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var l=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e0&&e-1 in t)}function S(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}C.fn=C.prototype={jquery:_,constructor:C,length:0,toArray:function(){return a.call(this)},get:function(t){return null==t?a.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=C.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return C.each(this,t)},map:function(t){return this.pushStack(C.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return this.pushStack(a.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(C.grep(this,(function(t,e){return(e+1)%2})))},odd:function(){return this.pushStack(C.grep(this,(function(t,e){return e%2})))},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n+~]|"+P+")"+P+"*"),F=new RegExp(P+"|>"),N=new RegExp(M),B=new RegExp("^"+A+"$"),W={ID:new RegExp("^#("+A+")"),CLASS:new RegExp("^\\.("+A+")"),TAG:new RegExp("^("+A+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+M),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:new RegExp("^(?:"+x+")$","i"),needsContext:new RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},Q=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,G=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Y=/[+~]/,U=new RegExp("\\\\[\\da-fA-F]{1,6}"+P+"?|\\\\([^\\r\\n\\f])","g"),V=function(t,e){var n="0x"+t.slice(1)-65536;return e||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},X=function(){lt()},Z=dt((function(t){return!0===t.disabled&&S(t,"fieldset")}),{dir:"parentNode",next:"legend"});try{v.apply(r=a.call(D.childNodes),D.childNodes),r[D.childNodes.length].nodeType}catch(t){v={apply:function(t,e){L.apply(t,a.call(e))},call:function(t){L.apply(t,a.call(arguments,1))}}}function J(t,e,n,i){var o,r,s,a,u,c,h,p=e&&e.ownerDocument,g=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==g&&9!==g&&11!==g)return n;if(!i&&(lt(e),e=e||l,f)){if(11!==g&&(u=G.exec(t)))if(o=u[1]){if(9===g){if(!(s=e.getElementById(o)))return n;if(s.id===o)return v.call(n,s),n}else if(p&&(s=p.getElementById(o))&&J.contains(e,s)&&s.id===o)return v.call(n,s),n}else{if(u[2])return v.apply(n,e.getElementsByTagName(t)),n;if((o=u[3])&&e.getElementsByClassName)return v.apply(n,e.getElementsByClassName(o)),n}if(!(_[t+" "]||d&&d.test(t))){if(h=t,p=e,1===g&&(F.test(t)||I.test(t))){for((p=Y.test(t)&&at(e.parentNode)||e)==e&&m.scope||((a=e.getAttribute("id"))?a=C.escapeSelector(a):e.setAttribute("id",a=y)),r=(c=ct(t)).length;r--;)c[r]=(a?"#"+a:":scope")+" "+ft(c[r]);h=c.join(",")}try{return v.apply(n,p.querySelectorAll(h)),n}catch(e){_(t,!0)}finally{a===y&&e.removeAttribute("id")}}}return gt(t.replace(z,"$1"),e,n,i)}function tt(){var t=[];return function n(i,o){return t.push(i+" ")>e.cacheLength&&delete n[t.shift()],n[i+" "]=o}}function et(t){return t[y]=!0,t}function nt(t){var e=l.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function it(t){return function(e){return S(e,"input")&&e.type===t}}function ot(t){return function(e){return(S(e,"input")||S(e,"button"))&&e.type===t}}function rt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&Z(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function st(t){return et((function(e){return e=+e,et((function(n,i){for(var o,r=t([],n.length,e),s=r.length;s--;)n[o=r[s]]&&(n[o]=!(i[o]=n[o]))}))}))}function at(t){return t&&void 0!==t.getElementsByTagName&&t}function lt(t){var n,i=t?t.ownerDocument||t:D;return i!=l&&9===i.nodeType&&i.documentElement?(u=(l=i).documentElement,f=!C.isXMLDoc(l),p=u.matches||u.webkitMatchesSelector||u.msMatchesSelector,u.msMatchesSelector&&D!=l&&(n=l.defaultView)&&n.top!==n&&n.addEventListener("unload",X),m.getById=nt((function(t){return u.appendChild(t).id=C.expando,!l.getElementsByName||!l.getElementsByName(C.expando).length})),m.disconnectedMatch=nt((function(t){return p.call(t,"*")})),m.scope=nt((function(){return l.querySelectorAll(":scope")})),m.cssHas=nt((function(){try{return l.querySelector(":has(*,:jqfake)"),!1}catch(t){return!0}})),m.getById?(e.filter.ID=function(t){var e=t.replace(U,V);return function(t){return t.getAttribute("id")===e}},e.find.ID=function(t,e){if(void 0!==e.getElementById&&f){var n=e.getElementById(t);return n?[n]:[]}}):(e.filter.ID=function(t){var e=t.replace(U,V);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},e.find.ID=function(t,e){if(void 0!==e.getElementById&&f){var n,i,o,r=e.getElementById(t);if(r){if((n=r.getAttributeNode("id"))&&n.value===t)return[r];for(o=e.getElementsByName(t),i=0;r=o[i++];)if((n=r.getAttributeNode("id"))&&n.value===t)return[r]}return[]}}),e.find.TAG=function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):e.querySelectorAll(t)},e.find.CLASS=function(t,e){if(void 0!==e.getElementsByClassName&&f)return e.getElementsByClassName(t)},d=[],nt((function(t){var e;u.appendChild(t).innerHTML="",t.querySelectorAll("[selected]").length||d.push("\\["+P+"*(?:value|"+x+")"),t.querySelectorAll("[id~="+y+"-]").length||d.push("~="),t.querySelectorAll("a#"+y+"+*").length||d.push(".#.+[+~]"),t.querySelectorAll(":checked").length||d.push(":checked"),(e=l.createElement("input")).setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),u.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(e=l.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||d.push("\\["+P+"*name"+P+"*="+P+"*(?:''|\"\")")})),m.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),$=function(t,e){if(t===e)return s=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(1&(n=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!m.sortDetached&&e.compareDocumentPosition(t)===n?t===l||t.ownerDocument==D&&J.contains(D,t)?-1:e===l||e.ownerDocument==D&&J.contains(D,e)?1:o?c.call(o,t)-c.call(o,e):0:4&n?-1:1)},l):l}for(t in J.matches=function(t,e){return J(t,null,null,e)},J.matchesSelector=function(t,e){if(lt(t),f&&!_[e+" "]&&(!d||!d.test(e)))try{var n=p.call(t,e);if(n||m.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){_(e,!0)}return J(e,l,null,[t]).length>0},J.contains=function(t,e){return(t.ownerDocument||t)!=l&<(t),C.contains(t,e)},J.attr=function(t,n){(t.ownerDocument||t)!=l&<(t);var i=e.attrHandle[n.toLowerCase()],o=i&&h.call(e.attrHandle,n.toLowerCase())?i(t,n,!f):void 0;return void 0!==o?o:t.getAttribute(n)},J.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},C.uniqueSort=function(t){var e,n=[],i=0,r=0;if(s=!m.sortStable,o=!m.sortStable&&a.call(t,0),T.call(t,$),s){for(;e=t[r++];)e===t[r]&&(i=n.push(r));for(;i--;)E.call(t,n[i],1)}return o=null,t},C.fn.uniqueSort=function(){return this.pushStack(C.uniqueSort(a.apply(this)))},e=C.expr={cacheLength:50,createPseudo:et,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(U,V),t[3]=(t[3]||t[4]||t[5]||"").replace(U,V),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||J.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&J.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return W.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&N.test(n)&&(e=ct(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(U,V).toLowerCase();return"*"===t?function(){return!0}:function(t){return S(t,e)}},CLASS:function(t){var e=w[t+" "];return e||(e=new RegExp("(^|"+P+")"+t+"("+P+"|$)"))&&w(t,(function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")}))},ATTR:function(t,e,n){return function(i){var o=J.attr(i,t);return null==o?"!="===e:!e||(o+="","="===e?o===n:"!="===e?o!==n:"^="===e?n&&0===o.indexOf(n):"*="===e?n&&o.indexOf(n)>-1:"$="===e?n&&o.slice(-n.length)===n:"~="===e?(" "+o.replace(H," ")+" ").indexOf(n)>-1:"|="===e&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,n,i,o){var r="nth"!==t.slice(0,3),s="last"!==t.slice(-4),a="of-type"===e;return 1===i&&0===o?function(t){return!!t.parentNode}:function(e,n,l){var u,c,f,d,h,p=r!==s?"nextSibling":"previousSibling",v=e.parentNode,m=a&&e.nodeName.toLowerCase(),b=!l&&!a,w=!1;if(v){if(r){for(;p;){for(f=e;f=f[p];)if(a?S(f,m):1===f.nodeType)return!1;h=p="only"===t&&!h&&"nextSibling"}return!0}if(h=[s?v.firstChild:v.lastChild],s&&b){for(w=(d=(u=(c=v[y]||(v[y]={}))[t]||[])[0]===g&&u[1])&&u[2],f=d&&v.childNodes[d];f=++d&&f&&f[p]||(w=d=0)||h.pop();)if(1===f.nodeType&&++w&&f===e){c[t]=[g,d,w];break}}else if(b&&(w=d=(u=(c=e[y]||(e[y]={}))[t]||[])[0]===g&&u[1]),!1===w)for(;(f=++d&&f&&f[p]||(w=d=0)||h.pop())&&(!(a?S(f,m):1===f.nodeType)||!++w||(b&&((c=f[y]||(f[y]={}))[t]=[g,w]),f!==e)););return(w-=o)===i||w%i==0&&w/i>=0}}},PSEUDO:function(t,n){var i,o=e.pseudos[t]||e.setFilters[t.toLowerCase()]||J.error("unsupported pseudo: "+t);return o[y]?o(n):o.length>1?(i=[t,t,"",n],e.setFilters.hasOwnProperty(t.toLowerCase())?et((function(t,e){for(var i,r=o(t,n),s=r.length;s--;)t[i=c.call(t,r[s])]=!(e[i]=r[s])})):function(t){return o(t,0,i)}):o}},pseudos:{not:et((function(t){var e=[],n=[],i=yt(t.replace(z,"$1"));return i[y]?et((function(t,e,n,o){for(var r,s=i(t,null,o,[]),a=t.length;a--;)(r=s[a])&&(t[a]=!(e[a]=r))})):function(t,o,r){return e[0]=t,i(e,null,r,n),e[0]=null,!n.pop()}})),has:et((function(t){return function(e){return J(t,e).length>0}})),contains:et((function(t){return t=t.replace(U,V),function(e){return(e.textContent||C.text(e)).indexOf(t)>-1}})),lang:et((function(t){return B.test(t||"")||J.error("unsupported lang: "+t),t=t.replace(U,V).toLowerCase(),function(e){var n;do{if(n=f?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}})),target:function(t){var e=i.location&&i.location.hash;return e&&e.slice(1)===t.id},root:function(t){return t===u},focus:function(t){return t===function(){try{return l.activeElement}catch(t){}}()&&l.hasFocus()&&!!(t.type||t.href||~t.tabIndex)},enabled:rt(!1),disabled:rt(!0),checked:function(t){return S(t,"input")&&!!t.checked||S(t,"option")&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!e.pseudos.empty(t)},header:function(t){return K.test(t.nodeName)},input:function(t){return Q.test(t.nodeName)},button:function(t){return S(t,"input")&&"button"===t.type||S(t,"button")},text:function(t){var e;return S(t,"input")&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:st((function(){return[0]})),last:st((function(t,e){return[e-1]})),eq:st((function(t,e,n){return[n<0?n+e:n]})),even:st((function(t,e){for(var n=0;ne?e:n;--i>=0;)t.push(i);return t})),gt:st((function(t,e,n){for(var i=n<0?n+e:n;++i1?function(e,n,i){for(var o=t.length;o--;)if(!t[o](e,n,i))return!1;return!0}:t[0]}function pt(t,e,n,i,o){for(var r,s=[],a=0,l=t.length,u=null!=e;a-1&&(r[u]=!(s[u]=d))}}else h=pt(h===s?h.splice(y,h.length):h),o?o(null,s,h,l):v.apply(s,h)}))}function mt(t){for(var i,o,r,s=t.length,a=e.relative[t[0].type],l=a||e.relative[" "],u=a?1:0,f=dt((function(t){return t===i}),l,!0),d=dt((function(t){return c.call(i,t)>-1}),l,!0),h=[function(t,e,o){var r=!a&&(o||e!=n)||((i=e).nodeType?f(t,e,o):d(t,e,o));return i=null,r}];u1&&ht(h),u>1&&ft(t.slice(0,u-1).concat({value:" "===t[u-2].type?"*":""})).replace(z,"$1"),o,u0,r=t.length>0,s=function(s,a,u,c,d){var h,p,m,y=0,b="0",w=s&&[],k=[],j=n,_=s||r&&e.find.TAG("*",d),$=g+=null==j?1:Math.random()||.1,x=_.length;for(d&&(n=a==l||a||d);b!==x&&null!=(h=_[b]);b++){if(r&&h){for(p=0,a||h.ownerDocument==l||(lt(h),u=!f);m=t[p++];)if(m(h,a||l,u)){v.call(c,h);break}d&&(g=$)}o&&((h=!m&&h)&&y--,s&&w.push(h))}if(y+=b,o&&b!==y){for(p=0;m=i[p++];)m(w,k,a,u);if(s){if(y>0)for(;b--;)w[b]||k[b]||(k[b]=O.call(c));k=pt(k)}v.apply(c,k),d&&!s&&k.length>0&&y+i.length>1&&C.uniqueSort(c)}return d&&(g=$,n=j),w};return o?et(s):s}(s,r)),a.selector=t}return a}function gt(t,n,i,o){var r,s,a,l,u,c="function"==typeof t&&t,d=!o&&ct(t=c.selector||t);if(i=i||[],1===d.length){if((s=d[0]=d[0].slice(0)).length>2&&"ID"===(a=s[0]).type&&9===n.nodeType&&f&&e.relative[s[1].type]){if(!(n=(e.find.ID(a.matches[0].replace(U,V),n)||[])[0]))return i;c&&(n=n.parentNode),t=t.slice(s.shift().value.length)}for(r=W.needsContext.test(t)?0:s.length;r--&&(a=s[r],!e.relative[l=a.type]);)if((u=e.find[l])&&(o=u(a.matches[0].replace(U,V),Y.test(s[0].type)&&at(n.parentNode)||n))){if(s.splice(r,1),!(t=o.length&&ft(s)))return v.apply(i,o),i;break}}return(c||yt(t,d))(o,n,!f,i,!n||Y.test(t)&&at(n.parentNode)||n),i}ut.prototype=e.filters=e.pseudos,e.setFilters=new ut,m.sortStable=y.split("").sort($).join("")===y,lt(),m.sortDetached=nt((function(t){return 1&t.compareDocumentPosition(l.createElement("fieldset"))})),C.find=J,C.expr[":"]=C.expr.pseudos,C.unique=C.uniqueSort,J.compile=yt,J.select=gt,J.setDocument=lt,J.tokenize=ct,J.escape=C.escapeSelector,J.getText=C.text,J.isXML=C.isXMLDoc,J.selectors=C.expr,J.support=C.support,J.uniqueSort=C.uniqueSort}();var M=function(t,e,n){for(var i=[],o=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(o&&C(t).is(n))break;i.push(t)}return i},H=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},q=C.expr.match.needsContext,I=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function F(t,e,n){return y(e)?C.grep(t,(function(t,i){return!!e.call(t,i,t)!==n})):e.nodeType?C.grep(t,(function(t){return t===e!==n})):"string"!=typeof e?C.grep(t,(function(t){return c.call(e,t)>-1!==n})):C.filter(e,t,n)}C.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?C.find.matchesSelector(i,t)?[i]:[]:C.find.matches(t,C.grep(e,(function(t){return 1===t.nodeType})))},C.fn.extend({find:function(t){var e,n,i=this.length,o=this;if("string"!=typeof t)return this.pushStack(C(t).filter((function(){for(e=0;e1?C.uniqueSort(n):n},filter:function(t){return this.pushStack(F(this,t||[],!1))},not:function(t){return this.pushStack(F(this,t||[],!0))},is:function(t){return!!F(this,"string"==typeof t&&q.test(t)?C(t):t||[],!1).length}});var N,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(C.fn.init=function(t,e,n){var i,o;if(!t)return this;if(n=n||N,"string"==typeof t){if(!(i="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:B.exec(t))||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof C?e[0]:e,C.merge(this,C.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:b,!0)),I.test(i[1])&&C.isPlainObject(e))for(i in e)y(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(o=b.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):y(t)?void 0!==n.ready?n.ready(t):t(C):C.makeArray(t,this)}).prototype=C.fn,N=C(b);var W=/^(?:parents|prev(?:Until|All))/,Q={children:!0,contents:!0,next:!0,prev:!0};function K(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}C.fn.extend({has:function(t){var e=C(t,this),n=e.length;return this.filter((function(){for(var t=0;t-1:1===n.nodeType&&C.find.matchesSelector(n,t))){r.push(n);break}return this.pushStack(r.length>1?C.uniqueSort(r):r)},index:function(t){return t?"string"==typeof t?c.call(C(t),this[0]):c.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(C.uniqueSort(C.merge(this.get(),C(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),C.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return M(t,"parentNode")},parentsUntil:function(t,e,n){return M(t,"parentNode",n)},next:function(t){return K(t,"nextSibling")},prev:function(t){return K(t,"previousSibling")},nextAll:function(t){return M(t,"nextSibling")},prevAll:function(t){return M(t,"previousSibling")},nextUntil:function(t,e,n){return M(t,"nextSibling",n)},prevUntil:function(t,e,n){return M(t,"previousSibling",n)},siblings:function(t){return H((t.parentNode||{}).firstChild,t)},children:function(t){return H(t.firstChild)},contents:function(t){return null!=t.contentDocument&&s(t.contentDocument)?t.contentDocument:(S(t,"template")&&(t=t.content||t),C.merge([],t.childNodes))}},(function(t,e){C.fn[t]=function(n,i){var o=C.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(o=C.filter(i,o)),this.length>1&&(Q[t]||C.uniqueSort(o),W.test(t)&&o.reverse()),this.pushStack(o)}}));var G=/[^\x20\t\r\n\f]+/g;function Y(t){return t}function U(t){throw t}function V(t,e,n,i){var o;try{t&&y(o=t.promise)?o.call(t).done(e).fail(n):t&&y(o=t.then)?o.call(t,e,n):e.apply(void 0,[t].slice(i))}catch(t){n.apply(void 0,[t])}}C.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return C.each(t.match(G)||[],(function(t,n){e[n]=!0})),e}(t):C.extend({},t);var e,n,i,o,r=[],s=[],a=-1,l=function(){for(o=o||t.once,i=e=!0;s.length;a=-1)for(n=s.shift();++a-1;)r.splice(n,1),n<=a&&a--})),this},has:function(t){return t?C.inArray(t,r)>-1:r.length>0},empty:function(){return r&&(r=[]),this},disable:function(){return o=s=[],r=n="",this},disabled:function(){return!r},lock:function(){return o=s=[],n||e||(r=n=""),this},locked:function(){return!!o},fireWith:function(t,n){return o||(n=[t,(n=n||[]).slice?n.slice():n],s.push(n),e||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},C.extend({Deferred:function(t){var e=[["notify","progress",C.Callbacks("memory"),C.Callbacks("memory"),2],["resolve","done",C.Callbacks("once memory"),C.Callbacks("once memory"),0,"resolved"],["reject","fail",C.Callbacks("once memory"),C.Callbacks("once memory"),1,"rejected"]],n="pending",o={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},catch:function(t){return o.then(null,t)},pipe:function(){var t=arguments;return C.Deferred((function(n){C.each(e,(function(e,i){var o=y(t[i[4]])&&t[i[4]];r[i[1]]((function(){var t=o&&o.apply(this,arguments);t&&y(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[i[0]+"With"](this,o?[t]:arguments)}))})),t=null})).promise()},then:function(t,n,o){var r=0;function s(t,e,n,o){return function(){var a=this,l=arguments,u=function(){var i,u;if(!(t=r&&(n!==U&&(a=void 0,l=[i]),e.rejectWith(a,l))}};t?c():(C.Deferred.getErrorHook?c.error=C.Deferred.getErrorHook():C.Deferred.getStackHook&&(c.error=C.Deferred.getStackHook()),i.setTimeout(c))}}return C.Deferred((function(i){e[0][3].add(s(0,i,y(o)?o:Y,i.notifyWith)),e[1][3].add(s(0,i,y(t)?t:Y)),e[2][3].add(s(0,i,y(n)?n:U))})).promise()},promise:function(t){return null!=t?C.extend(t,o):o}},r={};return C.each(e,(function(t,i){var s=i[2],a=i[5];o[i[1]]=s.add,a&&s.add((function(){n=a}),e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),s.add(i[3].fire),r[i[0]]=function(){return r[i[0]+"With"](this===r?void 0:this,arguments),this},r[i[0]+"With"]=s.fireWith})),o.promise(r),t&&t.call(r,r),r},when:function(t){var e=arguments.length,n=e,i=Array(n),o=a.call(arguments),r=C.Deferred(),s=function(t){return function(n){i[t]=this,o[t]=arguments.length>1?a.call(arguments):n,--e||r.resolveWith(i,o)}};if(e<=1&&(V(t,r.done(s(n)).resolve,r.reject,!e),"pending"===r.state()||y(o[n]&&o[n].then)))return r.then();for(;n--;)V(o[n],s(n),r.reject);return r.promise()}});var X=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;C.Deferred.exceptionHook=function(t,e){i.console&&i.console.warn&&t&&X.test(t.name)&&i.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},C.readyException=function(t){i.setTimeout((function(){throw t}))};var Z=C.Deferred();function J(){b.removeEventListener("DOMContentLoaded",J),i.removeEventListener("load",J),C.ready()}C.fn.ready=function(t){return Z.then(t).catch((function(t){C.readyException(t)})),this},C.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--C.readyWait:C.isReady)||(C.isReady=!0,!0!==t&&--C.readyWait>0||Z.resolveWith(b,[C]))}}),C.ready.then=Z.then,"complete"===b.readyState||"loading"!==b.readyState&&!b.documentElement.doScroll?i.setTimeout(C.ready):(b.addEventListener("DOMContentLoaded",J),i.addEventListener("load",J));var tt=function(t,e,n,i,o,r,s){var a=0,l=t.length,u=null==n;if("object"===j(n))for(a in o=!0,n)tt(t,e,a,n[a],!0,r,s);else if(void 0!==i&&(o=!0,y(i)||(s=!0),u&&(s?(e.call(t,i),e=null):(u=e,e=function(t,e,n){return u.call(C(t),n)})),e))for(;a1,null,!0)},removeData:function(t){return this.each((function(){lt.remove(this,t)}))}}),C.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=at.get(t,e),n&&(!i||Array.isArray(n)?i=at.access(t,e,C.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=C.queue(t,e),i=n.length,o=n.shift(),r=C._queueHooks(t,e);"inprogress"===o&&(o=n.shift(),i--),o&&("fx"===e&&n.unshift("inprogress"),delete r.stop,o.call(t,(function(){C.dequeue(t,e)}),r)),!i&&r&&r.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return at.get(t,n)||at.access(t,n,{empty:C.Callbacks("once memory").add((function(){at.remove(t,[e+"queue",n])}))})}}),C.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]*)/i,St=/^$|^module$|\/(?:java|ecma)script/i;_t=b.createDocumentFragment().appendChild(b.createElement("div")),($t=b.createElement("input")).setAttribute("type","radio"),$t.setAttribute("checked","checked"),$t.setAttribute("name","t"),_t.appendChild($t),m.checkClone=_t.cloneNode(!0).cloneNode(!0).lastChild.checked,_t.innerHTML="",m.noCloneChecked=!!_t.cloneNode(!0).lastChild.defaultValue,_t.innerHTML="",m.option=!!_t.lastChild;var Ot={thead:[1,"","
          "],col:[2,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],_default:[0,"",""]};function Tt(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&S(t,e)?C.merge([t],n):n}function Et(t,e){for(var n=0,i=t.length;n",""]);var Pt=/<|&#?\w+;/;function zt(t,e,n,i,o){for(var r,s,a,l,u,c,f=e.createDocumentFragment(),d=[],h=0,p=t.length;h-1)o&&o.push(r);else if(u=mt(r),s=Tt(f.appendChild(r),"script"),u&&Et(s),n)for(c=0;r=s[c++];)St.test(r.type||"")&&n.push(r);return f}var At=/^([^.]*)(?:\.(.+)|)/;function Rt(){return!0}function Dt(){return!1}function Lt(t,e,n,i,o,r){var s,a;if("object"==typeof e){for(a in"string"!=typeof n&&(i=i||n,n=void 0),e)Lt(t,a,n,i,e[a],r);return t}if(null==i&&null==o?(o=n,i=n=void 0):null==o&&("string"==typeof n?(o=i,i=void 0):(o=i,i=n,n=void 0)),!1===o)o=Dt;else if(!o)return t;return 1===r&&(s=o,o=function(t){return C().off(t),s.apply(this,arguments)},o.guid=s.guid||(s.guid=C.guid++)),t.each((function(){C.event.add(this,e,o,i,n)}))}function Mt(t,e,n){n?(at.set(t,e,!1),C.event.add(t,e,{namespace:!1,handler:function(t){var n,i=at.get(this,e);if(1&t.isTrigger&&this[e]){if(i)(C.event.special[e]||{}).delegateType&&t.stopPropagation();else if(i=a.call(arguments),at.set(this,e,i),this[e](),n=at.get(this,e),at.set(this,e,!1),i!==n)return t.stopImmediatePropagation(),t.preventDefault(),n}else i&&(at.set(this,e,C.event.trigger(i[0],i.slice(1),this)),t.stopPropagation(),t.isImmediatePropagationStopped=Rt)}})):void 0===at.get(t,e)&&C.event.add(t,e,Rt)}C.event={global:{},add:function(t,e,n,i,o){var r,s,a,l,u,c,f,d,h,p,v,m=at.get(t);if(rt(t))for(n.handler&&(n=(r=n).handler,o=r.selector),o&&C.find.matchesSelector(vt,o),n.guid||(n.guid=C.guid++),(l=m.events)||(l=m.events=Object.create(null)),(s=m.handle)||(s=m.handle=function(e){return void 0!==C&&C.event.triggered!==e.type?C.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(G)||[""]).length;u--;)h=v=(a=At.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),h&&(f=C.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=C.event.special[h]||{},c=C.extend({type:h,origType:v,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&C.expr.match.needsContext.test(o),namespace:p.join(".")},r),(d=l[h])||((d=l[h]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,i,p,s)||t.addEventListener&&t.addEventListener(h,s)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),o?d.splice(d.delegateCount++,0,c):d.push(c),C.event.global[h]=!0)},remove:function(t,e,n,i,o){var r,s,a,l,u,c,f,d,h,p,v,m=at.hasData(t)&&at.get(t);if(m&&(l=m.events)){for(u=(e=(e||"").match(G)||[""]).length;u--;)if(h=v=(a=At.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),h){for(f=C.event.special[h]||{},d=l[h=(i?f.delegateType:f.bindType)||h]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=r=d.length;r--;)c=d[r],!o&&v!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||i&&i!==c.selector&&("**"!==i||!c.selector)||(d.splice(r,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(t,c));s&&!d.length&&(f.teardown&&!1!==f.teardown.call(t,p,m.handle)||C.removeEvent(t,h,m.handle),delete l[h])}else for(h in l)C.event.remove(t,h+e[u],n,i,!0);C.isEmptyObject(l)&&at.remove(t,"handle events")}},dispatch:function(t){var e,n,i,o,r,s,a=new Array(arguments.length),l=C.event.fix(t),u=(at.get(this,"events")||Object.create(null))[l.type]||[],c=C.event.special[l.type]||{};for(a[0]=l,e=1;e=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(r=[],s={},n=0;n-1:C.find(o,this,null,[u]).length),s[o]&&r.push(i);r.length&&a.push({elem:u,handlers:r})}return u=this,l\s*$/g;function Ft(t,e){return S(t,"table")&&S(11!==e.nodeType?e:e.firstChild,"tr")&&C(t).children("tbody")[0]||t}function Nt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Bt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Wt(t,e){var n,i,o,r,s,a;if(1===e.nodeType){if(at.hasData(t)&&(a=at.get(t).events))for(o in at.remove(e,"handle events"),a)for(n=0,i=a[o].length;n1&&"string"==typeof p&&!m.checkClone&&qt.test(p))return t.each((function(o){var r=t.eq(o);v&&(e[0]=p.call(this,o,r.html())),Kt(r,e,n,i)}));if(d&&(r=(o=zt(e,t[0].ownerDocument,!1,t,i)).firstChild,1===o.childNodes.length&&(o=r),r||i)){for(a=(s=C.map(Tt(o,"script"),Nt)).length;f0&&Et(s,!l&&Tt(t,"script")),a},cleanData:function(t){for(var e,n,i,o=C.event.special,r=0;void 0!==(n=t[r]);r++)if(rt(n)){if(e=n[at.expando]){if(e.events)for(i in e.events)o[i]?C.event.remove(n,i):C.removeEvent(n,i,e.handle);n[at.expando]=void 0}n[lt.expando]&&(n[lt.expando]=void 0)}}}),C.fn.extend({detach:function(t){return Gt(this,t,!0)},remove:function(t){return Gt(this,t)},text:function(t){return tt(this,(function(t){return void 0===t?C.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)}))}),null,t,arguments.length)},append:function(){return Kt(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ft(this,t).appendChild(t)}))},prepend:function(){return Kt(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=Ft(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return Kt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return Kt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)}))},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(C.cleanData(Tt(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return C.clone(this,t,e)}))},html:function(t){return tt(this,(function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!Ht.test(t)&&!Ot[(xt.exec(t)||["",""])[1].toLowerCase()]){t=C.htmlPrefilter(t);try{for(;n=0&&(l+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-r-l-a-.5))||0),l+u}function ce(t,e,n){var i=Vt(t),o=(!m.boxSizingReliable()||n)&&"border-box"===C.css(t,"boxSizing",!1,i),r=o,s=Jt(t,e,i),a="offset"+e[0].toUpperCase()+e.slice(1);if(Yt.test(s)){if(!n)return s;s="auto"}return(!m.boxSizingReliable()&&o||!m.reliableTrDimensions()&&S(t,"tr")||"auto"===s||!parseFloat(s)&&"inline"===C.css(t,"display",!1,i))&&t.getClientRects().length&&(o="border-box"===C.css(t,"boxSizing",!1,i),(r=a in t)&&(s=t[a])),(s=parseFloat(s)||0)+ue(t,e,n||(o?"border":"content"),r,i,s)+"px"}function fe(t,e,n,i,o){return new fe.prototype.init(t,e,n,i,o)}C.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=Jt(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(t,e,n,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var o,r,s,a=ot(e),l=Ut.test(e),u=t.style;if(l||(e=oe(a)),s=C.cssHooks[e]||C.cssHooks[a],void 0===n)return s&&"get"in s&&void 0!==(o=s.get(t,!1,i))?o:u[e];"string"==(r=typeof n)&&(o=ht.exec(n))&&o[1]&&(n=bt(t,e,o),r="number"),null!=n&&n==n&&("number"!==r||l||(n+=o&&o[3]||(C.cssNumber[a]?"":"px")),m.clearCloneStyle||""!==n||0!==e.indexOf("background")||(u[e]="inherit"),s&&"set"in s&&void 0===(n=s.set(t,n,i))||(l?u.setProperty(e,n):u[e]=n))}},css:function(t,e,n,i){var o,r,s,a=ot(e);return Ut.test(e)||(e=oe(a)),(s=C.cssHooks[e]||C.cssHooks[a])&&"get"in s&&(o=s.get(t,!0,n)),void 0===o&&(o=Jt(t,e,i)),"normal"===o&&e in ae&&(o=ae[e]),""===n||n?(r=parseFloat(o),!0===n||isFinite(r)?r||0:o):o}}),C.each(["height","width"],(function(t,e){C.cssHooks[e]={get:function(t,n,i){if(n)return!re.test(C.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?ce(t,e,i):Xt(t,se,(function(){return ce(t,e,i)}))},set:function(t,n,i){var o,r=Vt(t),s=!m.scrollboxSize()&&"absolute"===r.position,a=(s||i)&&"border-box"===C.css(t,"boxSizing",!1,r),l=i?ue(t,e,i,a,r):0;return a&&s&&(l-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(r[e])-ue(t,e,"border",!1,r)-.5)),l&&(o=ht.exec(n))&&"px"!==(o[3]||"px")&&(t.style[e]=n,n=C.css(t,e)),le(0,n,l)}}})),C.cssHooks.marginLeft=te(m.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Jt(t,"marginLeft"))||t.getBoundingClientRect().left-Xt(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),C.each({margin:"",padding:"",border:"Width"},(function(t,e){C.cssHooks[t+e]={expand:function(n){for(var i=0,o={},r="string"==typeof n?n.split(" "):[n];i<4;i++)o[t+pt[i]+e]=r[i]||r[i-2]||r[0];return o}},"margin"!==t&&(C.cssHooks[t+e].set=le)})),C.fn.extend({css:function(t,e){return tt(this,(function(t,e,n){var i,o,r={},s=0;if(Array.isArray(e)){for(i=Vt(t),o=e.length;s1)}}),C.Tween=fe,fe.prototype={constructor:fe,init:function(t,e,n,i,o,r){this.elem=t,this.prop=n,this.easing=o||C.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=i,this.unit=r||(C.cssNumber[n]?"":"px")},cur:function(){var t=fe.propHooks[this.prop];return t&&t.get?t.get(this):fe.propHooks._default.get(this)},run:function(t){var e,n=fe.propHooks[this.prop];return this.options.duration?this.pos=e=C.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):fe.propHooks._default.set(this),this}},fe.prototype.init.prototype=fe.prototype,fe.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=C.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){C.fx.step[t.prop]?C.fx.step[t.prop](t):1!==t.elem.nodeType||!C.cssHooks[t.prop]&&null==t.elem.style[oe(t.prop)]?t.elem[t.prop]=t.now:C.style(t.elem,t.prop,t.now+t.unit)}}},fe.propHooks.scrollTop=fe.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},C.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},C.fx=fe.prototype.init,C.fx.step={};var de,he,pe=/^(?:toggle|show|hide)$/,ve=/queueHooks$/;function me(){he&&(!1===b.hidden&&i.requestAnimationFrame?i.requestAnimationFrame(me):i.setTimeout(me,C.fx.interval),C.fx.tick())}function ye(){return i.setTimeout((function(){de=void 0})),de=Date.now()}function ge(t,e){var n,i=0,o={height:t};for(e=e?1:0;i<4;i+=2-e)o["margin"+(n=pt[i])]=o["padding"+n]=t;return e&&(o.opacity=o.width=t),o}function be(t,e,n){for(var i,o=(we.tweeners[e]||[]).concat(we.tweeners["*"]),r=0,s=o.length;r1)},removeAttr:function(t){return this.each((function(){C.removeAttr(this,t)}))}}),C.extend({attr:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return void 0===t.getAttribute?C.prop(t,e,n):(1===r&&C.isXMLDoc(t)||(o=C.attrHooks[e.toLowerCase()]||(C.expr.match.bool.test(e)?ke:void 0)),void 0!==n?null===n?void C.removeAttr(t,e):o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:(t.setAttribute(e,n+""),n):o&&"get"in o&&null!==(i=o.get(t,e))?i:null==(i=C.find.attr(t,e))?void 0:i)},attrHooks:{type:{set:function(t,e){if(!m.radioValue&&"radio"===e&&S(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,i=0,o=e&&e.match(G);if(o&&1===t.nodeType)for(;n=o[i++];)t.removeAttribute(n)}}),ke={set:function(t,e,n){return!1===e?C.removeAttr(t,n):t.setAttribute(n,n),n}},C.each(C.expr.match.bool.source.match(/\w+/g),(function(t,e){var n=je[e]||C.find.attr;je[e]=function(t,e,i){var o,r,s=e.toLowerCase();return i||(r=je[s],je[s]=o,o=null!=n(t,e,i)?s:null,je[s]=r),o}}));var _e=/^(?:input|select|textarea|button)$/i,$e=/^(?:a|area)$/i;function Ce(t){return(t.match(G)||[]).join(" ")}function xe(t){return t.getAttribute&&t.getAttribute("class")||""}function Se(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(G)||[]}C.fn.extend({prop:function(t,e){return tt(this,C.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[C.propFix[t]||t]}))}}),C.extend({prop:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return 1===r&&C.isXMLDoc(t)||(e=C.propFix[e]||e,o=C.propHooks[e]),void 0!==n?o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:t[e]=n:o&&"get"in o&&null!==(i=o.get(t,e))?i:t[e]},propHooks:{tabIndex:{get:function(t){var e=C.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||$e.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),m.optSelected||(C.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),C.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){C.propFix[this.toLowerCase()]=this})),C.fn.extend({addClass:function(t){var e,n,i,o,r,s;return y(t)?this.each((function(e){C(this).addClass(t.call(this,e,xe(this)))})):(e=Se(t)).length?this.each((function(){if(i=xe(this),n=1===this.nodeType&&" "+Ce(i)+" "){for(r=0;r-1;)n=n.replace(" "+o+" "," ");s=Ce(n),i!==s&&this.setAttribute("class",s)}})):this:this.attr("class","")},toggleClass:function(t,e){var n,i,o,r,s=typeof t,a="string"===s||Array.isArray(t);return y(t)?this.each((function(n){C(this).toggleClass(t.call(this,n,xe(this),e),e)})):"boolean"==typeof e&&a?e?this.addClass(t):this.removeClass(t):(n=Se(t),this.each((function(){if(a)for(r=C(this),o=0;o-1)return!0;return!1}});var Oe=/\r/g;C.fn.extend({val:function(t){var e,n,i,o=this[0];return arguments.length?(i=y(t),this.each((function(n){var o;1===this.nodeType&&(null==(o=i?t.call(this,n,C(this).val()):t)?o="":"number"==typeof o?o+="":Array.isArray(o)&&(o=C.map(o,(function(t){return null==t?"":t+""}))),(e=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,o,"value")||(this.value=o))}))):o?(e=C.valHooks[o.type]||C.valHooks[o.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(o,"value"))?n:"string"==typeof(n=o.value)?n.replace(Oe,""):null==n?"":n:void 0}}),C.extend({valHooks:{option:{get:function(t){var e=C.find.attr(t,"value");return null!=e?e:Ce(C.text(t))}},select:{get:function(t){var e,n,i,o=t.options,r=t.selectedIndex,s="select-one"===t.type,a=s?null:[],l=s?r+1:o.length;for(i=r<0?l:s?r:0;i-1)&&(n=!0);return n||(t.selectedIndex=-1),r}}}}),C.each(["radio","checkbox"],(function(){C.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=C.inArray(C(t).val(),e)>-1}},m.checkOn||(C.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})}));var Te=i.location,Ee={guid:Date.now()},Pe=/\?/;C.parseXML=function(t){var e,n;if(!t||"string"!=typeof t)return null;try{e=(new i.DOMParser).parseFromString(t,"text/xml")}catch(t){}return n=e&&e.getElementsByTagName("parsererror")[0],e&&!n||C.error("Invalid XML: "+(n?C.map(n.childNodes,(function(t){return t.textContent})).join("\n"):t)),e};var ze=/^(?:focusinfocus|focusoutblur)$/,Ae=function(t){t.stopPropagation()};C.extend(C.event,{trigger:function(t,e,n,o){var r,s,a,l,u,c,f,d,p=[n||b],v=h.call(t,"type")?t.type:t,m=h.call(t,"namespace")?t.namespace.split("."):[];if(s=d=a=n=n||b,3!==n.nodeType&&8!==n.nodeType&&!ze.test(v+C.event.triggered)&&(v.indexOf(".")>-1&&(m=v.split("."),v=m.shift(),m.sort()),u=v.indexOf(":")<0&&"on"+v,(t=t[C.expando]?t:new C.Event(v,"object"==typeof t&&t)).isTrigger=o?2:3,t.namespace=m.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=n),e=null==e?[t]:C.makeArray(e,[t]),f=C.event.special[v]||{},o||!f.trigger||!1!==f.trigger.apply(n,e))){if(!o&&!f.noBubble&&!g(n)){for(l=f.delegateType||v,ze.test(l+v)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(n.ownerDocument||b)&&p.push(a.defaultView||a.parentWindow||i)}for(r=0;(s=p[r++])&&!t.isPropagationStopped();)d=s,t.type=r>1?l:f.bindType||v,(c=(at.get(s,"events")||Object.create(null))[t.type]&&at.get(s,"handle"))&&c.apply(s,e),(c=u&&s[u])&&c.apply&&rt(s)&&(t.result=c.apply(s,e),!1===t.result&&t.preventDefault());return t.type=v,o||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),e)||!rt(n)||u&&y(n[v])&&!g(n)&&((a=n[u])&&(n[u]=null),C.event.triggered=v,t.isPropagationStopped()&&d.addEventListener(v,Ae),n[v](),t.isPropagationStopped()&&d.removeEventListener(v,Ae),C.event.triggered=void 0,a&&(n[u]=a)),t.result}},simulate:function(t,e,n){var i=C.extend(new C.Event,n,{type:t,isSimulated:!0});C.event.trigger(i,null,e)}}),C.fn.extend({trigger:function(t,e){return this.each((function(){C.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var n=this[0];if(n)return C.event.trigger(t,e,n,!0)}});var Re=/\[\]$/,De=/\r?\n/g,Le=/^(?:submit|button|image|reset|file)$/i,Me=/^(?:input|select|textarea|keygen)/i;function He(t,e,n,i){var o;if(Array.isArray(e))C.each(e,(function(e,o){n||Re.test(t)?i(t,o):He(t+"["+("object"==typeof o&&null!=o?e:"")+"]",o,n,i)}));else if(n||"object"!==j(e))i(t,e);else for(o in e)He(t+"["+o+"]",e[o],n,i)}C.param=function(t,e){var n,i=[],o=function(t,e){var n=y(e)?e():e;i[i.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!C.isPlainObject(t))C.each(t,(function(){o(this.name,this.value)}));else for(n in t)He(n,t[n],e,o);return i.join("&")},C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=C.prop(this,"elements");return t?C.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!C(this).is(":disabled")&&Me.test(this.nodeName)&&!Le.test(t)&&(this.checked||!Ct.test(t))})).map((function(t,e){var n=C(this).val();return null==n?null:Array.isArray(n)?C.map(n,(function(t){return{name:e.name,value:t.replace(De,"\r\n")}})):{name:e.name,value:n.replace(De,"\r\n")}})).get()}});var qe=/%20/g,Ie=/#.*$/,Fe=/([?&])_=[^&]*/,Ne=/^(.*?):[ \t]*([^\r\n]*)$/gm,Be=/^(?:GET|HEAD)$/,We=/^\/\//,Qe={},Ke={},Ge="*/".concat("*"),Ye=b.createElement("a");function Ue(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var i,o=0,r=e.toLowerCase().match(G)||[];if(y(n))for(;i=r[o++];)"+"===i[0]?(i=i.slice(1)||"*",(t[i]=t[i]||[]).unshift(n)):(t[i]=t[i]||[]).push(n)}}function Ve(t,e,n,i){var o={},r=t===Ke;function s(a){var l;return o[a]=!0,C.each(t[a]||[],(function(t,a){var u=a(e,n,i);return"string"!=typeof u||r||o[u]?r?!(l=u):void 0:(e.dataTypes.unshift(u),s(u),!1)})),l}return s(e.dataTypes[0])||!o["*"]&&s("*")}function Xe(t,e){var n,i,o=C.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((o[n]?t:i||(i={}))[n]=e[n]);return i&&C.extend(!0,t,i),t}Ye.href=Te.href,C.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Te.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Te.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":C.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?Xe(Xe(t,C.ajaxSettings),e):Xe(C.ajaxSettings,t)},ajaxPrefilter:Ue(Qe),ajaxTransport:Ue(Ke),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};var n,o,r,s,a,l,u,c,f,d,h=C.ajaxSetup({},e),p=h.context||h,v=h.context&&(p.nodeType||p.jquery)?C(p):C.event,m=C.Deferred(),y=C.Callbacks("once memory"),g=h.statusCode||{},w={},k={},j="canceled",_={readyState:0,getResponseHeader:function(t){var e;if(u){if(!s)for(s={};e=Ne.exec(r);)s[e[1].toLowerCase()+" "]=(s[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=s[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return u?r:null},setRequestHeader:function(t,e){return null==u&&(t=k[t.toLowerCase()]=k[t.toLowerCase()]||t,w[t]=e),this},overrideMimeType:function(t){return null==u&&(h.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)_.always(t[_.status]);else for(e in t)g[e]=[g[e],t[e]];return this},abort:function(t){var e=t||j;return n&&n.abort(e),$(0,e),this}};if(m.promise(_),h.url=((t||h.url||Te.href)+"").replace(We,Te.protocol+"//"),h.type=e.method||e.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(G)||[""],null==h.crossDomain){l=b.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Ye.protocol+"//"+Ye.host!=l.protocol+"//"+l.host}catch(t){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=C.param(h.data,h.traditional)),Ve(Qe,h,e,_),u)return _;for(f in(c=C.event&&h.global)&&0==C.active++&&C.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Be.test(h.type),o=h.url.replace(Ie,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qe,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(Pe.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Fe,"$1"),d=(Pe.test(o)?"&":"?")+"_="+Ee.guid+++d),h.url=o+d),h.ifModified&&(C.lastModified[o]&&_.setRequestHeader("If-Modified-Since",C.lastModified[o]),C.etag[o]&&_.setRequestHeader("If-None-Match",C.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||e.contentType)&&_.setRequestHeader("Content-Type",h.contentType),_.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ge+"; q=0.01":""):h.accepts["*"]),h.headers)_.setRequestHeader(f,h.headers[f]);if(h.beforeSend&&(!1===h.beforeSend.call(p,_,h)||u))return _.abort();if(j="abort",y.add(h.complete),_.done(h.success),_.fail(h.error),n=Ve(Ke,h,e,_)){if(_.readyState=1,c&&v.trigger("ajaxSend",[_,h]),u)return _;h.async&&h.timeout>0&&(a=i.setTimeout((function(){_.abort("timeout")}),h.timeout));try{u=!1,n.send(w,$)}catch(t){if(u)throw t;$(-1,t)}}else $(-1,"No Transport");function $(t,e,s,l){var f,d,b,w,k,j=e;u||(u=!0,a&&i.clearTimeout(a),n=void 0,r=l||"",_.readyState=t>0?4:0,f=t>=200&&t<300||304===t,s&&(w=function(t,e,n){for(var i,o,r,s,a=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=t.mimeType||e.getResponseHeader("Content-Type"));if(i)for(o in a)if(a[o]&&a[o].test(i)){l.unshift(o);break}if(l[0]in n)r=l[0];else{for(o in n){if(!l[0]||t.converters[o+" "+l[0]]){r=o;break}s||(s=o)}r=r||s}if(r)return r!==l[0]&&l.unshift(r),n[r]}(h,_,s)),!f&&C.inArray("script",h.dataTypes)>-1&&C.inArray("json",h.dataTypes)<0&&(h.converters["text script"]=function(){}),w=function(t,e,n,i){var o,r,s,a,l,u={},c=t.dataTypes.slice();if(c[1])for(s in t.converters)u[s.toLowerCase()]=t.converters[s];for(r=c.shift();r;)if(t.responseFields[r]&&(n[t.responseFields[r]]=e),!l&&i&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=r,r=c.shift())if("*"===r)r=l;else if("*"!==l&&l!==r){if(!(s=u[l+" "+r]||u["* "+r]))for(o in u)if((a=o.split(" "))[1]===r&&(s=u[l+" "+a[0]]||u["* "+a[0]])){!0===s?s=u[o]:!0!==u[o]&&(r=a[0],c.unshift(a[1]));break}if(!0!==s)if(s&&t.throws)e=s(e);else try{e=s(e)}catch(t){return{state:"parsererror",error:s?t:"No conversion from "+l+" to "+r}}}return{state:"success",data:e}}(h,w,_,f),f?(h.ifModified&&((k=_.getResponseHeader("Last-Modified"))&&(C.lastModified[o]=k),(k=_.getResponseHeader("etag"))&&(C.etag[o]=k)),204===t||"HEAD"===h.type?j="nocontent":304===t?j="notmodified":(j=w.state,d=w.data,f=!(b=w.error))):(b=j,!t&&j||(j="error",t<0&&(t=0))),_.status=t,_.statusText=(e||j)+"",f?m.resolveWith(p,[d,j,_]):m.rejectWith(p,[_,j,b]),_.statusCode(g),g=void 0,c&&v.trigger(f?"ajaxSuccess":"ajaxError",[_,h,f?d:b]),y.fireWith(p,[_,j]),c&&(v.trigger("ajaxComplete",[_,h]),--C.active||C.event.trigger("ajaxStop")))}return _},getJSON:function(t,e,n){return C.get(t,e,n,"json")},getScript:function(t,e){return C.get(t,void 0,e,"script")}}),C.each(["get","post"],(function(t,e){C[e]=function(t,n,i,o){return y(n)&&(o=o||i,i=n,n=void 0),C.ajax(C.extend({url:t,type:e,dataType:o,data:n,success:i},C.isPlainObject(t)&&t))}})),C.ajaxPrefilter((function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")})),C._evalUrl=function(t,e,n){return C.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){C.globalEval(t,e,n)}})},C.fn.extend({wrapAll:function(t){var e;return this[0]&&(y(t)&&(t=t.call(this[0])),e=C(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map((function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t})).append(this)),this},wrapInner:function(t){return y(t)?this.each((function(e){C(this).wrapInner(t.call(this,e))})):this.each((function(){var e=C(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)}))},wrap:function(t){var e=y(t);return this.each((function(n){C(this).wrapAll(e?t.call(this,n):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){C(this).replaceWith(this.childNodes)})),this}}),C.expr.pseudos.hidden=function(t){return!C.expr.pseudos.visible(t)},C.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},C.ajaxSettings.xhr=function(){try{return new i.XMLHttpRequest}catch(t){}};var Ze={0:200,1223:204},Je=C.ajaxSettings.xhr();m.cors=!!Je&&"withCredentials"in Je,m.ajax=Je=!!Je,C.ajaxTransport((function(t){var e,n;if(m.cors||Je&&!t.crossDomain)return{send:function(o,r){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];for(s in t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest"),o)a.setRequestHeader(s,o[s]);e=function(t){return function(){e&&(e=n=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===t?a.abort():"error"===t?"number"!=typeof a.status?r(0,"error"):r(a.status,a.statusText):r(Ze[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=e(),n=a.onerror=a.ontimeout=e("error"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&i.setTimeout((function(){e&&n()}))},e=e("abort");try{a.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),C.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),C.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return C.globalEval(t),t}}}),C.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),C.ajaxTransport("script",(function(t){var e,n;if(t.crossDomain||t.scriptAttrs)return{send:function(i,o){e=C(" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          scylla.scylladb.com

          + +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/api-reference/groups/scylla.scylladb.com/nodeconfigs.html b/stable/api-reference/groups/scylla.scylladb.com/nodeconfigs.html new file mode 100644 index 00000000000..fe69c809fc2 --- /dev/null +++ b/stable/api-reference/groups/scylla.scylladb.com/nodeconfigs.html @@ -0,0 +1,2830 @@ + + + + + + + + + + + + + NodeConfig (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          NodeConfig (scylla.scylladb.com/v1alpha1)

          +
          +
          APIVersion: scylla.scylladb.com/v1alpha1
          +
          Kind: NodeConfig
          +
          PluralName: nodeconfigs
          +
          SingularName: nodeconfig
          +
          Scope: Cluster
          +
          ListKind: NodeConfigList
          +
          Served: true
          +
          Storage: true
          +
          +
          +

          Description

          +
          +
          +

          Specification

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          apiVersion

          string

          APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

          kind

          string

          Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

          metadata

          object

          spec

          object

          status

          object

          +
          +

          .metadata

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          disableOptimizations

          boolean

          disableOptimizations controls if nodes matching placement requirements are going to be optimized. Turning off optimizations on already optimized Nodes does not revert changes.

          localDiskSetup

          object

          localDiskSetup contains options of automatic local disk setup.

          placement

          object

          placement contains scheduling rules for NodeConfig Pods.

          +
          +
          +
          +

          .spec.localDiskSetup

          +
          +

          Description

          +

          localDiskSetup contains options of automatic local disk setup.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          filesystems

          array (object)

          filesystems is a list of filesystem configurations.

          loopDevices

          array (object)

          loops is a list of loop device configurations.

          mounts

          array (object)

          mounts is a list of mount configuration.

          raids

          array (object)

          raids is a list of raid configurations.

          +
          +
          +
          +

          .spec.localDiskSetup.filesystems[]

          +
          +

          Description

          +

          FilesystemConfiguration specifies filesystem configuration options.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          device

          string

          device is a path to the device where the desired filesystem should be created.

          type

          string

          type is a desired filesystem type.

          +
          +
          +
          +

          .spec.localDiskSetup.loopDevices[]

          +
          +

          Description

          +

          LoopDeviceConfiguration specifies loop device configuration options.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          imagePath

          string

          imagePath specifies path on host where backing image file for loop device should be located.

          name

          string

          name specifies the name of the symlink that will point to actual loop device, created under /dev/loops/.

          size

          size specifies the size of the loop device.

          +
          +
          +
          +

          .spec.localDiskSetup.mounts[]

          +
          +

          Description

          +

          MountConfiguration specifies mount configuration options.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          device

          string

          device is path to a device that should be mounted.

          fsType

          string

          fsType specifies the filesystem on the device.

          mountPoint

          string

          mountPoint is a path where the device should be mounted at. If the mountPoint is a symlink, the mount will be set up for the target.

          unsupportedOptions

          array (string)

          unsupportedOptions is a list of mount options used during device mounting. unsupported in this field name means that we won’t support all the available options passed down using this field.

          +
          +
          +
          +

          .spec.localDiskSetup.raids[]

          +
          +

          Description

          +

          RAIDConfiguration is a configuration of a raid array.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          RAID0

          object

          RAID0 specifies RAID0 options.

          name

          string

          name specifies the name of the raid device to be created under in /dev/md/.

          type

          string

          type is a type of raid array.

          +
          +
          +
          +

          .spec.localDiskSetup.raids[].RAID0

          +
          +

          Description

          +

          RAID0 specifies RAID0 options.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          devices

          object

          devices defines which devices constitute the raid array.

          +
          +
          +
          +

          .spec.localDiskSetup.raids[].RAID0.devices

          +
          +

          Description

          +

          devices defines which devices constitute the raid array.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          modelRegex

          string

          modelRegex is a regular expression filtering devices by their model name.

          nameRegex

          string

          nameRegex is a regular expression filtering devices by their name.

          +
          +
          +
          +

          .spec.placement

          +
          +

          Description

          +

          placement contains scheduling rules for NodeConfig Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          affinity

          object

          affinity is a group of affinity scheduling rules for NodeConfig Pods.

          nodeSelector

          object

          nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node.

          tolerations

          array (object)

          tolerations is a group of tolerations NodeConfig Pods are going to have.

          +
          +
          +
          +

          .spec.placement.affinity

          +
          +

          Description

          +

          affinity is a group of affinity scheduling rules for NodeConfig Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          nodeAffinity

          object

          Describes node affinity scheduling rules for the pod.

          podAffinity

          object

          Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

          podAntiAffinity

          object

          Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

          +
          +
          +
          +

          .spec.placement.affinity.nodeAffinity

          +
          +

          Description

          +

          Describes node affinity scheduling rules for the pod.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          object

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

          +
          +
          +
          +

          .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preference

          object

          A node selector term, associated with the corresponding weight.

          weight

          integer

          Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

          +
          +

          Description

          +

          A node selector term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          A list of node selector requirements by node’s labels.

          matchFields

          array (object)

          A list of node selector requirements by node’s fields.

          +
          +
          +
          +

          .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

          +
          +

          Description

          +

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          nodeSelectorTerms

          array (object)

          Required. A list of node selector terms. The terms are ORed.

          +
          +
          +
          +

          .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

          +
          +

          Description

          +

          A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          A list of node selector requirements by node’s labels.

          matchFields

          array (object)

          A list of node selector requirements by node’s fields.

          +
          +
          +
          +

          .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity

          +
          +

          Description

          +

          Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          array (object)

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          podAffinityTerm

          object

          Required. A pod affinity term, associated with the corresponding weight.

          weight

          integer

          weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

          +
          +

          Description

          +

          Required. A pod affinity term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity

          +
          +

          Description

          +

          Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          array (object)

          If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          podAffinityTerm

          object

          Required. A pod affinity term, associated with the corresponding weight.

          weight

          integer

          weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

          +
          +

          Description

          +

          Required. A pod affinity term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.placement.nodeSelector

          +
          +

          Description

          +

          nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.placement.tolerations[]

          +
          +

          Description

          +

          The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          effect

          string

          Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

          key

          string

          Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

          operator

          string

          Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

          tolerationSeconds

          integer

          TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

          value

          string

          Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

          +
          +
          +
          +

          .status

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          conditions

          array (object)

          conditions represents the latest available observations of current state.

          nodeStatuses

          array (object)

          nodeStatuses hold the status for each tuned node.

          observedGeneration

          integer

          observedGeneration indicates the most recent generation observed by the controller.

          +
          +
          +
          +

          .status.conditions[]

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          lastTransitionTime

          string

          lastTransitionTime is last time the condition transitioned from one status to another.

          message

          string

          message is a human-readable message indicating details about the transition.

          observedGeneration

          integer

          observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

          reason

          string

          reason is the reason for condition’s last transition.

          status

          string

          status represents the state of the condition, one of True, False, or Unknown.

          type

          string

          type is the type of the NodeConfig condition.

          +
          +
          +
          +

          .status.nodeStatuses[]

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          tunedContainers

          array (string)

          tunedNode

          boolean

          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/api-reference/groups/scylla.scylladb.com/scyllaclusters.html b/stable/api-reference/groups/scylla.scylladb.com/scyllaclusters.html new file mode 100644 index 00000000000..354ce0a74ec --- /dev/null +++ b/stable/api-reference/groups/scylla.scylladb.com/scyllaclusters.html @@ -0,0 +1,7429 @@ + + + + + + + + + + + + + ScyllaCluster (scylla.scylladb.com/v1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          ScyllaCluster (scylla.scylladb.com/v1)

          +
          +
          APIVersion: scylla.scylladb.com/v1
          +
          Kind: ScyllaCluster
          +
          PluralName: scyllaclusters
          +
          SingularName: scyllacluster
          +
          Scope: Namespaced
          +
          ListKind: ScyllaClusterList
          +
          Served: true
          +
          Storage: true
          +
          +
          +

          Description

          +

          ScyllaCluster defines a Scylla cluster.

          +
          +
          +

          Specification

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          apiVersion

          string

          APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

          kind

          string

          Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

          metadata

          object

          spec

          object

          spec defines the desired state of this scylla cluster.

          status

          object

          status is the current status of this scylla cluster.

          +
          +

          .metadata

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec

          +
          +

          Description

          +

          spec defines the desired state of this scylla cluster.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          agentRepository

          string

          agentRepository is the repository to pull the agent image from.

          agentVersion

          string

          agentVersion indicates the version of Scylla Manager Agent to use.

          alternator

          object

          alternator designates this cluster an Alternator cluster.

          automaticOrphanedNodeCleanup

          boolean

          automaticOrphanedNodeCleanup controls if automatic orphan node cleanup should be performed.

          backups

          array (object)

          backups specifies backup tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored.

          cpuset

          boolean

          cpuset determines if the cluster will use cpu-pinning. Deprecated: cpuset is deprecated and may be ignored in the future.

          datacenter

          object

          datacenter holds a specification of a datacenter.

          developerMode

          boolean

          developerMode determines if the cluster runs in developer-mode.

          dnsDomains

          array (string)

          dnsDomains is a list of DNS domains this cluster is reachable by. These domains are used when setting up the infrastructure, like certificates. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

          exposeOptions

          object

          exposeOptions specifies options for exposing ScyllaCluster services. This field is immutable. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

          externalSeeds

          array (string)

          externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as “seeds” parameter of seed-provider.

          forceRedeploymentReason

          string

          forceRedeploymentReason can be used to force a rolling update of all racks by providing a unique string.

          genericUpgrade

          object

          genericUpgrade allows to configure behavior of generic upgrade logic.

          imagePullSecrets

          array (object)

          imagePullSecrets is an optional list of references to secrets in the same namespace used for pulling Scylla and Agent images.

          minReadySeconds

          integer

          minReadySeconds is the minimum number of seconds for which a newly created ScyllaDB node should be ready for it to be considered available. When used to control load balanced traffic, this can give the load balancer in front of a node enough time to notice that the node is ready and start forwarding traffic in time. Because it all depends on timing, the order is not guaranteed and, if possible, you should use readinessGates instead. If not provided, Operator will determine this value.

          minTerminationGracePeriodSeconds

          integer

          minTerminationGracePeriodSeconds specifies minimum duration in seconds to wait before every drained node is terminated. This gives time to potential load balancer in front of a node to notice that node is not ready anymore and stop forwarding new requests. This applies only when node is terminated gracefully. If not provided, Operator will determine this value. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

          network

          object

          network holds the networking config.

          podMetadata

          object

          podMetadata controls shared metadata for all pods created based on this spec.

          readinessGates

          array (object)

          readinessGates specifies custom readiness gates that will be evaluated for every ScyllaDB Pod readiness. It’s projected into every ScyllaDB Pod as its readinessGate. Refer to upstream documentation to learn more about readiness gates.

          repairs

          array (object)

          repairs specify repair tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored.

          repository

          string

          repository is the image repository to pull the Scylla image from.

          scyllaArgs

          string

          scyllaArgs will be appended to Scylla binary during startup. This is supported from 4.2.0 Scylla version.

          sysctls

          array (string)

          sysctls holds the sysctl properties to be applied during initialization given as a list of key=value pairs. Example: fs.aio-max-nr=232323

          version

          string

          version is a version tag of Scylla to use.

          +
          +
          +
          +

          .spec.alternator

          +
          +

          Description

          +

          alternator designates this cluster an Alternator cluster.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          insecureDisableAuthorization

          boolean

          insecureDisableAuthorization disables Alternator authorization. If not specified, the authorization is enabled. For backwards compatibility the authorization is disabled when this field is not specified and a manual port is used.

          insecureEnableHTTP

          boolean

          insecureEnableHTTP enables serving Alternator traffic also on insecure HTTP port.

          port

          integer

          port is the port number used to bind the Alternator API. Deprecated: port is deprecated and may be ignored in the future. Please make sure to avoid using hostNetworking and work with standard Kubernetes concepts like Services.

          servingCertificate

          object

          servingCertificate references a TLS certificate for serving secure traffic.

          writeIsolation

          string

          writeIsolation indicates the isolation level.

          +
          +
          +
          +

          .spec.alternator.servingCertificate

          +
          +

          Description

          +

          servingCertificate references a TLS certificate for serving secure traffic.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          operatorManagedOptions

          object

          operatorManagedOptions specifies options for certificates manged by the operator.

          type

          string

          type determines the source of this certificate.

          userManagedOptions

          object

          userManagedOptions specifies options for certificates manged by users.

          +
          +
          +
          +

          .spec.alternator.servingCertificate.operatorManagedOptions

          +
          +

          Description

          +

          operatorManagedOptions specifies options for certificates manged by the operator.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          additionalDNSNames

          array (string)

          additionalDNSNames represents external DNS names that the certificates should be signed for.

          additionalIPAddresses

          array (string)

          additionalIPAddresses represents external IP addresses that the certificates should be signed for.

          +
          +
          +
          +

          .spec.alternator.servingCertificate.userManagedOptions

          +
          +

          Description

          +

          userManagedOptions specifies options for certificates manged by users.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          secretName

          string

          secretName references a kubernetes.io/tls type secret containing the TLS cert and key.

          +
          +
          +
          +

          .spec.backups[]

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          cron

          string

          cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s].

          dc

          array (string)

          dc is a list of datacenter glob patterns, e.g. ‘dc1,!otherdc*’ used to specify the DCs to include or exclude from backup.

          interval

          string

          interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead.

          keyspace

          array (string)

          keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

          location

          array (string)

          location is a list of backup locations in the format [<dc>:]<provider>:<name> ex. s3:my-bucket. The <dc>: part is optional and is only needed when different datacenters are being used to upload data to different locations. <name> must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden. The only supported storage <provider> at the moment are s3 and gcs.

          name

          string

          name specifies the name of a task.

          numRetries

          integer

          numRetries indicates how many times a scheduled task will be retried before failing.

          rateLimit

          array (string)

          rateLimit is a list of megabytes (MiB) per second rate limits expressed in the format [<dc>:]<limit>. The <dc>: part is optional and only needed when different datacenters need different upload limits. Set to 0 for no limit (default 100).

          retention

          integer

          retention is the number of backups which are to be stored.

          snapshotParallel

          array (string)

          snapshotParallel is a list of snapshot parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set, the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

          startDate

          string

          startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

          timezone

          string

          timezone specifies the timezone of cron field.

          uploadParallel

          array (string)

          uploadParallel is a list of upload parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

          +
          +
          +
          +

          .spec.datacenter

          +
          +

          Description

          +

          datacenter holds a specification of a datacenter.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          name is the name of the scylla datacenter. Used in the cassandra-rackdc.properties file.

          racks

          array (object)

          racks specify the racks in the datacenter.

          +
          +
          +
          +

          .spec.datacenter.racks[]

          +
          +

          Description

          +

          RackSpec is the desired state for a Scylla Rack.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          agentResources

          object

          agentResources specify the resources for the Agent container.

          agentVolumeMounts

          array (object)

          AgentVolumeMounts to be added to Agent container.

          members

          integer

          members is the number of Scylla instances in this rack.

          name

          string

          name is the name of the Scylla Rack. Used in the cassandra-rackdc.properties file.

          placement

          object

          placement describes restrictions for the nodes Scylla is scheduled on.

          resources

          object

          resources the Scylla container will use.

          scyllaAgentConfig

          string

          Scylla config map name to customize scylla manager agent

          scyllaConfig

          string

          Scylla config map name to customize scylla.yaml

          storage

          object

          storage describes the underlying storage that Scylla will consume.

          volumeMounts

          array (object)

          VolumeMounts to be added to Scylla container.

          volumes

          array (object)

          Volumes added to Scylla Pod.

          +
          +
          +
          +

          .spec.datacenter.racks[].agentResources

          +
          +

          Description

          +

          agentResources specify the resources for the Agent container.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          claims

          array (object)

          +
          Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

          This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

          +
          +
          +

          limits

          object

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          requests

          object

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +
          +

          .spec.datacenter.racks[].agentResources.claims[]

          +
          +

          Description

          +

          ResourceClaim references one entry in PodSpec.ResourceClaims.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

          +
          +
          +
          +

          .spec.datacenter.racks[].agentResources.limits

          +
          +

          Description

          +

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].agentResources.requests

          +
          +

          Description

          +

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].agentVolumeMounts[]

          +
          +

          Description

          +

          VolumeMount describes a mounting of a Volume within a container.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          mountPath

          string

          Path within the container at which the volume should be mounted. Must not contain ‘:’.

          mountPropagation

          string

          mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

          name

          string

          This must match the Name of a Volume.

          readOnly

          boolean

          Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

          subPath

          string

          Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

          subPathExpr

          string

          Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement

          +
          +

          Description

          +

          placement describes restrictions for the nodes Scylla is scheduled on.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          nodeAffinity

          object

          nodeAffinity describes node affinity scheduling rules for the pod.

          podAffinity

          object

          podAffinity describes pod affinity scheduling rules.

          podAntiAffinity

          object

          podAntiAffinity describes pod anti-affinity scheduling rules.

          tolerations

          array (object)

          tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.nodeAffinity

          +
          +

          Description

          +

          nodeAffinity describes node affinity scheduling rules for the pod.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          object

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preference

          object

          A node selector term, associated with the corresponding weight.

          weight

          integer

          Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

          +
          +

          Description

          +

          A node selector term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          A list of node selector requirements by node’s labels.

          matchFields

          array (object)

          A list of node selector requirements by node’s fields.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

          +
          +

          Description

          +

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          nodeSelectorTerms

          array (object)

          Required. A list of node selector terms. The terms are ORed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

          +
          +

          Description

          +

          A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          A list of node selector requirements by node’s labels.

          matchFields

          array (object)

          A list of node selector requirements by node’s fields.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity

          +
          +

          Description

          +

          podAffinity describes pod affinity scheduling rules.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          array (object)

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          podAffinityTerm

          object

          Required. A pod affinity term, associated with the corresponding weight.

          weight

          integer

          weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

          +
          +

          Description

          +

          Required. A pod affinity term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity

          +
          +

          Description

          +

          podAntiAffinity describes pod anti-affinity scheduling rules.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          array (object)

          If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          podAffinityTerm

          object

          Required. A pod affinity term, associated with the corresponding weight.

          weight

          integer

          weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

          +
          +

          Description

          +

          Required. A pod affinity term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].placement.tolerations[]

          +
          +

          Description

          +

          The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          effect

          string

          Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

          key

          string

          Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

          operator

          string

          Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

          tolerationSeconds

          integer

          TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

          value

          string

          Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

          +
          +
          +
          +

          .spec.datacenter.racks[].resources

          +
          +

          Description

          +

          resources the Scylla container will use.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          claims

          array (object)

          +
          Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

          This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

          +
          +
          +

          limits

          object

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          requests

          object

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +
          +

          .spec.datacenter.racks[].resources.claims[]

          +
          +

          Description

          +

          ResourceClaim references one entry in PodSpec.ResourceClaims.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

          +
          +
          +
          +

          .spec.datacenter.racks[].resources.limits

          +
          +

          Description

          +

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].resources.requests

          +
          +

          Description

          +

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].storage

          +
          +

          Description

          +

          storage describes the underlying storage that Scylla will consume.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          capacity

          string

          capacity describes the requested size of each persistent volume.

          metadata

          object

          metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

          storageClassName

          string

          storageClassName is the name of a storageClass to request.

          +
          +
          +
          +

          .spec.datacenter.racks[].storage.metadata

          +
          +

          Description

          +

          metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          annotations

          object

          annotations is a custom key value map that gets merged with managed object annotations.

          labels

          object

          labels is a custom key value map that gets merged with managed object labels.

          +
          +
          +
          +

          .spec.datacenter.racks[].storage.metadata.annotations

          +
          +

          Description

          +

          annotations is a custom key value map that gets merged with managed object annotations.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].storage.metadata.labels

          +
          +

          Description

          +

          labels is a custom key value map that gets merged with managed object labels.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].volumeMounts[]

          +
          +

          Description

          +

          VolumeMount describes a mounting of a Volume within a container.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          mountPath

          string

          Path within the container at which the volume should be mounted. Must not contain ‘:’.

          mountPropagation

          string

          mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

          name

          string

          This must match the Name of a Volume.

          readOnly

          boolean

          Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

          subPath

          string

          Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

          subPathExpr

          string

          Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[]

          +
          +

          Description

          +

          Volume represents a named volume in a pod that may be accessed by any container in the pod.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          awsElasticBlockStore

          object

          awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

          azureDisk

          object

          azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

          azureFile

          object

          azureFile represents an Azure File Service mount on the host and bind mount to the pod.

          cephfs

          object

          cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

          cinder

          object

          cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

          configMap

          object

          configMap represents a configMap that should populate this volume

          csi

          object

          csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

          downwardAPI

          object

          downwardAPI represents downward API about the pod that should populate this volume

          emptyDir

          object

          emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

          ephemeral

          object

          +
          ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

          Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

          +
          +
          +

          fc

          object

          fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

          flexVolume

          object

          flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

          flocker

          object

          flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

          gcePersistentDisk

          object

          gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

          gitRepo

          object

          gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

          glusterfs

          object

          glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

          hostPath

          object

          hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

          iscsi

          object

          iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

          name

          string

          name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

          nfs

          object

          nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

          persistentVolumeClaim

          object

          persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

          photonPersistentDisk

          object

          photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

          portworxVolume

          object

          portworxVolume represents a portworx volume attached and mounted on kubelets host machine

          projected

          object

          projected items for all in one resources secrets, configmaps, and downward API

          quobyte

          object

          quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

          rbd

          object

          rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

          scaleIO

          object

          scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

          secret

          object

          secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

          storageos

          object

          storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

          vsphereVolume

          object

          vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].awsElasticBlockStore

          +
          +

          Description

          +

          awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fsType

          string

          fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine

          partition

          integer

          partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty).

          readOnly

          boolean

          readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

          volumeID

          string

          volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].azureDisk

          +
          +

          Description

          +

          azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          cachingMode

          string

          cachingMode is the Host Caching mode: None, Read Only, Read Write.

          diskName

          string

          diskName is the Name of the data disk in the blob storage

          diskURI

          string

          diskURI is the URI of data disk in the blob storage

          fsType

          string

          fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

          kind

          string

          kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

          readOnly

          boolean

          readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].azureFile

          +
          +

          Description

          +

          azureFile represents an Azure File Service mount on the host and bind mount to the pod.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          readOnly

          boolean

          readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

          secretName

          string

          secretName is the name of secret that contains Azure Storage Account Name and Key

          shareName

          string

          shareName is the azure share Name

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].cephfs

          +
          +

          Description

          +

          cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          monitors

          array (string)

          monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

          path

          string

          path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /

          readOnly

          boolean

          readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

          secretFile

          string

          secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

          secretRef

          object

          secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

          user

          string

          user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].cephfs.secretRef

          +
          +

          Description

          +

          secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].cinder

          +
          +

          Description

          +

          cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fsType

          string

          fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

          readOnly

          boolean

          readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

          secretRef

          object

          secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

          volumeID

          string

          volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].cinder.secretRef

          +
          +

          Description

          +

          secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].configMap

          +
          +

          Description

          +

          configMap represents a configMap that should populate this volume

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          defaultMode

          integer

          defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

          items

          array (object)

          items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          optional

          boolean

          optional specify whether the ConfigMap or its keys must be defined

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].configMap.items[]

          +
          +

          Description

          +

          Maps a string key to a path within a volume.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the key to project.

          mode

          integer

          mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

          path

          string

          path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].csi

          +
          +

          Description

          +

          csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          driver

          string

          driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.

          fsType

          string

          fsType to mount. Ex. “ext4”, “xfs”, “ntfs”. If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.

          nodePublishSecretRef

          object

          nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

          readOnly

          boolean

          readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).

          volumeAttributes

          object

          volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef

          +
          +

          Description

          +

          nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].csi.volumeAttributes

          +
          +

          Description

          +

          volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].downwardAPI

          +
          +

          Description

          +

          downwardAPI represents downward API about the pod that should populate this volume

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          defaultMode

          integer

          Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

          items

          array (object)

          Items is a list of downward API volume file

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].downwardAPI.items[]

          +
          +

          Description

          +

          DownwardAPIVolumeFile represents information to create the file containing the pod field

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fieldRef

          object

          Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

          mode

          integer

          Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

          path

          string

          Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

          resourceFieldRef

          object

          Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef

          +
          +

          Description

          +

          Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          apiVersion

          string

          Version of the schema the FieldPath is written in terms of, defaults to “v1”.

          fieldPath

          string

          Path of the field to select in the specified API version.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef

          +
          +

          Description

          +

          Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          containerName

          string

          Container name: required for volumes, optional for env vars

          divisor

          Specifies the output format of the exposed resources, defaults to “1”

          resource

          string

          Required: resource to select

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].emptyDir

          +
          +

          Description

          +

          emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          medium

          string

          medium represents what type of storage medium should back this directory. The default is “” which means to use the node’s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

          sizeLimit

          sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral

          +
          +

          Description

          +
          +
          ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

          Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

          +
          +
          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          volumeClaimTemplate

          object

          +
          Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

          An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

          +
          +
          +
          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate

          +
          +

          Description

          +
          +
          Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

          An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

          +
          +
          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          metadata

          object

          May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

          spec

          object

          The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata

          +
          +

          Description

          +

          May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec

          +
          +

          Description

          +

          The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          accessModes

          array (string)

          accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

          dataSource

          object

          dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

          dataSourceRef

          object

          dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

          resources

          object

          resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

          selector

          object

          selector is a label query over volumes to consider for binding.

          storageClassName

          string

          storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

          volumeAttributesClassName

          string

          volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

          volumeMode

          string

          volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

          volumeName

          string

          volumeName is the binding reference to the PersistentVolume backing this claim.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource

          +
          +

          Description

          +

          dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          apiGroup

          string

          APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

          kind

          string

          Kind is the type of resource being referenced

          name

          string

          Name is the name of resource being referenced

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef

          +
          +

          Description

          +

          dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          apiGroup

          string

          APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

          kind

          string

          Kind is the type of resource being referenced

          name

          string

          Name is the name of resource being referenced

          namespace

          string

          Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources

          +
          +

          Description

          +

          resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          limits

          object

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          requests

          object

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits

          +
          +

          Description

          +

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests

          +
          +

          Description

          +

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector

          +
          +

          Description

          +

          selector is a label query over volumes to consider for binding.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].fc

          +
          +

          Description

          +

          fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fsType

          string

          fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine

          lun

          integer

          lun is Optional: FC target lun number

          readOnly

          boolean

          readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

          targetWWNs

          array (string)

          targetWWNs is Optional: FC target worldwide names (WWNs)

          wwids

          array (string)

          wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].flexVolume

          +
          +

          Description

          +

          flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          driver

          string

          driver is the name of the driver to use for this volume.

          fsType

          string

          fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. The default filesystem depends on FlexVolume script.

          options

          object

          options is Optional: this field holds extra command options if any.

          readOnly

          boolean

          readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

          secretRef

          object

          secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].flexVolume.options

          +
          +

          Description

          +

          options is Optional: this field holds extra command options if any.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].flexVolume.secretRef

          +
          +

          Description

          +

          secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].flocker

          +
          +

          Description

          +

          flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          datasetName

          string

          datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated

          datasetUUID

          string

          datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].gcePersistentDisk

          +
          +

          Description

          +

          gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fsType

          string

          fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine

          partition

          integer

          partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

          pdName

          string

          pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

          readOnly

          boolean

          readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].gitRepo

          +
          +

          Description

          +

          gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          directory

          string

          directory is the target directory name. Must not contain or start with ‘..’. If ‘.’ is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.

          repository

          string

          repository is the URL

          revision

          string

          revision is the commit hash for the specified revision.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].glusterfs

          +
          +

          Description

          +

          glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          endpoints

          string

          endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

          path

          string

          path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

          readOnly

          boolean

          readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].hostPath

          +
          +

          Description

          +

          hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          path

          string

          path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

          type

          string

          type for HostPath Volume Defaults to “” More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].iscsi

          +
          +

          Description

          +

          iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          chapAuthDiscovery

          boolean

          chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication

          chapAuthSession

          boolean

          chapAuthSession defines whether support iSCSI Session CHAP authentication

          fsType

          string

          fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine

          initiatorName

          string

          initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

          iqn

          string

          iqn is the target iSCSI Qualified Name.

          iscsiInterface

          string

          iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to ‘default’ (tcp).

          lun

          integer

          lun represents iSCSI Target Lun number.

          portals

          array (string)

          portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

          readOnly

          boolean

          readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

          secretRef

          object

          secretRef is the CHAP Secret for iSCSI target and initiator authentication

          targetPortal

          string

          targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].iscsi.secretRef

          +
          +

          Description

          +

          secretRef is the CHAP Secret for iSCSI target and initiator authentication

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].nfs

          +
          +

          Description

          +

          nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          path

          string

          path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

          readOnly

          boolean

          readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

          server

          string

          server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].persistentVolumeClaim

          +
          +

          Description

          +

          persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          claimName

          string

          claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

          readOnly

          boolean

          readOnly Will force the ReadOnly setting in VolumeMounts. Default false.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].photonPersistentDisk

          +
          +

          Description

          +

          photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fsType

          string

          fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

          pdID

          string

          pdID is the ID that identifies Photon Controller persistent disk

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].portworxVolume

          +
          +

          Description

          +

          portworxVolume represents a portworx volume attached and mounted on kubelets host machine

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fsType

          string

          fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”. Implicitly inferred to be “ext4” if unspecified.

          readOnly

          boolean

          readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

          volumeID

          string

          volumeID uniquely identifies a Portworx volume

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected

          +
          +

          Description

          +

          projected items for all in one resources secrets, configmaps, and downward API

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          defaultMode

          integer

          defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

          sources

          array (object)

          sources is the list of volume projections

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[]

          +
          +

          Description

          +

          Projection that may be projected along with other supported volume types

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          clusterTrustBundle

          object

          +
          ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

          Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

          +
          +
          +

          configMap

          object

          configMap information about the configMap data to project

          downwardAPI

          object

          downwardAPI information about the downwardAPI data to project

          secret

          object

          secret information about the secret data to project

          serviceAccountToken

          object

          serviceAccountToken is information about the serviceAccountToken data to project

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle

          +
          +

          Description

          +
          +
          ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

          Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

          +
          +
          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

          name

          string

          Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.

          optional

          boolean

          If true, don’t block pod startup if the referenced ClusterTrustBundle(s) aren’t available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.

          path

          string

          Relative path from the volume root to write the bundle.

          signerName

          string

          Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector

          +
          +

          Description

          +

          Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].configMap

          +
          +

          Description

          +

          configMap information about the configMap data to project

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          items

          array (object)

          items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          optional

          boolean

          optional specify whether the ConfigMap or its keys must be defined

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]

          +
          +

          Description

          +

          Maps a string key to a path within a volume.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the key to project.

          mode

          integer

          mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

          path

          string

          path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI

          +
          +

          Description

          +

          downwardAPI information about the downwardAPI data to project

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          items

          array (object)

          Items is a list of DownwardAPIVolume file

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]

          +
          +

          Description

          +

          DownwardAPIVolumeFile represents information to create the file containing the pod field

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fieldRef

          object

          Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

          mode

          integer

          Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

          path

          string

          Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

          resourceFieldRef

          object

          Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef

          +
          +

          Description

          +

          Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          apiVersion

          string

          Version of the schema the FieldPath is written in terms of, defaults to “v1”.

          fieldPath

          string

          Path of the field to select in the specified API version.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef

          +
          +

          Description

          +

          Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          containerName

          string

          Container name: required for volumes, optional for env vars

          divisor

          Specifies the output format of the exposed resources, defaults to “1”

          resource

          string

          Required: resource to select

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].secret

          +
          +

          Description

          +

          secret information about the secret data to project

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          items

          array (object)

          items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          optional

          boolean

          optional field specify whether the Secret or its key must be defined

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]

          +
          +

          Description

          +

          Maps a string key to a path within a volume.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the key to project.

          mode

          integer

          mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

          path

          string

          path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken

          +
          +

          Description

          +

          serviceAccountToken is information about the serviceAccountToken data to project

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          audience

          string

          audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.

          expirationSeconds

          integer

          expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.

          path

          string

          path is the path relative to the mount point of the file to project the token into.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].quobyte

          +
          +

          Description

          +

          quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          group

          string

          group to map volume access to Default is no group

          readOnly

          boolean

          readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

          registry

          string

          registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

          tenant

          string

          tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin

          user

          string

          user to map volume access to Defaults to serivceaccount user

          volume

          string

          volume is a string that references an already created Quobyte volume by name.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].rbd

          +
          +

          Description

          +

          rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fsType

          string

          fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine

          image

          string

          image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

          keyring

          string

          keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

          monitors

          array (string)

          monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

          pool

          string

          pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

          readOnly

          boolean

          readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

          secretRef

          object

          secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

          user

          string

          user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].rbd.secretRef

          +
          +

          Description

          +

          secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].scaleIO

          +
          +

          Description

          +

          scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fsType

          string

          fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Default is “xfs”.

          gateway

          string

          gateway is the host address of the ScaleIO API Gateway.

          protectionDomain

          string

          protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.

          readOnly

          boolean

          readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

          secretRef

          object

          secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

          sslEnabled

          boolean

          sslEnabled Flag enable/disable SSL communication with Gateway, default false

          storageMode

          string

          storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.

          storagePool

          string

          storagePool is the ScaleIO Storage Pool associated with the protection domain.

          system

          string

          system is the name of the storage system as configured in ScaleIO.

          volumeName

          string

          volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].scaleIO.secretRef

          +
          +

          Description

          +

          secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].secret

          +
          +

          Description

          +

          secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          defaultMode

          integer

          defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

          items

          array (object)

          items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

          optional

          boolean

          optional field specify whether the Secret or its keys must be defined

          secretName

          string

          secretName is the name of the secret in the pod’s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].secret.items[]

          +
          +

          Description

          +

          Maps a string key to a path within a volume.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the key to project.

          mode

          integer

          mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

          path

          string

          path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].storageos

          +
          +

          Description

          +

          storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fsType

          string

          fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

          readOnly

          boolean

          readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

          secretRef

          object

          secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

          volumeName

          string

          volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.

          volumeNamespace

          string

          volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod’s namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to “default” if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].storageos.secretRef

          +
          +

          Description

          +

          secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          +
          +
          +
          +

          .spec.datacenter.racks[].volumes[].vsphereVolume

          +
          +

          Description

          +

          vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          fsType

          string

          fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

          storagePolicyID

          string

          storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

          storagePolicyName

          string

          storagePolicyName is the storage Policy Based Management (SPBM) profile name.

          volumePath

          string

          volumePath is the path that identifies vSphere volume vmdk

          +
          +
          +
          +

          .spec.exposeOptions

          +
          +

          Description

          +

          exposeOptions specifies options for exposing ScyllaCluster services. This field is immutable. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          broadcastOptions

          object

          BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

          cql

          object

          cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

          nodeService

          object

          nodeService controls properties of Service dedicated for each ScyllaCluster node.

          +
          +
          +
          +

          .spec.exposeOptions.broadcastOptions

          +
          +

          Description

          +

          BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          clients

          object

          clients specifies options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

          nodes

          object

          nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

          +
          +
          +
          +

          .spec.exposeOptions.broadcastOptions.clients

          +
          +

          Description

          +

          clients specifies options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          podIP

          object

          podIP holds options related to Pod IP address.

          type

          string

          type of the address that is broadcasted.

          +
          +
          +
          +

          .spec.exposeOptions.broadcastOptions.clients.podIP

          +
          +

          Description

          +

          podIP holds options related to Pod IP address.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          source

          string

          sourceType specifies source of the Pod IP.

          +
          +
          +
          +

          .spec.exposeOptions.broadcastOptions.nodes

          +
          +

          Description

          +

          nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          podIP

          object

          podIP holds options related to Pod IP address.

          type

          string

          type of the address that is broadcasted.

          +
          +
          +
          +

          .spec.exposeOptions.broadcastOptions.nodes.podIP

          +
          +

          Description

          +

          podIP holds options related to Pod IP address.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          source

          string

          sourceType specifies source of the Pod IP.

          +
          +
          +
          +

          .spec.exposeOptions.cql

          +
          +

          Description

          +

          cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          ingress

          object

          ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

          +
          +
          +
          +

          .spec.exposeOptions.cql.ingress

          +
          +

          Description

          +

          ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          annotations

          object

          annotations is a custom key value map that gets merged with managed object annotations.

          disabled

          boolean

          disabled controls if Ingress object creation is disabled. Unless disabled, there is an Ingress objects created for every Scylla node. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

          ingressClassName

          string

          ingressClassName specifies Ingress class name. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

          labels

          object

          labels is a custom key value map that gets merged with managed object labels.

          +
          +
          +
          +

          .spec.exposeOptions.cql.ingress.annotations

          +
          +

          Description

          +

          annotations is a custom key value map that gets merged with managed object annotations.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.exposeOptions.cql.ingress.labels

          +
          +

          Description

          +

          labels is a custom key value map that gets merged with managed object labels.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.exposeOptions.nodeService

          +
          +

          Description

          +

          nodeService controls properties of Service dedicated for each ScyllaCluster node.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          allocateLoadBalancerNodePorts

          boolean

          allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

          annotations

          object

          annotations is a custom key value map that gets merged with managed object annotations.

          externalTrafficPolicy

          string

          externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

          internalTrafficPolicy

          string

          internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

          labels

          object

          labels is a custom key value map that gets merged with managed object labels.

          loadBalancerClass

          string

          loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

          type

          string

          type is the Kubernetes Service type.

          +
          +
          +
          +

          .spec.exposeOptions.nodeService.annotations

          +
          +

          Description

          +

          annotations is a custom key value map that gets merged with managed object annotations.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.exposeOptions.nodeService.labels

          +
          +

          Description

          +

          labels is a custom key value map that gets merged with managed object labels.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.genericUpgrade

          +
          +

          Description

          +

          genericUpgrade allows to configure behavior of generic upgrade logic.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          failureStrategy

          string

          failureStrategy specifies which logic is executed when upgrade failure happens. Currently only Retry is supported.

          pollInterval

          string

          pollInterval specifies how often upgrade logic polls on state updates. Increasing this value should lower number of requests sent to apiserver, but it may affect overall time spent during upgrade. DEPRECATED.

          +
          +
          +
          +

          .spec.imagePullSecrets[]

          +
          +

          Description

          +

          LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

          +
          +
          +
          +

          .spec.network

          +
          +

          Description

          +

          network holds the networking config.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          dnsPolicy

          string

          dnsPolicy defines how a pod’s DNS will be configured.

          hostNetworking

          boolean

          hostNetworking determines if scylla uses the host’s network namespace. Setting this option avoids going through Kubernetes SDN and exposes scylla on node’s IP.

          +
          +
          +
          +

          .spec.podMetadata

          +
          +

          Description

          +

          podMetadata controls shared metadata for all pods created based on this spec.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          annotations

          object

          annotations is a custom key value map that gets merged with managed object annotations.

          labels

          object

          labels is a custom key value map that gets merged with managed object labels.

          +
          +
          +
          +

          .spec.podMetadata.annotations

          +
          +

          Description

          +

          annotations is a custom key value map that gets merged with managed object annotations.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.podMetadata.labels

          +
          +

          Description

          +

          labels is a custom key value map that gets merged with managed object labels.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.readinessGates[]

          +
          +

          Description

          +

          PodReadinessGate contains the reference to a pod condition

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          conditionType

          string

          ConditionType refers to a condition in the pod’s condition list with matching type.

          +
          +
          +
          +

          .spec.repairs[]

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          cron

          string

          cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s].

          dc

          array (string)

          dc is a list of datacenter glob patterns, e.g. ‘dc1’, ‘!otherdc*’ used to specify the DCs to include or exclude from backup.

          failFast

          boolean

          failFast indicates if a repair should be stopped on first error.

          host

          string

          host specifies a host to repair. If empty, all hosts are repaired.

          intensity

          string

          intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs). Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs. Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume. For Scylla clusters that do not support row-level repair, intensity can be a decimal between (0,1). In that case it specifies percent of shards that can be repaired in parallel on a repair master node. For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1.

          interval

          string

          interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead.

          keyspace

          array (string)

          keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

          name

          string

          name specifies the name of a task.

          numRetries

          integer

          numRetries indicates how many times a scheduled task will be retried before failing.

          parallel

          integer

          parallel is the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used. The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes. The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2.

          smallTableThreshold

          string

          smallTableThreshold enable small table optimization for tables of size lower than given threshold. Supported units [B, MiB, GiB, TiB].

          startDate

          string

          startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

          timezone

          string

          timezone specifies the timezone of cron field.

          +
          +
          +
          +

          .status

          +
          +

          Description

          +

          status is the current status of this scylla cluster.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          availableMembers

          integer

          availableMembers is the number of ScyllaDB members in all racks that are available.

          backups

          array (object)

          backups reflects status of backup tasks.

          conditions

          array (object)

          conditions hold conditions describing ScyllaCluster state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False.

          managerId

          string

          managerId contains ID under which cluster was registered in Scylla Manager.

          members

          integer

          members is the number of ScyllaDB members in all racks.

          observedGeneration

          integer

          observedGeneration is the most recent generation observed for this ScyllaCluster. It corresponds to the ScyllaCluster’s generation, which is updated on mutation by the API Server.

          rackCount

          integer

          rackCount is the number of ScyllaDB racks in this cluster.

          racks

          object

          racks reflect status of cluster racks.

          readyMembers

          integer

          readyMembers is the number of ScyllaDB members in all racks that are ready.

          repairs

          array (object)

          repairs reflects status of repair tasks.

          upgrade

          object

          upgrade reflects state of ongoing upgrade procedure.

          +
          +
          +
          +

          .status.backups[]

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          cron

          string

          cron reflects the task schedule as a cron expression.

          dc

          array (string)

          dc reflects a list of datacenter glob patterns, e.g. ‘dc1,!otherdc*’ used to specify the DCs to include or exclude from backup.

          error

          string

          error holds the task error, if any.

          id

          string

          id reflects identification number of the repair task.

          interval

          string

          interval reflects a task schedule interval.

          keyspace

          array (string)

          keyspace reflects a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

          location

          array (string)

          location reflects a list of backup locations in the format [<dc>:]<provider>:<name> ex. s3:my-bucket.

          name

          string

          name reflects the name of a task.

          numRetries

          integer

          numRetries reflects how many times a scheduled task will be retried before failing.

          rateLimit

          array (string)

          rateLimit reflects a list of megabytes (MiB) per second rate limits expressed in the format [<dc>:]<limit>.

          retention

          integer

          retention reflects the number of backups which are to be stored.

          snapshotParallel

          array (string)

          snapshotParallel reflects a list of snapshot parallelism limits in the format [<dc>:]<limit>.

          startDate

          string

          startDate reflects the task start date expressed in the RFC3339 format

          timezone

          string

          timezone reflects the timezone of cron field.

          uploadParallel

          array (string)

          uploadParallel reflects a list of upload parallelism limits in the format [<dc>:]<limit>.

          +
          +
          +
          +

          .status.conditions[]

          +
          +

          Description

          +
          +
          Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example,

          type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:”conditions,omitempty” patchStrategy:”merge” patchMergeKey:”type” protobuf:”bytes,1,rep,name=conditions” +// other fields }

          +
          +
          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          lastTransitionTime

          string

          lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

          message

          string

          message is a human readable message indicating details about the transition. This may be an empty string.

          observedGeneration

          integer

          observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

          reason

          string

          reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

          status

          string

          status of the condition, one of True, False, Unknown.

          type

          string

          type of condition in CamelCase or in foo.example.com/CamelCase. — Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

          +
          +
          +
          +

          .status.racks

          +
          +

          Description

          +

          racks reflect status of cluster racks.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .status.repairs[]

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          cron

          string

          cron reflects the task schedule as a cron expression.

          dc

          array (string)

          dc reflects a list of datacenter glob patterns, e.g. ‘dc1’, ‘!otherdc*’ used to specify the DCs to include or exclude from repair.

          error

          string

          error holds the task error, if any.

          failFast

          boolean

          failFast indicates if a repair should be stopped on first error.

          host

          string

          host reflects a host to repair.

          id

          string

          id reflects identification number of the repair task.

          intensity

          string

          intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1.

          interval

          string

          interval reflects a task schedule interval.

          keyspace

          array (string)

          keyspace reflects a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

          name

          string

          name reflects the name of a task.

          numRetries

          integer

          numRetries reflects how many times a scheduled task will be retried before failing.

          parallel

          integer

          parallel reflects the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas).

          smallTableThreshold

          string

          smallTableThreshold reflects whether small table optimization for tables, of size lower than given threshold, are enabled.

          startDate

          string

          startDate reflects the task start date expressed in the RFC3339 format

          timezone

          string

          timezone reflects the timezone of cron field.

          +
          +
          +
          +

          .status.upgrade

          +
          +

          Description

          +

          upgrade reflects state of ongoing upgrade procedure.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          currentNode

          string

          currentNode node under upgrade. DEPRECATED.

          currentRack

          string

          currentRack rack under upgrade. DEPRECATED.

          dataSnapshotTag

          string

          dataSnapshotTag is the snapshot tag of data keyspaces.

          fromVersion

          string

          fromVersion reflects from which version ScyllaCluster is being upgraded.

          state

          string

          state reflects current upgrade state.

          systemSnapshotTag

          string

          systemSnapshotTag is the snapshot tag of system keyspaces.

          toVersion

          string

          toVersion reflects to which version ScyllaCluster is being upgraded.

          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html b/stable/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html new file mode 100644 index 00000000000..37d8f7990c0 --- /dev/null +++ b/stable/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html @@ -0,0 +1,5287 @@ + + + + + + + + + + + + + ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)

          +
          +
          APIVersion: scylla.scylladb.com/v1alpha1
          +
          Kind: ScyllaDBMonitoring
          +
          PluralName: scylladbmonitorings
          +
          SingularName: scylladbmonitoring
          +
          Scope: Namespaced
          +
          ListKind: ScyllaDBMonitoringList
          +
          Served: true
          +
          Storage: true
          +
          +
          +

          Description

          +

          ScyllaDBMonitoring defines a monitoring instance for ScyllaDB clusters.

          +
          +
          +

          Specification

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          apiVersion

          string

          APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

          kind

          string

          Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

          metadata

          object

          spec

          object

          spec defines the desired state of this ScyllaDBMonitoring.

          status

          object

          status is the current status of this ScyllaDBMonitoring.

          +
          +

          .metadata

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec

          +
          +

          Description

          +

          spec defines the desired state of this ScyllaDBMonitoring.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          components

          object

          components hold additional config for the monitoring components in use.

          endpointsSelector

          object

          endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors.

          type

          string

          type determines the platform type of the monitoring setup.

          +
          +
          +
          +

          .spec.components

          +
          +

          Description

          +

          components hold additional config for the monitoring components in use.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          grafana

          object

          grafana holds configuration for the grafana instance, if any.

          prometheus

          object

          prometheus holds configuration for the prometheus instance, if any.

          +
          +
          +
          +

          .spec.components.grafana

          +
          +

          Description

          +

          grafana holds configuration for the grafana instance, if any.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          authentication

          object

          authentication hold the authentication options for accessing Grafana.

          exposeOptions

          object

          exposeOptions specifies options for exposing Grafana UI.

          placement

          object

          placement describes restrictions for the nodes Grafana is scheduled on.

          resources

          object

          resources the Grafana container will use.

          servingCertSecretName

          string

          servingCertSecretName is the name of the secret holding a serving cert-key pair. If not specified, the operator will create a self-signed CA that creates the default serving cert-key pair.

          +
          +
          +
          +

          .spec.components.grafana.authentication

          +
          +

          Description

          +

          authentication hold the authentication options for accessing Grafana.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          insecureEnableAnonymousAccess

          boolean

          insecureEnableAnonymousAccess allows access to Grafana without authentication.

          +
          +
          +
          +

          .spec.components.grafana.exposeOptions

          +
          +

          Description

          +

          exposeOptions specifies options for exposing Grafana UI.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          webInterface

          object

          webInterface specifies expose options for the user web interface.

          +
          +
          +
          +

          .spec.components.grafana.exposeOptions.webInterface

          +
          +

          Description

          +

          webInterface specifies expose options for the user web interface.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          ingress

          object

          ingress is an Ingress configuration options.

          +
          +
          +
          +

          .spec.components.grafana.exposeOptions.webInterface.ingress

          +
          +

          Description

          +

          ingress is an Ingress configuration options.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          annotations

          object

          annotations specifies custom annotations merged into every Ingress object.

          disabled

          boolean

          disabled controls if Ingress object creation is disabled.

          dnsDomains

          array (string)

          dnsDomains is a list of DNS domains this ingress is reachable by.

          ingressClassName

          string

          ingressClassName specifies Ingress class name.

          +
          +
          +
          +

          .spec.components.grafana.exposeOptions.webInterface.ingress.annotations

          +
          +

          Description

          +

          annotations specifies custom annotations merged into every Ingress object.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.grafana.placement

          +
          +

          Description

          +

          placement describes restrictions for the nodes Grafana is scheduled on.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          nodeAffinity

          object

          nodeAffinity describes node affinity scheduling rules for the pod.

          podAffinity

          object

          podAffinity describes pod affinity scheduling rules.

          podAntiAffinity

          object

          podAntiAffinity describes pod anti-affinity scheduling rules.

          tolerations

          array (object)

          tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

          +
          +
          +
          +

          .spec.components.grafana.placement.nodeAffinity

          +
          +

          Description

          +

          nodeAffinity describes node affinity scheduling rules for the pod.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          object

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

          +
          +
          +
          +

          .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preference

          object

          A node selector term, associated with the corresponding weight.

          weight

          integer

          Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

          +
          +

          Description

          +

          A node selector term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          A list of node selector requirements by node’s labels.

          matchFields

          array (object)

          A list of node selector requirements by node’s fields.

          +
          +
          +
          +

          .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

          +
          +

          Description

          +

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          nodeSelectorTerms

          array (object)

          Required. A list of node selector terms. The terms are ORed.

          +
          +
          +
          +

          .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

          +
          +

          Description

          +

          A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          A list of node selector requirements by node’s labels.

          matchFields

          array (object)

          A list of node selector requirements by node’s fields.

          +
          +
          +
          +

          .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity

          +
          +

          Description

          +

          podAffinity describes pod affinity scheduling rules.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          array (object)

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          podAffinityTerm

          object

          Required. A pod affinity term, associated with the corresponding weight.

          weight

          integer

          weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

          +
          +

          Description

          +

          Required. A pod affinity term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity

          +
          +

          Description

          +

          podAntiAffinity describes pod anti-affinity scheduling rules.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          array (object)

          If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          podAffinityTerm

          object

          Required. A pod affinity term, associated with the corresponding weight.

          weight

          integer

          weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

          +
          +

          Description

          +

          Required. A pod affinity term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.grafana.placement.tolerations[]

          +
          +

          Description

          +

          The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          effect

          string

          Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

          key

          string

          Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

          operator

          string

          Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

          tolerationSeconds

          integer

          TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

          value

          string

          Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

          +
          +
          +
          +

          .spec.components.grafana.resources

          +
          +

          Description

          +

          resources the Grafana container will use.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          claims

          array (object)

          +
          Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

          This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

          +
          +
          +

          limits

          object

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          requests

          object

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +
          +

          .spec.components.grafana.resources.claims[]

          +
          +

          Description

          +

          ResourceClaim references one entry in PodSpec.ResourceClaims.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

          +
          +
          +
          +

          .spec.components.grafana.resources.limits

          +
          +

          Description

          +

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.grafana.resources.requests

          +
          +

          Description

          +

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus

          +
          +

          Description

          +

          prometheus holds configuration for the prometheus instance, if any.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          exposeOptions

          object

          exposeOptions specifies options for exposing Prometheus UI.

          placement

          object

          placement describes restrictions for the nodes Prometheus is scheduled on.

          resources

          object

          resources the Prometheus container will use.

          storage

          object

          storage describes the underlying storage that Prometheus will consume.

          +
          +
          +
          +

          .spec.components.prometheus.exposeOptions

          +
          +

          Description

          +

          exposeOptions specifies options for exposing Prometheus UI.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          webInterface

          object

          webInterface specifies expose options for the user web interface.

          +
          +
          +
          +

          .spec.components.prometheus.exposeOptions.webInterface

          +
          +

          Description

          +

          webInterface specifies expose options for the user web interface.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          ingress

          object

          ingress is an Ingress configuration options.

          +
          +
          +
          +

          .spec.components.prometheus.exposeOptions.webInterface.ingress

          +
          +

          Description

          +

          ingress is an Ingress configuration options.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          annotations

          object

          annotations specifies custom annotations merged into every Ingress object.

          disabled

          boolean

          disabled controls if Ingress object creation is disabled.

          dnsDomains

          array (string)

          dnsDomains is a list of DNS domains this ingress is reachable by.

          ingressClassName

          string

          ingressClassName specifies Ingress class name.

          +
          +
          +
          +

          .spec.components.prometheus.exposeOptions.webInterface.ingress.annotations

          +
          +

          Description

          +

          annotations specifies custom annotations merged into every Ingress object.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.placement

          +
          +

          Description

          +

          placement describes restrictions for the nodes Prometheus is scheduled on.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          nodeAffinity

          object

          nodeAffinity describes node affinity scheduling rules for the pod.

          podAffinity

          object

          podAffinity describes pod affinity scheduling rules.

          podAntiAffinity

          object

          podAntiAffinity describes pod anti-affinity scheduling rules.

          tolerations

          array (object)

          tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

          +
          +
          +
          +

          .spec.components.prometheus.placement.nodeAffinity

          +
          +

          Description

          +

          nodeAffinity describes node affinity scheduling rules for the pod.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          object

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

          +
          +
          +
          +

          .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preference

          object

          A node selector term, associated with the corresponding weight.

          weight

          integer

          Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

          +
          +

          Description

          +

          A node selector term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          A list of node selector requirements by node’s labels.

          matchFields

          array (object)

          A list of node selector requirements by node’s fields.

          +
          +
          +
          +

          .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

          +
          +

          Description

          +

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          nodeSelectorTerms

          array (object)

          Required. A list of node selector terms. The terms are ORed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

          +
          +

          Description

          +

          A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          A list of node selector requirements by node’s labels.

          matchFields

          array (object)

          A list of node selector requirements by node’s fields.

          +
          +
          +
          +

          .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

          +
          +

          Description

          +

          A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          The label key that the selector applies to.

          operator

          string

          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

          values

          array (string)

          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity

          +
          +

          Description

          +

          podAffinity describes pod affinity scheduling rules.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          array (object)

          If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          podAffinityTerm

          object

          Required. A pod affinity term, associated with the corresponding weight.

          weight

          integer

          weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

          +
          +

          Description

          +

          Required. A pod affinity term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity

          +
          +

          Description

          +

          podAntiAffinity describes pod anti-affinity scheduling rules.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          preferredDuringSchedulingIgnoredDuringExecution

          array (object)

          The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

          requiredDuringSchedulingIgnoredDuringExecution

          array (object)

          If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          podAffinityTerm

          object

          Required. A pod affinity term, associated with the corresponding weight.

          weight

          integer

          weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

          +
          +

          Description

          +

          Required. A pod affinity term, associated with the corresponding weight.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

          +
          +

          Description

          +

          Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          labelSelector

          object

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          matchLabelKeys

          array (string)

          MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          mismatchLabelKeys

          array (string)

          MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

          namespaceSelector

          object

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          namespaces

          array (string)

          namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

          topologyKey

          string

          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

          +
          +

          Description

          +

          A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

          +
          +

          Description

          +

          A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.placement.tolerations[]

          +
          +

          Description

          +

          The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          effect

          string

          Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

          key

          string

          Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

          operator

          string

          Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

          tolerationSeconds

          integer

          TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

          value

          string

          Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

          +
          +
          +
          +

          .spec.components.prometheus.resources

          +
          +

          Description

          +

          resources the Prometheus container will use.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          claims

          array (object)

          +
          Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

          This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

          +
          +
          +

          limits

          object

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          requests

          object

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +
          +

          .spec.components.prometheus.resources.claims[]

          +
          +

          Description

          +

          ResourceClaim references one entry in PodSpec.ResourceClaims.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + +

          Property

          Type

          Description

          name

          string

          Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

          +
          +
          +
          +

          .spec.components.prometheus.resources.limits

          +
          +

          Description

          +

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.resources.requests

          +
          +

          Description

          +

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.storage

          +
          +

          Description

          +

          storage describes the underlying storage that Prometheus will consume.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          annotations

          object

          Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations

          labels

          object

          Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels

          volumeClaimTemplate

          object

          volumeClaimTemplates is a PVC template defining storage to be used by Prometheus.

          +
          +
          +
          +

          .spec.components.prometheus.storage.annotations

          +
          +

          Description

          +

          Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.storage.labels

          +
          +

          Description

          +

          Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.storage.volumeClaimTemplate

          +
          +

          Description

          +

          volumeClaimTemplates is a PVC template defining storage to be used by Prometheus.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          metadata

          object

          May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

          spec

          object

          The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

          +
          +
          +
          +

          .spec.components.prometheus.storage.volumeClaimTemplate.metadata

          +
          +

          Description

          +

          May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.storage.volumeClaimTemplate.spec

          +
          +

          Description

          +

          The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          accessModes

          array (string)

          accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

          dataSource

          object

          dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

          dataSourceRef

          object

          dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

          resources

          object

          resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

          selector

          object

          selector is a label query over volumes to consider for binding.

          storageClassName

          string

          storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

          volumeAttributesClassName

          string

          volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

          volumeMode

          string

          volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

          volumeName

          string

          volumeName is the binding reference to the PersistentVolume backing this claim.

          +
          +
          +
          +

          .spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource

          +
          +

          Description

          +

          dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          apiGroup

          string

          APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

          kind

          string

          Kind is the type of resource being referenced

          name

          string

          Name is the name of resource being referenced

          +
          +
          +
          +

          .spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef

          +
          +

          Description

          +

          dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          apiGroup

          string

          APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

          kind

          string

          Kind is the type of resource being referenced

          name

          string

          Name is the name of resource being referenced

          namespace

          string

          Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

          +
          +
          +
          +

          .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources

          +
          +

          Description

          +

          resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          limits

          object

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          requests

          object

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +
          +

          .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits

          +
          +

          Description

          +

          Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests

          +
          +

          Description

          +

          Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector

          +
          +

          Description

          +

          selector is a label query over volumes to consider for binding.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec.endpointsSelector

          +
          +

          Description

          +

          endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          matchExpressions

          array (object)

          matchExpressions is a list of label selector requirements. The requirements are ANDed.

          matchLabels

          object

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +
          +

          .spec.endpointsSelector.matchExpressions[]

          +
          +

          Description

          +

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          key

          string

          key is the label key that the selector applies to.

          operator

          string

          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

          values

          array (string)

          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

          +
          +
          +
          +

          .spec.endpointsSelector.matchLabels

          +
          +

          Description

          +

          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .status

          +
          +

          Description

          +

          status is the current status of this ScyllaDBMonitoring.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          conditions

          array (object)

          conditions hold conditions describing ScyllaDBMonitoring state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False.

          observedGeneration

          integer

          observedGeneration is the most recent generation observed for this ScyllaDBMonitoring. It corresponds to the ScyllaDBMonitoring’s generation, which is updated on mutation by the API Server.

          +
          +
          +
          +

          .status.conditions[]

          +
          +

          Description

          +
          +
          Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example,

          type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:”conditions,omitempty” patchStrategy:”merge” patchMergeKey:”type” protobuf:”bytes,1,rep,name=conditions” +// other fields }

          +
          +
          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          lastTransitionTime

          string

          lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

          message

          string

          message is a human readable message indicating details about the transition. This may be an empty string.

          observedGeneration

          integer

          observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

          reason

          string

          reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

          status

          string

          status of the condition, one of True, False, Unknown.

          type

          string

          type of condition in CamelCase or in foo.example.com/CamelCase. — Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html b/stable/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html new file mode 100644 index 00000000000..c2a3a47c204 --- /dev/null +++ b/stable/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html @@ -0,0 +1,780 @@ + + + + + + + + + + + + + ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)

          +
          +
          APIVersion: scylla.scylladb.com/v1alpha1
          +
          Kind: ScyllaOperatorConfig
          +
          PluralName: scyllaoperatorconfigs
          +
          SingularName: scyllaoperatorconfig
          +
          Scope: Cluster
          +
          ListKind: ScyllaOperatorConfigList
          +
          Served: true
          +
          Storage: true
          +
          +
          +

          Description

          +

          ScyllaOperatorConfig describes the Scylla Operator configuration.

          +
          +
          +

          Specification

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          apiVersion

          string

          APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

          kind

          string

          Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

          metadata

          object

          spec

          object

          spec defines the desired state of the operator.

          status

          object

          status defines the observed state of the operator.

          +
          +

          .metadata

          +
          +

          Description

          +
          +
          +

          Type

          +

          object

          +
          +
          +
          +

          .spec

          +
          +

          Description

          +

          spec defines the desired state of the operator.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          scyllaUtilsImage

          string

          scyllaUtilsImage is a ScyllaDB image used for running ScyllaDB utilities.

          unsupportedBashToolsImageOverride

          string

          unsupportedBashToolsImageOverride allows to adjust a generic Bash image with extra tools used by the operator for auxiliary purposes. Setting this field renders your cluster unsupported. Use at your own risk.

          unsupportedGrafanaImageOverride

          string

          unsupportedGrafanaImageOverride allows to adjust Grafana image used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk.

          unsupportedPrometheusVersionOverride

          string

          unsupportedPrometheusVersionOverride allows to adjust Prometheus version used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk.

          +
          +
          +
          +

          .status

          +
          +

          Description

          +

          status defines the observed state of the operator.

          +
          +
          +

          Type

          +

          object

          + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Property

          Type

          Description

          bashToolsImage

          string

          bashToolsImage is a generic Bash image with extra tools used by the operator for auxiliary purposes.

          grafanaImage

          string

          grafanaImage is the image used by the operator to create a Grafana instance.

          observedGeneration

          integer

          observedGeneration is the most recent generation observed for this ScyllaOperatorConfig. It corresponds to the ScyllaOperatorConfig’s generation, which is updated on mutation by the API Server.

          prometheusVersion

          string

          prometheusVersion is the Prometheus version used by the operator to create a Prometheus instance.

          scyllaDBUtilsImage

          string

          scyllaDBUtilsImage is the ScyllaDB image used for running ScyllaDB utilities.

          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/api-reference/index.html b/stable/api-reference/index.html new file mode 100644 index 00000000000..19eb0706d68 --- /dev/null +++ b/stable/api-reference/index.html @@ -0,0 +1,614 @@ + + + + + + + + + + + + + API Reference | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          API Reference

          +

          All APIs provided by Scylla Operator are defined using CRDs and adhere to Kubernetes API standards. You can find out how Kubernetes style REST APIs work on https://kubernetes.io/docs/reference/using-api/ and https://kubernetes.io/docs/reference/access-authn-authz/.

          +
          +

          API Groups and Kinds

          + +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/clients/alternator.html b/stable/clients/alternator.html new file mode 100644 index 00000000000..82ab304a6e0 --- /dev/null +++ b/stable/clients/alternator.html @@ -0,0 +1,693 @@ + + + + + + + + + + + + + Using Alternator (DynamoDB) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Using Alternator (DynamoDB)

          +

          Alternator is a DynamoDB compatible API provided by ScyllaDB. +You can enable it on your ScyllaClusters by adding this section:

          +
          spec:
          +  alternator: {}
          +
          +
          +

          While this is enough to turn it on, there are more options available. +Please refer to our API documentation for details.

          +
          +

          Note

          +

          Contrary to CQL clients, Alternator clients don’t need to connect to every ScyllaDB node directly, nor discover the ScyllaDB node IP addresses. +Alternator protocol is based on HTTP and you can also expose the service “manually” with other networking concepts like Ingresses.

          +
          +
          +

          Credentials

          +

          Scylla Operator enables Alternator authorization by default. +Here is a quick example of how to get the token for accessing Alternator API. +To find out more, please refer to ScyllaDB Alternator documentation.

          +
          +

          Caution

          +

          The salted_hash is only present if password authentication for CQL is set up.

          +

          Always make sure your clusters are configured to use Authentication and Authorization.

          +
          +
          +

          Tip

          +

          You can find a quick example that enables Authentication and Authorization here.

          +
          +
          kubectl exec -it service/<sc-name>-client -c scylla -- cqlsh --user <cql_user> \
          +-e "SELECT salted_hash FROM system_auth.roles WHERE role = '<cql_user>'"
          +
          +
          +
          +
          +

          AWS CLI

          +

          This paragraph shows how to use aws dynamodb cli to remotely connect to ScyllaDB Alternator API.

          +
          +

          Note

          +

          This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured networking options differently, +or are using additional networking concepts like Ingresses, this address will need to be adjusted.

          +
          +
          +

          Caution

          +

          At the time of writing this document kubectl exec -i echoes passwords into the terminal. +It can be avoided by manually running kubectl exec -it and copying the output into a file / variable. +Because using kubectl exec with -t option merges standard and error outputs, we can’t use it in the scripts bellow.

          +

          See https://github.com/kubernetes/kubernetes/issues/123913 for more details.

          +
          +
          SCYLLACLUSTER_NAME=scylladb
          +CQL_USER=cassandra
          +
          +
          +
          SCYLLADB_EP="$( kubectl get "service/${SCYLLACLUSTER_NAME}-client" -o='jsonpath={.spec.clusterIP}' )"
          +AWS_ENDPOINT_URL_DYNAMODB="https://${SCYLLADB_EP}:8043"
          +export AWS_ENDPOINT_URL_DYNAMODB
          +
          +AWS_ACCESS_KEY_ID="${CQL_USER}"
          +export AWS_ACCESS_KEY_ID
          +AWS_SECRET_ACCESS_KEY="$( kubectl exec -i "service/${SCYLLACLUSTER_NAME}-client" -c scylla -- cqlsh --user ${CQL_USER} --no-color \
          +-e "SELECT salted_hash from system_auth.roles WHERE role = '${AWS_ACCESS_KEY_ID}';" \
          +| sed -e 's/\r//g' | sed -e '4q;d' | sed -E -e 's/^\s+//' )"
          +export AWS_SECRET_ACCESS_KEY
          +
          +AWS_CA_BUNDLE="$( mktemp )"
          +export AWS_CA_BUNDLE
          +kubectl get "configmap/${SCYLLACLUSTER_NAME}-alternator-local-serving-ca" --template='{{ index .data "ca-bundle.crt" }}' > "${AWS_CA_BUNDLE}"
          +
          +
          +

          Now we can use aws dynamodb cli without modifications.

          +
          aws dynamodb create-table --table-name MusicCollection --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
          +
          +
          +
          TABLEDESCRIPTION        2024-03-01T16:35:41+01:00       5c8aae70-d7e1-11ee-a99e-6f31aaf1d6d3    MusicCollection ACTIVE
          +ATTRIBUTEDEFINITIONS    Artist  S
          +ATTRIBUTEDEFINITIONS    SongTitle       S
          +KEYSCHEMA       Artist  HASH
          +KEYSCHEMA       SongTitle       RANGE
          +PROVISIONEDTHROUGHPUT   5       5
          +
          +
          +
          aws dynamodb list-tables
          +
          +
          +
          TABLENAMES      MusicCollection
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/clients/cql.html b/stable/clients/cql.html new file mode 100644 index 00000000000..fc64a9b768c --- /dev/null +++ b/stable/clients/cql.html @@ -0,0 +1,739 @@ + + + + + + + + + + + + + Using CQL | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + + + +
          +

          Using CQL

          +

          cqlsh is the CQL shell for ScyllaDB. You can learn more about it in ScyllaDB documentation.

          +
          +

          Authentication and Authorization

          +

          For security reasons, you should always enable Authentication and Authorization. +At this point, this needs to be done manually in ScyllaDB Config. +You can find an example configuration bellow:

          +
          apiVersion: v1
          +kind: ConfigMap
          +metadata:
          +  name: scylla-config
          +data:
          +  scylla.yaml: |
          +    authenticator: PasswordAuthenticator
          +    authorizer: CassandraAuthorizer
          +
          +
          +
          +
          +

          Embedded cqlsh (aka localhost)

          +

          Every ScyllaDB node has an integrated cqlsh available. Here is an example of how it can be used:

          +
          + +
          +
          kubectl exec -it service/<sc-name>-client -c scylla -- cqlsh -u <user>
          +
          +
          +
          + +
          +
          kubectl exec -it pod/<sc-name>-<datacenter>-<node-index> -c scylla -- cqlsh -u <user>
          +
          +
          +
          +
          +
          Password: 
          +Connected to scylla at 127.0.0.1:9042
          +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4]
          +Use HELP for help.
          +<user>@cqlsh>
          +
          +
          +
          +
          +

          Remote cqlsh

          +

          This paragraph shows how to use cqlsh to remotely connect to a ScyllaDB node. +It is strongly recommended to access CQL over TLS connections on port 9142 instead of unencrypted 9042. +Note that Scylla Operator sets up TLS certificates by default and makes them accessible in the Kubernetes API, +so the encrypted port 9142 works by default.

          +
          +

          Caution

          +

          In future releases the unencrypted port 9042 will be disabled by default, unless explicitly opted-in.

          +
          +
          +

          Caution

          +

          To avoid unnecessary complexity, the following example simplifies how the credentials file is created. +Please create the credentials file with your text editor and avoid your password leaking into your bash history or environment variables. +To store the configuration permanently, please adjust SCYLLADB_CONFIG variable to an empty folder of your choice.

          +
          +
          +

          Note

          +

          This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured the networking options differently, +you may need to adjust this endpoint. Please refer to discovery documentation page.

          +
          +
          SCYLLADB_CONFIG="$( mktemp -d )" 
          +
          +cat <<EOF > "${SCYLLADB_CONFIG}/credentials"
          +[PlainTextAuthProvider]
          +username = <your_username>
          +password = <your_password>
          +EOF
          +chmod 600 "${SCYLLADB_CONFIG}/credentials"
          +
          +SCYLLADB_DISCOVERY_EP="$( kubectl get service/<sc-name>-client -o='jsonpath={.spec.clusterIP}' )"
          +kubectl get configmap/<sc-name>-local-serving-ca -o='jsonpath={.data.ca-bundle\.crt}' > "${SCYLLADB_CONFIG}/serving-ca-bundle.crt"
          +kubectl get secret/<sc-name>-local-user-admin -o='jsonpath={.data.tls\.crt}' | base64 -d > "${SCYLLADB_CONFIG}/admin.crt"
          +kubectl get secret/<sc-name>-local-user-admin -o='jsonpath={.data.tls\.key}' | base64 -d > "${SCYLLADB_CONFIG}/admin.key"
          +
          +cat <<EOF > "${SCYLLADB_CONFIG}/cqlshrc"
          +[authentication]
          +credentials = ${SCYLLADB_CONFIG}/credentials
          +[connection]
          +hostname = ${SCYLLADB_DISCOVERY_EP}
          +port = 9142
          +ssl=true
          +factory = cqlshlib.ssl.ssl_transport_factory
          +[ssl]
          +validate=true
          +certfile=${SCYLLADB_CONFIG}/serving-ca-bundle.crt
          +usercert=${SCYLLADB_CONFIG}/admin.crt
          +userkey=${SCYLLADB_CONFIG}/admin.key
          +EOF
          +
          +
          +
          + +
          +
          cqlsh --cqlshrc="${SCYLLADB_CONFIG}/cqlshrc"
          +
          +
          +
          + +
          +
          podman run -it --rm --entrypoint=cqlsh \
          +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro,Z" \
          +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro,Z" \
          +docker.io/scylladb/scylla:5.4.3
          +
          +
          +
          + +
          +
          docker run -it --rm --entrypoint=cqlsh \
          +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro" \
          +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro" \
          +docker.io/scylladb/scylla:5.4.3
          +
          +
          +
          +
          +
          Connected to scylla at <CLUSTER_IP>:9142
          +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4]
          +Use HELP for help.
          +<your_username>@cqlsh> 
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/clients/discovery.html b/stable/clients/discovery.html new file mode 100644 index 00000000000..7fcaab9c6a1 --- /dev/null +++ b/stable/clients/discovery.html @@ -0,0 +1,678 @@ + + + + + + + + + + + + + Discovering ScyllaDB Nodes | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Discovering ScyllaDB Nodes

          +
          +

          Preface

          +

          Outside the Kubernetes ecosystem, ScyllaDB nodes are usually set up on static IP addresses +and a fixed subset of them is configured as the initial contact points for ScyllaDB clients. +This has several disadvantages because this particular subset of nodes can be down at the time the client is (re)started, +or the nodes can be replaced and change their IP addresses. +The latter can be mitigated by using DNS and updating the records.

          +

          Scylla Operator allows setting up ScyllaDB in several network configurations, some of which are based on ephemeral IPs. +This makes solving the above-mentioned issues more pressing.

          +
          +
          +

          ScyllaDB Discovery Endpoint

          +

          For every ScyllaCluster, the operator will set up a Kubernetes Service (an internal load balancer) selecting all ScyllaDB nodes +and the internal Kubernetes controllers make sure to continuously update its endpoints with a subset of ScyllaDB nodes that are ready. +Because of that, you can always talk to ScyllaDB through this endpoint, as long as there are nodes to back it. +In case you are in the same Kubernetes cluster you can also use internal DNS for this service.

          +

          Clients can use this endpoint for the initial connection to reach one of the ScyllaDB nodes that are ready +and from there the drivers will automatically discover the per-node IP address for every ScyllaDB node that’s part of this cluster.

          +

          This service is called <sc-name>-client and in its default configuration it uses ClusterIP which is virtual and local to the Kubernetes cluster. +It can be configured to be backed by an external load balancer, be exposed through an Ingress, an additional hop or in other ways. +Depending on how you have configured the networking, use the appropriate IP address or DNS name for your client.

          +

          Here is an example of how the unmodified service looks like:

          +
          kubectl get scyllacluster/scylla service/scylla-client
          +
          +
          +
          NAME                                       READY   MEMBERS   RACKS   AVAILABLE   PROGRESSING   DEGRADED   AGE
          +scyllacluster.scylla.scylladb.com/scylla   1       1         1       True        True          True       10d
          +
          +NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                                                                                   AGE
          +service/scylla-client   ClusterIP   10.102.44.43   <none>        7000/TCP,7001/TCP,9042/TCP,9142/TCP,19042/TCP,19142/TCP,7199/TCP,10001/TCP,9180/TCP,5090/TCP,9100/TCP,9160/TCP,8043/TCP   10d
          +
          +
          +

          You can get only the ClusterIP using

          +
          kubectl get service/scylla-client -o='jsonpath={.spec.clusterIP}'
          +
          +
          +

          or use its DNS name (scylla-client.<sc-namespace>.svc).

          +
          +

          Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary

          +

          In case you are connecting from outside the Kubernetes cluster and using Pod IPs as your exposure type, you can expose just the <sc-name>-client service using an internal load balancer. +Having a stable contact point is especially important when using ephemeral Pod IPs. +Services configure internal load balancer using provider-specific annotations, so this may differ with your provider.

          +
          +

          Tip

          +

          To learn more about exposing ScyllaClusters, visit our dedicated documentation page.

          +
          +
          + +
          +
          kubectl patch service/<sc-name>-client -p '{"metadata": {"annotations": {"networking.gke.io/load-balancer-type": "Internal"}}, "spec": {"type": "LoadBalancer"}}'
          +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/<sc-name>-client
          +kubectl get service/<sc-name>-client -o='jsonpath={.status.loadBalancer.ingress[0].ip}'
          +
          +
          +
          + +
          +
          kubectl patch service/<sc-name>-client -p '{"metadata": {"annotations": {"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal", "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "tcp"}}, "spec": {"type": "LoadBalancer"}}'
          +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/<sc-name>-client
          +kubectl get service/<sc-name>-client -o='jsonpath={.status.loadBalancer.ingress[0].hostname}'
          +
          +
          +
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/clients/index.html b/stable/clients/index.html new file mode 100644 index 00000000000..ee9830a9bba --- /dev/null +++ b/stable/clients/index.html @@ -0,0 +1,595 @@ + + + + + + + + + + + + + Using ScyllaDB APIs | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Using ScyllaDB APIs

          + +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/contributing.html b/stable/contributing.html new file mode 100644 index 00000000000..f7a498747b3 --- /dev/null +++ b/stable/contributing.html @@ -0,0 +1,755 @@ + + + + + + + + + + + + + Contributing to Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Contributing to Scylla Operator

          +
          +

          Prerequisites

          +

          To develop on scylla-operator, your environment must have the following:

          +
            +
          1. Go 1.13

            +
              +
            • Make sure GOPATH is set to GOPATH=$HOME/go.

            • +
            +
          2. +
          3. Kustomize v3.1.0

          4. +
          5. kubebuilder v2.3.1

          6. +
          7. Docker

          8. +
          9. Git client installed

          10. +
          11. Github account

          12. +
          +

          To install all dependencies (Go, kustomize, kubebuilder, dep), simply run:

          +
          ./install-dependencies.sh
          +
          +
          +
          +
          +

          Initial Setup

          +
          +

          Create a Fork

          +

          From your browser navigate to http://github.com/scylladb/scylla-operator and click the “Fork” button.

          +
          +
          +

          Clone Your Fork

          +

          Open a console window and do the following:

          +
          # Create the scylla operator repo path
          +mkdir -p $GOPATH/src/github.com/scylladb
          +
          +# Navigate to the local repo path and clone your fork
          +cd $GOPATH/src/github.com/scylladb
          +
          +# Clone your fork, where <user> is your GitHub account name
          +git clone https://github.com/<user>/scylla-operator.git
          +
          +
          +
          +
          +

          Add Upstream Remote

          +

          First you will need to add the upstream remote to your local git:

          +
          # Add 'upstream' to the list of remotes
          +git remote add upstream https://github.com/scylladb/scylla-operator.git
          +
          +# Verify the remote was added
          +git remote -v
          +
          +
          +

          Now you should have at least origin and upstream remotes. You can also add other remotes to collaborate with other contributors.

          +
          +
          +
          +

          Development

          +

          To add a feature or to make a bug fix, you will need to create a branch in your fork and then submit a pull request (PR) from the branch.

          +
          +

          Building the project

          +

          You can build the project using the Makefile commands:

          +
            +
          • Open the Makefile and change the IMG environment variable to a repository you have access to.

          • +
          • Run make docker-push and wait for the image to be built and uploaded in your repo.

          • +
          +
          +
          +

          Create a Branch

          +

          From a console, create a new branch based on your fork and start working on it:

          +
          # Ensure all your remotes are up to date with the latest
          +git fetch --all
          +
          +# Create a new branch that is based off upstream master.  Give it a simple, but descriptive name.
          +# Generally it will be two to three words separated by dashes and without numbers.
          +git checkout -b feature-name upstream/master
          +
          +
          +

          Now you are ready to make the changes and commit to your branch.

          +
          +
          +

          Updating Your Fork

          +

          During the development lifecycle, you will need to keep up-to-date with the latest upstream master. As others on the team push changes, you will need to rebase your commits on top of the latest. This avoids unnecessary merge commits and keeps the commit history clean.

          +

          Whenever you need to update your local repository, you never want to merge. You always will rebase. Otherwise you will end up with merge commits in the git history. If you have any modified files, you will first have to stash them (git stash save -u "<some description>").

          +
          git fetch --all
          +git rebase upstream/master
          +
          +
          +

          Rebasing is a very powerful feature of Git. You need to understand how it works or else you will risk losing your work. Read about it in the Git documentation, it will be well worth it. In a nutshell, rebasing does the following:

          +
            +
          • “Unwinds” your local commits. Your local commits are removed temporarily from the history.

          • +
          • The latest changes from upstream are added to the history

          • +
          • Your local commits are re-applied one by one

          • +
          • If there are merge conflicts, you will be prompted to fix them before continuing. Read the output closely. It will tell you how to complete the rebase.

          • +
          • When done rebasing, you will see all of your commits in the history.

          • +
          +
          +
          +
          +

          Submitting a Pull Request

          +

          Once you have implemented the feature or bug fix in your branch, you will open a PR to the upstream repo. Before opening the PR ensure you have added unit tests, are passing the integration tests, cleaned your commit history, and have rebased on the latest upstream.

          +

          In order to open a pull request (PR) it is required to be up to date with the latest changes upstream. If other commits are pushed upstream before your PR is merged, you will also need to rebase again before it will be merged.

          +
          +

          Commit History

          +

          To prepare your branch to open a PR, you will need to have the minimal number of logical commits so we can maintain +a clean commit history. Most commonly a PR will include a single commit where all changes are squashed, although +sometimes there will be multiple logical commits.

          +
          # Inspect your commit history to determine if you need to squash commits
          +git log
          +
          +# Rebase the commits and edit, squash, or even reorder them as you determine will keep the history clean.
          +# In this example, the last 5 commits will be opened in the git rebase tool.
          +git rebase -i HEAD~5
          +
          +
          +

          Once your commit history is clean, ensure you have based on the latest upstream before you open the PR.

          +
          +
          +

          Commit messages

          +

          Please make the first line of your commit message a summary of the change that a user (not a developer) of Operator would like to read, +and prefix it with the most relevant directory of the change followed by a colon. +The changelog gets made by looking at just these first lines so make it good!

          +

          If you have more to say about the commit, then enter a blank line and carry on the description. +Remember to say why the change was needed - the commit itself shows what was changed.

          +

          Writing more is better than less. Comparing the behaviour before the change to that after the change is very useful. +Imagine you are writing to yourself in 12 months time when you’ve forgotten everything about what you just did, and you need to get up to speed quickly.

          +

          If the change fixes an issue then write Fixes #1234 in the commit message. +This can be on the subject line if it will fit. If you don’t want to close the associated issue just put #1234 and the change will get linked into the issue.

          +

          Here is an example of a short commit message:

          +
          sidecar: log on reconcile loop - fixes #1234
          +
          +
          +

          And here is an example of a longer one:

          +
          
          +api: now supports host networking (#1234)
          +
          +The operator CRD now has a "network" property that can be used to
          +select host networking as well as setting the apropriate DNS policy.
          +
          +Fixes #1234
          +
          +
          +
          +
          +

          Submitting

          +

          Go to the Scylla Operator github to open the PR. If you have pushed recently, you should see an obvious link to open the PR. If you have not pushed recently, go to the Pull Request tab and select your fork and branch for the PR.

          +

          After the PR is open, you can make changes simply by pushing new commits. Your PR will track the changes in your fork and update automatically.

          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/eks.html b/stable/eks.html new file mode 100644 index 00000000000..0c82fccd8d8 --- /dev/null +++ b/stable/eks.html @@ -0,0 +1,749 @@ + + + + + + + + + + + + + Deploying Scylla on EKS | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Deploying Scylla on EKS

          +

          This guide is focused on deploying Scylla on EKS with improved performance. +Performance tricks used by the script won’t work with different machine tiers. +It sets up the kubelets on EKS nodes to run with static cpu policy and uses local sdd disks in RAID0 for maximum performance.

          +

          Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the general guide.

          +
          +

          TL;DR;

          +

          If you don’t want to run the commands step-by-step, you can just run a script that will set everything up for you:

          +
          # Edit according to your preference
          +EKS_REGION=us-east-1
          +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c
          +
          +# From inside the examples/eks folder
          +cd examples/eks
          +./eks.sh -z "$EKS_ZONES" -r "$EKS_REGION"
          +
          +
          +

          After you deploy, see how you can benchmark your cluster with cassandra-stress.

          +
          +
          +

          Walkthrough

          +
          +

          EKS Setup

          +
          +

          Configure environment variables

          +

          First of all, we export all the configuration options as environment variables. +Edit according to your own environment.

          +
          EKS_REGION=us-east-1
          +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c
          +CLUSTER_NAME=scylla-demo
          +
          +
          +
          +
          +

          Creating an EKS cluster

          +

          For this guide, we’ll create an EKS cluster with the following:

          +
            +
          • A NodeGroup of 3 i3-2xlarge Nodes, where the Scylla Pods will be deployed. These nodes will only accept pods having scylla-clusters toleration.

          • +
          +
            - name: scylla-pool
          +    instanceType: i3.2xlarge
          +    desiredCapacity: 3
          +    labels:
          +      scylla.scylladb.com/node-type: scylla
          +    taints:
          +      role: "scylla-clusters:NoSchedule"
          +    ssh:
          +      allow: true
          +    kubeletExtraConfig:
          +      cpuManagerPolicy: static
          +
          +
          +
            +
          • A NodeGroup of 4 c4.2xlarge Nodes to deploy cassandra-stress later on. These nodes will only accept pods having cassandra-stress toleration.

          • +
          +
            - name: cassandra-stress-pool
          +    instanceType: c4.2xlarge
          +    desiredCapacity: 4
          +    labels:
          +      pool: "cassandra-stress-pool"
          +    taints:
          +      role: "cassandra-stress:NoSchedule"
          +    ssh:
          +      allow: true
          +
          +
          +
            +
          • A NodeGroup of 1 i3.large Node, where the monitoring stack and operator will be deployed.

          • +
          +
            - name: monitoring-pool
          +    instanceType: i3.large
          +    desiredCapacity: 1
          +    labels:
          +      pool: "monitoring-pool"
          +    ssh:
          +      allow: true
          +
          +
          +
          +
          +
          +

          Prerequisites

          +
          +

          Installing script third party dependencies

          +

          Script requires several dependencies:

          +
            +
          • eksctl - See: https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html

          • +
          • kubectl - See: https://kubernetes.io/docs/tasks/tools/install-kubectl/

          • +
          +
          +
          +
          +

          Deploying ScyllaDB Operator

          +

          Refer to Deploying Scylla on a Kubernetes Cluster in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites.

          +
          +

          Setting up nodes for ScyllaDB

          +

          ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you’ll first need to form a RAID array from those disks. +NodeConfig performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in Performance tuning section of ScyllaDB Operator’s documentation.

          +

          Deploy NodeConfig to let it take care of the above operations:

          +
          kubectl apply --server-side -f examples/eks/nodeconfig-alpha.yaml
          +
          +
          +
          +
          +

          Deploying Local Volume Provisioner

          +

          Afterwards, deploy ScyllaDB’s Local Volume Provisioner, capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays.

          +
          kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/
          +
          +
          +
          +
          +
          +

          Deploying ScyllaDB

          +

          Now you can follow the steps described in Deploying Scylla on a Kubernetes Cluster to launch your ScyllaDB cluster in a highly performant environment.

          +
          +

          Accessing the database

          +

          Instructions on how to access the database can also be found in the generic guide.

          +
          +
          +
          +

          Deleting an EKS cluster

          +

          Once you are done with your experiments delete your cluster using the following command:

          +
          eksctl delete cluster "${CLUSTER_NAME}"
          +
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/exposing.html b/stable/exposing.html new file mode 100644 index 00000000000..c2a2220e798 --- /dev/null +++ b/stable/exposing.html @@ -0,0 +1,900 @@ + + + + + + + + + + + + + Exposing ScyllaCluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Exposing ScyllaCluster

          +

          This document explains how ScyllaDB Operator exposes ScyllaClusters in different network setups. +A ScyllaCluster can be exposed in various network configurations, independently to clients and nodes.

          +
          +

          Note

          +

          ScyllaClusters can be only exposed when the ScyllaDB version used version is >=2023.1 ScyllaDB Enterprise or >=5.2 ScyllaDB Open Source.

          +
          +
          +

          Expose Options

          +
          +

          Note

          +

          exposeOptions are immutable, they cannot be changed after ScyllaCluster is created.

          +
          +

          exposeOptions specifies configuration options for exposing ScyllaCluster’s. +A ScyllaCluster created without any exposeOptions is equivalent to the following:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    nodeService:
          +     type: ClusterIP
          +    broadcastOptions:
          +      clients:
          +        type: ServiceClusterIP
          +      nodes:
          +        type: ServiceClusterIP
          +
          +
          +

          The following sections cover what every field controls and what the configuration options are.

          +
          +

          Node Service Template

          +

          nodeService serves as a template for a node-dedicated Service managed by the Scylla Operator for each node within a ScyllaCluster. +The properties of the Services depend on the selected type. +Additionally, there’s an option to define custom annotations, incorporated into each node’s Service, +which might be useful for further tweaking the Service properties or related objects.

          +
          +

          Headless Type

          +

          For Headless type, Scylla Operator creates a Headless Service with a selector pointing to the particular node in the ScyllaCluster. +Such Service doesn’t provide any additional IP addresses, and the internal DNS record resolves to the PodIP of a node.

          +

          This type of Service is useful when ScyllaCluster nodes broadcast PodIPs to clients and other nodes.

          +

          Example:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    nodeService:
          +     type: Headless
          +
          +
          +
          +
          +

          ClusterIP Type

          +

          For ClusterIP type, Scylla Operator creates a ClusterIP Service backed by a specific node in the ScyllaCluster.

          +

          These IP addresses are only routable within the same Kubernetes cluster, so it’s a good fit, if you don’t want to expose them to other networks.

          +

          Example:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    nodeService:
          +     type: ClusterIP
          +
          +
          +
          +
          +

          LoadBalancer Type

          +

          For the LoadBalancer type, Scylla Operator generates a LoadBalancer Service that directs traffic to a specific node within the ScyllaCluster. +On platforms with support for external load balancers, this Service provisions one. +The accessibility of this load balancer’s address depends on the platform and any customizations made; in some cases it may be reachable from the internal network or public Internet.

          +

          Customizations are usually managed via Service annotations, key-value pairs provided in annotations field are merged into each Service object. +LoadBalancer Services should be configured to pass through entire traffic.
          +For example, to expose LoadBalancer only to internal network use the following annotations:

          +
          + +
          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    nodeService:
          +     type: LoadBalancer
          +     annotations:
          +       service.beta.kubernetes.io/aws-load-balancer-scheme: internal
          +       service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
          +
          +
          +
          + +
          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    nodeService:
          +     type: LoadBalancer
          +     annotations:
          +       networking.gke.io/load-balancer-type: Internal
          +
          +
          +
          +
          +

          Check platform-specific documentation regarding LoadBalancer configuration to learn more about available options.

          +

          LoadBalancer Service is a superset of ClusterIP Service, implying that each LoadBalancer Service also contains an allocated ClusterIP. +They can be configured using the following fields, which propagate to every node Service:

          +
            +
          • externalTrafficPolicy

          • +
          • internalTrafficPolicy

          • +
          • loadBalancerClass

          • +
          • allocateLoadBalancerNodePorts

          • +
          +

          Check Kubernetes Service documentation to learn more about these options.

          +

          Example:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    nodeService:
          +     type: LoadBalancer
          +     loadBalancerClass: my-custom-load-balancer-class
          +
          +
          +
          +
          +
          +
          +

          Broadcast Options

          +

          Broadcast options control what is the source of the address being broadcasted to clients and nodes. +It’s configured independently for clients and nodes because you may want to expose these two types of traffic on different networks. +Using different networks can help manage costs, reliability, latency, security policies or other metrics you care about.

          +
          +

          PodIP Type

          +

          Address broadcasted to clients/nodes is taken from Pod. +By default, the address is taken from Pod’s status.PodIP field. +Because a Pod can use multiple address, you may want to provide source options by specifying podIP.source.

          +

          Example:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    broadcastOptions:
          +       clients:
          +         type: PodIP
          +         podIP:
          +           source: Status
          +
          +
          +
          +
          +

          ServiceClusterIP Type

          +

          Address broadcasted to clients or nodes is taken from spec.ClusterIP field of a node’s dedicated Service.

          +

          In order to configure it, the nodeService template must specify a Service having a ClusterIP assigned.

          +

          Example:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    broadcastOptions:
          +       clients:
          +         type: ServiceClusterIP
          +
          +
          +
          +
          +

          ServiceLoadBalancerIngress Type

          +

          Address broadcasted to clients/nodes is taken from the node dedicated Service, from status.ingress[0].ipAddress or status.ingress[0].hostname field.

          +

          In order to configure it, the nodeService template must specify the LoadBalancer Service.

          +

          Example:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    broadcastOptions:
          +       clients:
          +         type: ServiceLoadBalancerIngress
          +         podIP:
          +           source: Status
          +
          +
          +
          +
          +
          +
          +

          Deployment Examples

          +

          The following section contains several specific examples of various network scenarios and explains how nodes and clients communicate with one another.

          +
          +

          In-cluster only

          +

          ScyllaCluster definition:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    nodeService:
          +      type: ClusterIP
          +    broadcastOptions:
          +      clients:
          +        type: ServiceClusterIP
          +      nodes:
          +        type: ServiceClusterIP
          +
          +
          +

          Both client and nodes are deployed within the same Kubernetes cluster. +They talk through ClusterIP addresses taken from the Service. +Because ClusterIP Services are only routable within the same Kubernetes cluster, this cluster won’t be reachable from outside.

          +

          ClusterIPs

          +
          +
          +

          In-cluster node-to-node, VPC clients-to-nodes

          +

          ScyllaCluster definition:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    nodeService:
          +      type: ClusterIP
          +    broadcastOptions:
          +      clients:
          +        type: PodIP
          +      nodes:
          +        type: ServiceClusterIP
          +
          +
          +

          In this scenario, we assume that the Pod IP subnet is routable within a VPC. +Clients within the VPC network can communicate directly with ScyllaCluster nodes using PodIPs. +Nodes communicate with each other exclusively within the same Kubernetes cluster.

          +

          PodIPs

          +
          +
          +

          Multi VPC

          +

          ScyllaCluster definition:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    nodeService:
          +      type: Headless
          +    broadcastOptions:
          +      clients:
          +        type: PodIP
          +      nodes:
          +        type: PodIP
          +
          +
          +

          In this scenario, we set up two separate Kubernetes clusters in distinct VPCs. +These VPCs are interconnected to facilitate inter-VPC connectivity. +We operate on the assumption that the Pod IP subnet is routable within each VPC.

          +

          Both ScyllaClusters use the same exposeOptions, nodes broadcast their Pod IP addresses, enabling them to establish connections with one another. +****Check other documentation pages to know how to connect two ScyllaClusters into one logical cluster.

          +

          Clients, whether deployed within the same Kubernetes cluster or within a VPC, have the capability to reach nodes using their Pod IPs. +Since there is no requirement for any address other than the Pod IP, the Headless service type is sufficient.

          +

          MultiVPC

          +
          +
          +

          Internet

          +

          ScyllaCluster definition:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    nodeService:
          +      type: LoadBalancer
          +    broadcastOptions:
          +      clients:
          +        type: ServiceLoadBalancerIngress
          +      nodes:
          +        type: ClusterIP 
          +
          +
          +

          We assume that a Kubernetes cluster has been deployed in a cloud provider environment that supports external load balancers. +By specifying the LoadBalancer type in the nodeService template, the Scylla Operator generates a dedicated LB Service for each node. +The cloud provider then establishes an external load balancer with an internet-accessible address. +ScyllaDB nodes broadcast this external address to clients, enabling drivers to connect and discover other nodes. +Since all ScyllaDB nodes reside within the same Kubernetes cluster, there is no need to route traffic through the internet. +Consequently, the nodes are configured to communicate via ClusterIP, which is also accessible within LoadBalancer Services.

          +

          Internet

          +
          +

          Other more complex scenarios can be built upon these simple ones.

          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/generic.html b/stable/generic.html new file mode 100644 index 00000000000..8352690e416 --- /dev/null +++ b/stable/generic.html @@ -0,0 +1,953 @@ + + + + + + + + + + + + + Deploying Scylla on a Kubernetes Cluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Deploying Scylla on a Kubernetes Cluster

          +

          This is a guide to deploy a Scylla Cluster in a generic Kubernetes environment, meaning that Scylla will not be deployed with the ideal performance. +Scylla performs the best when it has fast disks and direct access to the cpu. +This requires some extra setup, which is platform-specific. +For specific configuration and setup, check for details about your particular environment:

          + +
          +

          Prerequisites

          + +
          +
          +

          Running locally

          +

          Running kubernetes locally is a daunting and error prone task. +Fortunately there are ways to make life easier and Minikube makes it a breeze.

          +

          We need to give minikube a little bit more resources than default so start minikube like this:

          +
          minikube start --cpus=6
          +
          +
          +

          Then make kubectl aware of this local installation like this:

          +
          eval $(minikube docker-env)
          +
          +
          +
          +
          +

          Download Scylla Operator

          +

          In this guide you will be using the examples and manifests from Scylla Operator repository, so start off by cloning it to your local machine.

          +
          git clone git@github.com:scylladb/scylla-operator.git
          +cd scylla-operator
          +
          +
          +
          +
          +

          Deploy Cert Manager

          +

          First deploy Cert Manager, you can either follow upsteam instructions or use following command:

          +
          kubectl apply -f examples/common/cert-manager.yaml
          +
          +
          +

          This will install Cert Manager to provision a self-signed certificate.

          +

          Once it’s deployed, wait until Cert Manager is ready:

          +
          kubectl wait --for condition=established crd/certificates.cert-manager.io crd/issuers.cert-manager.io
          +kubectl -n cert-manager rollout status deployment.apps/cert-manager-webhook
          +
          +
          +
          +
          +

          Deploy Scylla Operator

          +

          Deploy the Scylla Operator using the following commands:

          +
          kubectl apply -f deploy/operator.yaml
          +
          +
          +

          This will install the operator in namespace scylla-operator. +Wait until it’s ready:

          +
          kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
          +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
          +
          +
          +

          If you want to check the logs of the operator you can do so with:

          +
          kubectl -n scylla-operator logs deployment.apps/scylla-operator
          +
          +
          +
          +
          +

          Create and Initialize a Scylla Cluster

          +

          Now that the operator is running, we can create an instance of a Scylla cluster by creating an instance of the clusters.scylla.scylladb.com resource. +Some of that resource’s values are configurable, so feel free to browse cluster.yaml and tweak the settings to your liking. +Full details for all the configuration options can be found in the Scylla Cluster CRD documentation.

          +

          When you are ready to create a Scylla cluster, simply run:

          +
          kubectl create -f examples/generic/cluster.yaml
          +
          +
          +

          We can verify that a Kubernetes object has been created that represents our new Scylla cluster with the command below. +This is important because it shows that has successfully extended Kubernetes to make Scylla clusters a first class citizen in the Kubernetes cloud-native environment.

          +
          kubectl -n scylla get ScyllaCluster
          +
          +
          +

          Checking the pods that are created is as easy as:

          +
          kubectl -n scylla get pods
          +
          +
          +

          The output should be something like:

          +
          NAME                                    READY   STATUS    RESTARTS   AGE
          +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          9m49s
          +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          7m43s
          +simple-cluster-us-east-1-us-east-1a-2   2/2     Running   0          6m46s
          +
          +
          +

          It is important to note that the operator creates these instances according to a pattern. +This pattern is as follows: CLUSTER_NAME-DATACENTER_NAME-RACK_NAME-INSTANCE_NUMBER as specified in cluster.yaml.

          +

          In the above example we have the following properties:

          +
            +
          • CLUSTER_NAME: simple-cluster

          • +
          • DATACENTER_NAME: us-east-1

          • +
          • RACK_NAME: us-east-1a

          • +
          • INSTANCE_NUMBER: An automatically generated number attached to the pod name.

          • +
          +

          We picked the names to resemble something you can find in a cloud service but this is inconsequential, they can be set to anything you want.

          +

          To check if all the desired members are running, you should see the same number of entries from the following command as the number of members that was specified in cluster.yaml:

          +
          kubectl -n scylla get pod -l app=scylla
          +
          +
          +

          You can also track the state of a Scylla cluster from its status. To check the current status of a Cluster, run:

          +
          kubectl -n scylla describe ScyllaCluster simple-cluster
          +
          +
          +

          Checking the logs of the running scylla instances can be done like this:

          +
          kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 scylla
          +
          +
          +
          +

          Configure container kernel parameters

          +

          Sometimes it is necessary to run the container with different kernel parameters. +In order to support this, the Scylla Operator defines a cluster property sysctls that is a list of the desired key-value pairs to set.

          +

          For example: To increase the number events available for asynchronous IO processing in the Linux kernel to N set sysctls tofs.aio-max-nr=N.

          +
          spec:
          +  sysctls:
          +  - "fs.aio-max-nr=2097152"
          +
          +
          +
          +
          +

          Deploying Alternator

          +

          The operator is also capable of deploying Alternator instead of the regular Scylla. +This requires a small change in the cluster definition. +Change the cluster.yaml file from this:

          +
          spec:
          +  agentVersion: 3.3.0
          +  version: 6.1.1
          +  developerMode: true
          +  datacenter:
          +    name: us-east-1
          +
          +
          +

          to this:

          +
          spec:
          +  version: 6.1.1
          +  alternator:
          +    port: 8000
          +    writeIsolation: only_rmw_uses_lwt
          +  agentVersion: 3.3.0
          +  developerMode: true
          +  datacenter:
          +    name: us-east-1
          +
          +
          +

          You can specify whichever port you want.

          +

          You must provide desired write isolation, supported values are: “always”, “forbid_rmw”, “only_rmw_uses_lwt”. +Difference between those isolation levels can be found in Scylla Alternator documentation.

          +

          Once this is done the regular CQL ports will no longer be available, the cluster is a pure Alternator cluster.

          +
          +
          +
          +

          Accessing the Database

          +
            +
          • From kubectl:

          • +
          +

          To get a cqlsh shell in your new Cluster:

          +
          kubectl exec -n scylla -it simple-cluster-us-east-1-us-east-1a-0 -- cqlsh
          +> DESCRIBE KEYSPACES;
          +
          +
          +
            +
          • From inside a Pod:

          • +
          +

          When you create a new Cluster, automatically creates a Service for the clients to use in order to access the Cluster. +The service’s name follows the convention <cluster-name>-client. +You can see this Service in your cluster by running:

          +
          kubectl -n scylla describe service simple-cluster-client
          +
          +
          +

          Pods running inside the Kubernetes cluster can use this Service to connect to Scylla. +Here’s an example using the Python Driver:

          +
          from cassandra.cluster import Cluster
          +
          +cluster = Cluster(['simple-cluster-client.scylla.svc'])
          +session = cluster.connect()
          +
          +
          +

          If you are running the Alternator you can access the API on the port you specified using plain http.

          +
          +
          +

          Configure Scylla

          +

          The operator can take a ConfigMap and apply it to the scylla.yaml configuration file. +This is done by adding a ConfigMap to Kubernetes and refering to this in the Rack specification. +The ConfigMap is just a file called scylla.yaml that has the properties you want to change in it. +The operator will take the default properties for the rest of the configuration.

          +
            +
          • Create a ConfigMap the default name that the operator uses is scylla-config:

          • +
          +
          kubectl create configmap scylla-config -n scylla --from-file=/path/to/scylla.yaml
          +
          +
          +
            +
          • Wait for the mount to propagate and then restart the cluster:

          • +
          +
          kubectl rollout restart -n scylla statefulset/simple-cluster-us-east-1-us-east-1a
          +
          +
          +
            +
          • The new config should be applied automatically by the operator, check the logs to be sure.

          • +
          +

          Configuring cassandra-rackdc.properties is done by adding the file to the same mount as scylla.yaml.

          +
          kubectl create configmap scylla-config -n scylla --from-file=/tmp/scylla.yaml --from-file=/tmp/cassandra-rackdc.properties -o yaml --dry-run | kubectl replace -f -
          +
          +
          +

          The operator will then apply the overridable properties prefer_local and dc_suffix if they are available in the provided mounted file.

          +
          +

          Note

          +

          If you want to enable authentication, you first need to adjust system_auth keyspace replication factor to the number of nodes in the datacenter via cqlsh. It allows you to ensure that the user’s information is kept highly available for the cluster. If system_auth is not equal to the number of nodes and a node fails, the user whose information is on that node will be denied access. +For production environments only use NetworkTopologyStrategy.

          +
          kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : <replication_factor>};"
          +
          +
          +

          You can read more about enabling authentication in the Enable authentication section of ScyllaDB’s documentation.

          +
          +
          +
          +

          Configure Scylla Manager Agent

          +

          The operator creates a second container for each scylla instance that runs Scylla Manager Agent. +This container serves as a sidecar and it’s the main endpoint for interacting with Scylla API. +The Scylla Manager Agent can be configured with various things such as the security token used to allow access to Scylla API and storage providers for backups.

          +

          To configure the agent you just create a new secret called scylla-agent-config-secret and populate it with the contents in the scylla-manager-agent.yaml file like this:

          +
          kubectl create secret -n scylla generic scylla-agent-config-secret --from-file scylla-manager-agent.yaml
          +
          +
          +

          See Scylla Manager Agent configuration for a complete reference of the Scylla Manager agent config file.

          +
          +

          Scylla Manager Agent auth token

          +

          Operator provisions Agent auth token by copying value from user provided config secret or auto generates it if it’s empty. +To check which value is being used, decode content of <cluster-name>-auth-token secret. +To change it simply remove the secret. Operator will create a new one. To pick up the change in the cluster, initiate a rolling restart.

          +
          +
          +
          +

          Set up monitoring

          +

          To set up monitoring using Prometheus and Grafana follow this guide.

          +
          +
          +

          Scale a ScyllaCluster

          +

          The operator supports adding new nodes to existing racks, adding new racks to the cluster, as well as removing both single nodes and entire racks. To introduce the changes, edit the cluster with:

          +
          kubectl -n scylla edit scyllaclusters.scylla.scylladb.com/simple-cluster
          +
          +
          +
            +
          • To modify the number of nodes in a rack, update the members field of the selected rack to a desired value.

          • +
          • To add a new rack, append it to the .spec.datacenter.racks list. Remember to choose a unique rack name for the new rack.

          • +
          • To remove a rack, first scale it down to zero nodes, and then remove it from .spec.datacenter.racks list.

          • +
          +

          Having edited and saved the yaml, you can check your cluster’s Status and Events to retrieve information about what’s happening:

          +
          kubectl -n scylla describe scyllaclusters.scylla.scylladb.com/simple-cluster
          +
          +
          +
          +

          Note

          +

          If you have configured ScyllaDB with authenticator set to PasswordAuthenticator, you need to manually configure the replication factor of the system_auth keyspace with every scaling operation.

          +
          kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -u <username> -p <password> -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : <new_replication_factor>};"
          +
          +
          +

          It is recommended to set system_auth replication factor to the number of nodes in each datacenter.

          +
          +
          +
          +

          Benchmark with cassandra-stress

          +

          After deploying our cluster along with the monitoring, we can benchmark it using cassandra-stress and see its performance in Grafana. We have a mini cli that generates Kubernetes Jobs that run cassandra-stress against a cluster.

          +
          +

          Because cassandra-stress doesn’t scale well to multiple cores, we use multiple jobs with a small core count for each

          +
          +
          # Run a benchmark with 10 jobs, with 6 cpus and 50.000.000 operations each.
          +# Each Job will throttle throughput to 30.000 ops/sec for a total of 300.000 ops/sec.
          +hack/cass-stress-gen.py --num-jobs=10 --cpu=6 --memory=20G --ops=50000000 --limit=30000
          +kubectl apply -f scripts/cassandra-stress.yaml
          +
          +
          +

          Make sure you set the proper arguments in case you have altered things such as name or namespace.

          +
          ./hack/cass-stress-gen.py -h
          +usage: cass-stress-gen.py [-h] [--num-jobs NUM_JOBS] [--name NAME] [--namespace NAMESPACE] [--scylla-version SCYLLA_VERSION] [--host HOST] [--cpu CPU] [--memory MEMORY] [--ops OPS] [--threads THREADS] [--limit LIMIT]
          +                          [--connections-per-host CONNECTIONS_PER_HOST] [--print-to-stdout] [--nodeselector NODESELECTOR]
          +
          +Generate cassandra-stress job templates for Kubernetes.
          +
          +optional arguments:
          +  -h, --help            show this help message and exit
          +  --num-jobs NUM_JOBS   number of Kubernetes jobs to generate - defaults to 1
          +  --name NAME           name of the generated yaml file - defaults to cassandra-stress
          +  --namespace NAMESPACE
          +                        namespace of the cassandra-stress jobs - defaults to "default"
          +  --scylla-version SCYLLA_VERSION
          +                        version of scylla server to use for cassandra-stress - defaults to 4.0.0
          +  --host HOST           ip or dns name of host to connect to - defaults to scylla-cluster-client.scylla.svc
          +  --cpu CPU             number of cpus that will be used for each job - defaults to 1
          +  --memory MEMORY       memory that will be used for each job in GB, ie 2G - defaults to 2G * cpu
          +  --ops OPS             number of operations for each job - defaults to 10000000
          +  --threads THREADS     number of threads used for each job - defaults to 50 * cpu
          +  --limit LIMIT         rate limit for each job - defaults to no rate-limiting
          +  --connections-per-host CONNECTIONS_PER_HOST
          +                        number of connections per host - defaults to number of cpus
          +  --print-to-stdout     print to stdout instead of writing to a file
          +  --nodeselector NODESELECTOR
          +                        nodeselector limits cassandra-stress pods to certain nodes. Use as a label selector, eg. --nodeselector role=scylla
          +
          +
          +

          While the benchmark is running, open up Grafana and take a look at the monitoring metrics.

          +

          After the Jobs finish, clean them up with:

          +
          kubectl delete -f scripts/cassandra-stress.yaml
          +
          +
          +
          +
          +

          Clean Up

          +

          To clean up all resources associated with this walk-through, you can run the commands below.

          +

          NOTE: this will destroy your database and delete all of its associated data.

          +
          kubectl delete -f examples/generic/cluster.yaml
          +kubectl delete -f deploy/operator.yaml
          +kubectl delete -f examples/common/cert-manager.yaml
          +
          +
          +
          +
          +

          Troubleshooting

          +

          If the cluster does not come up, the first step would be to examine the operator’s logs:

          +
          kubectl -n scylla-operator logs deployment.apps/scylla-operator
          +
          +
          +

          If everything looks OK in the operator logs, you can also look in the logs for one of the Scylla instances:

          +
          kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/genindex.html b/stable/genindex.html new file mode 100644 index 00000000000..3c34fbca00b --- /dev/null +++ b/stable/genindex.html @@ -0,0 +1,572 @@ + + + + + + + + + + + + + Index | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + + + +
          + + + + + +
          + + +
          + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/gke.html b/stable/gke.html new file mode 100644 index 00000000000..29c34ec8a3f --- /dev/null +++ b/stable/gke.html @@ -0,0 +1,789 @@ + + + + + + + + + + + + + Deploying Scylla on GKE | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Deploying Scylla on GKE

          +

          This guide is focused on deploying Scylla on GKE with maximum performance (without any persistence guarantees). +It sets up the kubelets on GKE nodes to run with static cpu policy and uses local sdd disks in RAID0 for maximum performance.

          +

          Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the general guide.

          +
          +

          TL;DR;

          +

          If you don’t want to run the commands step-by-step, you can just run a script that will set everything up for you:

          +
          # Edit according to your preference
          +GCP_USER=$(gcloud config list account --format "value(core.account)")
          +GCP_PROJECT=$(gcloud config list project --format "value(core.project)")
          +GCP_ZONE=us-west1-b
          +
          +# From inside the examples/gke folder
          +cd examples/gke
          +./gke.sh -u "$GCP_USER" -p "$GCP_PROJECT" -z "$GCP_ZONE"
          +
          +# Example:
          +# ./gke.sh -u yanniszark@arrikto.com -p gke-demo-226716 -z us-west1-b
          +
          +
          +
          +

          Warning

          +

          Make sure to pass a ZONE (ex.: us-west1-b) and not a REGION (ex.: us-west1) or it will deploy nodes in each ZONE available in the region.

          +
          +

          After you deploy, see how you can benchmark your cluster with cassandra-stress.

          +
          +
          +

          Walkthrough

          +
          +

          Google Kubernetes Engine Setup

          +
          +

          Configure environment variables

          +

          First of all, we export all the configuration options as environment variables. +Edit according to your own environment.

          +
          GCP_USER=$( gcloud config list account --format "value(core.account)" )
          +GCP_PROJECT=$( gcloud config list project --format "value(core.project)" )
          +GCP_REGION=us-west1
          +GCP_ZONE=us-west1-b
          +CLUSTER_NAME=scylla-demo
          +CLUSTER_VERSION=$( gcloud container get-server-config --zone ${GCP_ZONE} --format "value(validMasterVersions[0])" )
          +
          +
          +
          +
          +

          Creating a GKE cluster

          +

          First we need to change kubelet CPU Manager policy to static by providing a config file. Create file called systemconfig.yaml with the following content:

          +
          kubeletConfig:
          +  cpuManagerPolicy: static
          +
          +
          +

          Then we’ll create a GKE cluster with the following:

          +
            +
          1. A NodePool of 2 n1-standard-8 Nodes, where the operator and the monitoring stack will be deployed. These are generic Nodes and their free capacity can be used for other purposes.

            +
            gcloud container \
            +clusters create "${CLUSTER_NAME}" \
            +--cluster-version "${CLUSTER_VERSION}" \
            +--node-version "${CLUSTER_VERSION}" \
            +--machine-type "n1-standard-8" \
            +--num-nodes "2" \
            +--disk-type "pd-ssd" --disk-size "20" \
            +--image-type "UBUNTU_CONTAINERD" \
            +--enable-stackdriver-kubernetes \
            +--no-enable-autoupgrade \
            +--no-enable-autorepair
            +
            +
            +
          2. +
          3. A NodePool of 2 n1-standard-32 Nodes to deploy cassandra-stress later on.

            +
            gcloud container --project "${GCP_PROJECT}" \
            +node-pools create "cassandra-stress-pool" \
            +--cluster "${CLUSTER_NAME}" \
            +--zone "${GCP_ZONE}" \
            +--node-version "${CLUSTER_VERSION}" \
            +--machine-type "n1-standard-32" \
            +--num-nodes "2" \
            +--disk-type "pd-ssd" --disk-size "20" \
            +--node-taints role=cassandra-stress:NoSchedule \
            +--image-type "UBUNTU_CONTAINERD" \
            +--no-enable-autoupgrade \
            +--no-enable-autorepair
            +
            +
            +
          4. +
          5. A NodePool of 4 n1-standard-32 Nodes, where the Scylla Pods will be deployed. Each of these Nodes has 8 local NVMe SSDs attached, which are provided as raw block devices. It is important to disable autoupgrade and autorepair. Automatic cluster upgrade or node repair has a hard timeout after which it no longer respect PDBs and force deletes the Compute Engine instances, which also deletes all data on the local SSDs. At this point, it’s better to handle upgrades manually, with more control over the process and error handling.

            +
            gcloud container \
            +node-pools create "scylla-pool" \
            +--cluster "${CLUSTER_NAME}" \
            +--node-version "${CLUSTER_VERSION}" \
            +--machine-type "n1-standard-32" \
            +--num-nodes "4" \
            +--disk-type "pd-ssd" --disk-size "20" \
            +--local-nvme-ssd-block count="8" \
            +--node-taints role=scylla-clusters:NoSchedule \
            +--node-labels scylla.scylladb.com/node-type=scylla \
            +--image-type "UBUNTU_CONTAINERD" \
            +--system-config-from-file=systemconfig.yaml \
            +--no-enable-autoupgrade \
            +--no-enable-autorepair
            +
            +
            +
          6. +
          +
          +
          +

          Setting Yourself as cluster-admin

          +
          +

          (By default GKE doesn’t give you the necessary RBAC permissions)

          +
          +

          Get the credentials for your new cluster

          +
          gcloud container clusters get-credentials "${CLUSTER_NAME}" --zone="${GCP_ZONE}"
          +
          +
          +

          Create a ClusterRoleBinding for your user. +In order for this to work you need to have at least permission container.clusterRoleBindings.create. +The easiest way to obtain this permission is to enable the Kubernetes Engine Admin role for your user in the GCP IAM web interface.

          +
          kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user "${GCP_USER}"
          +
          +
          +
          +
          +
          +

          Prerequisites

          +
          +
          +

          Deploying ScyllaDB Operator

          +

          Refer to Deploying Scylla on a Kubernetes Cluster in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites.

          +
          +

          Setting up nodes for ScyllaDB

          +

          ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you’ll first need to form a RAID array from those disks. +NodeConfig performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in Performance tuning section of ScyllaDB Operator’s documentation.

          +

          Deploy NodeConfig to let it take care of the above operations:

          +
          kubectl apply --server-side -f examples/gke/nodeconfig-alpha.yaml
          +
          +
          +
          +
          +

          Deploying Local Volume Provisioner

          +

          Afterwards, deploy ScyllaDB’s Local Volume Provisioner, capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays.

          +
          kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/
          +kubectl apply --server-side -f examples/common/local-volume-provisioner/storageclass_xfs.yaml
          +
          +
          +
          +
          +
          +

          Deploy Scylla cluster

          +

          In order for the example to work you need to modify the cluster definition in the following way:

          +
          sed -i "s/<gcp_region>/${GCP_REGION}/g;s/<gcp_zone>/${GCP_ZONE}/g" examples/gke/cluster.yaml
          +
          +
          +

          This will inject your region and zone into the cluster definition so that it matches the kubernetes cluster you just created.

          +
          +
          +

          Deploying ScyllaDB

          +

          Now you can follow the steps described in Deploying Scylla on a Kubernetes Cluster to launch your ScyllaDB cluster in a highly performant environment.

          +
          +

          Accessing the database

          +

          Instructions on how to access the database can also be found in the generic guide.

          +
          +
          +
          +

          Deleting a GKE cluster

          +

          Once you are done with your experiments delete your cluster using the following command:

          +
          gcloud container --project "${GCP_PROJECT}" clusters delete --zone "${GCP_ZONE}" "${CLUSTER_NAME}"
          +
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/helm.html b/stable/helm.html new file mode 100644 index 00000000000..92068ae34d9 --- /dev/null +++ b/stable/helm.html @@ -0,0 +1,937 @@ + + + + + + + + + + + + + Deploying Scylla stack using Helm Charts | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Deploying Scylla stack using Helm Charts

          +

          In this example we will install Scylla stack on Kubernetes. This includes the following components:

          +
            +
          • Scylla Operator

          • +
          • Scylla Manager

          • +
          • Scylla

          • +
          +

          We will use Minikube K8s cluster, but this could be any K8s cluster supported by the Scylla Operator.

          +
          +

          Prerequisites

          +
            +
          • Kubernetes 1.16+

          • +
          • Helm 3+

          • +
          +
          +
          +

          TL;DR

          +
          helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable
          +helm repo update
          +kubectl apply -f examples/common/cert-manager.yaml 
          +helm install scylla-operator scylla/scylla-operator --create-namespace --namespace scylla-operator
          +helm install scylla-manager scylla/scylla-manager --create-namespace --namespace scylla-manager
          +helm install scylla scylla/scylla --create-namespace --namespace scylla
          +
          +
          +
          +
          +

          Deploy Cert Manager

          +

          This step is optional if you want to use your own certificate. +If you don’t have one, make sure to not disable autogeneration using Scylla Operator Helm Chart.

          +

          First deploy Cert Manager, you can either follow upsteam instructions or use following command:

          +
          kubectl apply -f examples/common/cert-manager.yaml
          +
          +
          +

          Once it’s deployed, wait until all Cert Manager pods will enter into Running state:

          +
          kubectl wait -n cert-manager --for=condition=ready pod -l app=cert-manager --timeout=60s
          +
          +
          +
          +
          +

          Helm Chart repository

          +

          To install Scylla Helm Chart repository execute the following commands:

          +
          helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable
          +helm repo update
          +
          +
          +

          Then you can search through repository, it should contain at least three Helm charts:

          +
          helm search repo scylla
          +NAME                   CHART VERSION   APP VERSION     DESCRIPTION                                       
          +scylla/scylla          1.0.1           v1.0.1          Scylla is a close-to-the-hardware rewrite of Ca...
          +scylla/scylla-manager  1.0.1           v1.0.1          Scylla Manager automates database operations.     
          +scylla/scylla-operator 1.0.1           v1.0.1          Scylla Operator is a Kubernetes Operator for ma...
          +
          +
          +

          All these charts should be installable without any need of customizing (defaults are provided). +Although Helm is used for this particular reason, so lets customize them a bit.

          +
          +
          +

          Scylla Operator Chart

          +

          This chart is very simple, most interesting customizable fields are image, resources and webhook. +All others can be looked up in Chart source in Scylla Operator repository.

          +
          +

          image

          +

          Image allows to define which Scylla Operator image will be used. By default it downloads the image from main +Docker Hub repository, using version defined in Helm Chart. +You can also change pullPolicy if default one does not +fullfill your needs. In Kubernetes documentation you +can read more about different pull policies.

          +

          Image URL will be composed based on these fields in follwing pattern: +repository/scylla-operator:tag

          +
          image:
          +  repository: scylladb
          +  pullPolicy: IfNotPresent
          +  tag: ""
          +
          +
          +
          +
          +

          resources

          +

          You can customize how much resources will be allocated for Operator pods via resource field:

          +
          resources:
          +  limits:
          +    cpu: 100m
          +    memory: 128Mi
          +  requests:
          +    cpu: 100m
          +    memory: 32Mi
          +
          +
          +

          To read more about resource specification, follow Kubernetes documentation.

          +
          +
          +

          webhook

          +

          Webhook field allows to decide whether you want to use autogenerated self-signed certificate using Cert Manager or +whether you want to provide your own certificate.

          +

          createSelfSignedCertificate specifies whether a self-signed certificate should be created using Cert Manager +certificateSecretName: name of a secret containing custom certificate.

          +
          webhook:
          +  createSelfSignedCertificate: true
          +  certificateSecretName: ""
          +
          +
          +
          +
          +

          Customization

          +

          You can customize all these fields and others by providing file containing desired values. +Content of this file will overwrite default values.

          +

          You can find an example in Scylla Operator repository under examples/helm/values.operator.yaml

          +
          +
          +

          Installation

          +

          To deploy Scylla Operator using customized values file execute the following:

          +
          helm install scylla-operator scylla/scylla-operator --values examples/helm/values.operator.yaml --create-namespace --namespace scylla-operator
          +
          +
          +
          +
          +
          +

          Scylla Helm Chart

          +

          Scylla Chart allows to customize and deploy Scylla cluster. +By default Scylla Helm charts deploys working Scylla cluster, but of course we can customize it.

          +
          +

          Customization

          +

          Versions of images used in the cluster can be set via scyllaImage and agentImage

          +
          scyllaImage:
          +  repository: scylladb/scylla
          +  tag: 4.3.0
          +
          +agentImage:
          +  repository: scylladb/scylla-manager-agent
          +  tag: 2.2.1
          +
          +
          +

          A minimal Scylla cluster can be expressed as:

          +
          datacenter: us-east-1
          +racks:
          +- name: us-east-1b
          +  members: 2
          +  storage:
          +    capacity: 5G
          +  resources:
          +    limits:
          +      cpu: 1
          +      memory: 1Gi
          +    requests:
          +      cpu: 1
          +      memory: 1Gi
          +
          +
          +

          Above cluster will use 4.3.0 Scylla, 2.2.1 Scylla Manager Agent sidecar and will have a single rack having 2 nodes. +Each node will have a single CPU and 1 GiB of memory.

          +

          For other customizable fields, please refer to ScyllaCluster CRD. +CRD Rack Spec and Helm Chart Rack should have the same fields.

          +
          +
          +

          Installation

          +

          To deploy Scylla cluster using customzied values file execute the following command:

          +
          helm install scylla scylla/scylla --values examples/helm/values.cluster.yaml --create-namespace --namespace scylla
          +
          +
          +

          Scylla Operator will provision this cluster on your K8s environment.

          +
          +
          +
          +

          Scylla Manager Helm Chart

          +

          Scylla Manager Chart allows to customize and deploy Scylla Manager in K8s environment. +Scylla Manager consist of two applications (Scylla Manager itself and Scylla Manager Controller) and additional Scylla cluster.

          +

          To read more about Scylla Manager see Manager guide.

          +
          +

          Scylla Manager

          +

          To set version of used Scylla Manager you can use image field:

          +
          image:
          +  repository: scylladb
          +  pullPolicy: IfNotPresent
          +  tag: 2.2.1
          +
          +
          +

          To control how many resources are allocated for Scylla Manager use resource field:

          +
          resources:
          +  limits:
          +    cpu: 500m
          +    memory: 500Mi
          +  requests:
          +    cpu: 500m
          +    memory: 500Mi
          +
          +
          +
          +
          +

          Scylla Manager Controller

          +

          Similarly Scylla Manager Controller image can be customized:

          +
          controllerImage:
          +  repository: scylladb
          +  pullPolicy: IfNotPresent
          +  tag: ""
          +
          +
          +

          And allocated resources:

          +
          controllerResources:
          +  limits:
          +    cpu: 100m
          +    memory: 30Mi
          +  requests:
          +    cpu: 100m
          +    memory: 20Mi
          +
          +
          +
          +
          +

          Scylla

          +

          To customize internal Scylla instance dedicated to Scylla Manager, see guide above customizing Scylla Helm Chart. +It’s definition should land as a scylla field.

          +
          +
          +

          Customization

          +

          All others customizable fields can be looked up in Chart source in Scylla Operator repository.

          +
          +
          +

          Installation

          +

          To deploy Scylla Manager using customized values file execute the following command:

          +
          helm install scylla-manager scylla/scylla-manager --values examples/helm/values.manager.yaml --create-namespace --namespace scylla-manager
          +
          +
          +
          +
          +
          +

          Results

          +

          Scylla need some time to bootstrap all nodes, but after some time you should be ready to roll. It was simple isn’t it? +You can validate if everything was set up correctly by looking at the all resources created in used namespaces.

          +

          Scylla Operator:

          +
          $ kubectl -n scylla-operator get all
          +
          +NAME                                   READY   STATUS    RESTARTS   AGE
          +pod/scylla-operator-5dbcb54f5c-vjm4m   1/1     Running   0          51s
          +pod/scylla-operator-5dbcb54f5c-wfjbw   1/1     Running   0          51s
          +
          +NAME                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
          +service/scylla-operator-webhook   ClusterIP   10.105.207.130   <none>        443/TCP   51s
          +
          +NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
          +deployment.apps/scylla-operator   2/2     2            2           51s
          +
          +NAME                                         DESIRED   CURRENT   READY   AGE
          +replicaset.apps/scylla-operator-5dbcb54f5c   2         2         2       51s
          +
          +
          +

          Operator is running!

          +

          Scylla Manager:

          +
          $ kubectl -n scylla-manager get all 
          +
          +NAME                                             READY   STATUS    RESTARTS   AGE
          +pod/scylla-manager-669db64dd-bcm4v               1/1     Running   0          89s
          +pod/scylla-manager-controller-844ccc56c4-drbth   1/1     Running   0          89s
          +pod/scylla-manager-controller-844ccc56c4-rhwqx   1/1     Running   0          89s
          +
          +NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
          +service/scylla-manager          ClusterIP   10.105.231.53   <none>        80/TCP,5090/TCP     89s
          +service/scylla-manager-client   ClusterIP   None            <none>        9180/TCP,5090/TCP   89s
          +
          +NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
          +deployment.apps/scylla-manager              1/1     1            1           89s
          +deployment.apps/scylla-manager-controller   2/2     2            2           89s
          +
          +NAME                                                   DESIRED   CURRENT   READY   AGE
          +replicaset.apps/scylla-manager-669db64dd               1         1         1       89s
          +replicaset.apps/scylla-manager-controller-844ccc56c4   2         2         2       89s
          +
          +
          +

          Good to go, ready to serve!

          +

          Scylla itself:

          +
          $ kubectl -n scylla get all        
          +
          +NAME                                READY   STATUS    RESTARTS   AGE
          +pod/scylla-us-east-1-us-east-1b-0   2/2     Running   0          5m58s
          +pod/scylla-us-east-1-us-east-1b-1   2/2     Running   0          4m29s
          +
          +NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
          +service/scylla-client                   ClusterIP   None           <none>        9180/TCP,5090/TCP                                                 5m59s
          +service/scylla-us-east-1-us-east-1b-0   ClusterIP   10.43.149.92   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   5m58s
          +service/scylla-us-east-1-us-east-1b-1   ClusterIP   10.43.49.0     <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   4m29s
          +
          +NAME                                           READY   AGE
          +statefulset.apps/scylla-us-east-1-us-east-1b   2/2     5m59s
          +
          +
          +

          Two running nodes, exactly what we were asking for.

          +
          +
          +

          Monitoring

          +

          To spin up a Prometheus monitoring refer to monitoring guide.

          +

          Helm charts can create ServiceMonitors needed to observe Scylla Manager and Scylla. +Both of these Helm Charts allows to specify whether you want to create a ServiceMonitor:

          +
          serviceMonitor:
          +  create: false
          +
          +
          +

          Change create to true and update your current deployment using:

          +
          helm upgrade --install scylla --namespace scylla scylla/scylla -f examples/helm/values.cluster.yaml
          +
          +
          +

          Helm should notice the difference, install the ServiceMonitor, and then Prometheous will be able to scrape metrics.

          +
          +
          +

          Cleanup

          +

          To remove these applications you can simply uninstall them using Helm CLI:

          +
          helm uninstall scylla -n scylla
          +helm uninstall scylla-manager -n scylla-manager
          +helm uninstall scylla-operator -n scylla-operator
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/index.html b/stable/index.html new file mode 100644 index 00000000000..9f53ba27912 --- /dev/null +++ b/stable/index.html @@ -0,0 +1,618 @@ + + + + + + + + + + + + + Scylla Operator Documentation | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Scylla Operator Documentation

          +
          +
          +

          Scylla Operator is an open source project which helps users of Scylla Open Source and Scylla Enterprise run Scylla on Kubernetes (K8s) +The Scylla operator manages Scylla clusters deployed to Kubernetes and automates tasks related to operating a Scylla cluster, like installation, out and downscale, rolling upgrades.

          +_images/logo.png +

          For the latest status of the project, and reports issue, see the Github Project. Also check out the K8s Operator lesson on Scylla University.

          +

          scylla-operator is a Kubernetes Operator for managing Scylla clusters.

          +

          Currently it supports:

          +
            +
          • Deploying multi-zone clusters

          • +
          • Scaling up or adding new racks

          • +
          • Scaling down

          • +
          • Monitoring with Prometheus and Grafana

          • +
          • Integration with Scylla Manager

          • +
          • Dead node replacement

          • +
          • Version Upgrade

          • +
          • Backup

          • +
          • Repairs

          • +
          • Autohealing

          • +
          +

          Choose a topic to begin:

          + +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/manager.html b/stable/manager.html new file mode 100644 index 00000000000..9c53f352838 --- /dev/null +++ b/stable/manager.html @@ -0,0 +1,824 @@ + + + + + + + + + + + + + Deploying Scylla Manager on a Kubernetes Cluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Deploying Scylla Manager on a Kubernetes Cluster

          +

          Scylla Manager is a product for database operations automation, +it can schedule tasks such as repairs and backups. +Scylla Manager can manage multiple Scylla clusters and run cluster-wide tasks +in a controlled and predictable way.

          +

          Scylla Manager is available for Scylla Enterprise customers and Scylla Open Source users. +With Scylla Open Source, Scylla Manager is limited to 5 nodes. +See the Scylla Manager Proprietary Software License Agreement for details.

          +
          +

          Prerequisites

          + +
          +
          +

          Architecture

          +

          Scylla Manager in K8s consist of:

          +
            +
          • Dedicated Scylla Cluster

            +

            Scylla Manager persists its state to a Scylla cluster. +Additional small single node cluster is spawned in the Manager namespace.

            +
          • +
          • Scylla Manager Controller

            +

            Main mission of Controller is to watch changes of Scylla Clusters, and synchronize three states.

            +
              +
            1. What user wants - task definition in CRD.

            2. +
            3. What Controller registered - Task name to Task ID mapping - CRD status.

            4. +
            5. Scylla Manager task listing - internal state of Scylla Manager.

            6. +
            +

            When Scylla Cluster CRD is being deployed Controller will register it in Scylla Manager once cluster reaches desired node count. +Once Cluster is fully up and running it will schedule all tasks defined in Cluster CRD. +Controller also supports task updates and unscheduling.

            +
          • +
          • Scylla Manager

            +

            Regular Scylla Manager, the same used in cloud and bare metal deployments.

            +
          • +
          +
          +
          +

          Deploy Scylla Manager

          +

          Deploy the Scylla Manager using the following commands:

          +
          kubectl apply -f deploy/manager-prod.yaml
          +
          +
          +

          This will install the Scylla Manager in the scylla-manager namespace. +You can check if the Scylla Manager is up and running with:

          +
          kubectl -n scylla-manager get pods
          +NAME                                               READY   STATUS    RESTARTS   AGE
          +scylla-manager-cluster-manager-dc-manager-rack-0   2/2     Running   0          37m
          +scylla-manager-controller-0                        1/1     Running   0          28m
          +scylla-manager-scylla-manager-7bd9f968b9-w25jw     1/1     Running   0          37m
          +
          +
          +

          As you can see there are three pods:

          +
            +
          • scylla-manager-cluster-manager-dc-manager-rack-0 - is a single node Scylla cluster.

          • +
          • scylla-manager-controller-0 - Scylla Manager Controller.

          • +
          • scylla-manager-scylla-manager-7bd9f968b9-w25jw - Scylla Manager.

          • +
          +

          To see if Scylla Manager is fully up and running we can check their logs. +To do this, execute following command:

          +
          kubectl -n scylla-manager logs scylla-manager-controller-0
          +
          +
          +

          The output should be something like:

          +
          {"L":"INFO","T":"2020-09-23T11:25:27.882Z","M":"Scylla Manager Controller started","version":"","build_date":"","commit":"","built_by":"","go_version":"","options":{"Name":"scylla-manager-controller-0","Namespace":"scylla-manager","LogLevel":"debug","ApiAddress":"http://127.0.0.1:5080/api/v1"},"_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"}
          +{"L":"INFO","T":"2020-09-23T11:25:28.435Z","M":"Registering Components.","_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"}
          +
          +
          +

          To check logs of Scylla Manager itself, use following command:

          +
          kubectl -n scylla-manager logs scylla-manager-scylla-manager-7bd9f968b9-w25jw
          +
          +
          +

          The output should be something like:

          +
          {"L":"INFO","T":"2020-09-23T11:26:53.238Z","M":"Scylla Manager Server","version":"2.1.2-0.20200816.76cc4dcc","pid":1,"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
          +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Using config","config":{"HTTP":"127.0.0.1:5080","HTTPS":"","TLSCertFile":"/var/lib/scylla-manager/scylla_manager.crt","TLSKeyFile":"/var/lib/scylla-manager/scylla_manager.key","TLSCAFile":"","Prometheus":":56090","PrometheusScrapeInterval":5000000000,"debug":"127.0.0.1:56112","Logger":{"Mode":"stderr","Level":"info","Development":false},"Database":{"Hosts":["scylla-manager-cluster-manager-dc-manager-rack-0.scylla-manager.svc"],"SSL":false,"User":"","Password":"","LocalDC":"","Keyspace":"scylla_manager","MigrateDir":"/etc/scylla-manager/cql","MigrateTimeout":30000000000,"MigrateMaxWaitSchemaAgreement":300000000000,"ReplicationFactor":1,"Timeout":600000000,"TokenAware":true},"SSL":{"CertFile":"","Validate":true,"UserCertFile":"","UserKeyFile":""},"Healthcheck":{"Timeout":250000000,"SSLTimeout":750000000},"Backup":{"DiskSpaceFreeMinPercent":10,"AgeMax":43200000000000},"Repair":{"SegmentsPerRepair":1,"ShardParallelMax":0,"ShardFailedSegmentsMax":100,"PollInterval":200000000,"ErrorBackoff":300000000000,"AgeMax":0,"ShardingIgnoreMsbBits":12}},"config_files":["/mnt/etc/scylla-manager/scylla-manager.yaml"],"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
          +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Checking database connectivity...","_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
          +
          +
          +

          If there are no errors in the logs, let’s spin a Scylla Cluster.

          +
          +
          +

          Cluster registration

          +

          When the Scylla Manager is fully up and running, lets create a regular instance of Scylla cluster.

          +

          See generic tutorial to spawn your cluster.

          +

          Note: If you already have some Scylla Clusters, after installing Manager they should be +automatically registered in Scylla Manager.

          +

          Once cluster reaches desired node count, cluster status will be updated with ID under which it was registered in Manager.

          +
          kubectl -n scylla describe Cluster
          +
          +[...]
          +Status:
          + Manager Id:  d1d532cd-49f2-4c97-9263-25126532803b
          + Racks:
          +   us-east-1a:
          +     Members:        3
          +     Ready Members:  3
          +     Version:        4.0.0
          +
          +
          +

          You can use this ID to talk to Scylla Manager using sctool CLI installed in Scylla Manager Pod. +You can also use Cluster name in namespace/cluster-name format.

          +
          kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list
          +
          +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b)
          +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮
          +│ Task                                                        │ Arguments                            │ Next run                       │ Status │
          +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤
          +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b            │                                      │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE   │
          +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd       │                                      │ 23 Sep 20 14:29:57 CEST (+1m)  │ NEW    │
          +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯
          +
          +
          +

          Scylla Manager by default registers recurring healhcheck tasks for Agent and for each of the enabled frontends (CQL, Alternator).

          +

          In this task listing we can see CQL and REST healthchecks.

          +
          +
          +

          Task scheduling

          +

          You can either define tasks prior Cluster creation, or for existing Cluster. +Let’s edit already running cluster definition to add repair and backup task.

          +
          kubectl -n scylla edit Cluster simple-cluster
          +
          +
          +

          Add following task definition to Cluster spec:

          +
            repairs:
          +    - name: "users repair"
          +      keyspace: ["users"]
          +      interval: "1d"
          +  backups:
          +    - name: "weekly backup"
          +      location: ["s3:cluster-backups"]
          +      retention: 3
          +      interval: "7d"
          +    - name: "daily backup"
          +      location: ["s3:cluster-backups"]
          +      retention: 7
          +      interval: "1d"
          +
          +
          +

          For full task definition configuration consult ScyllaCluster CRD.

          +

          Note: Scylla Manager Agent must have access to above bucket prior the update in order to schedule backup task. +Consult Scylla Manager documentation for details on how to set it up.

          +

          Scylla Manager Controller will spot this change and will schedule tasks in Scylla Manager.

          +
          kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list
          +
          +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b)
          +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮
          +│ Task                                                        │ Arguments                            │ Next run                       │ Status │
          +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤
          +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b            │                                      │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE   │
          +│ backup/275aae7f-c436-4fc8-bcec-479e65fb8372                 │ -L s3:cluster-backups  --retention 3 │ 23 Sep 20 14:28:58 CEST (+7d)  │ NEW    │
          +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd       │                                      │ 23 Sep 20 14:29:57 CEST (+1m)  │ NEW    │
          +│ repair/d4946360-c29d-4bb4-8b9d-619ada495c2a                 │                                      │ 23 Sep 20 14:38:42 CEST        │ NEW    │
          +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯
          +
          +
          +

          As you can see, we have two new tasks, weekly recurring backup, and one repair which should start shortly.

          +

          To check progress of run you can use following command:

          +
          kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task progress --cluster d1d532cd-49f2-4c97-9263-25126532803b repair/d4946360-c29d-4bb4-8b9d-619ada495c2a
          +Status:         RUNNING
          +Start time:     23 Sep 20 14:38:42 UTC
          +Duration:       13s
          +Progress:       2.69%
          +Datacenters:
          +  - us-east-1
          ++--------------------+-------+
          +| system_auth        | 8.06% |
          +| system_distributed | 0.00% |
          +| system_traces      | 0.00% |
          ++--------------------+-------+
          +
          +
          +

          Other tasks can be also tracked using the same command, but using different task ID. +Task IDs are present in Cluster Status as well as in task listing.

          +
          +
          +

          Clean Up

          +

          To clean up all resources associated with Scylla Manager, you can run the commands below.

          +

          NOTE: this will destroy your Scylla Manager database and delete all of its associated data.

          +
          kubectl delete -f deploy/manager-prod.yaml
          +
          +
          +
          +
          +

          Troubleshooting

          +

          Manager is not running

          +

          If the Scylla Manager does not come up, the first step would be to examine the Manager and Controller logs:

          +
          kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-controller
          +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-scylla-manager-7bd9f968b9-w25jw
          +
          +
          +

          My task wasn’t scheduled

          +

          If your task wasn’t scheduled, Cluster status will be updated with error messages for each failed task. +You can also consult Scylla Manager logs.

          +

          Example:

          +

          Following status describes error when backup task cannot be scheduled, due to lack of access to bucket:

          +
          Status:
          +  Backups:
          +    Error:     create backup target: location is not accessible: 10.100.16.62: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.100.16.62 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.107.193.33: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.107.193.33 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.109.197.60: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.109.197.60 and run "scylla-manager-agent check-location -L s3:manager-test --debug"
          +    Id:        00000000-0000-0000-0000-000000000000
          +    Interval:  0
          +    Location:
          +      s3:manager-test
          +    Name:         adhoc backup
          +    Num Retries:  3
          +    Retention:    3
          +    Start Date:   now
          +  Manager Id:     2b9dbe8c-9daa-4703-a66d-c29f63a917c8
          +  Racks:
          +    us-east-1a:
          +      Members:        3
          +      Ready Members:  3
          +      Version:        4.0.0
          +
          +
          +

          Because Controller is infinitely retrying to schedule each defined task, once permission issues will be resolved, +task should appear in task listing and Cluster status.

          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/migration.html b/stable/migration.html new file mode 100644 index 00000000000..461f58a3eff --- /dev/null +++ b/stable/migration.html @@ -0,0 +1,761 @@ + + + + + + + + + + + + + Version migrations | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Version migrations

          +
          +

          v0.3.0 -> v1.0.0 migration

          +

          v0.3.0 used a very common name as a CRD kind (Cluster). In v1.0.0 this issue was solved by using less common kind +which is easier to disambiguate (ScyllaCluster). +This change is backward incompatible, which means manual migration is needed.

          +

          This procedure involves having two CRDs registered at the same time. We will detach Scylla Pods +from Scylla Operator for a short period to ensure that nothing is garbage collected when Scylla Operator is upgraded. +Compared to the upgrade guide where full deletion is requested, this procedure shouldn’t cause downtimes. +Although detaching resources from their controller is considered hacky. This means that you shouldn’t run procedure +out of the box on production. Make sure this procedure works well multiple times on your staging environment first.

          +

          Read the whole procedure and make sure you understand what is going on before executing any of the commands!

          +

          In case of any issues or questions regarding this procedure, you’re welcomed on our Scylla Users Slack +on #kubernetes channel.

          +
          +
          +

          Procedure

          +
            +
          1. Execute this whole procedure for each cluster sequentially. To get a list of existing clusters execute the following

            +
            kubectl -n scylla get cluster.scylla.scylladb.com
            +
            +NAME             AGE
            +simple-cluster   30m
            +
            +
            +

            All below commands will use scylla namespace and simple-cluster as a cluster name.

            +
          2. +
          3. Make sure you’re using v1.0.0 tag:

            +
            git checkout v1.0.0
            +
            +
            +
          4. +
          5. Upgrade your cert-manager to v1.0.0. If you installed it from a static file from this repo, simply execute the following:

            +
             kubectl apply -f examples/common/cert-manager.yaml
            +
            +
            +

            If your cert-manager was installed in another way, follow official instructions on cert-manager website.

            +
          6. +
          7. deploy/operator.yaml file contains multiple resources. Extract only CustomResourceDefinition to separate file.

          8. +
          9. Install v1.0.0 CRD definition from file created in the previous step:

            +
            kubectl apply -f examples/common/crd.yaml
            +
            +
            +
          10. +
          11. Save your existing simple-cluster Cluster definition to a file:

            +
            kubectl -n scylla get cluster.scylla.scylladb.com simple-cluster -o yaml > existing-cluster.yaml
            +
            +
            +
          12. +
          13. Migrate Kind and ApiVersion to new values using:

            +
            sed -i 's/scylla.scylladb.com\/v1alpha1/scylla.scylladb.com\/v1/g' existing-cluster.yaml
            +sed -i 's/kind: Cluster/kind: ScyllaCluster/g' existing-cluster.yaml
            +
            +
            +
          14. +
          15. Install migrated CRD instance

            +
            kubectl apply -f existing-cluster.yaml
            +
            +
            +

            At this point, we should have two CRDs describing your Scylla cluster, although the new one is not controlled by the Operator.

            +
          16. +
          17. Get UUID of newly created ScyllaCluster resource:

            +
            kubectl -n scylla get ScyllaCluster simple-cluster --template="{{ .metadata.uid }}"
            +
            +12a3678d-8511-4c9c-8a48-fa78d3992694
            +
            +
            +

            Save output UUID somewhere, it will be referred as <new-cluster-uid> in commands below.

            +

            Depending on your shell, you might get additional ‘%’ sign at the end of UUID, make sure to remove it!

            +
          18. +
          19. Upgrade ClusterRole attached to each of the Scylla nodes to grant them permission to lookup Scylla clusters:

            +
            kubectl patch ClusterRole simple-cluster-member --type "json" -p '[{"op":"add","path":"/rules/-","value":{"apiGroups":["scylla.scylladb.com"],"resources":["scyllaclusters"],"verbs":["get"]}}]'
            +
            +
            +

            Amend role name according to your cluster name, it should look like <scylla-cluster-name>-member.

            +
          20. +
          21. Get a list of all Services associated with your cluster. First get list of all services:

            +
             kubectl -n scylla get svc -l "scylla/cluster=simple-cluster"
            +
            + NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
            + simple-cluster-client                   ClusterIP   None           <none>        9180/TCP                                                          109m
            + simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.23.96    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   109m
            + simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.66.22    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   108m
            + simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.246.25   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   106m
            +
            +
            +
            +
          22. +
          23. For each service, change its ownerReference to point to new CRD instance:

            +
             kubectl -n scylla patch svc <cluster-svc-name> --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":"<new-cluster-uid>"}]'
            +
            +
            +

            Replace <cluster-svc-name> with Service name, and <new-cluster-uid> with saved UUID from one of the previous steps.

            +
          24. +
          25. Get a list of all Services again to see if none was deleted. Check also “Age” column, it shouldn’t be lower than previous result.

            +
             kubectl -n scylla get svc -l "scylla/cluster=simple-cluster"
            +
            + NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
            + simple-cluster-client                   ClusterIP   None           <none>        9180/TCP                                                          110m
            + simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.23.96    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   110m
            + simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.66.22    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   109m
            + simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.246.25   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   107m
            +
            +
            +
            +
          26. +
          27. Get a list of StatefulSets associated with your cluster:

            +
            kubectl -n scylla get sts -l "scylla/cluster=simple-cluster"
            +
            +NAME                                  READY   AGE
            +simple-cluster-us-east-1-us-east-1a   3/3     104m
            +
            +
            +
          28. +
          29. For each StatefulSet from previous step, change its ownerReference to point to new CRD instance.

            +
             kubectl -n scylla patch sts <cluster-sts-name> --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":"<new-cluster-uid>"}]'
            +
            +
            +

            Replace <cluster-sts-name> with StatefulSet name, and <new-cluster-uid> with saved UUID from one of the previous steps.

            +
          30. +
          31. Now when all k8s resources bound to Scylla are attached to new CRD, we can remove 0.3.0 Operator and old CRD definition. +Checkout v0.3.0 version, and remove Scylla Operator, and old CRD:

            +
             git checkout v0.3.0
            + kubectl delete -f examples/generic/operator.yaml
            +
            +
            +
          32. +
          33. Checkout v1.0.0, and install upgraded Scylla Operator:

            +
             git checkout v1.0.0
            + kubectl apply -f deploy/operator.yaml
            +
            +
            +
          34. +
          35. Wait until Scylla Operator boots up:

            +
             kubectl -n scylla-operator-system wait --for=condition=ready pod --all --timeout=600s
            +
            +
            +
          36. +
          37. Get a list of StatefulSets associated with your cluster:

            +
            kubectl -n scylla get sts -l "scylla/cluster=simple-cluster"
            +
            +NAME                                  READY   AGE
            +simple-cluster-us-east-1-us-east-1a   3/3     104m
            +
            +
            +
          38. +
          39. For each StatefulSet from previous step, change its sidecar container image to v1.0.0, and wait until change will be propagated. This step will initiate a rolling restart of pods one by one.

            +
            kubectl -n scylla patch sts <cluster-sts> --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/initContainers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]'
            +kubectl -n scylla rollout status sts <cluster-sts>
            +
            +
            +

            Replace <cluster-sts-name> with StatefulSet name.

            +
          40. +
          41. If you’re using Scylla Manager, bump Scylla Manager Controller image to v1.0.0

            +
             kubectl -n scylla-manager-system patch sts scylla-manager-controller --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]'
            +
            +
            +
          42. +
          43. Your Scylla cluster is now migrated to v1.0.0.

          44. +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/monitoring.html b/stable/monitoring.html new file mode 100644 index 00000000000..6bcb87f99a9 --- /dev/null +++ b/stable/monitoring.html @@ -0,0 +1,807 @@ + + + + + + + + + + + + + Monitoring | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Monitoring

          +

          Scylla Operator 1.8 introduced a new API resource ScyllaDBMonitoring, allowing users to deploy a managed monitoring +setup for their Scylla Clusters.

          +
          apiVersion: scylla.scylladb.com/v1alpha1
          +kind: ScyllaDBMonitoring
          +metadata:
          +  name: example
          +spec:
          +  type: Platform
          +  endpointsSelector:
          +    matchLabels:
          +      app.kubernetes.io/name: scylla
          +      scylla-operator.scylladb.com/scylla-service-type: member
          +      scylla/cluster: replace-with-your-scyllacluster-name
          +  components:
          +    prometheus:
          +      storage:
          +        volumeClaimTemplate:
          +          spec:
          +            storageClassName: scylladb-local-xfs
          +            resources:
          +              requests:
          +                storage: 1Gi
          +    grafana:
          +      exposeOptions:
          +        webInterface:
          +          ingress:
          +            ingressClassName: haproxy
          +            dnsDomains:
          +            - test-grafana.test.svc.cluster.local
          +            annotations:
          +              haproxy-ingress.github.io/ssl-passthrough: "true"
          +
          +
          +

          For details, refer to the below command:

          +
          $ kubectl explain scylladbmonitorings.scylla.scylladb.com/v1alpha1
          +
          +
          +
          +

          Deploy managed monitoring

          +

          Note: as of v1.8, ScyllaDBMonitoring is experimental. The API is currently in version v1alpha1 and may change in future versions.

          +
          +

          Requirements

          +

          Before you can set up your ScyllaDB monitoring, you need Scylla Operator already installed in your Kubernetes cluster. +For more information on how to deploy Scylla Operator, see:

          + +

          The above example of the monitoring setup also makes use of HAProxy Ingress and Prometheus Operator. +You can deploy them in your Kubernetes cluster using the provided third party examples. If you already have them deployed +in your cluster, you can skip the below steps.

          +
          +

          Deploy Prometheus Operator

          +

          Deploy Prometheus Operator using kubectl:

          +
          $ kubectl -n prometheus-operator apply --server-side -f ./examples/third-party/prometheus-operator
          +
          +
          +
          +
          Wait for Prometheus Operator to roll out
          +
          $ kubectl -n prometheus-operator rollout status --timeout=5m deployments.apps/prometheus-operator
          +deployment "prometheus-operator" successfully rolled out
          +
          +
          +
          +
          +
          +

          Deploy HAProxy Ingress

          +

          Deploy HAProxy Ingress using kubectl:

          +
          $ kubectl -n haproxy-ingress apply --server-side -f ./examples/third-party/haproxy-ingress
          +
          +
          +
          +
          Wait for HAProxy Ingress to roll out
          +
          $ kubectl -n haproxy-ingress rollout status --timeout=5m deployments.apps/haproxy-ingress
          +deployment "haproxy-ingress" successfully rolled out
          +
          +
          +
          +
          +
          +
          +

          Deploy ScyllaDBMonitoring

          +

          First, update the endpointsSelector in examples/monitoring/v1alpha1/scylladbmonitoring.yaml with a label +matching your ScyllaCluster instance name.

          +

          Deploy the monitoring setup using kubectl:

          +
          $ kubectl -n scylla apply --server-side -f ./examples/monitoring/v1alpha1/scylladbmonitoring.yaml
          +
          +
          +

          Scylla Operator will notice the new ScyllaDBMonitoring object, and it will reconcile all necessary resources.

          +
          +

          Wait for ScyllaDBMonitoring to roll out

          +
          $ kubectl wait --for='condition=Progressing=False' scylladbmonitorings.scylla.scylladb.com/example
          +scylladbmonitoring.scylla.scylladb.com/example condition met
          +
          +$ kubectl wait --for='condition=Degraded=False' scylladbmonitorings.scylla.scylladb.com/example
          +scylladbmonitoring.scylla.scylladb.com/example condition met
          +
          +$ kubectl wait --for='condition=Available=True' scylladbmonitorings.scylla.scylladb.com/example
          +scylladbmonitoring.scylla.scylladb.com/example condition met
          +
          +
          +
          +
          +

          Wait for Prometheus to roll out

          +
          $ kubectl rollout status --timeout=5m statefulset.apps/prometheus-example
          +statefulset rolling update complete 1 pods at revision prometheus-example-65b89d55bb...
          +
          +
          +
          +
          +

          Wait for Grafana to roll out

          +
          $ kubectl rollout status --timeout=5m deployments.apps/example-grafana
          +deployment "example-grafana" successfully rolled out
          +
          +
          +
          +
          +
          +

          Accessing Grafana

          +

          For accessing Grafana service from outside the Kubernetes cluster we recommend using an Ingress, although there are many other ways to do so. +When using Ingress, what matters is to direct your packets to the ingress controller Service/Pods and have the correct TLS SNI field set by the caller when reaching out to the service, so it is routed properly, and your client can successfully validate the grafana serving certificate. +This is easier when you are using a real DNS domain that resolves to your Ingress controller’s IP address but most clients and tools allow setting the SNI field manually.

          +
          +
          +

          Prerequisites

          +

          To access Grafana, you first need to collect the serving CA and the credentials.

          +
          $ GRAFANA_SERVING_CERT="$( kubectl -n scylla get secret/example-grafana-serving-ca --template '{{ index .data "tls.crt" }}' | base64 -d )"
          +$ GRAFANA_USER="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "username" }}' | base64 -d )"
          +$ GRAFANA_PASSWORD="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "password" }}' | base64 -d )"
          +
          +
          +
          +
          +

          Connecting through Ingress using a resolvable domain

          +

          In production clusters, the Ingress controller and appropriate DNS records should be set up already. Often there is already a generic wildcard record like *.app.mydomain pointing to the Ingress controller’s external IP. For custom service domains, it is usually a CNAME pointing to the Ingress controller’s A record.

          +

          Note: The ScyllaDBMonitoring example creates an Ingress object with test-grafana.test.svc.cluster.local DNS domain that you should adjust to your domain. Below examples use example-grafana.apps.mydomain.

          +

          Note: To test a resolvable domain from your machine without creating DNS records, you can adjust /etc/hosts or similar.

          +
          $ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://example-grafana.apps.mydomain" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}"
          +200
          +
          +
          +
          +
          +

          Connecting through Ingress using an unresolvable domain

          +

          To connect to an Ingress without a resolvable domain you first need to find out your Ingress controller’s IP that can be resolved externally. Again, there are many ways to do so beyond the below examples.

          +

          Unless stated otherwise, we assume your Ingress is running on port 443.

          +
          $ INGRESS_PORT=443
          +
          +
          +
          +

          Variants

          +
          +
          Ingress ExternalIP
          +

          When you are running in a real cluster there is usually a cloud LoadBalancer or a bare metal alternative providing you with an externally reachable IP address.

          +
          $ INGRESS_IP="$( kubectl -n=haproxy-ingress get service/haproxy-ingress --template='{{ ( index .status.loadBalancer.ingress 0 ).ip }}' )"
          +
          +
          +
          +
          +
          Ingress NodePort
          +

          NodePort is slightly less convenient, but it’s available in development clusters as well.

          +
          $ INGRESS_IP="$( kubectl get nodes --template='{{ $internal_ip := "" }}{{ $external_ip := "" }}{{ range ( index .items 0 ).status.addresses }}{{ if eq .type "InternalIP" }}{{ $internal_ip = .address }}{{ else if eq .type "ExternalIP" }}{{ $external_ip = .address }}{{ end }}{{ end }}{{ if $external_ip }}{{ $external_ip }}{{ else }}{{ $internal_ip }}{{ end }}' )"
          +$ INGRESS_PORT="$( kubectl -n=haproxy-ingress get services/haproxy-ingress --template='{{ range .spec.ports }}{{ if eq .port 443 }}{{ .nodePort }}{{ end }}{{ end }}' )"
          +
          +
          +
          +
          +
          Connection
          +
          $ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://test-grafana.test.svc.cluster.local:${INGRESS_PORT}" --resolve "test-grafana.test.svc.cluster.local:${INGRESS_PORT}:${INGRESS_IP}" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}"
          +200
          +
          +
          +
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/multidc/eks.html b/stable/multidc/eks.html new file mode 100644 index 00000000000..5486c14e53a --- /dev/null +++ b/stable/multidc/eks.html @@ -0,0 +1,790 @@ + + + + + + + + + + + + + Build multiple Amazon EKS clusters with inter-Kubernetes networking | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Build multiple Amazon EKS clusters with inter-Kubernetes networking

          +

          This document describes the process of creating multiple Amazon EKS clusters in different regions, using separate VPCs, and explains the steps necessary for configuring inter-Kubernetes networking between the clusters. +The interconnected clusters can serve as a platform for deploying a multi-datacenter ScyllaDB cluster.

          +

          This guide will walk you through the process of creating and configuring EKS clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference.

          +
          +

          Prerequisites

          +

          To follow the below guide, you first need to install and configure the tools that you will need to create and manage AWS and Kubernetes resources:

          +
            +
          • eksctl – A command line tool for working with EKS clusters.

          • +
          • kubectl – A command line tool for working with Kubernetes clusters.

          • +
          +

          For more information see Getting started with Amazon EKS – eksctl in AWS documentation.

          +
          +
          +

          Create EKS clusters

          +
          +

          Create the first EKS cluster

          +

          Below is the required specification for the first cluster.

          +
          apiVersion: eksctl.io/v1alpha5
          +kind: ClusterConfig
          +
          +metadata:
          +  name: scylladb-us-east-1
          +  region: us-east-1
          +
          +availabilityZones:
          +- us-east-1a
          +- us-east-1b
          +- us-east-1c
          +
          +vpc:
          +  cidr: 10.0.0.0/16
          +
          +nodeGroups:
          +  ...
          +
          +
          +

          Specify the first cluster’s configuration file and save it as cluster-us-east-1.yaml. +Refer to Creating an EKS cluster section of ScyllaDB Operator documentation for the reference of the configuration of node groups.

          +

          To deploy the first cluster, use the below command:

          +
          eksctl create cluster -f=cluster-us-east-1.yaml
          +
          +
          +

          Run the following command to learn the status and VPC ID of the cluster:

          +
          eksctl get cluster --name=scylladb-us-east-1 --region=us-east-1
          +
          +
          +

          You will need to get the cluster’s context for future operations. To do so, use the below command:

          +
          kubectl config current-context
          +
          +
          +

          For any kubectl commands that you will want to run against this cluster, use the --context flag with the value returned by the above command.

          +
          +

          Deploy ScyllaDB Operator

          +

          Once the cluster is ready, refer to Deploying Scylla on a Kubernetes Cluster to deploy the ScyllaDB Operator and its prerequisites.

          +
          +
          +

          Prepare nodes for running ScyllaDB

          +

          Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in Deploying Scylla on EKS in ScyllaDB Operator documentation.

          +
          +
          +
          +

          Create the second EKS cluster

          +

          Below is the required specification for the second cluster. As was the case with the first cluster, the provided values are only exemplary and can be adjusted according to your needs.

          +
          +

          Caution

          +

          It is required that the VPCs of the two EKS clusters have non-overlapping IPv4 network ranges.

          +
          +
          apiVersion: eksctl.io/v1alpha5
          +kind: ClusterConfig
          +
          +metadata:
          +  name: scylladb-us-east-2
          +  region: us-east-2
          +
          +availabilityZones:
          +- us-east-2a
          +- us-east-2b
          +- us-east-2c
          +
          +vpc:
          +  cidr: 172.16.0.0/16
          +
          +nodeGroups:
          +  ...
          +
          +
          +

          Follow analogous steps to create the second EKS cluster and prepare it for running ScyllaDB.

          +
          +
          +
          +

          Configure the network

          +

          The prepared Kubernetes clusters each have a dedicated VPC network. +To be able to route the traffic between the two VPC networks, you need to create a networking connection between them, otherwise known as VPC peering.

          +
          +

          Create VPC peering

          +

          Refer to Create a VPC peering connection in AWS documentation for instructions on creating a VPC peering connection between the two earlier created VPCs.

          +

          In this example, the ID of the created VPC peering connection is pcx-08077dcc008fbbab6.

          +
          +
          +

          Update route tables

          +

          To enable private IPv4 traffic between the instances in the VPC peered network, you need to establish a communication channel by adding a route to the route tables associated with all the subnets associated with the instances for both VPCs. +The destination of the new route in a given route table is the CIDR of the VPC of the other cluster and the target is the ID of the VPC peering connection.

          +

          The following is an example of the route tables that enable communication of instances in two peered VPCs. Each table has a local route and the added route which sends traffic targeted at the other VPC to the peered network connection. The other preconfigured routes are omitted for readability.

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          Route tableDestinationTarget
          eksctl-scylladb-us-east-1-cluster/PublicRouteTable10.0.0.0/16local
          172.16.0.0/16pcx-08077dcc008fbbab6
          eksctl-scylladb-us-east-2-cluster/PublicRouteTable172.16.0.0/16local
          10.0.0.0/16pcx-08077dcc008fbbab6
          +

          Refer to Update your route tables for a VPC peering connection in AWS documentation for more information.

          +
          +
          +

          Update security groups

          +

          To allow traffic to flow to and from instances associated with security groups in the peered VPC, you need to update the inbound rules of the VPCs’ shared security groups.

          +

          Below is an example of the inbound rules that to be added to the corresponding security groups of the two VPCs.

          + + + + + + + + + + + + + + + + + + + + + + + +

          Security group name

          Type

          Protocol

          Port range

          Source

          eksctl-scylladb-us-east-1-cluster-ClusterSharedNodeSecurityGroup-TD05V9EVU3B8

          All traffic

          All

          All

          Custom 172.16.0.0/16

          eksctl-scylladb-us-east-2-cluster-ClusterSharedNodeSecurityGroup-1FR9YDLU0VE7M

          All traffic

          All

          All

          Custom 10.0.0.0/16

          +

          The names of the shared security groups of your VPCs should be similar to the ones presented in the example.

          +
          +

          Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters in ScyllaDB Operator documentation for guidance.

          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/multidc/gke.html b/stable/multidc/gke.html new file mode 100644 index 00000000000..27d59dd49dd --- /dev/null +++ b/stable/multidc/gke.html @@ -0,0 +1,760 @@ + + + + + + + + + + + + + Build multiple GKE clusters with inter-Kubernetes networking | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Build multiple GKE clusters with inter-Kubernetes networking

          +

          This document describes the process of creating multiple GKE clusters in a shared VPC and explains the steps necessary for configuring inter-Kubernetes networking between clusters in different regions. +The interconnected clusters can serve as a platform for deploying a Multi Datacenter ScyllaDB cluster.

          +

          This guide will walk you through the process of creating and configuring GKE clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference.

          +
          +

          Prerequisites

          +

          To follow the below guide, you first need to install and configure the following tools that you will need to create and manage GCP and Kubernetes resources:

          +
            +
          • gcloud CLI - Google Cloud Command Line Interface, a command line tool for working with Google Cloud resources and services directly.

          • +
          • kubectl – A command line tool for working with Kubernetes clusters.

          • +
          +

          See Install the Google Cloud CLI in GCP documentation and Install Tools in Kubernetes documentation for reference.

          +
          +
          +

          Create and configure a VPC network

          +

          For the clusters to have inter-Kubernetes networking, you will create a virtual network shared between all the instances, with dedicated subnets for each of the clusters. +To create the subnets manually, create the network in custom subnet mode.

          +
          +

          Create the VPC network

          +

          Run the below command to create the network:

          +
          gcloud compute networks create scylladb --subnet-mode=custom
          +
          +
          +

          With the VPC network created, create a dedicated subnet with secondary CIDR ranges for their Pod and Service pools in each region which the clusters will reside in.

          +
          +
          +

          Create VPC network subnets

          +

          To create a subnet for the first cluster in region us-east1, run the below command:

          +
          gcloud compute networks subnets create scylladb-us-east1 \
          +    --region=us-east1 \
          +    --network=scylladb \
          +    --range=10.0.0.0/20 \
          +    --secondary-range='cluster=10.1.0.0/16,services=10.2.0.0/20'
          +
          +
          +

          To create a subnet for the second cluster in region us-west1, run the below command:

          +
          gcloud compute networks subnets create scylladb-us-west1 \
          +    --region=us-west1 \
          +    --network=scylladb \
          +    --range=172.16.0.0/20 \
          +    --secondary-range='cluster=172.17.0.0/16,services=172.18.0.0/20'
          +
          +
          +
          +

          Caution

          +

          It is required that the IPv4 address ranges of the subnets allocated for the GKE clusters do not overlap.

          +
          +

          Refer to Create a VPC-native cluster and Alias IP ranges in GKE documentation for more information about VPC native clusters and alias IP ranges.

          +
          +
          +
          +

          Create GKE clusters

          +

          With the VPC network created, you will now create two VPC native GKE clusters in dedicated regions.

          +
          +

          Create the first GKE cluster

          +

          Run the following command to create the first GKE cluster in the us-east1 region:

          +
          gcloud container clusters create scylladb-us-east1 \
          +    --location=us-east1-b \
          +    --node-locations='us-east1-b,us-east1-c' \
          +    --machine-type=n1-standard-8 \
          +    --num-nodes=1 \
          +    --disk-type=pd-ssd \
          +    --disk-size=20 \
          +    --image-type=UBUNTU_CONTAINERD \
          +    --no-enable-autoupgrade \
          +    --no-enable-autorepair \
          +    --enable-ip-alias \
          +    --network=scylladb \
          +    --subnetwork=scylladb-us-east1 \
          +    --cluster-secondary-range-name=cluster \
          +    --services-secondary-range-name=services
          +
          +
          +

          Refer to Creating a GKE cluster section of ScyllaDB Operator documentation for more information regarding the configuration and deployment of additional node pools, including the one dedicated for ScyllaDB nodes.

          +

          You will need to get the cluster’s context for future operations. To do so, use the below command:

          +
          kubectl config current-context
          +
          +
          +

          For any kubectl commands that you will want to run against this cluster, use the --context flag with the value returned by the above command.

          +
          +

          Deploy ScyllaDB Operator

          +

          Once the cluster is ready, refer to Deploying Scylla on a Kubernetes Cluster to deploy the ScyllaDB Operator and its prerequisites.

          +
          +
          +

          Prepare nodes for running ScyllaDB

          +

          Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in Deploying Scylla on GKE page of the documentation.

          +
          +
          +
          +

          Create the second GKE cluster

          +

          Run the following command to create the second GKE cluster in the us-west1 region:

          +
          gcloud container clusters create scylladb-us-west1 \
          +    --location=us-west1-b \
          +    --node-locations='us-west1-b,us-west1-c' \
          +    --machine-type=n1-standard-8 \
          +    --num-nodes=1 \
          +    --disk-type=pd-ssd \
          +    --disk-size=20 \
          +    --image-type=UBUNTU_CONTAINERD \
          +    --no-enable-autoupgrade \
          +    --no-enable-autorepair \
          +    --enable-ip-alias \
          +    --network=scylladb \
          +    --subnetwork=scylladb-us-west1 \
          +    --cluster-secondary-range-name=cluster \
          +    --services-secondary-range-name=services
          +
          +
          +

          Follow analogous steps to create the second GKE cluster and prepare it for running ScyllaDB.

          +
          +
          +
          +

          Configure the firewall rules

          +

          When creating a cluster, GKE creates several ingress firewall rules that enable the instances to communicate with each other. +To establish interconnectivity between the two created Kubernetes clusters, you will now add the allocated IPv4 address ranges to their corresponding source address ranges.

          +

          First, retrieve the name of the firewall rule associated with the first cluster, which permits traffic between all Pods on a cluster, as required by the Kubernetes networking model. +The rule name is in the following format: gke-[cluster-name]-[cluster-hash]-all.

          +

          To retrieve it, run the below command:

          +
          gcloud compute firewall-rules list --filter='name~gke-scylladb-us-east1-.*-all'
          +
          +
          +

          The output should resemble the following:

          +
          NAME                                NETWORK   DIRECTION  PRIORITY  ALLOW                     DENY  DISABLED
          +gke-scylladb-us-east1-f17db261-all  scylladb  INGRESS    1000      udp,icmp,esp,ah,sctp,tcp        False
          +
          +
          +

          Modify the rule by updating the rule’s source ranges with the allocated Pod IPv4 address ranges of both clusters:

          +
          gcloud compute firewall-rules update gke-scylladb-us-east1-f17db261-all --source-ranges='10.1.0.0/16,172.17.0.0/16'
          +
          +
          +

          Follow the analogous steps for the other cluster. In this example, its corresponding firewall rule name is gke-scylladb-us-west1-0bb60902-all. To update it, you would run:

          +
          gcloud compute firewall-rules update gke-scylladb-us-west1-0bb60902-all --source-ranges='10.1.0.0/16,172.17.0.0/16'
          +
          +
          +

          Refer to Automatically created firewall rules in GKE documentation for more information.

          +
          +

          Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters in ScyllaDB Operator documentation for guidance.

          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/multidc/index.html b/stable/multidc/index.html new file mode 100644 index 00000000000..803191273f7 --- /dev/null +++ b/stable/multidc/index.html @@ -0,0 +1,601 @@ + + + + + + + + + + + + + Deploying multi-datacenter ScyllaDB clusters in Kubernetes | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Deploying multi-datacenter ScyllaDB clusters in Kubernetes

          +

          Prepare a platform for a multi datacenter ScyllaDB cluster deployment:

          + +

          Deploy a multi-datacenter ScyllaDB cluster in Kubernetes:

          + +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/multidc/multidc.html b/stable/multidc/multidc.html new file mode 100644 index 00000000000..9b6e2f2af2f --- /dev/null +++ b/stable/multidc/multidc.html @@ -0,0 +1,1191 @@ + + + + + + + + + + + + + Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters

          +

          This document describes the process of deploying a Multi Datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters.

          +

          This guide will walk you through the example procedure of deploying two datacenters in distinct regions of a selected cloud provider.

          +
          +

          Note

          +

          This guide is dedicated to deploying multi-datacenter ScyllaDB clusters and does not discuss unrelated configuration options. +For details of ScyllaDB cluster deployments and their configuration, refer to Deploying Scylla on a Kubernetes Cluster in ScyllaDB Operator documentation.

          +
          +
          +

          Prerequisites

          +

          As this document describes the procedure of deploying a Multi Datacenter ScyllaDB cluster, you are expected to have the required infrastructure prepared. +Let’s assume two interconnected Kubernetes clusters, capable of communicating with each other over PodIPs, with each cluster meeting the following requirements:

          +
            +
          • a node pool dedicated to ScyllaDB nodes composed of at least 3 nodes running in different zones (with unique topology.kubernetes.io/zone label), configured to run ScyllaDB, each labeled with scylla.scylladb.com/node-type: scylla

          • +
          • running ScyllaDB Operator and its prerequisites

          • +
          • running a storage provisioner capable of provisioning XFS volumes of StorageClass scylladb-local-xfs in each of the nodes dedicated to ScyllaDB instances

          • +
          +

          You can refer to one of our guides describing the process of preparing such infrastructure:

          + +

          Additionally, to follow the below guide, you need to install and configure the following tools that you will need to manage Kubernetes resources:

          +
            +
          • kubectl – A command line tool for working with Kubernetes clusters.

          • +
          +

          See Install Tools in Kubernetes documentation for reference.

          +
          +
          +

          Multi Datacenter ScyllaDB Cluster

          +

          In v1.11, ScyllaDB Operator introduced support for manual multi-datacenter ScyllaDB cluster deployments.

          +
          +

          Warning

          +

          ScyllaDB Operator only supports manual configuration of multi-datacenter ScyllaDB clusters. +In other words, although ScyllaCluster API exposes the machinery necessary for setting up multi-datacenter ScylaDB clusters, the ScyllaDB Operator only automates operations for a single datacenter.

          +

          Operations related to multiple datacenters may require manual intervention of a human operator. +Most notably, destroying one of the Kubernetes clusters or ScyllaDB datacenters is going to leave DN nodes behind in other datacenters, and their removal has to be carried out manually.

          +
          +

          The main mechanism used to set up a manual multi-datacenter ScyllaDB cluster is a field in ScyllaCluster’s specification - externalSeeds.

          +
          +

          External seeds

          +

          The externalSeeds field in ScyllaCluster’s specification enables control over external seeds that are propagated to ScyllaDB binary as --seed-provider-parameters seeds=<external-seeds>. +In this context, external should be understood as “external to the datacenter being specified by the API”. +The provided seeds are used by the nodes as initial points of contact, which allows them to discover the cluster ring topology when joining it.

          +

          Refer to Scylla Seed Nodes in ScyllaDB documentation for more information regarding the function of seed nodes in ScyllaDB. +For more details regarding the function and implementation of external seeds, refer to the original enhancement proposal.

          +
          +
          +

          Networking

          +

          Since this guide assumes interconnectivity over PodIPs of the Kubernetes clusters, you are going to configure the ScyllaDB cluster’s nodes to communicate over PodIPs. +This is enabled by a subset of exposeOptions specified in ScyllaCluster API, introduced in v1.11.

          +

          For this particular setup, define the ScyllaClusers as follows:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +spec:
          +  exposeOptions:
          +    nodeService:
          +      type: Headless
          +    broadcastOptions:
          +      clients:
          +        type: PodIP
          +      nodes:
          +        type: PodIP
          +
          +
          +

          However, other configuration options allow for the manual deployment of multi-datacenter ScyllaDB clusters in different network setups. For details, refer to Exposing ScyllaClusters in ScyllaDB Operator documentation.

          +
          +

          Deploy a multi-datacenter ScyllaDB Cluster

          +
          +
          +

          Using context

          +

          Let’s specify contexts for kubectl commands used throughout the guide. +To retrieve the context of your current cluster, run:

          +
          kubectl config current-context
          +
          +
          +

          Save the contexts of the two clusters, which you are going to deploy the datacenters in, as CONTEXT_DC1 and CONTEXT_DC2 environment variables correspondingly.

          +
          +
          +

          Deploy the first datacenter

          +

          First, run the below command to create a dedicated ‘scylla’ namespace:

          +
          kubectl --context="${CONTEXT_DC1}" create ns scylla
          +
          +
          +

          For this guide, let’s assume that your cluster is running in us-east-1 region and the nodes dedicated to running ScyllaDB nodes are running in zones us-east-1a, us-east-1b and us-east-1c correspondingly. If that is not the case, adjust the manifest accordingly.

          +
          +

          Caution

          +

          The .spec.name field of the ScyllaCluster objects represents the ScyllaDB cluster name and has to be consistent across all datacenters of this ScyllaDB cluster. +The names of the datacenters, specified in .spec.datacenter.name, have to be unique across the entire multi-datacenter cluster.

          +

          For more information see Create a ScyllaDB Cluster - Multi Data Centers (DC) in ScyllaDB documentation.

          +
          +

          Save the ScyllaCluster manifest in dc1.yaml:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +metadata:
          +  name: scylla-cluster
          +  namespace: scylla
          +spec:
          +  agentVersion: 3.3.0
          +  version: 6.1.1
          +  cpuset: true
          +  sysctls:
          +  - "fs.aio-max-nr=2097152"
          +  automaticOrphanedNodeCleanup: true
          +  exposeOptions:
          +    broadcastOptions:
          +      clients:
          +        type: PodIP
          +      nodes:
          +        type: PodIP
          +    nodeService:
          +      type: Headless
          +  datacenter:
          +    name: us-east-1
          +    racks:
          +    - name: a
          +      members: 1
          +      storage:
          +        storageClassName: scylladb-local-xfs
          +        capacity: 1800G
          +      agentResources:
          +        requests:
          +          cpu: 100m
          +          memory: 250M
          +        limits:
          +          cpu: 100m
          +          memory: 250M
          +      resources:
          +        requests:
          +          cpu: 7
          +          memory: 56G
          +        limits:
          +          cpu: 7
          +          memory: 56G
          +      placement:
          +        podAntiAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +          - topologyKey: kubernetes.io/hostname
          +            labelSelector:
          +              matchLabels:
          +                app.kubernetes.io/name: scylla
          +                scylla/cluster: scylla-cluster
          +        nodeAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +            nodeSelectorTerms:
          +            - matchExpressions:
          +              - key: topology.kubernetes.io/zone
          +                operator: In
          +                values:
          +                - us-east-1a
          +              - key: scylla.scylladb.com/node-type
          +                operator: In
          +                values:
          +                - scylla
          +        tolerations:
          +        - key: role
          +          operator: Equal
          +          value: scylla-clusters
          +          effect: NoSchedule
          +    - name: b
          +      members: 1
          +      storage:
          +        storageClassName: scylladb-local-xfs
          +        capacity: 1800G
          +      agentResources:
          +        requests:
          +          cpu: 100m
          +          memory: 250M
          +        limits:
          +          cpu: 100m
          +          memory: 250M
          +      resources:
          +        requests:
          +          cpu: 7
          +          memory: 56G
          +        limits:
          +          cpu: 7
          +          memory: 56G
          +      placement:
          +        podAntiAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +          - topologyKey: kubernetes.io/hostname
          +            labelSelector:
          +              matchLabels:
          +                app.kubernetes.io/name: scylla
          +                scylla/cluster: scylla-cluster
          +        nodeAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +            nodeSelectorTerms:
          +            - matchExpressions:
          +              - key: topology.kubernetes.io/zone
          +                operator: In
          +                values:
          +                - us-east-1b
          +              - key: scylla.scylladb.com/node-type
          +                operator: In
          +                values:
          +                - scylla
          +        tolerations:
          +        - key: role
          +          operator: Equal
          +          value: scylla-clusters
          +          effect: NoSchedule
          +    - name: c
          +      members: 1
          +      storage:
          +        storageClassName: scylladb-local-xfs
          +        capacity: 1800G
          +      agentResources:
          +        requests:
          +          cpu: 100m
          +          memory: 250M
          +        limits:
          +          cpu: 100m
          +          memory: 250M
          +      resources:
          +        requests:
          +          cpu: 7
          +          memory: 56G
          +        limits:
          +          cpu: 7
          +          memory: 56G
          +      placement:
          +        podAntiAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +          - topologyKey: kubernetes.io/hostname
          +            labelSelector:
          +              matchLabels:
          +                app.kubernetes.io/name: scylla
          +                scylla/cluster: scylla-cluster
          +        nodeAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +            nodeSelectorTerms:
          +            - matchExpressions:
          +              - key: topology.kubernetes.io/zone
          +                operator: In
          +                values:
          +                - us-east-1c
          +              - key: scylla.scylladb.com/node-type
          +                operator: In
          +                values:
          +                - scylla
          +        tolerations:
          +        - key: role
          +          operator: Equal
          +          value: scylla-clusters
          +          effect: NoSchedule
          +
          +
          +

          Apply the manifest:

          +
          kubectl --context="${CONTEXT_DC1}" apply --server-side -f=dc1.yaml
          +
          +
          +

          Wait for the cluster to be fully rolled out:

          +
          kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
          +
          +
          +
          scyllacluster.scylla.scylladb.com/scylla-cluster condition met
          +
          +
          +
          kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
          +
          +
          +
          scyllacluster.scylla.scylladb.com/scylla-cluster condition met
          +
          +
          +
          kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster
          +
          +
          +
          scyllacluster.scylla.scylladb.com/scylla-cluster condition met
          +
          +
          +

          You can now verify that all the nodes of your cluster are in UN state:

          +
          kubectl --context="${CONTEXT_DC1}" -n=scylla exec -it pod/scylla-cluster-us-east-1-a-0 -c=scylla -- nodetool status
          +
          +
          +

          The expected output should look similar to the below:

          +
          Datacenter: us-east-1
          +=====================
          +Status=Up/Down
          +|/ State=Normal/Leaving/Joining/Moving
          +--  Address      Load       Tokens       Owns    Host ID                               Rack
          +UN  10.0.70.195  290 KB     256          ?       494277b9-121c-4af9-bd63-3d0a7b9305f7  c
          +UN  10.0.59.24   559 KB     256          ?       a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37  b
          +UN  10.0.19.237  107 KB     256          ?       64b6292a-327f-4128-852a-6004039f402e  a
          +
          +
          +
          +
          Retrieve PodIPs of ScyllaDB nodes for use as external seeds
          +
          +

          Warning

          +

          Due to the ephemeral nature of PodIPs, it is ill-advised to use them as seeds in production environments. +This is because there is a high likelihood that the Pods of your ScyllaDB clusters will change their IPs during the cluster’s lifecycle, and so the provided seeds will no longer point to the ScyllaDB nodes. +It is undesired, as the seeds provided on node’s startup may serve as fallback contact points when all of the node’s peers are unreachable. +In production environments, it is recommended that you use domain names or non-ephemeral IP addresses as external seeds. +PodIPs are being used in this example for the sheer simplicity of this setup.

          +
          +

          Use the below commands and their expected outputs as a reference for retrieving the PodIPs used by the cluster for inter-node communication.

          +
          kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-a-0 --template='{{ .status.podIP }}'
          +
          +
          +
          10.0.19.237
          +
          +
          +
          kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-b-0 --template='{{ .status.podIP }}'
          +
          +
          +
          10.0.59.24
          +
          +
          +
          kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-c-0 --template='{{ .status.podIP }}'
          +
          +
          +
          10.0.70.195
          +
          +
          +

          You are going to utilize the retrieved addresses as seeds for the other datacenter.

          +
          +
          +
          +

          Deploy the second datacenter

          +

          To deploy the second datacenter, you will follow similar steps.

          +

          First, create a dedicated ‘scylla’ namespace:

          +
          kubectl --context="${CONTEXT_DC2}" create ns scylla
          +
          +
          +

          Replace the values in .spec.externalSeeds of the below manifest with the Pod IP addresses that you retrieved earlier. +The provided values are going to serve as initial contact points for the joining nodes of the second datacenter.

          +

          For this guide, let’s assume that the second cluster is running in us-east-2 region and the nodes dedicated for running ScyllaDB nodes are running in zones us-east-2a, us-east-2b and us-east-2c correspondingly. If that is not the case, adjust the manifest accordingly. +Having configured it, save the manifest as dc2.yaml:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +metadata:
          +  name: scylla-cluster
          +  namespace: scylla
          +spec:
          +  agentVersion: 3.3.0
          +  version: 6.1.1
          +  cpuset: true
          +  sysctls:
          +  - "fs.aio-max-nr=2097152"
          +  automaticOrphanedNodeCleanup: true
          +  exposeOptions:
          +    broadcastOptions:
          +      clients:
          +        type: PodIP
          +      nodes:
          +        type: PodIP
          +    nodeService:
          +      type: Headless
          +  externalSeeds:
          +  - 10.0.19.237
          +  - 10.0.59.24
          +  - 10.0.70.195
          +  datacenter:
          +    name: us-east-2
          +    racks:
          +    - name: a
          +      members: 1
          +      storage:
          +        storageClassName: scylladb-local-xfs
          +        capacity: 1800G
          +      agentResources:
          +        requests:
          +          cpu: 100m
          +          memory: 250M
          +        limits:
          +          cpu: 100m
          +          memory: 250M
          +      resources:
          +        requests:
          +          cpu: 7
          +          memory: 56G
          +        limits:
          +          cpu: 7
          +          memory: 56G
          +      placement:
          +        podAntiAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +          - topologyKey: kubernetes.io/hostname
          +            labelSelector:
          +              matchLabels:
          +                app.kubernetes.io/name: scylla
          +                scylla/cluster: scylla-cluster
          +        nodeAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +            nodeSelectorTerms:
          +            - matchExpressions:
          +              - key: topology.kubernetes.io/zone
          +                operator: In
          +                values:
          +                - us-east-2a
          +              - key: scylla.scylladb.com/node-type
          +                operator: In
          +                values:
          +                - scylla
          +        tolerations:
          +        - key: role
          +          operator: Equal
          +          value: scylla-clusters
          +          effect: NoSchedule
          +    - name: b
          +      members: 1
          +      storage:
          +        storageClassName: scylladb-local-xfs
          +        capacity: 1800G
          +      agentResources:
          +        requests:
          +          cpu: 100m
          +          memory: 250M
          +        limits:
          +          cpu: 100m
          +          memory: 250M
          +      resources:
          +        requests:
          +          cpu: 7
          +          memory: 56G
          +        limits:
          +          cpu: 7
          +          memory: 56G
          +      placement:
          +        podAntiAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +          - topologyKey: kubernetes.io/hostname
          +            labelSelector:
          +              matchLabels:
          +                app.kubernetes.io/name: scylla
          +                scylla/cluster: scylla-cluster
          +        nodeAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +            nodeSelectorTerms:
          +            - matchExpressions:
          +              - key: topology.kubernetes.io/zone
          +                operator: In
          +                values:
          +                - us-east-2b
          +              - key: scylla.scylladb.com/node-type
          +                operator: In
          +                values:
          +                - scylla
          +        tolerations:
          +        - key: role
          +          operator: Equal
          +          value: scylla-clusters
          +          effect: NoSchedule
          +    - name: c
          +      members: 1
          +      storage:
          +        storageClassName: scylladb-local-xfs
          +        capacity: 1800G
          +      agentResources:
          +        requests:
          +          cpu: 100m
          +          memory: 250M
          +        limits:
          +          cpu: 100m
          +          memory: 250M
          +      resources:
          +        requests:
          +          cpu: 7
          +          memory: 56G
          +        limits:
          +          cpu: 7
          +          memory: 56G
          +      placement:
          +        podAntiAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +          - topologyKey: kubernetes.io/hostname
          +            labelSelector:
          +              matchLabels:
          +                app.kubernetes.io/name: scylla
          +                scylla/cluster: scylla-cluster
          +        nodeAffinity:
          +          requiredDuringSchedulingIgnoredDuringExecution:
          +            nodeSelectorTerms:
          +            - matchExpressions:
          +              - key: topology.kubernetes.io/zone
          +                operator: In
          +                values:
          +                - us-east-2c
          +              - key: scylla.scylladb.com/node-type
          +                operator: In
          +                values:
          +                - scylla
          +        tolerations:
          +        - key: role
          +          operator: Equal
          +          value: scylla-clusters
          +          effect: NoSchedule
          +
          +
          +

          To apply the manifest, run:

          +
          kubectl --context="${CONTEXT_DC2}" -n=scylla apply --server-side -f=dc2.yaml
          +
          +
          +

          Wait for the second datacenter to roll out:

          +
          kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
          +
          +
          +
          scyllacluster.scylla.scylladb.com/scylla-cluster condition met
          +
          +
          +
          kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
          +
          +
          +
          scyllacluster.scylla.scylladb.com/scylla-cluster condition met
          +
          +
          +
          kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster
          +
          +
          +
          scyllacluster.scylla.scylladb.com/scylla-cluster condition met
          +
          +
          +

          You can verify that the nodes have joined the existing cluster and that you are now running a multi-datacenter ScyllaDB cluster by running nodetool status with the below command:

          +
          kubectl --context="${CONTEXT_DC2}" -n=scylla exec -it pod/scylla-cluster-us-east-2-a-0 -c=scylla -- nodetool status
          +
          +
          +
          Datacenter: us-east-1
          +=====================
          +Status=Up/Down
          +|/ State=Normal/Leaving/Joining/Moving
          +--  Address        Load       Tokens       Owns    Host ID                               Rack
          +UN  10.0.70.195    705 KB     256          ?       494277b9-121c-4af9-bd63-3d0a7b9305f7  c
          +UN  10.0.59.24     764 KB     256          ?       a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37  b
          +UN  10.0.19.237    634 KB     256          ?       64b6292a-327f-4128-852a-6004039f402e  a
          +Datacenter: us-east-2
          +=====================
          +Status=Up/Down
          +|/ State=Normal/Leaving/Joining/Moving
          +--  Address        Load       Tokens       Owns    Host ID                               Rack
          +UN  172.16.39.209  336 KB     256          ?       7c30ea55-7a4f-4d93-86f7-c881772ebe62  b
          +UN  172.16.25.18   759 KB     256          ?       665dde7e-e420-4db3-8c54-ca71efd39b2e  a
          +UN  172.16.87.27   503 KB     256          ?       c19c89cb-e24c-4062-9df4-2aa90ab29a99  c
          +
          +
          +
          +
          +
          +
          +

          Scylla Manager

          +

          To integrate a multi-datacenter ScyllaDB cluster with Scylla Manager, you must deploy the Scylla Manager in only one datacenter.

          +

          In this example, let’s choose the Kubernetes cluster deployed in the first datacenter to host it. +To deploy Scylla Manager, follow the steps described in Deploying Scylla Manager on a Kubernetes Cluster +in ScyllaDB Operator documentation.

          +

          In order to define the Scylla Manager tasks, add them to the ScyllaCluster object deployed in the same Kubernetes cluster +in which your Scylla Manager is running.

          +

          Every datacenter (represented by ScyllaCluster CR) is, by default, provisioned with a new, random Scylla Manager Agent auth token. +To use Scylla Manager with multiple datacenter (represented by ScyllaClusters), you have to make sure they all use the same token.

          +

          Extract it from the first datacenter with the below command:

          +
          kubectl --context="${CONTEXT_DC1}" -n=scylla get secrets/scylla-cluster-auth-token --template='{{ index .data "auth-token.yaml" }}' | base64 -d
          +
          +
          +
          auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf
          +
          +
          +

          Save the output, replace the token with your own, and patch the secret in the second datacenter with the below command:

          +
          kubectl --context="${CONTEXT_DC2}" -n=scylla patch secret/scylla-cluster-auth-token--type='json' -p='[{"op": "add", "path": "/stringData", "value": {"auth-token.yaml": "auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf"}}]'
          +
          +
          +

          Execute a rolling restart of the nodes in DC2 to make sure they pick up the new token:

          +
          kubectl --context="${CONTEXT_DC2}" -n=scylla patch scyllacluster/scylla-cluster --type='merge' -p='{"spec": {"forceRedeploymentReason": "sync scylla-manager-agent token ('"$( date )"')"}}'
          +
          +
          +
          +
          +

          ScyllaDBMonitoring

          +

          To monitor your cluster, deploy ScyllaDBMonitoring in every datacenter independently. +To deploy ScyllaDB Monitoring, follow the steps described in Deploy managed monitoring in ScyllaDB Operator documentation.

          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/nodeoperations/automatic-cleanup.html b/stable/nodeoperations/automatic-cleanup.html new file mode 100644 index 00000000000..418c6a81be1 --- /dev/null +++ b/stable/nodeoperations/automatic-cleanup.html @@ -0,0 +1,598 @@ + + + + + + + + + + + + + Automatic cleanup and replacement in case when k8s node is lost | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Automatic cleanup and replacement in case when k8s node is lost

          +

          In case when your k8s cluster loses one of the nodes due to incident or explicit removal, Scylla Pods may become unschedulable due to PVC node affinity.

          +

          When automaticOrphanedNodeCleanup flag is enabled in your ScyllaCluster, Scylla Operator will perform automatic +node replacement of a Pod which lost his bound resources.

          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/nodeoperations/index.html b/stable/nodeoperations/index.html new file mode 100644 index 00000000000..ade4a3f919d --- /dev/null +++ b/stable/nodeoperations/index.html @@ -0,0 +1,597 @@ + + + + + + + + + + + + + Node operations using Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Node operations using Scylla Operator

          + +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/nodeoperations/maintenance-mode.html b/stable/nodeoperations/maintenance-mode.html new file mode 100644 index 00000000000..dd6762c990b --- /dev/null +++ b/stable/nodeoperations/maintenance-mode.html @@ -0,0 +1,607 @@ + + + + + + + + + + + + + Maintenance mode | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + + + +
          +

          Maintenance mode

          +

          When maintenance mode is enabled, readiness probe of Scylla Pod will always return failure and liveness probe will always succeed. This causes that Pod under maintenance +is being removed from K8s Load Balancer and DNS registry but Pod itself stays alive.

          +

          This allows the Scylla Operator to interact with Scylla and Scylla dependencies inside the Pod. +For example user may turn off Scylla process, do something with the filesystem and bring the process back again.

          +

          To enable maintenance mode add scylla/node-maintenance label to service in front of Scylla Pod.

          +
          kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance=""
          +
          +
          +

          To disable, simply remove this label from service.

          +
          kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance-
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/nodeoperations/replace-node.html b/stable/nodeoperations/replace-node.html new file mode 100644 index 00000000000..d7dc1be297c --- /dev/null +++ b/stable/nodeoperations/replace-node.html @@ -0,0 +1,681 @@ + + + + + + + + + + + + + Replacing a Scylla node | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + + + +
          +

          Replacing a Scylla node

          +
          +

          Replacing a dead node

          +

          In the case of a host failure, it may not be possible to bring back the node to life.

          +

          Replace dead node operation will cause the other nodes in the cluster to stream data to the node that was replaced. +This operation can take some time (depending on the data size and network bandwidth).

          +

          This procedure is for replacing one dead node. To replace more than one dead node, run the full procedure to completion one node at a time

          +

          Procedure

          +
            +
          1. Verify the status of the node using nodetool status command, the node with status DN is down and need to be replaced

            +
            kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status
            +Datacenter: us-east-1
            +=====================
            +Status=Up/Down
            +|/ State=Normal/Leaving/Joining/Moving
            +--  Address        Load       Tokens       Owns    Host ID                               Rack
            +UN  10.43.125.110  74.63 KB   256          ?       8ebd6114-969c-44af-a978-87a4a6c65c3e  us-east-1a
            +UN  10.43.231.189  91.03 KB   256          ?       35d0cb19-35ef-482b-92a4-b63eee4527e5  us-east-1a
            +DN  10.43.43.51    74.77 KB   256          ?       1ffa7a82-c41c-4706-8f5f-4d45a39c7003  us-east-1a
            +
            +
            +
          2. +
          3. Identify service which is bound to down node by checking IP address

            +
            kubectl -n scylla get svc
            +NAME                                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                           AGE
            +simple-cluster-client                   ClusterIP   None            <none>        9180/TCP                                                          3h12m
            +simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.231.189   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h12m
            +simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.125.110   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h11m
            +simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.43.51     <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h5m
            +
            +
            +
          4. +
          5. Drain node which we would like to replace using. This command may delete your data from local disks attached to given node!

            +
            kubectl drain gke-scylla-demo-default-pool-b4b390a1-6j12 --ignore-daemonsets --delete-local-data
            +
            +
            +

            Pod which will be replaced should enter the Pending state

            +
            kubectl -n scylla get pods
            +NAME                                    READY   STATUS    RESTARTS   AGE
            +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          3h21m
            +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          3h19m
            +simple-cluster-us-east-1-us-east-1a-2   0/2     Pending   0          8m14s
            +
            +
            +
          6. +
          7. To being node replacing, add scylla/replace="" label to service bound to pod we are replacing.

            +
            kubectl -n scylla label svc simple-cluster-us-east-1-us-east-1a-2 scylla/replace=""
            +
            +
            +

            Your failed Pod should be recreated on available k8s node

            +
            kubectl -n scylla get pods
            +NAME                                    READY   STATUS    RESTARTS   AGE
            +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          3h27m
            +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          3h25m
            +simple-cluster-us-east-1-us-east-1a-2   1/2     Running   0          9s
            +
            +
            +

            Because other nodes in cluster must stream data to new node this operation might take some time depending on how much data your cluster stores. +After bootstraping is over, your new Pod should be ready to go. +Old one shouldn’t be no longer visible in nodetool status

            +
            kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status
            +Datacenter: us-east-1
            +=====================
            +Status=Up/Down
            +|/ State=Normal/Leaving/Joining/Moving
            +--  Address        Load       Tokens       Owns    Host ID                               Rack
            +UN  10.43.125.110  74.62 KB   256          ?       8ebd6114-969c-44af-a978-87a4a6c65c3e  us-east-1a
            +UN  10.43.231.189  91.03 KB   256          ?       35d0cb19-35ef-482b-92a4-b63eee4527e5  us-east-1a
            +UN  10.43.191.172  74.77 KB   256          ?       1ffa7a82-c41c-4706-8f5f-4d45a39c7003  us-east-1a
            +
            +
            +
          8. +
          9. Run the repair on the cluster to make sure that the data is synced with the other nodes in the cluster. +You can use Scylla Manager to run the repair.

          10. +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/nodeoperations/restore.html b/stable/nodeoperations/restore.html new file mode 100644 index 00000000000..526d5a3c331 --- /dev/null +++ b/stable/nodeoperations/restore.html @@ -0,0 +1,832 @@ + + + + + + + + + + + + + Restore from backup | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + + + +
          +

          Restore from backup

          +

          This procedure will describe how to restore from backup taken using Scylla Manager to a fresh empty cluster of any size.

          +
          +

          Warning

          +

          Restoring schema with ScyllaDB OS 5.4.X or ScyllaDB Enterprise 2024.1.X and consistent_cluster_management isn’t supported.

          +

          When creating the target ScyllaDB cluster, configure it with consistent_cluster_management: false. +Refer to API Reference to learn how to customize ScyllaDB configuration files.

          +

          When following the steps for schema restore, ensure you follow the additional steps dedicated to affected ScyllaDB versions.

          +
          +

          In the following example, the ScyllaCluster, which was used to take the backup, is called source. Backup will be restored into the ScyllaCluster named target.

          +
          + +
          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +metadata:
          +  name: source
          +spec:
          +  agentVersion: 3.3.0
          +  version: 6.1.1
          +  developerMode: true
          +  backups:
          +  - name: foo
          +    location:
          +    - s3:source-backup
          +    keyspace:
          +    - '*'
          +  datacenter:
          +    name: us-east-1
          +    racks:
          +    - name: us-east-1a
          +      members: 1
          +      storage:
          +        capacity: 1Gi
          +      resources:
          +        limits:
          +          cpu: 1
          +          memory: 1Gi
          +
          +
          +
          + +
          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +metadata:
          +  name: target
          +spec:
          +  agentVersion: 3.3.0
          +  version: 6.1.1
          +  developerMode: true
          +  datacenter:
          +    name: us-east-1
          +    racks:
          +    - name: us-east-1a
          +      members: 1
          +      storage:
          +        capacity: 1Gi
          +      resources:
          +        limits:
          +          cpu: 1
          +          memory: 1Gi
          +
          +
          +
          +
          +

          Make sure your target cluster is already registered in Scylla Manager. To get a list of all registered clusters, execute the following command:

          +
          $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool cluster list
          ++--------------------------------------+---------------------------------------+---------+-----------------+
          +| ID                                   | Name                                  | Port    | CQL credentials |
          ++--------------------------------------+---------------------------------------+---------+-----------------+
          +| af1dd5cd-0406-4974-949f-dc9842980080 | scylla/target                        | default | set             |
          +| ebd82268-efb7-407e-a540-3619ae053778 | scylla/source                        | default | set             |
          ++--------------------------------------+---------------------------------------+---------+-----------------+
          +
          +
          +

          Identify the tag of a snapshot which you want to restore. To get a list of all available snapshots, execute following command:

          +
          kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c <CLUSTER_ID> --all-clusters -L <BACKUP_LOCATION>
          +
          +
          +

          Where:

          +
            +
          • CLUSTER_ID - the name or ID of a registered cluster with access to BACKUP_LOCATION.

          • +
          • BACKUP_LOCATION - the location in which the backup is stored.

          • +
          +

          In this example, BACKUP_LOCATION is s3:source-backup. Use the name of cluster which has access to the backup location for CLUSTER_ID. +In this example, it’s scylla/target.

          +
          $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c scylla/target --all-clusters -L s3:source-backup
          +backup/ff36d7e0-af2e-458c-afe6-868e0f3396b2
          +Snapshots:
          +  - sm_20240105115931UTC (409MiB, 1 nodes)
          +Keyspaces:
          +  - system_schema (15 tables)
          +  - users (9 tables)
          +
          +
          +
          +

          Restore schema

          +

          In the below commands, we are restoring the sm_20240105115931UTC snapshot. Replace it with a tag of a snapshot that you want to restore. +Restoring consist of two steps. First, you’ll restore the schema, and then the data. +To restore schema, create a restore task manually on target ScyllaCluster by executing following command:

          +
          kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager --  sctool restore -c <CLUSTER_ID> -L <BACKUP_LOCATION> -T <SNAPSHOT_TAG> --restore-schema
          +
          +
          +

          Where:

          +
            +
          • CLUSTER_ID - a name or ID of a cluster you want to restore into.

          • +
          • BACKUP_LOCATION - the location in which the backup is stored.

          • +
          • SNAPSHOT_TAG - a tag of a snapshot that you want to restore.

          • +
          +

          When the task is created, the command will output the ID of a restore task.

          +
          $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-schema
          +restore/57228c52-7cf6-4271-8c8d-d446ff160747
          +
          +
          +

          Use the following command to check progress of the restore task:

          +
          $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/57228c52-7cf6-4271-8c8d-d446ff160747
          +Restore progress
          +Run:            0dd20cdf-abc4-11ee-951c-6e7993cf42ed
          +Status:         DONE - restart required (see restore docs)
          +Start time:     05 Jan 24 12:15:02 UTC
          +End time:       05 Jan 24 12:15:09 UTC
          +Duration:       6s
          +Progress:       100% | 100%
          +Snapshot Tag:   sm_20240105115931UTC
          +
          ++---------------+-------------+----------+----------+------------+--------+
          +| Keyspace      |    Progress |     Size |  Success | Downloaded | Failed |
          ++---------------+-------------+----------+----------+------------+--------+
          +| system_schema | 100% | 100% | 214.150k | 214.150k |   214.150k |      0 |
          ++---------------+-------------+----------+----------+------------+--------+
          +
          +
          +

          As suggested in the progress output, you will need to execute a rolling restart of the ScyllaCluster.

          +
          kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "schema restored"}}'
          +
          +
          +

          Use the following commands to wait until restart is finished:

          +
          $ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target
          +scyllacluster.scylla.scylladb.com/target condition met
          +
          +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target
          +scyllacluster.scylla.scylladb.com/target condition met
          +
          +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target
          +scyllacluster.scylla.scylladb.com/target condition met
          +
          +
          +
          +

          Caution

          +

          Restoring schema with ScyllaDB OS 5.4.X or ScyllaDB Enterprise 2024.1.X and consistent_cluster_management

          +

          After you’ve followed the above steps with a ScyllaDB target cluster with consistent_cluster_management disabled, you’ll need to enable Raft by configuring the target cluster with consistent_cluster_management: true. +Refer to API Reference to learn how to customize ScyllaDB configuration files.

          +

          You will then need to execute a rolling restart of the ScyllaCluster for the change to take effect.

          +
          kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "raft enabled"}}'
          +
          +
          +

          Use the following commands to wait until restart is finished:

          +
          $ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target
          +scyllacluster.scylla.scylladb.com/target condition met
          +
          +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target
          +scyllacluster.scylla.scylladb.com/target condition met
          +
          +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target
          +scyllacluster.scylla.scylladb.com/target condition met
          +
          +
          +
          +
          +
          +

          Restore tables

          +

          To restore the tables content, create a restore task manually on target ScyllaCluster by executing the following command:

          +
          kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c <CLUSTER_ID> -L <BACKUP_LOCATION> -T <SNAPSHOT_TAG> --restore-tables
          +
          +
          +

          Where:

          +
            +
          • CLUSTER_ID - a name or ID of a cluster you want to restore into.

          • +
          • BACKUP_LOCATION - the location in which the backup is stored.

          • +
          • SNAPSHOT_TAG - a tag of a snapshot that you want to restore.

          • +
          +

          When the task is created, the command will output the ID of a restore task.

          +
          $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-tables
          +restore/63642069-bed5-4def-ba0f-68c49e47ace1
          +
          +
          +

          Use the following command to check progress of the restore task:

          +
          $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/63642069-bed5-4def-ba0f-68c49e47ace1
          +Restore progress
          +Run:            ab015cef-abc8-11ee-9521-6e7993cf42ed
          +Status:         DONE
          +Start time:     05 Jan 24 12:48:04 UTC
          +End time:       05 Jan 24 12:48:15 UTC
          +Duration:       11s
          +Progress:       100% | 100%
          +Snapshot Tag:   sm_20240105115931UTC
          +
          ++-------------+-------------+--------+---------+------------+--------+
          +| Keyspace    |    Progress |   Size | Success | Downloaded | Failed |
          ++-------------+-------------+--------+---------+------------+--------+
          +| users       | 100% | 100% | 409MiB |  409MiB |     409MiB |      0 |
          ++-------------+-------------+--------+---------+------------+--------+
          +
          +Post-restore repair progress
          +Run:            ab015cef-abc8-11ee-9521-6e7993cf42ed
          +Status:         DONE
          +Start time:     05 Jan 24 12:48:04 UTC
          +End time:       05 Jan 24 12:48:15 UTC
          +Duration:       11s
          +Progress:       100%
          +Intensity:      1
          +Parallel:       0
          +Datacenters:
          +  - us-east-1
          +
          ++-------------+--------------+----------+----------+
          +| Keyspace    |        Table | Progress | Duration |
          ++-------------+--------------+----------+----------+
          +| users       | users        | 100%     | 0s       |
          ++-------------+--------------+----------+----------+
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/nodeoperations/scylla-upgrade.html b/stable/nodeoperations/scylla-upgrade.html new file mode 100644 index 00000000000..b9e8b3d8c2f --- /dev/null +++ b/stable/nodeoperations/scylla-upgrade.html @@ -0,0 +1,680 @@ + + + + + + + + + + + + + Upgrading version of Scylla | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Upgrading version of Scylla

          +

          To upgrade Scylla version using Operator user have to modify existing ScyllaCluster definition.

          +

          In this example cluster will be upgraded to version 4.4.5.

          +
          kubectl -n scylla patch ScyllaCluster simple-cluster  -p '{"spec":{"version": "4.4.5"}}' --type=merge
          +
          +
          +

          Operator supports two types of version upgrades:

          +
            +
          1. Patch upgrade

          2. +
          3. Generic upgrade

          4. +
          +

          Patch upgrade

          +

          Patch upgrade is executed when only patch version change is detected according to semantic versioning format. +Procedure simply rolls out a restart of whole cluster and upgrades Scylla container image for each node one by one.

          +

          Example: 4.0.0 -> 4.0.1

          +

          Generic upgrade

          +

          Generic upgrades are executed for the non patch version changes.

          +

          Example: 4.0.0 -> 2020.1.0 or 4.0.0 -> 4.1.0 or even 4.0.0 -> nightly

          +

          User can observe current state of upgrade in ScyllaCluster status.

          +
          kubectl -n scylla describe ScyllaCluster simple-cluster
          +[...]
          +Status:
          +  Racks:
          +    us-east-1a:
          +      Members:        3
          +      Ready Members:  3
          +      Version:        4.1.9
          +  Upgrade:
          +    Current Node:         simple-cluster-us-east-1-us-east-1a-2
          +    Current Rack:         us-east-1a
          +    Data Snapshot Tag:    so_data_20201228135002UTC
          +    From Version:         4.1.9
          +    State:                validate_upgrade
          +    System Snapshot Tag:  so_system_20201228135002UTC
          +    To Version:           4.2.2
          +
          +
          +

          Each upgrade begins with taking a snapshot of system and system_schema keyspaces on all nodes in parallel. +Name of this snapshot tag is saved in upgrade status under System Snapshot Tag.

          +

          Before nodes in rack are upgraded, underlying StatefulSet is changed to use OnDelete UpgradeStrategy. +This allows Operator have a full control over when Pod image is changed.

          +

          When a node is being upgraded, maintenance mode is enabled, then the node is drained and snapshot of all data keyspaces is taken. +Snapshot tag is saved under Data Snapshot Tag and is the same for all nodes during the procedure. +Once everything is set up, maintenance mode is disabled and Scylla Pod is deleted. Underlying StatefulSet will bring up a new +Pod with upgraded version. +Once Pod will become ready, data snapshot from this particular node is removed, and Operator moves to next node.

          +

          Once every rack is upgraded, system snapshot is removed from all nodes in parallel and previous StatefulSet UpgradeStrategy is restored. +At this point, all your nodes should be already in desired version.

          +

          Current state of upgrade can be traced using Current Node, Current Rack and State status fields.

          +
            +
          • Current Node shows which node is being upgraded.

          • +
          • Current Rack displays which rack is being upgraded.

          • +
          • State contain information at which stage upgrade is.

          • +
          +

          State can have following values:

          +
            +
          • begin_upgrade - upgrade is starting

          • +
          • check_schema_agreement - Operator waits until all nodes reach schema agreement. It waits for it for 1 minute, prints an error log message and check is retried.

          • +
          • create_system_backup - system keyspaces snapshot is being taken

          • +
          • find_next_rack - Operator finds out which rack must be upgraded next, decision is saved in Current Rack

          • +
          • upgrade_image_in_pod_spec - Image and UpgradeStrategy is upgraded in underlying StatefulSet

          • +
          • find_next_node - Operator finds out which node must be upgraded next, decision is saved in Current Node

          • +
          • enable_maintenance_mode - maintenance mode is being enabled

          • +
          • drain_node - node is being drained

          • +
          • backup_data - snapshot of data keyspaces is being taken

          • +
          • disable_maintenance_mode - maintenance mode is being disabled

          • +
          • delete_pod - Scylla Pod is being deleted

          • +
          • validate_upgrade - Operator validates if new pod enters Ready state and if Scylla version is upgraded

          • +
          • clear_data_backup - snapshot of data keyspaces is being removed

          • +
          • clear_system_backup - snapshot of system keyspaces is being removed

          • +
          • restore_upgrade_strategy - restore UpgradeStrategy in underlying StatefulSet

          • +
          • finish_upgrade - upgrade cleanup

          • +
          +

          Recovering from upgrade failure

          +

          Upgrade may get stuck on validate_upgrade stage. This happens when Scylla Pod refuses to properly boot up.

          +

          To continue with upgrade, first turn off operator by scaling Operator replicas to zero:

          +
          kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=0
          +
          +
          +

          Then user have to manually resolve issue with Scylla by checking what is the root cause of a failure in Scylla container logs. +If needed data and system keyspaces SSTable snapshots are available on the node. You can check ScyllaCluster status for their names.

          +

          Once issue is resolved and Scylla Pod is up and running (Pod is in Ready state), scale Operator back to two replicas:

          +
          kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=2
          +
          +
          +

          Operator should continue upgrade process from where it left off.

          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/objects.inv b/stable/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..383fdb04d9e293c5e782ea725a0a39b715c1422c GIT binary patch literal 6766 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 QXrCMue<*eSAE3w3KrTJ+00000 literal 0 HcmV?d00001 diff --git a/stable/performance.html b/stable/performance.html new file mode 100644 index 00000000000..150786ce600 --- /dev/null +++ b/stable/performance.html @@ -0,0 +1,689 @@ + + + + + + + + + + + + + Performance tuning | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Performance tuning

          +

          Scylla Operator 1.6 introduces a new experimental feature allowing users to optimize Kubernetes nodes.

          +
          +

          Warning

          +

          We recommend that you first try out the performance tuning on a pre-production instance. +Given the nature of the underlying tuning script, undoing the changes requires rebooting the Kubernetes node(s).

          +
          +
          +

          Node tuning

          +

          Starting from Operator 1.6, a new CRD called NodeConfig is available, allowing users to target Nodes which should be tuned. +When a Node is supposed to be optimized, the Scylla Operator creates a DaemonSet covering these Nodes. +Nodes matching the provided placement conditions will be subject to tuning.

          +

          Below example NodeConfig tunes nodes having scylla.scylladb.com/node-type=scylla label:

          +
          apiVersion: scylla.scylladb.com/v1alpha1
          +kind: NodeConfig
          +metadata:
          + name: cluster
          +spec:
          + placement:
          +   nodeSelector:
          +     scylla.scylladb.com/node-type: scylla
          +
          +
          +

          For more details about new CRD use:

          +
          kubectl explain nodeconfigs.scylla.scylladb.com/v1alpha1
          +
          +
          +

          For all optimizations we use a Python script available in the Scylla image called perftune. +Perftune executes the performance optmizations like tuning the kernel, network, disk devices, spreading IRQs across CPUs and more.

          +

          Tuning consists of two separate optimizations: common node tuning, and tuning based on Scylla Pods and their resource assignment. +Node tuning is executed immediately. Pod tuning is executed when Scylla Pod lands on the same Node.

          +

          Scylla works most efficently when it’s pinned to CPU and not interrupted. +One of the most common causes of context-switching are network interrupts. Packets coming to a node need to be processed, +and this requires CPU shares.

          +

          On K8s we always have at least a couple of processes running on the node: kubelet, kubernetes provider applications, daemons etc. +These processes require CPU shares, so we cannot dedicate entire node processing power to Scylla, we need to leave space for others.
          +We take advantage of it, and we pin IRQs to CPUs not used by any Scylla Pods exclusively.

          +

          Tuning resources are created in a special namespace called scylla-operator-node-tuning.

          +

          The tuning is applied only to pods with Guaranteed QoS class. Please double check your ScyllaCluster resource specification +to see if it meets all conditions.

          +
          +
          +

          Kubernetes tuning

          +

          By default, the kubelet uses the CFS quota to enforce pod CPU limits.
          +When the node runs many CPU-bound pods, the workload can move around different CPU cores depending on whether the pod +is throttled and which CPU cores are available. +However, kubelet may be configured to assign CPUs exclusively, by setting the CPU manager policy to static.

          +

          Setting up kubelet configuration is provider specific. Please check the docs for your distribution or talk to your +provider.

          +

          Only pods within the Guaranteed QoS class) can take advantage of this option. +When such pod lands on a Node, kubelet will pin them to specific CPUs, and those won’t be part of the shared pool.

          +

          In our case there are two requirements each ScyllaCluster must fulfill to receive a Guaranteed QoS class:

          +
            +
          • resource request and limits must be equal or only limits have to be provided

          • +
          • agentResources must be provided and their requests and limits must be equal, or only limits have to be provided

          • +
          +

          An example of such a ScyllaCluster that receives a Guaranteed QoS class is below:

          +
          apiVersion: scylla.scylladb.com/v1
          +kind: ScyllaCluster
          +metadata:
          +  name: guaranteed-cluster
          +  namespace: scylla
          +spec:
          +  agentVersion: 3.3.0
          +  version: 6.1.1
          +  datacenter:
          +    name: us-east-1
          +    racks:
          +    - name: us-east-1a
          +      members: 3
          +      storage:
          +        capacity: 500Gi
          +      agentResources:
          +        requests:
          +          cpu: 1
          +          memory: 1G
          +        limits:
          +          cpu: 1
          +          memory: 1G
          +      resources:
          +        requests:
          +          cpu: 4
          +          memory: 16G
          +        limits:
          +          cpu: 4
          +          memory: 16G
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/releases.html b/stable/releases.html new file mode 100644 index 00000000000..0008370e11b --- /dev/null +++ b/stable/releases.html @@ -0,0 +1,848 @@ + + + + + + + + + + + + + Releases | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Releases

          +
          +

          Schedule

          +

          We are aiming to ship a new release approximately every 6 weeks. The following release schedule is only advisory, there are no commitments made to hitting these dates.

          + + + + + + + + + + + + + +

          Release

          Code freeze

          General availability

          1.14

          2024-08-14

          2024-08-31

          +
          +
          +

          Supported releases

          +

          We support the latest 2 releases of the operator to give everyone time to upgrade.

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Release

          General availability

          Support ends

          1.13

          2024-06-20

          Release of 1.15

          1.12

          2024-03-28

          Release of 1.14

          1.11

          2023-11-09

          2024-06-20

          1.10

          2023-08-25

          2024-03-28

          1.9

          2023-07-04

          2023-11-09

          1.8

          2023-01-25

          2023-08-25

          1.7

          2022-01-27

          2023-07-04

          1.6

          2021-12-03

          2023-01-25

          1.5

          2021-09-16

          2022-01-27

          1.4

          2021-08-10

          2021-12-03

          1.3

          2021-06-17

          2021-09-16

          1.2

          2021-05-06

          2021-08-10

          1.1

          2021-03-22

          2021-06-17

          1.0

          2021-01-21

          2021-05-06

          +
          +

          Backport policy

          +

          Usually, only important bug fixes are eligible for being backported. +This may depend on the situation and assessment of the maintainers.

          +
          +
          +
          +

          CI/CD

          +

          We use GitHub actions for our CI/CD. Every merge to a supported branch, or a creation of a tag will automatically trigger a job to build, test and publish the container image and other artifacts like helm charts. Before we publish any image, it must pass the e2e suite.

          +
          +

          Automated promotions

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Git reference

          Type

          Container image

          master

          branch

          docker.io/scylladb/scylla-operator:latest

          vX.Y

          branch

          docker.io/scylladb/scylla-operator:X.Y

          vX.Y.Z

          tag

          docker.io/scylladb/scylla-operator:X.Y.Z

          vX.Y.Z-alpha.N

          tag

          docker.io/scylladb/scylla-operator:X.Y.Z-alpha.N

          vX.Y.Z-beta.N

          tag

          docker.io/scylladb/scylla-operator:X.Y.Z-beta.N

          vX.Y.Z-rc.N

          tag

          docker.io/scylladb/scylla-operator:X.Y.Z-rc.N

          +
          +
          +

          Generally available

          +

          GA images aren’t build from scratch but rather promoted from an existing release candidates. When we decide a release candidate has the acceptable quality and QA sings it off, the release candidate is promoted to become the GA release. This makes sure the image has exactly the same content and SHA as the tested release candidate.

          +
          +
          +
          +

          Support matrix

          +

          Support matrix table shows the version requirements for a particular scylla-operator version. Be sure to match these requirements, otherwise some functionality will not work.

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Component

          v1.13

          v1.12

          v1.11

          v1.10

          Kubernetes

          >=1.21

          >=1.21

          >=1.21

          >=1.21

          CRI API

          v1

          v1

          v1

          v1

          Scylla OS

          >=5.4

          >=5.0

          >=5.0

          >=5.0

          Scylla Enterprise

          >=2023.1

          >=2021.1

          >=2021.1

          >=2021.1

          Scylla Manager

          >=3.2.8

          >=3.2.6

          >=3.2

          >=2.6

          Scylla Monitoring

          (CRD)

          (CRD)

          (CRD)

          >=4.0

          +
          +

          Supported Kubernetes platforms

          +

          We officially test and recommend to use the following platforms:

          + + + + + + + + + + + + + + +

          Platform

          OS Image

          GKE

          Ubuntu

          EKS

          Amazon Linux

          +

          While our APIs generally work on any Kubernetes conformant cluster, +performance tuning and other pieces that need to interact with the host OS, kubelet, CRI, kernel, etc. might hit some incompatibilities.

          +
          +

          Warning

          +

          The following platforms are known not to work correctly at this time.

          + + + + + + + + + + + + + + + + + +

          Platform

          OS Image

          Details

          GKE

          Container OS

          EKS

          Bottlerocket

          Suspected kernel/cgroups issue that breaks available memory detection for ScyllaDB

          +
          +
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/search.html b/stable/search.html new file mode 100644 index 00000000000..b0d5ef985e8 --- /dev/null +++ b/stable/search.html @@ -0,0 +1,575 @@ + + + + + + + + + + + + + Search | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + + + +
          + + + + + +
          + + +
          + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/searchindex.js b/stable/searchindex.js new file mode 100644 index 00000000000..608a5fca5f2 --- /dev/null +++ b/stable/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {".metadata": [[1, "metadata"], [2, "metadata"], [3, "metadata"], [4, "metadata"]], ".spec": [[1, "spec"], [2, "spec"], [3, "spec"], [4, "spec"]], ".spec.alternator": [[2, "spec-alternator"]], ".spec.alternator.servingCertificate": [[2, "spec-alternator-servingcertificate"]], ".spec.alternator.servingCertificate.operatorManagedOptions": [[2, "spec-alternator-servingcertificate-operatormanagedoptions"]], ".spec.alternator.servingCertificate.userManagedOptions": [[2, "spec-alternator-servingcertificate-usermanagedoptions"]], ".spec.backups[]": [[2, "spec-backups"]], ".spec.components": [[3, "spec-components"]], ".spec.components.grafana": [[3, "spec-components-grafana"]], ".spec.components.grafana.authentication": [[3, "spec-components-grafana-authentication"]], ".spec.components.grafana.exposeOptions": [[3, "spec-components-grafana-exposeoptions"]], ".spec.components.grafana.exposeOptions.webInterface": [[3, "spec-components-grafana-exposeoptions-webinterface"]], ".spec.components.grafana.exposeOptions.webInterface.ingress": [[3, "spec-components-grafana-exposeoptions-webinterface-ingress"]], ".spec.components.grafana.exposeOptions.webInterface.ingress.annotations": [[3, "spec-components-grafana-exposeoptions-webinterface-ingress-annotations"]], ".spec.components.grafana.placement": [[3, "spec-components-grafana-placement"]], ".spec.components.grafana.placement.nodeAffinity": [[3, "spec-components-grafana-placement-nodeaffinity"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.components.grafana.placement.podAffinity": [[3, "spec-components-grafana-placement-podaffinity"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity": [[3, "spec-components-grafana-placement-podantiaffinity"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.tolerations[]": [[3, "spec-components-grafana-placement-tolerations"]], ".spec.components.grafana.resources": [[3, "spec-components-grafana-resources"]], ".spec.components.grafana.resources.claims[]": [[3, "spec-components-grafana-resources-claims"]], ".spec.components.grafana.resources.limits": [[3, "spec-components-grafana-resources-limits"]], ".spec.components.grafana.resources.requests": [[3, "spec-components-grafana-resources-requests"]], ".spec.components.prometheus": [[3, "spec-components-prometheus"]], ".spec.components.prometheus.exposeOptions": [[3, "spec-components-prometheus-exposeoptions"]], ".spec.components.prometheus.exposeOptions.webInterface": [[3, "spec-components-prometheus-exposeoptions-webinterface"]], ".spec.components.prometheus.exposeOptions.webInterface.ingress": [[3, "spec-components-prometheus-exposeoptions-webinterface-ingress"]], ".spec.components.prometheus.exposeOptions.webInterface.ingress.annotations": [[3, "spec-components-prometheus-exposeoptions-webinterface-ingress-annotations"]], ".spec.components.prometheus.placement": [[3, "spec-components-prometheus-placement"]], ".spec.components.prometheus.placement.nodeAffinity": [[3, "spec-components-prometheus-placement-nodeaffinity"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.components.prometheus.placement.podAffinity": [[3, "spec-components-prometheus-placement-podaffinity"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity": [[3, "spec-components-prometheus-placement-podantiaffinity"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.tolerations[]": [[3, "spec-components-prometheus-placement-tolerations"]], ".spec.components.prometheus.resources": [[3, "spec-components-prometheus-resources"]], ".spec.components.prometheus.resources.claims[]": [[3, "spec-components-prometheus-resources-claims"]], ".spec.components.prometheus.resources.limits": [[3, "spec-components-prometheus-resources-limits"]], ".spec.components.prometheus.resources.requests": [[3, "spec-components-prometheus-resources-requests"]], ".spec.components.prometheus.storage": [[3, "spec-components-prometheus-storage"]], ".spec.components.prometheus.storage.annotations": [[3, "spec-components-prometheus-storage-annotations"]], ".spec.components.prometheus.storage.labels": [[3, "spec-components-prometheus-storage-labels"]], ".spec.components.prometheus.storage.volumeClaimTemplate": [[3, "spec-components-prometheus-storage-volumeclaimtemplate"]], ".spec.components.prometheus.storage.volumeClaimTemplate.metadata": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-metadata"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-datasource"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-datasourceref"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources-limits"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources-requests"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.datacenter": [[2, "spec-datacenter"]], ".spec.datacenter.racks[]": [[2, "spec-datacenter-racks"]], ".spec.datacenter.racks[].agentResources": [[2, "spec-datacenter-racks-agentresources"]], ".spec.datacenter.racks[].agentResources.claims[]": [[2, "spec-datacenter-racks-agentresources-claims"]], ".spec.datacenter.racks[].agentResources.limits": [[2, "spec-datacenter-racks-agentresources-limits"]], ".spec.datacenter.racks[].agentResources.requests": [[2, "spec-datacenter-racks-agentresources-requests"]], ".spec.datacenter.racks[].agentVolumeMounts[]": [[2, "spec-datacenter-racks-agentvolumemounts"]], ".spec.datacenter.racks[].placement": [[2, "spec-datacenter-racks-placement"]], ".spec.datacenter.racks[].placement.nodeAffinity": [[2, "spec-datacenter-racks-placement-nodeaffinity"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.datacenter.racks[].placement.podAffinity": [[2, "spec-datacenter-racks-placement-podaffinity"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity": [[2, "spec-datacenter-racks-placement-podantiaffinity"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.tolerations[]": [[2, "spec-datacenter-racks-placement-tolerations"]], ".spec.datacenter.racks[].resources": [[2, "spec-datacenter-racks-resources"]], ".spec.datacenter.racks[].resources.claims[]": [[2, "spec-datacenter-racks-resources-claims"]], ".spec.datacenter.racks[].resources.limits": [[2, "spec-datacenter-racks-resources-limits"]], ".spec.datacenter.racks[].resources.requests": [[2, "spec-datacenter-racks-resources-requests"]], ".spec.datacenter.racks[].storage": [[2, "spec-datacenter-racks-storage"]], ".spec.datacenter.racks[].storage.metadata": [[2, "spec-datacenter-racks-storage-metadata"]], ".spec.datacenter.racks[].storage.metadata.annotations": [[2, "spec-datacenter-racks-storage-metadata-annotations"]], ".spec.datacenter.racks[].storage.metadata.labels": [[2, "spec-datacenter-racks-storage-metadata-labels"]], ".spec.datacenter.racks[].volumeMounts[]": [[2, "spec-datacenter-racks-volumemounts"]], ".spec.datacenter.racks[].volumes[]": [[2, "spec-datacenter-racks-volumes"]], ".spec.datacenter.racks[].volumes[].awsElasticBlockStore": [[2, "spec-datacenter-racks-volumes-awselasticblockstore"]], ".spec.datacenter.racks[].volumes[].azureDisk": [[2, "spec-datacenter-racks-volumes-azuredisk"]], ".spec.datacenter.racks[].volumes[].azureFile": [[2, "spec-datacenter-racks-volumes-azurefile"]], ".spec.datacenter.racks[].volumes[].cephfs": [[2, "spec-datacenter-racks-volumes-cephfs"]], ".spec.datacenter.racks[].volumes[].cephfs.secretRef": [[2, "spec-datacenter-racks-volumes-cephfs-secretref"]], ".spec.datacenter.racks[].volumes[].cinder": [[2, "spec-datacenter-racks-volumes-cinder"]], ".spec.datacenter.racks[].volumes[].cinder.secretRef": [[2, "spec-datacenter-racks-volumes-cinder-secretref"]], ".spec.datacenter.racks[].volumes[].configMap": [[2, "spec-datacenter-racks-volumes-configmap"]], ".spec.datacenter.racks[].volumes[].configMap.items[]": [[2, "spec-datacenter-racks-volumes-configmap-items"]], ".spec.datacenter.racks[].volumes[].csi": [[2, "spec-datacenter-racks-volumes-csi"]], ".spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef": [[2, "spec-datacenter-racks-volumes-csi-nodepublishsecretref"]], ".spec.datacenter.racks[].volumes[].csi.volumeAttributes": [[2, "spec-datacenter-racks-volumes-csi-volumeattributes"]], ".spec.datacenter.racks[].volumes[].downwardAPI": [[2, "spec-datacenter-racks-volumes-downwardapi"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[]": [[2, "spec-datacenter-racks-volumes-downwardapi-items"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef": [[2, "spec-datacenter-racks-volumes-downwardapi-items-fieldref"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef": [[2, "spec-datacenter-racks-volumes-downwardapi-items-resourcefieldref"]], ".spec.datacenter.racks[].volumes[].emptyDir": [[2, "spec-datacenter-racks-volumes-emptydir"]], ".spec.datacenter.racks[].volumes[].ephemeral": [[2, "spec-datacenter-racks-volumes-ephemeral"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-metadata"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-datasource"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-datasourceref"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources-limits"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources-requests"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.datacenter.racks[].volumes[].fc": [[2, "spec-datacenter-racks-volumes-fc"]], ".spec.datacenter.racks[].volumes[].flexVolume": [[2, "spec-datacenter-racks-volumes-flexvolume"]], ".spec.datacenter.racks[].volumes[].flexVolume.options": [[2, "spec-datacenter-racks-volumes-flexvolume-options"]], ".spec.datacenter.racks[].volumes[].flexVolume.secretRef": [[2, "spec-datacenter-racks-volumes-flexvolume-secretref"]], ".spec.datacenter.racks[].volumes[].flocker": [[2, "spec-datacenter-racks-volumes-flocker"]], ".spec.datacenter.racks[].volumes[].gcePersistentDisk": [[2, "spec-datacenter-racks-volumes-gcepersistentdisk"]], ".spec.datacenter.racks[].volumes[].gitRepo": [[2, "spec-datacenter-racks-volumes-gitrepo"]], ".spec.datacenter.racks[].volumes[].glusterfs": [[2, "spec-datacenter-racks-volumes-glusterfs"]], ".spec.datacenter.racks[].volumes[].hostPath": [[2, "spec-datacenter-racks-volumes-hostpath"]], ".spec.datacenter.racks[].volumes[].iscsi": [[2, "spec-datacenter-racks-volumes-iscsi"]], ".spec.datacenter.racks[].volumes[].iscsi.secretRef": [[2, "spec-datacenter-racks-volumes-iscsi-secretref"]], ".spec.datacenter.racks[].volumes[].nfs": [[2, "spec-datacenter-racks-volumes-nfs"]], ".spec.datacenter.racks[].volumes[].persistentVolumeClaim": [[2, "spec-datacenter-racks-volumes-persistentvolumeclaim"]], ".spec.datacenter.racks[].volumes[].photonPersistentDisk": [[2, "spec-datacenter-racks-volumes-photonpersistentdisk"]], ".spec.datacenter.racks[].volumes[].portworxVolume": [[2, "spec-datacenter-racks-volumes-portworxvolume"]], ".spec.datacenter.racks[].volumes[].projected": [[2, "spec-datacenter-racks-volumes-projected"]], ".spec.datacenter.racks[].volumes[].projected.sources[]": [[2, "spec-datacenter-racks-volumes-projected-sources"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector-matchexpressions"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector-matchlabels"]], ".spec.datacenter.racks[].volumes[].projected.sources[].configMap": [[2, "spec-datacenter-racks-volumes-projected-sources-configmap"]], ".spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-configmap-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items-fieldref"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items-resourcefieldref"]], ".spec.datacenter.racks[].volumes[].projected.sources[].secret": [[2, "spec-datacenter-racks-volumes-projected-sources-secret"]], ".spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-secret-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken": [[2, "spec-datacenter-racks-volumes-projected-sources-serviceaccounttoken"]], ".spec.datacenter.racks[].volumes[].quobyte": [[2, "spec-datacenter-racks-volumes-quobyte"]], ".spec.datacenter.racks[].volumes[].rbd": [[2, "spec-datacenter-racks-volumes-rbd"]], ".spec.datacenter.racks[].volumes[].rbd.secretRef": [[2, "spec-datacenter-racks-volumes-rbd-secretref"]], ".spec.datacenter.racks[].volumes[].scaleIO": [[2, "spec-datacenter-racks-volumes-scaleio"]], ".spec.datacenter.racks[].volumes[].scaleIO.secretRef": [[2, "spec-datacenter-racks-volumes-scaleio-secretref"]], ".spec.datacenter.racks[].volumes[].secret": [[2, "spec-datacenter-racks-volumes-secret"]], ".spec.datacenter.racks[].volumes[].secret.items[]": [[2, "spec-datacenter-racks-volumes-secret-items"]], ".spec.datacenter.racks[].volumes[].storageos": [[2, "spec-datacenter-racks-volumes-storageos"]], ".spec.datacenter.racks[].volumes[].storageos.secretRef": [[2, "spec-datacenter-racks-volumes-storageos-secretref"]], ".spec.datacenter.racks[].volumes[].vsphereVolume": [[2, "spec-datacenter-racks-volumes-vspherevolume"]], ".spec.endpointsSelector": [[3, "spec-endpointsselector"]], ".spec.endpointsSelector.matchExpressions[]": [[3, "spec-endpointsselector-matchexpressions"]], ".spec.endpointsSelector.matchLabels": [[3, "spec-endpointsselector-matchlabels"]], ".spec.exposeOptions": [[2, "spec-exposeoptions"]], ".spec.exposeOptions.broadcastOptions": [[2, "spec-exposeoptions-broadcastoptions"]], ".spec.exposeOptions.broadcastOptions.clients": [[2, "spec-exposeoptions-broadcastoptions-clients"]], ".spec.exposeOptions.broadcastOptions.clients.podIP": [[2, "spec-exposeoptions-broadcastoptions-clients-podip"]], ".spec.exposeOptions.broadcastOptions.nodes": [[2, "spec-exposeoptions-broadcastoptions-nodes"]], ".spec.exposeOptions.broadcastOptions.nodes.podIP": [[2, "spec-exposeoptions-broadcastoptions-nodes-podip"]], ".spec.exposeOptions.cql": [[2, "spec-exposeoptions-cql"]], ".spec.exposeOptions.cql.ingress": [[2, "spec-exposeoptions-cql-ingress"]], ".spec.exposeOptions.cql.ingress.annotations": [[2, "spec-exposeoptions-cql-ingress-annotations"]], ".spec.exposeOptions.cql.ingress.labels": [[2, "spec-exposeoptions-cql-ingress-labels"]], ".spec.exposeOptions.nodeService": [[2, "spec-exposeoptions-nodeservice"]], ".spec.exposeOptions.nodeService.annotations": [[2, "spec-exposeoptions-nodeservice-annotations"]], ".spec.exposeOptions.nodeService.labels": [[2, "spec-exposeoptions-nodeservice-labels"]], ".spec.genericUpgrade": [[2, "spec-genericupgrade"]], ".spec.imagePullSecrets[]": [[2, "spec-imagepullsecrets"]], ".spec.localDiskSetup": [[1, "spec-localdisksetup"]], ".spec.localDiskSetup.filesystems[]": [[1, "spec-localdisksetup-filesystems"]], ".spec.localDiskSetup.loopDevices[]": [[1, "spec-localdisksetup-loopdevices"]], ".spec.localDiskSetup.mounts[]": [[1, "spec-localdisksetup-mounts"]], ".spec.localDiskSetup.raids[]": [[1, "spec-localdisksetup-raids"]], ".spec.localDiskSetup.raids[].RAID0": [[1, "spec-localdisksetup-raids-raid0"]], ".spec.localDiskSetup.raids[].RAID0.devices": [[1, "spec-localdisksetup-raids-raid0-devices"]], ".spec.network": [[2, "spec-network"]], ".spec.placement": [[1, "spec-placement"]], ".spec.placement.affinity": [[1, "spec-placement-affinity"]], ".spec.placement.affinity.nodeAffinity": [[1, "spec-placement-affinity-nodeaffinity"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.placement.affinity.podAffinity": [[1, "spec-placement-affinity-podaffinity"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity": [[1, "spec-placement-affinity-podantiaffinity"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.placement.nodeSelector": [[1, "spec-placement-nodeselector"]], ".spec.placement.tolerations[]": [[1, "spec-placement-tolerations"]], ".spec.podMetadata": [[2, "spec-podmetadata"]], ".spec.podMetadata.annotations": [[2, "spec-podmetadata-annotations"]], ".spec.podMetadata.labels": [[2, "spec-podmetadata-labels"]], ".spec.readinessGates[]": [[2, "spec-readinessgates"]], ".spec.repairs[]": [[2, "spec-repairs"]], ".status": [[1, "status"], [2, "status"], [3, "status"], [4, "status"]], ".status.backups[]": [[2, "status-backups"]], ".status.conditions[]": [[1, "status-conditions"], [2, "status-conditions"], [3, "status-conditions"]], ".status.nodeStatuses[]": [[1, "status-nodestatuses"]], ".status.racks": [[2, "status-racks"]], ".status.repairs[]": [[2, "status-repairs"]], ".status.upgrade": [[2, "status-upgrade"]], "API Groups and Kinds": [[5, "api-groups-and-kinds"]], "API Reference": [[5, null]], "AWS CLI": [[6, "aws-cli"]], "Accessing Grafana": [[19, "accessing-grafana"]], "Accessing the Database": [[13, "accessing-the-database"]], "Accessing the database": [[11, "accessing-the-database"], [14, "accessing-the-database"]], "Add Upstream Remote": [[10, "add-upstream-remote"]], "Architecture": [[17, "architecture"]], "Authentication and Authorization": [[7, "authentication-and-authorization"]], "Automated promotions": [[31, "automated-promotions"]], "Automatic cleanup and replacement in case when k8s node is lost": [[24, null]], "Backport policy": [[31, "backport-policy"]], "Benchmark with cassandra-stress": [[13, "benchmark-with-cassandra-stress"]], "Broadcast Options": [[12, "broadcast-options"]], "Build multiple Amazon EKS clusters with inter-Kubernetes networking": [[20, null]], "Build multiple GKE clusters with inter-Kubernetes networking": [[21, null]], "Building the project": [[10, "building-the-project"]], "CI/CD": [[31, "ci-cd"]], "Clean Up": [[13, "clean-up"], [17, "clean-up"]], "Cleanup": [[15, "cleanup"]], "Clone Your Fork": [[10, "clone-your-fork"]], "Cluster registration": [[17, "cluster-registration"]], "ClusterIP Type": [[12, "clusterip-type"]], "Collecting every resource in the cluster": [[34, "collecting-every-resource-in-the-cluster"]], "Commit History": [[10, "commit-history"]], "Commit messages": [[10, "commit-messages"]], "Configure Scylla": [[13, "configure-scylla"]], "Configure Scylla Manager Agent": [[13, "configure-scylla-manager-agent"]], "Configure container kernel parameters": [[13, "configure-container-kernel-parameters"]], "Configure environment variables": [[11, "configure-environment-variables"], [14, "configure-environment-variables"]], "Configure the firewall rules": [[21, "configure-the-firewall-rules"]], "Configure the network": [[20, "configure-the-network"]], "Connecting through Ingress using a resolvable domain": [[19, "connecting-through-ingress-using-a-resolvable-domain"]], "Connecting through Ingress using an unresolvable domain": [[19, "connecting-through-ingress-using-an-unresolvable-domain"]], "Connection": [[19, "connection"]], "Contributing to Scylla Operator": [[10, null]], "Create EKS clusters": [[20, "create-eks-clusters"]], "Create GKE clusters": [[21, "create-gke-clusters"]], "Create VPC network subnets": [[21, "create-vpc-network-subnets"]], "Create VPC peering": [[20, "create-vpc-peering"]], "Create a Branch": [[10, "create-a-branch"]], "Create a Fork": [[10, "create-a-fork"]], "Create and Initialize a Scylla Cluster": [[13, "create-and-initialize-a-scylla-cluster"]], "Create and configure a VPC network": [[21, "create-and-configure-a-vpc-network"]], "Create the VPC network": [[21, "create-the-vpc-network"]], "Create the first EKS cluster": [[20, "create-the-first-eks-cluster"]], "Create the first GKE cluster": [[21, "create-the-first-gke-cluster"]], "Create the second EKS cluster": [[20, "create-the-second-eks-cluster"]], "Create the second GKE cluster": [[21, "create-the-second-gke-cluster"]], "Creating a GKE cluster": [[14, "creating-a-gke-cluster"]], "Creating an EKS cluster": [[11, "creating-an-eks-cluster"]], "Credentials": [[6, "credentials"]], "Custom CNI": [[37, "custom-cni"]], "Customization": [[15, "customization"], [15, "id1"], [15, "id3"]], "Deleting a GKE cluster": [[14, "deleting-a-gke-cluster"]], "Deleting an EKS cluster": [[11, "deleting-an-eks-cluster"]], "Deploy Cert Manager": [[13, "deploy-cert-manager"], [15, "deploy-cert-manager"]], "Deploy HAProxy Ingress": [[19, "deploy-haproxy-ingress"]], "Deploy Prometheus Operator": [[19, "deploy-prometheus-operator"]], "Deploy Scylla Manager": [[17, "deploy-scylla-manager"]], "Deploy Scylla Operator": [[13, "deploy-scylla-operator"]], "Deploy Scylla cluster": [[14, "deploy-scylla-cluster"]], "Deploy ScyllaDB Operator": [[20, "deploy-scylladb-operator"], [21, "deploy-scylladb-operator"]], "Deploy ScyllaDBMonitoring": [[19, "deploy-scylladbmonitoring"]], "Deploy a multi-datacenter ScyllaDB Cluster": [[23, "deploy-a-multi-datacenter-scylladb-cluster"]], "Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters": [[23, null]], "Deploy managed monitoring": [[19, "deploy-managed-monitoring"]], "Deploy the first datacenter": [[23, "deploy-the-first-datacenter"]], "Deploy the second datacenter": [[23, "deploy-the-second-datacenter"]], "Deploying Alternator": [[13, "deploying-alternator"]], "Deploying Local Volume Provisioner": [[11, "deploying-local-volume-provisioner"], [14, "deploying-local-volume-provisioner"]], "Deploying Scylla Manager on a Kubernetes Cluster": [[17, null]], "Deploying Scylla on EKS": [[11, null]], "Deploying Scylla on GKE": [[14, null]], "Deploying Scylla on a Kubernetes Cluster": [[13, null]], "Deploying Scylla stack using Helm Charts": [[15, null]], "Deploying ScyllaDB": [[11, "deploying-scylladb"], [14, "deploying-scylladb"]], "Deploying ScyllaDB Operator": [[11, "deploying-scylladb-operator"], [14, "deploying-scylladb-operator"]], "Deploying multi-datacenter ScyllaDB clusters in Kubernetes": [[22, null]], "Deployment Examples": [[12, "deployment-examples"]], "Description": [[1, "description"], [1, "id1"], [1, "id2"], [1, "id4"], [1, "id6"], [1, "id8"], [1, "id10"], [1, "id12"], [1, "id14"], [1, "id16"], [1, "id18"], [1, "id20"], [1, "id22"], [1, "id24"], [1, "id26"], [1, "id28"], [1, "id30"], [1, "id32"], [1, "id34"], [1, "id36"], [1, "id38"], [1, "id40"], [1, "id42"], [1, "id44"], [1, "id46"], [1, "id48"], [1, "id50"], [1, "id52"], [1, "id54"], [1, "id56"], [1, "id58"], [1, "id60"], [1, "id62"], [1, "id64"], [1, "id66"], [1, "id68"], [1, "id70"], [1, "id72"], [1, "id74"], [1, "id76"], [1, "id78"], [1, "id80"], [1, "id82"], [1, "id84"], [1, "id86"], [1, "id88"], [1, "id90"], [1, "id92"], [1, "id94"], [1, "id96"], [1, "id98"], [1, "id100"], [1, "id102"], [1, "id104"], [1, "id106"], [1, "id108"], [1, "id110"], [1, "id112"], [2, "description"], [2, "id1"], [2, "id2"], [2, "id4"], [2, "id6"], [2, "id8"], [2, "id10"], [2, "id12"], [2, "id14"], [2, "id16"], [2, "id18"], [2, "id20"], [2, "id22"], [2, "id24"], [2, "id26"], [2, "id28"], [2, "id30"], [2, "id32"], [2, "id34"], [2, "id36"], [2, "id38"], [2, "id40"], [2, "id42"], [2, "id44"], [2, "id46"], [2, "id48"], [2, "id50"], [2, "id52"], [2, "id54"], [2, "id56"], [2, "id58"], [2, "id60"], [2, "id62"], [2, "id64"], [2, "id66"], [2, "id68"], [2, "id70"], [2, "id72"], [2, "id74"], [2, "id76"], [2, "id78"], [2, "id80"], [2, "id82"], [2, "id84"], [2, "id86"], [2, "id88"], [2, "id90"], [2, "id92"], [2, "id94"], [2, "id96"], [2, "id98"], [2, "id100"], [2, "id102"], [2, "id104"], [2, "id106"], [2, "id108"], [2, "id110"], [2, "id112"], [2, "id114"], [2, "id116"], [2, "id118"], [2, "id120"], [2, "id122"], [2, "id124"], [2, "id126"], [2, "id128"], [2, "id130"], [2, "id132"], [2, "id134"], [2, "id136"], [2, "id138"], [2, "id140"], [2, "id142"], [2, "id144"], [2, "id146"], [2, "id148"], [2, "id150"], [2, "id152"], [2, "id154"], [2, "id156"], [2, "id158"], [2, "id160"], [2, "id162"], [2, "id164"], [2, "id166"], [2, "id168"], [2, "id170"], [2, "id172"], [2, "id174"], [2, "id176"], [2, "id178"], [2, "id180"], [2, "id182"], [2, "id184"], [2, "id186"], [2, "id188"], [2, "id190"], [2, "id192"], [2, "id194"], [2, "id196"], [2, "id198"], [2, "id200"], [2, "id202"], [2, "id204"], [2, "id206"], [2, "id208"], [2, "id210"], [2, "id212"], [2, "id214"], [2, "id216"], [2, "id218"], [2, "id220"], [2, "id222"], [2, "id224"], [2, "id226"], [2, "id228"], [2, "id230"], [2, "id232"], [2, "id234"], [2, "id236"], [2, "id238"], [2, "id240"], [2, "id242"], [2, "id244"], [2, "id246"], [2, "id248"], [2, "id250"], [2, "id252"], [2, "id254"], [2, "id256"], [2, "id258"], [2, "id260"], [2, "id262"], [2, "id264"], [2, "id266"], [2, "id268"], [2, "id270"], [2, "id272"], [2, "id274"], [2, "id276"], [2, "id278"], [2, "id280"], [2, "id282"], [2, "id284"], [2, "id286"], [2, "id288"], [2, "id290"], [2, "id292"], [2, "id294"], [2, "id296"], [2, "id298"], [2, "id300"], [2, "id302"], [2, "id304"], [2, "id306"], [2, "id308"], [2, "id310"], [2, "id312"], [2, "id314"], [2, "id316"], [2, "id318"], [2, "id320"], [2, "id322"], [2, "id324"], [3, "description"], [3, "id1"], [3, "id2"], [3, "id4"], [3, "id6"], [3, "id8"], [3, "id10"], [3, "id12"], [3, "id14"], [3, "id16"], [3, "id18"], [3, "id20"], [3, "id22"], [3, "id24"], [3, "id26"], [3, "id28"], [3, "id30"], [3, "id32"], [3, "id34"], [3, "id36"], [3, "id38"], [3, "id40"], [3, "id42"], [3, "id44"], [3, "id46"], [3, "id48"], [3, "id50"], [3, "id52"], [3, "id54"], [3, "id56"], [3, "id58"], [3, "id60"], [3, "id62"], [3, "id64"], [3, "id66"], [3, "id68"], [3, "id70"], [3, "id72"], [3, "id74"], [3, "id76"], [3, "id78"], [3, "id80"], [3, "id82"], [3, "id84"], [3, "id86"], [3, "id88"], [3, "id90"], [3, "id92"], [3, "id94"], [3, "id96"], [3, "id98"], [3, "id100"], [3, "id102"], [3, "id104"], [3, "id106"], [3, "id108"], [3, "id110"], [3, "id112"], [3, "id114"], [3, "id116"], [3, "id118"], [3, "id120"], [3, "id122"], [3, "id124"], [3, "id126"], [3, "id128"], [3, "id130"], [3, "id132"], [3, "id134"], [3, "id136"], [3, "id138"], [3, "id140"], [3, "id142"], [3, "id144"], [3, "id146"], [3, "id148"], [3, "id150"], [3, "id152"], [3, "id154"], [3, "id156"], [3, "id158"], [3, "id160"], [3, "id162"], [3, "id164"], [3, "id166"], [3, "id168"], [3, "id170"], [3, "id172"], [3, "id174"], [3, "id176"], [3, "id178"], [3, "id180"], [3, "id182"], [3, "id184"], [3, "id186"], [3, "id188"], [3, "id190"], [3, "id192"], [3, "id194"], [3, "id196"], [3, "id198"], [3, "id200"], [3, "id202"], [3, "id204"], [3, "id206"], [3, "id208"], [3, "id210"], [3, "id212"], [3, "id214"], [3, "id216"], [3, "id218"], [3, "id220"], [3, "id222"], [3, "id224"], [3, "id226"], [3, "id228"], [3, "id230"], [3, "id232"], [3, "id234"], [3, "id236"], [3, "id238"], [3, "id240"], [3, "id242"], [3, "id244"], [3, "id246"], [3, "id248"], [3, "id250"], [3, "id252"], [4, "description"], [4, "id1"], [4, "id2"], [4, "id4"]], "Development": [[10, "development"]], "Discovering ScyllaDB Nodes": [[8, null]], "Docker": [[34, "docker"]], "Download Scylla Operator": [[13, "download-scylla-operator"]], "EKS": [[37, "eks"]], "EKS Setup": [[11, "eks-setup"]], "Embedded cqlsh (aka localhost)": [[7, "embedded-cqlsh-aka-localhost"]], "Expose Options": [[12, "expose-options"]], "Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary": [[8, "exposing-discovery-endpoint-behind-kubernetes-cluster-boundary"]], "Exposing ScyllaCluster": [[12, null]], "External seeds": [[23, "external-seeds"]], "GKE": [[37, "gke"]], "Gather data about your cluster": [[35, "gather-data-about-your-cluster"]], "Gathering data with must-gather": [[34, null]], "Generally available": [[31, "generally-available"]], "Get support": [[35, "get-support"]], "Google Kubernetes Engine Setup": [[14, "google-kubernetes-engine-setup"]], "Headless Type": [[12, "headless-type"]], "Helm Chart repository": [[15, "helm-chart-repository"]], "In-cluster node-to-node, VPC clients-to-nodes": [[12, "in-cluster-node-to-node-vpc-clients-to-nodes"]], "In-cluster only": [[12, "in-cluster-only"]], "Ingress ExternalIP": [[19, "ingress-externalip"]], "Ingress NodePort": [[19, "ingress-nodeport"]], "Initial Setup": [[10, "initial-setup"]], "Installation": [[15, "installation"], [15, "id2"], [15, "id4"]], "Installing script third party dependencies": [[11, "installing-script-third-party-dependencies"]], "Internet": [[12, "internet"]], "Known issues": [[33, null]], "Kubernetes tuning": [[30, "kubernetes-tuning"]], "Limiting must-gather to a particular namespace": [[34, "limiting-must-gather-to-a-particular-namespace"]], "LoadBalancer Type": [[12, "loadbalancer-type"]], "Maintenance mode": [[26, null]], "Monitoring": [[15, "monitoring"], [19, null]], "Multi Datacenter ScyllaDB Cluster": [[23, "multi-datacenter-scylladb-cluster"]], "Multi VPC": [[12, "multi-vpc"]], "Networking": [[23, "networking"]], "Node Service Template": [[12, "node-service-template"]], "Node operations using Scylla Operator": [[25, null]], "Node tuning": [[30, "node-tuning"]], "NodeConfig (scylla.scylladb.com/v1alpha1)": [[1, null]], "Performance tuning": [[30, null]], "PodIP Type": [[12, "podip-type"]], "Podman": [[34, "podman"]], "Preface": [[8, "preface"]], "Prepare nodes for running ScyllaDB": [[20, "prepare-nodes-for-running-scylladb"], [21, "prepare-nodes-for-running-scylladb"]], "Prerequisites": [[10, "prerequisites"], [11, "prerequisites"], [13, "prerequisites"], [14, "prerequisites"], [15, "prerequisites"], [17, "prerequisites"], [19, "prerequisites"], [20, "prerequisites"], [21, "prerequisites"], [23, "prerequisites"], [34, "prerequisites"]], "Private clusters": [[37, "private-clusters"]], "Procedure": [[18, "procedure"]], "Releases": [[31, null]], "Remote cqlsh": [[7, "remote-cqlsh"]], "Replacing a Scylla node": [[27, null]], "Replacing a dead node": [[27, "replacing-a-dead-node"]], "Requirements": [[19, "requirements"]], "Restore from backup": [[28, null]], "Restore schema": [[28, "restore-schema"]], "Restore tables": [[28, "restore-tables"]], "Results": [[15, "results"]], "Retrieve PodIPs of ScyllaDB nodes for use as external seeds": [[23, "retrieve-podips-of-scylladb-nodes-for-use-as-external-seeds"]], "Running locally": [[13, "running-locally"]], "Running must-gather": [[34, "running-must-gather"]], "Scale a ScyllaCluster": [[13, "scale-a-scyllacluster"]], "Schedule": [[31, "schedule"]], "Scylla": [[15, "scylla"]], "Scylla Helm Chart": [[15, "scylla-helm-chart"]], "Scylla Manager": [[15, "scylla-manager"], [23, "scylla-manager"]], "Scylla Manager Agent auth token": [[13, "scylla-manager-agent-auth-token"]], "Scylla Manager Controller": [[15, "scylla-manager-controller"]], "Scylla Manager Helm Chart": [[15, "scylla-manager-helm-chart"]], "Scylla Manager does not boot up on Minikube": [[33, "scylla-manager-does-not-boot-up-on-minikube"]], "Scylla Operator Chart": [[15, "scylla-operator-chart"]], "Scylla Operator Documentation": [[16, null]], "ScyllaCluster (scylla.scylladb.com/v1)": [[2, null]], "ScyllaDB Discovery Endpoint": [[8, "scylladb-discovery-endpoint"]], "ScyllaDBMonitoring": [[23, "scylladbmonitoring"]], "ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)": [[3, null]], "ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)": [[4, null]], "ServiceClusterIP Type": [[12, "serviceclusterip-type"]], "ServiceLoadBalancerIngress Type": [[12, "serviceloadbalanceringress-type"]], "Set up monitoring": [[13, "set-up-monitoring"]], "Setting Yourself as cluster-admin": [[14, "setting-yourself-as-cluster-admin"]], "Setting up nodes for ScyllaDB": [[11, "setting-up-nodes-for-scylladb"], [14, "setting-up-nodes-for-scylladb"]], "Specification": [[1, "specification"], [2, "specification"], [3, "specification"], [4, "specification"]], "Submitting": [[10, "submitting"]], "Submitting a Pull Request": [[10, "submitting-a-pull-request"]], "Support": [[32, null]], "Support matrix": [[31, "support-matrix"]], "Support overview": [[35, null]], "Supported Kubernetes platforms": [[31, "supported-kubernetes-platforms"]], "Supported releases": [[31, "supported-releases"]], "TL;DR": [[15, "tl-dr"]], "TL;DR;": [[11, "tl-dr"], [14, "tl-dr"]], "TRUNCATE queries does not work on Minikube": [[33, "truncate-queries-does-not-work-on-minikube"]], "Task scheduling": [[17, "task-scheduling"]], "Troubleshooting": [[13, "troubleshooting"], [17, "troubleshooting"], [36, null]], "Troubleshooting installation issues": [[37, null]], "Troubleshooting issues": [[35, "troubleshooting-issues"]], "Type": [[1, "type"], [1, "id3"], [1, "id5"], [1, "id7"], [1, "id9"], [1, "id11"], [1, "id13"], [1, "id15"], [1, "id17"], [1, "id19"], [1, "id21"], [1, "id23"], [1, "id25"], [1, "id27"], [1, "id29"], [1, "id31"], [1, "id33"], [1, "id35"], [1, "id37"], [1, "id39"], [1, "id41"], [1, "id43"], [1, "id45"], [1, "id47"], [1, "id49"], [1, "id51"], [1, "id53"], [1, "id55"], [1, "id57"], [1, "id59"], [1, "id61"], [1, "id63"], [1, "id65"], [1, "id67"], [1, "id69"], [1, "id71"], [1, "id73"], [1, "id75"], [1, "id77"], [1, "id79"], [1, "id81"], [1, "id83"], [1, "id85"], [1, "id87"], [1, "id89"], [1, "id91"], [1, "id93"], [1, "id95"], [1, "id97"], [1, "id99"], [1, "id101"], [1, "id103"], [1, "id105"], [1, "id107"], [1, "id109"], [1, "id111"], [1, "id113"], [2, "type"], [2, "id3"], [2, "id5"], [2, "id7"], [2, "id9"], [2, "id11"], [2, "id13"], [2, "id15"], [2, "id17"], [2, "id19"], [2, "id21"], [2, "id23"], [2, "id25"], [2, "id27"], [2, "id29"], [2, "id31"], [2, "id33"], [2, "id35"], [2, "id37"], [2, "id39"], [2, "id41"], [2, "id43"], [2, "id45"], [2, "id47"], [2, "id49"], [2, "id51"], [2, "id53"], [2, "id55"], [2, "id57"], [2, "id59"], [2, "id61"], [2, "id63"], [2, "id65"], [2, "id67"], [2, "id69"], [2, "id71"], [2, "id73"], [2, "id75"], [2, "id77"], [2, "id79"], [2, "id81"], [2, "id83"], [2, "id85"], [2, "id87"], [2, "id89"], [2, "id91"], [2, "id93"], [2, "id95"], [2, "id97"], [2, "id99"], [2, "id101"], [2, "id103"], [2, "id105"], [2, "id107"], [2, "id109"], [2, "id111"], [2, "id113"], [2, "id115"], [2, "id117"], [2, "id119"], [2, "id121"], [2, "id123"], [2, "id125"], [2, "id127"], [2, "id129"], [2, "id131"], [2, "id133"], [2, "id135"], [2, "id137"], [2, "id139"], [2, "id141"], [2, "id143"], [2, "id145"], [2, "id147"], [2, "id149"], [2, "id151"], [2, "id153"], [2, "id155"], [2, "id157"], [2, "id159"], [2, "id161"], [2, "id163"], [2, "id165"], [2, "id167"], [2, "id169"], [2, "id171"], [2, "id173"], [2, "id175"], [2, "id177"], [2, "id179"], [2, "id181"], [2, "id183"], [2, "id185"], [2, "id187"], [2, "id189"], [2, "id191"], [2, "id193"], [2, "id195"], [2, "id197"], [2, "id199"], [2, "id201"], [2, "id203"], [2, "id205"], [2, "id207"], [2, "id209"], [2, "id211"], [2, "id213"], [2, "id215"], [2, "id217"], [2, "id219"], [2, "id221"], [2, "id223"], [2, "id225"], [2, "id227"], [2, "id229"], [2, "id231"], [2, "id233"], [2, "id235"], [2, "id237"], [2, "id239"], [2, "id241"], [2, "id243"], [2, "id245"], [2, "id247"], [2, "id249"], [2, "id251"], [2, "id253"], [2, "id255"], [2, "id257"], [2, "id259"], [2, "id261"], [2, "id263"], [2, "id265"], [2, "id267"], [2, "id269"], [2, "id271"], [2, "id273"], [2, "id275"], [2, "id277"], [2, "id279"], [2, "id281"], [2, "id283"], [2, "id285"], [2, "id287"], [2, "id289"], [2, "id291"], [2, "id293"], [2, "id295"], [2, "id297"], [2, "id299"], [2, "id301"], [2, "id303"], [2, "id305"], [2, "id307"], [2, "id309"], [2, "id311"], [2, "id313"], [2, "id315"], [2, "id317"], [2, "id319"], [2, "id321"], [2, "id323"], [2, "id325"], [3, "type"], [3, "id3"], [3, "id5"], [3, "id7"], [3, "id9"], [3, "id11"], [3, "id13"], [3, "id15"], [3, "id17"], [3, "id19"], [3, "id21"], [3, "id23"], [3, "id25"], [3, "id27"], [3, "id29"], [3, "id31"], [3, "id33"], [3, "id35"], [3, "id37"], [3, "id39"], [3, "id41"], [3, "id43"], [3, "id45"], [3, "id47"], [3, "id49"], [3, "id51"], [3, "id53"], [3, "id55"], [3, "id57"], [3, "id59"], [3, "id61"], [3, "id63"], [3, "id65"], [3, "id67"], [3, "id69"], [3, "id71"], [3, "id73"], [3, "id75"], [3, "id77"], [3, "id79"], [3, "id81"], [3, "id83"], [3, "id85"], [3, "id87"], [3, "id89"], [3, "id91"], [3, "id93"], [3, "id95"], [3, "id97"], [3, "id99"], [3, "id101"], [3, "id103"], [3, "id105"], [3, "id107"], [3, "id109"], [3, "id111"], [3, "id113"], [3, "id115"], [3, "id117"], [3, "id119"], [3, "id121"], [3, "id123"], [3, "id125"], [3, "id127"], [3, "id129"], [3, "id131"], [3, "id133"], [3, "id135"], [3, "id137"], [3, "id139"], [3, "id141"], [3, "id143"], [3, "id145"], [3, "id147"], [3, "id149"], [3, "id151"], [3, "id153"], [3, "id155"], [3, "id157"], [3, "id159"], [3, "id161"], [3, "id163"], [3, "id165"], [3, "id167"], [3, "id169"], [3, "id171"], [3, "id173"], [3, "id175"], [3, "id177"], [3, "id179"], [3, "id181"], [3, "id183"], [3, "id185"], [3, "id187"], [3, "id189"], [3, "id191"], [3, "id193"], [3, "id195"], [3, "id197"], [3, "id199"], [3, "id201"], [3, "id203"], [3, "id205"], [3, "id207"], [3, "id209"], [3, "id211"], [3, "id213"], [3, "id215"], [3, "id217"], [3, "id219"], [3, "id221"], [3, "id223"], [3, "id225"], [3, "id227"], [3, "id229"], [3, "id231"], [3, "id233"], [3, "id235"], [3, "id237"], [3, "id239"], [3, "id241"], [3, "id243"], [3, "id245"], [3, "id247"], [3, "id249"], [3, "id251"], [3, "id253"], [4, "type"], [4, "id3"], [4, "id5"]], "Update route tables": [[20, "update-route-tables"]], "Update security groups": [[20, "update-security-groups"]], "Updating Your Fork": [[10, "updating-your-fork"]], "Upgrade of Scylla Operator": [[38, null]], "Upgrade via Helm": [[38, "upgrade-via-helm"]], "Upgrade via kubectl": [[38, "upgrade-via-kubectl"]], "Upgrading version of Scylla": [[29, null]], "Using Alternator (DynamoDB)": [[6, null]], "Using CQL": [[7, null]], "Using ScyllaDB APIs": [[9, null]], "Using context": [[23, "using-context"]], "Variants": [[19, "variants"]], "Version migrations": [[18, null]], "Wait for Grafana to roll out": [[19, "wait-for-grafana-to-roll-out"]], "Wait for HAProxy Ingress to roll out": [[19, "wait-for-haproxy-ingress-to-roll-out"]], "Wait for Prometheus Operator to roll out": [[19, "wait-for-prometheus-operator-to-roll-out"]], "Wait for Prometheus to roll out": [[19, "wait-for-prometheus-to-roll-out"]], "Wait for ScyllaDBMonitoring to roll out": [[19, "wait-for-scylladbmonitoring-to-roll-out"]], "Walkthrough": [[11, "walkthrough"], [14, "walkthrough"]], "Webhooks": [[37, "webhooks"]], "image": [[15, "image"]], "resources": [[15, "resources"]], "scylla.scylladb.com": [[0, null]], "v0.3.0 -> v1.0.0": [[38, "v0-3-0-v1-0-0"]], "v0.3.0 -> v1.0.0 migration": [[18, "v0-3-0-v1-0-0-migration"]], "v1.0.0 -> v1.1.0": [[38, "v1-0-0-v1-1-0"]], "v1.1.0 -> v1.2.0": [[38, "v1-1-0-v1-2-0"]], "v1.2.0 -> v1.3.0": [[38, "v1-2-0-v1-3-0"]], "webhook": [[15, "webhook"]]}, "docnames": ["api-reference/groups/scylla.scylladb.com", "api-reference/groups/scylla.scylladb.com/nodeconfigs", "api-reference/groups/scylla.scylladb.com/scyllaclusters", "api-reference/groups/scylla.scylladb.com/scylladbmonitorings", "api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs", "api-reference/index", "clients/alternator", "clients/cql", "clients/discovery", "clients/index", "contributing", "eks", "exposing", "generic", "gke", "helm", "index", "manager", "migration", "monitoring", "multidc/eks", "multidc/gke", "multidc/index", "multidc/multidc", "nodeoperations/automatic-cleanup", "nodeoperations/index", "nodeoperations/maintenance-mode", "nodeoperations/replace-node", "nodeoperations/restore", "nodeoperations/scylla-upgrade", "performance", "releases", "support/index", "support/known-issues", "support/must-gather", "support/overview", "support/troubleshooting/index", "support/troubleshooting/installation", "upgrade"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2}, "filenames": ["api-reference/groups/scylla.scylladb.com.rst", "api-reference/groups/scylla.scylladb.com/nodeconfigs.rst", "api-reference/groups/scylla.scylladb.com/scyllaclusters.rst", "api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst", "api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst", "api-reference/index.rst", "clients/alternator.md", "clients/cql.md", "clients/discovery.md", "clients/index.rst", "contributing.md", "eks.md", "exposing.md", "generic.md", "gke.md", "helm.md", "index.rst", "manager.md", "migration.md", "monitoring.md", "multidc/eks.md", "multidc/gke.md", "multidc/index.rst", "multidc/multidc.md", "nodeoperations/automatic-cleanup.md", "nodeoperations/index.rst", "nodeoperations/maintenance-mode.md", "nodeoperations/replace-node.md", "nodeoperations/restore.md", "nodeoperations/scylla-upgrade.md", "performance.md", "releases.md", "support/index.rst", "support/known-issues.md", "support/must-gather.md", "support/overview.md", "support/troubleshooting/index.rst", "support/troubleshooting/installation.md", "upgrade.md"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [1, 2, 3, 4, 6, 8, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 30, 34, 37, 38], "0": [1, 2, 3, 7, 8, 10, 12, 13, 14, 15, 17, 19, 20, 21, 23, 27, 28, 29, 30, 31, 34], "00": [6, 17], "000": 13, "0000": [2, 17], "00000000": 17, "000000000000": 17, "008_": 33, "01": [6, 31], "01t16": 6, "02": 28, "03": [6, 27, 31], "04": [28, 31], "0406": 28, "05": [28, 31], "06": [17, 31], "0644": 2, "07": 31, "0777": 2, "08": 31, "08077dcc008fbbab6": 20, "09": [17, 28, 31], "0bb60902": 21, "0dd20cdf": 28, "0dfd": 23, "1": [1, 2, 3, 7, 8, 10, 11, 12, 13, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31], "10": [2, 8, 13, 15, 17, 18, 20, 21, 23, 27, 31], "100": [1, 2, 3, 17, 28], "1000": 21, "10000000": 13, "10001": [8, 15, 18, 27], "100m": [15, 23], "102": 8, "104m": 18, "105": 15, "106m": 18, "107": [17, 23], "107m": 18, "108m": 18, "109": 17, "109m": 18, "10d": 8, "11": [23, 28, 31], "110": 27, "110m": 18, "11ee": [6, 28], "12": [1, 2, 3, 10, 17, 28, 31], "121c": 23, "1234": 10, "123913": 6, "125": 27, "127": [7, 17], "128mi": 15, "12a3678d": 18, "13": [10, 17, 31], "130": 15, "14": [17, 31], "149": 15, "15": [17, 28, 31], "150k": 28, "16": [15, 17, 20, 21, 23, 31], "16g": 30, "17": [21, 31], "172": [20, 21, 23, 27], "18": [21, 23], "1800g": 23, "189": 27, "19": 23, "19042": 8, "191": 27, "19142": 8, "193": 17, "195": 23, "197": 17, "1a": [11, 13, 17, 18, 20, 23, 27, 28, 29, 30], "1b": [11, 15, 20, 23], "1c": [11, 20, 23], "1d": 17, "1ffa7a82": 27, "1fr9ydlu0ve7m": 20, "1g": 30, "1gi": [15, 19, 28], "1h": 34, "1m": 17, "2": [2, 7, 12, 13, 14, 15, 17, 18, 20, 21, 23, 26, 27, 29, 31], "20": [14, 17, 21, 31], "200": 19, "200000000": 17, "2020": [17, 29], "20200816": 17, "2021": 31, "2022": 31, "2023": [12, 31], "20231205": 7, "2024": [6, 28, 31], "207": 15, "209": 23, "2097152": [13, 23], "20g": 13, "20mi": 15, "21": 31, "214": 28, "22": [18, 31], "226716": 14, "23": [17, 18], "231": [15, 27], "232323": 2, "236a0e10575b": 17, "237": 23, "238z": 17, "23t11": 17, "24": [2, 23, 28], "246": 18, "25": [17, 18, 23, 31], "250000000": 17, "250m": 23, "25126532803b": 17, "256": [23, 27], "26": 17, "27": [17, 23, 31], "275aae7f": 17, "28": [17, 31], "28169610": 17, "28m": 17, "29": 17, "290": 23, "2a": [20, 23], "2aa90ab29a99": 23, "2b": [20, 23], "2b9dbe8c": 17, "2c": [20, 23], "2g": 13, "2xlarg": 11, "3": [2, 7, 10, 11, 13, 15, 17, 23, 28, 29, 30, 31], "30": 13, "300": 13, "30000": 13, "30000000000": 17, "300000000000": 17, "30m": [18, 38], "30mi": 15, "31": 31, "32": 14, "3260": 2, "327f": 23, "32mi": 15, "33": 17, "336": 23, "35": 6, "35d0cb19": 27, "35ef": 27, "3619ae053778": 28, "37m": 17, "38": 17, "39": 23, "3d0a7b9305f7": 23, "3d2h10m": 2, "3h11m": 27, "3h12m": 27, "3h19m": 27, "3h21m": 27, "3h25m": 27, "3h27m": 27, "3h5m": 27, "4": [2, 7, 11, 13, 14, 15, 17, 28, 29, 30, 31], "400b2723": 17, "4062": 23, "407e": 28, "409mib": 28, "41": 6, "4128": 23, "42": 17, "422a": 17, "4271": 28, "43": [8, 15, 18, 27], "43200000000000": 17, "435z": 17, "44": 8, "443": [15, 19], "44af": 27, "458c": 28, "4703": 17, "4706": 27, "479e65fb8372": 17, "48": 28, "482b": 27, "49": 15, "494277b9": 23, "4974": 28, "49f2": 17, "4a25": 23, "4af9": 23, "4bb4": 17, "4c20": 17, "4c97": 17, "4c9c": 18, "4d45a39c7003": 27, "4d93": 23, "4db3": 23, "4def": 28, "4fc8": 17, "4m29": 15, "4q": 6, "5": [2, 6, 7, 10, 12, 17, 28, 29, 31], "50": 13, "50000000": 13, "5000000000": 17, "500gi": 30, "500m": 15, "500mi": 15, "503": 23, "5080": 17, "5090": [8, 15], "51": [15, 27], "511": 2, "519z": 17, "53": [15, 17], "54": 17, "559": 23, "56090": 17, "56112": 17, "56g": 23, "57": 17, "57228c52": 28, "58": 17, "5871": 38, "58a89e7a4231": 7, "59": 23, "5c8aae70": 6, "5dbcb54f5c": 15, "5g": 15, "5m": 19, "5m58": 15, "5m59": 15, "6": [2, 7, 13, 23, 28, 30, 31], "60": [15, 17], "600": [7, 18], "600000000": 17, "6004039f402e": 23, "619ada495c2a": 17, "62": [17, 27], "63": 27, "634": 23, "63642069": 28, "64b6292a": 23, "65b89d55bb": 19, "66": 18, "665dde7e": 23, "669db64dd": 15, "68c49e47ace1": 28, "69": 17, "6e7993cf42": 28, "6f31aaf1d6d3": 6, "6j12": 27, "6m46": 13, "7": [17, 23, 31], "70": 23, "7000": [8, 15, 18, 27], "7001": [8, 15, 18, 27], "705": 23, "7199": [8, 15, 18, 27], "74": 27, "750000000": 17, "759": 23, "764": 23, "76cc4dcc": 17, "77": 27, "7735": 38, "7a4f": 23, "7bd9f968b9": 17, "7c30ea55": 23, "7cf6": 28, "7d": 17, "7m43": 13, "8": [2, 14, 17, 19, 21, 31], "80": [2, 15], "8000": 13, "8043": [6, 8], "8080": 38, "844ccc56c4": 15, "84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf": 23, "8511": 18, "852a": 23, "860": 2, "868e0f3396b2": 28, "86f7": 23, "87": 23, "87a4a6c65c3": 27, "882z": 17, "89": 15, "8a48": 18, "8b9d": 17, "8c54": 23, "8c8d": 28, "8ebd6114": 27, "8f5f": 27, "8m14": 27, "8th": 33, "9": [1, 2, 3, 27, 28, 29, 31, 38], "9042": [7, 8, 15, 18, 27], "91": 27, "9100": 8, "9142": [7, 8, 15, 18, 27], "9160": [8, 15, 18, 27], "9180": [8, 15, 18, 27], "92": 15, "9263": 17, "92a4": 27, "949f": 28, "951c": 28, "9521": 28, "95m": 38, "96": 18, "969c": 27, "9d11": 17, "9daa": 17, "9df4": 23, "9m49": 13, "A": [1, 2, 3, 11, 12, 13, 14, 15, 19, 20, 21, 23, 38], "ANDed": [1, 2, 3], "And": [10, 15], "As": [2, 10, 11, 14, 17, 20, 23, 28, 34], "At": [2, 6, 7, 14, 18, 29], "Be": 31, "By": [1, 2, 3, 12, 14, 15, 30, 34], "For": [1, 2, 3, 7, 8, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 23, 26, 30], "If": [1, 2, 3, 6, 7, 10, 11, 13, 14, 15, 17, 18, 19, 23, 29, 33, 34, 37], "In": [1, 2, 3, 4, 7, 8, 10, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 27, 28, 29, 30, 34, 38], "It": [2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 20, 21, 23, 29], "NOT": 2, "No": [2, 3], "ORed": [1, 2, 3], "On": [12, 30, 33], "One": 30, "Such": 12, "TO": 15, "That": 34, "The": [1, 2, 3, 6, 8, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 23, 30, 31, 33, 34], "Then": [13, 14, 15, 20, 21, 29], "There": [2, 3, 34, 37, 38], "These": [2, 11, 12, 14, 30, 38], "To": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 33, 35, 37, 38], "WITH": 13, "Will": 2, "With": [17, 21], "_trace_id": 17, "a3a98e08": 23, "a540": 28, "a66d": 17, "a969": 17, "a96a": 23, "a978": 27, "a99": 6, "ab015cef": 28, "ab7568b8a1bd": 17, "abc4": 28, "abc8": 28, "abil": [2, 3], "abl": [15, 20, 37], "about": [1, 2, 3, 7, 8, 10, 11, 12, 13, 14, 15, 21, 30], "abov": [8, 11, 13, 14, 15, 17, 19, 20, 21, 28, 38], "absolut": 2, "accept": [2, 3, 11, 31], "access": [2, 3, 5, 6, 7, 10, 12, 17, 28], "accessmod": [2, 3], "accord": [11, 13, 14, 18, 20, 29], "accordingli": 23, "account": [2, 10, 14], "across": [2, 3, 23, 30], "act": 2, "action": 31, "activ": 6, "actual": 1, "ad": [1, 2, 3, 6, 10, 13, 16, 20], "add": [2, 13, 15, 17, 18, 21, 23, 26, 27, 38], "addit": [3, 6, 8, 12, 15, 17, 18, 21, 28, 38], "addition": [12, 23], "additionaldnsnam": 2, "additionalipaddress": 2, "address": [2, 6, 8, 12, 19, 21, 23, 27], "adher": 5, "adhoc": 17, "adjust": [2, 4, 6, 7, 13, 19, 20, 21, 23, 34], "admin": [2, 7, 19, 34], "administr": 35, "advantag": 30, "advis": [23, 34, 37], "advisori": 31, "af1dd5cd": 28, "af2": 28, "afe6": 28, "affect": [2, 28, 34], "affin": [2, 3, 24], "after": [2, 3, 10, 11, 12, 13, 14, 15, 17, 27, 28], "afterward": [11, 14], "ag": [8, 13, 15, 17, 18, 27, 38], "again": [10, 18, 19, 26], "against": [13, 20, 21], "agemax": 17, "agent": [2, 15, 17, 23], "agentimag": 15, "agentrepositori": 2, "agentresourc": [23, 30], "agentvers": [2, 13, 23, 28, 30], "aggress": 2, "agreement": [17, 29], "ah": 21, "aim": 31, "aio": [2, 13, 23], "alia": 21, "aliv": 26, "all": [1, 2, 3, 5, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 28, 29, 30, 34], "alloc": [12, 15, 21], "allocateloadbalancernodeport": [2, 12], "allow": [1, 2, 3, 4, 8, 11, 13, 15, 19, 20, 21, 23, 26, 29, 30, 37], "alon": 2, "along": [2, 13], "alpha": [1, 2, 3, 11, 14, 31], "alphanumer": 2, "alreadi": [1, 2, 17, 19, 28, 29], "also": [1, 2, 3, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 34], "alter": 13, "altern": [9, 17, 19], "although": [10, 15, 18, 19, 20, 21, 23], "alwai": [6, 7, 8, 10, 13, 26, 30, 34], "amazon": [2, 11, 22, 23, 31], "amend": 18, "amount": [2, 3], "an": [1, 2, 3, 4, 7, 8, 10, 12, 13, 15, 16, 20, 21, 29, 30, 31, 34, 35, 37, 38], "analog": [20, 21], "ani": [1, 2, 3, 7, 10, 12, 14, 15, 18, 20, 21, 28, 30, 31], "annot": [8, 12, 19], "anoth": [1, 2, 3, 12, 18, 37], "anti": [1, 2, 3], "anymor": 2, "anyth": 13, "anyvolumedatasourc": [2, 3], "api": [1, 2, 3, 4, 6, 7, 10, 13, 16, 17, 19, 23, 28, 31, 34, 37], "apiaddress": 17, "apigroup": [2, 3, 18], "apiserv": [2, 37], "apivers": [1, 2, 3, 4, 7, 12, 18, 19, 20, 23, 28, 30, 38], "app": [13, 15, 19, 23, 28, 29, 38], "appear": 17, "append": [2, 13], "appli": [1, 2, 3, 10, 11, 13, 14, 15, 17, 18, 19, 23, 30, 33, 34, 38], "applic": [2, 15, 30], "approach": 2, "appropri": [8, 19], "approxim": 31, "apropri": 10, "ar": [1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31, 34, 35, 37, 38], "arbitrari": [2, 3], "architectur": [1, 2, 3, 4], "archiv": [34, 35], "aren": [2, 31], "argument": [13, 17, 34], "aris": 35, "around": [2, 30], "arrai": [1, 2, 3, 11, 14], "arrikto": 14, "artifact": 31, "artist": 6, "ask": 15, "aspect": [2, 3], "assess": 31, "assign": [12, 30], "associ": [1, 2, 3, 10, 13, 17, 18, 20, 21], "assum": [12, 19, 23, 34], "assumpt": 12, "asynchron": 13, "attach": [1, 2, 3, 13, 14, 18, 27, 34, 35], "attempt": [2, 17], "attribut": [2, 3, 6], "attributedefinit": 6, "attributenam": 6, "attributetyp": 6, "audienc": 2, "auth": 23, "auth_token": 23, "authent": [2, 6, 13, 34], "authn": 5, "author": [2, 6], "authz": 5, "auto": [2, 13], "autogener": 15, "autoh": 16, "autom": [15, 16, 17, 23, 38], "automat": [1, 2, 3, 8, 10, 13, 14, 17, 21, 25, 31, 38], "automaticorphanednodecleanup": [2, 23, 24], "autorepair": [14, 21], "autoupgrad": [14, 21], "auxiliari": 4, "avail": [1, 2, 3, 6, 7, 8, 12, 13, 14, 15, 17, 19, 23, 27, 28, 29, 30, 34, 38], "availabilityzon": 20, "availablememb": 2, "avoid": [1, 2, 6, 7, 10, 34, 37], "aw": [2, 8, 11, 12, 20], "awar": 13, "aws_access_key_id": 6, "aws_ca_bundl": 6, "aws_endpoint_url_dynamodb": 6, "aws_secret_access_kei": 6, "azur": 2, "b": [2, 10, 14, 21, 23, 26], "b4b390a1": 27, "b63eee4527e5": 27, "b7f3": 17, "ba0f": 28, "back": [1, 2, 3, 8, 12, 26, 27, 29], "backend": [2, 8, 12], "backup": [13, 16, 17, 25, 38], "backup_data": 29, "backup_loc": 28, "backward": [2, 3, 18, 38], "balanc": [2, 8, 12, 26], "bandwidth": 27, "bare": [17, 19], "base": [1, 2, 3, 6, 8, 10, 15, 30], "base64": [7, 19, 23], "bash": [4, 7], "bashtoolsimag": 4, "bcec": 17, "bcm4v": 15, "bd63": 23, "becaus": [2, 3, 6, 8, 12, 13, 17, 23, 27, 34], "becom": [24, 29, 31], "bed5": 28, "been": [2, 12, 13], "befor": [2, 10, 18, 19, 29, 31, 34, 37, 38], "begin": [16, 29], "begin_upgrad": 29, "behav": 2, "behavior": 2, "behaviour": [2, 10], "behind": 23, "being": [2, 3, 12, 13, 17, 23, 26, 27, 29, 31], "bellow": [6, 7], "below": [2, 13, 17, 18, 19, 20, 21, 23, 28, 30], "benchmark": [11, 14], "best": 13, "beta": [2, 3, 8, 12, 31], "better": [10, 14], "between": [2, 3, 13, 20, 21], "beyond": [19, 37], "binari": [2, 23, 34], "bind": [2, 3, 14], "bit": [2, 13, 15], "blank": 10, "blob": 2, "block": [2, 14, 37], "boolean": [1, 2, 3], "boot": [18, 29], "bootstrap": [15, 27], "both": [1, 2, 3, 12, 13, 15, 20, 21], "bottlerocket": 31, "bound": [18, 24, 27, 30], "box": 18, "branch": [31, 38], "break": [31, 37], "breez": 13, "bring": [26, 27, 29, 38], "broadcast": 2, "broadcast_address": 2, "broadcast_rpc_address": 2, "broadcastopt": [12, 23], "broken": 2, "brought": 38, "brows": 13, "browser": 10, "bucket": [2, 17], "bug": [10, 31, 35], "build": [22, 23, 31], "build_dat": 17, "built": [10, 12, 20, 21], "built_bi": 17, "bump": 18, "bundl": [2, 6, 7], "button": 10, "byte": [2, 3], "c": [2, 6, 7, 13, 21, 23, 27, 28], "c19c89cb": 23, "c29d": 17, "c29f63a917c8": 17, "c4": 11, "c41c": 27, "c436": 17, "c5ab2f47eb37": 23, "c881772ebe62": 23, "ca": [3, 6, 7, 15, 19], "ca71efd39b2": 23, "cacert": 19, "cach": 2, "cachingmod": 2, "calcul": 2, "call": [2, 8, 13, 14, 28, 30, 35, 37, 38], "caller": 19, "camelcas": [1, 2, 3, 4], "can": [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 29, 30, 34, 35, 37], "candid": 31, "cannot": [1, 2, 3, 4, 12, 17, 30], "capabl": [11, 12, 13, 14, 23], "capac": [2, 3, 11, 14, 15, 23, 28, 30], "care": [11, 12, 14], "carri": [10, 23], "case": [1, 2, 3, 8, 12, 13, 18, 20, 23, 25, 27, 30, 34, 37, 38], "cass": 13, "cassandra": [2, 6, 7, 11, 14], "cassandraauthor": 7, "cat": [7, 38], "categor": 3, "categori": [1, 2, 3], "caus": [18, 26, 27, 29, 30], "cd": [10, 11, 13, 14], "ceas": [1, 2, 3], "censor": 34, "center": 23, "central": 2, "ceph": 2, "cert": [2, 3, 18], "certain": [2, 13], "certfil": [7, 17], "certif": [2, 7, 13, 15, 19], "certificatesecretnam": 15, "cest": 17, "cf": 30, "cgroup": 31, "chang": [1, 2, 3, 8, 10, 12, 13, 14, 15, 17, 18, 19, 23, 28, 29, 30, 38], "changelog": 10, "channel": [2, 18, 20], "chap": 2, "chapauthdiscoveri": 2, "chapauthsess": 2, "charact": 2, "chart": [16, 19, 31, 38], "check": [2, 12, 13, 16, 17, 18, 27, 28, 29, 30, 34, 38], "check_schema_agr": 29, "checkout": [10, 18, 38], "chmod": 7, "choic": 7, "choos": [1, 2, 3, 13, 16, 23], "cidr": [20, 21], "citizen": 13, "claimnam": 2, "class": [2, 3, 12, 13, 30], "clean": 10, "cleanup": [2, 25, 29], "clear_data_backup": 29, "clear_system_backup": 29, "cli": [13, 15, 17, 21], "click": 10, "client": [1, 3, 4, 6, 7, 8, 10, 13, 15, 18, 19, 23, 27], "clone": [2, 13], "close": [10, 15], "cloud": [11, 12, 13, 14, 17, 19, 21, 23], "cluster": [1, 2, 3, 4, 6, 7, 15, 16, 18, 19, 24, 26, 27, 28, 29, 30, 31, 38], "cluster_id": 28, "cluster_ip": 7, "cluster_nam": [11, 13, 14], "cluster_vers": 14, "clusterconfig": 20, "clusterip": [6, 7, 8, 15, 18, 27], "clusterrol": [14, 18, 34], "clusterrolebind": [14, 34], "clustersharednodesecuritygroup": 20, "clustertrustbundleproject": 2, "cname": 19, "co": [1, 2, 3], "code": [31, 38], "collabor": 10, "collect": [2, 18, 19, 35], "colon": 10, "color": 6, "column": 18, "com": [5, 6, 8, 10, 11, 12, 13, 14, 15, 18, 19, 23, 28, 30, 34, 38], "combin": [1, 2, 3], "come": [11, 13, 14, 17, 30], "comma": 2, "command": [2, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 33, 34], "comment": 2, "commit": [2, 17, 31], "common": [11, 13, 14, 15, 18, 30, 34, 37, 38], "commonli": 10, "commun": [1, 2, 3, 4, 12, 20, 21, 23], "compar": [10, 18], "compat": [2, 3, 6], "complet": [2, 10, 13, 19, 27], "complex": [7, 12], "compon": [15, 17, 19, 31], "compos": [15, 23], "compromis": 2, "comput": [1, 2, 3, 14, 21], "concaten": 2, "concept": [2, 3, 6], "condit": [13, 15, 18, 19, 23, 28, 30, 38], "conditiontyp": 2, "config": [2, 3, 7, 13, 14, 17, 20, 21, 23, 34], "config_fil": 17, "configmap": [6, 7, 13], "configur": [1, 2, 3, 4, 6, 7, 8, 12, 17, 23, 28, 30, 37, 38], "conflict": [2, 10], "conform": [31, 37], "connect": [2, 6, 7, 8, 12, 13, 17, 20], "connections_per_host": 13, "consequ": 12, "consid": [2, 3, 18], "consider": [1, 2, 3], "consist": [2, 3, 15, 17, 23, 28, 30], "consistent_cluster_manag": 28, "consol": 10, "constitut": 1, "consult": [2, 17], "consum": [2, 3], "contact": [8, 23], "contain": [1, 2, 3, 12, 14, 15, 18, 21, 29, 31, 34, 35, 38], "containernam": 2, "content": [2, 3, 13, 14, 15, 28, 31], "context": [20, 21, 30, 34], "context_dc1": 23, "context_dc2": 23, "continu": [8, 10, 29], "contrari": 6, "contribut": 16, "contributor": [1, 2, 3, 4, 10], "control": [1, 2, 3, 8, 12, 14, 17, 18, 19, 23, 29, 37, 38], "controllerimag": 15, "controllerresourc": 15, "conveni": 19, "convent": [1, 2, 3, 4, 13], "convert": [1, 2, 3, 4], "copi": [2, 3, 6, 13, 34], "core": [2, 3, 13, 14, 30], "corev1": 2, "correct": [2, 17, 19], "correctli": [15, 31], "correspond": [1, 2, 3, 4, 20, 21], "correspondingli": 23, "cost": 12, "could": 15, "count": [13, 14, 17], "coupl": 30, "cours": 15, "cover": [12, 30], "cpu": [2, 11, 13, 14, 15, 23, 28, 30], "cpumanagerpolici": [11, 14], "cpuset": [2, 23], "cql": [6, 9, 13, 17, 28], "cql_user": 6, "cqlsh": [6, 13], "cqlshlib": 7, "cqlshrc": 7, "cr": 23, "crd": [5, 10, 13, 15, 17, 18, 30, 31, 38], "creat": [1, 2, 3, 4, 6, 7, 12, 15, 17, 18, 19, 23, 28, 30, 34, 38], "create_system_backup": 29, "createselfsignedcertif": 15, "creation": [2, 3, 11, 14, 17, 31], "credenti": [2, 7, 14, 17, 19, 28], "cri": 31, "cron": 2, "crossnamespacevolumedatasourc": [2, 3], "crt": [6, 7, 17, 19], "csi": [3, 11, 14], "curl": 19, "current": [1, 2, 3, 13, 15, 16, 19, 20, 21, 23, 29, 34, 37], "currentnod": 2, "currentrack": 2, "custom": [2, 3, 12, 17, 19, 20, 21, 28], "customiz": 15, "customresourcedefinit": [18, 38], "customzi": 15, "d": [2, 6, 7, 19, 23, 38], "d1d532cd": 17, "d446ff160747": 28, "d4946360": 17, "d7e1": 6, "daemon": 30, "daemonset": [27, 30], "daili": [2, 17], "dash": [2, 10], "data": [2, 3, 6, 7, 13, 14, 17, 19, 23, 27, 28, 29, 32, 38], "databas": [15, 17], "datacent": [3, 7, 13, 15, 16, 17, 20, 21, 27, 28, 30, 34], "datacenter_nam": 13, "dataset": 2, "datasetnam": 2, "datasetuuid": 2, "datasnapshottag": 2, "date": [1, 2, 3, 10, 15, 17, 23, 31, 38], "daunt": 13, "dc": [2, 17, 23], "dc1": [2, 23], "dc2": 23, "dc9842980080": 28, "dc_suffix": 13, "dead": 16, "debug": [17, 34], "decid": [15, 31], "decim": 2, "decis": 29, "decod": 13, "deconflict": [2, 3], "dedic": [2, 8, 12, 15, 17, 20, 21, 23, 28, 30, 34, 35], "dedupl": 2, "default": [1, 2, 3, 6, 7, 8, 12, 13, 14, 15, 17, 23, 27, 28, 30, 33, 34], "defaultmod": 2, "defin": [1, 2, 3, 4, 5, 12, 13, 15, 17, 23], "definit": [6, 12, 13, 14, 15, 17, 18, 29, 38], "degrad": [2, 3, 8, 19, 23, 28], "delet": [2, 13, 17, 18, 27, 29, 38], "delete_pod": 29, "demo": [11, 14, 27], "deni": [13, 21], "dep": 10, "depend": [2, 8, 10, 12, 18, 26, 27, 30, 31, 34], "deploi": [12, 16, 18, 38], "deploy": [13, 15, 17, 19, 21, 22, 23, 28, 29, 38], "deprec": 2, "describ": [1, 2, 3, 4, 11, 13, 14, 17, 18, 20, 21, 23, 28, 29, 38], "descript": [10, 15], "design": 2, "desir": [1, 2, 3, 4, 13, 15, 17, 29], "desiredcapac": 11, "destin": 20, "destroi": [13, 17, 23], "detach": 18, "detail": [1, 2, 3, 6, 13, 17, 19, 23, 30, 31], "detect": [29, 31], "determin": [2, 3, 10, 34], "dev": [1, 2, 4, 19], "devel": [1, 2, 3, 4], "develop": [2, 11, 14, 17, 19], "developermod": [2, 13, 28], "deviat": 34, "devic": [2, 11, 14, 30], "did": 10, "differ": [2, 3, 6, 7, 8, 11, 12, 13, 15, 17, 20, 21, 23, 30], "direct": [2, 3, 12, 13, 19, 21], "directli": [2, 6, 12, 21], "directori": [2, 10, 34, 38], "disabl": [2, 3, 7, 14, 15, 21, 26, 28, 29, 33], "disable_maintenance_mod": 29, "disableoptim": 1, "disadvantag": 8, "disallow": [2, 3], "disambigu": [18, 38], "discov": [6, 9, 12, 23], "discoveri": [2, 7], "discuss": 23, "disk": [1, 2, 11, 13, 14, 21, 27, 30], "disknam": 2, "diskspacefreeminperc": 17, "diskuri": 2, "displai": 29, "distinct": [12, 20, 21, 23], "distribut": 30, "divisor": 2, "dn": [2, 3, 8, 10, 12, 13, 19, 23, 26, 27], "dns1123subdomainfmt": [2, 3], "dns_label": 2, "dnsdomain": [2, 3, 19], "dnspolici": 2, "do": [1, 2, 3, 10, 13, 17, 19, 20, 21, 26, 35, 37, 38], "doc": [2, 3, 5, 11, 13, 28, 30, 37], "docker": [7, 10, 13, 15, 31, 38], "docker0": 33, "document": [2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 23], "doe": [1, 2, 3, 10, 13, 15, 17, 23], "doesn": [12, 13, 14, 37, 38], "doesnotexist": [1, 2, 3], "domain": [2, 3, 23], "don": [1, 2, 3, 6, 10, 11, 12, 14, 15, 34], "done": [7, 10, 11, 13, 14, 17, 28, 34], "dot": 2, "doubl": 30, "down": [1, 8, 13, 16, 23, 27], "download": [15, 28], "downscal": 16, "downtim": 18, "downward": 2, "downwardapivolum": 2, "downwardapivolumefil": 2, "drain": [2, 27, 29], "drain_nod": 29, "drbth": 15, "driver": [2, 3, 8, 11, 12, 13, 14], "drop": [2, 3], "dry": 13, "due": [1, 2, 3, 17, 23, 24], "durat": [2, 17, 28, 34], "dure": [1, 2, 3, 10, 23, 29, 38], "dynam": [2, 3, 11, 14], "dynamicresourcealloc": [2, 3], "dynamodb": 9, "e": [1, 2, 3, 6, 13, 34, 38], "e2": 31, "e24c": 23, "e420": 23, "each": [1, 2, 3, 12, 13, 14, 15, 17, 18, 20, 21, 23, 29, 30, 38], "earlier": [11, 14, 20, 23], "easi": 13, "easier": [13, 18, 19, 38], "easiest": 14, "easili": [20, 21], "east": [11, 13, 15, 17, 18, 20, 23, 27, 28, 29, 30], "east1": [21, 26], "eb": 2, "ebd82268": 28, "echo": [6, 19], "ecosystem": 8, "edit": [10, 11, 13, 14, 17], "editor": 7, "eec5": 17, "efb7": 28, "effect": [1, 2, 3, 23, 28], "effic": 30, "eg": 13, "either": [2, 3, 13, 15, 17], "ek": [8, 12, 16, 22, 23, 31], "eks_region": 11, "eks_zon": 11, "eksctl": [11, 20], "element": [1, 2, 3], "elig": 31, "els": [10, 19], "embed": [2, 34, 35], "emerg": 4, "empti": [1, 2, 3, 7, 13, 28], "enabl": [1, 2, 3, 6, 7, 12, 13, 14, 17, 20, 21, 23, 24, 26, 28, 29, 33], "enable_maintenance_mod": 29, "encod": 2, "encrypt": 7, "end": [10, 18, 19, 28, 31], "endpoint": [1, 2, 3, 4, 7, 13], "endpointsselector": 19, "enforc": 30, "enhanc": 23, "enough": [2, 6, 34], "ensur": [2, 10, 13, 18, 28], "enter": [10, 15, 27, 29], "enterpris": [12, 16, 17, 28, 31], "entir": [2, 3, 12, 13, 23, 30], "entri": [2, 3, 13], "entrypoint": 7, "env": [2, 13, 34], "environ": [2, 7, 10, 12, 13, 15, 18, 23, 34], "eof": 7, "ephemer": [8, 23], "ephemeralvolumesourc": 2, "eq": 19, "equal": [1, 2, 3, 13, 23, 30], "equival": [1, 2, 3, 12], "error": [2, 3, 6, 13, 14, 17, 29, 34], "errorbackoff": 17, "esoter": 2, "esp": 21, "especi": 8, "establish": [12, 13, 20, 21, 38], "etc": [1, 2, 3, 17, 19, 30, 31], "eval": 13, "evalu": 2, "even": [10, 29], "event": 13, "eventu": [1, 2, 3], "everi": [2, 3, 6, 7, 8, 12, 13, 23, 29, 31], "everyon": 31, "everyth": [2, 10, 11, 13, 14, 15, 29], "evict": [1, 2, 3], "ex": [2, 14], "exactli": [15, 31], "examin": [13, 17], "exampl": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 28, 29, 30, 34, 38], "exce": [2, 3], "except": [11, 14], "exclud": 2, "exclus": [2, 12, 30], "exec": [2, 6, 7, 13, 17, 23, 27, 28, 34], "execut": [1, 2, 3, 15, 17, 18, 23, 28, 29, 30, 33], "exemplari": [20, 21], "exist": [1, 2, 3, 13, 17, 18, 23, 29, 31, 34, 38], "exit": 13, "expand": 2, "expect": [2, 3, 23, 38], "experi": [11, 14], "experiment": [2, 16, 19, 30, 38], "expir": 2, "expirationsecond": 2, "explain": [12, 19, 20, 21, 30], "explicit": 24, "explicitli": [2, 3, 7], "export": [2, 6, 11, 14, 34], "expos": [2, 3, 6, 16, 23], "exposeopt": [12, 19, 23], "exposur": 8, "express": [1, 2, 3, 15], "ext4": 2, "extend": [2, 13, 37], "extern": [2, 3, 8, 12, 15, 18, 19, 27, 34], "external_ip": 19, "externalse": [2, 23], "externaltrafficpolici": [2, 12], "extra": [2, 4, 13, 34], "extract": [18, 23], "f": [2, 11, 13, 14, 15, 17, 18, 19, 20, 23, 38], "f17db261": 21, "fa78d3992694": 18, "facilit": 12, "factor": [2, 13, 34], "factori": 7, "fail": [2, 13, 17, 19, 27, 28, 33], "failfast": 2, "failur": [2, 26, 27, 29], "failurestrategi": 2, "fallback": 23, "fals": [1, 2, 3, 15, 17, 19, 21, 23, 28], "fast": 13, "faster": 2, "featur": [1, 2, 3, 10, 30], "feel": [13, 34], "fetch": 10, "few": 34, "ff36d7e0": 28, "fibr": 2, "field": [1, 2, 3, 4, 12, 13, 15, 19, 23, 29, 34], "fieldpath": 2, "file": [1, 2, 6, 7, 10, 13, 14, 15, 18, 20, 28, 34, 37, 38], "filesystem": [2, 3, 11, 14, 26], "filesystemconfigur": 1, "filter": [1, 21], "find": [1, 2, 3, 5, 6, 7, 13, 15, 19, 29, 37, 38], "find_next_nod": 29, "find_next_rack": 29, "finish": [2, 3, 13, 28], "finish_upgrad": 29, "firewal": 37, "first": [2, 10, 11, 13, 14, 15, 17, 18, 19, 28, 29, 30, 38], "fit": [1, 10, 12], "fix": [2, 8, 10, 31, 33], "flag": [2, 20, 21, 24, 34, 38], "flow": 20, "focus": [11, 14], "folder": [7, 11, 14, 34], "follow": [2, 7, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 23, 28, 29, 31, 33, 38], "follw": 15, "foo": [2, 3, 28], "foostatu": [2, 3], "forbid_rmw": 13, "forbidden": [1, 2, 3], "forc": [2, 14], "forceredeploymentreason": [2, 23, 28], "forev": [1, 2, 3], "forgotten": 10, "form": [11, 14, 34], "format": [2, 14, 17, 21, 29], "formula": 2, "fortun": 13, "forward": 2, "found": [11, 13, 14], "free": [13, 14, 34], "freez": 31, "fresh": [28, 38], "from": [1, 2, 3, 4, 6, 8, 10, 11, 12, 13, 14, 15, 18, 19, 20, 23, 25, 26, 27, 29, 30, 31, 34, 38], "fromvers": 2, "front": [2, 26], "frontend": 17, "fsgroup": 2, "fstype": [1, 2], "fulfil": 30, "full": [2, 11, 13, 14, 17, 18, 27, 29], "fullfil": 15, "fulli": [17, 23], "function": [2, 3, 23, 31, 37], "further": 12, "futur": [2, 7, 19, 20, 21], "g": [1, 2, 3, 6, 14, 18, 38], "ga": 31, "garbag": 18, "gate": [1, 2, 3], "gatewai": [2, 3], "gather": 32, "gb": 13, "gc": 2, "gce": 2, "gcloud": [14, 21], "gcp": [14, 21], "gcp_project": 14, "gcp_region": 14, "gcp_user": 14, "gcp_zone": 14, "gen": 13, "gener": [1, 2, 3, 4, 10, 11, 12, 13, 14, 17, 18, 19, 29, 38], "get": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 34, 38], "gib": [2, 15], "git": [1, 2, 3, 4, 10, 13, 18, 31, 38], "github": [6, 10, 13, 16, 19, 31, 34], "give": [2, 10, 13, 14, 17, 31], "given": [1, 2, 3, 20, 27, 30, 34], "gke": [8, 12, 13, 16, 22, 23, 27, 31], "glob": 2, "global": 2, "go": [1, 2, 10, 13, 15, 18, 23, 27, 38], "go_vers": 17, "goe": 34, "good": [10, 12, 15], "googl": 21, "googleapi": [15, 38], "gopath": 10, "gracefulli": 2, "grafana": [4, 13, 16], "grafana_password": 19, "grafana_serving_cert": 19, "grafana_us": 19, "grafanaimag": 4, "grant": 18, "granular": 2, "greatest": [1, 2, 3], "group": [1, 2, 3], "gt": [1, 2, 3], "guarante": [2, 3, 14, 30], "guid": [3, 11, 13, 14, 15, 17, 18, 20, 21, 23, 38], "guidanc": [20, 21], "h": [2, 13], "ha": [1, 2, 3, 7, 8, 10, 12, 13, 14, 20, 23, 28, 31], "hack": 13, "hacki": 18, "hairpin": 33, "handl": [2, 14], "happen": [2, 13, 29], "hard": 14, "hardwar": 15, "hash": [2, 6, 21], "have": [1, 2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 29, 30, 34, 37, 38], "head": 10, "header": 2, "headless": 23, "healhcheck": 17, "healthcheck": 17, "healthcheck_rest": 17, "healthz": 38, "helm": [13, 16, 19, 31], "help": [7, 12, 13, 16, 34, 35], "here": [2, 3, 6, 7, 8, 10, 13, 34, 38], "hi": 24, "high": 23, "higher": [2, 3], "highest": [1, 2, 3], "highli": [11, 13, 14], "histori": 7, "hit": [31, 34], "hold": [1, 2, 3], "home": 10, "hop": 8, "host": [1, 2, 10, 13, 17, 19, 23, 27, 31], "hostnam": [2, 7, 8, 12, 23], "hostnetwork": [2, 37], "hour": 2, "hourli": 2, "how": [2, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 19, 27, 28, 34, 37], "howev": [23, 30], "html": 11, "http": [1, 2, 3, 4, 5, 6, 10, 11, 13, 15, 17, 19, 34, 38], "http_code": 19, "httpget": 38, "hub": 15, "human": [1, 2, 3, 23], "i": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 27, 28, 29, 30, 31, 33, 34, 37, 38], "i3": 11, "iam": 14, "icmp": 21, "id": [2, 17, 20, 23, 27, 28], "ideal": 13, "identif": 2, "identifi": [2, 3, 27, 28], "ie": 13, "ifnotpres": 15, "ignor": [1, 2, 3, 27], "ill": 23, "imag": [1, 2, 4, 10, 14, 18, 21, 29, 30, 31, 38], "imagepath": 1, "imagin": 10, "img": 10, "immedi": [1, 2, 3, 30], "immut": [2, 3, 12], "impact": 2, "implement": [1, 2, 3, 10, 23], "impli": [2, 3, 12], "implicit": [1, 2, 3], "implicitli": 2, "import": [2, 3, 8, 13, 14, 31], "improv": 11, "inbound": 20, "incid": 24, "includ": [2, 3, 10, 15, 21, 35, 37], "incom": [1, 2, 3], "incompat": [18, 31, 38], "inconsequenti": 13, "incorpor": 12, "increas": [2, 13], "independ": [12, 23, 37], "index": [6, 7, 19, 23], "indic": [1, 2, 3], "individu": [2, 11, 14], "infer": [1, 2, 3, 4], "infinit": 17, "info": [1, 2, 3, 4, 17, 34], "inform": [2, 13, 19, 20, 21, 23, 29, 35, 37], "infrastructur": [2, 20, 21, 23], "ingress": [6, 8, 12, 21, 37], "ingress_ip": 19, "ingress_port": 19, "ingressclassnam": [2, 3, 19], "initcontain": [2, 18], "initi": [2, 8, 18, 23], "initiatornam": 2, "inject": 14, "insecur": 2, "insecuredisableauthor": 2, "insecureenableanonymousaccess": 3, "insecureenablehttp": 2, "insid": [2, 3, 11, 13, 14, 26], "inspect": 10, "instal": [2, 3, 10, 13, 16, 17, 18, 19, 20, 21, 23, 34, 36, 38], "instanc": [1, 2, 3, 4, 13, 14, 15, 17, 18, 19, 20, 21, 23, 30], "instance_numb": 13, "instancetyp": 11, "instead": [2, 7, 13, 37], "instruct": [11, 13, 14, 15, 18, 20], "integ": [1, 2, 3, 4], "integr": [2, 7, 10, 16, 23], "intend": [2, 3], "intens": [2, 28], "inter": [2, 12, 22, 23], "interact": [13, 26, 31], "interconnect": [12, 20, 21, 22], "interest": 15, "interfac": [2, 3, 14, 21], "intern": [1, 2, 3, 4, 8, 12, 15, 17], "internal_ip": 19, "internalip": 19, "internaltrafficpolici": [2, 12], "interpret": [1, 2, 3], "interrupt": 30, "intersect": [1, 2, 3], "interv": [2, 17], "intervent": 23, "introduc": [13, 19, 23, 30], "involv": 18, "io": [1, 2, 3, 4, 5, 7, 8, 11, 12, 13, 19, 20, 23, 31, 34, 38], "ip": [2, 6, 8, 12, 13, 15, 18, 19, 21, 23, 27, 33], "ip_addr": 2, "ipaddress": 12, "ipv4": [20, 21], "iqn": 2, "irq": 30, "iscsiinterfac": 2, "isn": [1, 2, 3, 15, 28], "isol": [2, 13], "issu": [6, 8, 10, 16, 17, 18, 29, 31, 32, 34, 36, 38], "issuer": 13, "item": 19, "iter": [1, 2, 3], "its": [1, 2, 3, 8, 11, 13, 14, 17, 18, 20, 21, 23], "itself": [2, 10, 15, 17, 26], "jan": 28, "job": [2, 13, 31], "join": [23, 27], "jonesdl": 2, "json": [2, 3, 18, 23], "jsonpath": [6, 7, 8], "just": [1, 2, 3, 8, 10, 11, 13, 14], "k8": [1, 2, 3, 4, 15, 16, 17, 18, 25, 26, 27, 30], "kb": [23, 27], "keep": [10, 11, 14], "kei": [1, 2, 3, 6, 7, 12, 13, 17, 23, 34], "kept": 13, "kernel": [30, 31], "keyr": 2, "keyschema": 6, "keyspac": [2, 13, 17, 28, 29], "keytyp": 6, "kind": [1, 2, 3, 4, 7, 12, 18, 19, 20, 23, 28, 30, 38], "know": 12, "known": [2, 3, 20, 31, 32], "kube": 34, "kubebuild": 10, "kubeconfig": 34, "kubectl": [6, 7, 8, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 30, 34], "kubelet": [2, 11, 14, 30, 31], "kubeletconfig": 14, "kubeletextraconfig": 11, "kubernet": [2, 3, 5, 6, 7, 11, 12, 15, 16, 18, 19, 34, 37], "kustom": 10, "l": [13, 15, 17, 18, 19, 28, 34], "label": [1, 11, 13, 14, 19, 23, 26, 27, 30], "labelselector": 23, "lack": 17, "land": [15, 30], "larg": [11, 34], "last": [1, 2, 3, 10], "lasttransitiontim": [1, 2, 3], "latenc": 12, "later": [11, 14], "latest": [1, 2, 3, 4, 10, 11, 16, 31, 34], "latter": 8, "launch": [11, 14], "lb": 12, "leak": 7, "learn": [2, 7, 8, 12, 20, 28, 35], "least": [2, 10, 14, 15, 23, 30, 34], "leav": [2, 23, 27, 30], "left": 29, "less": [10, 18, 19, 38], "lesson": 16, "let": [2, 11, 14, 15, 17, 23, 34], "level": [2, 13, 17], "lib": 17, "licens": 17, "life": [13, 27], "lifecycl": [2, 10, 23], "lifetim": 2, "light": 2, "like": [2, 3, 6, 8, 10, 13, 16, 17, 18, 19, 27, 30, 31, 34], "likelihood": 23, "limit": [13, 15, 17, 23, 28, 30], "line": [10, 20, 21, 23], "link": [2, 10, 33], "linux": [13, 31], "list": [1, 2, 3, 6, 10, 13, 14, 17, 18, 21, 28, 38], "listkind": [1, 2, 3, 4], "listmapkei": [2, 3], "listtyp": [2, 3], "littl": 13, "live": [2, 26], "livenessprob": 38, "ll": [11, 14, 28, 34], "load": [2, 8, 12, 23, 26, 27], "loadbalanc": [8, 19], "loadbalancerclass": [2, 12], "local": [1, 2, 3, 6, 7, 8, 10, 19, 20, 23, 27], "localdc": 17, "localobjectrefer": 2, "locat": [1, 2, 3, 17, 21, 28, 34], "log": [2, 10, 13, 17, 29], "logger": 17, "logic": [2, 10, 12], "login": 2, "loglevel": 17, "long": [2, 8], "longer": [2, 10, 13, 14, 23, 27], "look": [2, 3, 8, 10, 13, 15, 18, 23, 34], "lookup": [1, 2, 3, 18], "loop": [1, 10], "loopdeviceconfigur": 1, "lose": [10, 24], "lost": 25, "lot": 38, "lower": [2, 3, 18], "lqejv3kdr5gx9m3xq2ynnq": 17, "lsetxattr": 34, "lt": [1, 2, 3], "lun": 2, "m": [2, 17], "ma": 15, "machin": [2, 11, 13, 14, 19, 21, 34], "machineri": 23, "made": [2, 10, 12, 31], "mai": [1, 2, 3, 4, 7, 8, 12, 19, 23, 24, 26, 27, 29, 30, 31, 34, 38], "main": [13, 15, 17, 23], "maintain": [10, 31], "mainten": [25, 29], "make": [2, 3, 6, 7, 8, 10, 13, 14, 15, 17, 18, 19, 23, 27, 28, 31, 34, 37, 38], "makefil": 10, "manag": [2, 3, 12, 14, 16, 18, 20, 21, 27, 28, 30, 31, 34, 38], "managerid": 2, "mang": 2, "mani": [2, 3, 15, 19, 30, 34], "manifest": [13, 23, 38], "manual": [2, 3, 6, 7, 13, 14, 18, 19, 21, 23, 28, 29, 34, 37, 38], "map": [1, 2, 3, 17], "mark": 2, "master": [2, 10, 31], "match": [1, 2, 3, 14, 19, 30, 31], "matchexpress": 23, "matchlabel": [19, 23], "matchlabelkei": [1, 2, 3], "matchlabelkeysinpodaffin": [1, 2, 3], "matter": 19, "max": [2, 13, 23], "max_repair_ranges_in_parallel": 2, "maximum": [2, 3, 11, 14], "md": [1, 2, 3, 4], "mean": [1, 2, 3, 13, 18], "meant": 2, "mechan": 23, "medium": 2, "meet": [1, 2, 3, 23, 30], "megabyt": 2, "member": [2, 3, 8, 13, 15, 17, 18, 19, 23, 28, 29, 30], "memori": [2, 13, 15, 23, 28, 30, 31], "mention": [8, 34], "merg": [1, 2, 3, 6, 10, 12, 23, 28, 29, 31], "messag": [1, 2, 3, 13, 17, 29], "met": [1, 2, 3, 19, 23, 28], "metadata": [7, 8, 18, 19, 20, 23, 28, 30], "metal": [17, 19], "metav1": [2, 3], "metric": [12, 13, 15], "mib": 2, "midnight": 2, "might": [2, 12, 18, 27, 31], "migrat": [33, 38], "migratedir": 17, "migratemaxwaitschemaagr": 17, "migratetimeout": 17, "mikefarah": 34, "mini": 13, "minifi": 34, "minikub": [13, 15], "minim": [10, 15], "minimum": [2, 3], "minor": 38, "minreadysecond": 2, "minterminationgraceperiodsecond": 2, "minut": [2, 29], "mirror": 2, "mismatchlabelkei": [1, 2, 3], "mission": 17, "mistak": 2, "mitig": 8, "mkdir": 10, "mktemp": [6, 7, 34, 38], "mnt": 17, "mode": [2, 3, 11, 14, 17, 21, 25, 29, 34], "model": [1, 21], "modelregex": 1, "modif": 6, "modifi": [3, 10, 13, 14, 21, 29, 37], "modifyvolumestatu": [2, 3], "moment": 2, "monitor": [2, 3, 11, 14, 16, 23, 31], "month": 10, "monthli": 2, "more": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 19, 20, 21, 23, 27, 30, 34, 35, 37], "most": [1, 2, 3, 4, 10, 11, 14, 15, 19, 23, 30], "mount": [2, 11, 13, 14, 34], "mountconfigur": 1, "mountpath": 2, "mountpoint": 1, "mountpropag": 2, "mountpropagationnon": 2, "move": [23, 27, 29, 30], "much": [15, 27], "multi": [16, 20, 21, 34], "multipl": [1, 2, 3, 10, 12, 13, 17, 18, 22], "musiccollect": 6, "must": [1, 2, 3, 10, 12, 13, 17, 23, 27, 29, 30, 31, 32, 35, 38], "must_gather_token": 34, "mutat": [2, 3, 4, 38], "mutatingwebhookconfigur": 38, "mutual": 2, "my": [2, 12, 17], "mydomain": 19, "mysql": 2, "n": [2, 11, 13, 14, 15, 17, 18, 19, 23, 26, 27, 28, 29, 31, 34, 38], "n1": [14, 21], "name": [1, 2, 3, 6, 7, 8, 10, 11, 13, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 34, 38], "nameregex": 1, "namespac": [1, 2, 3, 8, 13, 15, 17, 18, 23, 30, 38], "namespace_with_broken_scyllaclust": 34, "nativ": [7, 13, 21], "natur": [23, 30], "navig": 10, "necessari": [2, 11, 13, 14, 19, 20, 21, 23, 34], "need": [2, 6, 7, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31, 34, 37, 38], "neg": [1, 2, 3], "network": [3, 6, 7, 8, 10, 12, 16, 22, 27, 30, 37], "networktopologystrategi": 13, "never": [10, 38], "new": [2, 3, 10, 13, 14, 16, 17, 18, 19, 20, 23, 27, 29, 30, 31, 38], "new_replication_factor": 13, "newli": [2, 18], "next": [17, 29], "nightli": 29, "nil": 2, "node": [1, 3, 6, 7, 9, 13, 15, 16, 17, 18, 19, 26, 28, 29], "nodeaffin": 23, "nodeconfig": [0, 5, 11, 14, 30], "nodeconfiglist": 1, "nodegroup": [11, 20], "nodepool": 14, "nodepublishvolum": 2, "nodeselector": [13, 30], "nodeselectorterm": 23, "nodeservic": [12, 23], "nodetool": [23, 27], "nodeunpublishvolum": 2, "noexecut": [1, 2, 3], "non": [1, 2, 3, 20, 23, 29], "none": [2, 8, 15, 18, 27], "nor": 6, "normal": [2, 23, 27], "noschedul": [1, 2, 3, 11, 14, 23], "notabl": 23, "note": [2, 3, 7, 13, 17, 19, 38], "noth": [2, 18], "notic": [2, 15, 19], "notin": [1, 2, 3], "now": [2, 6, 10, 11, 13, 14, 17, 18, 20, 21, 23], "nr": [2, 13, 23], "ntf": 2, "null": [1, 2, 3, 19], "num": [13, 14, 17, 21], "num_job": 13, "number": [2, 10, 13, 38], "numretri": 2, "nutshel": 10, "nvme": [11, 14], "o": [6, 7, 8, 13, 18, 19, 28, 31, 34], "object": [1, 2, 3, 4, 12, 13, 19, 23, 38], "observ": [1, 2, 3, 4, 15, 29], "observedgener": [1, 2, 3, 4], "obtain": [2, 14], "obviou": 10, "octal": 2, "off": [1, 10, 13, 26, 29, 31, 38], "offici": [18, 31], "often": [2, 19, 37], "ok": 13, "old": [18, 27, 38], "older": 2, "omit": [2, 3, 20], "omitempti": [2, 3], "onc": [2, 3, 10, 11, 13, 14, 15, 17, 20, 21, 29, 38], "ondelet": 29, "one": [1, 2, 3, 8, 10, 12, 13, 15, 17, 18, 21, 23, 24, 27, 29, 34, 38], "ones": [1, 2, 3, 12, 20, 38], "ongo": 2, "onli": [1, 2, 3, 6, 8, 11, 13, 18, 20, 21, 23, 29, 30, 31, 34, 38], "only_rmw_uses_lwt": 13, "onto": [1, 2, 3], "op": [1, 2, 3, 13, 18, 23], "open": [10, 12, 13, 16, 17], "openstack": 2, "oper": [1, 2, 3, 4, 5, 6, 7, 8, 12, 17, 18, 23, 24, 26, 27, 29, 30, 31, 34, 35, 37], "opt": 7, "optim": [1, 2, 11, 14, 30], "option": [1, 3, 6, 7, 11, 13, 14, 15, 17, 23, 30, 34], "optmiz": 30, "order": [2, 10, 12, 13, 14, 17, 23, 38], "organ": 3, "origin": [10, 23], "orphan": 2, "other": [1, 2, 3, 6, 8, 10, 12, 14, 15, 16, 17, 19, 20, 21, 23, 27, 30, 31, 34], "otherdc": 2, "otherwis": [1, 2, 3, 10, 19, 20, 31], "our": [6, 8, 13, 18, 23, 30, 31, 34, 35, 38], "out": [1, 2, 3, 5, 6, 16, 18, 23, 29, 30, 38], "output": [2, 6, 10, 13, 17, 18, 21, 23, 28], "outsid": [8, 12, 19], "over": [1, 2, 3, 7, 11, 14, 23, 27, 29], "overal": 2, "overlap": [20, 21], "overrid": [2, 13], "overview": [2, 32], "overwrit": 15, "own": [2, 4, 11, 14, 15, 23, 27], "owner": [2, 3], "ownerrefer": 18, "p": [8, 10, 13, 14, 18, 23, 28, 29, 38], "packet": [19, 30], "page": [7, 8, 12, 21, 38], "paid": 35, "pair": [1, 2, 3, 12, 13], "paragraph": [6, 7], "parallel": [2, 28, 29], "paramet": [2, 23], "part": [2, 8, 30], "parti": [2, 3, 19], "particular": [1, 2, 3, 8, 12, 13, 15, 23, 29, 31], "partit": 2, "pass": [1, 2, 10, 12, 14, 31, 37], "passthrough": 19, "password": [6, 7, 13, 17, 19], "passwordauthent": [7, 13], "patch": [1, 2, 3, 8, 18, 23, 28, 29, 38], "patchmergekei": [2, 3], "patchstrategi": [2, 3], "path": [1, 2, 3, 10, 13, 18, 23, 34, 38], "pattern": [2, 13, 15, 34], "pcx": 20, "pd": [2, 14, 21], "pdb": 14, "pdid": 2, "pdname": 2, "peer": 23, "pem": 2, "pend": [2, 3, 27], "per": [1, 2, 3, 8, 13], "percent": 2, "perform": [2, 11, 13, 14, 16, 24, 31], "perftun": 30, "period": [1, 2, 3, 18], "perman": 7, "permiss": [2, 14, 17, 18], "permit": 21, "persist": [2, 3, 14, 17], "persistentvolum": [2, 3, 11, 13, 14], "persistentvolumeclaim": 3, "persistentvolumeclaimvolumesourc": 2, "photon": 2, "photoncontrol": 2, "pick": [13, 23], "pid": 17, "piec": 31, "pin": [2, 30, 38], "placement": [23, 30], "plain": 13, "plaintextauthprovid": 7, "plane": [37, 38], "platform": [3, 12, 13, 19, 20, 21, 22], "pleas": [2, 6, 7, 10, 15, 30, 34, 37, 38], "plugin": [2, 34], "pluralnam": [1, 2, 3, 4], "pod": [1, 2, 3, 7, 8, 11, 12, 13, 14, 15, 17, 18, 19, 21, 23, 24, 26, 27, 29, 30, 34, 37], "podantiaffin": 23, "podman": 7, "podreadinessg": 2, "podspec": [2, 3], "point": [1, 2, 3, 7, 8, 12, 14, 18, 19, 23, 29, 34], "polici": [2, 10, 11, 12, 14, 15, 30], "poll": 2, "pollinterv": [2, 17], "pool": [2, 11, 14, 21, 23, 27, 30], "popul": [2, 3, 13], "port": [2, 7, 8, 13, 15, 18, 19, 20, 27, 28, 38], "portal": 2, "portworx": 2, "possibl": [2, 27], "post": 28, "potenti": 2, "power": [10, 30], "pr": 10, "pre": [2, 30], "preconfigur": 20, "predefin": [20, 21, 34], "predict": 17, "prefer": [11, 14, 20, 21], "prefer_loc": 13, "prefernoschedul": [1, 2, 3], "prefix": 10, "prepar": [10, 22, 23], "present": [2, 6, 17, 20], "preserv": [2, 3, 38], "press": 8, "prevent": 2, "previou": [2, 3, 18, 29], "print": [13, 29], "printf": 38, "prior": 17, "prioriti": 21, "privat": 20, "privileg": 2, "proactiv": 2, "probe": [26, 38], "procedur": [2, 16, 23, 27, 28, 29, 38], "process": [13, 14, 20, 21, 23, 26, 29, 30, 38], "prod": 17, "produc": [2, 3], "product": [13, 17, 18, 19, 23, 30], "profil": 2, "programmat": [2, 3], "progress": [2, 3, 8, 17, 19, 23, 28], "project": [14, 16], "prometh": 15, "prometheu": [4, 13, 15, 16, 17], "prometheusscrapeinterv": 17, "prometheusvers": 4, "promisc": 33, "prompt": 10, "prone": 13, "propag": [2, 12, 13, 18, 23], "proper": 13, "properli": [19, 29, 37, 38], "properti": [1, 2, 3, 4, 10, 12, 13], "propos": 23, "proprietari": 17, "protect": 2, "protectiondomain": 2, "protobuf": [2, 3], "protocol": [6, 7, 8, 12, 20], "provid": [2, 5, 6, 8, 11, 12, 13, 14, 15, 19, 20, 23, 30, 35, 37], "provis": [2, 6, 11, 12, 13, 14, 15, 23], "provision": [2, 3, 20, 21, 23], "provisionedthroughput": 6, "public": 12, "publicroutet": 20, "publish": [2, 31], "pull": [2, 15, 34, 38], "pullpolici": 15, "pure": 13, "purpos": [2, 3, 4, 14, 34], "push": 10, "put": [1, 10], "pvc": [2, 3, 24], "pwd": 34, "py": 13, "python": [13, 30], "qa": 31, "qo": 30, "qualifi": 2, "qualifiednamefmt": [2, 3], "qualiti": 31, "queri": [1, 2, 3], "queryabl": 3, "question": 18, "quick": 6, "quickli": 10, "quota": 30, "r": [6, 11], "rack": [8, 13, 15, 16, 17, 23, 27, 28, 29, 30], "rack_nam": 13, "rackcount": 2, "rackdc": [2, 13], "rackspec": 2, "rado": 2, "raft": 28, "raid": [11, 14], "raid0": [11, 14], "raidconfigur": 1, "random": 23, "rang": [1, 2, 3, 6, 19, 20, 21], "rate": [2, 13], "ratelimit": 2, "rather": [2, 31], "raw": [14, 34], "rbac": 14, "rbduser": 2, "rc": 31, "re": [8, 10, 18, 38], "reach": [8, 12, 17, 19, 29, 37], "reachabl": [2, 3, 12, 19], "read": [2, 10, 11, 13, 14, 15, 18], "readabl": [1, 2, 3, 20], "readcapacityunit": 6, "readi": [2, 8, 10, 13, 15, 17, 18, 20, 21, 26, 27, 29, 38], "readinessprob": 38, "readm": 2, "readonli": 2, "readymemb": 2, "readyz": 38, "real": [2, 19], "reason": [1, 2, 3, 7, 15], "rebas": 10, "reboot": 30, "receiv": 30, "recent": [1, 2, 3, 4, 10], "recipi": 2, "recogn": [1, 2, 3, 4], "recommend": [7, 13, 19, 23, 30, 31, 38], "reconcil": [2, 10, 19], "reconfigur": 37, "reconstruct": 2, "record": [2, 3, 8, 12, 19], "recov": 29, "recovervolumeexpansionfailur": [2, 3], "recreat": [27, 38], "recur": 17, "refer": [2, 3, 6, 7, 11, 13, 14, 15, 16, 18, 19, 20, 21, 23, 28, 31, 38], "referenc": [2, 3], "referencegr": [2, 3], "reflect": [2, 3], "refus": 29, "regard": [12, 18, 21, 23], "regex": [2, 3], "region": [14, 20, 21, 23], "regist": [2, 17, 18, 28], "registri": [2, 26], "regular": [1, 2, 3, 13, 17], "reject": [1, 2, 3, 4], "rel": [1, 2, 3], "relat": [1, 2, 3, 12, 16, 23, 34], "relationship": [1, 2, 3], "releas": [7, 16, 38], "release_nam": 38, "relev": 10, "reli": 2, "reliabl": 12, "rememb": [10, 13], "remot": [3, 6], "remov": [2, 10, 13, 15, 18, 23, 24, 26, 29, 34, 38], "render": 4, "reorder": 10, "rep": [2, 3], "repair": [14, 16, 17, 27, 28], "replac": [1, 2, 3, 8, 13, 16, 18, 19, 23, 25, 28, 34, 38], "replic": [2, 3, 13], "replica": [2, 29], "replicaset": 15, "replication_factor": 13, "replicationfactor": 17, "repo": [2, 10, 15, 18, 38], "report": [16, 35], "repositori": [2, 10, 13, 38], "repres": [1, 2, 3, 4, 13, 23], "represent": [1, 2, 3, 4], "request": [1, 4, 15, 18, 19, 23, 30, 34, 35], "requir": [1, 2, 3, 10, 11, 12, 13, 14, 20, 21, 23, 28, 30, 31, 33, 35, 37, 38], "requiredduringschedul": [1, 2, 3], "requiredduringschedulingignoredduringexecut": 23, "resembl": [13, 21], "reset": [2, 3], "resid": [12, 21], "resolv": [12, 17, 29], "resourc": [1, 4, 13, 17, 18, 19, 20, 21, 23, 24, 28, 30, 37, 38], "resourceclaim": [2, 3], "respect": [1, 2, 3, 14], "rest": [1, 2, 3, 4, 5, 13, 17, 34], "restart": [13, 15, 17, 18, 23, 27, 28, 29, 38], "restor": [2, 25, 29, 38], "restore_upgrade_strategi": 29, "restrict": [2, 3], "result": [2, 18], "resum": 2, "retainkei": 38, "retent": [2, 17], "retri": [2, 17, 29], "retriev": [3, 13, 21, 34], "return": [20, 21, 26], "revert": 1, "review": 34, "revis": [2, 19], "rewrit": 15, "rf": 2, "rfc3339": 2, "rhwqx": 15, "ring": [2, 23], "risk": [4, 10], "rm": [7, 34], "ro": [7, 34], "role": [6, 11, 13, 14, 18, 23], "roll": [2, 13, 15, 16, 18, 23, 28, 29, 38], "rollout": [2, 3, 13, 18, 19, 38], "root": [2, 7, 29], "rotat": 2, "rout": [12, 19], "routabl": 12, "row": 2, "rule": [1, 2, 3, 18, 20, 37], "run": [1, 2, 3, 4, 6, 7, 10, 11, 14, 15, 16, 17, 18, 19, 23, 27, 28, 29, 30, 38], "runtim": 34, "s3": [2, 17, 28], "sai": 10, "said": 34, "salted_hash": 6, "same": [1, 2, 3, 8, 11, 12, 13, 14, 15, 17, 18, 23, 29, 30, 31], "satisfi": [1, 2, 3], "save": [10, 13, 18, 20, 23, 29, 34, 38], "sc": [6, 7, 8], "scale": [16, 29, 34], "scenario": 12, "schedul": [1, 2, 3], "schema": [1, 2, 3, 4, 6, 29], "scheme": [8, 12, 38], "scope": [1, 2, 3, 4], "scrape": [3, 15], "scratch": [31, 38], "script": [2, 6, 13, 14, 30], "sctool": [17, 28], "sctp": 21, "scyladb": 23, "scylla": [5, 6, 7, 8, 12, 18, 19, 20, 21, 24, 26, 28, 30, 31, 34, 35, 37], "scylla_manag": 17, "scylla_vers": 13, "scyllaagentconfig": 2, "scyllaarg": 2, "scyllaclus": 23, "scyllaclust": [0, 5, 6, 8, 15, 16, 17, 18, 19, 23, 24, 28, 29, 30, 34, 38], "scyllacluster_nam": 6, "scyllaclusterlist": 2, "scyllaconfig": 2, "scylladb": [5, 6, 7, 10, 12, 13, 15, 16, 18, 19, 28, 30, 31, 34, 35, 38], "scylladb_config": 7, "scylladb_discovery_ep": 7, "scylladb_ep": 6, "scylladbmonitor": [0, 5], "scylladbmonitoringlist": 3, "scylladbutilsimag": 4, "scyllaimag": 15, "scyllaoperatorconfig": [0, 5], "scyllaoperatorconfiglist": 4, "scyllautilsimag": 4, "sda": 2, "sda1": 2, "sdd": [11, 14], "sdn": [2, 37], "search": 15, "sec": 13, "second": [2, 13], "secondari": 21, "secret": [3, 7, 13, 15, 19, 23, 34], "secretfil": 2, "secretnam": 2, "section": [6, 11, 12, 13, 14, 20, 21, 34, 35], "secur": [2, 7, 12, 13], "sed": [6, 14, 18, 38], "see": [2, 3, 6, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 28, 30], "seed": 2, "segmentsperrepair": 17, "select": [1, 2, 3, 6, 8, 10, 12, 13, 23], "selector": [1, 12, 13, 38], "self": [3, 13, 15], "selinux": 34, "semant": [2, 29], "send": [20, 34], "sensit": [2, 34], "sent": 2, "sep": 17, "separ": [2, 10, 11, 12, 14, 18, 20, 30], "sequenti": 18, "serivceaccount": 2, "serv": [1, 2, 3, 4, 6, 7, 12, 13, 15, 19, 20, 21, 23, 37], "server": [1, 2, 3, 4, 11, 13, 14, 17, 19, 23, 38], "servic": [2, 3, 6, 7, 8, 13, 15, 18, 19, 21, 26, 27, 37], "serviceaccount": 34, "servicemonitor": 15, "servingcertsecretnam": 3, "session": [2, 13], "set": [1, 2, 3, 4, 6, 7, 8, 10, 12, 15, 16, 17, 19, 23, 28, 29, 30, 33, 34], "setup": [1, 2, 3, 12, 13, 19, 20, 21, 23, 37], "sever": [8, 11, 12, 20, 21, 37], "sh": [10, 11, 14], "sha": 31, "shard": 2, "shardfailedsegmentsmax": 17, "shardingignoremsbbit": 17, "shardparallelmax": 17, "share": [2, 20, 21, 30], "sharenam": 2, "sheer": 23, "shell": [7, 13, 18], "ship": 31, "short": [10, 18], "shortli": 17, "should": [1, 2, 3, 4, 7, 10, 12, 13, 15, 17, 18, 19, 20, 21, 23, 27, 29, 30], "shouldn": [2, 18, 27], "show": [6, 7, 10, 13, 29, 31], "side": [11, 14, 19, 23, 38], "sidecar": [10, 13, 15, 18, 38], "sig": [1, 2, 3, 4], "sign": [2, 3, 13, 15, 18], "signer": 2, "signernam": 2, "similar": [19, 20, 23, 34], "similarli": [2, 15, 34], "simpl": [10, 12, 13, 15, 17, 18, 26, 27, 29, 38], "simpli": [10, 13, 15, 18, 26, 29], "simplic": [20, 21, 23], "simplifi": 7, "simultan": 2, "sinc": [12, 23], "sing": 31, "singl": [1, 2, 3, 10, 13, 15, 17, 23], "singularnam": [1, 2, 3, 4], "situat": 31, "size": [1, 2, 14, 21, 27, 28], "sizelimit": 2, "skip": [19, 34], "slack": 18, "slight": 34, "slightli": [2, 19], "sm_20240105115931utc": 28, "small": [2, 13, 17], "smalltablethreshold": 2, "snapshot": [2, 3, 28, 29], "snapshot_tag": 28, "snapshotparallel": 2, "sni": 19, "so": [1, 2, 3, 7, 8, 10, 12, 13, 14, 15, 19, 20, 21, 23, 30, 38], "so_data_20201228135002utc": 29, "so_system_20201228135002utc": 29, "softwar": 17, "solv": [8, 18, 38], "some": [1, 2, 3, 8, 10, 12, 13, 15, 17, 27, 31, 34, 37], "someth": [13, 17, 26, 34], "sometim": [10, 13, 34], "somewher": 18, "songtitl": 6, "sourc": [3, 12, 15, 16, 17, 20, 21, 28, 38], "sourcetyp": 2, "space": 30, "spawn": 17, "spbm": 2, "spec": [6, 7, 8, 12, 13, 15, 17, 18, 19, 23, 28, 29, 30, 38], "special": 30, "specif": [7, 8, 12, 13, 15, 20, 21, 23, 30, 37, 38], "specifi": [1, 2, 3, 12, 13, 15, 20, 23], "speed": 10, "spent": 2, "spin": [15, 17], "spot": 17, "spread": 30, "squash": 10, "src": 10, "ssd": [14, 21], "ssh": [11, 17, 33], "ssl": [2, 7, 17, 19], "ssl_transport_factori": 7, "sslenabl": 2, "ssltimeout": 17, "sstabl": 29, "st": [18, 38], "stabl": [8, 13, 15, 38], "stack": [11, 14, 16, 19], "stackdriv": 14, "stage": [18, 29], "stai": 26, "stand": 2, "standard": [2, 5, 6, 14, 21, 37], "start": [2, 8, 10, 11, 13, 17, 20, 28, 29, 30], "startdat": 2, "startup": [2, 23], "stash": 10, "state": [1, 2, 3, 4, 13, 15, 17, 19, 23, 27, 29, 34], "statefulset": [13, 15, 18, 19, 29, 38], "static": [1, 2, 3, 8, 11, 14, 18, 30], "statu": [8, 12, 13, 15, 16, 17, 18, 19, 20, 23, 27, 28, 29, 38], "stderr": 17, "stdout": 13, "step": [11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 28, 34, 38], "still": [2, 3, 34], "stop": 2, "storag": [1, 4, 11, 13, 14, 15, 19, 23, 28, 30, 38], "storageclass": [2, 3, 23], "storageclass_xf": 14, "storageclassnam": [2, 3, 19, 23], "storagemod": 2, "storagepolicyid": 2, "storagepolicynam": 2, "storagepool": 2, "store": [2, 3, 7, 27, 28], "strateg": [1, 2, 3], "stream": 27, "stress": [11, 14], "string": [1, 2, 3, 4], "stringdata": 23, "strip": 2, "strongli": 7, "struct": [2, 3], "stuck": 29, "style": 5, "subdirectori": 2, "subject": [10, 30], "submit": [1, 2, 3, 4], "subnet": [12, 20], "subnetwork": 21, "subpath": 2, "subpathexpr": 2, "subset": [1, 2, 3, 8, 23, 34], "succe": [2, 3, 26], "success": 28, "successfulli": [13, 19], "sudo": 33, "suffici": 12, "suggest": 28, "suit": [31, 37], "sum": [1, 2, 3], "summari": 10, "superset": 12, "suppli": [2, 34], "support": [1, 2, 3, 10, 12, 13, 15, 16, 17, 23, 28, 29, 34, 37, 38], "suppos": 30, "sure": [2, 6, 8, 10, 13, 14, 15, 17, 18, 23, 27, 28, 31, 34, 37, 38], "suspect": 31, "svc": [8, 13, 17, 18, 19, 26, 27], "switch": 30, "symlink": [1, 2, 38], "sync": [23, 27], "synchron": 17, "syntax": 2, "sysctl": [2, 13, 23], "system": [1, 2, 3, 14, 18, 29, 38], "system_auth": [6, 13, 17], "system_distribut": 17, "system_schema": [28, 29], "system_trac": 17, "systemconfig": 14, "systemsnapshottag": 2, "t": [1, 2, 3, 6, 10, 11, 12, 13, 14, 15, 17, 18, 27, 28, 30, 31, 34, 37, 38], "tab": 10, "tabl": [2, 6, 31], "table_prefix_": 2, "tabledescript": 6, "tablenam": 6, "tag": [2, 15, 18, 28, 29, 31, 38], "tailor": [20, 21], "taint": [1, 2, 3, 11, 14], "take": [2, 11, 13, 14, 27, 28, 29, 30, 34], "taken": [1, 2, 3, 12, 28, 29], "talk": [8, 12, 17, 30, 34], "target": [1, 2, 17, 20, 28, 30, 38], "targetport": 2, "targetwwn": 2, "task": [2, 11, 13, 16, 23, 28], "tcp": [2, 8, 12, 15, 18, 21, 27], "td05v9evu3b8": 20, "team": 10, "tell": 10, "templat": [2, 3, 6, 13, 18, 19, 23, 38], "temporari": 2, "temporarili": 10, "tenant": 2, "term": [1, 2, 3], "termin": [2, 6], "test": [4, 10, 17, 19, 31, 37], "text": 7, "than": [2, 3, 10, 12, 13, 18, 27, 34], "thei": [2, 3, 12, 13, 17, 23, 34], "them": [1, 2, 3, 7, 8, 10, 11, 12, 13, 14, 15, 18, 19, 20, 23, 30, 34, 38], "thi": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 30, 31, 33, 34, 37, 38], "thickprovis": 2, "thing": [2, 13], "thinprovis": 2, "third": [2, 3, 19], "those": [1, 2, 3, 11, 13, 14, 30], "thread": 13, "three": [2, 3, 10, 15, 17], "threshold": 2, "throttl": [13, 30], "through": [1, 2, 3, 8, 12, 13, 15, 20, 21, 23], "throughout": [20, 21, 23], "throughput": [6, 13], "ti": [2, 17, 27, 28], "tib": 2, "tier": 11, "tighter": 2, "time": [1, 2, 3, 6, 8, 10, 15, 17, 18, 27, 28, 31], "timeout": [14, 15, 17, 18, 19], "timezon": 2, "tip": 2, "tl": [2, 7, 19], "tlscafil": 17, "tlscertfil": 17, "tlskeyfil": 17, "tmp": 13, "tmpdir": 38, "todo": 2, "togeth": [2, 11, 14], "token": [2, 6, 23, 27, 34], "tokenawar": 17, "toler": [11, 23], "tolerationsecond": [1, 2, 3], "too": 2, "tool": [3, 4, 10, 11, 19, 20, 21, 23, 34, 35], "top": 10, "topic": 16, "topologi": [2, 23], "topologykei": [1, 2, 3, 23], "topologyselectorterm": [1, 2, 3], "total": [2, 13], "tovers": 2, "trace": 29, "track": [2, 10, 13, 17], "traffic": [2, 12, 20, 21, 37], "transit": [1, 2, 3], "transport": 2, "treat": [1, 2, 3], "tree": 2, "tri": [11, 14], "trick": 11, "trigger": 31, "tripl": [1, 2, 3], "troubleshoot": 32, "true": [1, 2, 3, 4, 7, 8, 11, 13, 15, 17, 19, 23, 28, 38], "trustbundl": 2, "try": [1, 2, 3, 30, 34], "tune": [1, 11, 14, 16, 31], "tunedcontain": 1, "tunednod": 1, "turn": [1, 6, 26, 29, 38], "tutori": 17, "tweak": [12, 13], "two": [2, 3, 10, 12, 15, 17, 18, 20, 21, 23, 28, 29, 30, 38], "type": [8, 11, 14, 15, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31], "typic": 2, "u": [7, 10, 11, 13, 14, 15, 17, 18, 20, 21, 23, 26, 27, 28, 29, 30, 35], "ubuntu": 31, "ubuntu_containerd": [14, 21], "udp": 21, "ui": 3, "uid": [2, 18], "un": [23, 27], "unbound": [2, 3], "unchang": [2, 3], "undefin": 2, "under": [1, 2, 15, 17, 26, 29], "underli": [2, 3, 29, 30], "understand": [10, 18, 35], "understood": 23, "undesir": 23, "undo": 30, "unencrypt": 7, "unfortun": 37, "unifi": 2, "uninstal": 15, "union": [1, 2, 3], "uniqu": [2, 13, 23], "unit": [2, 10], "univers": 16, "unknown": [1, 2, 3], "unless": [2, 7, 19, 34], "unlist": 2, "unmodifi": 8, "unnecessari": [7, 10], "unreach": 23, "unrecogn": [1, 2, 3, 4], "unrel": [2, 23], "unschedul": [17, 24], "unset": 2, "unspecifi": [2, 3], "unstructur": 3, "unsupport": [1, 4], "unsupportedbashtoolsimageoverrid": 4, "unsupportedgrafanaimageoverrid": 4, "unsupportedopt": 1, "unsupportedprometheusversionoverrid": 4, "untar": 38, "untardir": 38, "until": [2, 3, 13, 15, 18, 28, 29, 38], "unwind": 10, "up": [1, 2, 6, 7, 8, 10, 12, 15, 16, 18, 19, 23, 27, 29, 30, 38], "updat": [1, 2, 3, 4, 8, 13, 15, 17, 19, 21, 38], "upgrad": [14, 15, 16, 18, 25, 31], "upgrade_image_in_pod_spec": 29, "upgradestrategi": 29, "upload": [2, 10], "uploadparallel": 2, "upon": [1, 2, 3, 12, 20, 21], "upsteam": [13, 15], "upstream": 2, "uri": 2, "url": [2, 15], "us": [1, 2, 3, 4, 5, 8, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 27, 28, 29, 30, 31, 34, 37, 38], "usag": [2, 13], "user": [2, 3, 6, 7, 10, 13, 14, 16, 17, 18, 19, 26, 28, 29, 30, 34, 37, 38], "user_nam": 34, "usercert": 7, "usercertfil": 17, "userguid": 11, "userkei": 7, "userkeyfil": 17, "usernam": [7, 13, 19], "usual": [8, 11, 12, 14, 19, 31], "utc": [17, 28], "utf": 2, "util": [4, 23], "uuid": [2, 18], "v": [7, 10, 34], "v1": [0, 5, 7, 12, 15, 17, 19, 23, 28, 30, 31], "v1alpha1": [0, 5, 18, 19, 30, 38], "v1alpha5": 20, "v2": 10, "v3": 10, "v4": 7, "valid": [1, 2, 3, 7, 15, 17, 19, 29, 38], "validate_upgrad": 29, "validatingwebhookconfigur": 38, "validmastervers": 14, "valu": [1, 2, 3, 4, 12, 13, 14, 15, 18, 20, 21, 23, 29], "var": [2, 17], "var_nam": 2, "variabl": [2, 6, 7, 10, 23, 34], "variou": [12, 13], "ve": [10, 28], "vendor": 2, "verb": 18, "veri": [10, 15, 18, 34, 38], "verifi": [10, 13, 23, 27], "version": [1, 2, 3, 4, 12, 13, 14, 15, 16, 17, 19, 23, 25, 28, 30, 31, 38], "via": [12, 13, 15], "view": 34, "violat": [1, 2, 3], "virtual": [8, 21], "visibl": 27, "visit": [8, 35], "vjm4m": 15, "vmdk": 2, "volum": [3, 20, 21, 23, 34], "volumeattributesclass": [2, 3], "volumeattributesclassnam": [2, 3], "volumeclaimtempl": 19, "volumeid": 2, "volumemod": [2, 3], "volumenam": [2, 3], "volumenamespac": 2, "volumepath": 2, "volumesnapshot": [2, 3], "vsphere": 2, "vx": 31, "w": 19, "w25jw": 17, "wa": [1, 2, 3, 10, 13, 15, 17, 18, 20, 27, 28, 38], "wai": [2, 8, 13, 14, 17, 18, 19, 34], "wait": [2, 8, 10, 13, 15, 18, 23, 28, 29, 38], "walk": [13, 20, 21, 23], "want": [2, 10, 11, 12, 13, 14, 15, 17, 20, 21, 28, 38], "wasn": 17, "watch": 17, "we": [1, 2, 6, 10, 11, 12, 13, 14, 15, 17, 18, 19, 27, 28, 30, 31, 34, 37, 38], "web": [3, 14], "webhook": [13, 36, 38], "webinterfac": 19, "websit": 18, "week": 31, "weekli": [2, 17], "weight": [1, 2, 3], "weightedpodaffinityterm": [1, 2, 3], "welcom": 18, "well": [2, 3, 10, 11, 13, 14, 17, 18, 19], "were": [3, 15], "west1": [14, 21], "wfjbw": 15, "what": [2, 3, 10, 12, 13, 15, 17, 18, 19, 29, 34, 35], "when": [1, 2, 3, 8, 10, 11, 12, 13, 14, 17, 18, 19, 21, 23, 25, 26, 28, 29, 30, 31, 34, 35, 37], "whenev": 10, "where": [1, 2, 3, 6, 10, 11, 14, 18, 28, 29, 37], "whether": [2, 3, 12, 15, 30, 34], "which": [1, 2, 3, 4, 8, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24, 27, 28, 29, 30, 38], "whichev": 13, "while": [2, 3, 6, 13, 31], "who": 2, "whole": [18, 29], "whose": [1, 2, 3, 13], "why": 10, "wide": [2, 17], "wildcard": [1, 2, 3, 19], "window": 10, "within": [2, 12, 30, 34], "without": [3, 6, 10, 12, 14, 15, 19, 34], "won": [1, 11, 12, 30, 34], "word": [10, 23], "work": [2, 5, 7, 10, 11, 14, 15, 18, 20, 21, 23, 30, 31], "workaround": 37, "workdir": 34, "workload": [20, 21, 30], "workspac": 34, "world": 2, "worldwid": 2, "worth": 10, "would": [2, 10, 13, 17, 21, 27], "wouldn": 34, "write": [2, 6, 10, 13], "writecapacityunit": 6, "writeisol": [2, 13], "written": 2, "wrong": 34, "wwid": 2, "wwn": 2, "x": [1, 2, 3, 28, 31], "xarg": 38, "xf": [2, 11, 14, 19, 23], "xqhkj0our8e6imdepm62hg": 17, "y": 31, "yaml": [2, 7, 11, 13, 14, 15, 17, 18, 19, 20, 23, 34, 38], "yanniszark": 14, "you": [2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 34, 37, 38], "your": [2, 4, 6, 7, 8, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 27, 28, 29, 30, 33, 34, 37, 38], "your_password": 7, "your_usernam": 7, "yourself": 10, "yq": 34, "z": [7, 11, 14, 31, 34], "zero": [1, 2, 3, 13, 29], "zone": [1, 14, 16, 23]}, "titles": ["scylla.scylladb.com", "NodeConfig (scylla.scylladb.com/v1alpha1)", "ScyllaCluster (scylla.scylladb.com/v1)", "ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)", "ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)", "API Reference", "Using Alternator (DynamoDB)", "Using CQL", "Discovering ScyllaDB Nodes", "Using ScyllaDB APIs", "Contributing to Scylla Operator", "Deploying Scylla on EKS", "Exposing ScyllaCluster", "Deploying Scylla on a Kubernetes Cluster", "Deploying Scylla on GKE", "Deploying Scylla stack using Helm Charts", "Scylla Operator Documentation", "Deploying Scylla Manager on a Kubernetes Cluster", "Version migrations", "Monitoring", "Build multiple Amazon EKS clusters with inter-Kubernetes networking", "Build multiple GKE clusters with inter-Kubernetes networking", "Deploying multi-datacenter ScyllaDB clusters in Kubernetes", "Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters", "Automatic cleanup and replacement in case when k8s node is lost", "Node operations using Scylla Operator", "Maintenance mode", "Replacing a Scylla node", "Restore from backup", "Upgrading version of Scylla", "Performance tuning", "Releases", "Support", "Known issues", "Gathering data with must-gather", "Support overview", "Troubleshooting", "Troubleshooting installation issues", "Upgrade of Scylla Operator"], "titleterms": {"0": [18, 38], "1": 38, "2": 38, "3": [18, 38], "In": 12, "about": 35, "access": [11, 13, 14, 19], "add": 10, "admin": 14, "affin": 1, "agent": 13, "agentresourc": 2, "agentvolumemount": 2, "aka": 7, "altern": [2, 6, 13], "amazon": 20, "an": [11, 19], "annot": [2, 3], "api": [5, 9], "architectur": 17, "auth": 13, "authent": [3, 7], "author": 7, "autom": 31, "automat": 24, "avail": 31, "aw": 6, "awselasticblockstor": 2, "azuredisk": 2, "azurefil": 2, "backport": 31, "backup": [2, 28], "behind": 8, "benchmark": 13, "boot": 33, "boundari": 8, "branch": 10, "broadcast": 12, "broadcastopt": 2, "build": [10, 20, 21], "case": 24, "cassandra": 13, "cd": 31, "cephf": 2, "cert": [13, 15], "chart": 15, "ci": 31, "cinder": 2, "claim": [2, 3], "clean": [13, 17], "cleanup": [15, 24], "cli": 6, "client": [2, 12], "clone": 10, "cluster": [8, 11, 12, 13, 14, 17, 20, 21, 22, 23, 34, 35, 37], "clusterip": 12, "clustertrustbundl": 2, "cni": 37, "collect": 34, "com": [0, 1, 2, 3, 4], "commit": 10, "compon": 3, "condit": [1, 2, 3], "configmap": 2, "configur": [11, 13, 14, 20, 21], "connect": 19, "contain": 13, "context": 23, "contribut": 10, "control": 15, "cql": [2, 7], "cqlsh": 7, "creat": [10, 11, 13, 14, 20, 21], "credenti": 6, "csi": 2, "custom": [15, 37], "data": [34, 35], "databas": [11, 13, 14], "datacent": [2, 22, 23], "datasourc": [2, 3], "datasourceref": [2, 3], "dead": 27, "delet": [11, 14], "depend": 11, "deploi": [11, 13, 14, 15, 17, 19, 20, 21, 22, 23], "deploy": 12, "descript": [1, 2, 3, 4], "develop": 10, "devic": 1, "discov": 8, "discoveri": 8, "docker": 34, "document": 16, "doe": 33, "domain": 19, "download": 13, "downwardapi": 2, "dr": [11, 14, 15], "dynamodb": 6, "ek": [11, 20, 37], "embed": 7, "emptydir": 2, "endpoint": 8, "endpointsselector": 3, "engin": 14, "environ": [11, 14], "ephemer": 2, "everi": 34, "exampl": 12, "expos": [8, 12], "exposeopt": [2, 3], "extern": 23, "externalip": 19, "fc": 2, "fieldref": 2, "filesystem": 1, "firewal": 21, "first": [20, 21, 23], "flexvolum": 2, "flocker": 2, "fork": 10, "from": 28, "gather": [34, 35], "gcepersistentdisk": 2, "gener": 31, "genericupgrad": 2, "get": 35, "gitrepo": 2, "gke": [14, 21, 37], "glusterf": 2, "googl": 14, "grafana": [3, 19], "group": [5, 20], "haproxi": 19, "headless": 12, "helm": [15, 38], "histori": 10, "hostpath": 2, "i": 24, "imag": 15, "imagepullsecret": 2, "ingress": [2, 3, 19], "initi": [10, 13], "instal": [11, 15, 37], "inter": [20, 21], "interconnect": 23, "internet": 12, "iscsi": 2, "issu": [33, 35, 37], "item": 2, "k8": 24, "kernel": 13, "kind": 5, "known": 33, "kubectl": 38, "kubernet": [8, 13, 14, 17, 20, 21, 22, 23, 30, 31], "label": [2, 3], "labelselector": [1, 2, 3], "limit": [2, 3, 34], "loadbalanc": 12, "local": [11, 13, 14], "localdisksetup": 1, "localhost": 7, "loopdevic": 1, "lost": 24, "mainten": 26, "manag": [13, 15, 17, 19, 23, 33], "matchexpress": [1, 2, 3], "matchfield": [1, 2, 3], "matchlabel": [1, 2, 3], "matrix": 31, "messag": 10, "metadata": [1, 2, 3, 4], "migrat": 18, "minikub": 33, "mode": 26, "monitor": [13, 15, 19], "mount": 1, "multi": [12, 22, 23], "multipl": [20, 21, 23], "must": 34, "namespac": 34, "namespaceselector": [1, 2, 3], "network": [2, 20, 21, 23], "nf": 2, "node": [2, 8, 11, 12, 14, 20, 21, 23, 24, 25, 27, 30], "nodeaffin": [1, 2, 3], "nodeconfig": 1, "nodeport": 19, "nodepublishsecretref": 2, "nodeselector": 1, "nodeselectorterm": [1, 2, 3], "nodeservic": 2, "nodestatus": 1, "onli": 12, "oper": [10, 11, 13, 14, 15, 16, 19, 20, 21, 25, 38], "operatormanagedopt": 2, "option": [2, 12], "out": 19, "overview": 35, "paramet": 13, "parti": 11, "particular": 34, "peer": 20, "perform": 30, "persistentvolumeclaim": 2, "photonpersistentdisk": 2, "placement": [1, 2, 3], "platform": 31, "podaffin": [1, 2, 3], "podaffinityterm": [1, 2, 3], "podantiaffin": [1, 2, 3], "podip": [2, 12, 23], "podman": 34, "podmetadata": 2, "polici": 31, "portworxvolum": 2, "prefac": 8, "prefer": [1, 2, 3], "preferredduringschedulingignoredduringexecut": [1, 2, 3], "prepar": [20, 21], "prerequisit": [10, 11, 13, 14, 15, 17, 19, 20, 21, 23, 34], "privat": 37, "procedur": 18, "project": [2, 10], "prometheu": [3, 19], "promot": 31, "provision": [11, 14], "pull": 10, "queri": 33, "quobyt": 2, "rack": 2, "raid": 1, "raid0": 1, "rbd": 2, "readinessg": 2, "refer": 5, "registr": 17, "releas": 31, "remot": [7, 10], "repair": 2, "replac": [24, 27], "repositori": 15, "request": [2, 3, 10], "requir": 19, "requiredduringschedulingignoredduringexecut": [1, 2, 3], "resolv": 19, "resourc": [2, 3, 15, 34], "resourcefieldref": 2, "restor": 28, "result": 15, "retriev": 23, "roll": 19, "rout": 20, "rule": 21, "run": [13, 20, 21, 34], "scale": 13, "scaleio": 2, "schedul": [17, 31], "schema": 28, "script": 11, "scylla": [0, 1, 2, 3, 4, 10, 11, 13, 14, 15, 16, 17, 23, 25, 27, 29, 33, 38], "scyllaclust": [2, 12, 13], "scylladb": [0, 1, 2, 3, 4, 8, 9, 11, 14, 20, 21, 22, 23], "scylladbmonitor": [3, 19, 23], "scyllaoperatorconfig": 4, "second": [20, 21, 23], "secret": 2, "secretref": 2, "secur": 20, "seed": 23, "selector": [2, 3], "servic": 12, "serviceaccounttoken": 2, "serviceclusterip": 12, "serviceloadbalanceringress": 12, "servingcertif": 2, "set": [11, 13, 14], "setup": [10, 11, 14], "sourc": 2, "spec": [1, 2, 3, 4], "specif": [1, 2, 3, 4], "stack": 15, "statu": [1, 2, 3, 4], "storag": [2, 3], "storageo": 2, "stress": 13, "submit": 10, "subnet": 21, "support": [31, 32, 35], "tabl": [20, 28], "task": 17, "templat": 12, "third": 11, "through": 19, "tl": [11, 14, 15], "token": 13, "toler": [1, 2, 3], "troubleshoot": [13, 17, 35, 36, 37], "truncat": 33, "tune": 30, "type": [1, 2, 3, 4, 12], "unresolv": 19, "up": [11, 13, 14, 17, 33], "updat": [10, 20], "upgrad": [2, 29, 38], "upstream": 10, "us": [6, 7, 9, 15, 19, 23, 25], "usermanagedopt": 2, "v0": [18, 38], "v1": [2, 18, 38], "v1alpha1": [1, 3, 4], "variabl": [11, 14], "variant": 19, "version": [18, 29], "via": 38, "volum": [2, 11, 14], "volumeattribut": 2, "volumeclaimtempl": [2, 3], "volumemount": 2, "vpc": [12, 20, 21], "vspherevolum": 2, "wait": 19, "walkthrough": [11, 14], "webhook": [15, 37], "webinterfac": 3, "when": 24, "work": 33, "your": [10, 35], "yourself": 14}}) \ No newline at end of file diff --git a/stable/sitemap.xml b/stable/sitemap.xml new file mode 100644 index 00000000000..7b9ddabfaa8 --- /dev/null +++ b/stable/sitemap.xml @@ -0,0 +1,2 @@ + +https://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/nodeconfigs.htmlhttps://operator.docs.scylladb.com/stable/exposing.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scyllaclusters.htmlhttps://operator.docs.scylladb.com/stable/generic.htmlhttps://operator.docs.scylladb.com/stable/multidc/multidc.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/automatic-cleanup.htmlhttps://operator.docs.scylladb.com/stable/gke.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/index.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.htmlhttps://operator.docs.scylladb.com/stable/helm.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/maintenance-mode.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.htmlhttps://operator.docs.scylladb.com/stable/index.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/replace-node.htmlhttps://operator.docs.scylladb.com/stable/api-reference/index.htmlhttps://operator.docs.scylladb.com/stable/manager.htmlhttps://operator.docs.scylladb.com/stable/clients/alternator.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/restore.htmlhttps://operator.docs.scylladb.com/stable/clients/cql.htmlhttps://operator.docs.scylladb.com/stable/migration.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/scylla-upgrade.htmlhttps://operator.docs.scylladb.com/stable/monitoring.htmlhttps://operator.docs.scylladb.com/stable/clients/discovery.htmlhttps://operator.docs.scylladb.com/stable/performance.htmlhttps://operator.docs.scylladb.com/stable/clients/index.htmlhttps://operator.docs.scylladb.com/stable/multidc/eks.htmlhttps://operator.docs.scylladb.com/stable/releases.htmlhttps://operator.docs.scylladb.com/stable/multidc/gke.htmlhttps://operator.docs.scylladb.com/stable/support/index.htmlhttps://operator.docs.scylladb.com/stable/contributing.htmlhttps://operator.docs.scylladb.com/stable/multidc/index.htmlhttps://operator.docs.scylladb.com/stable/eks.htmlhttps://operator.docs.scylladb.com/stable/support/known-issues.htmlhttps://operator.docs.scylladb.com/stable/support/must-gather.htmlhttps://operator.docs.scylladb.com/stable/support/overview.htmlhttps://operator.docs.scylladb.com/stable/support/troubleshooting/index.htmlhttps://operator.docs.scylladb.com/stable/support/troubleshooting/installation.htmlhttps://operator.docs.scylladb.com/stable/upgrade.htmlhttps://operator.docs.scylladb.com/stable/genindex.htmlhttps://operator.docs.scylladb.com/stable/404.htmlhttps://operator.docs.scylladb.com/stable/search.html \ No newline at end of file diff --git a/stable/support/index.html b/stable/support/index.html new file mode 100644 index 00000000000..552d1fb4e4b --- /dev/null +++ b/stable/support/index.html @@ -0,0 +1,596 @@ + + + + + + + + + + + + + Support | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Support

          + +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/support/known-issues.html b/stable/support/known-issues.html new file mode 100644 index 00000000000..1811db7c21e --- /dev/null +++ b/stable/support/known-issues.html @@ -0,0 +1,619 @@ + + + + + + + + + + + + + Known issues | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Known issues

          +
          +

          Scylla Manager does not boot up on Minikube

          +

          If your Scylla Manager is failing to apply 8th migration (008_*), then apply fix for TRUNCATE queries.

          +
          +
          +

          TRUNCATE queries does not work on Minikube

          +

          The TRUNCATE queries requires hairpinning to be enabled. On minikube this is disabled by default.

          +

          To fix it execute the following command:

          +
          minikube ssh sudo ip link set docker0 promisc on
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/support/must-gather.html b/stable/support/must-gather.html new file mode 100644 index 00000000000..7c807fa1342 --- /dev/null +++ b/stable/support/must-gather.html @@ -0,0 +1,706 @@ + + + + + + + + + + + + + Gathering data with must-gather | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Gathering data with must-gather

          +

          must-gather is an embedded tool in Scylla Operator that helps collecting all the necessary info when something goes wrong.

          +

          The tool talks to the Kubernetes API, retrieves a predefined set of resources and saves them into a folder in your current directory. +By default, all collected Secrets are censored to avoid sending sensitive data. +That said, you can always review the archive before you attach it to an issue or your support request.

          +

          Given it needs to talk to the Kubernetes API, at the very least, you need to supply the --kubeconfig flag with a path to the kubeconfig file for your Kubernetes cluster, or set the KUBECONFIG environment variable.

          +
          +

          Running must-gather

          +

          There is more than one way to run must-gather. +Here are some examples of how you can run the tool.

          +
          +

          Prerequisites

          +

          All examples assume you have exported KUBECONFIG environment variable that points to a kubeconfig file on your machine. +If not, you can run this command to export the common default location. +Please make sure such a file exists.

          +
          export KUBECONFIG=~/.kube/config
          +ls -l "${KUBECONFIG}"
          +
          +
          +
          +

          Note

          +

          There can be slight deviations in the arguments for your container tool, depending on the container runtime, whether you use SELinux or similar factors.

          +

          As an example, the need for the Z option on volume mounts depends on whether you use SELinux and what context is applied on your file or directory. +If you get an error mentioning Error: lsetxattr <path>: operation not supported, try it without the Z option.

          +
          +

          Let’s also check whether your kubeconfig uses external authentication plugin. +You can determine that by running

          +
          kubectl config view --minify
          +
          +
          +

          and checking whether it uses an external exec plugin by looking for this pattern (containing the exec key)

          +
          users:
          +- name: <user_name>
          +  user:
          +    exec:
          +
          +
          +

          If not, you can skip the rest of this section.

          +

          In case your kubeconfig depends on external binaries, you have to take a few extra steps because the external binary won’t be available within our container to authenticate the requests.

          +

          Similarly to how Pods are run within Kubernetes, we’ll create a dedicated ServiceAccount for must-gather and use it to run the tool. +(When you are done using it, feel free to remove the Kubernetes resources created for that purpose.)

          +
          kubectl create namespace must-gather
          +kubectl -n must-gather create serviceaccount must-gather
          +kubectl create clusterrolebinding must-gather --clusterrole=cluster-admin --serviceaccount=must-gather:must-gather
          +export MUST_GATHER_TOKEN
          +MUST_GATHER_TOKEN=$( kubectl -n must-gather create token must-gather --duration=1h )
          +kubeconfig=$( mktemp )
          +# Create a copy of the existing kubeconfig and
          +# replace user authentication using yq, or by adjusting the fields manually.
          +kubectl config view --minify --raw -o yaml | yq -e '.users[0].user = {"token": env(MUST_GATHER_TOKEN)}' > "${kubeconfig}"
          +KUBECONFIG="${kubeconfig}"
          +
          +
          +
          +

          Note

          +

          If you don’t have yq installed, you can get it at https://github.com/mikefarah/yq/#install or you can replace the user authentication settings manually.

          +
          +
          +
          +

          Podman

          +
          podman run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro,Z" -v="$( pwd ):/workspace:Z" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig
          +
          +
          +
          +
          +

          Docker

          +
          docker run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro" -v="$( pwd ):/workspace" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig
          +
          +
          +
          +
          +
          +

          Limiting must-gather to a particular namespace

          +

          If you are running a large Kubernetes cluster with many ScyllaClusters, it may be useful to limit the collection of ScyllaClusters to a particular namespace. +Unless you hit scale issues, we advise not to use this mode, as sometimes the ScyllaClusters affect other collected resources, like the manager or they form a multi-datacenter.

          +
          scylla-operator must-gather --namespace="<namespace_with_broken_scyllacluster>"
          +
          +
          +
          +

          Note

          +

          The --namespace flag affects only ScyllaClusters. +Other resources related to the operator installation or cluster state will still be collected from other namespaces.

          +
          +
          +

          Collecting every resource in the cluster

          +

          By default, must-gather collects only a predefined subset of resources. +You can also request collecting every resource in the Kubernetes API, if the default set wouldn’t be enough to debug an issue.

          +
          scylla-operator must-gather --all-resources
          +
          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/support/overview.html b/stable/support/overview.html new file mode 100644 index 00000000000..d6427c756fa --- /dev/null +++ b/stable/support/overview.html @@ -0,0 +1,621 @@ + + + + + + + + + + + + + Support overview | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Support overview

          +
          +

          Get support

          +

          ScyllaDB provides administrators with paid support, including Scylla Operator.

          +
          +
          +

          Troubleshooting issues

          +

          To learn more about what to do when issues arise, visit our dedicated troubleshooting section.

          +
          +
          +

          Gather data about your cluster

          +

          Scylla Operator contains an embedded tool called must-gather that can collect the required information for requesting support or reporting issues. +Support requests and bug reports are required to attach the must-gather archive to help us understand the issue.

          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/support/troubleshooting/index.html b/stable/support/troubleshooting/index.html new file mode 100644 index 00000000000..8bd507dfa02 --- /dev/null +++ b/stable/support/troubleshooting/index.html @@ -0,0 +1,602 @@ + + + + + + + + + + + + + Troubleshooting | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Troubleshooting

          + +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/support/troubleshooting/installation.html b/stable/support/troubleshooting/installation.html new file mode 100644 index 00000000000..136a2c72cdf --- /dev/null +++ b/stable/support/troubleshooting/installation.html @@ -0,0 +1,657 @@ + + + + + + + + + + + + + Troubleshooting installation issues | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Troubleshooting installation issues

          +
          +

          Webhooks

          +

          Scylla Operator provides several custom API resources that use webhooks to function properly.

          +

          Unfortunately, it is often the case that user’s clusters have modified SDN, that doesn’t extend to the control plane, and Kubernetes apiserver is not able to reach the pods that serve the webhook traffic. +Another common case are firewall rules that block the webhook traffic.

          +
          +

          Note

          +

          To be called a Kubernetes cluster, clusters are required to pass Kubernetes conformance test suite. +This suite includes tests that require Kubernetes apiserver to be able to reach webhook services.

          +
          +
          +

          Note

          +

          Before filing an issue, please make sure your cluster webhook traffic can reach your webhook services, independently of Scylla Operator resources.

          +
          +
          +

          EKS

          +
          +

          Custom CNI

          +

          EKS is currently breaking Kubernetes webhooks when used with custom CNI networking.

          +
          +

          Note

          +

          We advise you to avoid using such setups and use a conformant Kubernetes cluster that supports webhooks.

          +
          +

          There are some workarounds where you can reconfigure the webhook to use Ingress or hostNetwork instead, but it’s beyond a standard configuration that we support and not specific to the Scylla Operator.

          +
          +
          +
          +

          GKE

          +
          +

          Private clusters

          +

          If you use GKE private clusters you need to manually configure the firewall to allow webhook traffic. +You can find more information on how to do that in GKE private clusters docs.

          +
          +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/stable/upgrade.html b/stable/upgrade.html new file mode 100644 index 00000000000..bdb3c94f974 --- /dev/null +++ b/stable/upgrade.html @@ -0,0 +1,810 @@ + + + + + + + + + + + + + Upgrade of Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + +
          + +
          +
          +
          +
          +
          + + + + +
          + +
          + +
          +

          Upgrade of Scylla Operator

          +

          This page describes Scylla Operator upgrade procedures.
          +There are two generic update procedures - via Helm and via kubectl. Before upgrading, please check this page to find out +if your target version requires additional upgrade steps.

          +
          +

          Upgrade via Helm

          +

          Helm doesn’t support managing CustomResourceDefinition resources (#5871, #7735)
          +These are only created on first install and never updated. In order to update them, users have to do it manually.

          +

          Replace <release_name> with the name of your Helm release for Scylla Operator and replace <version> with the version number you want to install:

          +
            +
          1. Make sure Helm chart repository is up-to-date:

            +
            helm repo add scylla-operator https://storage.googleapis.com/scylla-operator-charts/stable
            +helm repo update
            +
            +
            +
          2. +
          3. Update CRD resources. We recommend using --server-side flag for kubectl apply, if your version supports it.

            +
            tmpdir=$( mktemp -d ) \
            +  && helm pull scylla-operator/scylla-operator --version <version> --untar --untardir "${tmpdir}" \
            +  && find "${tmpdir}"/scylla-operator/crds/ -name '*.yaml' -printf '-f=%p ' \
            +  | xargs kubectl apply
            +
            +
            +
          4. +
          5. Update Scylla Operator

            +
            helm upgrade --version <version> <release_name> scylla-operator/scylla-operator
            +
            +
            +
          6. +
          +
          +
          +

          Upgrade via kubectl

          +

          Replace <version> with the version number you want to install:

          +
            +
          1. Checkout source code of version you want to use:

            +
            git checkout <version>
            +
            +
            +
          2. +
          3. Manifests use rolling minor version tag, you may want to pin it to specific version:

            +
            find deploy/operator -name "*.yaml" | xargs sed --follow-symlinks -i -E "s^docker.io/scylladb/scylla-operator:[0-9]+\.[0-9]+^docker.io/scylladb/scylla-operator:<version>^g"
            +
            +
            +
          4. +
          5. Update Scylla Operator. We recommend using --server-side flag for kubectl apply, if your version supports it.

            +
            kubectl apply -f deploy/operator
            +
            +
            +
          6. +
          +
          +
          +
          +

          v1.2.0 -> v1.3.0

          +

          Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure.

          +
            +
          1. Checkout source code of v1.3.0:

            +
            git checkout v1.3.0
            +
            +
            +
          2. +
          3. Update Scylla Operator from deploy directory:

            +
            kubectl -n scylla-operator apply -f deploy/operator
            +
            +
            +
          4. +
          5. Wait until Scylla Operator is up and running:

            +
            kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
            +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
            +
            +
            +
          6. +
          +
          +
          +

          v1.1.0 -> v1.2.0

          +

          1.2.0 release brought a lot of changes to the Scylla Operator deployment process. +To properly update Scylla Operator one must delete old objects and install updated ones.

          +

          Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure.

          +
            +
          1. Checkout source code of v1.2.0:

            +
            git checkout v1.2.0
            +
            +
            +
          2. +
          3. Remove old scylla operator namespace - in our case it’s called scylla-operator-system:

            +
            kubectl delete namespace scylla-operator-system --wait=true
            +
            +
            +
          4. +
          5. Remove old webhooks:

            +
            kubectl delete MutatingWebhookConfiguration scylla-operator-mutating-webhook-configuration
            +kubectl delete ValidatingWebhookConfiguration scylla-operator-validating-webhook-configuration
            +
            +
            +
          6. +
          7. Install Scylla Operator from deploy directory:

            +
            kubectl -n scylla-operator apply -f deploy/operator
            +
            +
            +
          8. +
          9. Wait until Scylla Operator is up and running:

            +
            kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
            +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
            +
            +
            +
          10. +
          +
          +
          +

          v1.0.0 -> v1.1.0

          +

          During this update we will change probes and image for Scylla Operator. +A new version brings an automation for upgrade of sidecar image, so a rolling restart of managed Scylla clusters is expected.

          +
            +
          1. Get name of StatefulSet managing Scylla Operator

            +
            kubectl --namespace scylla-operator-system get sts --selector="control-plane=controller-manager"
            +
            +NAME                                 READY   AGE
            +scylla-operator-controller-manager   1/1     95m
            +
            +
            +
          2. +
          3. Change probes and used container image by applying following patch:

            +
            spec:
            +  template:
            +    spec:
            +      containers:
            +      - name: manager
            +        image: docker.io/scylladb/scylla-operator:1.1.0
            +        livenessProbe:
            +          httpGet:
            +            path: /healthz
            +            port: 8080
            +            scheme: HTTP
            +        readinessProbe:
            +          $retainKeys:
            +          - httpGet
            +          httpGet:
            +            path: /readyz
            +            port: 8080
            +            scheme: HTTP
            +
            +
            +

            To apply above patch save it to file (operator-patch.yaml for example) and apply to Operator StatefulSet:

            +
            kubectl -n scylla-operator-system patch sts scylla-operator-controller-manager --patch "$(cat operator-patch.yaml)"
            +
            +
            +
          4. +
          +
          +
          +

          v0.3.0 -> v1.0.0

          +

          Note: There’s an experimental migration procedure available here.

          +

          v0.3.0 used a very common name as a CRD kind (Cluster). In v1.0.0 this issue was solved by using less common +kind which is easier to disambiguate. (ScyllaCluster). +This change is backward incompatible, so Scylla cluster must be turned off and recreated from scratch. +In case you need to preserve your data, refer to backup and restore guide.

          +
            +
          1. Get list of existing Scylla clusters

            +
            kubectl -n scylla get cluster.scylla.scylladb.com
            +
            +NAME             AGE
            +simple-cluster   30m
            +
            +
            +
          2. +
          3. Delete each one of them

            +
            kubectl -n scylla delete cluster.scylla.scylladb.com simple-cluster
            +
            +
            +
          4. +
          5. Make sure you’re on v0.3.0 branch

            +
            git checkout v0.3.0
            +
            +
            +
          6. +
          7. Delete existing CRD and Operator

            +
            kubectl delete -f examples/generic/operator.yaml
            +
            +
            +
          8. +
          9. Checkout v1.0.0 version

            +
            git checkout v1.0.0
            +
            +
            +
          10. +
          11. Install new CRD and Scylla Operator

            +
            kubectl apply -f deploy/operator.yaml
            +
            +
            +
          12. +
          13. Migrate your existing Scylla Cluster definition. Change apiVersion and kind from:

            +
            apiVersion: scylla.scylladb.com/v1alpha1
            +kind: Cluster
            +
            +
            +

            to:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +
            +
            +
          14. +
          15. Once your cluster definition is ready, use kubectl apply to install fresh Scylla cluster.

          16. +
          +
          +
          + + +
          + + + + + + + +
          + +
          + + + + +
          + + + + + + + \ No newline at end of file diff --git a/v1.12/.buildinfo b/v1.12/.buildinfo new file mode 100644 index 00000000000..e1d68e25ff1 --- /dev/null +++ b/v1.12/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 65bcc7b662290d70661eaad79cbd72b3 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/v1.12/.doctrees/api-reference/groups/scylla.scylladb.com.doctree b/v1.12/.doctrees/api-reference/groups/scylla.scylladb.com.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ac55ad5d47788b7c9fab99918be758adada054e9 GIT binary patch literal 4004 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

          7v4{uXT4p62 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 literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree b/v1.12/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree new file mode 100644 index 0000000000000000000000000000000000000000..988fccf5a65ebc7f3a1b2e55c05aad2cb2201316 GIT binary patch literal 889762 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

          2bm~&!uTx>TEr;lf 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≦^ZUI_oLW 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 Y1V5BK53s@g;=IQ6PSj)VR;yh6KU#M-b^rhX literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/generic.doctree b/v1.12/.doctrees/generic.doctree new file mode 100644 index 0000000000000000000000000000000000000000..fad8d126df0d4162d7cdd6827e33428226360786 GIT binary patch literal 65835 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%0DwTfC3Qono1q$s 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 Pm$=JQ_wAiFZZ!D+#4Rhc literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/gke.doctree b/v1.12/.doctrees/gke.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4d6c4d44a9dbd6aca3e2cf46ad1edf77d14aada2 GIT binary patch literal 30395 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 Bx~c#G literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/helm.doctree b/v1.12/.doctrees/helm.doctree new file mode 100644 index 0000000000000000000000000000000000000000..aa6fbc7424f1f87792c3163f8bfcc7c5cac123c5 GIT binary patch literal 44205 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%0Dv@ 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 a>A>S=R5>(y~0fkM@$JS^qzT-24Cl literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/multidc/gke.doctree b/v1.12/.doctrees/multidc/gke.doctree new file mode 100644 index 0000000000000000000000000000000000000000..172d23acd8d4be3aaf12c66d85bc7a01337e8478 GIT binary patch literal 29444 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 literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/multidc/index.doctree b/v1.12/.doctrees/multidc/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..15e4a7b7e21b1216a590f10c2d34cddd5c29bbc1 GIT binary patch literal 4530 zcmb_fTW=f36_zZM5+zZxoY*a3D`gy{anO)-m8xlhT zEKgPE*TJz60|4=#Wk#h#AEy>fjF^b61_G#HbVI@pJ?l6ahMKe=K)pi~vx-0BFdbb75dV z1NQ8Bkl_V=&%d_Sq{qZ==FBKleruM@gK@aPHUzP1y>95eG)md7hSI zPg;mwu;A3cpmu6L%UUt(uvOgn9Ui+6AA;h+gyU?Asum1yu{vS?@+rDktrZG zEIV8Utw@sR7DzZ2v7gOslkqS_D$Z=XbWj^MWEvq?XqX+Y*v&libS%X&=58XRPxj|v zdaZTsw7lpWEti=6}*KXgoX7A`CtuuP$YT9pQq*cVv5%k`T-tJ zSTp+WtZ7%r!g=mi=PAkX`qJ~0$-&-Y!}|#OZpDJ~KLStKyWr}_guQpT%I*!>`!n{N z8T(+yetWpWem7(H3l>-5aq3`}!^4mQORRrPI9m26I`uVp0KJZ-=cp$6l2qG!y| zqmMce00A8y3_1gFrOQkt1|Qz$kYWhiol9Ig5$y6HmYos7Z#Q5xm|W@*#YwlI;GIiG zrS#I>+kJlb!%D2z;B7AF?3+KP`}212{kNDEL;=8$^pd97jS7QB;@hT^Mq)C1+5wc= z))X-51i+z8CW>mRj%Y4Je}SBD--h;jG~ps1-*p=7H0jf?MH8X4t4COAPR0I=wEFjw zirI>PMbM_-BWQ-BG<{Rh{#vi|ZG-i#+%-Pf>J?6XD@sZsEqJR~X}gTO^!(=f3i zqNpR~oV={04$f7(6Qs&@O}1JGZZBe zEG>j6pzcuFpX?5oz{sOAh(pYR{G?{oz17tm-!Co>dQ_=cd5p+VpnfClI9mYa+AWZt z^U}z@WOjdPWXT2lpWP{(o@}6c_2S~d(wp{-I{=8LSy^T>+ZIHQQ!=K2JA`_kLQi9# zQ8b8Eh*Fh+CRoPxQ$yQC)fwT8fP;r1Dhk;&V@e_~2BO~crOs$^47ic5LV4>g< zH`!ZfUa~t0O+0{t)=vgGVB5~(6YSk(hW#lsCeed_A73UM!}MMXE|~I^UA%uCOE!MsOoWQM)?}Z{=O@gSgd7;j}!`B zbGu>pLCDCfbF)5xSJcy)J)@7MAybd>F%$T>vMXZ8`)wT&WZCaiB((-m&*aa=qbK5k z6fL#g4;ZdH0Rmqn8&J+6#M_fJL0{}{vw5RjiU7K5ShyU41C=VAbvl7gYH1#i9C<}d zid1x$#7PFupal<+zsJ}DqtsxLa{*>eJQ@)$JY2k;%I4eNE3eKVs~8oUHnVF~9=XdV zdXQX8ki4KGu5uj7VLU_Bm_nP-Gwdz5ce!@6&)BEz3)DG#c454@h`LKFdJXoOT}29g zk-Akz)sStv)WVJSA+9sdSbS$+u`ji4IfFS)u=9r*`)a1y^Z5TI+t#){AH@9acECXe zS61M$u(({U<`vtYw-obmCWtm+f_1|*>P;_p3l%dqEsSo5#wBar z^UO2P8kX0L=z;6=j~bqh-|@r>d>^CP6=ShkwnN{J?MQwdwP;X`x%IMrgC=t)hx%NL zV`_WD1YY8n^I)=TSs~K7FWD~ex0G!4T;FajHOpo)X2x;omYaZ@;rTwd5)n>!Se_Y0 zc!=M(`DUH}wzJY~=s(J)wHDe{`lgxeh|L;*`S^5sZmu%7Fn_#i&MZ_)Gv(5}IXMBaqX`b~1fxmClK(H( zD=p`Mv&VVNxvyCUZg*k6W-T-uPMW5lz3jM=A*XMEtt?Cvq=_BdXoP`fN0AX!@q$S2 z`ZZAh0#V;MvtiUPa`Nv_HU}_*L4dpoLY{MQ$vH$k;Cv7Q<~$BY{Sf|p68{~+f5$*n z=P9QEV&YS0JcaWjmq}+^@;Qd(TGOrA#&y^8jO(ViW~>KIpg9bhHHV?wzG2o$UKrXd z&Ct#wKE56pTI3=Uv5FhTu5ZOgXxAXej8di%*&dfP%L|$n>h2l_4i%a=2{andCx^rH zwj7?JH~b(@tEwx=mlkC31{z;Z8eds0e>B<3piQ>c*Q2;)=e2$n+TQAA8sLxF)k;t|UB8vw2eE6h zC$SmU>=@pIkknSP8{hG#Zl$%9Y-i2z_5C@sjyCk=dIJtb%v#wu8lG#paqEj@hfLU^ zokBl;0(O6Y^29(YK%*nWK6YQDCkMOG3k?L>qO^<*xvu5NP zRs+uqu2UxhXlBVyFglSo{OYE~VM;}PBh55RM;x4ycmv9IMJ1ATuf-j|by zUCHip)AQ_j*@KJOrmbmxxQpH_LpbYgueCTOKQQ4o!Ru`VftU5clvlzQqr{nwAOi1$ zOU>BuZ1BG^%^F8W*z|qkHRkeG;S<4aGF}gSIAuo}6N9H;Yud(295ezisI3>*)FQL! z1{3t@is6}M+dBq%5FQ)%1<|+ikjA+*un+N;b-fa?wQZ6AuTm}o(g}jOKw9{O!Jn@v z&ac0#Gfr{yzsYd(u4IP?;)JG`B2RLl2ZE%I?fH%7u-{D&mo=Mtjr$#F+y?}QF({c~ zn!iPYbe;0=DC6MFFjIT&zZ5ZQ2d*(CrkqR=2>S4vsKdNIxieak7Y7e zLS~IEx39s=fQrESOPflzY^KMgc&?ngWLyh8SY5uF<4sRf?8guaqEaq+fn|Dy8`Wrq zG!-|jRc6__j?1h;6#-m7icKGZ7NtU7+IS$f(5!wSM-NBK%|l#n(o>N_(&?3^v61Vu zzdm?~(^x^nRKo17;Z4JlpId)flW;sDW-y4ji8hX4x9)=^+qo5OC0hzCO!O~O!rJD0 zCa-=95h2U;^|~KSNd^%CU4uoBD2~A*bi|ao5FPgt=|$9pOPBQ_xn~9+=Z=n{32|;H zh9IGTU(N;jW>$wC?V;2zy!vbtVQw99K2`SOq4#E@_?54zPrML}-Vd0dIz_>|bJUkryN%%};O_P~YQNy9FDXiQXK@+O zmuo8n*+z3zck{4%1|6@S#Sa>hY=huOr`QN_-8_|i02|_&IQl`~D+ZBz?Xf2vxygk8oK~lKRY=1DSAf`$|1rwGOgRtc za6d&3_n?^3Fv~uqRCQNzQk9C)C1G`gWN&u8Y0BNz_7`HiHQ5?@%~~t}o<6BrUi8$H5-i}j2S;eZ#PYkJH$QnG*a7;O7pyX18SU&4}~*w_deK;GsL{En;|XO zQ}TG_qv%>KwiV(6-&>a`i;NEogh?C8Hby^8ORxSL#KkcXhzHQ2+$#v3n_ld&U41^R z;3ebK#q$*RN0gJNSJV-ChiwSg4P?e3&%(rSWFjIvW^wjrqx0ygJR1x~tH3VPGn+BC zo+!~KU^~CGGtEXo@B>J~mVnMDD2|PB+^~=2<~H06h5$-S(BDQz-CUP}fBepPjqOBS zLtqviupqACH1SFd9fZZP3jsp9*hI%>1UwilWWl;Dr9`Z9X(lOMBrT!=l&A@&fxr$; zEui%-phUbFn@cXxD>lkQ2uQMFOL2WAz<|E`%v) z#$saLy0i%@igx8gP^k)}5la!%c48@}J;|18`gK88%Fcc)rwL$ZciQy^NaRK-u}eCx+Tz4X9= zb_S&F&u3Oi%zuPqUJK%*5X6z%>aDi+C(CyjMJd{@<^(IZtGe3Z{crr}+6App^7HD? z(@zR*!g;#q_p2ues|Qx4d&pWIT6{d?CVuHM%qJz97L zxI3s{2-|8JRo6yT6+LGB7$hJ>NM3NOER6uhzF@2%Z5InL)5Dsn60Jys$&#Yp9iZ6G zd>*V6Uw%H%mwMAtjg3=NOW;?bNdqCHd8(6NX>{GG? z`s}gL*>_gZ2b=%`$vNg9>q-9FP?Mx3%u`~Lzbaa$dGpFYg_rIlTu{A)ORD}@4Kp&;{O3zQgLM?QK8#wPTf z{D|zEeHeXog}L}FC5S-4TOx@8$YKCDN|OGn-OOVG_PsXTM8FAb7VV~I`~=^$%>1YREdFH(dxn-GPtEL8Nw zT6uyrR)Hy~q7&D>YzBIJY$-z%Tw z%(Fbzo^>Ph?Ynfr5?ttn1?4L8!Jse|i&6K8r?8kV@!PA!a6#zSU^zU)_Tf`mtSK`w zL1cOwH#IkQnmjcuVu>{sAcFl;0NPm6{X`tv_5=&$O{6-DCdgn>Z_&im^yExI!ozLP zF|B`hDJrG(&7bF_d-eZ-oNBB3!8USAmD1sj=CCdI4I02)-G=d#kIHcLt+7ZtNS?W+0t7T>W%QPO&P#geU#)wz2-8_GJ$BTLi)^u zIq_plDpy5PGyO=D?bN_zqdgOH-e-i=eN?o}IPYW7D3@@`jB?Z|-UO&^l+GTxS4? zf4O_d{A$D{n`K)60v0SkDEj^)Kclsha=?{6NyX~NX>xLN1s^cgt<~{2?mkYKW7`)i zDJ}A1jx+MQt;72d_Q7ed-ZN|L6y_!SVwsSBsyTQ$2WS5U!JOb=IRj=lW^awc8V=c; z)b&~!bc<9t2~~op))RS zyB|Hn>qB9h_T3iRb;Yh^ugEoDE+YqaEgh!+_h!R=1@nLpCv)Yqp5wKtF{IyBPNb#{ zl`=+);}c^B+_Mym&;x_%flGFH&9!X)z%Y0!{&TijL7X6BUzNka#QEtc7UC{HwLF&& zUCKXYTXyV)HRJuMgyV0)Kj zP(&D0Z(a|!5kqcd#g*qrMCvC@cHC@4MT3M>tRT{>fV0Gav>ef5NueTk(3UYL-VJrq zmNvwGd2>%XrPRNgQxHz~#Mt+DL6wx5uJ5%v`a8MNvWmZZy5ZMUJGq9>woIQ$>5;&? zQxf#{at)soDpKN(8KWmMix|EmLmZbqimg#08xL-K4O5l z#3d+tAt_oAlpd3K@B1AG5-!1GTL*VHwndKZd9Bs20HoDlzzGIhtmzU3+ zo?2nKMX4vH6|640z)NL;Ee_BT@-nG*j!ztLD(9f}?l zn0iHUOHH%{x2WWwSBL%7^{3EZC%RtQi-4nwlrZ079QmE;!WZJK3S0_a^@w7A^2{vO zcq`4QK=lI(P{_P8mdyDSF+|M|;1b#Jk~|U3BWh#<as}1O$&6V-gIAx*v)xZ|H zOj#9goTq3gPT2rhDkVh%h4_RGD^giS)jak9E`?h~W~^aaXiwWA82q-Ip z^g&EYH~!5WU#9f`E;S1&->D~>vwu0)Lx0_WRdBW(o9X@+H<(0&&2dc4(Ug-+Khm@O z2OBfXd&kqM6A}T^Jfx7Xp(wWlR!&XsH#Y{bHq$#0Y*ssLRtmQNxG}ITZlnxplICZq z4Q;omu4LSly24ol3;Fd3Yo?-|S9V~#=Q8AarAVuoA{m(#k(DC$Lb#SWE%a7UUd6@< zl$XuoW|YH2YC)+Yso$t0ro&R1>PY5C1r~BEO)Csgh=2}8r5#i@B9u+OH=bg|44~Yh zNi`eK2F=Ax^ap%WB;^7PZAjdoJVkgOP#yFdNpJT(!f~Hd8j>M(U8&`D1_(KD%a#*8VCsoXmiRCG)UIeII&kHW?!V`rTikL-4!lV!o3_Tu9LW88 z>H3JrY^PVgQ~UJrmi$<4^iLN{#aVoheORG9{x~!or)uGec^O8C+VCRPpdgTLvKI!9@zhb(AUa`8i3g%!na*4g z4_Fzpr4+%^^}9q{U>>E-P$qUA{T-j2{J40|$o7(|>7l-+3UCNRq_Q9w?a+8~vaY^j zKn5ZDEX__{P>(&gjzV%8&Vif417~*^q}p}`WL^!Yp_rYM^D9Q{1j*~y zz&C=*DXeBrRgs@V=t~VNN}pEFpeTc1yJR_7M4;M7?R?EgR=pVDu$d$uP z3wLG^`dqAu#6n2Qc}fS+M?6PnV{sxAd#HGQ5MH*!dTufWK2KyBfKN!RMagDN;S_SMxX@8rqXlQ1D<^ig(6fJ(AYHPJk@zd6`!Jw{22=xd?^qN&-<0yt1S8& zX)i+8NPBUn8EG%*45pMFE#*pL6tyI4Fk1I>n>dPEZqBHslvYlq_h!^mBoQFDB0^rmpgH;c#CF#c zRJBy9MkYn$;ZuzU>Sa@Er_9Pw=O#M7(`gf*87gf82OutN!>#Bz#;dbNn&nK6Lvnh6 z6A;+-1i(~s4TsUgLPS?@7pf;^qK7&Vu_1l&*#hF99fB5p&PQC>z9oZ#)WMhWPns^T z^G*a2JGFG+1w{y}xV90sxp6%wie=$|rXtgDjWqqfHZ=Xl`qA%;1JJMFpXA${xGNo# zEflIjc=8C&@9|quPF@Uy8ruf;YbVd4c$R%c>|6_U$ogd2Em+>A+RT>eKAQ(1#YumE z1377TmXor=^bE&|K$}2UFRamNGfo7gsKiQ;Zo3~f^=}R_^&J2v!rpe*Q=u33^_u+W zHh>e)*tO8aiK5$Q!%YH>BE)YGL5P0Z?4e#{xNY7M6-IBnA2s#w4l(uqJorej$!`SJ zPhB%zc&na$@-hKo6=*NSP_9DY=^Uj9z;17qGdVd~#EIav>J8@24 zJL%&RF*r+Zl{`HhRHOq%@)B-R#W7puXlzt>oCS`;3A%s# zFy{ftg*5uPAn{O&-$o9fQGgqQWI$QhQy9#G$^=76l1ZarNw=kdj3^|0v5UV5LCr{+ z%DXeT5~+hg=b#IQej@dFSFW0+QzgjBMY0(8L>s6U67gc$UJ$I|3Yt1}77C*A(!T8U zwql}NY^`~wFf`9R*@tJYd>aS2&LBV9Vkgf|=p4YYlb!wYP6#7sFlt{}K|7#~`an;4MxT=O>F(3$un%T9`BzpJh!-vva!XGve2og_+X) ze0iZTRhqI2GiG(6P_E2P7p5zdCLT{u&Q|A<-K#sET_~1j(0F!sp=ZbDw7GEHo;+Td ztW+!LxHMZZ7v{`@HEWhj)tPy_JdKXay5lKyOpm4}=X-WMH&dP~EtJf{bZNd?n3*aa zFC3r6pL3IwGn3N`)tSkXjht91izA}`SP@m}xTlBEas6%QPv*2-uB=wNnA6iQ$r4Dc zq9DI6JX=`+D_Q6coaaTMQgw>}6`z*N(c9`ntH7n9R3OT2T$qw7a8WcxS;774umNa9(}qV;r@6Cw z+vGvu_$_X*V^zLW#d1)QPt|k9wVI}AN=^seP2#vU2RZ(0w&yx@;{tP7$XUVo4C$=o z)Fp{|85Q8yo6`L#xYiV(;}Wp*7jdgL%iw3uj`$MwW<6A5u+}Y)Dm38Au!zqY&|X6@ zNnXvsuS>-RWC3~%`9%y8J!*93K;aSzh7!6aBEsqD3M(H(AahKpj!^`i8qhr}G3tcU zHE_6YjRmq;HBh)^WoUC&^#xZw$jcwt#SP@LiIe7{kA_XBq{&%p`Z!sQsbiVIF0|-^ zcS*X?rcx?4pcUAq!bn7g3NDoc*(jR;m<|D~U(lRz{vzsGF!P1CZ7g0K6JkLC@oO;9 zCA(yX6-Kphm{g%%ReD6pCtww>Lc??E^a`IGIDl1cta`r%STAg>MbQ3Fp1u1XuDviL{hv>R7t&=%I~0bIm$FG$i63pgFuf(S zahANyJs#LPx}sebjnsFL=9b9JW}4W77Z*}9ODM`}VtL416oD{iIK_=n!fRn)vzq+u z3KljVs}aSu%)UL?6MOBHF?AdGpO9a%q{|m9fkkaxc*&qrwe(+$OYSVV!Z z&(++s4;4`VXb7PCFUy|k1=a>*zf8fsyF~fH##TuF%^{H7kMgH`p?Ei=JPY|K!e^c- zkbZXvkowd8TrZ$DnC{kHr2AlFDGyphYF}a9RjHSl)sP# zORxNrOSFkWi%M0t7l-aW_jR_)hdJeSsc|!7dTq)V-V~3aWjMdXT~}>T_VSMO%`rsV z8~5%Qc6;L!?PgCqH_6j-wguQEw-FVBs;-UBLJ^cqfsG5hV4_f_2tkRviS(sLsv9zi z=!TZwJXfGnW&sLbBOKkdFZ1)2XjNag0+Og(tD{r8_DO2i2Sj0bP_n@4)D|=)Qx$W? zXN=%&Mk#gHC5oD_$bctbV#)kOM0#UKE|(DGO=*4>E2e0sRFoCNHbdMC6!OxT zDiSLO&X^Syhn08lLWt?cT^WXz)uiaM+qO8@0PfPZc0I|AOFUUD=1Q~kGI#6+1Hxl$IiA@YFTV{7K zn13Z-K^k*4u}hhn*rjr=CU$8sO>Kz+r3Z95QVm&qP3=;;ruMII5M*sdwFd&Oy{L96T~zy9 z8wA`Ps;b>K#hjk*@cyYGWH`k?Z9Qp9qi!RYbZPwb1I>Tm-5^9}DmmtX>aX{e@M^uE z@$#;WKQJogsEWMZ-I5L&$BJr96nGw$hk&1oqX)h7;7{v`XPbtVz z+~Ah(f#`aB!>AaWRB+I6@|uIu6%q<5EH6dgk}--KNWAcU>`wPsaQ9wRJvYEoqbnph z(z-gl{Z-INdyOu@k+=U0b1Be|M_zy9YUcrD8T0CllwKwC zw8kmtOqGA>`Hjxx*s*ii%=!E76}2V1BwZvI`WzUe>{wl!uxph`o`s?gM{IDfieQfb z0fQ2(-;s~4_jXIheJWFLvMq;|${kR_$xOM)q1tGQJ~=c+clM)bzv7Nrif)2xlkXlt zijSr@kdJm{`6!dqlx)5#Yo~{pdjA7TdwNa2Uv0fX2>7b@%`k6|T;M%LPS zXKCYVd)}GBl>+ZYYTTitZy2|8aYPR$jkQ7?3I!7!$$=Xzp&-kP4Y&Dq() zyg7qXyDrTZr;a0FG~cJj>D=6GrDD(91$(A6 ziLT4&+M1mySmykcU9C(nluN7>DXYrLyFNZ&ETPD$F*`Zk6KZQ}!8*QRl?!%h26b5{ z=SqczN_D1CGR=iaR8Uch~2Jlha-0z0I@ zI?b<%xO%i$oWLdzv1_qjIW`8m@|I_wHC}9>cr>ofL`h+*iBiL;q~`{{u8CoFLIkUn zxpAmSt)lnt%B`YvN0>XjKYpu->@{pz*4uWrvx-19`FAooEc&H}7`~xqZzG46Y&hVk z6FIT%JPBni6d>ufD)y2Ns&=@|?GUSsnQfYGl{9-d&i%?O#LdCjKU>zTm z2=lLmEE++171wbHrK>eXgi79N(Uls7Wc9k^S`Nk9!o0xi0wY>r*Y6szDKef{e7EEr zT52bAhxbPZo~b5uz8mdZbgT4oQnFwtLSNa2N-t+|{myz?XCDpi29840jUyEUk;^PS zPrq~w)$qsZ1vtY*=yROcy@{Yk(SX@r)9~%<*j`8AG^po^c&di34YNt5lIU^~W*MlY zTaLY0Pt0SY>g*|_(i6bw7&rASs0)s)n`@|cPZtG%H`m$yLNpe$HN=A)1g5hn*!nYf z9~~*STJFPE9p3*8ti#<#re@eYfc+WvW4#zQ`N-KDF^U$DLt#`y@D|ar&FfHQxH?4C zLF3!&L{F}nqfU2ALk59-u+#06%Y--9!-Jer$*JuF>|8|C9+Z6>O`Zk1~@jdHzKYE+#Y z*BiBk+0xwXOl|e}T>N^)Tdlt4M>WUCZ}r*Z^}5rjU$530(Y4hZrM0!X??=bWe%Y(n z*2><3f81NB&dr3;Tx?y7{|;J4nF!A-)bg^X!GdcM++h zc)YN+onC3?|HGk}p90UXNap{6XqpK;{{@y(bq)iMMhJ!;7tsu{U`+!`UWA=rP?N{q zpi9mC*jsOpgCZ!YXF6aoRN%iN;RB9%)Kj4hfzJDg+zb;4^R(~ z{<+$s#qrB`1R<&Q?w{uxuH=jd60IHaN$Q(L?j9X@+**y zS4^*IN3FM8eE%fb&KISvCFlO7WEY$jzWaopc9Ek3-?HAoAG`U0%NS)1e~yVio1url z_Qrv=OxJJHTMWDn5QgimZOOKZU2fLU-@fZ+=mTr`0{4N|@njc;@obt@>x;=g*T=$r+4e2m`T=X7>}tl< z!tp}n;`hh0FPH5w48mpHrdmPW0AQRzwXkJ#KgV>cmu;+a=hY)|%KO&cuhN6Ed|eoFRMn)SxAVnHC5Jz$dSn;wzwe)fbhH<4dI zYD9Lk5-i`S6H7gS%_{8cE~i^EF0tZe+?-2p7xlGVaU;6B6%(P7=XkV3iU!1N4<}6_9*)XkG`Y_@7|W2T8ubIera{=;507 zxOL%yBgwvo-B<=vY)GZW5VnV&P<(Qkgd_QY6UU9{#KZ(1<3hCc*uiFQ5Y{GI$s_b7 z0{~wx%L~+6$xb{kJUKZ7eC`XYR<3(`qPzb|**%3ziDlQYrR>^qm5l)fFyX{?4}i_|FlCh@m%bVQL#?R(9;Clh_&8}B zOj$n|i`8$C6L!!U$7~+dP}N-@;e)8P`fGTtw$QiC$+7X98u*`e8@NM%U50KZ4`pW0 z?nh>Zt_}Frzl-5Ig8CbH(Ik>oWpn1@xj^rm*a@eH{P&})AH%1sC+Ww2U!~vJR48eTPvzV68=K1S(Qj-jbU_rK3SC;r zr$VO%_*7_1flXzV{LyBzH?12Op7-LaY3{Iq5c~<50Qnu4iu4oGTkI)xNxd9+O5L!B z@5?<@U+>EFxJ!=88aXaBU$3z7D8rR>fxm9I89=T=Wm0H zKG%8)%C=#KP}{h{JA!)Q11dX}dAwUaW*TC*>%+~hkVdMJRT-<0DHT?S{K90cz8=B- z@S5<;h@z*#G>cmpVUtgZ#o8c=V?EsAMdfpAclZmf)t>-+EOOpS_FfEOr(SE4{lxt6 z_K!jK#e4f#*fL^lFnDet9Pj7^Nc~04-YWs)Sy-H?&1rKqm#WaM^O6gqIXo1qcI-`7caiT zxI8%^I_|XXO5c6}-{R6VCJ4#XFNrJgjEi(pDZ9;0&6x*MVTjmnb=#%w)Y*T*WO02M qlcl8h1!eg9_aRt_GckEf^4W=ae*!##fDeSr#z~o{8 literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/nodeoperations/automatic-cleanup.doctree b/v1.12/.doctrees/nodeoperations/automatic-cleanup.doctree new file mode 100644 index 0000000000000000000000000000000000000000..074da8bdc7a36c03e0ceb5557c1cfddfaba92b36 GIT binary patch literal 4219 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 B`fdOK literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/nodeoperations/replace-node.doctree b/v1.12/.doctrees/nodeoperations/replace-node.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f9f33f5cb780f04d5e0344601c658676dbbfd694 GIT binary patch literal 15883 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 literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/nodeoperations/restore.doctree b/v1.12/.doctrees/nodeoperations/restore.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a3ae00bc78a58da7fb5ace3979385571108bb934 GIT binary patch literal 35794 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 literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/nodeoperations/scylla-upgrade.doctree b/v1.12/.doctrees/nodeoperations/scylla-upgrade.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bfa41f814ae0c48f116ef0f8493545341256948c GIT binary patch literal 24823 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�c_9&|Je;-Qsi$Z$ z>G7t?g@3W493U$JucUim$WUg}^zpA=yxhLO50nEi>Xp2*KTbKi%uKK_e5z=umbS>6GbA5;rT4S0WF8KhWE0imW{o zrT=W-2|;lJwSgy!`!Y)BW|m9z1h4P1|I!DZ%1Kpx}R`>tVJ%_ zdQr)Aj_aI);KM=h}WE*v^u5|K@e6n(5vRKZTU3eKG7nCo7k_LI+2sufr*N%_-a31ZU&KqWEeeC zNJ%3$Zy|*$6VZJpUl%DTcd}|g&GrBpDvvDm43o|QUqZ%gdVW?ldV&7JBB+c+`QYFU zIaxMXz8jUb)lZ1%Jn0uCr@ab6^t~3|l)kwCSh~04bWD0^Dk>EcGI*HVfxH8DQjYWx zmkmU7RPEsPGm0`(F~@FtFMTNhz?UY<B*YSGjG0#8pK zC5h}!)Qa?+xGC0v0a$Y5mXF0|Vyg}IvgSAxd)}LG1*<1NLS51}X~@ zVl{p87e&XV9k>JO2^y50uMNWiG8Iu$FMO9JO8J4PPEL@KRf5c*I1>`5;thb{ zI(Qa*C%w0UuWp*C!{YfSN~x2f6=2WHV(1W7znPh}JLz_(eT#~Zr@Jz90{w+3BEJvs z_8@rKV`G8cJb;2|#VD{2u|d7<%zW=#hYB?UBm!6HuZU`-f3EncEX}QKFv?nPKX>K= zM^(h%$|cyobMSE}?OV#q71mzciea=f0hf6VQJb=S6`o0H7bt!H>?{G}E?IBeko z^9@-#Ne}ekE>0k#mU|!YYg@3~Ku`~$BO!(~dAN8zPQ~EgL@{`3%>G{c4VcNb56Fc| zXQ)|JTgFGC<4)v$9)D7|yC+KL^0F^xn!_{kY(vIUSqqss{x0KszJ>Hsv_e-}^}tu^ zBpUB2G^(#>dS;yARmGqKJ@aF?3S-(H?=8+Hd*CF%01I)Woo06fZzUk7kVtI8JD(;o zMEiF^f_J-DU`$Z90A@+%l4lDlJKWQ}TQv&}*zL7Z>f46-3s$M>K5l`rRYW|-YSSa`u`c=y)Fc#`oA#u>{0*# literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/performance.doctree b/v1.12/.doctrees/performance.doctree new file mode 100644 index 0000000000000000000000000000000000000000..52a1e252b0915633c70438cc98e2ab47b0025695 GIT binary patch literal 15268 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 literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/releases.doctree b/v1.12/.doctrees/releases.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a0b2b09025cd8ec9d376166638e7aadb58a2564c GIT binary patch literal 57839 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 I*mfrMzl^YLdjJ3c literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/support/index.doctree b/v1.12/.doctrees/support/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d013c8db4a0364d05302dc035b6b7f95ca1c886d GIT binary patch literal 3757 zcmb_fTW=h<6}Bz!YFFA_S-zwNY_*DmG!B~Gb$z$s7)4v;#fTo-A_3Y2W6lhBNr*#E zNshD%VxW0QQ2~4l`w$>c{WJYr{W!P1AZUW1h6ma?JUrz2&N<&X^Y_lb{yn->{&RaK zXIw5OBu%ACsqwCts-(!MwEi3a{#X8uzvudzoEcTCpZ&| z`>r3gmtOSZPp3A^!(-w(70(|(oyNb3$>Yb*@5gCEo<4jy zi{obx<0ntjC(oZgn~_J)(+7{@2T#fUDXwm&)s?5Fa(>EXN*5Dt;N34?Z51(q=p`!4 zRUy+Av??IkC0t4+R?}4^>$P9PS@t%ddWK{?#S7Q)Ze`Qk?sLx*cTj(%XXlnmu3#>;r(^K~Sei7`6(W+pF;%pJ|fk zxHVbDGVC8OlOfna&LL($GevB0FbYD+DEKG&MlHBcCzHc3Prp3WG#4bHM@NT8xZIf8 zOdP#_!4J#){O~T9A(zKIQSxv`@PC{znw;D{B$|_P<@1MktuE-@moKLLu3tAL~>>Tl|Ee zSq_Hzp`elWoF5ykA7%Cjg7v>`EQ9scX0TYcRt;^8m}Z9AIu<3EUBLh5`{7@FKm1`w z4L@y5(rwp7f;}~@t%_EnxP$Fm6-AfT4Juu)?A0=E8wdNq-L#rWBS=}exmI(eR@FE< zR#_q{N~v{9hAD!hm)$5SbZARa+k^&wZE+;MBI; zc2!~X!un&jckKFeDyb$`X;5xIC1_`sWI0}Ts{0;7n^M5WLIF%)(-el|87zwfLsMpSF1BSvH@K;;NKd`rM7dlk|vRyw5> z?+!LrHcYVpxKU+vd4Xo@o%Mx{o$gw20EuQ;-2l8B3L@tPnNz@>g4eE~y}28jCQ7Gh zB016o$Am_G?7HX&Gx!KNcp8BKXMEvV*NsSFRkRejD;&8sOp7d!+WZ5mrGO*#v?L-J z+$$wz_J`OnMY*9xsv__$w64)bt_+Pp)a>x(f_v=hBiz#Q2;EJfR^974m*yGJ-1mTY;iB0P05hUcE*_C8V0L+(E(! z?t{Qr#Rim12(kO5$T3cZLB5=sY7)SJ1qqiki0Yhhm=|zaw~z>NklWkMTBpTz_R7F_v^0)B&(QJoOa>1s5}kRyz5n5g5pIg zVpirT4jWmb=M>z8Zoa=cc$M7EzF?m*j}GLnudP>;e)uZD6u`c4mr+8P^l{3pS#sS_ zTKHsmgE=_}tKaN9_N{UKAh72-ZvMuz?=B2`8-KrL1LKCPK`eI<6OL2}^B^o%l2EIS zUUmIdNu>v;5cDioqRop^_2!1K)$XrZ>^G;Do35|f2j}8@3q^Em(^kEL=^0Ft;Nt`7 z;@xhdgaF|10j*^F_qF^RIRCZ(BdP))W~eU=ItF=A9oQ1ens~Prm!aIPCwQdJJVbFP O4V+igL+Ii~Jozt6Hnr{m literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/support/known-issues.doctree b/v1.12/.doctrees/support/known-issues.doctree new file mode 100644 index 0000000000000000000000000000000000000000..797cff903a065b5a316219cd3c4ac670808baff4 GIT binary patch literal 5378 zcmcIo+io1k5fvpZ$>p80qy(^}jA1w?CG9S4-6%ce0waJOMl|5ad61!uduDpKn>#o4 zMI;{#I1h%+pdSKw{Fd*?7XTmP=8f3`EcpGu4->t~#fxroZfb z_utFs%7126=8UHYeG)}!7ExK4`6vr@LQ_?ITWtQN_@dY_T|xF`rbS2#a}F~?#^XrP zw0KsS6+2z=SoZ7nbCQONXKAyXb=WMMdsb|)uIVVQVmdKomUhx?KlQkj8rtnVOuP7m z9$5WTqhA%3J+nE1c2%%-)Abv3*#$FOTe)j4#yq9Pt`3M#eEX4r{ioHSGE>yJ0=cegSu~x3J;c_`QSQyZCLwRqR&jB1~nsv8-1g zqHDT{92p6cvq=nm_tDTh1irkflW^$`2}dMHp2|Fu=kcMpt(cc^Y+*6xZES6A`!_dl zdy3Jto-yPH-Y^s1XHP!)boYbbKKY&ZTvNfRe75nn5;_fuqP<$wv(Da!`e99X~^90$%oM~lXGseRaW+sm8qd{1&1xF|x=B5Md%~#qxikB7M>J2+=b8(oq0boMBIjue4nNyq zO6Bs=U_jIUJ|FX(Mx69BF&fyn!H4bCP0ROydNd_LOryT{aSGB`DGXFcUcmo|%W~8U z4!wvDiH=pv*^Ab)3FLh_d1O#*F6N2~5>FCr-W|jds};1q`|IRJrxVKh?i+-^Tl=om zUlQWdNiUsh=SPjF7bhI)%sVD)E&Ti0EHty=xfZ-In`e$o!}F8J+WyHQYb`$(q?YZD zzK)O9w>CXEBTnLS<4NY(GQgEb4=DN*Y6}FaLL6uNww#1nf*cS%a;`l4g4Wu9oXyY9 z+QlgrbPf6YAbqJVfb_UlcjJ``E1Xo?y?`zI3HzT34KW;W9**Q(fMtGlK`Xsj314gIcJ64Z9oeoS9b zxbM7KU?gr{J7%38aCl7-rKOwHF`bA8DD=B#WuFLJvM@tXl0edh`$K9Eg$`+jr|^-F z1}%#)3pCJb*xT+&j^}H~2Yo6;CVYl$6H@_?TT??-nAOVD6T5WET?%u3YGi7Qz4e)M z=gdmAZ)<~FeeL+b)MB${&j74R1{cL8ahDyl;qeGWK94Uu^M;^dCL%wgIgkQ1XrSST z*)U6oI3_%TjuDJUnl0F@Ss_|wek(HPZ40>^=_L0X2*R{o$mK^5iuGT^<`}v__Sz5M0g}Gv9mIh#^uV{kss4}n8y!X!5UHEfF48y7It)$)l zmu`EIl~~B4PV_ld!%_zlz<{YF9sse51Yl95Sg|v2t^<>a-_Wx;fM2EdBeNzCQ$-GZ z#z!p15BR+pXBPTPG9e(^a}8cgIO>h^y?XUg*GTQ!>mkFZUx>h0e1n%u7h?5T=fzQZ zkxc;n7}AiP;w>2 ztg%lMd{+9n^RS7wG<&_iwE$S-VU^a7%mtdhuy+V%zDg(HFQCZN2)!+Ur-&F)q$k`T ztivckOW`I2ut9mO()TJVSQKVDEx#{u?SRhnXVX*B*G}D+nDh7UxPopUU4`EJ7|efJ zkv1n3HI)j5V(&4Q*}8<2thW}Ss+M;md%GBJ8qJw4rx{O;V*fP7FWK)D)!JM-cJk_y z#a_sqFn;e3Q1?<(|BL}`!!dNr%Qn{D=zM{`#0snD4fZ4Zf$gyo`<^}3rfWykVUAea zJBuHW*xnKQ{z$X8?CTG>W*Om@;wj6tS)Qapx$SbuK_(km=&d9++qroa0462XJir39 zNrEhHm{m@_JSA*qcaQDZby~|smyYd^!X=cglvk$rsz=Z-AQzX&vqfhyMCS|0;tZ(A zb01hlLjEnB@m28&@(QkHkfCq|Cc&giVUv=Ni5DAjNrpw9hOv$;`9_up3z4lFb%M1m xkXc9$B`PgGpext^2QAVMQ}=pb7c9kx^62%hrLgMX=;)rB*ZBzky3ji4{|{rN_3Z!v literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/support/must-gather.doctree b/v1.12/.doctrees/support/must-gather.doctree new file mode 100644 index 0000000000000000000000000000000000000000..17b21391b4e475b34c9ab53f35437a3c347736c7 GIT binary patch literal 19890 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 A9smFU literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/support/overview.doctree b/v1.12/.doctrees/support/overview.doctree new file mode 100644 index 0000000000000000000000000000000000000000..caaca2f3471aa3a2fc28a0e3029c074a2deadd47 GIT binary patch literal 6097 zcmcgwTW=h<6_%{)Y9(2+W4VPdoghdequyORz86JXq(xIys0!3Z&>}Df+!^kY(%d}5 z(dEHS`ViOx*t9^V56v&=KQIuW0rJw32B8o!PC{cF>D}6^4i8;o;%=KAyu* z7XI|Ni!qoXeK{V4W%R_J9v_VSQNs`$LP_PgR~v8`JvJIvxd^?0FYFv1fu z@KYWYj|;s{!<7uOZZ&@?4x~^Q3O{nYW+v0gcJ^l43*ZD#TfFb!S#w(ZA`bFri=8 zAM)VAoqN6h%|5$x=fRD>@3DKgZVmeV`?vac@A`Ki+`B(uw;%ZL-R{44kKO3O?5tOs z+sjH<^sFnop=toTlArM#n!|C&**vH!w9X%QO{ODR8{y+Wi z7|?*n$4%de832Jt1VQ%*!P`JcN&3LgqKpg)H^6go!feOh8Py3*?XQpMv!)s2klNPs z#uhyv9%riHleDHmXD8)!P}|j=nV0dPfxjPzOh(17X(*N=s0)2zViTqB3j<=XIxenB zKF3`HAF1O6SH~B+O}uiH1k#hLcuukO492voSTb%ln4RrT^L~vp3oMHy(ni3v+N#K` zC+MvS>pK-jYK%^fuqYbARRmMDSkPKzyas5me!!IAhllT{(*7%AmV zHNACL9#*LoDZ+R%&UgCx5DI80+TftkDqtXFM9dRr@rH#Mh79k36GsUiBu<_=Id~<_ z6e%QAO|aA~bMqU!rxDVBZ=REQZn?AKkKfz2ZZ}M{(J&^fkN%%cl@sJ3{w%&Yl@k6@ zPWon)pyv$KDMzrpaNfecX|F+hIYRm%61wSWrufTiaKc&@n#NOx6F&UkM9|bz+0wHs zFX>GF?~zxZ^;r1S1UHQltuHH>*Aw*B6098}ppLnzJ48SoOF%UguVvw(YHF+SO3Bn5=%TB)f5lG}&=fN{Q?G4P^3B78qV~ zk)RJ#o|UE4f{GOjik%s~V#jbF&79Vo)$3lKQlaLK%Cc1}Da$jxoN+}|hWc|8uqX@4 zK?;&Za)B%LLl#g1XHy8hh&(FERk171;!+;+s7(9mhQ{%M`&gKu(JmKsvC2N0D^)X3 z1GLsu?739fQ7;x=fQ9LCq0bGFHAb=Gjn17}y+%1ol!xvSk#hmbI!YUvxF}bsT+X2K zQYqm9Hxidh9@mzaSh1Q=)tkF|wIpUY;0GM;JEK?%-N8`<38GF@BpFDr`(HE-}O1Ap;$&DOhB)=p9k0`JR*I>Dj&$BLM-ZamaEvU zMfwcbSg-kcn7E@5gkz0BQpp*yfE1oJ5)<5X{Iw{_c<#sUQAi=RfqX8`xZ9j*qQq0K z$?M~kbh*CF80r&jq_T3!LIW^c#b)TTH#o!awQ86&n|Hl!|hP3%O z@-|*-Moon1CgBT_6AclFfeevp{$k@@y`J#IrS#L3wX_*z@d@G`wi7t?w`~0han?BmGL!N_>a>TK1JV@rE`65Z0F@0;Hh5Pdy3^wHT4hZ z$muu+cDhOU=)v(Ria-*U-`jgz7`k^J|AZ6+@uhgNw?>i`qoGA3sa`baWX7Hdc_O|% zF{4g$@g^)Qr>|mqN4yY`nJd1^^;#1tX5}@Mn&tHk(@F^uq8(SpNK-;6Hc}uf?8m_f zd`9@jgm5&vHKws;S2dH)jp@hTmMXeTFHGvHdXQ3pu1#>#z0|G>Cd4nU?4=)5&_ez> z{Q7C}D^L#}CqZI(#LWPg*f65#6vqFS;vl@&)!$SJkoh9*N>KoLvVsC@=w#_N(S5>>uiahUk{{`vl B3bOzJ literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/support/troubleshooting/index.doctree b/v1.12/.doctrees/support/troubleshooting/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6e1ea24550ccd55333e2542c28425586b2676e22 GIT binary patch literal 3747 zcmb_fTW=h<6}Bz!YFApVEGJG2*lHA~X%Zy6>-uiNF$x6ei%~rUjsv7M#+(`MkPwHQ zkQ`}+#z69rq5_D#mdW_Gl@buI{Mc%Yrb!^6YxeCIM>b-w#yc&_^AwoSpf zoQ+AEN|jRMT`yHhnNw-~OaK1Y{)Kyx4gFE*o@n2(d=gxy0ahi~O zw{A`2`2MZnU5v=fZb%f>_b4-L8vC60b9Jj z+ip-A9cxk)RC}_BNZ3C*3vsXmCIR_Bm@+mv7_?V13Kx@nh4JpQ@p$jcqc8U~Ed)vE z{{G%RoEtHli~Z*h`Ci4kkFIkW7&_vKl6zBv|D%M_XKf6^l-u- zJ)ft?8muh@-u?amY5onj|NC9^b$$Z4f0l$&L82VhT&oR6YxPbJF3)0KtHXk z9P89UoBfWUS&q8#YeD;Gd(LkS)^9TVE5Z6@8)w1#_iC_Mwv-KRjF@0KlT9otFuQ>N z_|@>wUJZZP(ZEmJltel%S3T@)iqxx?7NWWVb8B@WuCg5kayio%)4FXB>_hju)kK=Q zRz-zY8K_pbhmKXKVs(jWbgGI|hKrwf!=%)q`9y828O$Yh%W*wJZRls{s5@79DB!!`HW(4@Ysc--83$^X*wW0EI;pD%8GZpD=RA|*pF^l8$EMizV+Jj!pcr}DO>?xDqnR}DucBY@!mwgK%DAV@N*|5 z7ic3huu$-vTmO$s@48_@iwK}#Dv(J9*dRz^0^dVsxIZ#$3$s6&Ky1dviDgQTmCh#K zT?v|%1JH~t&C#!I)plqxdgsP%;5pROWW{`toSFa2+&nUs1il_pJ?7L-t22=OlhD?1 zSl^NuDU^n}r{{J-$UJIuv%Nr6cfM11$(%?_W)b5V6L>;{6e{q3U~+;i`=Ufr8vylM z^e0d>tqAU6@=J*SQZ$W!uVdzP)!lQzy%4HQ*dBj6)uN5fthDT zkLQ8BLXkQZ!>oPi!5K_vDf0Iu%=DC69C9Ur)?q|*!bOBHjZkGPw|AOv1&~!t>za1z z)~GxRGrQ~6wFJovDq;fWNDdoWqBDxxgzmnxI*3)Zn_2dheT$CdE-$Uu^L&{7F%>ZD z&Lf4sEyF3(`I75~)WV0s3rxE~SpR0gy}QR=dAsu|Gex+H`rzK5DMEp~zoZ zwbiU(nnoo_@JRu>c(<7-Apkh;fL5~paU*|;%YWlPK~~`N3;Bh?$AAa*fo(xq5^uKR aDwLbeL=Wm@A&MJmsCi9!2wl94$3Fpd0kP}= literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/support/troubleshooting/installation.doctree b/v1.12/.doctrees/support/troubleshooting/installation.doctree new file mode 100644 index 0000000000000000000000000000000000000000..03f2171d0f379a787b1b5cd4159397454e329831 GIT binary patch literal 9193 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

          P zfs?`Q09TPwgZua!E&xP+^Qs-%anUN4l|kF`=iv`guloJ%TEY1!r1I#63BT0O-2 z9|j_!98;nJG24T|P(Yi@8H!KJVkJuV;S7OL@2t*y?&*HI!dn_!8+6S;?3wS_yA#cDkMF}UV@=;H z;VKPMv>faM^1?+ht5*|h?RK)mZY|RlhsiFXP9VQvMR*PTyr_~$1mKKw06>AYBIsAB zaM(gZeeb&k5vuq&nW#X&uyQh%Ohgs~hjFyY)>eraRlJ@~9nPENL;R$b$l?)by~I_}Y4pRVKNVAt6BE^vNh zCW6#db)IcOS5Cf)EDL%meor?Jp=e`2{rLuR92#GzKfj4{!x|m> zQ^8*K#v=XsEu^nEK1zR@SUztw=+6XI8{>VAQ=62!!D-4{z0F&^&0D+8Te{6#xy@U+ z&1>I|odvi4YHr&WHK$6e3X+&8WF|< z&>-HB`c>rwN2cG9&fsq$$IY_uX;J4d@6No`rN_Hk99O;aN(Z~z$4nYTGJp$4s`^Z1~yqTLHR)?I%Qtaa|%RW*v`o`@NU!(bQ<3R z-4@0;DSO;IhytGgITsFdA}2i$m`9l!2)!`J$)D^;1|fC{N|TpPnM8q4g8mDaI9Koj qh(yW)w4o3M+F*+Xi!%!^(4Fy!0+TeP+nk3`AZt~BpcCVA!T$kYBAc23 literal 0 HcmV?d00001 diff --git a/v1.12/.nojekyll b/v1.12/.nojekyll new file mode 100644 index 00000000000..e69de29bb2d diff --git a/v1.12/404.html b/v1.12/404.html new file mode 100644 index 00000000000..fa7ae55164f --- /dev/null +++ b/v1.12/404.html @@ -0,0 +1,31 @@ + + + + + + + + + ScyllaDB + + + + + + + + + + + +

          + + + \ No newline at end of file diff --git a/v1.12/CNAME b/v1.12/CNAME new file mode 100644 index 00000000000..12aae904168 --- /dev/null +++ b/v1.12/CNAME @@ -0,0 +1 @@ +operator.docs.scylladb.com \ No newline at end of file diff --git a/v1.12/_images/clusterip.svg b/v1.12/_images/clusterip.svg new file mode 100644 index 00000000000..1c74e5e69ba --- /dev/null +++ b/v1.12/_images/clusterip.svg @@ -0,0 +1,3 @@ + + +
          Service
          ClusterIP
          10.0.0.1
          Servi...
          Service
          ClusterIP
          10.0.0.2
          Servi...
          Service
          ClusterIP
          10.0.0.3
          Servi...
          Pod
          Client
          Pod...
          Kubernetes cluster
          Kubernetes cluster
          Text is not SVG - cannot display
          \ No newline at end of file diff --git a/v1.12/_images/loadbalancer.svg b/v1.12/_images/loadbalancer.svg new file mode 100644 index 00000000000..c86a9a2a46b --- /dev/null +++ b/v1.12/_images/loadbalancer.svg @@ -0,0 +1,3 @@ + + +
          Service
          LoadBalancer
          Servi...
          Service
          LoadBalancer
          Servi...
          Service
          LoadBalancer
          Servi...
          Kubernetes cluster
          Kubernetes cluster
          VPC
          VPC
          Cloud Load
          Balancing
          Cloud...
          Cloud Load
          Balancing
          Cloud...
          Cloud Load
          Balancing
          Cloud...
          Client
          Client
          Internet
          Internet
          Text is not SVG - cannot display
          \ No newline at end of file diff --git a/v1.12/_images/logo.png b/v1.12/_images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbfedad2ac875f6fa53f8f100e926c473364409 GIT binary patch literal 35103 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 + +
          Kubernetes cluster
          Kubernetes cluster
          Virtual Machine
          Client
          10.0.0.4
          Virtu...
          VPC A
          VPC A
          Pod
          Client
          20.0.0.5
          Pod...
          Kubernetes cluster
          Kubernetes cluster
          Virtual Machine
          Client
          20.0.0.4
          Virtu...
          VPC B
          VPC B
          Pod
          Client
          10.0.0.5
          Pod...
          VPC Peering
          VPC Peering


          Service
          Headless
          Service...


          Service
          Headless
          Service...


          Service
          Headless
          Service...


          Service
          Headless
          Service...


          Service
          Headless
          Service...


          Service
          Headless
          Service...
          PodIP: 10.0.0.3
          PodIP: 10.0.0...
          PodIP: 10.0.0.2
          PodIP: 10.0.0...
          PodIP: 10.0.0.1
          PodIP: 10.0.0...
          PodIP: 20.0.0.1
          PodIP: 20.0.0...
          PodIP: 20.0.0.2
          PodIP: 20.0.0...
          PodIP: 20.0.0.1
          PodIP: 20.0.0...
          Text is not SVG - cannot display
          \ No newline at end of file diff --git a/v1.12/_images/podips.svg b/v1.12/_images/podips.svg new file mode 100644 index 00000000000..03f1a44c7d6 --- /dev/null +++ b/v1.12/_images/podips.svg @@ -0,0 +1,3 @@ + + +
          Service
          ClusterIP
          10.0.0.1
          Servi...
          Service
          ClusterIP
          10.0.0.2
          Servi...
          Service
          ClusterIP
          10.0.0.3
          Servi...
          Pod
          Client
          20.0.0.5
          Pod...
          Kubernetes cluster
          Kubernetes cluster
          Virtual Machine
          Client
          20.0.0.4
          Virtu...
          PodIP: 20.0.0.1
          PodIP: 20.0.0...
          PodIP: 20.0.0.2
          PodIP: 20.0.0...
          PodIP: 20.0.0.3
          PodIP: 20.0.0...
          VPC
          VPC
          Text is not SVG - cannot display
          \ No newline at end of file diff --git a/v1.12/_sources/api-reference/groups/scylla.scylladb.com.rst.txt b/v1.12/_sources/api-reference/groups/scylla.scylladb.com.rst.txt new file mode 100644 index 00000000000..235ba241a48 --- /dev/null +++ b/v1.12/_sources/api-reference/groups/scylla.scylladb.com.rst.txt @@ -0,0 +1,8 @@ +scylla.scylladb.com +=================== + +.. toctree:: + :glob: + :maxdepth: 1 + + scylla.scylladb.com/* diff --git a/v1.12/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt b/v1.12/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt new file mode 100644 index 00000000000..e2499e4aa0a --- /dev/null +++ b/v1.12/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt @@ -0,0 +1,1629 @@ +NodeConfig (scylla.scylladb.com/v1alpha1) +========================================= + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: NodeConfig +| **PluralName**: nodeconfigs +| **SingularName**: nodeconfig +| **Scope**: Cluster +| **ListKind**: NodeConfigList +| **Served**: true +| **Storage**: true + +Description +----------- + + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - + * - :ref:`status` + - object + - + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - disableOptimizations + - boolean + - disableOptimizations controls if nodes matching placement requirements are going to be optimized. Turning off optimizations on already optimized Nodes does not revert changes. + * - :ref:`localDiskSetup` + - object + - localDiskSetup contains options of automatic local disk setup. + * - :ref:`placement` + - object + - placement contains scheduling rules for NodeConfig Pods. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup: + +.spec.localDiskSetup +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +localDiskSetup contains options of automatic local disk setup. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`filesystems` + - array (object) + - filesystems is a list of filesystem configurations. + * - :ref:`loopDevices` + - array (object) + - loops is a list of loop device configurations. + * - :ref:`mounts` + - array (object) + - mounts is a list of mount configuration. + * - :ref:`raids` + - array (object) + - raids is a list of raid configurations. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.filesystems[]: + +.spec.localDiskSetup.filesystems[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +FilesystemConfiguration specifies filesystem configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - device + - string + - device is a path to the device where the desired filesystem should be created. + * - type + - string + - type is a desired filesystem type. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.loopDevices[]: + +.spec.localDiskSetup.loopDevices[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +LoopDeviceConfiguration specifies loop device configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - imagePath + - string + - imagePath specifies path on host where backing image file for loop device should be located. + * - name + - string + - name specifies the name of the symlink that will point to actual loop device, created under `/dev/loops/`. + * - size + - + - size specifies the size of the loop device. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.mounts[]: + +.spec.localDiskSetup.mounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +MountConfiguration specifies mount configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - device + - string + - device is path to a device that should be mounted. + * - fsType + - string + - fsType specifies the filesystem on the device. + * - mountPoint + - string + - mountPoint is a path where the device should be mounted at. + * - unsupportedOptions + - array (string) + - unsupportedOptions is a list of mount options used during device mounting. unsupported in this field name means that we won't support all the available options passed down using this field. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[]: + +.spec.localDiskSetup.raids[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RAIDConfiguration is a configuration of a raid array. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`RAID0` + - object + - RAID0 specifies RAID0 options. + * - name + - string + - name specifies the name of the raid device to be created under in `/dev/md/`. + * - type + - string + - type is a type of raid array. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[].RAID0: + +.spec.localDiskSetup.raids[].RAID0 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RAID0 specifies RAID0 options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`devices` + - object + - devices defines which devices constitute the raid array. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[].RAID0.devices: + +.spec.localDiskSetup.raids[].RAID0.devices +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +devices defines which devices constitute the raid array. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - modelRegex + - string + - modelRegex is a regular expression filtering devices by their model name. + * - nameRegex + - string + - nameRegex is a regular expression filtering devices by their name. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement: + +.spec.placement +^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement contains scheduling rules for NodeConfig Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`affinity` + - object + - affinity is a group of affinity scheduling rules for NodeConfig Pods. + * - :ref:`nodeSelector` + - object + - nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. + * - :ref:`tolerations` + - array (object) + - tolerations is a group of tolerations NodeConfig Pods are going to have. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity: + +.spec.placement.affinity +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +affinity is a group of affinity scheduling rules for NodeConfig Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - Describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + * - :ref:`podAntiAffinity` + - object + - Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity: + +.spec.placement.affinity.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity: + +.spec.placement.affinity.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity: + +.spec.placement.affinity.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.nodeSelector: + +.spec.placement.nodeSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.tolerations[]: + +.spec.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`conditions` + - array (object) + - conditions represents the latest available observations of current state. + * - :ref:`nodeStatuses` + - array (object) + - nodeStatuses hold the status for each tuned node. + * - observedGeneration + - integer + - observedGeneration indicates the most recent generation observed by the controller. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is last time the condition transitioned from one status to another. + * - message + - string + - message is a human-readable message indicating details about the transition. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason is the reason for condition's last transition. + * - status + - string + - status represents the state of the condition, one of True, False, or Unknown. + * - type + - string + - type is the type of the NodeConfig condition. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status.nodeStatuses[]: + +.status.nodeStatuses[] +^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - + * - tunedContainers + - array (string) + - + * - tunedNode + - boolean + - diff --git a/v1.12/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt b/v1.12/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt new file mode 100644 index 00000000000..67e3e627814 --- /dev/null +++ b/v1.12/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt @@ -0,0 +1,4972 @@ +ScyllaCluster (scylla.scylladb.com/v1) +====================================== + +| **APIVersion**: scylla.scylladb.com/v1 +| **Kind**: ScyllaCluster +| **PluralName**: scyllaclusters +| **SingularName**: scyllacluster +| **Scope**: Namespaced +| **ListKind**: ScyllaClusterList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaCluster defines a Scylla cluster. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of this scylla cluster. + * - :ref:`status` + - object + - status is the current status of this scylla cluster. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of this scylla cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - agentRepository + - string + - agentRepository is the repository to pull the agent image from. + * - agentVersion + - string + - agentVersion indicates the version of Scylla Manager Agent to use. + * - :ref:`alternator` + - object + - alternator designates this cluster an Alternator cluster. + * - automaticOrphanedNodeCleanup + - boolean + - automaticOrphanedNodeCleanup controls if automatic orphan node cleanup should be performed. + * - :ref:`backups` + - array (object) + - backups specifies backup tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored. + * - cpuset + - boolean + - cpuset determines if the cluster will use cpu-pinning for max performance. + * - :ref:`datacenter` + - object + - datacenter holds a specification of a datacenter. + * - developerMode + - boolean + - developerMode determines if the cluster runs in developer-mode. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this cluster is reachable by. These domains are used when setting up the infrastructure, like certificates. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - externalSeeds + - array (string) + - externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as "seeds" parameter of seed-provider. + * - forceRedeploymentReason + - string + - forceRedeploymentReason can be used to force a rolling update of all racks by providing a unique string. + * - :ref:`genericUpgrade` + - object + - genericUpgrade allows to configure behavior of generic upgrade logic. + * - :ref:`imagePullSecrets` + - array (object) + - imagePullSecrets is an optional list of references to secrets in the same namespace used for pulling Scylla and Agent images. + * - minReadySeconds + - integer + - minReadySeconds is the minimum number of seconds for which a newly created ScyllaDB node should be ready for it to be considered available. When used to control load balanced traffic, this can give the load balancer in front of a node enough time to notice that the node is ready and start forwarding traffic in time. Because it all depends on timing, the order is not guaranteed and, if possible, you should use readinessGates instead. If not provided, Operator will determine this value. + * - minTerminationGracePeriodSeconds + - integer + - minTerminationGracePeriodSeconds specifies minimum duration in seconds to wait before every drained node is terminated. This gives time to potential load balancer in front of a node to notice that node is not ready anymore and stop forwarding new requests. This applies only when node is terminated gracefully. If not provided, Operator will determine this value. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`network` + - object + - network holds the networking config. + * - :ref:`podMetadata` + - object + - podMetadata controls shared metadata for all pods created based on this spec. + * - :ref:`readinessGates` + - array (object) + - readinessGates specifies custom readiness gates that will be evaluated for every ScyllaDB Pod readiness. It's projected into every ScyllaDB Pod as its readinessGate. Refer to upstream documentation to learn more about readiness gates. + * - :ref:`repairs` + - array (object) + - repairs specify repair tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored. + * - repository + - string + - repository is the image repository to pull the Scylla image from. + * - scyllaArgs + - string + - scyllaArgs will be appended to Scylla binary during startup. This is supported from 4.2.0 Scylla version. + * - sysctls + - array (string) + - sysctls holds the sysctl properties to be applied during initialization given as a list of key=value pairs. Example: fs.aio-max-nr=232323 + * - version + - string + - version is a version tag of Scylla to use. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator: + +.spec.alternator +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +alternator designates this cluster an Alternator cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - insecureDisableAuthorization + - boolean + - insecureDisableAuthorization disables Alternator authorization. If not specified, the authorization is enabled. For backwards compatibility the authorization is disabled when this field is not specified and a manual port is used. + * - insecureEnableHTTP + - boolean + - insecureEnableHTTP enables serving Alternator traffic also on insecure HTTP port. + * - port + - integer + - port is the port number used to bind the Alternator API. Deprecated: `port` is deprecated and may be ignored in the future. Please make sure to avoid using hostNetworking and work with standard Kubernetes concepts like Services. + * - :ref:`servingCertificate` + - object + - servingCertificate references a TLS certificate for serving secure traffic. + * - writeIsolation + - string + - writeIsolation indicates the isolation level. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate: + +.spec.alternator.servingCertificate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +servingCertificate references a TLS certificate for serving secure traffic. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`operatorManagedOptions` + - object + - operatorManagedOptions specifies options for certificates manged by the operator. + * - type + - string + - type determines the source of this certificate. + * - :ref:`userManagedOptions` + - object + - userManagedOptions specifies options for certificates manged by users. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate.operatorManagedOptions: + +.spec.alternator.servingCertificate.operatorManagedOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +operatorManagedOptions specifies options for certificates manged by the operator. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - additionalDNSNames + - array (string) + - additionalDNSNames represents external DNS names that the certificates should be signed for. + * - additionalIPAddresses + - array (string) + - additionalIPAddresses represents external IP addresses that the certificates should be signed for. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate.userManagedOptions: + +.spec.alternator.servingCertificate.userManagedOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +userManagedOptions specifies options for certificates manged by users. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - secretName + - string + - secretName references a kubernetes.io/tls type secret containing the TLS cert and key. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.backups[]: + +.spec.backups[] +^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - dc + - array (string) + - dc is a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup. + * - interval + - string + - interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. + * - keyspace + - array (string) + - keyspace is a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - location + - array (string) + - location is a list of backup locations in the format [:]: ex. s3:my-bucket. The : part is optional and is only needed when different datacenters are being used to upload data to different locations. must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden. The only supported storage at the moment are s3 and gcs. + * - name + - string + - name is a unique name of a task. + * - numRetries + - integer + - numRetries indicates how many times a scheduled task will be retried before failing. + * - rateLimit + - array (string) + - rateLimit is a list of megabytes (MiB) per second rate limits expressed in the format [:]. The : part is optional and only needed when different datacenters need different upload limits. Set to 0 for no limit (default 100). + * - retention + - integer + - retention is the number of backups which are to be stored. + * - snapshotParallel + - array (string) + - snapshotParallel is a list of snapshot parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set, the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. + * - startDate + - string + - startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. + * - uploadParallel + - array (string) + - uploadParallel is a list of upload parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter: + +.spec.datacenter +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +datacenter holds a specification of a datacenter. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - name is the name of the scylla datacenter. Used in the cassandra-rackdc.properties file. + * - :ref:`racks` + - array (object) + - racks specify the racks in the datacenter. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[]: + +.spec.datacenter.racks[] +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RackSpec is the desired state for a Scylla Rack. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`agentResources` + - object + - agentResources specify the resources for the Agent container. + * - :ref:`agentVolumeMounts` + - array (object) + - AgentVolumeMounts to be added to Agent container. + * - members + - integer + - members is the number of Scylla instances in this rack. + * - name + - string + - name is the name of the Scylla Rack. Used in the cassandra-rackdc.properties file. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Scylla is scheduled on. + * - :ref:`resources` + - object + - resources the Scylla container will use. + * - scyllaAgentConfig + - string + - Scylla config map name to customize scylla manager agent + * - scyllaConfig + - string + - Scylla config map name to customize scylla.yaml + * - :ref:`storage` + - object + - storage describes the underlying storage that Scylla will consume. + * - :ref:`volumeMounts` + - array (object) + - VolumeMounts to be added to Scylla container. + * - :ref:`volumes` + - array (object) + - Volumes added to Scylla Pod. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources: + +.spec.datacenter.racks[].agentResources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +agentResources specify the resources for the Agent container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.claims[]: + +.spec.datacenter.racks[].agentResources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.limits: + +.spec.datacenter.racks[].agentResources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.requests: + +.spec.datacenter.racks[].agentResources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentVolumeMounts[]: + +.spec.datacenter.racks[].agentVolumeMounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +VolumeMount describes a mounting of a Volume within a container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - mountPath + - string + - Path within the container at which the volume should be mounted. Must not contain ':'. + * - mountPropagation + - string + - mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + * - name + - string + - This must match the Name of a Volume. + * - readOnly + - boolean + - Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + * - subPath + - string + - Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + * - subPathExpr + - string + - Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement: + +.spec.datacenter.racks[].placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Scylla is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity: + +.spec.datacenter.racks[].placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity: + +.spec.datacenter.racks[].placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity: + +.spec.datacenter.racks[].placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.tolerations[]: + +.spec.datacenter.racks[].placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources: + +.spec.datacenter.racks[].resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Scylla container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.claims[]: + +.spec.datacenter.racks[].resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.limits: + +.spec.datacenter.racks[].resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.requests: + +.spec.datacenter.racks[].resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage: + +.spec.datacenter.racks[].storage +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storage describes the underlying storage that Scylla will consume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - capacity + - string + - capacity describes the requested size of each persistent volume. + * - :ref:`metadata` + - object + - metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn't be relied on in any way. + * - storageClassName + - string + - storageClassName is the name of a storageClass to request. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata: + +.spec.datacenter.racks[].storage.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn't be relied on in any way. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata.annotations: + +.spec.datacenter.racks[].storage.metadata.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata.labels: + +.spec.datacenter.racks[].storage.metadata.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumeMounts[]: + +.spec.datacenter.racks[].volumeMounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +VolumeMount describes a mounting of a Volume within a container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - mountPath + - string + - Path within the container at which the volume should be mounted. Must not contain ':'. + * - mountPropagation + - string + - mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + * - name + - string + - This must match the Name of a Volume. + * - readOnly + - boolean + - Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + * - subPath + - string + - Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + * - subPathExpr + - string + - Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[]: + +.spec.datacenter.racks[].volumes[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Volume represents a named volume in a pod that may be accessed by any container in the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`awsElasticBlockStore` + - object + - awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + * - :ref:`azureDisk` + - object + - azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + * - :ref:`azureFile` + - object + - azureFile represents an Azure File Service mount on the host and bind mount to the pod. + * - :ref:`cephfs` + - object + - cephFS represents a Ceph FS mount on the host that shares a pod's lifetime + * - :ref:`cinder` + - object + - cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - :ref:`configMap` + - object + - configMap represents a configMap that should populate this volume + * - :ref:`csi` + - object + - csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). + * - :ref:`downwardAPI` + - object + - downwardAPI represents downward API about the pod that should populate this volume + * - :ref:`emptyDir` + - object + - emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + * - :ref:`ephemeral` + - object + - ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. + Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). + Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. + Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. + A pod can use both types of ephemeral volumes and persistent volumes at the same time. + * - :ref:`fc` + - object + - fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + * - :ref:`flexVolume` + - object + - flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + * - :ref:`flocker` + - object + - flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + * - :ref:`gcePersistentDisk` + - object + - gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - :ref:`gitRepo` + - object + - gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. + * - :ref:`glusterfs` + - object + - glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md + * - :ref:`hostPath` + - object + - hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. + * - :ref:`iscsi` + - object + - iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md + * - name + - string + - name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + * - :ref:`nfs` + - object + - nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - :ref:`persistentVolumeClaim` + - object + - persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + * - :ref:`photonPersistentDisk` + - object + - photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + * - :ref:`portworxVolume` + - object + - portworxVolume represents a portworx volume attached and mounted on kubelets host machine + * - :ref:`projected` + - object + - projected items for all in one resources secrets, configmaps, and downward API + * - :ref:`quobyte` + - object + - quobyte represents a Quobyte mount on the host that shares a pod's lifetime + * - :ref:`rbd` + - object + - rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md + * - :ref:`scaleIO` + - object + - scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + * - :ref:`secret` + - object + - secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + * - :ref:`storageos` + - object + - storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + * - :ref:`vsphereVolume` + - object + - vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].awsElasticBlockStore: + +.spec.datacenter.racks[].volumes[].awsElasticBlockStore +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine + * - partition + - integer + - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + * - readOnly + - boolean + - readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + * - volumeID + - string + - volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].azureDisk: + +.spec.datacenter.racks[].volumes[].azureDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cachingMode + - string + - cachingMode is the Host Caching mode: None, Read Only, Read Write. + * - diskName + - string + - diskName is the Name of the data disk in the blob storage + * - diskURI + - string + - diskURI is the URI of data disk in the blob storage + * - fsType + - string + - fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - kind + - string + - kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared + * - readOnly + - boolean + - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].azureFile: + +.spec.datacenter.racks[].volumes[].azureFile +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +azureFile represents an Azure File Service mount on the host and bind mount to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - secretName + - string + - secretName is the name of secret that contains Azure Storage Account Name and Key + * - shareName + - string + - shareName is the azure share Name + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cephfs: + +.spec.datacenter.racks[].volumes[].cephfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cephFS represents a Ceph FS mount on the host that shares a pod's lifetime + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - monitors + - array (string) + - monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - path + - string + - path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / + * - readOnly + - boolean + - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - secretFile + - string + - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - :ref:`secretRef` + - object + - secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - user + - string + - user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cephfs.secretRef: + +.spec.datacenter.racks[].volumes[].cephfs.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cinder: + +.spec.datacenter.racks[].volumes[].cinder +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - :ref:`secretRef` + - object + - secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. + * - volumeID + - string + - volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cinder.secretRef: + +.spec.datacenter.racks[].volumes[].cinder.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].configMap: + +.spec.datacenter.racks[].volumes[].configMap +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +configMap represents a configMap that should populate this volume + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional specify whether the ConfigMap or its keys must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].configMap.items[]: + +.spec.datacenter.racks[].volumes[].configMap.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi: + +.spec.datacenter.racks[].volumes[].csi +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - driver + - string + - driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. + * - fsType + - string + - fsType to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. + * - :ref:`nodePublishSecretRef` + - object + - nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + * - readOnly + - boolean + - readOnly specifies a read-only configuration for the volume. Defaults to false (read/write). + * - :ref:`volumeAttributes` + - object + - volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef: + +.spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi.volumeAttributes: + +.spec.datacenter.racks[].volumes[].csi.volumeAttributes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI: + +.spec.datacenter.racks[].volumes[].downwardAPI +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +downwardAPI represents downward API about the pod that should populate this volume + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - Items is a list of downward API volume file + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[]: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +DownwardAPIVolumeFile represents information to create the file containing the pod field + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`fieldRef` + - object + - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + * - mode + - integer + - Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + * - :ref:`resourceFieldRef` + - object + - Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - Version of the schema the FieldPath is written in terms of, defaults to "v1". + * - fieldPath + - string + - Path of the field to select in the specified API version. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - containerName + - string + - Container name: required for volumes, optional for env vars + * - divisor + - + - Specifies the output format of the exposed resources, defaults to "1" + * - resource + - string + - Required: resource to select + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].emptyDir: + +.spec.datacenter.racks[].volumes[].emptyDir +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - medium + - string + - medium represents what type of storage medium should back this directory. The default is "" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + * - sizeLimit + - + - sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral: + +.spec.datacenter.racks[].volumes[].ephemeral +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. + Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). + Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. + Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. + A pod can use both types of ephemeral volumes and persistent volumes at the same time. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`volumeClaimTemplate` + - object + - Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). + An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. + This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. + Required, must not be nil. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). + An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. + This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. + Required, must not be nil. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`metadata` + - object + - May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + * - :ref:`spec` + - object + - The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - accessModes + - array (string) + - accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + * - :ref:`dataSource` + - object + - dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + * - :ref:`dataSourceRef` + - object + - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + * - :ref:`resources` + - object + - resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + * - :ref:`selector` + - object + - selector is a label query over volumes to consider for binding. + * - storageClassName + - string + - storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + * - volumeAttributesClassName + - string + - volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. + * - volumeMode + - string + - volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + * - volumeName + - string + - volumeName is the binding reference to the PersistentVolume backing this claim. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + * - namespace + - string + - Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +selector is a label query over volumes to consider for binding. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].fc: + +.spec.datacenter.racks[].volumes[].fc +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine + * - lun + - integer + - lun is Optional: FC target lun number + * - readOnly + - boolean + - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - targetWWNs + - array (string) + - targetWWNs is Optional: FC target worldwide names (WWNs) + * - wwids + - array (string) + - wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume: + +.spec.datacenter.racks[].volumes[].flexVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - driver + - string + - driver is the name of the driver to use for this volume. + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + * - :ref:`options` + - object + - options is Optional: this field holds extra command options if any. + * - readOnly + - boolean + - readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume.options: + +.spec.datacenter.racks[].volumes[].flexVolume.options +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +options is Optional: this field holds extra command options if any. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume.secretRef: + +.spec.datacenter.racks[].volumes[].flexVolume.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flocker: + +.spec.datacenter.racks[].volumes[].flocker +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - datasetName + - string + - datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated + * - datasetUUID + - string + - datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].gcePersistentDisk: + +.spec.datacenter.racks[].volumes[].gcePersistentDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine + * - partition + - integer + - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - pdName + - string + - pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].gitRepo: + +.spec.datacenter.racks[].volumes[].gitRepo +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - directory + - string + - directory is the target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. + * - repository + - string + - repository is the URL + * - revision + - string + - revision is the commit hash for the specified revision. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].glusterfs: + +.spec.datacenter.racks[].volumes[].glusterfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - endpoints + - string + - endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + * - path + - string + - path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + * - readOnly + - boolean + - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].hostPath: + +.spec.datacenter.racks[].volumes[].hostPath +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - path + - string + - path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + * - type + - string + - type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].iscsi: + +.spec.datacenter.racks[].volumes[].iscsi +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - chapAuthDiscovery + - boolean + - chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication + * - chapAuthSession + - boolean + - chapAuthSession defines whether support iSCSI Session CHAP authentication + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine + * - initiatorName + - string + - initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. + * - iqn + - string + - iqn is the target iSCSI Qualified Name. + * - iscsiInterface + - string + - iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). + * - lun + - integer + - lun represents iSCSI Target Lun number. + * - portals + - array (string) + - portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. + * - :ref:`secretRef` + - object + - secretRef is the CHAP Secret for iSCSI target and initiator authentication + * - targetPortal + - string + - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].iscsi.secretRef: + +.spec.datacenter.racks[].volumes[].iscsi.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is the CHAP Secret for iSCSI target and initiator authentication + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].nfs: + +.spec.datacenter.racks[].volumes[].nfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - path + - string + - path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - readOnly + - boolean + - readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - server + - string + - server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].persistentVolumeClaim: + +.spec.datacenter.racks[].volumes[].persistentVolumeClaim +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - claimName + - string + - claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + * - readOnly + - boolean + - readOnly Will force the ReadOnly setting in VolumeMounts. Default false. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].photonPersistentDisk: + +.spec.datacenter.racks[].volumes[].photonPersistentDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - pdID + - string + - pdID is the ID that identifies Photon Controller persistent disk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].portworxVolume: + +.spec.datacenter.racks[].volumes[].portworxVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +portworxVolume represents a portworx volume attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - volumeID + - string + - volumeID uniquely identifies a Portworx volume + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected: + +.spec.datacenter.racks[].volumes[].projected +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +projected items for all in one resources secrets, configmaps, and downward API + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`sources` + - array (object) + - sources is the list of volume projections + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[]: + +.spec.datacenter.racks[].volumes[].projected.sources[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Projection that may be projected along with other supported volume types + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`clusterTrustBundle` + - object + - ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. + Alpha, gated by the ClusterTrustBundleProjection feature gate. + ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. + Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. + * - :ref:`configMap` + - object + - configMap information about the configMap data to project + * - :ref:`downwardAPI` + - object + - downwardAPI information about the downwardAPI data to project + * - :ref:`secret` + - object + - secret information about the secret data to project + * - :ref:`serviceAccountToken` + - object + - serviceAccountToken is information about the serviceAccountToken data to project + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. + Alpha, gated by the ClusterTrustBundleProjection feature gate. + ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. + Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". + * - name + - string + - Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector. + * - optional + - boolean + - If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles. + * - path + - string + - Relative path from the volume root to write the bundle. + * - signerName + - string + - Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].configMap: + +.spec.datacenter.racks[].volumes[].projected.sources[].configMap +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +configMap information about the configMap data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional specify whether the ConfigMap or its keys must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +downwardAPI information about the downwardAPI data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - Items is a list of DownwardAPIVolume file + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +DownwardAPIVolumeFile represents information to create the file containing the pod field + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`fieldRef` + - object + - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + * - mode + - integer + - Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + * - :ref:`resourceFieldRef` + - object + - Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - Version of the schema the FieldPath is written in terms of, defaults to "v1". + * - fieldPath + - string + - Path of the field to select in the specified API version. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - containerName + - string + - Container name: required for volumes, optional for env vars + * - divisor + - + - Specifies the output format of the exposed resources, defaults to "1" + * - resource + - string + - Required: resource to select + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].secret: + +.spec.datacenter.racks[].volumes[].projected.sources[].secret +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secret information about the secret data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional field specify whether the Secret or its key must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].secret.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken: + +.spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +serviceAccountToken is information about the serviceAccountToken data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - audience + - string + - audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. + * - expirationSeconds + - integer + - expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. + * - path + - string + - path is the path relative to the mount point of the file to project the token into. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].quobyte: + +.spec.datacenter.racks[].volumes[].quobyte +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +quobyte represents a Quobyte mount on the host that shares a pod's lifetime + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - group + - string + - group to map volume access to Default is no group + * - readOnly + - boolean + - readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. + * - registry + - string + - registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes + * - tenant + - string + - tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin + * - user + - string + - user to map volume access to Defaults to serivceaccount user + * - volume + - string + - volume is a string that references an already created Quobyte volume by name. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].rbd: + +.spec.datacenter.racks[].volumes[].rbd +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine + * - image + - string + - image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - keyring + - string + - keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - monitors + - array (string) + - monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - pool + - string + - pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - :ref:`secretRef` + - object + - secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - user + - string + - user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].rbd.secretRef: + +.spec.datacenter.racks[].volumes[].rbd.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].scaleIO: + +.spec.datacenter.racks[].volumes[].scaleIO +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". + * - gateway + - string + - gateway is the host address of the ScaleIO API Gateway. + * - protectionDomain + - string + - protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. + * - readOnly + - boolean + - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + * - sslEnabled + - boolean + - sslEnabled Flag enable/disable SSL communication with Gateway, default false + * - storageMode + - string + - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. + * - storagePool + - string + - storagePool is the ScaleIO Storage Pool associated with the protection domain. + * - system + - string + - system is the name of the storage system as configured in ScaleIO. + * - volumeName + - string + - volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].scaleIO.secretRef: + +.spec.datacenter.racks[].volumes[].scaleIO.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].secret: + +.spec.datacenter.racks[].volumes[].secret +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - optional + - boolean + - optional field specify whether the Secret or its keys must be defined + * - secretName + - string + - secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].secret.items[]: + +.spec.datacenter.racks[].volumes[].secret.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].storageos: + +.spec.datacenter.racks[].volumes[].storageos +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + * - volumeName + - string + - volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. + * - volumeNamespace + - string + - volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].storageos.secretRef: + +.spec.datacenter.racks[].volumes[].storageos.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].vsphereVolume: + +.spec.datacenter.racks[].volumes[].vsphereVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - storagePolicyID + - string + - storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + * - storagePolicyName + - string + - storagePolicyName is the storage Policy Based Management (SPBM) profile name. + * - volumePath + - string + - volumePath is the path that identifies vSphere volume vmdk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions: + +.spec.exposeOptions +^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`broadcastOptions` + - object + - BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients. + * - :ref:`cql` + - object + - cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`nodeService` + - object + - nodeService controls properties of Service dedicated for each ScyllaCluster node. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions: + +.spec.exposeOptions.broadcastOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`clients` + - object + - clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config. + * - :ref:`nodes` + - object + - nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.clients: + +.spec.exposeOptions.broadcastOptions.clients +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podIP` + - object + - podIP holds options related to Pod IP address. + * - type + - string + - type of the address that is broadcasted. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.clients.podIP: + +.spec.exposeOptions.broadcastOptions.clients.podIP +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podIP holds options related to Pod IP address. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - source + - string + - sourceType specifies source of the Pod IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.nodes: + +.spec.exposeOptions.broadcastOptions.nodes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podIP` + - object + - podIP holds options related to Pod IP address. + * - type + - string + - type of the address that is broadcasted. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.nodes.podIP: + +.spec.exposeOptions.broadcastOptions.nodes.podIP +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podIP holds options related to Pod IP address. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - source + - string + - sourceType specifies source of the Pod IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql: + +.spec.exposeOptions.cql +^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress: + +.spec.exposeOptions.cql.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. Unless disabled, there is an Ingress objects created for every Scylla node. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress.annotations: + +.spec.exposeOptions.cql.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress.labels: + +.spec.exposeOptions.cql.ingress.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService: + +.spec.exposeOptions.nodeService +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeService controls properties of Service dedicated for each ScyllaCluster node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - allocateLoadBalancerNodePorts + - boolean + - allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - externalTrafficPolicy + - string + - externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - internalTrafficPolicy + - string + - internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + * - loadBalancerClass + - string + - loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - type + - string + - type is the Kubernetes Service type. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService.annotations: + +.spec.exposeOptions.nodeService.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService.labels: + +.spec.exposeOptions.nodeService.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.genericUpgrade: + +.spec.genericUpgrade +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +genericUpgrade allows to configure behavior of generic upgrade logic. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - failureStrategy + - string + - failureStrategy specifies which logic is executed when upgrade failure happens. Currently only Retry is supported. + * - pollInterval + - string + - pollInterval specifies how often upgrade logic polls on state updates. Increasing this value should lower number of requests sent to apiserver, but it may affect overall time spent during upgrade. DEPRECATED. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.imagePullSecrets[]: + +.spec.imagePullSecrets[] +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.network: + +.spec.network +^^^^^^^^^^^^^ + +Description +""""""""""" +network holds the networking config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - dnsPolicy + - string + - dnsPolicy defines how a pod's DNS will be configured. + * - hostNetworking + - boolean + - hostNetworking determines if scylla uses the host's network namespace. Setting this option avoids going through Kubernetes SDN and exposes scylla on node's IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata: + +.spec.podMetadata +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podMetadata controls shared metadata for all pods created based on this spec. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata.annotations: + +.spec.podMetadata.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata.labels: + +.spec.podMetadata.labels +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.readinessGates[]: + +.spec.readinessGates[] +^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +PodReadinessGate contains the reference to a pod condition + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - conditionType + - string + - ConditionType refers to a condition in the pod's condition list with matching type. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.repairs[]: + +.spec.repairs[] +^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - dc + - array (string) + - dc is a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from backup. + * - failFast + - boolean + - failFast indicates if a repair should be stopped on first error. + * - host + - string + - host specifies a host to repair. If empty, all hosts are repaired. + * - intensity + - string + - intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs). Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs. Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume. For Scylla clusters that *do not support row-level repair*, intensity can be a decimal between (0,1). In that case it specifies percent of shards that can be repaired in parallel on a repair master node. For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1. + * - interval + - string + - interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. + * - keyspace + - array (string) + - keyspace is a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - name + - string + - name is a unique name of a task. + * - numRetries + - integer + - numRetries indicates how many times a scheduled task will be retried before failing. + * - parallel + - integer + - parallel is the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used. The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes. The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2. + * - smallTableThreshold + - string + - smallTableThreshold enable small table optimization for tables of size lower than given threshold. Supported units [B, MiB, GiB, TiB]. + * - startDate + - string + - startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status is the current status of this scylla cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - availableMembers + - integer + - availableMembers is the number of ScyllaDB members in all racks that are available. + * - :ref:`backups` + - array (object) + - backups reflects status of backup tasks. + * - :ref:`conditions` + - array (object) + - conditions hold conditions describing ScyllaCluster state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False. + * - managerId + - string + - managerId contains ID under which cluster was registered in Scylla Manager. + * - members + - integer + - members is the number of ScyllaDB members in all racks. + * - observedGeneration + - integer + - observedGeneration is the most recent generation observed for this ScyllaCluster. It corresponds to the ScyllaCluster's generation, which is updated on mutation by the API Server. + * - rackCount + - integer + - rackCount is the number of ScyllaDB racks in this cluster. + * - :ref:`racks` + - object + - racks reflect status of cluster racks. + * - readyMembers + - integer + - readyMembers is the number of ScyllaDB members in all racks that are ready. + * - :ref:`repairs` + - array (object) + - repairs reflects status of repair tasks. + * - :ref:`upgrade` + - object + - upgrade reflects state of ongoing upgrade procedure. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.backups[]: + +.status.backups[] +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - dc + - array (string) + - dc is a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup. + * - error + - string + - error holds the backup task error, if any. + * - id + - string + - id is the identification number of the backup task. + * - interval + - string + - interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. + * - keyspace + - array (string) + - keyspace is a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - location + - array (string) + - location is a list of backup locations in the format [:]: ex. s3:my-bucket. The : part is optional and is only needed when different datacenters are being used to upload data to different locations. must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden. The only supported storage at the moment are s3 and gcs. + * - name + - string + - name is a unique name of a task. + * - numRetries + - integer + - numRetries indicates how many times a scheduled task will be retried before failing. + * - rateLimit + - array (string) + - rateLimit is a list of megabytes (MiB) per second rate limits expressed in the format [:]. The : part is optional and only needed when different datacenters need different upload limits. Set to 0 for no limit (default 100). + * - retention + - integer + - retention is the number of backups which are to be stored. + * - snapshotParallel + - array (string) + - snapshotParallel is a list of snapshot parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set, the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. + * - startDate + - string + - startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. + * - uploadParallel + - array (string) + - uploadParallel is a list of upload parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + // other fields } + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + * - message + - string + - message is a human readable message indicating details about the transition. This may be an empty string. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + * - status + - string + - status of the condition, one of True, False, Unknown. + * - type + - string + - type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.racks: + +.status.racks +^^^^^^^^^^^^^ + +Description +""""""""""" +racks reflect status of cluster racks. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.repairs[]: + +.status.repairs[] +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - dc + - array (string) + - dc is a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from backup. + * - error + - string + - error holds the repair task error, if any. + * - failFast + - boolean + - failFast indicates if a repair should be stopped on first error. + * - host + - string + - host specifies a host to repair. If empty, all hosts are repaired. + * - id + - string + - id is the identification number of the repair task. + * - intensity + - string + - intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs). Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs. Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume. For Scylla clusters that *do not support row-level repair*, intensity can be a decimal between (0,1). In that case it specifies percent of shards that can be repaired in parallel on a repair master node. For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1. + * - interval + - string + - interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. + * - keyspace + - array (string) + - keyspace is a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - name + - string + - name is a unique name of a task. + * - numRetries + - integer + - numRetries indicates how many times a scheduled task will be retried before failing. + * - parallel + - integer + - parallel is the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used. The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes. The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2. + * - smallTableThreshold + - string + - smallTableThreshold enable small table optimization for tables of size lower than given threshold. Supported units [B, MiB, GiB, TiB]. + * - startDate + - string + - startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.upgrade: + +.status.upgrade +^^^^^^^^^^^^^^^ + +Description +""""""""""" +upgrade reflects state of ongoing upgrade procedure. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - currentNode + - string + - currentNode node under upgrade. DEPRECATED. + * - currentRack + - string + - currentRack rack under upgrade. DEPRECATED. + * - dataSnapshotTag + - string + - dataSnapshotTag is the snapshot tag of data keyspaces. + * - fromVersion + - string + - fromVersion reflects from which version ScyllaCluster is being upgraded. + * - state + - string + - state reflects current upgrade state. + * - systemSnapshotTag + - string + - systemSnapshotTag is the snapshot tag of system keyspaces. + * - toVersion + - string + - toVersion reflects to which version ScyllaCluster is being upgraded. diff --git a/v1.12/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt b/v1.12/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt new file mode 100644 index 00000000000..8116bbb2bf7 --- /dev/null +++ b/v1.12/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt @@ -0,0 +1,3441 @@ +ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1) +================================================= + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: ScyllaDBMonitoring +| **PluralName**: scylladbmonitorings +| **SingularName**: scylladbmonitoring +| **Scope**: Namespaced +| **ListKind**: ScyllaDBMonitoringList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaDBMonitoring defines a monitoring instance for ScyllaDB clusters. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of this ScyllaDBMonitoring. + * - :ref:`status` + - object + - status is the current status of this ScyllaDBMonitoring. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of this ScyllaDBMonitoring. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`components` + - object + - components hold additional config for the monitoring components in use. + * - :ref:`endpointsSelector` + - object + - endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors. + * - type + - string + - type determines the platform type of the monitoring setup. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components: + +.spec.components +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +components hold additional config for the monitoring components in use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`grafana` + - object + - grafana holds configuration for the grafana instance, if any. + * - :ref:`prometheus` + - object + - prometheus holds configuration for the prometheus instance, if any. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana: + +.spec.components.grafana +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +grafana holds configuration for the grafana instance, if any. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`authentication` + - object + - authentication hold the authentication options for accessing Grafana. + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing Grafana UI. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Grafana is scheduled on. + * - :ref:`resources` + - object + - resources the Grafana container will use. + * - servingCertSecretName + - string + - servingCertSecretName is the name of the secret holding a serving cert-key pair. If not specified, the operator will create a self-signed CA that creates the default serving cert-key pair. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.authentication: + +.spec.components.grafana.authentication +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +authentication hold the authentication options for accessing Grafana. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - insecureEnableAnonymousAccess + - boolean + - insecureEnableAnonymousAccess allows access to Grafana without authentication. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions: + +.spec.components.grafana.exposeOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing Grafana UI. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`webInterface` + - object + - webInterface specifies expose options for the user web interface. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface: + +.spec.components.grafana.exposeOptions.webInterface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +webInterface specifies expose options for the user web interface. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface.ingress: + +.spec.components.grafana.exposeOptions.webInterface.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations specifies custom annotations merged into every Ingress object. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this ingress is reachable by. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface.ingress.annotations: + +.spec.components.grafana.exposeOptions.webInterface.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations specifies custom annotations merged into every Ingress object. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement: + +.spec.components.grafana.placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Grafana is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity: + +.spec.components.grafana.placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity: + +.spec.components.grafana.placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity: + +.spec.components.grafana.placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.tolerations[]: + +.spec.components.grafana.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources: + +.spec.components.grafana.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Grafana container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.claims[]: + +.spec.components.grafana.resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.limits: + +.spec.components.grafana.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.requests: + +.spec.components.grafana.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus: + +.spec.components.prometheus +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +prometheus holds configuration for the prometheus instance, if any. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing Prometheus UI. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Prometheus is scheduled on. + * - :ref:`resources` + - object + - resources the Prometheus container will use. + * - :ref:`storage` + - object + - storage describes the underlying storage that Prometheus will consume. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions: + +.spec.components.prometheus.exposeOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing Prometheus UI. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`webInterface` + - object + - webInterface specifies expose options for the user web interface. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface: + +.spec.components.prometheus.exposeOptions.webInterface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +webInterface specifies expose options for the user web interface. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface.ingress: + +.spec.components.prometheus.exposeOptions.webInterface.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations specifies custom annotations merged into every Ingress object. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this ingress is reachable by. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface.ingress.annotations: + +.spec.components.prometheus.exposeOptions.webInterface.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations specifies custom annotations merged into every Ingress object. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement: + +.spec.components.prometheus.placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Prometheus is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity: + +.spec.components.prometheus.placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity: + +.spec.components.prometheus.placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity: + +.spec.components.prometheus.placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.tolerations[]: + +.spec.components.prometheus.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources: + +.spec.components.prometheus.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Prometheus container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.claims[]: + +.spec.components.prometheus.resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.limits: + +.spec.components.prometheus.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.requests: + +.spec.components.prometheus.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage: + +.spec.components.prometheus.storage +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storage describes the underlying storage that Prometheus will consume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations + * - :ref:`labels` + - object + - Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels + * - :ref:`volumeClaimTemplate` + - object + - volumeClaimTemplates is a PVC template defining storage to be used by Prometheus. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.annotations: + +.spec.components.prometheus.storage.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.labels: + +.spec.components.prometheus.storage.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate: + +.spec.components.prometheus.storage.volumeClaimTemplate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +volumeClaimTemplates is a PVC template defining storage to be used by Prometheus. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`metadata` + - object + - May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + * - :ref:`spec` + - object + - The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.metadata: + +.spec.components.prometheus.storage.volumeClaimTemplate.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - accessModes + - array (string) + - accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + * - :ref:`dataSource` + - object + - dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + * - :ref:`dataSourceRef` + - object + - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + * - :ref:`resources` + - object + - resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + * - :ref:`selector` + - object + - selector is a label query over volumes to consider for binding. + * - storageClassName + - string + - storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + * - volumeAttributesClassName + - string + - volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. + * - volumeMode + - string + - volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + * - volumeName + - string + - volumeName is the binding reference to the PersistentVolume backing this claim. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + * - namespace + - string + - Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +selector is a label query over volumes to consider for binding. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector: + +.spec.endpointsSelector +^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector.matchExpressions[]: + +.spec.endpointsSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector.matchLabels: + +.spec.endpointsSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status is the current status of this ScyllaDBMonitoring. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`conditions` + - array (object) + - conditions hold conditions describing ScyllaDBMonitoring state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False. + * - observedGeneration + - integer + - observedGeneration is the most recent generation observed for this ScyllaDBMonitoring. It corresponds to the ScyllaDBMonitoring's generation, which is updated on mutation by the API Server. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + // other fields } + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + * - message + - string + - message is a human readable message indicating details about the transition. This may be an empty string. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + * - status + - string + - status of the condition, one of True, False, Unknown. + * - type + - string + - type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) diff --git a/v1.12/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt b/v1.12/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt new file mode 100644 index 00000000000..682affc865e --- /dev/null +++ b/v1.12/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt @@ -0,0 +1,94 @@ +ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1) +=================================================== + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: ScyllaOperatorConfig +| **PluralName**: scyllaoperatorconfigs +| **SingularName**: scyllaoperatorconfig +| **Scope**: Cluster +| **ListKind**: ScyllaOperatorConfigList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaOperatorConfig describes the Scylla Operator configuration. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of the operator. + * - :ref:`status` + - object + - status defines the observed state of the operator. + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of the operator. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - scyllaUtilsImage + - string + - scyllaUtilsImage is a Scylla image used for running scylla utilities. + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status defines the observed state of the operator. + +Type +"""" +object + diff --git a/v1.12/_sources/api-reference/index.rst.txt b/v1.12/_sources/api-reference/index.rst.txt new file mode 100644 index 00000000000..85f7201ce76 --- /dev/null +++ b/v1.12/_sources/api-reference/index.rst.txt @@ -0,0 +1,13 @@ +API Reference +============= + +All APIs provided by Scylla Operator are defined using CRDs and adhere to Kubernetes API standards. You can find out how Kubernetes style REST APIs work on ``_ and ``_. + +API Groups and Kinds +-------------------- + +.. toctree:: + :maxdepth: 2 + :glob: + + groups/* diff --git a/v1.12/_sources/clients/alternator.md.txt b/v1.12/_sources/clients/alternator.md.txt new file mode 100644 index 00000000000..e6651c4c26f --- /dev/null +++ b/v1.12/_sources/clients/alternator.md.txt @@ -0,0 +1,94 @@ +# Using Alternator (DynamoDB) + +Alternator is a DynamoDB compatible API provided by ScyllaDB. +You can enable it on your ScyllaClusters by adding this section: +```yaml +spec: + alternator: {} +``` +While this is enough to turn it on, there are more options available. +Please refer to our [API documentation]() for details. + +:::{note} +Contrary to CQL clients, Alternator clients don't need to connect to every ScyllaDB node directly, nor discover the ScyllaDB node IP addresses. +Alternator protocol is based on HTTP and you can also expose the service "manually" with other networking concepts like Ingresses. +::: + +## Credentials + +Scylla Operator enables Alternator authorization by default. +Here is a quick example of how to get the token for accessing Alternator API. +To find out more, please refer to [ScyllaDB Alternator documentation](https://opensource.docs.scylladb.com/stable/alternator/compatibility.html#authorization). + +:::{caution} +The `salted_hash` is only present if password authentication for CQL is set up. + +Always make sure your clusters are configured to use Authentication and Authorization. +::: + +:::{tip} +You can find a quick example that enables Authentication and Authorization [here](./cql.md#authentication-and-authorization). +::: + +```bash +kubectl exec -it service/-client -c scylla -- cqlsh --user \ +-e "SELECT salted_hash FROM system_auth.roles WHERE role = ''" +``` + +## AWS CLI + +This paragraph shows how to use `aws dynamodb` cli to remotely connect to ScyllaDB Alternator API. + +:::{note} +This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured networking options differently, +or are using additional networking concepts like Ingresses, this address will need to be adjusted. +::: +:::{caution} +At the time of writing this document `kubectl exec -i` echoes passwords into the terminal. +It can be avoided by manually running `kubectl exec -it` and copying the output into a file / variable. +Because using `kubectl exec` with `-t` option merges standard and error outputs, we can't use it in the scripts bellow. + +See for more details. +::: + +```bash +SCYLLACLUSTER_NAME=scylladb +CQL_USER=cassandra +``` +```bash +SCYLLADB_EP="$( kubectl get "service/${SCYLLACLUSTER_NAME}-client" -o='jsonpath={.spec.clusterIP}' )" +AWS_ENDPOINT_URL_DYNAMODB="https://${SCYLLADB_EP}:8043" +export AWS_ENDPOINT_URL_DYNAMODB + +AWS_ACCESS_KEY_ID="${CQL_USER}" +export AWS_ACCESS_KEY_ID +AWS_SECRET_ACCESS_KEY="$( kubectl exec -i "service/${SCYLLACLUSTER_NAME}-client" -c scylla -- cqlsh --user ${CQL_USER} --no-color \ +-e "SELECT salted_hash from system_auth.roles WHERE role = '${AWS_ACCESS_KEY_ID}';" \ +| sed -e 's/\r//g' | sed -e '4q;d' | sed -E -e 's/^\s+//' )" +export AWS_SECRET_ACCESS_KEY + +AWS_CA_BUNDLE="$( mktemp )" +export AWS_CA_BUNDLE +kubectl get "configmap/${SCYLLACLUSTER_NAME}-alternator-local-serving-ca" --template='{{ index .data "ca-bundle.crt" }}' > "${AWS_CA_BUNDLE}" +``` + +Now we can use `aws dynamodb` cli without modifications. + +```bash +aws dynamodb create-table --table-name MusicCollection --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 +``` +```text +TABLEDESCRIPTION 2024-03-01T16:35:41+01:00 5c8aae70-d7e1-11ee-a99e-6f31aaf1d6d3 MusicCollection ACTIVE +ATTRIBUTEDEFINITIONS Artist S +ATTRIBUTEDEFINITIONS SongTitle S +KEYSCHEMA Artist HASH +KEYSCHEMA SongTitle RANGE +PROVISIONEDTHROUGHPUT 5 5 +``` + +```bash +aws dynamodb list-tables +``` +```text +TABLENAMES MusicCollection +``` diff --git a/v1.12/_sources/clients/cql.md.txt b/v1.12/_sources/clients/cql.md.txt new file mode 100644 index 00000000000..bd7e05dff93 --- /dev/null +++ b/v1.12/_sources/clients/cql.md.txt @@ -0,0 +1,129 @@ +# Using CQL + +`cqlsh` is the CQL shell for ScyllaDB. You can learn more about it in [ScyllaDB documentation](https://opensource.docs.scylladb.com/stable/cql/cqlsh.html). + +## Authentication and Authorization + +For security reasons, you should always enable Authentication and Authorization. +At this point, this needs to be done manually in ScyllaDB Config. +You can find an example configuration bellow: + +:::{code-block} yaml + :emphasize-lines: 7-8 + +apiVersion: v1 +kind: ConfigMap +metadata: + name: scylla-config +data: + scylla.yaml: | + authenticator: PasswordAuthenticator + authorizer: CassandraAuthorizer +::: + +## Embedded cqlsh (aka localhost) + +Every ScyllaDB node has an integrated `cqlsh` available. Here is an example of how it can be used: + +::::{tab-set} +:::{tab-item} Any ScyllaDB Node +```bash +kubectl exec -it service/-client -c scylla -- cqlsh -u +``` +::: +:::{tab-item} Specific ScyllaDB Node +```bash +kubectl exec -it pod/-- -c scylla -- cqlsh -u +``` +::: +:::: +```text +Password: +Connected to scylla at 127.0.0.1:9042 +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4] +Use HELP for help. +@cqlsh> +``` + +## Remote cqlsh + +This paragraph shows how to use `cqlsh` to remotely connect to a ScyllaDB node. +It is strongly recommended to access CQL over TLS connections on port `9142` instead of unencrypted `9042`. +Note that Scylla Operator sets up TLS certificates by default and makes them accessible in the Kubernetes API, +so the encrypted port `9142` works by default. + +:::{caution} +In future releases the unencrypted port `9042` will be disabled by default, unless explicitly opted-in. +::: + +:::{caution} +To avoid unnecessary complexity, the following example simplifies how the credentials file is created. +Please create the credentials file with your text editor and avoid your password leaking into your bash history or environment variables. +To store the configuration permanently, please adjust `SCYLLADB_CONFIG` variable to an empty folder of your choice. +::: + +:::{note} +This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured the networking options differently, +you may need to adjust this endpoint. Please refer to [discovery documentation page](./discovery.md). +::: + +```bash +SCYLLADB_CONFIG="$( mktemp -d )" + +cat < "${SCYLLADB_CONFIG}/credentials" +[PlainTextAuthProvider] +username = +password = +EOF +chmod 600 "${SCYLLADB_CONFIG}/credentials" + +SCYLLADB_DISCOVERY_EP="$( kubectl get service/-client -o='jsonpath={.spec.clusterIP}' )" +kubectl get configmap/-local-serving-ca -o='jsonpath={.data.ca-bundle\.crt}' > "${SCYLLADB_CONFIG}/serving-ca-bundle.crt" +kubectl get secret/-local-user-admin -o='jsonpath={.data.tls\.crt}' | base64 -d > "${SCYLLADB_CONFIG}/admin.crt" +kubectl get secret/-local-user-admin -o='jsonpath={.data.tls\.key}' | base64 -d > "${SCYLLADB_CONFIG}/admin.key" + +cat < "${SCYLLADB_CONFIG}/cqlshrc" +[authentication] +credentials = ${SCYLLADB_CONFIG}/credentials +[connection] +hostname = ${SCYLLADB_DISCOVERY_EP} +port = 9142 +ssl=true +factory = cqlshlib.ssl.ssl_transport_factory +[ssl] +validate=true +certfile=${SCYLLADB_CONFIG}/serving-ca-bundle.crt +usercert=${SCYLLADB_CONFIG}/admin.crt +userkey=${SCYLLADB_CONFIG}/admin.key +EOF +``` + +::::{tab-set} +:::{tab-item} Native +```bash +cqlsh --cqlshrc="${SCYLLADB_CONFIG}/cqlshrc" +``` +::: +:::{tab-item} Podman +```bash +podman run -it --rm --entrypoint=cqlsh \ +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro,Z" \ +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro,Z" \ +docker.io/scylladb/scylla:5.4.3 +``` +::: +:::{tab-item} Docker +```bash +docker run -it --rm --entrypoint=cqlsh \ +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro" \ +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro" \ +docker.io/scylladb/scylla:5.4.3 +``` +::: +:::: +```text +Connected to scylla at :9142 +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4] +Use HELP for help. +@cqlsh> +``` diff --git a/v1.12/_sources/clients/discovery.md.txt b/v1.12/_sources/clients/discovery.md.txt new file mode 100644 index 00000000000..b823a01cd04 --- /dev/null +++ b/v1.12/_sources/clients/discovery.md.txt @@ -0,0 +1,72 @@ +# Discovering ScyllaDB Nodes + +## Preface + +Outside the Kubernetes ecosystem, ScyllaDB nodes are usually set up on static IP addresses +and a fixed subset of them is configured as the initial contact points for ScyllaDB clients. +This has several disadvantages because this particular subset of nodes can be down at the time the client is (re)started, +or the nodes can be replaced and change their IP addresses. +The latter can be mitigated by using DNS and updating the records. + +Scylla Operator allows setting up ScyllaDB in several network configurations, some of which are based on ephemeral IPs. +This makes solving the above-mentioned issues more pressing. + +## ScyllaDB Discovery Endpoint + +For every ScyllaCluster, the operator will set up a Kubernetes Service (an internal load balancer) selecting all ScyllaDB nodes +and the internal Kubernetes controllers make sure to continuously update its endpoints with a subset of ScyllaDB nodes that are ready. +Because of that, you can always talk to ScyllaDB through this endpoint, as long as there are nodes to back it. +In case you are in the same Kubernetes cluster you can also use internal DNS for this service. + +Clients can use this endpoint for the initial connection to reach one of the ScyllaDB nodes that are ready +and from there the drivers will automatically discover the per-node IP address for every ScyllaDB node that's part of this cluster. + +This service is called `-client` and in its default configuration it uses ClusterIP which is virtual and local to the Kubernetes cluster. +It can be configured to be backed by an external load balancer, be exposed through an Ingress, an additional hop or in other ways. +Depending on how you have configured the networking, use the appropriate IP address or DNS name for your client. + +Here is an example of how the unmodified service looks like: + +```bash +kubectl get scyllacluster/scylla service/scylla-client +``` +``` +NAME READY MEMBERS RACKS AVAILABLE PROGRESSING DEGRADED AGE +scyllacluster.scylla.scylladb.com/scylla 1 1 1 True True True 10d + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-client ClusterIP 10.102.44.43 7000/TCP,7001/TCP,9042/TCP,9142/TCP,19042/TCP,19142/TCP,7199/TCP,10001/TCP,9180/TCP,5090/TCP,9100/TCP,9160/TCP,8043/TCP 10d +``` + +You can get only the ClusterIP using +```bash +kubectl get service/scylla-client -o='jsonpath={.spec.clusterIP}' +``` +or use its DNS name (`scylla-client..svc`). + +### Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary + +In case you are connecting from outside the Kubernetes cluster and using Pod IPs as your exposure type, you can expose just the `-client` service using an internal load balancer. +Having a stable contact point is especially important when using ephemeral Pod IPs. +Services configure internal load balancer using provider-specific annotations, so this may differ with your provider. + +:::{tip} +To learn more about exposing ScyllaClusters, visit our dedicated documentation [page](../exposing.md). +::: + +::::{tab-set} +:::{tab-item} GKE +```bash +kubectl patch service/-client -p '{"metadata": {"annotations": {"networking.gke.io/load-balancer-type": "Internal"}}, "spec": {"type": "LoadBalancer"}}' +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/-client +kubectl get service/-client -o='jsonpath={.status.loadBalancer.ingress[0].ip}' +``` +::: +:::{tab-item} EKS +```bash +kubectl patch service/-client -p '{"metadata": {"annotations": {"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal", "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "tcp"}}, "spec": {"type": "LoadBalancer"}}' +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/-client +kubectl get service/-client -o='jsonpath={.status.loadBalancer.ingress[0].hostname}' +``` +::: +:::: diff --git a/v1.12/_sources/clients/index.rst.txt b/v1.12/_sources/clients/index.rst.txt new file mode 100644 index 00000000000..0c8c4697608 --- /dev/null +++ b/v1.12/_sources/clients/index.rst.txt @@ -0,0 +1,12 @@ +========================================================== +Using ScyllaDB APIs +========================================================== + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + + discovery + cql + alternator diff --git a/v1.12/_sources/contributing.md.txt b/v1.12/_sources/contributing.md.txt new file mode 100644 index 00000000000..da5fc078732 --- /dev/null +++ b/v1.12/_sources/contributing.md.txt @@ -0,0 +1,155 @@ +# Contributing to Scylla Operator + +## Prerequisites + +To develop on scylla-operator, your environment must have the following: + +1. [Go 1.13](https://golang.org/dl/) + * Make sure [GOPATH](https://github.com/golang/go/wiki/SettingGOPATH) is set to `GOPATH=$HOME/go`. +2. [Kustomize v3.1.0](https://github.com/kubernetes-sigs/kustomize/releases/tag/v3.1.0) +3. [kubebuilder v2.3.1](https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v2.3.1) +4. [Docker](https://docs.docker.com/install/) +5. Git client installed +6. Github account + +To install all dependencies (Go, kustomize, kubebuilder, dep), simply run: +```bash +./install-dependencies.sh +``` + +## Initial Setup + +### Create a Fork + +From your browser navigate to [http://github.com/scylladb/scylla-operator](http://github.com/scylladb/scylla-operator) and click the "Fork" button. + +### Clone Your Fork + +Open a console window and do the following: + +```bash +# Create the scylla operator repo path +mkdir -p $GOPATH/src/github.com/scylladb + +# Navigate to the local repo path and clone your fork +cd $GOPATH/src/github.com/scylladb + +# Clone your fork, where is your GitHub account name +git clone https://github.com//scylla-operator.git +``` + +### Add Upstream Remote + +First you will need to add the upstream remote to your local git: +```bash +# Add 'upstream' to the list of remotes +git remote add upstream https://github.com/scylladb/scylla-operator.git + +# Verify the remote was added +git remote -v +``` +Now you should have at least `origin` and `upstream` remotes. You can also add other remotes to collaborate with other contributors. + +## Development + +To add a feature or to make a bug fix, you will need to create a branch in your fork and then submit a pull request (PR) from the branch. + +### Building the project + +You can build the project using the Makefile commands: +* Open the Makefile and change the `IMG` environment variable to a repository you have access to. +* Run `make docker-push` and wait for the image to be built and uploaded in your repo. + +### Create a Branch + +From a console, create a new branch based on your fork and start working on it: + +```bash +# Ensure all your remotes are up to date with the latest +git fetch --all + +# Create a new branch that is based off upstream master. Give it a simple, but descriptive name. +# Generally it will be two to three words separated by dashes and without numbers. +git checkout -b feature-name upstream/master +``` + +Now you are ready to make the changes and commit to your branch. + +### Updating Your Fork + +During the development lifecycle, you will need to keep up-to-date with the latest upstream master. As others on the team push changes, you will need to `rebase` your commits on top of the latest. This avoids unnecessary merge commits and keeps the commit history clean. + +Whenever you need to update your local repository, you never want to merge. You **always** will rebase. Otherwise you will end up with merge commits in the git history. If you have any modified files, you will first have to stash them (`git stash save -u ""`). + +```bash +git fetch --all +git rebase upstream/master +``` + +Rebasing is a very powerful feature of Git. You need to understand how it works or else you will risk losing your work. Read about it in the [Git documentation](https://git-scm.com/docs/git-rebase), it will be well worth it. In a nutshell, rebasing does the following: +- "Unwinds" your local commits. Your local commits are removed temporarily from the history. +- The latest changes from upstream are added to the history +- Your local commits are re-applied one by one +- If there are merge conflicts, you will be prompted to fix them before continuing. Read the output closely. It will tell you how to complete the rebase. +- When done rebasing, you will see all of your commits in the history. + +## Submitting a Pull Request + +Once you have implemented the feature or bug fix in your branch, you will open a PR to the upstream repo. Before opening the PR ensure you have added unit tests, are passing the integration tests, cleaned your commit history, and have rebased on the latest upstream. + +In order to open a pull request (PR) it is required to be up to date with the latest changes upstream. If other commits are pushed upstream before your PR is merged, you will also need to rebase again before it will be merged. + +### Commit History + +To prepare your branch to open a PR, you will need to have the minimal number of logical commits so we can maintain +a clean commit history. Most commonly a PR will include a single commit where all changes are squashed, although +sometimes there will be multiple logical commits. + +```bash +# Inspect your commit history to determine if you need to squash commits +git log + +# Rebase the commits and edit, squash, or even reorder them as you determine will keep the history clean. +# In this example, the last 5 commits will be opened in the git rebase tool. +git rebase -i HEAD~5 +``` + +Once your commit history is clean, ensure you have based on the [latest upstream](#updating-your-fork) before you open the PR. + +### Commit messages + +Please make the first line of your commit message a summary of the change that a user (not a developer) of Operator would like to read, +and prefix it with the most relevant directory of the change followed by a colon. +The changelog gets made by looking at just these first lines so make it good! + +If you have more to say about the commit, then enter a blank line and carry on the description. +Remember to say why the change was needed - the commit itself shows what was changed. + +Writing more is better than less. Comparing the behaviour before the change to that after the change is very useful. +Imagine you are writing to yourself in 12 months time when you've forgotten everything about what you just did, and you need to get up to speed quickly. + +If the change fixes an issue then write Fixes #1234 in the commit message. +This can be on the subject line if it will fit. If you don't want to close the associated issue just put #1234 and the change will get linked into the issue. + +Here is an example of a short commit message: + +``` +sidecar: log on reconcile loop - fixes #1234 +``` + +And here is an example of a longer one: +``` + +api: now supports host networking (#1234) + +The operator CRD now has a "network" property that can be used to +select host networking as well as setting the apropriate DNS policy. + +Fixes #1234 +``` + +### Submitting + +Go to the [Scylla Operator github](https://www.github.com/scylladb/scylla-operator) to open the PR. If you have pushed recently, you should see an obvious link to open the PR. If you have not pushed recently, go to the Pull Request tab and select your fork and branch for the PR. + +After the PR is open, you can make changes simply by pushing new commits. Your PR will track the changes in your fork and update automatically. diff --git a/v1.12/_sources/eks.md.txt b/v1.12/_sources/eks.md.txt new file mode 100644 index 00000000000..8f8c6b931d3 --- /dev/null +++ b/v1.12/_sources/eks.md.txt @@ -0,0 +1,129 @@ +# Deploying Scylla on EKS + +This guide is focused on deploying Scylla on EKS with improved performance. +Performance tricks used by the script won't work with different machine tiers. +It sets up the kubelets on EKS nodes to run with [static cpu policy](https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/) and uses [local sdd disks](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html) in RAID0 for maximum performance. + +Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the [general guide](generic.md). + +## TL;DR; + +If you don't want to run the commands step-by-step, you can just run a script that will set everything up for you: +```bash +# Edit according to your preference +EKS_REGION=us-east-1 +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c + +# From inside the examples/eks folder +cd examples/eks +./eks.sh -z "$EKS_ZONES" -r "$EKS_REGION" +``` + +After you deploy, see how you can [benchmark your cluster with cassandra-stress](generic.md#benchmark-with-cassandra-stress). + +## Walkthrough + +### EKS Setup + +#### Configure environment variables + +First of all, we export all the configuration options as environment variables. +Edit according to your own environment. + +``` +EKS_REGION=us-east-1 +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c +CLUSTER_NAME=scylla-demo +``` + +#### Creating an EKS cluster + +For this guide, we'll create an EKS cluster with the following: + +* A NodeGroup of 3 `i3-2xlarge` Nodes, where the Scylla Pods will be deployed. These nodes will only accept pods having `scylla-clusters` toleration. + +``` + - name: scylla-pool + instanceType: i3.2xlarge + desiredCapacity: 3 + labels: + scylla.scylladb.com/node-type: scylla + taints: + role: "scylla-clusters:NoSchedule" + ssh: + allow: true + kubeletExtraConfig: + cpuManagerPolicy: static +``` + +* A NodeGroup of 4 `c4.2xlarge` Nodes to deploy `cassandra-stress` later on. These nodes will only accept pods having `cassandra-stress` toleration. + +``` + - name: cassandra-stress-pool + instanceType: c4.2xlarge + desiredCapacity: 4 + labels: + pool: "cassandra-stress-pool" + taints: + role: "cassandra-stress:NoSchedule" + ssh: + allow: true +``` + +* A NodeGroup of 1 `i3.large` Node, where the monitoring stack and operator will be deployed. +``` + - name: monitoring-pool + instanceType: i3.large + desiredCapacity: 1 + labels: + pool: "monitoring-pool" + ssh: + allow: true +``` + +### Prerequisites + +#### Installing script third party dependencies + +Script requires several dependencies: +- eksctl - See: https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html +- kubectl - See: https://kubernetes.io/docs/tasks/tools/install-kubectl/ + +### Deploying ScyllaDB Operator + +Refer to [Deploying Scylla on a Kubernetes Cluster](generic.md) in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites. + +#### Setting up nodes for ScyllaDB + +ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you'll first need to form a RAID array from those disks. +`NodeConfig` performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in [Performance tuning](performance.md) section of ScyllaDB Operator's documentation. + +Deploy `NodeConfig` to let it take care of the above operations: +``` +kubectl apply --server-side -f examples/eks/nodeconfig-alpha.yaml +``` + +#### Deploying Local Volume Provisioner + +Afterwards, deploy ScyllaDB's [Local Volume Provisioner](https://github.com/scylladb/k8s-local-volume-provisioner), capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays. +``` +kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/ +kubectl apply --server-side -f examples/common/local-volume-provisioner/storageclass_xfs.yaml +``` + +### Deploying ScyllaDB + +Now you can follow the steps described in [Deploying Scylla on a Kubernetes Cluster](generic.md) to launch your ScyllaDB cluster in a highly performant environment. + +#### Accessing the database + +Instructions on how to access the database can also be found in the [generic guide](generic.md). + +### Deleting an EKS cluster + +Once you are done with your experiments delete your cluster using the following command: + +``` +eksctl delete cluster "${CLUSTER_NAME}" +``` diff --git a/v1.12/_sources/exposing.md.txt b/v1.12/_sources/exposing.md.txt new file mode 100644 index 00000000000..348bc4c233d --- /dev/null +++ b/v1.12/_sources/exposing.md.txt @@ -0,0 +1,300 @@ +# Exposing ScyllaCluster + +This document explains how ScyllaDB Operator exposes ScyllaClusters in different network setups. +A ScyllaCluster can be exposed in various network configurations, independently to clients and nodes. + +:::{note} +ScyllaClusters can be only exposed when the ScyllaDB version used version is `>=2023.1` ScyllaDB Enterprise or `>=5.2` ScyllaDB Open Source. +::: + +## Expose Options + +`exposeOptions` specifies configuration options for exposing ScyllaCluster's. +A ScyllaCluster created without any `exposeOptions` is equivalent to the following: + +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: ServiceClusterIP + nodes: + type: ServiceClusterIP +``` + +The following sections cover what every field controls and what the configuration options are. + +### Node Service Template + +`nodeService` serves as a template for a node-dedicated Service managed by the Scylla Operator for each node within a ScyllaCluster. +The properties of the Services depend on the selected type. +Additionally, there's an option to define custom annotations, incorporated into each node's Service, +which might be useful for further tweaking the Service properties or related objects. + +#### Headless Type + +For `Headless` type, Scylla Operator creates a Headless Service with a selector pointing to the particular node in the ScyllaCluster. +Such Service doesn't provide any additional IP addresses, and the internal DNS record resolves to the PodIP of a node. + +This type of Service is useful when ScyllaCluster nodes broadcast PodIPs to clients and other nodes. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless +``` + +#### ClusterIP Type + +For `ClusterIP` type, Scylla Operator creates a ClusterIP Service backed by a specific node in the ScyllaCluster. + +These IP addresses are only routable within the same Kubernetes cluster, so it's a good fit, if you don't want to expose them to other networks. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP +``` + +#### LoadBalancer Type + +For the `LoadBalancer` type, Scylla Operator generates a LoadBalancer Service that directs traffic to a specific node within the ScyllaCluster. +On platforms with support for external load balancers, this Service provisions one. +The accessibility of this load balancer's address depends on the platform and any customizations made; in some cases it may be reachable from the internal network or public Internet. + +Customizations are usually managed via Service annotations, key-value pairs provided in `annotations` field are merged into each Service object. +LoadBalancer Services should be configured to pass through entire traffic. +For example, to expose LoadBalancer only to internal network use the following annotations: + +::::{tab-set} +:::{tab-item} EKS +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + annotations: + service.beta.kubernetes.io/aws-load-balancer-scheme: internal + service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp +``` +::: +:::{tab-item} GKE +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + annotations: + networking.gke.io/load-balancer-type: Internal +``` +::: +:::: + +Check platform-specific documentation regarding LoadBalancer configuration to learn more about available options. + +LoadBalancer Service is a superset of ClusterIP Service, implying that each LoadBalancer Service also contains an allocated ClusterIP. +They can be configured using the following fields, which propagate to every node Service: +* externalTrafficPolicy +* internalTrafficPolicy +* loadBalancerClass +* allocateLoadBalancerNodePorts + +Check [Kubernetes Service documentation](https://kubernetes.io/docs/concepts/services-networking/service) to learn more about these options. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + loadBalancerClass: my-custom-load-balancer-class +``` + +--- + +### Broadcast Options + +Broadcast options control what is the source of the address being broadcasted to clients and nodes. +It's configured independently for clients and nodes because you may want to expose these two types of traffic on different networks. +Using different networks can help manage costs, reliability, latency, security policies or other metrics you care about. + +#### PodIP Type + +Address broadcasted to clients/nodes is taken from Pod. +By default, the address is taken from Pod's `status.PodIP` field. +Because a Pod can use multiple address, you may want to provide source options by specifying `podIP.source`. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: PodIP + podIP: + source: Status +``` + +#### ServiceClusterIP Type + +Address broadcasted to clients or nodes is taken from `spec.ClusterIP` field of a node's dedicated Service. + +In order to configure it, the `nodeService` template must specify a Service having a ClusterIP assigned. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: ServiceClusterIP +``` + +#### ServiceLoadBalancerIngress Type + +Address broadcasted to clients/nodes is taken from the node dedicated Service, from `status.ingress[0].ipAddress` or `status.ingress[0].hostname` field. + +In order to configure it, the `nodeService` template must specify the LoadBalancer Service. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: ServiceLoadBalancerIngress + podIP: + source: Status +``` + +## Deployment Examples + +The following section contains several specific examples of various network scenarios and explains how nodes and clients communicate with one another. +### In-cluster only + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: ServiceClusterIP + nodes: + type: ServiceClusterIP +``` + +Both client and nodes are deployed within the same Kubernetes cluster. +They talk through ClusterIP addresses taken from the Service. +Because ClusterIP Services are only routable within the same Kubernetes cluster, this cluster won't be reachable from outside. + +![ClusterIPs](static/exposing/clusterip.svg) + +### In-cluster node-to-node, VPC clients-to-nodes + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: PodIP + nodes: + type: ServiceClusterIP +``` + +In this scenario, we assume that the Pod IP subnet is routable within a VPC. +Clients within the VPC network can communicate directly with ScyllaCluster nodes using PodIPs. +Nodes communicate with each other exclusively within the same Kubernetes cluster. + +![PodIPs](static/exposing/podips.svg) + +### Multi VPC + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP +``` + +In this scenario, we set up two separate Kubernetes clusters in distinct VPCs. +These VPCs are interconnected to facilitate inter-VPC connectivity. +We operate on the assumption that the Pod IP subnet is routable within each VPC. + +Both ScyllaClusters use the same `exposeOptions`, nodes broadcast their Pod IP addresses, enabling them to establish connections with one another. +****Check other documentation pages to know how to connect two ScyllaClusters into one logical cluster. + +Clients, whether deployed within the same Kubernetes cluster or within a VPC, have the capability to reach nodes using their Pod IPs. +Since there is no requirement for any address other than the Pod IP, the `Headless` service type is sufficient. + +![MultiVPC](static/exposing/multivpc.svg) + +### Internet + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + broadcastOptions: + clients: + type: ServiceLoadBalancerIngress + nodes: + type: ClusterIP +``` + +We assume that a Kubernetes cluster has been deployed in a cloud provider environment that supports external load balancers. +By specifying the LoadBalancer type in the nodeService template, the Scylla Operator generates a dedicated LB Service for each node. +The cloud provider then establishes an external load balancer with an internet-accessible address. +ScyllaDB nodes broadcast this external address to clients, enabling drivers to connect and discover other nodes. +Since all ScyllaDB nodes reside within the same Kubernetes cluster, there is no need to route traffic through the internet. +Consequently, the nodes are configured to communicate via ClusterIP, which is also accessible within LoadBalancer Services. + +![Internet](static/exposing/loadbalancer.svg) + +--- + +Other more complex scenarios can be built upon these simple ones. diff --git a/v1.12/_sources/generic.md.txt b/v1.12/_sources/generic.md.txt new file mode 100644 index 00000000000..15049c5824d --- /dev/null +++ b/v1.12/_sources/generic.md.txt @@ -0,0 +1,386 @@ +# Deploying Scylla on a Kubernetes Cluster + +This is a guide to deploy a Scylla Cluster in a generic Kubernetes environment, meaning that Scylla will not be deployed with the ideal performance. +Scylla performs the best when it has fast disks and direct access to the cpu. +This requires some extra setup, which is platform-specific. +For specific configuration and setup, check for details about your particular environment: + +* [GKE](gke.md) + +## Prerequisites + +* A Kubernetes cluster +* A [Storage Class](https://kubernetes.io/docs/concepts/storage/storage-classes/) to provision [PersistentVolumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/). +* Helm 3 installed, Go to the [helm docs](https://docs.helm.sh/using_helm/#installing-helm) if you need to install it. + Make sure that you enable the [stable repository](https://github.com/helm/charts#how-do-i-enable-the-stable-repository-for-helm-3) + +## Running locally + +Running kubernetes locally is a daunting and error prone task. +Fortunately there are ways to make life easier and [Minikube](https://minikube.sigs.k8s.io/docs/) makes it a breeze. + +We need to give minikube a little bit more resources than default so start minikube like this: +```console +minikube start --cpus=6 +``` + +Then make kubectl aware of this local installation like this: +```console +eval $(minikube docker-env) +``` + +## Download Scylla Operator +In this guide you will be using the examples and manifests from [Scylla Operator repository](https://github.com/scylladb/scylla-operator), so start off by cloning it to your local machine. +```console +git clone git@github.com:scylladb/scylla-operator.git +cd scylla-operator +``` + +## Deploy Cert Manager +First deploy Cert Manager, you can either follow [upsteam instructions](https://cert-manager.io/docs/installation/kubernetes/) or use following command: + +```console +kubectl apply -f examples/common/cert-manager.yaml +``` +This will install Cert Manager to provision a self-signed certificate. + +Once it's deployed, wait until Cert Manager is ready: + +```console +kubectl wait --for condition=established crd/certificates.cert-manager.io crd/issuers.cert-manager.io +kubectl -n cert-manager rollout status deployment.apps/cert-manager-webhook +``` + +## Deploy Scylla Operator + +Deploy the Scylla Operator using the following commands: + +```console +kubectl apply -f deploy/operator.yaml +``` + +This will install the operator in namespace `scylla-operator`. +Wait until it's ready: + +```console +kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator +``` + +If you want to check the logs of the operator you can do so with: + + ```console +kubectl -n scylla-operator logs deployment.apps/scylla-operator +``` + +## Create and Initialize a Scylla Cluster + +Now that the operator is running, we can create an instance of a Scylla cluster by creating an instance of the `clusters.scylla.scylladb.com` resource. +Some of that resource's values are configurable, so feel free to browse `cluster.yaml` and tweak the settings to your liking. +Full details for all the configuration options can be found in the [Scylla Cluster CRD documentation](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). + +When you are ready to create a Scylla cluster, simply run: + +```console +kubectl create -f examples/generic/cluster.yaml +``` + +We can verify that a Kubernetes object has been created that represents our new Scylla cluster with the command below. +This is important because it shows that has successfully extended Kubernetes to make Scylla clusters a first class citizen in the Kubernetes cloud-native environment. + +```console +kubectl -n scylla get ScyllaCluster +``` + +Checking the pods that are created is as easy as: + +```console +kubectl -n scylla get pods +``` + +The output should be something like: + +```console +NAME READY STATUS RESTARTS AGE +simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 9m49s +simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 7m43s +simple-cluster-us-east-1-us-east-1a-2 2/2 Running 0 6m46s +``` + +It is important to note that the operator creates these instances according to a pattern. +This pattern is as follows: `CLUSTER_NAME-DATACENTER_NAME-RACK_NAME-INSTANCE_NUMBER` as specified in `cluster.yaml`. + +In the above example we have the following properties: + + - CLUSTER_NAME: `simple-cluster` + - DATACENTER_NAME: `us-east-1` + - RACK_NAME: `us-east-1a` + - INSTANCE_NUMBER: An automatically generated number attached to the pod name. + +We picked the names to resemble something you can find in a cloud service but this is inconsequential, they can be set to anything you want. + +To check if all the desired members are running, you should see the same number of entries from the following command as the number of members that was specified in `cluster.yaml`: + +```console +kubectl -n scylla get pod -l app=scylla +``` + +You can also track the state of a Scylla cluster from its status. To check the current status of a Cluster, run: + +```console +kubectl -n scylla describe ScyllaCluster simple-cluster +``` + +Checking the logs of the running scylla instances can be done like this: + +```console +kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 scylla +``` + +### Configure host networking + +To squeeze the most out of your deployment it is sometimes necessary to employ [host networking](https://kubernetes.io/docs/concepts/services-networking/). +To enable this the CRD allows for specifying a `network` parameter as such: + +```yaml + version: 5.4.0 + agentVersion: 3.2.5 + cpuset: true + network: + hostNetworking: true +``` + +This will result in hosts network to be used for the Scylla Stateful Set deployment. + +### Configure container kernel parameters + +Sometimes it is necessary to run the container with different kernel parameters. +In order to support this, the Scylla Operator defines a cluster property `sysctls` that is a list of the desired key-value pairs to set. + +___For example___: To increase the number events available for asynchronous IO processing in the Linux kernel to N set sysctls to`fs.aio-max-nr=N`. + +```yaml +spec: + sysctls: + - "fs.aio-max-nr=2097152" +``` + +### Deploying Alternator + +The operator is also capable of deploying [Alternator](https://www.scylladb.com/alternator/) instead of the regular Scylla. +This requires a small change in the cluster definition. +Change the `cluster.yaml` file from this: +```yaml +spec: + agentVersion: 3.2.5 + version: 5.4.0 + developerMode: true + datacenter: + name: us-east-1 +``` +to this: +```yaml +spec: + version: 5.4.0 + alternator: + port: 8000 + writeIsolation: only_rmw_uses_lwt + agentVersion: 3.2.5 + developerMode: true + datacenter: + name: us-east-1 +``` +You can specify whichever port you want. + +You must provide desired write isolation, supported values are: "always", "forbid_rmw", "only_rmw_uses_lwt". +Difference between those isolation levels can be found in Scylla Alternator documentation. + +Once this is done the regular CQL ports will no longer be available, the cluster is a pure Alternator cluster. + +## Accessing the Database + +* From kubectl: + +To get a cqlsh shell in your new Cluster: +```console +kubectl exec -n scylla -it simple-cluster-us-east-1-us-east-1a-0 -- cqlsh +> DESCRIBE KEYSPACES; +``` + + +* From inside a Pod: + +When you create a new Cluster, automatically creates a Service for the clients to use in order to access the Cluster. +The service's name follows the convention `-client`. +You can see this Service in your cluster by running: +```console +kubectl -n scylla describe service simple-cluster-client +``` +Pods running inside the Kubernetes cluster can use this Service to connect to Scylla. +Here's an example using the [Python Driver](https://github.com/datastax/python-driver): +```python +from cassandra.cluster import Cluster + +cluster = Cluster(['simple-cluster-client.scylla.svc']) +session = cluster.connect() +``` + +If you are running the Alternator you can access the API on the port you specified using plain http. + +## Configure Scylla + +The operator can take a ConfigMap and apply it to the scylla.yaml configuration file. +This is done by adding a ConfigMap to Kubernetes and refering to this in the Rack specification. +The ConfigMap is just a file called `scylla.yaml` that has the properties you want to change in it. +The operator will take the default properties for the rest of the configuration. + +* Create a ConfigMap the default name that the operator uses is `scylla-config`: +```console +kubectl create configmap scylla-config -n scylla --from-file=/path/to/scylla.yaml +``` +* Wait for the mount to propagate and then restart the cluster: +```console +kubectl rollout restart -n scylla statefulset/simple-cluster-us-east-1-us-east-1a +``` +* The new config should be applied automatically by the operator, check the logs to be sure. + +Configuring `cassandra-rackdc.properties` is done by adding the file to the same mount as `scylla.yaml`. +```console +kubectl create configmap scylla-config -n scylla --from-file=/tmp/scylla.yaml --from-file=/tmp/cassandra-rackdc.properties -o yaml --dry-run | kubectl replace -f - +``` +The operator will then apply the overridable properties `prefer_local` and `dc_suffix` if they are available in the provided mounted file. + +:::{note} +If you want to enable authentication, you first need to adjust `system_auth` keyspace replication factor to the number of nodes in the datacenter via cqlsh. It allows you to ensure that the user’s information is kept highly available for the cluster. If `system_auth` is not equal to the number of nodes and a node fails, the user whose information is on that node will be denied access. +For production environments only use `NetworkTopologyStrategy`. + +```shell +kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : };" +``` + +You can read more about enabling authentication in the [Enable authentication](https://opensource.docs.scylladb.com/stable/operating-scylla/security/authentication.html) section of ScyllaDB's documentation. +::: + +## Configure Scylla Manager Agent + +The operator creates a second container for each scylla instance that runs [Scylla Manager Agent](https://hub.docker.com/r/scylladb/scylla-manager-agent). +This container serves as a sidecar and it's the main endpoint for interacting with Scylla API. +The Scylla Manager Agent can be configured with various things such as the security token used to allow access to Scylla API and storage providers for backups. + +To configure the agent you just create a new secret called _scylla-agent-config-secret_ and populate it with the contents in the `scylla-manager-agent.yaml` file like this: +```console +kubectl create secret -n scylla generic scylla-agent-config-secret --from-file scylla-manager-agent.yaml +``` + +See [Scylla Manager Agent configuration](https://manager.docs.scylladb.com/stable/config/scylla-manager-config.html) for a complete reference of the Scylla Manager agent config file. + +### Scylla Manager Agent auth token + +Operator provisions Agent auth token by copying value from user provided config secret or auto generates it if it's empty. +To check which value is being used, decode content of `-auth-token` secret. +To change it simply remove the secret. Operator will create a new one. To pick up the change in the cluster, initiate a rolling restart. + +## Set up monitoring + +To set up monitoring using Prometheus and Grafana follow [this guide](monitoring.md). + +## Scale a ScyllaCluster + +The operator supports adding new nodes to existing racks, adding new racks to the cluster, as well as removing both single nodes and entire racks. To introduce the changes, edit the cluster with: +```console +kubectl -n scylla edit scyllaclusters.scylla.scylladb.com/simple-cluster +``` +* To modify the number of nodes in a rack, update the `members` field of the selected rack to a desired value. +* To add a new rack, append it to the `.spec.datacenter.racks` list. Remember to choose a unique rack name for the new rack. +* To remove a rack, first scale it down to zero nodes, and then remove it from `.spec.datacenter.racks` list. + +Having edited and saved the yaml, you can check your cluster's Status and Events to retrieve information about what's happening: +```console +kubectl -n scylla describe scyllaclusters.scylla.scylladb.com/simple-cluster +``` + +:::{note} +If you have configured ScyllaDB with `authenticator` set to `PasswordAuthenticator`, you need to manually configure the replication factor of the `system_auth` keyspace with every scaling operation. + +```shell +kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -u -p -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : };" +``` + +It is recommended to set `system_auth` replication factor to the number of nodes in each datacenter. +::: + +## Benchmark with cassandra-stress + +After deploying our cluster along with the monitoring, we can benchmark it using cassandra-stress and see its performance in Grafana. We have a mini cli that generates Kubernetes Jobs that run cassandra-stress against a cluster. + +> Because cassandra-stress doesn't scale well to multiple cores, we use multiple jobs with a small core count for each + +```bash + +# Run a benchmark with 10 jobs, with 6 cpus and 50.000.000 operations each. +# Each Job will throttle throughput to 30.000 ops/sec for a total of 300.000 ops/sec. +hack/cass-stress-gen.py --num-jobs=10 --cpu=6 --memory=20G --ops=50000000 --limit=30000 +kubectl apply -f scripts/cassandra-stress.yaml +``` + +Make sure you set the proper arguments in case you have altered things such as _name_ or _namespace_. + +```bash +./hack/cass-stress-gen.py -h +usage: cass-stress-gen.py [-h] [--num-jobs NUM_JOBS] [--name NAME] [--namespace NAMESPACE] [--scylla-version SCYLLA_VERSION] [--host HOST] [--cpu CPU] [--memory MEMORY] [--ops OPS] [--threads THREADS] [--limit LIMIT] + [--connections-per-host CONNECTIONS_PER_HOST] [--print-to-stdout] [--nodeselector NODESELECTOR] + +Generate cassandra-stress job templates for Kubernetes. + +optional arguments: + -h, --help show this help message and exit + --num-jobs NUM_JOBS number of Kubernetes jobs to generate - defaults to 1 + --name NAME name of the generated yaml file - defaults to cassandra-stress + --namespace NAMESPACE + namespace of the cassandra-stress jobs - defaults to "default" + --scylla-version SCYLLA_VERSION + version of scylla server to use for cassandra-stress - defaults to 4.0.0 + --host HOST ip or dns name of host to connect to - defaults to scylla-cluster-client.scylla.svc + --cpu CPU number of cpus that will be used for each job - defaults to 1 + --memory MEMORY memory that will be used for each job in GB, ie 2G - defaults to 2G * cpu + --ops OPS number of operations for each job - defaults to 10000000 + --threads THREADS number of threads used for each job - defaults to 50 * cpu + --limit LIMIT rate limit for each job - defaults to no rate-limiting + --connections-per-host CONNECTIONS_PER_HOST + number of connections per host - defaults to number of cpus + --print-to-stdout print to stdout instead of writing to a file + --nodeselector NODESELECTOR + nodeselector limits cassandra-stress pods to certain nodes. Use as a label selector, eg. --nodeselector role=scylla +``` +While the benchmark is running, open up Grafana and take a look at the monitoring metrics. + +After the Jobs finish, clean them up with: +```bash +kubectl delete -f scripts/cassandra-stress.yaml +``` + +## Clean Up + +To clean up all resources associated with this walk-through, you can run the commands below. + +**NOTE:** this will destroy your database and delete all of its associated data. + +```console +kubectl delete -f examples/generic/cluster.yaml +kubectl delete -f deploy/operator.yaml +kubectl delete -f examples/common/cert-manager.yaml +``` + +## Troubleshooting + +If the cluster does not come up, the first step would be to examine the operator's logs: + +```console +kubectl -n scylla-operator logs deployment.apps/scylla-operator +``` + +If everything looks OK in the operator logs, you can also look in the logs for one of the Scylla instances: + +```console +kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 +``` diff --git a/v1.12/_sources/gke.md.txt b/v1.12/_sources/gke.md.txt new file mode 100644 index 00000000000..3ea9e1c9de3 --- /dev/null +++ b/v1.12/_sources/gke.md.txt @@ -0,0 +1,173 @@ +# Deploying Scylla on GKE + +This guide is focused on deploying Scylla on GKE with maximum performance (without any persistence guarantees). +It sets up the kubelets on GKE nodes to run with [static cpu policy](https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/) and uses [local sdd disks](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/local-ssd) in RAID0 for maximum performance. + +Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the [general guide](generic.md). + +## TL;DR; + +If you don't want to run the commands step-by-step, you can just run a script that will set everything up for you: +```bash +# Edit according to your preference +GCP_USER=$(gcloud config list account --format "value(core.account)") +GCP_PROJECT=$(gcloud config list project --format "value(core.project)") +GCP_ZONE=us-west1-b + +# From inside the examples/gke folder +cd examples/gke +./gke.sh -u "$GCP_USER" -p "$GCP_PROJECT" -z "$GCP_ZONE" + +# Example: +# ./gke.sh -u yanniszark@arrikto.com -p gke-demo-226716 -z us-west1-b +``` + +:::{warning} +Make sure to pass a ZONE (ex.: us-west1-b) and not a REGION (ex.: us-west1) or it will deploy nodes in each ZONE available in the region. +::: + +After you deploy, see how you can [benchmark your cluster with cassandra-stress](generic.md#benchmark-with-cassandra-stress). + +## Walkthrough + +### Google Kubernetes Engine Setup + +#### Configure environment variables + +First of all, we export all the configuration options as environment variables. +Edit according to your own environment. + +``` +GCP_USER=$( gcloud config list account --format "value(core.account)" ) +GCP_PROJECT=$( gcloud config list project --format "value(core.project)" ) +GCP_REGION=us-west1 +GCP_ZONE=us-west1-b +CLUSTER_NAME=scylla-demo +CLUSTER_VERSION=$( gcloud container get-server-config --zone ${GCP_ZONE} --format "value(validMasterVersions[0])" ) +``` + +#### Creating a GKE cluster + +First we need to change kubelet CPU Manager policy to static by providing a config file. Create file called `systemconfig.yaml` with the following content: +``` +kubeletConfig: + cpuManagerPolicy: static +``` + +Then we'll create a GKE cluster with the following: + +1. A NodePool of 2 `n1-standard-8` Nodes, where the operator and the monitoring stack will be deployed. These are generic Nodes and their free capacity can be used for other purposes. + ``` + gcloud container \ + clusters create "${CLUSTER_NAME}" \ + --cluster-version "${CLUSTER_VERSION}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-8" \ + --num-nodes "2" \ + --disk-type "pd-ssd" --disk-size "20" \ + --image-type "UBUNTU_CONTAINERD" \ + --enable-stackdriver-kubernetes \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +2. A NodePool of 2 `n1-standard-32` Nodes to deploy `cassandra-stress` later on. + + ``` + gcloud container --project "${GCP_PROJECT}" \ + node-pools create "cassandra-stress-pool" \ + --cluster "${CLUSTER_NAME}" \ + --zone "${GCP_ZONE}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-32" \ + --num-nodes "2" \ + --disk-type "pd-ssd" --disk-size "20" \ + --node-taints role=cassandra-stress:NoSchedule \ + --image-type "UBUNTU_CONTAINERD" \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +3. A NodePool of 4 `n1-standard-32` Nodes, where the Scylla Pods will be deployed. Each of these Nodes has 8 local NVMe SSDs attached, which are provided as [raw block devices](https://cloud.google.com/kubernetes-engine/docs/concepts/local-ssd#block). It is important to disable `autoupgrade` and `autorepair`. Automatic cluster upgrade or node repair has a hard timeout after which it no longer respect PDBs and force deletes the Compute Engine instances, which also deletes all data on the local SSDs. At this point, it's better to handle upgrades manually, with more control over the process and error handling. + ``` + gcloud container \ + node-pools create "scylla-pool" \ + --cluster "${CLUSTER_NAME}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-32" \ + --num-nodes "4" \ + --disk-type "pd-ssd" --disk-size "20" \ + --local-nvme-ssd-block count="8" \ + --node-taints role=scylla-clusters:NoSchedule \ + --node-labels scylla.scylladb.com/node-type=scylla \ + --image-type "UBUNTU_CONTAINERD" \ + --system-config-from-file=systemconfig.yaml \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +#### Setting Yourself as `cluster-admin` +> (By default GKE doesn't give you the necessary RBAC permissions) + +Get the credentials for your new cluster +``` +gcloud container clusters get-credentials "${CLUSTER_NAME}" --zone="${GCP_ZONE}" +``` + +Create a ClusterRoleBinding for your user. +In order for this to work you need to have at least permission `container.clusterRoleBindings.create`. +The easiest way to obtain this permission is to enable the `Kubernetes Engine Admin` role for your user in the GCP IAM web interface. +``` +kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user "${GCP_USER}" +``` + + +### Prerequisites + +### Deploying ScyllaDB Operator + +Refer to [Deploying Scylla on a Kubernetes Cluster](generic.md) in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites. + +#### Setting up nodes for ScyllaDB + +ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you'll first need to form a RAID array from those disks. +`NodeConfig` performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in [Performance tuning](performance.md) section of ScyllaDB Operator's documentation. + +Deploy `NodeConfig` to let it take care of the above operations: +``` +kubectl apply --server-side -f examples/gke/nodeconfig-alpha.yaml +``` + +#### Deploying Local Volume Provisioner + +Afterwards, deploy ScyllaDB's [Local Volume Provisioner](https://github.com/scylladb/k8s-local-volume-provisioner), capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays. +``` +kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/ +kubectl apply --server-side -f examples/common/local-volume-provisioner/storageclass_xfs.yaml +``` + +### Deploy Scylla cluster +In order for the example to work you need to modify the cluster definition in the following way: + +``` +sed -i "s//${GCP_REGION}/g;s//${GCP_ZONE}/g" examples/gke/cluster.yaml +``` + +This will inject your region and zone into the cluster definition so that it matches the kubernetes cluster you just created. + +### Deploying ScyllaDB + +Now you can follow the steps described in [Deploying Scylla on a Kubernetes Cluster](generic.md) to launch your ScyllaDB cluster in a highly performant environment. + +#### Accessing the database + +Instructions on how to access the database can also be found in the [generic guide](generic.md). + +### Deleting a GKE cluster + +Once you are done with your experiments delete your cluster using the following command: + +``` +gcloud container --project "${GCP_PROJECT}" clusters delete --zone "${GCP_ZONE}" "${CLUSTER_NAME}" +``` diff --git a/v1.12/_sources/helm.md.txt b/v1.12/_sources/helm.md.txt new file mode 100644 index 00000000000..e157523c417 --- /dev/null +++ b/v1.12/_sources/helm.md.txt @@ -0,0 +1,339 @@ +# Deploying Scylla stack using Helm Charts + +In this example we will install Scylla stack on Kubernetes. This includes the following components: +- Scylla Operator +- Scylla Manager +- Scylla + +We will use Minikube K8s cluster, but this could be any K8s cluster supported by the Scylla Operator. + +## Prerequisites + +- Kubernetes 1.16+ +- Helm 3+ + +## TL;DR + +``` +helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable +helm repo update +kubectl apply -f examples/common/cert-manager.yaml +helm install scylla-operator scylla/scylla-operator --create-namespace --namespace scylla-operator +helm install scylla-manager scylla/scylla-manager --create-namespace --namespace scylla-manager +helm install scylla scylla/scylla --create-namespace --namespace scylla +``` + +## Deploy Cert Manager + +This step is optional if you want to use your own certificate. +If you don't have one, make sure to not disable autogeneration using Scylla Operator Helm Chart. + +First deploy Cert Manager, you can either follow [upsteam instructions](https://cert-manager.io/docs/installation/kubernetes/) or use following command: + +```console +kubectl apply -f examples/common/cert-manager.yaml +``` + +Once it's deployed, wait until all Cert Manager pods will enter into Running state: + +```console +kubectl wait -n cert-manager --for=condition=ready pod -l app=cert-manager --timeout=60s +``` + +## Helm Chart repository + +To install Scylla Helm Chart repository execute the following commands: +``` +helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable +helm repo update +``` + +Then you can search through repository, it should contain at least three Helm charts: +``` +helm search repo scylla +NAME CHART VERSION APP VERSION DESCRIPTION +scylla/scylla 1.0.1 v1.0.1 Scylla is a close-to-the-hardware rewrite of Ca... +scylla/scylla-manager 1.0.1 v1.0.1 Scylla Manager automates database operations. +scylla/scylla-operator 1.0.1 v1.0.1 Scylla Operator is a Kubernetes Operator for ma... +``` + +All these charts should be installable without any need of customizing (defaults are provided). +Although Helm is used for this particular reason, so lets customize them a bit. + +## Scylla Operator Chart + +This chart is very simple, most interesting customizable fields are `image`, `resources` and `webhook`. +All others can be looked up in Chart source in Scylla Operator repository. + +### image + +Image allows to define which Scylla Operator image will be used. By default it downloads the image from main +Docker Hub repository, using version defined in Helm Chart. +You can also change `pullPolicy` if default one does not +fullfill your needs. In [Kubernetes documentation](https://kubernetes.io/docs/concepts/containers/images/) you +can read more about different pull policies. + +Image URL will be composed based on these fields in follwing pattern: +`repository/scylla-operator:tag` +```yaml +image: + repository: scylladb + pullPolicy: IfNotPresent + tag: "" +``` + +### resources + +You can customize how much resources will be allocated for Operator pods via `resource` field: +```yaml +resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 100m + memory: 32Mi +``` + +To read more about resource specification, follow [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). + +### webhook + +Webhook field allows to decide whether you want to use autogenerated self-signed certificate using Cert Manager or +whether you want to provide your own certificate. + +`createSelfSignedCertificate` specifies whether a self-signed certificate should be created using Cert Manager +`certificateSecretName`: name of a secret containing custom certificate. + +```yaml +webhook: + createSelfSignedCertificate: true + certificateSecretName: "" +``` + +### Customization + +You can customize all these fields and others by providing file containing desired values. +Content of this file will overwrite default values. + +You can find an example in Scylla Operator repository under `examples/helm/values.operator.yaml` + +### Installation + +To deploy Scylla Operator using customized values file execute the following: +``` +helm install scylla-operator scylla/scylla-operator --values examples/helm/values.operator.yaml --create-namespace --namespace scylla-operator +``` + +## Scylla Helm Chart + +Scylla Chart allows to customize and deploy Scylla cluster. +By default Scylla Helm charts deploys working Scylla cluster, but of course we can customize it. + +### Customization + +Versions of images used in the cluster can be set via `scyllaImage` and `agentImage` +```yaml +scyllaImage: + repository: scylladb/scylla + tag: 4.3.0 + +agentImage: + repository: scylladb/scylla-manager-agent + tag: 2.2.1 +``` + +A minimal Scylla cluster can be expressed as: +```yaml +datacenter: us-east-1 +racks: +- name: us-east-1b + members: 2 + storage: + capacity: 5G + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 1 + memory: 1Gi +``` + +Above cluster will use 4.3.0 Scylla, 2.2.1 Scylla Manager Agent sidecar and will have a single rack having 2 nodes. +Each node will have a single CPU and 1 GiB of memory. + +For other customizable fields, please refer to [ScyllaCluster CRD](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). +CRD Rack Spec and Helm Chart Rack should have the same fields. + +### Installation + +To deploy Scylla cluster using customzied values file execute the following command: +``` +helm install scylla scylla/scylla --values examples/helm/values.cluster.yaml --create-namespace --namespace scylla +``` + +Scylla Operator will provision this cluster on your K8s environment. + +## Scylla Manager Helm Chart + +Scylla Manager Chart allows to customize and deploy Scylla Manager in K8s environment. +Scylla Manager consist of two applications (Scylla Manager itself and Scylla Manager Controller) and additional Scylla cluster. + +To read more about Scylla Manager see [Manager guide](manager.md). + +### Scylla Manager + +To set version of used Scylla Manager you can use `image` field: +```yaml +image: + repository: scylladb + pullPolicy: IfNotPresent + tag: 2.2.1 +``` +To control how many resources are allocated for Scylla Manager use `resource` field: +```yaml +resources: + limits: + cpu: 500m + memory: 500Mi + requests: + cpu: 500m + memory: 500Mi +``` + +### Scylla Manager Controller + +Similarly Scylla Manager Controller image can be customized: + +```yaml +controllerImage: + repository: scylladb + pullPolicy: IfNotPresent + tag: "" +``` + +And allocated resources: +```yaml +controllerResources: + limits: + cpu: 100m + memory: 30Mi + requests: + cpu: 100m + memory: 20Mi +``` + +### Scylla + +To customize internal Scylla instance dedicated to Scylla Manager, see guide above customizing Scylla Helm Chart. +It's definition should land as a `scylla` field. + +### Customization + +All others customizable fields can be looked up in Chart source in Scylla Operator repository. + +### Installation + +To deploy Scylla Manager using customized values file execute the following command: +``` +helm install scylla-manager scylla/scylla-manager --values examples/helm/values.manager.yaml --create-namespace --namespace scylla-manager +``` + +## Results + +Scylla need some time to bootstrap all nodes, but after some time you should be ready to roll. It was simple isn't it? +You can validate if everything was set up correctly by looking at the all resources created in used namespaces. + +Scylla Operator: +```shell +$ kubectl -n scylla-operator get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-operator-5dbcb54f5c-vjm4m 1/1 Running 0 51s +pod/scylla-operator-5dbcb54f5c-wfjbw 1/1 Running 0 51s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-operator-webhook ClusterIP 10.105.207.130 443/TCP 51s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/scylla-operator 2/2 2 2 51s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/scylla-operator-5dbcb54f5c 2 2 2 51s + +``` + +Operator is running! + +Scylla Manager: +```shell +$ kubectl -n scylla-manager get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-manager-669db64dd-bcm4v 1/1 Running 0 89s +pod/scylla-manager-controller-844ccc56c4-drbth 1/1 Running 0 89s +pod/scylla-manager-controller-844ccc56c4-rhwqx 1/1 Running 0 89s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-manager ClusterIP 10.105.231.53 80/TCP,5090/TCP 89s +service/scylla-manager-client ClusterIP None 9180/TCP,5090/TCP 89s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/scylla-manager 1/1 1 1 89s +deployment.apps/scylla-manager-controller 2/2 2 2 89s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/scylla-manager-669db64dd 1 1 1 89s +replicaset.apps/scylla-manager-controller-844ccc56c4 2 2 2 89s + + +``` + +Good to go, ready to serve! + +Scylla itself: +```shell +$ kubectl -n scylla get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-us-east-1-us-east-1b-0 2/2 Running 0 5m58s +pod/scylla-us-east-1-us-east-1b-1 2/2 Running 0 4m29s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-client ClusterIP None 9180/TCP,5090/TCP 5m59s +service/scylla-us-east-1-us-east-1b-0 ClusterIP 10.43.149.92 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 5m58s +service/scylla-us-east-1-us-east-1b-1 ClusterIP 10.43.49.0 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 4m29s + +NAME READY AGE +statefulset.apps/scylla-us-east-1-us-east-1b 2/2 5m59s +``` + +Two running nodes, exactly what we were asking for. + +## Monitoring + +To spin up a Prometheus monitoring refer to [monitoring guide](monitoring.md). + +Helm charts can create ServiceMonitors needed to observe Scylla Manager and Scylla. +Both of these Helm Charts allows to specify whether you want to create a ServiceMonitor: +```yaml +serviceMonitor: + create: false +``` + +Change `create` to `true` and update your current deployment using: +```shell +helm upgrade --install scylla --namespace scylla scylla/scylla -f examples/helm/values.cluster.yaml +``` + +Helm should notice the difference, install the ServiceMonitor, and then Prometheous will be able to scrape metrics. + +## Cleanup + +To remove these applications you can simply uninstall them using Helm CLI: +```shell +helm uninstall scylla -n scylla +helm uninstall scylla-manager -n scylla-manager +helm uninstall scylla-operator -n scylla-operator +``` diff --git a/v1.12/_sources/index.rst.txt b/v1.12/_sources/index.rst.txt new file mode 100644 index 00000000000..0e48f43b031 --- /dev/null +++ b/v1.12/_sources/index.rst.txt @@ -0,0 +1,67 @@ +============================= +Scylla Operator Documentation +============================= + +.. toctree:: + :hidden: + :maxdepth: 1 + + generic + eks + gke + helm + manager + monitoring + clients/index + migration + nodeoperations/index + exposing + multidc/index + performance + upgrade + releases + support/index + api-reference/index + contributing + +Scylla Operator is an open source project which helps users of Scylla Open Source and Scylla Enterprise run Scylla on Kubernetes (K8s) +The Scylla operator manages Scylla clusters deployed to Kubernetes and automates tasks related to operating a Scylla cluster, like installation, out and downscale, rolling upgrades. + +.. image:: logo.png + :width: 200pt + +For the latest status of the project, and reports issue, see the Github Project. Also check out the K8s Operator lesson on Scylla University. + +scylla-operator is a Kubernetes Operator for managing Scylla clusters. + +Currently it supports: + +* Deploying multi-zone clusters +* Scaling up or adding new racks +* Scaling down +* Monitoring with Prometheus and Grafana +* Integration with `Scylla Manager `_ +* Dead node replacement +* Version Upgrade +* Backup +* Repairs +* Autohealing + +**Choose a topic to begin**: + +* :doc:`Deploying Scylla on a Kubernetes Cluster ` +* :doc:`Deploying Scylla on EKS ` +* :doc:`Deploying Scylla on GKE ` +* :doc:`Deploying Scylla Manager on a Kubernetes Cluster ` +* :doc:`Deploying Scylla stack using Helm Charts ` +* :doc:`Setting up Monitoring using Prometheus and Grafana ` +* :doc:`Using ScyllaDB APIs ` +* :doc:`Node operations ` +* :doc:`Exposing ScyllaCluster to other networks ` +* :doc:`Deploying multi-datacenter ScyllaDB clusters in Kubernetes ` +* :doc:`Performance tuning [Experimental] ` +* :doc:`Upgrade procedures ` +* :doc:`Releases ` +* :doc:`Support ` +* :doc:`API Reference ` +* :doc:`Contributing to the Scylla Operator Project ` diff --git a/v1.12/_sources/manager.md.txt b/v1.12/_sources/manager.md.txt new file mode 100644 index 00000000000..9a8db2fd37a --- /dev/null +++ b/v1.12/_sources/manager.md.txt @@ -0,0 +1,258 @@ +# Deploying Scylla Manager on a Kubernetes Cluster + +Scylla Manager is a product for database operations automation, +it can schedule tasks such as repairs and backups. +Scylla Manager can manage multiple Scylla clusters and run cluster-wide tasks +in a controlled and predictable way. + +Scylla Manager is available for Scylla Enterprise customers and Scylla Open Source users. +With Scylla Open Source, Scylla Manager is limited to 5 nodes. +See the Scylla Manager [Proprietary Software License Agreement](https://www.scylladb.com/scylla-manager-software-license-agreement/) for details. + +## Prerequisites + +* Kubernetes cluster +* Scylla Operator - see [generic guide](generic.md) + +## Architecture + +Scylla Manager in K8s consist of: +- Dedicated Scylla Cluster + + Scylla Manager persists its state to a Scylla cluster. +Additional small single node cluster is spawned in the Manager namespace. + +- Scylla Manager Controller + + Main mission of Controller is to watch changes of Scylla Clusters, and synchronize three states. + 1. What user wants - task definition in CRD. + 2. What Controller registered - Task name to Task ID mapping - CRD status. + 3. Scylla Manager task listing - internal state of Scylla Manager. + + When Scylla Cluster CRD is being deployed Controller will register it in Scylla Manager once cluster reaches desired node count. +Once Cluster is fully up and running it will schedule all tasks defined in Cluster CRD. +Controller also supports task updates and unscheduling. + +- Scylla Manager + + Regular Scylla Manager, the same used in cloud and bare metal deployments. + + + +## Deploy Scylla Manager + +Deploy the Scylla Manager using the following commands: + +```console +kubectl apply -f deploy/manager-prod.yaml +``` + +This will install the Scylla Manager in the `scylla-manager` namespace. +You can check if the Scylla Manager is up and running with: + +```console +kubectl -n scylla-manager get pods +NAME READY STATUS RESTARTS AGE +scylla-manager-cluster-manager-dc-manager-rack-0 2/2 Running 0 37m +scylla-manager-controller-0 1/1 Running 0 28m +scylla-manager-scylla-manager-7bd9f968b9-w25jw 1/1 Running 0 37m +``` + +As you can see there are three pods: +* `scylla-manager-cluster-manager-dc-manager-rack-0` - is a single node Scylla cluster. +* `scylla-manager-controller-0` - Scylla Manager Controller. +* `scylla-manager-scylla-manager-7bd9f968b9-w25jw` - Scylla Manager. + +To see if Scylla Manager is fully up and running we can check their logs. +To do this, execute following command: + + ```console +kubectl -n scylla-manager logs scylla-manager-controller-0 +``` + +The output should be something like: +```console +{"L":"INFO","T":"2020-09-23T11:25:27.882Z","M":"Scylla Manager Controller started","version":"","build_date":"","commit":"","built_by":"","go_version":"","options":{"Name":"scylla-manager-controller-0","Namespace":"scylla-manager","LogLevel":"debug","ApiAddress":"http://127.0.0.1:5080/api/v1"},"_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"} +{"L":"INFO","T":"2020-09-23T11:25:28.435Z","M":"Registering Components.","_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"} +``` + +To check logs of Scylla Manager itself, use following command: +```console +kubectl -n scylla-manager logs scylla-manager-scylla-manager-7bd9f968b9-w25jw +``` + +The output should be something like: + +```console +{"L":"INFO","T":"2020-09-23T11:26:53.238Z","M":"Scylla Manager Server","version":"2.1.2-0.20200816.76cc4dcc","pid":1,"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Using config","config":{"HTTP":"127.0.0.1:5080","HTTPS":"","TLSCertFile":"/var/lib/scylla-manager/scylla_manager.crt","TLSKeyFile":"/var/lib/scylla-manager/scylla_manager.key","TLSCAFile":"","Prometheus":":56090","PrometheusScrapeInterval":5000000000,"debug":"127.0.0.1:56112","Logger":{"Mode":"stderr","Level":"info","Development":false},"Database":{"Hosts":["scylla-manager-cluster-manager-dc-manager-rack-0.scylla-manager.svc"],"SSL":false,"User":"","Password":"","LocalDC":"","Keyspace":"scylla_manager","MigrateDir":"/etc/scylla-manager/cql","MigrateTimeout":30000000000,"MigrateMaxWaitSchemaAgreement":300000000000,"ReplicationFactor":1,"Timeout":600000000,"TokenAware":true},"SSL":{"CertFile":"","Validate":true,"UserCertFile":"","UserKeyFile":""},"Healthcheck":{"Timeout":250000000,"SSLTimeout":750000000},"Backup":{"DiskSpaceFreeMinPercent":10,"AgeMax":43200000000000},"Repair":{"SegmentsPerRepair":1,"ShardParallelMax":0,"ShardFailedSegmentsMax":100,"PollInterval":200000000,"ErrorBackoff":300000000000,"AgeMax":0,"ShardingIgnoreMsbBits":12}},"config_files":["/mnt/etc/scylla-manager/scylla-manager.yaml"],"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Checking database connectivity...","_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +``` + +If there are no errors in the logs, let's spin a Scylla Cluster. + +## Cluster registration + + +When the Scylla Manager is fully up and running, lets create a regular instance of Scylla cluster. + +See [generic tutorial](generic.md) to spawn your cluster. + +Note: If you already have some Scylla Clusters, after installing Manager they should be +automatically registered in Scylla Manager. + +Once cluster reaches desired node count, cluster status will be updated with ID under which it was registered in Manager. + + ```console +kubectl -n scylla describe Cluster + +[...] +Status: + Manager Id: d1d532cd-49f2-4c97-9263-25126532803b + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.0.0 +``` +You can use this ID to talk to Scylla Manager using `sctool` CLI installed in Scylla Manager Pod. +You can also use Cluster name in `namespace/cluster-name` format. + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list + +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b) +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮ +│ Task │ Arguments │ Next run │ Status │ +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤ +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b │ │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE │ +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd │ │ 23 Sep 20 14:29:57 CEST (+1m) │ NEW │ +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯ + +``` + +Scylla Manager by default registers recurring healhcheck tasks for Agent and for each of the enabled frontends (CQL, Alternator). + +In this task listing we can see CQL and REST healthchecks. + +## Task scheduling + +You can either define tasks prior Cluster creation, or for existing Cluster. +Let's edit already running cluster definition to add repair and backup task. +```console +kubectl -n scylla edit Cluster simple-cluster +``` + +Add following task definition to Cluster spec: +``` + repairs: + - name: "users repair" + keyspace: ["users"] + interval: "1d" + backups: + - name: "weekly backup" + location: ["s3:cluster-backups"] + retention: 3 + interval: "7d" + - name: "daily backup" + location: ["s3:cluster-backups"] + retention: 7 + interval: "1d" +``` + +For full task definition configuration consult [ScyllaCluster CRD](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). + +**Note**: Scylla Manager Agent must have access to above bucket prior the update in order to schedule backup task. +Consult Scylla Manager documentation for details on how to set it up. + +Scylla Manager Controller will spot this change and will schedule tasks in Scylla Manager. + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list + +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b) +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮ +│ Task │ Arguments │ Next run │ Status │ +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤ +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b │ │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE │ +│ backup/275aae7f-c436-4fc8-bcec-479e65fb8372 │ -L s3:cluster-backups --retention 3 │ 23 Sep 20 14:28:58 CEST (+7d) │ NEW │ +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd │ │ 23 Sep 20 14:29:57 CEST (+1m) │ NEW │ +│ repair/d4946360-c29d-4bb4-8b9d-619ada495c2a │ │ 23 Sep 20 14:38:42 CEST │ NEW │ +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯ + +``` + +As you can see, we have two new tasks, weekly recurring backup, and one repair which should start shortly. + +To check progress of run you can use following command: + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task progress --cluster d1d532cd-49f2-4c97-9263-25126532803b repair/d4946360-c29d-4bb4-8b9d-619ada495c2a +Status: RUNNING +Start time: 23 Sep 20 14:38:42 UTC +Duration: 13s +Progress: 2.69% +Datacenters: + - us-east-1 ++--------------------+-------+ +| system_auth | 8.06% | +| system_distributed | 0.00% | +| system_traces | 0.00% | ++--------------------+-------+ + +``` +Other tasks can be also tracked using the same command, but using different task ID. +Task IDs are present in Cluster Status as well as in task listing. + +## Clean Up + +To clean up all resources associated with Scylla Manager, you can run the commands below. + +**NOTE:** this will destroy your Scylla Manager database and delete all of its associated data. + +```console +kubectl delete -f deploy/manager-prod.yaml +``` + +## Troubleshooting + +**Manager is not running** + +If the Scylla Manager does not come up, the first step would be to examine the Manager and Controller logs: + +```console +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-controller +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-scylla-manager-7bd9f968b9-w25jw +``` + + +**My task wasn't scheduled** + +If your task wasn't scheduled, Cluster status will be updated with error messages for each failed task. +You can also consult Scylla Manager logs. + +Example: + +Following status describes error when backup task cannot be scheduled, due to lack of access to bucket: +```console +Status: + Backups: + Error: create backup target: location is not accessible: 10.100.16.62: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.100.16.62 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.107.193.33: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.107.193.33 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.109.197.60: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.109.197.60 and run "scylla-manager-agent check-location -L s3:manager-test --debug" + Id: 00000000-0000-0000-0000-000000000000 + Interval: 0 + Location: + s3:manager-test + Name: adhoc backup + Num Retries: 3 + Retention: 3 + Start Date: now + Manager Id: 2b9dbe8c-9daa-4703-a66d-c29f63a917c8 + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.0.0 +``` + +Because Controller is infinitely retrying to schedule each defined task, once permission issues will be resolved, +task should appear in task listing and Cluster status. diff --git a/v1.12/_sources/migration.md.txt b/v1.12/_sources/migration.md.txt new file mode 100644 index 00000000000..6b450637a22 --- /dev/null +++ b/v1.12/_sources/migration.md.txt @@ -0,0 +1,146 @@ +# Version migrations + + +## `v0.3.0` -> `v1.0.0` migration + +`v0.3.0` used a very common name as a CRD kind (`Cluster`). In `v1.0.0` this issue was solved by using less common kind +which is easier to disambiguate (`ScyllaCluster`). +***This change is backward incompatible, which means manual migration is needed.*** + +This procedure involves having two CRDs registered at the same time. We will detach Scylla Pods +from Scylla Operator for a short period to ensure that nothing is garbage collected when Scylla Operator is upgraded. +Compared to the [upgrade guide](upgrade.md) where full deletion is requested, this procedure shouldn't cause downtimes. +Although detaching resources from their controller is considered hacky. This means that you shouldn't run procedure +out of the box on production. Make sure this procedure works well multiple times on your staging environment first. + +***Read the whole procedure and make sure you understand what is going on before executing any of the commands!*** + +In case of any issues or questions regarding this procedure, you're welcomed on our [Scylla Users Slack](http://slack.scylladb.com/) +on #kubernetes channel. + +## Procedure + +1. Execute this whole procedure for each cluster sequentially. To get a list of existing clusters execute the following + ``` + kubectl -n scylla get cluster.scylla.scylladb.com + + NAME AGE + simple-cluster 30m + ``` + All below commands will use `scylla` namespace and `simple-cluster` as a cluster name. +1. Make sure you're using v1.0.0 tag: + ``` + git checkout v1.0.0 + ``` +1. Upgrade your `cert-manager` to `v1.0.0`. If you installed it from a static file from this repo, simply execute the following: + ``` + kubectl apply -f examples/common/cert-manager.yaml + ``` + If your `cert-manager` was installed in another way, follow official instructions on `cert-manager` website. +1. `deploy/operator.yaml` file contains multiple resources. Extract **only** `CustomResourceDefinition` to separate file. +1. Install v1.0.0 CRD definition from file created in the previous step: + ``` + kubectl apply -f examples/common/crd.yaml + ``` +1. Save your existing `simple-cluster` Cluster definition to a file: + ``` + kubectl -n scylla get cluster.scylla.scylladb.com simple-cluster -o yaml > existing-cluster.yaml + ``` +1. Migrate `Kind` and `ApiVersion` to new values using: + ``` + sed -i 's/scylla.scylladb.com\/v1alpha1/scylla.scylladb.com\/v1/g' existing-cluster.yaml + sed -i 's/kind: Cluster/kind: ScyllaCluster/g' existing-cluster.yaml + ``` +1. Install migrated CRD instance + ``` + kubectl apply -f existing-cluster.yaml + ``` + At this point, we should have two CRDs describing your Scylla cluster, although the new one is not controlled by the Operator. +1. Get UUID of newly created ScyllaCluster resource: + ``` + kubectl -n scylla get ScyllaCluster simple-cluster --template="{{ .metadata.uid }}" + + 12a3678d-8511-4c9c-8a48-fa78d3992694 + ``` + Save output UUID somewhere, it will be referred as `` in commands below. + + ***Depending on your shell, you might get additional '%' sign at the end of UUID, make sure to remove it!*** + +1. Upgrade ClusterRole attached to each of the Scylla nodes to grant them permission to lookup Scylla clusters: + ``` + kubectl patch ClusterRole simple-cluster-member --type "json" -p '[{"op":"add","path":"/rules/-","value":{"apiGroups":["scylla.scylladb.com"],"resources":["scyllaclusters"],"verbs":["get"]}}]' + ``` + Amend role name according to your cluster name, it should look like `-member`. +1. Get a list of all Services associated with your cluster. First get list of all services: + ``` + kubectl -n scylla get svc -l "scylla/cluster=simple-cluster" + + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 109m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.23.96 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 109m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.66.22 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 108m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.246.25 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 106m + + ``` +1. For each service, change its `ownerReference` to point to new CRD instance: + ``` + kubectl -n scylla patch svc --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":""}]' + ``` + Replace `` with Service name, and `` with saved UUID from one of the previous steps. +1. Get a list of all Services again to see if none was deleted. Check also "Age" column, it shouldn't be lower than previous result. + ``` + kubectl -n scylla get svc -l "scylla/cluster=simple-cluster" + + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 110m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.23.96 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 110m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.66.22 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 109m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.246.25 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 107m + + ``` +1. Get a list of StatefulSets associated with your cluster: + ``` + kubectl -n scylla get sts -l "scylla/cluster=simple-cluster" + + NAME READY AGE + simple-cluster-us-east-1-us-east-1a 3/3 104m + ``` +1. For each StatefulSet from previous step, change its `ownerReference` to point to new CRD instance. + + ``` + kubectl -n scylla patch sts --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":""}]' + ``` + Replace `` with StatefulSet name, and `` with saved UUID from one of the previous steps. + +1. Now when all k8s resources bound to Scylla are attached to new CRD, we can remove 0.3.0 Operator and old CRD definition. + Checkout `v0.3.0` version, and remove Scylla Operator, and old CRD: + ``` + git checkout v0.3.0 + kubectl delete -f examples/generic/operator.yaml + ``` +1. Checkout `v1.0.0`, and install upgraded Scylla Operator: + ``` + git checkout v1.0.0 + kubectl apply -f deploy/operator.yaml + ``` +1. Wait until Scylla Operator boots up: + ``` + kubectl -n scylla-operator-system wait --for=condition=ready pod --all --timeout=600s + ``` +1. Get a list of StatefulSets associated with your cluster: + ``` + kubectl -n scylla get sts -l "scylla/cluster=simple-cluster" + + NAME READY AGE + simple-cluster-us-east-1-us-east-1a 3/3 104m +1. For each StatefulSet from previous step, change its sidecar container image to `v1.0.0`, and wait until change will be propagated. This step will initiate a rolling restart of pods one by one. + ``` + kubectl -n scylla patch sts --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/initContainers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]' + kubectl -n scylla rollout status sts + ``` + Replace `` with StatefulSet name. +1. If you're using Scylla Manager, bump Scylla Manager Controller image to `v1.0.0` + ``` + kubectl -n scylla-manager-system patch sts scylla-manager-controller --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]' + ``` +1. Your Scylla cluster is now migrated to `v1.0.0`. diff --git a/v1.12/_sources/monitoring.md.txt b/v1.12/_sources/monitoring.md.txt new file mode 100644 index 00000000000..72c40f7de33 --- /dev/null +++ b/v1.12/_sources/monitoring.md.txt @@ -0,0 +1,180 @@ +# Monitoring + +Scylla Operator 1.8 introduced a new API resource `ScyllaDBMonitoring`, allowing users to deploy a managed monitoring +setup for their Scylla Clusters. + +```yaml +apiVersion: scylla.scylladb.com/v1alpha1 +kind: ScyllaDBMonitoring +metadata: + name: example +spec: + type: Platform + endpointsSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla-operator.scylladb.com/scylla-service-type: member + scylla/cluster: replace-with-your-scyllacluster-name + components: + prometheus: + storage: + volumeClaimTemplate: + spec: + resources: + requests: + storage: 1Gi + grafana: + exposeOptions: + webInterface: + ingress: + ingressClassName: haproxy + dnsDomains: + - test-grafana.test.svc.cluster.local + annotations: + haproxy-ingress.github.io/ssl-passthrough: "true" +``` + +For details, refer to the below command: +```console +$ kubectl explain scylladbmonitorings.scylla.scylladb.com/v1alpha1 +``` + +## Deploy managed monitoring + +**Note**: as of v1.8, ScyllaDBMonitoring is experimental. The API is currently in version v1alpha1 and may change in future versions. + +### Requirements + +Before you can set up your ScyllaDB monitoring, you need Scylla Operator already installed in your Kubernetes cluster. +For more information on how to deploy Scylla Operator, see: +* [Deploying Scylla on a Kubernetes Cluster](generic.md) +* [Deploying Scylla stack using Helm Charts](helm.md) + +The above example of the monitoring setup also makes use of HAProxy Ingress and Prometheus Operator. +You can deploy them in your Kubernetes cluster using the provided third party examples. If you already have them deployed +in your cluster, you can skip the below steps. + +#### Deploy Prometheus Operator +Deploy Prometheus Operator using kubectl: +```console +$ kubectl -n prometheus-operator apply --server-side -f ./examples/third-party/prometheus-operator +``` + +##### Wait for Prometheus Operator to roll out +```console +$ kubectl -n prometheus-operator rollout status --timeout=5m deployments.apps/prometheus-operator +deployment "prometheus-operator" successfully rolled out +``` + +#### Deploy HAProxy Ingress +Deploy HAProxy Ingress using kubectl: +```console +$ kubectl -n haproxy-ingress apply --server-side -f ./examples/third-party/haproxy-ingress +``` + +##### Wait for HAProxy Ingress to roll out +```console +$ kubectl -n haproxy-ingress rollout status --timeout=5m deployments.apps/haproxy-ingress +deployment "haproxy-ingress" successfully rolled out +``` + +### Deploy ScyllaDBMonitoring + +First, update the `endpointsSelector` in `examples/monitoring/v1alpha1/scylladbmonitoring.yaml` with a label +matching your ScyllaCluster instance name. + +Deploy the monitoring setup using kubectl: +```console +$ kubectl -n scylla apply --server-side -f ./examples/monitoring/v1alpha1/scylladbmonitoring.yaml +``` + +Scylla Operator will notice the new ScyllaDBMonitoring object, and it will reconcile all necessary resources. + +#### Wait for ScyllaDBMonitoring to roll out +```console +$ kubectl wait --for='condition=Progressing=False' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met + +$ kubectl wait --for='condition=Degraded=False' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met + +$ kubectl wait --for='condition=Available=True' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met +``` + +#### Wait for Prometheus to roll out +```console +$ kubectl rollout status --timeout=5m statefulset.apps/prometheus-example +statefulset rolling update complete 1 pods at revision prometheus-example-65b89d55bb... +``` + +#### Wait for Grafana to roll out +```console +$ kubectl rollout status --timeout=5m deployments.apps/example-grafana +deployment "example-grafana" successfully rolled out +``` + +### Accessing Grafana + +For accessing Grafana service from outside the Kubernetes cluster we recommend using an Ingress, although there are many other ways to do so. +When using Ingress, what matters is to direct your packets to the ingress controller Service/Pods and have the correct TLS SNI field set by the caller when reaching out to the service, so it is routed properly, and your client can successfully validate the grafana serving certificate. +This is easier when you are using a real DNS domain that resolves to your Ingress controller's IP address but most clients and tools allow setting the SNI field manually. + +### Prerequisites + +To access Grafana, you first need to collect the serving CA and the credentials. + +```console +$ GRAFANA_SERVING_CERT="$( kubectl -n scylla get secret/example-grafana-serving-ca --template '{{ index .data "tls.crt" }}' | base64 -d )" +$ GRAFANA_USER="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "username" }}' | base64 -d )" +$ GRAFANA_PASSWORD="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "password" }}' | base64 -d )" +``` + +### Connecting through Ingress using a resolvable domain + +In production clusters, the Ingress controller and appropriate DNS records should be set up already. Often there is already a generic wildcard record like `*.app.mydomain` pointing to the Ingress controller's external IP. For custom service domains, it is usually a CNAME pointing to the Ingress controller's A record. + +Note: The ScyllaDBMonitoring example creates an Ingress object with `test-grafana.test.svc.cluster.local` DNS domain that you should adjust to your domain. Below examples use `example-grafana.apps.mydomain`. + +Note: To test a resolvable domain from your machine without creating DNS records, you can adjust `/etc/hosts` or similar. + +```console +$ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://example-grafana.apps.mydomain" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}" +200 +``` + +### Connecting through Ingress using an unresolvable domain + +To connect to an Ingress without a resolvable domain you first need to find out your Ingress controller's IP that can be resolved externally. Again, there are many ways to do so beyond the below examples. + +Unless stated otherwise, we assume your Ingress is running on port 443. + +```console +$ INGRESS_PORT=443 +``` + +#### Variants + +##### Ingress ExternalIP + +When you are running in a real cluster there is usually a cloud LoadBalancer or a bare metal alternative providing you with an externally reachable IP address. + +```console +$ INGRESS_IP="$( kubectl -n=haproxy-ingress get service/haproxy-ingress --template='{{ ( index .status.loadBalancer.ingress 0 ).ip }}' )" +``` + +##### Ingress NodePort + +NodePort is slightly less convenient, but it's available in development clusters as well. + +```console +$ INGRESS_IP="$( kubectl get nodes --template='{{ $internal_ip := "" }}{{ $external_ip := "" }}{{ range ( index .items 0 ).status.addresses }}{{ if eq .type "InternalIP" }}{{ $internal_ip = .address }}{{ else if eq .type "ExternalIP" }}{{ $external_ip = .address }}{{ end }}{{ end }}{{ if $external_ip }}{{ $external_ip }}{{ else }}{{ $internal_ip }}{{ end }}' )" +$ INGRESS_PORT="$( kubectl -n=haproxy-ingress get services/haproxy-ingress --template='{{ range .spec.ports }}{{ if eq .port 443 }}{{ .nodePort }}{{ end }}{{ end }}' )" +``` + +##### Connection + +```console +$ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://test-grafana.test.svc.cluster.local:${INGRESS_PORT}" --resolve "test-grafana.test.svc.cluster.local:${INGRESS_PORT}:${INGRESS_IP}" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}" +200 +``` diff --git a/v1.12/_sources/multidc/eks.md.txt b/v1.12/_sources/multidc/eks.md.txt new file mode 100644 index 00000000000..266dd7d3a4d --- /dev/null +++ b/v1.12/_sources/multidc/eks.md.txt @@ -0,0 +1,168 @@ +# Build multiple Amazon EKS clusters with inter-Kubernetes networking + +This document describes the process of creating multiple Amazon EKS clusters in different regions, using separate VPCs, and explains the steps necessary for configuring inter-Kubernetes networking between the clusters. +The interconnected clusters can serve as a platform for [deploying a multi-datacenter ScyllaDB cluster](multidc.md). + +This guide will walk you through the process of creating and configuring EKS clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference. + +## Prerequisites + +To follow the below guide, you first need to install and configure the tools that you will need to create and manage AWS and Kubernetes resources: +- eksctl – A command line tool for working with EKS clusters. +- kubectl – A command line tool for working with Kubernetes clusters. + +For more information see [Getting started with Amazon EKS – eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) in AWS documentation. + +## Create EKS clusters + +### Create the first EKS cluster + +Below is the required specification for the first cluster. + +```yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: scylladb-us-east-1 + region: us-east-1 + +availabilityZones: +- us-east-1a +- us-east-1b +- us-east-1c + +vpc: + cidr: 10.0.0.0/16 + +nodeGroups: + ... +``` + +Specify the first cluster's configuration file and save it as `cluster-us-east-1.yaml`. +Refer to [Creating an EKS cluster](../eks.md#creating-an-eks-cluster) section of ScyllaDB Operator documentation for the reference of the configuration of node groups. + +To deploy the first cluster, use the below command: +```shell +eksctl create cluster -f=cluster-us-east-1.yaml +``` + +Run the following command to learn the status and VPC ID of the cluster: +```shell +eksctl get cluster --name=scylladb-us-east-1 --region=us-east-1 +``` + +You will need to get the cluster's context for future operations. To do so, use the below command: +```shell +kubectl config current-context +``` + +For any `kubectl` commands that you will want to run against this cluster, use the `--context` flag with the value returned by the above command. + +#### Deploy ScyllaDB Operator + +Once the cluster is ready, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) to deploy the ScyllaDB Operator and its prerequisites. + +#### Prepare nodes for running ScyllaDB + +Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in [Deploying Scylla on EKS](../eks.md#prerequisites) in ScyllaDB Operator documentation. + +### Create the second EKS cluster + +Below is the required specification for the second cluster. As was the case with the first cluster, the provided values are only exemplary and can be adjusted according to your needs. + +:::{caution} +It is required that the VPCs of the two EKS clusters have non-overlapping IPv4 network ranges. +::: + +```yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: scylladb-us-east-2 + region: us-east-2 + +availabilityZones: +- us-east-2a +- us-east-2b +- us-east-2c + +vpc: + cidr: 172.16.0.0/16 + +nodeGroups: + ... +``` + +Follow analogous steps to create the second EKS cluster and prepare it for running ScyllaDB. + +## Configure the network + +The prepared Kubernetes clusters each have a dedicated VPC network. +To be able to route the traffic between the two VPC networks, you need to create a networking connection between them, otherwise known as [VPC peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). + +### Create VPC peering + +Refer to [Create a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html#create-vpc-peering-connection-local) in AWS documentation for instructions on creating a VPC peering connection between the two earlier created VPCs. + +In this example, the ID of the created VPC peering connection is `pcx-08077dcc008fbbab6`. + +### Update route tables + +To enable private IPv4 traffic between the instances in the VPC peered network, you need to establish a communication channel by adding a route to the route tables associated with all the subnets associated with the instances for both VPCs. +The destination of the new route in a given route table is the CIDR of the VPC of the other cluster and the target is the ID of the VPC peering connection. + +The following is an example of the route tables that enable communication of instances in two peered VPCs. Each table has a local route and the added route which sends traffic targeted at the other VPC to the peered network connection. The other preconfigured routes are omitted for readability. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          Route tableDestinationTarget
          eksctl-scylladb-us-east-1-cluster/PublicRouteTable10.0.0.0/16local
          172.16.0.0/16pcx-08077dcc008fbbab6
          eksctl-scylladb-us-east-2-cluster/PublicRouteTable172.16.0.0/16local
          10.0.0.0/16pcx-08077dcc008fbbab6
          + + +Refer to [Update your route tables for a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html) in AWS documentation for more information. + +### Update security groups + +To allow traffic to flow to and from instances associated with security groups in the peered VPC, you need to update the inbound rules of the VPCs' shared security groups. + +Below is an example of the inbound rules that to be added to the corresponding security groups of the two VPCs. + +| Security group name | Type | Protocol | Port range | Source | +|--------------------------------------------------------------------------------|-------------|----------|------------|----------------------| +| eksctl-scylladb-us-east-1-cluster-ClusterSharedNodeSecurityGroup-TD05V9EVU3B8 | All traffic | All | All | Custom 172.16.0.0/16 | +| eksctl-scylladb-us-east-2-cluster-ClusterSharedNodeSecurityGroup-1FR9YDLU0VE7M | All traffic | All | All | Custom 10.0.0.0/16 | + +The names of the shared security groups of your VPCs should be similar to the ones presented in the example. + +--- + +Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to [Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters](multidc.md) in ScyllaDB Operator documentation for guidance. diff --git a/v1.12/_sources/multidc/gke.md.txt b/v1.12/_sources/multidc/gke.md.txt new file mode 100644 index 00000000000..b119d9e9b3b --- /dev/null +++ b/v1.12/_sources/multidc/gke.md.txt @@ -0,0 +1,156 @@ +# Build multiple GKE clusters with inter-Kubernetes networking + +This document describes the process of creating multiple GKE clusters in a shared VPC and explains the steps necessary for configuring inter-Kubernetes networking between clusters in different regions. +The interconnected clusters can serve as a platform for [deploying a Multi Datacenter ScyllaDB cluster](multidc.md). + +This guide will walk you through the process of creating and configuring GKE clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference. + +## Prerequisites + +To follow the below guide, you first need to install and configure the following tools that you will need to create and manage GCP and Kubernetes resources: +- gcloud CLI - Google Cloud Command Line Interface, a command line tool for working with Google Cloud resources and services directly. +- kubectl – A command line tool for working with Kubernetes clusters. + +See [Install the Google Cloud CLI](https://cloud.google.com/sdk/docs/install-sdk) in GCP documentation and [Install Tools](https://kubernetes.io/docs/tasks/tools/) in Kubernetes documentation for reference. + +## Create and configure a VPC network + +For the clusters to have inter-Kubernetes networking, you will create a virtual network shared between all the instances, with dedicated subnets for each of the clusters. +To create the subnets manually, create the network in custom subnet mode. + +### Create the VPC network + +Run the below command to create the network: +```shell +gcloud compute networks create scylladb --subnet-mode=custom +``` + +With the VPC network created, create a dedicated subnet with secondary CIDR ranges for their Pod and Service pools in each region which the clusters will reside in. + +### Create VPC network subnets + +To create a subnet for the first cluster in region `us-east1`, run the below command: +```shell +gcloud compute networks subnets create scylladb-us-east1 \ + --region=us-east1 \ + --network=scylladb \ + --range=10.0.0.0/20 \ + --secondary-range='cluster=10.1.0.0/16,services=10.2.0.0/20' +``` + +To create a subnet for the second cluster in region `us-west1`, run the below command: +```shell +gcloud compute networks subnets create scylladb-us-west1 \ + --region=us-west1 \ + --network=scylladb \ + --range=172.16.0.0/20 \ + --secondary-range='cluster=172.17.0.0/16,services=172.18.0.0/20' +``` + +:::{caution} +It is required that the IPv4 address ranges of the subnets allocated for the GKE clusters do not overlap. +::: + +Refer to [Create a VPC-native cluster](https://cloud.google.com/kubernetes-engine/docs/how-to/alias-ips) and [Alias IP ranges](https://cloud.google.com/vpc/docs/alias-ip) in GKE documentation for more information about VPC native clusters and alias IP ranges. + +## Create GKE clusters + +With the VPC network created, you will now create two VPC native GKE clusters in dedicated regions. + +### Create the first GKE cluster + +Run the following command to create the first GKE cluster in the `us-east1` region: +```shell +gcloud container clusters create scylladb-us-east1 \ + --location=us-east1-b \ + --node-locations='us-east1-b,us-east1-c' \ + --machine-type=n1-standard-8 \ + --num-nodes=1 \ + --disk-type=pd-ssd \ + --disk-size=20 \ + --image-type=UBUNTU_CONTAINERD \ + --no-enable-autoupgrade \ + --no-enable-autorepair \ + --enable-ip-alias \ + --network=scylladb \ + --subnetwork=scylladb-us-east1 \ + --cluster-secondary-range-name=cluster \ + --services-secondary-range-name=services +``` + +Refer to [Creating a GKE cluster](../gke.md#creating-a-gke-cluster) section of ScyllaDB Operator documentation for more information regarding the configuration and deployment of additional node pools, including the one dedicated for ScyllaDB nodes. + +You will need to get the cluster's context for future operations. To do so, use the below command: +```shell +kubectl config current-context +``` + +For any `kubectl` commands that you will want to run against this cluster, use the `--context` flag with the value returned by the above command. + +#### Deploy ScyllaDB Operator + +Once the cluster is ready, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) to deploy the ScyllaDB Operator and its prerequisites. + +#### Prepare nodes for running ScyllaDB + +Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in [Deploying Scylla on GKE](../gke.md) page of the documentation. + +### Create the second GKE cluster + +Run the following command to create the second GKE cluster in the `us-west1` region: +```shell +gcloud container clusters create scylladb-us-west1 \ + --location=us-west1-b \ + --node-locations='us-west1-b,us-west1-c' \ + --machine-type=n1-standard-8 \ + --num-nodes=1 \ + --disk-type=pd-ssd \ + --disk-size=20 \ + --image-type=UBUNTU_CONTAINERD \ + --no-enable-autoupgrade \ + --no-enable-autorepair \ + --enable-ip-alias \ + --network=scylladb \ + --subnetwork=scylladb-us-west1 \ + --cluster-secondary-range-name=cluster \ + --services-secondary-range-name=services +``` + +Follow analogous steps to create the second GKE cluster and prepare it for running ScyllaDB. + +## Configure the firewall rules + +When creating a cluster, GKE creates several ingress firewall rules that enable the instances to communicate with each other. +To establish interconnectivity between the two created Kubernetes clusters, you will now add the allocated IPv4 address ranges to their corresponding source address ranges. + +First, retrieve the name of the firewall rule associated with the first cluster, which permits traffic between all Pods on a cluster, as required by the Kubernetes networking model. +The rule name is in the following format: `gke-[cluster-name]-[cluster-hash]-all`. + +To retrieve it, run the below command: +```shell +gcloud compute firewall-rules list --filter='name~gke-scylladb-us-east1-.*-all' +``` + +The output should resemble the following: +```console +NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED +gke-scylladb-us-east1-f17db261-all scylladb INGRESS 1000 udp,icmp,esp,ah,sctp,tcp False +``` + +Modify the rule by updating the rule's source ranges with the allocated Pod IPv4 address ranges of both clusters: +```shell +gcloud compute firewall-rules update gke-scylladb-us-east1-f17db261-all --source-ranges='10.1.0.0/16,172.17.0.0/16' +``` + +Follow the analogous steps for the other cluster. In this example, its corresponding firewall rule name is `gke-scylladb-us-west1-0bb60902-all`. To update it, you would run: +```shell +gcloud compute firewall-rules update gke-scylladb-us-west1-0bb60902-all --source-ranges='10.1.0.0/16,172.17.0.0/16' +``` + +Refer to [Automatically created firewall rules](https://cloud.google.com/kubernetes-engine/docs/concepts/firewall-rules) in GKE documentation for more information. + +--- + +Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to [Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters](multidc.md) in ScyllaDB Operator documentation for guidance. diff --git a/v1.12/_sources/multidc/index.rst.txt b/v1.12/_sources/multidc/index.rst.txt new file mode 100644 index 00000000000..a2f1eae7709 --- /dev/null +++ b/v1.12/_sources/multidc/index.rst.txt @@ -0,0 +1,18 @@ +========================================================== +Deploying multi-datacenter ScyllaDB clusters in Kubernetes +========================================================== + +Prepare a platform for a multi datacenter ScyllaDB cluster deployment: + +.. toctree:: + :maxdepth: 1 + + eks + gke + +Deploy a multi-datacenter ScyllaDB cluster in Kubernetes: + +.. toctree:: + :maxdepth: 1 + + multidc diff --git a/v1.12/_sources/multidc/multidc.md.txt b/v1.12/_sources/multidc/multidc.md.txt new file mode 100644 index 00000000000..117f75b8e40 --- /dev/null +++ b/v1.12/_sources/multidc/multidc.md.txt @@ -0,0 +1,601 @@ +# Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters + +This document describes the process of deploying a Multi Datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters. + +This guide will walk you through the example procedure of deploying two datacenters in distinct regions of a selected cloud provider. + +:::{note} +This guide is dedicated to deploying multi-datacenter ScyllaDB clusters and does not discuss unrelated configuration options. +For details of ScyllaDB cluster deployments and their configuration, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) in ScyllaDB Operator documentation. +::: + +## Prerequisites + +As this document describes the procedure of deploying a Multi Datacenter ScyllaDB cluster, you are expected to have the required infrastructure prepared. +Let's assume two interconnected Kubernetes clusters, capable of communicating with each other over PodIPs, with each cluster meeting the following requirements: +- a node pool dedicated to ScyllaDB nodes composed of at least 3 nodes running in different zones (with unique `topology.kubernetes.io/zone` label), configured to run ScyllaDB, each labeled with `scylla.scylladb.com/node-type: scylla` +- running ScyllaDB Operator and its prerequisites +- running a storage provisioner capable of provisioning XFS volumes of StorageClass `scylladb-local-xfs` in each of the nodes dedicated to ScyllaDB instances + +You can refer to one of our guides describing the process of preparing such infrastructure: +- [Build multiple Amazon EKS clusters with Inter-Kubernetes networking](eks.md) +- [Build multiple GKE clusters with Inter-Kubernetes networking](gke.md) + +Additionally, to follow the below guide, you need to install and configure the following tools that you will need to manage Kubernetes resources: +- kubectl – A command line tool for working with Kubernetes clusters. + +See [Install Tools](https://kubernetes.io/docs/tasks/tools/) in Kubernetes documentation for reference. + +## Multi Datacenter ScyllaDB Cluster + +In v1.11, ScyllaDB Operator introduced support for manual multi-datacenter ScyllaDB cluster deployments. + +:::{warning} +ScyllaDB Operator only supports *manual configuration* of multi-datacenter ScyllaDB clusters. +In other words, although ScyllaCluster API exposes the machinery necessary for setting up multi-datacenter ScylaDB clusters, the ScyllaDB Operator only automates operations for a single datacenter. + +Operations related to multiple datacenters may require manual intervention of a human operator. +Most notably, destroying one of the Kubernetes clusters or ScyllaDB datacenters is going to leave DN nodes behind in other datacenters, and their removal has to be carried out manually. +::: + +The main mechanism used to set up a manual multi-datacenter ScyllaDB cluster is a field in ScyllaCluster's specification - `externalSeeds`. + +### External seeds + +The `externalSeeds` field in ScyllaCluster's specification enables control over external seeds that are propagated to ScyllaDB binary as `--seed-provider-parameters seeds=`. +In this context, external should be understood as "external to the datacenter being specified by the API". +The provided seeds are used by the nodes as initial points of contact, which allows them to discover the cluster ring topology when joining it. + +Refer to [Scylla Seed Nodes](https://opensource.docs.scylladb.com/stable/kb/seed-nodes.html) in ScyllaDB documentation for more information regarding the function of seed nodes in ScyllaDB. +For more details regarding the function and implementation of external seeds, refer to [the original enhancement proposal](https://github.com/scylladb/scylla-operator/tree/v1.11/enhancements/proposals/1304-external-seeds). + +### Networking + +Since this guide assumes interconnectivity over PodIPs of the Kubernetes clusters, you are going to configure the ScyllaDB cluster's nodes to communicate over PodIPs. +This is enabled by a subset of `exposeOptions` specified in ScyllaCluster API, introduced in v1.11. + +For this particular setup, define the ScyllaClusers as follows: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP +``` + +However, other configuration options allow for the manual deployment of multi-datacenter ScyllaDB clusters in different network setups. For details, refer to [Exposing ScyllaClusters](../exposing.md) in ScyllaDB Operator documentation. + +#### Deploy a multi-datacenter ScyllaDB Cluster + +#### Using context + +Let's specify contexts for `kubectl` commands used throughout the guide. +To retrieve the context of your current cluster, run: +```shell +kubectl config current-context +``` + +Save the contexts of the two clusters, which you are going to deploy the datacenters in, as `CONTEXT_DC1` and `CONTEXT_DC2` environment variables correspondingly. + +#### Deploy the first datacenter + +First, run the below command to create a dedicated 'scylla' namespace: +```shell +kubectl --context="${CONTEXT_DC1}" create ns scylla +``` + +For this guide, let's assume that your cluster is running in `us-east-1` region and the nodes dedicated to running ScyllaDB nodes are running in zones `us-east-1a`, `us-east-1b` and `us-east-1c` correspondingly. If that is not the case, adjust the manifest accordingly. + +:::{caution} +The `.spec.name` field of the ScyllaCluster objects represents the ScyllaDB cluster name and has to be consistent across all datacenters of this ScyllaDB cluster. +The names of the datacenters, specified in `.spec.datacenter.name`, have to be unique across the entire multi-datacenter cluster. + +For more information see [Create a ScyllaDB Cluster - Multi Data Centers (DC)](https://opensource.docs.scylladb.com/stable/operating-scylla/procedures/cluster-management/create-cluster-multidc.html) in ScyllaDB documentation. +::: + +Save the ScyllaCluster manifest in `dc1.yaml`: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: scylla-cluster + namespace: scylla +spec: + agentVersion: 3.2.5 + version: 5.4.0 + cpuset: true + sysctls: + - "fs.aio-max-nr=2097152" + automaticOrphanedNodeCleanup: true + exposeOptions: + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP + nodeService: + type: Headless + datacenter: + name: us-east-1 + racks: + - name: a + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1a + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: b + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1b + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: c + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1c + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule +``` + +Apply the manifest: +```shell +kubectl --context="${CONTEXT_DC1}" apply --server-side -f=dc1.yaml +``` + +Wait for the cluster to be fully rolled out: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +You can now verify that all the nodes of your cluster are in UN state: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla exec -it pod/scylla-cluster-us-east-1-a-0 -c=scylla -- nodetool status +``` + +The expected output should look similar to the below: +```console +Datacenter: us-east-1 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 10.0.70.195 290 KB 256 ? 494277b9-121c-4af9-bd63-3d0a7b9305f7 c +UN 10.0.59.24 559 KB 256 ? a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37 b +UN 10.0.19.237 107 KB 256 ? 64b6292a-327f-4128-852a-6004039f402e a +``` + +##### Retrieve PodIPs of ScyllaDB nodes for use as external seeds + +:::{warning} +Due to the ephemeral nature of PodIPs, it is ill-advised to use them as seeds in production environments. +This is because there is a high likelihood that the Pods of your ScyllaDB clusters will change their IPs during the cluster's lifecycle, and so the provided seeds will no longer point to the ScyllaDB nodes. +It is undesired, as the seeds provided on node's startup may serve as fallback contact points when all of the node's peers are unreachable. +In production environments, it is recommended that you use domain names or non-ephemeral IP addresses as external seeds. +PodIPs are being used in this example for the sheer simplicity of this setup. +::: + +Use the below commands and their expected outputs as a reference for retrieving the PodIPs used by the cluster for inter-node communication. +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-a-0 --template='{{ .status.podIP }}' +``` +```console +10.0.19.237 +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-b-0 --template='{{ .status.podIP }}' +``` +```console +10.0.59.24 +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-c-0 --template='{{ .status.podIP }}' +``` +```console +10.0.70.195 +``` + +You are going to utilize the retrieved addresses as seeds for the other datacenter. + +#### Deploy the second datacenter + +To deploy the second datacenter, you will follow similar steps. + +First, create a dedicated 'scylla' namespace: +```shell +kubectl --context="${CONTEXT_DC2}" create ns scylla +``` + +Replace the values in `.spec.externalSeeds` of the below manifest with the Pod IP addresses that you retrieved earlier. +The provided values are going to serve as initial contact points for the joining nodes of the second datacenter. + +For this guide, let's assume that the second cluster is running in `us-east-2` region and the nodes dedicated for running ScyllaDB nodes are running in zones `us-east-2a`, `us-east-2b` and `us-east-2c` correspondingly. If that is not the case, adjust the manifest accordingly. +Having configured it, save the manifest as `dc2.yaml`: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: scylla-cluster + namespace: scylla +spec: + agentVersion: 3.2.5 + version: 5.4.0 + cpuset: true + sysctls: + - "fs.aio-max-nr=2097152" + automaticOrphanedNodeCleanup: true + exposeOptions: + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP + nodeService: + type: Headless + externalSeeds: + - 10.0.19.237 + - 10.0.59.24 + - 10.0.70.195 + datacenter: + name: us-east-2 + racks: + - name: a + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2a + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: b + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2b + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: c + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2c + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule +``` + +To apply the manifest, run: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla apply --server-side -f=dc2.yaml +``` + +Wait for the second datacenter to roll out: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +You can verify that the nodes have joined the existing cluster and that you are now running a multi-datacenter ScyllaDB cluster by running `nodetool status` with the below command: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla exec -it pod/scylla-cluster-us-east-2-a-0 -c=scylla -- nodetool status +``` +```console +Datacenter: us-east-1 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 10.0.70.195 705 KB 256 ? 494277b9-121c-4af9-bd63-3d0a7b9305f7 c +UN 10.0.59.24 764 KB 256 ? a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37 b +UN 10.0.19.237 634 KB 256 ? 64b6292a-327f-4128-852a-6004039f402e a +Datacenter: us-east-2 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 172.16.39.209 336 KB 256 ? 7c30ea55-7a4f-4d93-86f7-c881772ebe62 b +UN 172.16.25.18 759 KB 256 ? 665dde7e-e420-4db3-8c54-ca71efd39b2e a +UN 172.16.87.27 503 KB 256 ? c19c89cb-e24c-4062-9df4-2aa90ab29a99 c +``` + +## Scylla Manager + +To integrate a multi-datacenter ScyllaDB cluster with Scylla Manager, you must deploy the Scylla Manager in only one datacenter. + +In this example, let's choose the Kubernetes cluster deployed in the first datacenter to host it. +To deploy Scylla Manager, follow the steps described in [Deploying Scylla Manager on a Kubernetes Cluster](../manager.md) +in ScyllaDB Operator documentation. + +In order to define the Scylla Manager tasks, add them to the ScyllaCluster object deployed in the same Kubernetes cluster +in which your Scylla Manager is running. + +Every datacenter (represented by ScyllaCluster CR) is, by default, provisioned with a new, random Scylla Manager Agent auth token. +To use Scylla Manager with multiple datacenter (represented by ScyllaClusters), you have to make sure they all use the same token. + +Extract it from the first datacenter with the below command: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get secrets/scylla-cluster-auth-token --template='{{ index .data "auth-token.yaml" }}' | base64 -d +``` +```console +auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf +``` + +Save the output, replace the token with your own, and patch the secret in the second datacenter with the below command: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla patch secret/scylla-cluster-auth-token--type='json' -p='[{"op": "add", "path": "/stringData", "value": {"auth-token.yaml": "auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf"}}]' +``` + +Execute a rolling restart of the nodes in DC2 to make sure they pick up the new token: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla patch scyllacluster/scylla-cluster --type='merge' -p='{"spec": {"forceRedeploymentReason": "sync scylla-manager-agent token ('"$( date )"')"}}' +``` + + +## ScyllaDBMonitoring + +To monitor your cluster, deploy ScyllaDBMonitoring in every datacenter independently. +To deploy ScyllaDB Monitoring, follow the steps described in [Deploy managed monitoring](../monitoring.md#deploy-managed-monitoring) in ScyllaDB Operator documentation. diff --git a/v1.12/_sources/nodeoperations/automatic-cleanup.md.txt b/v1.12/_sources/nodeoperations/automatic-cleanup.md.txt new file mode 100644 index 00000000000..5e0535cca97 --- /dev/null +++ b/v1.12/_sources/nodeoperations/automatic-cleanup.md.txt @@ -0,0 +1,6 @@ +# Automatic cleanup and replacement in case when k8s node is lost + +In case when your k8s cluster loses one of the nodes due to incident or explicit removal, Scylla Pods may become unschedulable due to PVC node affinity. + +When `automaticOrphanedNodeCleanup` flag is enabled in your ScyllaCluster, Scylla Operator will perform automatic +node replacement of a Pod which lost his bound resources. diff --git a/v1.12/_sources/nodeoperations/index.rst.txt b/v1.12/_sources/nodeoperations/index.rst.txt new file mode 100644 index 00000000000..bf481452d7c --- /dev/null +++ b/v1.12/_sources/nodeoperations/index.rst.txt @@ -0,0 +1,12 @@ +====================================== +Node operations using Scylla Operator +====================================== + +.. toctree:: + :maxdepth: 1 + + scylla-upgrade + replace-node + automatic-cleanup + maintenance-mode + restore diff --git a/v1.12/_sources/nodeoperations/maintenance-mode.md.txt b/v1.12/_sources/nodeoperations/maintenance-mode.md.txt new file mode 100644 index 00000000000..c976ecc2b87 --- /dev/null +++ b/v1.12/_sources/nodeoperations/maintenance-mode.md.txt @@ -0,0 +1,19 @@ +# Maintenance mode + +When maintenance mode is enabled, readiness probe of Scylla Pod will always return failure and liveness probe will always succeed. This causes that Pod under maintenance +is being removed from K8s Load Balancer and DNS registry but Pod itself stays alive. + +This allows the Scylla Operator to interact with Scylla and Scylla dependencies inside the Pod. +For example user may turn off Scylla process, do something with the filesystem and bring the process back again. + +To enable maintenance mode add `scylla/node-maintenance` label to service in front of Scylla Pod. + +```bash +kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance="" +``` + +To disable, simply remove this label from service. + +```bash +kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance- +``` diff --git a/v1.12/_sources/nodeoperations/replace-node.md.txt b/v1.12/_sources/nodeoperations/replace-node.md.txt new file mode 100644 index 00000000000..3e6a8c7f024 --- /dev/null +++ b/v1.12/_sources/nodeoperations/replace-node.md.txt @@ -0,0 +1,74 @@ +# Replacing a Scylla node + +## Replacing a dead node +In the case of a host failure, it may not be possible to bring back the node to life. + +Replace dead node operation will cause the other nodes in the cluster to stream data to the node that was replaced. +This operation can take some time (depending on the data size and network bandwidth). + +_This procedure is for replacing one dead node. To replace more than one dead node, run the full procedure to completion one node at a time_ + +**Procedure** + +1. Verify the status of the node using `nodetool status` command, the node with status DN is down and need to be replaced + ```bash + kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status + Datacenter: us-east-1 + ===================== + Status=Up/Down + |/ State=Normal/Leaving/Joining/Moving + -- Address Load Tokens Owns Host ID Rack + UN 10.43.125.110 74.63 KB 256 ? 8ebd6114-969c-44af-a978-87a4a6c65c3e us-east-1a + UN 10.43.231.189 91.03 KB 256 ? 35d0cb19-35ef-482b-92a4-b63eee4527e5 us-east-1a + DN 10.43.43.51 74.77 KB 256 ? 1ffa7a82-c41c-4706-8f5f-4d45a39c7003 us-east-1a + ``` +1. Identify service which is bound to down node by checking IP address + ```bash + kubectl -n scylla get svc + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 3h12m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.231.189 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h12m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.125.110 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h11m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.43.51 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h5m + ``` +1. Drain node which we would like to replace using. **This command may delete your data from local disks attached to given node!** + ```bash + kubectl drain gke-scylla-demo-default-pool-b4b390a1-6j12 --ignore-daemonsets --delete-local-data + ``` + + Pod which will be replaced should enter the `Pending` state + ```bash + kubectl -n scylla get pods + NAME READY STATUS RESTARTS AGE + simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 3h21m + simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 3h19m + simple-cluster-us-east-1-us-east-1a-2 0/2 Pending 0 8m14s + ``` +1. To being node replacing, add `scylla/replace=""` label to service bound to pod we are replacing. + ```bash + kubectl -n scylla label svc simple-cluster-us-east-1-us-east-1a-2 scylla/replace="" + ``` + Your failed Pod should be recreated on available k8s node + ```bash + kubectl -n scylla get pods + NAME READY STATUS RESTARTS AGE + simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 3h27m + simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 3h25m + simple-cluster-us-east-1-us-east-1a-2 1/2 Running 0 9s + ``` + Because other nodes in cluster must stream data to new node this operation might take some time depending on how much data your cluster stores. + After bootstraping is over, your new Pod should be ready to go. + Old one shouldn't be no longer visible in `nodetool status` + ```bash + kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status + Datacenter: us-east-1 + ===================== + Status=Up/Down + |/ State=Normal/Leaving/Joining/Moving + -- Address Load Tokens Owns Host ID Rack + UN 10.43.125.110 74.62 KB 256 ? 8ebd6114-969c-44af-a978-87a4a6c65c3e us-east-1a + UN 10.43.231.189 91.03 KB 256 ? 35d0cb19-35ef-482b-92a4-b63eee4527e5 us-east-1a + UN 10.43.191.172 74.77 KB 256 ? 1ffa7a82-c41c-4706-8f5f-4d45a39c7003 us-east-1a + ``` +1. Run the repair on the cluster to make sure that the data is synced with the other nodes in the cluster. + You can use [Scylla Manager](../manager.md) to run the repair. diff --git a/v1.12/_sources/nodeoperations/restore.md.txt b/v1.12/_sources/nodeoperations/restore.md.txt new file mode 100644 index 00000000000..647fece1558 --- /dev/null +++ b/v1.12/_sources/nodeoperations/restore.md.txt @@ -0,0 +1,239 @@ +# Restore from backup + +This procedure will describe how to restore from backup taken using [Scylla Manager](../manager.md) to a fresh **empty** cluster of any size. + +:::{warning} +Restoring schema with **ScyllaDB OS 5.4.X** or **ScyllaDB Enterprise 2024.1.X** and `consistent_cluster_management` isn’t supported. + +When creating the `target` ScyllaDB cluster, configure it with `consistent_cluster_management: false`. +Refer to [API Reference](../api-reference/index.rst) to learn how to customize ScyllaDB configuration files. + +When following the steps for schema restore, ensure you follow the additional steps dedicated to affected ScyllaDB versions. +::: + +In the following example, the ScyllaCluster, which was used to take the backup, is called `source`. Backup will be restored into the ScyllaCluster named `target`. + +::::{tab-set} +:::{tab-item} Source ScyllaCluster +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: source +spec: + agentVersion: 3.2.5 + version: 5.4.1 + developerMode: true + backups: + - name: foo + location: + - s3:source-backup + keyspace: + - '*' + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 1 + storage: + capacity: 1Gi + resources: + limits: + cpu: 1 + memory: 1Gi +``` +::: +:::{tab-item} Target ScyllaCluster +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: target +spec: + agentVersion: 3.2.5 + version: 5.4.1 + developerMode: true + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 1 + storage: + capacity: 1Gi + resources: + limits: + cpu: 1 + memory: 1Gi +``` +::: +:::: + +Make sure your target cluster is already registered in Scylla Manager. To get a list of all registered clusters, execute the following command: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool cluster list ++--------------------------------------+---------------------------------------+---------+-----------------+ +| ID | Name | Port | CQL credentials | ++--------------------------------------+---------------------------------------+---------+-----------------+ +| af1dd5cd-0406-4974-949f-dc9842980080 | scylla/target | default | set | +| ebd82268-efb7-407e-a540-3619ae053778 | scylla/source | default | set | ++--------------------------------------+---------------------------------------+---------+-----------------+ +``` + +Identify the tag of a snapshot which you want to restore. To get a list of all available snapshots, execute following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c --all-clusters -L +``` + +Where: +* `CLUSTER_ID` - the name or ID of a registered cluster with access to `BACKUP_LOCATION`. +* `BACKUP_LOCATION` - the location in which the backup is stored. + +In this example, `BACKUP_LOCATION` is `s3:source-backup`. Use the name of cluster which has access to the backup location for `CLUSTER_ID`. +In this example, it's `scylla/target`. + +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c scylla/target --all-clusters -L s3:source-backup +backup/ff36d7e0-af2e-458c-afe6-868e0f3396b2 +Snapshots: + - sm_20240105115931UTC (409MiB, 1 nodes) +Keyspaces: + - system_schema (15 tables) + - users (9 tables) + +``` + +## Restore schema + +In the below commands, we are restoring the `sm_20240105115931UTC` snapshot. Replace it with a tag of a snapshot that you want to restore. +Restoring consist of two steps. First, you'll restore the schema, and then the data. +To restore schema, create a restore task manually on target ScyllaCluster by executing following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c -L -T --restore-schema +``` + +Where: +* `CLUSTER_ID` - a name or ID of a cluster you want to restore into. +* `BACKUP_LOCATION` - the location in which the backup is stored. +* `SNAPSHOT_TAG` - a tag of a snapshot that you want to restore. + +When the task is created, the command will output the ID of a restore task. +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-schema +restore/57228c52-7cf6-4271-8c8d-d446ff160747 +``` + +Use the following command to check progress of the restore task: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/57228c52-7cf6-4271-8c8d-d446ff160747 +Restore progress +Run: 0dd20cdf-abc4-11ee-951c-6e7993cf42ed +Status: DONE - restart required (see restore docs) +Start time: 05 Jan 24 12:15:02 UTC +End time: 05 Jan 24 12:15:09 UTC +Duration: 6s +Progress: 100% | 100% +Snapshot Tag: sm_20240105115931UTC + ++---------------+-------------+----------+----------+------------+--------+ +| Keyspace | Progress | Size | Success | Downloaded | Failed | ++---------------+-------------+----------+----------+------------+--------+ +| system_schema | 100% | 100% | 214.150k | 214.150k | 214.150k | 0 | ++---------------+-------------+----------+----------+------------+--------+ +``` + +As suggested in the progress output, you will need to execute a rolling restart of the ScyllaCluster. +```console +kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "schema restored"}}' +``` + +Use the following commands to wait until restart is finished: +```console +$ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met +``` + +:::{caution} +### Restoring schema with **ScyllaDB OS 5.4.X** or **ScyllaDB Enterprise 2024.1.X** and `consistent_cluster_management` + +After you've followed the above steps with a ScyllaDB target cluster with `consistent_cluster_management` disabled, you'll need to enable Raft by configuring the target cluster with `consistent_cluster_management: true`. +Refer to [API Reference](../api-reference/index.rst) to learn how to customize ScyllaDB configuration files. + +You will then need to execute a rolling restart of the ScyllaCluster for the change to take effect. +```console +kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "raft enabled"}}' +``` + +Use the following commands to wait until restart is finished: +```console +$ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met +``` +::: + +## Restore tables + +To restore the tables content, create a restore task manually on target ScyllaCluster by executing the following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c -L -T --restore-tables +``` + +Where: +* `CLUSTER_ID` - a name or ID of a cluster you want to restore into. +* `BACKUP_LOCATION` - the location in which the backup is stored. +* `SNAPSHOT_TAG` - a tag of a snapshot that you want to restore. + +When the task is created, the command will output the ID of a restore task. +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-tables +restore/63642069-bed5-4def-ba0f-68c49e47ace1 +``` + +Use the following command to check progress of the restore task: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/63642069-bed5-4def-ba0f-68c49e47ace1 +Restore progress +Run: ab015cef-abc8-11ee-9521-6e7993cf42ed +Status: DONE +Start time: 05 Jan 24 12:48:04 UTC +End time: 05 Jan 24 12:48:15 UTC +Duration: 11s +Progress: 100% | 100% +Snapshot Tag: sm_20240105115931UTC + ++-------------+-------------+--------+---------+------------+--------+ +| Keyspace | Progress | Size | Success | Downloaded | Failed | ++-------------+-------------+--------+---------+------------+--------+ +| users | 100% | 100% | 409MiB | 409MiB | 409MiB | 0 | ++-------------+-------------+--------+---------+------------+--------+ + +Post-restore repair progress +Run: ab015cef-abc8-11ee-9521-6e7993cf42ed +Status: DONE +Start time: 05 Jan 24 12:48:04 UTC +End time: 05 Jan 24 12:48:15 UTC +Duration: 11s +Progress: 100% +Intensity: 1 +Parallel: 0 +Datacenters: + - us-east-1 + ++-------------+--------------+----------+----------+ +| Keyspace | Table | Progress | Duration | ++-------------+--------------+----------+----------+ +| users | users | 100% | 0s | ++-------------+--------------+----------+----------+ + +``` diff --git a/v1.12/_sources/nodeoperations/scylla-upgrade.md.txt b/v1.12/_sources/nodeoperations/scylla-upgrade.md.txt new file mode 100644 index 00000000000..d39c9666c5e --- /dev/null +++ b/v1.12/_sources/nodeoperations/scylla-upgrade.md.txt @@ -0,0 +1,102 @@ +# Upgrading version of Scylla + +To upgrade Scylla version using Operator user have to modify existing ScyllaCluster definition. + +In this example cluster will be upgraded to version `4.4.5`. +```bash +kubectl -n scylla patch ScyllaCluster simple-cluster -p '{"spec":{"version": "4.4.5"}}' --type=merge +``` + +Operator supports two types of version upgrades: +1. Patch upgrade +1. Generic upgrade + + +**Patch upgrade** + +Patch upgrade is executed when only patch version change is detected according to [semantic versioning format](https://semver.org/). +Procedure simply rolls out a restart of whole cluster and upgrades Scylla container image for each node one by one. + +Example: `4.0.0 -> 4.0.1` + +**Generic upgrade** + +Generic upgrades are executed for the non patch version changes. + +Example: `4.0.0 -> 2020.1.0` or `4.0.0 -> 4.1.0` or even `4.0.0 -> nightly` + +User can observe current state of upgrade in ScyllaCluster status. +```bash +kubectl -n scylla describe ScyllaCluster simple-cluster +[...] +Status: + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.1.9 + Upgrade: + Current Node: simple-cluster-us-east-1-us-east-1a-2 + Current Rack: us-east-1a + Data Snapshot Tag: so_data_20201228135002UTC + From Version: 4.1.9 + State: validate_upgrade + System Snapshot Tag: so_system_20201228135002UTC + To Version: 4.2.2 +``` + +Each upgrade begins with taking a snapshot of `system` and `system_schema` keyspaces on all nodes in parallel. +Name of this snapshot tag is saved in upgrade status under `System Snapshot Tag`. + +Before nodes in rack are upgraded, underlying StatefulSet is changed to use `OnDelete` UpgradeStrategy. +This allows Operator have a full control over when Pod image is changed. + +When a node is being upgraded, [maintenance mode](#maintenance-mode) is enabled, then the node is drained and snapshot of all data keyspaces is taken. +Snapshot tag is saved under `Data Snapshot Tag` and is the same for all nodes during the procedure. +Once everything is set up, maintenance mode is disabled and Scylla Pod is deleted. Underlying StatefulSet will bring up a new +Pod with upgraded version. +Once Pod will become ready, data snapshot from this particular node is removed, and Operator moves to next node. + +Once every rack is upgraded, system snapshot is removed from all nodes in parallel and previous StatefulSet UpgradeStrategy is restored. +At this point, all your nodes should be already in desired version. + +Current state of upgrade can be traced using `Current Node`, `Current Rack` and `State` status fields. +* `Current Node` shows which node is being upgraded. +* `Current Rack` displays which rack is being upgraded. +* `State` contain information at which stage upgrade is. + +`State` can have following values: +* `begin_upgrade` - upgrade is starting +* `check_schema_agreement` - Operator waits until all nodes reach schema agreement. It waits for it for 1 minute, prints an error log message and check is retried. +* `create_system_backup` - system keyspaces snapshot is being taken +* `find_next_rack` - Operator finds out which rack must be upgraded next, decision is saved in `Current Rack` +* `upgrade_image_in_pod_spec` - Image and UpgradeStrategy is upgraded in underlying StatefulSet +* `find_next_node` - Operator finds out which node must be upgraded next, decision is saved in `Current Node` +* `enable_maintenance_mode` - maintenance mode is being enabled +* `drain_node` - node is being drained +* `backup_data` - snapshot of data keyspaces is being taken +* `disable_maintenance_mode` - maintenance mode is being disabled +* `delete_pod` - Scylla Pod is being deleted +* `validate_upgrade` - Operator validates if new pod enters Ready state and if Scylla version is upgraded +* `clear_data_backup` - snapshot of data keyspaces is being removed +* `clear_system_backup` - snapshot of system keyspaces is being removed +* `restore_upgrade_strategy` - restore UpgradeStrategy in underlying StatefulSet +* `finish_upgrade` - upgrade cleanup + +**Recovering from upgrade failure** + +Upgrade may get stuck on `validate_upgrade` stage. This happens when Scylla Pod refuses to properly boot up. + +To continue with upgrade, first turn off operator by scaling Operator replicas to zero: +```bash +kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=0 +``` +Then user have to manually resolve issue with Scylla by checking what is the root cause of a failure in Scylla container logs. +If needed data and system keyspaces SSTable snapshots are available on the node. You can check ScyllaCluster status for their names. + +Once issue is resolved and Scylla Pod is up and running (Pod is in Ready state), scale Operator back to two replicas: +```bash +kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=2 +``` + +Operator should continue upgrade process from where it left off. diff --git a/v1.12/_sources/performance.md.txt b/v1.12/_sources/performance.md.txt new file mode 100644 index 00000000000..bf15e6247bc --- /dev/null +++ b/v1.12/_sources/performance.md.txt @@ -0,0 +1,95 @@ +# Performance tuning + +Scylla Operator 1.6 introduces a new experimental feature allowing users to optimize Kubernetes nodes. + +## Node tuning + +Starting from Operator 1.6, a new CRD called NodeConfig is available, allowing users to target Nodes which should be tuned. +When a Node is supposed to be optimized, the Scylla Operator creates a DaemonSet covering these Nodes. +Nodes matching the provided placement conditions will be subject to tuning. + +Below example NodeConfig tunes nodes having `scylla.scylladb.com/node-type=scylla` label: +``` +apiVersion: scylla.scylladb.com/v1alpha1 +kind: NodeConfig +metadata: + name: cluster +spec: + placement: + nodeSelector: + scylla.scylladb.com/node-type: scylla +``` +For more details about new CRD use: +``` +kubectl explain nodeconfigs.scylla.scylladb.com/v1alpha1 +``` + +For all optimizations we use a Python script available in the Scylla image called perftune. +Perftune executes the performance optmizations like tuning the kernel, network, disk devices, spreading IRQs across CPUs and more. + +Tuning consists of two separate optimizations: common node tuning, and tuning based on Scylla Pods and their resource assignment. +Node tuning is executed immediately. Pod tuning is executed when Scylla Pod lands on the same Node. + +Scylla works most efficently when it's pinned to CPU and not interrupted. +One of the most common causes of context-switching are network interrupts. Packets coming to a node need to be processed, +and this requires CPU shares. + +On K8s we always have at least a couple of processes running on the node: kubelet, kubernetes provider applications, daemons etc. +These processes require CPU shares, so we cannot dedicate entire node processing power to Scylla, we need to leave space for others. +We take advantage of it, and we pin IRQs to CPUs not used by any Scylla Pods exclusively. + +Tuning resources are created in a special namespace called `scylla-operator-node-tuning`. + +The tuning is applied only to pods with `Guaranteed` QoS class. Please double check your ScyllaCluster resource specification +to see if it meets all conditions. + +## Kubernetes tuning + +By default, the kubelet uses the CFS quota to enforce pod CPU limits. +When the node runs many CPU-bound pods, the workload can move around different CPU cores depending on whether the pod +is throttled and which CPU cores are available. +However, kubelet may be configured to assign CPUs exclusively, by setting the CPU manager policy to static. + +Setting up kubelet configuration is provider specific. Please check the docs for your distribution or talk to your +provider. + +Only pods within the [Guaranteed QoS class](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/#create-a-pod-that-gets-assigned-a-qos-class-of-guaranteed)) can take advantage of this option. +When such pod lands on a Node, kubelet will pin them to specific CPUs, and those won't be part of the shared pool. + +In our case there are two requirements each ScyllaCluster must fulfill to receive a Guaranteed QoS class: +* resource request and limits must be equal or only limits have to be provided +* agentResources must be provided and their requests and limits must be equal, or only limits have to be provided + +An example of such a ScyllaCluster that receives a Guaranteed QoS class is below: + +``` +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: guaranteed-cluster + namespace: scylla +spec: + agentVersion: 3.2.5 + version: 5.4.0 + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 3 + storage: + capacity: 500Gi + agentResources: + requests: + cpu: 1 + memory: 1G + limits: + cpu: 1 + memory: 1G + resources: + requests: + cpu: 4 + memory: 16G + limits: + cpu: 4 + memory: 16G +``` diff --git a/v1.12/_sources/releases.md.txt b/v1.12/_sources/releases.md.txt new file mode 100644 index 00000000000..e1c42411d2e --- /dev/null +++ b/v1.12/_sources/releases.md.txt @@ -0,0 +1,86 @@ +# Releases + +## Schedule +We are aiming to ship a new release approximately every 6 weeks. The following release schedule is only advisory, there are no commitments made to hitting these dates. + +| Release | Code freeze | General availability | +|:-------:|:-----------:|:--------------------:| +| 1.12 | 2023-12-18 | 2024-01-08 | + +## Supported releases +We support the latest 2 releases of the operator to give everyone time to upgrade. + +| Release | General availability | Support ends | +|:-------:|:--------------------:|:---------------:| +| 1.11 | 2023-11-09 | Release of 1.13 | +| 1.10 | 2023-08-25 | Release of 1.12 | +| 1.9 | 2023-07-04 | 2023-11-09 | +| 1.8 | 2023-01-25 | 2023-08-25 | +| 1.7 | 2022-01-27 | 2023-07-04 | +| 1.6 | 2021-12-03 | 2023-01-25 | +| 1.5 | 2021-09-16 | 2022-01-27 | +| 1.4 | 2021-08-10 | 2021-12-03 | +| 1.3 | 2021-06-17 | 2021-09-16 | +| 1.2 | 2021-05-06 | 2021-08-10 | +| 1.1 | 2021-03-22 | 2021-06-17 | +| 1.0 | 2021-01-21 | 2021-05-06 | + +### Backport policy +Usually, only important bug fixes are eligible for being backported. +This may depend on the situation and assessment of the maintainers. + +## CI/CD +We use [GitHub actions](https://github.com/scylladb/scylla-operator/actions/workflows/go.yaml?query=branch%3Amaster+event%3Apush) for our CI/CD. Every merge to a supported branch, or a creation of a tag will automatically trigger a job to build, test and publish the container image and other artifacts like helm charts. Before we publish any image, it must pass the e2e suite. + +### Automated promotions + +| Git reference | Type | Container image | +| :----------------: | :----: | :--------------------------------------------------: | +| **master** | branch | docker.io/scylladb/scylla-operator:**latest** | +| **vX.Y** | branch | docker.io/scylladb/scylla-operator:**X.Y** | +| **vX.Y.Z** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z** | +| **vX.Y.Z-alpha.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-alpha.N** | +| **vX.Y.Z-beta.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-beta.N** | +| **vX.Y.Z-rc.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-rc.N** | + +### Generally available +GA images aren't build from scratch but rather promoted from an existing release candidates. When we decide a release candidate has the acceptable quality and QA sings it off, the release candidate is promoted to become the GA release. This makes sure the image has exactly the same content and SHA as the tested release candidate. + +## Support matrix + +Support matrix table shows the version requirements for a particular **scylla-operator** version. Be sure to match these requirements, otherwise some functionality will not work. + +| | v1.11 | v1.10 | v1.9 | v1.8 | v1.7 | v1.6 | v1.5 | v1.4 | v1.3 | v1.2 | v1.1 | v1.0 | +|:-----------------:|:----------:|:----------:|:----------:|:----------:|:-----------------:|:--------------------:|:-----------:|:-----------:|:----------:|:----------:|:----------:|:----------:| +| Kubernetes | `>=1.21` | `>=1.21` | `>=1.21` | `>=1.21` | `>=1.20 && <1.25` | `>=1.19.10 && <1.25` | `>=1.19.10` | `>=1.19.10` | `>=1.19` | `>=1.19` | `>=1.11` | `>=1.11` | +| CRI API | `v1` | `v1` | `v1` | `v1alpha2` | `v1alpha2` | `v1alpha2` | | | | | | | +| Scylla OS | `>=5.0` | `>=5.0` | `>=5.0` | `>=5.0` | `>=4.3` | `>=4.3` | `>=4.3` | `>=4.3` | `>=4.2` | `>=4.2` | `>=4.0` | `>=4.0` | +| Scylla Enterprise | `>=2021.1` | `>=2021.1` | `>=2021.1` | `>=2021.1` | `>=2021.1` | `>=2021.1` | `>=2021.1` | `>=2021.1` | `>=2020.1` | `>=2020.1` | `>=2020.1` | `>=2020.1` | +| Scylla Manager | `>=3.2` | `>=2.6` | `>=2.6` | `>=2.6` | `>=2.2` | `>=2.2` | `>=2.2` | `>=2.2` | `>=2.2` | `>=2.2` | `>=2.2` | `>=2.2` | +| Scylla Monitoring | `4.4.5` | `>=4.0` | `>=4.0` | `>=4.0` | `>=3.0` | `>=3.0` | `>=1.0` | `>=1.0` | `>=1.0` | `>=1.0` | `>=1.0` | `>=1.0` | + +### Supported Kubernetes platforms + +We officially test and recommend to use the following platforms: + +:::{table} +| Platform | OS Image | +|:-----------------|:-------------| +| GKE | Ubuntu | +| EKS | Amazon Linux | +::: + +While our APIs generally work on any Kubernetes conformant cluster, +performance tuning and other pieces that need to interact with the host OS, kubelet, CRI, kernel, etc. might hit some incompatibilities. + + +:::{warning} +The following platforms are known **not to work correctly** at this time. + +:::{table} +| Platform | OS Image | Details | +|:-----------------|:-------------| :------ | +| GKE | Container OS | | +| EKS | Bottlerocket | Suspected kernel/cgroups issue that breaks available memory detection for ScyllaDB | +::: +::: diff --git a/v1.12/_sources/support/index.rst.txt b/v1.12/_sources/support/index.rst.txt new file mode 100644 index 00000000000..9c623218acb --- /dev/null +++ b/v1.12/_sources/support/index.rst.txt @@ -0,0 +1,12 @@ +========================================================== +Support +========================================================== + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + overview + known-issues + troubleshooting/index + must-gather diff --git a/v1.12/_sources/support/known-issues.md.txt b/v1.12/_sources/support/known-issues.md.txt new file mode 100644 index 00000000000..c00d84bef58 --- /dev/null +++ b/v1.12/_sources/support/known-issues.md.txt @@ -0,0 +1,14 @@ +# Known issues + +## Scylla Manager does not boot up on Minikube + +If your Scylla Manager is failing to apply 8th migration (008_*), then apply fix for [TRUNCATE queries](#truncate-queries-does-not-work-on-minikube). + +## TRUNCATE queries does not work on Minikube + +The `TRUNCATE` queries requires [hairpinning](https://en.wikipedia.org/wiki/Hairpinning) to be enabled. On minikube this is disabled by default. + +To fix it execute the following command: +``` +minikube ssh sudo ip link set docker0 promisc on +``` diff --git a/v1.12/_sources/support/must-gather.md.txt b/v1.12/_sources/support/must-gather.md.txt new file mode 100644 index 00000000000..7e0089084da --- /dev/null +++ b/v1.12/_sources/support/must-gather.md.txt @@ -0,0 +1,101 @@ +# Gathering data with must-gather + +`must-gather` is an embedded tool in Scylla Operator that helps collecting all the necessary info when something goes wrong. + +The tool talks to the Kubernetes API, retrieves a predefined set of resources and saves them into a folder in your current directory. +By default, all collected Secrets are censored to avoid sending sensitive data. +That said, you can always review the archive before you attach it to an issue or your support request. + +Given it needs to talk to the Kubernetes API, at the very least, you need to supply the `--kubeconfig` flag with a path to the kubeconfig file for your Kubernetes cluster, or set the `KUBECONFIG` environment variable. + +## Running must-gather + +There is more than one way to run `must-gather`. +Here are some examples of how you can run the tool. + +### Prerequisites + +All examples assume you have exported `KUBECONFIG` environment variable that points to a kubeconfig file on your machine. +If not, you can run this command to export the common default location. +Please make sure such a file exists. + +```bash +export KUBECONFIG=~/.kube/config +ls -l "${KUBECONFIG}" +``` + +:::{note} + There can be slight deviations in the arguments for your container tool, depending on the container runtime, whether you use SELinux or similar factors. + + As an example, the need for the `Z` option on volume mounts depends on whether you use SELinux and what context is applied on your file or directory. + If you get an error mentioning `Error: lsetxattr : operation not supported`, try it without the `Z` option. +::: + +Let's also check whether your kubeconfig uses [external authentication plugin](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#client-go-credential-plugins). +You can determine that by running +```bash +kubectl config view --minify +``` +and checking whether it uses an external exec plugin by looking for this pattern (containing the `exec` key) +```yaml +users: +- name: + user: + exec: +``` +If not, you can skip the rest of this section. + +In case your kubeconfig depends on external binaries, you have to take a few extra steps because the external binary won't be available within our container to authenticate the requests. + +Similarly to how Pods are run within Kubernetes, we'll create a dedicated ServiceAccount for must-gather and use it to run the tool. +(When you are done using it, feel free to remove the Kubernetes resources created for that purpose.) + +```bash +kubectl create namespace must-gather +kubectl -n must-gather create serviceaccount must-gather +kubectl create clusterrolebinding must-gather --clusterrole=cluster-admin --serviceaccount=must-gather:must-gather +export MUST_GATHER_TOKEN +MUST_GATHER_TOKEN=$( kubectl -n must-gather create token must-gather --duration=1h ) +kubeconfig=$( mktemp ) +# Create a copy of the existing kubeconfig and +# replace user authentication using yq, or by adjusting the fields manually. +kubectl config view --minify --raw -o yaml | yq -e '.users[0].user = {"token": env(MUST_GATHER_TOKEN)}' > "${kubeconfig}" +KUBECONFIG="${kubeconfig}" +``` + +:::{note} + If you don't have `yq` installed, you can get it at https://github.com/mikefarah/yq/#install or you can replace the user authentication settings manually. +::: + +### Podman +```bash +podman run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro,Z" -v="$( pwd ):/workspace:Z" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig +``` + +### Docker +```bash +docker run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro" -v="$( pwd ):/workspace" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig +``` + +## Limiting must-gather to a particular namespace + +If you are running a large Kubernetes cluster with many ScyllaClusters, it may be useful to limit the collection of ScyllaClusters to a particular namespace. +Unless you hit scale issues, we advise not to use this mode, as sometimes the ScyllaClusters affect other collected resources, like the manager or they form a multi-datacenter. + +```bash +scylla-operator must-gather --namespace="" +``` + +:::{note} + The `--namespace` flag affects only `ScyllaClusters`. + Other resources related to the operator installation or cluster state will still be collected from other namespaces. +::: + +### Collecting every resource in the cluster + +By default, `must-gather` collects only a predefined subset of resources. +You can also request collecting every resource in the Kubernetes API, if the default set wouldn't be enough to debug an issue. + +```bash +scylla-operator must-gather --all-resources +``` diff --git a/v1.12/_sources/support/overview.md.txt b/v1.12/_sources/support/overview.md.txt new file mode 100644 index 00000000000..7097438589c --- /dev/null +++ b/v1.12/_sources/support/overview.md.txt @@ -0,0 +1,14 @@ +# Support overview + +## Get support + +ScyllaDB provides administrators with [paid support](https://www.scylladb.com/product/support/#enterprise-support), including Scylla Operator. + +## Troubleshooting issues + +To learn more about what to do when issues arise, visit our dedicated [troubleshooting section](troubleshooting/index). + +## Gather data about your cluster + +Scylla Operator contains an embedded tool called [must-gather](must-gather.md) that can collect the required information for requesting support or reporting issues. +Support requests and bug reports are required to attach the must-gather archive to help us understand the issue. diff --git a/v1.12/_sources/support/troubleshooting/index.rst.txt b/v1.12/_sources/support/troubleshooting/index.rst.txt new file mode 100644 index 00000000000..b83118e6b18 --- /dev/null +++ b/v1.12/_sources/support/troubleshooting/index.rst.txt @@ -0,0 +1,8 @@ +========================================================== +Troubleshooting +========================================================== + +.. toctree:: + :maxdepth: 2 + + installation diff --git a/v1.12/_sources/support/troubleshooting/installation.md.txt b/v1.12/_sources/support/troubleshooting/installation.md.txt new file mode 100644 index 00000000000..b93fcce7b51 --- /dev/null +++ b/v1.12/_sources/support/troubleshooting/installation.md.txt @@ -0,0 +1,34 @@ +# Troubleshooting installation issues + +## Webhooks +Scylla Operator provides several custom API resources that use webhooks to function properly. + +Unfortunately, it is often the case that user's clusters have modified SDN, that doesn't extend to the control plane, and Kubernetes apiserver is not able to reach the pods that serve the webhook traffic. +Another common case are firewall rules that block the webhook traffic. + +:::{note} + To be called a Kubernetes cluster, clusters are required to pass Kubernetes conformance test suite. + This suite includes tests that require Kubernetes apiserver to be able to reach webhook services. +::: + +:::{note} + Before filing an issue, please make sure your cluster webhook traffic can reach your webhook services, independently of Scylla Operator resources. +::: + +### EKS + +#### Custom CNI +EKS is currently breaking Kubernetes webhooks [when used with custom CNI networking](https://github.com/aws/containers-roadmap/issues/1215). + +:::{note} + We advise you to avoid using such setups and use a conformant Kubernetes cluster that supports webhooks. +::: + +There are some workarounds where you can reconfigure the webhook to use Ingress or hostNetwork instead, but it's beyond a standard configuration that we support and not specific to the Scylla Operator. + +### GKE + +#### Private clusters + +If you use GKE private clusters you need to manually configure the firewall to allow webhook traffic. +You can find more information on how to do that in [GKE private clusters docs](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules). diff --git a/v1.12/_sources/upgrade.md.txt b/v1.12/_sources/upgrade.md.txt new file mode 100644 index 00000000000..bc458be7c3d --- /dev/null +++ b/v1.12/_sources/upgrade.md.txt @@ -0,0 +1,184 @@ +# Upgrade of Scylla Operator + +This page describes Scylla Operator upgrade procedures. +There are two generic update procedures - via Helm and via kubectl. Before upgrading, please check this page to find out +if your target version requires additional upgrade steps. + +## Upgrade via Helm + +Helm doesn't support managing CustomResourceDefinition resources ([#5871](https://github.com/helm/helm/issues/5871), [#7735](https://github.com/helm/helm/issues/7735)) +These are only created on first install and never updated. In order to update them, users have to do it manually. + +Replace `` with the name of your Helm release for Scylla Operator and replace `` with the version number you want to install: +1. Make sure Helm chart repository is up-to-date: + ``` + helm repo add scylla-operator https://storage.googleapis.com/scylla-operator-charts/stable + helm repo update + ``` +2. Update CRD resources. We recommend using `--server-side` flag for `kubectl apply`, if your version supports it. + ``` + tmpdir=$( mktemp -d ) \ + && helm pull scylla-operator/scylla-operator --version --untar --untardir "${tmpdir}" \ + && find "${tmpdir}"/scylla-operator/crds/ -name '*.yaml' -printf '-f=%p ' \ + | xargs kubectl apply + ``` +3. Update Scylla Operator + ``` + helm upgrade --version scylla-operator/scylla-operator + ``` + +## Upgrade via kubectl + +Replace `` with the version number you want to install: + +1. Checkout source code of version you want to use: + ``` + git checkout + ``` +2. Manifests use rolling minor version tag, you may want to pin it to specific version: + ``` + find deploy/operator -name "*.yaml" | xargs sed --follow-symlinks -i -E "s^docker.io/scylladb/scylla-operator:[0-9]+\.[0-9]+^docker.io/scylladb/scylla-operator:^g" + ``` +3. Update Scylla Operator. We recommend using `--server-side` flag for `kubectl apply`, if your version supports it. + ``` + kubectl apply -f deploy/operator + ``` + +--- + +## `v1.2.0` -> `v1.3.0` + +Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure. + +1. Checkout source code of v1.3.0: + ``` + git checkout v1.3.0 + ``` +1. Update Scylla Operator from deploy directory: + ``` + kubectl -n scylla-operator apply -f deploy/operator + ``` +1. Wait until Scylla Operator is up and running: + ``` + kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com + kubectl -n scylla-operator rollout status deployment.apps/scylla-operator + ``` + +## `v1.1.0` -> `v1.2.0` + +1.2.0 release brought a lot of changes to the Scylla Operator deployment process. +To properly update Scylla Operator one must delete old objects and install updated ones. + +Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure. + +1. Checkout source code of v1.2.0: + ``` + git checkout v1.2.0 + ``` +1. Remove old scylla operator namespace - in our case it's called `scylla-operator-system`: + ``` + kubectl delete namespace scylla-operator-system --wait=true + ``` +1. Remove old webhooks: + ``` + kubectl delete MutatingWebhookConfiguration scylla-operator-mutating-webhook-configuration + kubectl delete ValidatingWebhookConfiguration scylla-operator-validating-webhook-configuration + ``` +1. Install Scylla Operator from deploy directory: + ``` + kubectl -n scylla-operator apply -f deploy/operator + ``` +1. Wait until Scylla Operator is up and running: + ``` + kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com + kubectl -n scylla-operator rollout status deployment.apps/scylla-operator + ``` + +## `v1.0.0` -> `v1.1.0` + +During this update we will change probes and image for Scylla Operator. +A new version brings an automation for upgrade of sidecar image, so a rolling restart of managed Scylla clusters is expected. + +1. Get name of StatefulSet managing Scylla Operator + ```shell + kubectl --namespace scylla-operator-system get sts --selector="control-plane=controller-manager" + + NAME READY AGE + scylla-operator-controller-manager 1/1 95m + ``` + +1. Change probes and used container image by applying following patch: + ```yaml + spec: + template: + spec: + containers: + - name: manager + image: docker.io/scylladb/scylla-operator:1.1.0 + livenessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP + readinessProbe: + $retainKeys: + - httpGet + httpGet: + path: /readyz + port: 8080 + scheme: HTTP + ``` + To apply above patch save it to file (`operator-patch.yaml` for example) and apply to Operator StatefulSet: + ```shell + kubectl -n scylla-operator-system patch sts scylla-operator-controller-manager --patch "$(cat operator-patch.yaml)" + ``` + + +## `v0.3.0` -> `v1.0.0` + +***Note:*** There's an experimental migration procedure available [here](migration.md). + +`v0.3.0` used a very common name as a CRD kind (`Cluster`). In `v1.0.0` this issue was solved by using less common +kind which is easier to disambiguate. (`ScyllaCluster`). +This change is backward incompatible, so Scylla cluster must be turned off and recreated from scratch. +In case you need to preserve your data, refer to backup and restore guide. + +1. Get list of existing Scylla clusters + ``` + kubectl -n scylla get cluster.scylla.scylladb.com + + NAME AGE + simple-cluster 30m + ``` +1. Delete each one of them + + ``` + kubectl -n scylla delete cluster.scylla.scylladb.com simple-cluster + ``` +1. Make sure you're on `v0.3.0` branch + ``` + git checkout v0.3.0 + ``` +1. Delete existing CRD and Operator + ``` + kubectl delete -f examples/generic/operator.yaml + ``` +1. Checkout `v1.0.0` version + ``` + git checkout v1.0.0 + ``` +1. Install new CRD and Scylla Operator + ``` + kubectl apply -f deploy/operator.yaml + ``` +1. Migrate your existing Scylla Cluster definition. Change `apiVersion` and `kind` from: + ``` + apiVersion: scylla.scylladb.com/v1alpha1 + kind: Cluster + ``` + to: + ``` + apiVersion: scylla.scylladb.com/v1 + kind: ScyllaCluster + ``` +1. Once your cluster definition is ready, use `kubectl apply` to install fresh Scylla cluster. diff --git a/v1.12/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css b/v1.12/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css new file mode 100644 index 00000000000..eb19f698afc --- /dev/null +++ b/v1.12/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/v1.12/_sphinx_design_static/design-tabs.js b/v1.12/_sphinx_design_static/design-tabs.js new file mode 100644 index 00000000000..36b38cf0d91 --- /dev/null +++ b/v1.12/_sphinx_design_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/v1.12/_static/basic.css b/v1.12/_static/basic.css new file mode 100644 index 00000000000..f316efcb47b --- /dev/null +++ b/v1.12/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/v1.12/_static/check-solid.svg b/v1.12/_static/check-solid.svg new file mode 100644 index 00000000000..92fad4b5c0b --- /dev/null +++ b/v1.12/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/v1.12/_static/clipboard.min.js b/v1.12/_static/clipboard.min.js new file mode 100644 index 00000000000..54b3c463811 --- /dev/null +++ b/v1.12/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/v1.12/_static/copybutton.css b/v1.12/_static/copybutton.css new file mode 100644 index 00000000000..f1916ec7d1b --- /dev/null +++ b/v1.12/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

          Short

          + */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/v1.12/_static/copybutton.js b/v1.12/_static/copybutton.js new file mode 100644 index 00000000000..2ea7ff3e217 --- /dev/null +++ b/v1.12/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/v1.12/_static/copybutton_funcs.js b/v1.12/_static/copybutton_funcs.js new file mode 100644 index 00000000000..dbe1aaad79c --- /dev/null +++ b/v1.12/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/v1.12/_static/css/main.css b/v1.12/_static/css/main.css new file mode 100644 index 00000000000..2682ad8a319 --- /dev/null +++ b/v1.12/_static/css/main.css @@ -0,0 +1 @@ +@media print,screen and (min-width:40em){.reveal,.reveal.large,.reveal.small,.reveal.tiny{left:auto;margin:0 auto;right:auto}}/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}[data-whatinput=mouse] *,[data-whatinput=mouse] :focus,[data-whatinput=touch] *,[data-whatinput=touch] :focus,[data-whatintent=mouse] *,[data-whatintent=mouse] :focus,[data-whatintent=touch] *,[data-whatintent=touch] :focus{outline:0}[draggable=false]{-webkit-touch-callout:none;-webkit-user-select:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{-webkit-box-sizing:border-box;font-size:100%}*,:after,:before{-webkit-box-sizing:inherit}body{background:#fefefe;color:#0a0a0a;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;height:auto;vertical-align:middle;-ms-interpolation-mode:bicubic}textarea{border-radius:0;height:auto;min-height:50px}select{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;border:0;border-radius:0;cursor:auto;line-height:1;padding:0}[data-whatinput=mouse] button{outline:0}pre{overflow:auto;-webkit-overflow-scrolling:touch}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block!important}.is-hidden{display:none!important}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;-webkit-box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);-webkit-box-sizing:border-box;box-sizing:border-box;color:#0a0a0a;display:block;font-family:inherit;font-size:1rem;font-weight:400;height:2.4375rem;line-height:1.5;margin:0 0 1rem;padding:.5rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s;width:100%}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:0;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}textarea{max-width:100%}textarea[rows]{height:auto}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type=search]{-webkit-box-sizing:border-box;box-sizing:border-box}::-webkit-input-placeholder{color:#cacaca}::-moz-placeholder{color:#cacaca}:-ms-input-placeholder{color:#cacaca}::-ms-input-placeholder{color:#cacaca}::placeholder{color:#cacaca}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-bottom:0;margin-left:.5rem;margin-right:1rem;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{color:#0a0a0a;display:block;font-size:.875rem;font-weight:400;line-height:1.8;margin:0}label.middle{line-height:1.5;margin:0 0 1rem;padding:.5625rem 0}.help-text{color:#0a0a0a;font-size:.8125rem;font-style:italic;margin-top:-.5rem}.input-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:1rem;width:100%;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.input-group>:first-child,.input-group>:first-child.input-group-button>*,.input-group>:last-child,.input-group>:last-child.input-group-button>*{border-radius:0}.input-group-button,.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label,.input-group-field,.input-group-label{margin:0;white-space:nowrap}.input-group-label{background:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 1rem;text-align:center;white-space:nowrap;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;min-width:0}.input-group-button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-bottom:0;padding-top:0;text-align:center;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;font-size:1rem;height:auto;padding-bottom:0;padding-top:0}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:.5rem;max-width:100%}.fieldset{border:1px solid #cacaca;margin:1.125rem 0;padding:1.25rem}.fieldset legend{margin:0 0 0 -.1875rem;padding:0 .1875rem}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;background-image:url('data:image/svg+xml;utf8,');background-origin:content-box;background-position:right -1rem center;background-repeat:no-repeat;background-size:9px 6px;border:1px solid #cacaca;border-radius:0;color:#0a0a0a;font-family:inherit;font-size:1rem;font-weight:400;height:2.4375rem;line-height:1.5;margin:0 0 1rem;padding:.5rem 1.5rem .5rem .5rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}@media screen and (min-width:0\0){select{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==)}}select:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:0;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{background-image:none;height:auto}select:not([multiple]){padding-bottom:0;padding-top:0}.is-invalid-input:not(:focus){background-color:#f9ecea;border-color:#cc4b37}.is-invalid-input:not(:focus)::-webkit-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-moz-placeholder{color:#cc4b37}.is-invalid-input:not(:focus):-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::placeholder{color:#cc4b37}.form-error,.is-invalid-label{color:#cc4b37}.form-error{display:none;font-size:.75rem;font-weight:700;margin-bottom:1rem;margin-top:-.5rem}.form-error.is-visible{display:block}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:inherit;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:400;text-rendering:optimizeLegibility}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}.h1,h1{font-size:1.5rem}.h1,.h2,h1,h2{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h2,h2{font-size:1.25rem}.h3,h3{font-size:1.1875rem}.h3,.h4,h3,h4{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h4,h4{font-size:1.125rem}.h5,h5{font-size:1.0625rem}.h5,.h6,h5,h6{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h6,h6{font-size:1rem}@media print,screen and (min-width:40em){.h1,h1{font-size:3rem}.h2,h2{font-size:2.5rem}.h3,h3{font-size:1.9375rem}.h4,h4{font-size:1.5625rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}}a{color:#1779ba;cursor:pointer;line-height:inherit;text-decoration:none}a:focus,a:hover{color:#1468a0}a img,hr{border:0}hr{border-bottom:1px solid #cacaca;clear:both;height:0;margin:1.25rem auto;max-width:75rem}dl,ol,ul{line-height:1.6;list-style-position:outside;margin-bottom:1rem}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-left:1.25rem}dl{margin-bottom:1rem}dl dt{font-weight:700;margin-bottom:.3rem}blockquote{border-left:1px solid #cacaca;margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem}blockquote,blockquote p{color:#8a8a8a;line-height:1.6}abbr,abbr[title]{border-bottom:1px dotted #0a0a0a;cursor:help;text-decoration:none}figure,kbd{margin:0}kbd{background-color:#e6e6e6;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;padding:.125rem .25rem 0}.subheader{color:#8a8a8a;font-weight:400;line-height:1.4;margin-bottom:.5rem;margin-top:.2rem}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}ol.no-bullet,ul.no-bullet{list-style:none;margin-left:0}.cite-block,cite{color:#8a8a8a;display:block;font-size:.8125rem}.cite-block:before,cite:before{content:"— "}.code-inline,code{display:inline;max-width:100%;word-wrap:break-word;padding:.125rem .3125rem .0625rem}.code-block,.code-inline,code{background-color:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;font-weight:400}.code-block{display:block;margin-bottom:1.5rem;overflow:auto;padding:1rem;white-space:pre}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print,screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print,screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:#000!important;-webkit-print-color-adjust:economy;print-color-adjust:economy;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.print-break-inside{page-break-inside:auto}}.grid-container{margin-left:auto;margin-right:auto;max-width:75rem;padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-container{padding-left:.9375rem;padding-right:.9375rem}}.grid-container.fluid{margin-left:auto;margin-right:auto;max-width:100%;padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-container.fluid{padding-left:.9375rem;padding-right:.9375rem}}.grid-container.full{margin-left:auto;margin-right:auto;max-width:100%;padding-left:0;padding-right:0}.grid-x{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.cell{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;min-height:0;min-width:0;width:100%}.cell.auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0}.cell.shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.auto,.grid-x>.shrink{width:auto}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-full,.grid-x>.small-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-full,.grid-x>.medium-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-full,.grid-x>.large-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.small-1{width:8.3333333333%}.grid-x>.small-2{width:16.6666666667%}.grid-x>.small-3{width:25%}.grid-x>.small-4{width:33.3333333333%}.grid-x>.small-5{width:41.6666666667%}.grid-x>.small-6{width:50%}.grid-x>.small-7{width:58.3333333333%}.grid-x>.small-8{width:66.6666666667%}.grid-x>.small-9{width:75%}.grid-x>.small-10{width:83.3333333333%}.grid-x>.small-11{width:91.6666666667%}.grid-x>.small-12{width:100%}@media print,screen and (min-width:40em){.grid-x>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.medium-shrink{width:auto}.grid-x>.medium-1{width:8.3333333333%}.grid-x>.medium-2{width:16.6666666667%}.grid-x>.medium-3{width:25%}.grid-x>.medium-4{width:33.3333333333%}.grid-x>.medium-5{width:41.6666666667%}.grid-x>.medium-6{width:50%}.grid-x>.medium-7{width:58.3333333333%}.grid-x>.medium-8{width:66.6666666667%}.grid-x>.medium-9{width:75%}.grid-x>.medium-10{width:83.3333333333%}.grid-x>.medium-11{width:91.6666666667%}.grid-x>.medium-12{width:100%}}@media print,screen and (min-width:64em){.grid-x>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.large-shrink{width:auto}.grid-x>.large-1{width:8.3333333333%}.grid-x>.large-2{width:16.6666666667%}.grid-x>.large-3{width:25%}.grid-x>.large-4{width:33.3333333333%}.grid-x>.large-5{width:41.6666666667%}.grid-x>.large-6{width:50%}.grid-x>.large-7{width:58.3333333333%}.grid-x>.large-8{width:66.6666666667%}.grid-x>.large-9{width:75%}.grid-x>.large-10{width:83.3333333333%}.grid-x>.large-11{width:91.6666666667%}.grid-x>.large-12{width:100%}}.grid-margin-x:not(.grid-x)>.cell{width:auto}.grid-margin-y:not(.grid-y)>.cell{height:auto}.grid-margin-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-margin-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-margin-x>.cell{margin-left:.625rem;margin-right:.625rem;width:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x>.cell{margin-left:.9375rem;margin-right:.9375rem;width:calc(100% - 1.875rem)}}.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.25rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.25rem)}.grid-margin-x>.small-3{width:calc(25% - 1.25rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.25rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.25rem)}.grid-margin-x>.small-6{width:calc(50% - 1.25rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.25rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.25rem)}.grid-margin-x>.small-9{width:calc(75% - 1.25rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.25rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.25rem)}.grid-margin-x>.small-12{width:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.small-3{width:calc(25% - 1.875rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.small-6{width:calc(50% - 1.875rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.small-9{width:calc(75% - 1.875rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.small-12{width:calc(100% - 1.875rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.875rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.875rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.875rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-x>.large-auto,.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.large-3{width:calc(25% - 1.875rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.large-6{width:calc(50% - 1.875rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.large-9{width:calc(75% - 1.875rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.large-12{width:calc(100% - 1.875rem)}}.grid-padding-x .grid-padding-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-padding-x .grid-padding-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-container:not(.full)>.grid-padding-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-padding-x>.cell{padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-padding-x>.cell{padding-left:.9375rem;padding-right:.9375rem}}.small-up-1>.cell{width:100%}.small-up-2>.cell{width:50%}.small-up-3>.cell{width:33.3333333333%}.small-up-4>.cell{width:25%}.small-up-5>.cell{width:20%}.small-up-6>.cell{width:16.6666666667%}.small-up-7>.cell{width:14.2857142857%}.small-up-8>.cell{width:12.5%}@media print,screen and (min-width:40em){.medium-up-1>.cell{width:100%}.medium-up-2>.cell{width:50%}.medium-up-3>.cell{width:33.3333333333%}.medium-up-4>.cell{width:25%}.medium-up-5>.cell{width:20%}.medium-up-6>.cell{width:16.6666666667%}.medium-up-7>.cell{width:14.2857142857%}.medium-up-8>.cell{width:12.5%}}@media print,screen and (min-width:64em){.large-up-1>.cell{width:100%}.large-up-2>.cell{width:50%}.large-up-3>.cell{width:33.3333333333%}.large-up-4>.cell{width:25%}.large-up-5>.cell{width:20%}.large-up-6>.cell{width:16.6666666667%}.large-up-7>.cell{width:14.2857142857%}.large-up-8>.cell{width:12.5%}}.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.25rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.25rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.25rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.25rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.25rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.25rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.25rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.875rem)}.grid-margin-x.medium-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.medium-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.medium-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.medium-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.medium-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.medium-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.medium-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.medium-up-8>.cell{width:calc(12.5% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-x.large-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.large-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.large-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.large-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.large-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.large-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.large-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.large-up-8>.cell{width:calc(12.5% - 1.875rem)}}.small-margin-collapse,.small-margin-collapse>.cell{margin-left:0;margin-right:0}.small-margin-collapse>.small-1{width:8.3333333333%}.small-margin-collapse>.small-2{width:16.6666666667%}.small-margin-collapse>.small-3{width:25%}.small-margin-collapse>.small-4{width:33.3333333333%}.small-margin-collapse>.small-5{width:41.6666666667%}.small-margin-collapse>.small-6{width:50%}.small-margin-collapse>.small-7{width:58.3333333333%}.small-margin-collapse>.small-8{width:66.6666666667%}.small-margin-collapse>.small-9{width:75%}.small-margin-collapse>.small-10{width:83.3333333333%}.small-margin-collapse>.small-11{width:91.6666666667%}.small-margin-collapse>.small-12{width:100%}@media print,screen and (min-width:40em){.small-margin-collapse>.medium-1{width:8.3333333333%}.small-margin-collapse>.medium-2{width:16.6666666667%}.small-margin-collapse>.medium-3{width:25%}.small-margin-collapse>.medium-4{width:33.3333333333%}.small-margin-collapse>.medium-5{width:41.6666666667%}.small-margin-collapse>.medium-6{width:50%}.small-margin-collapse>.medium-7{width:58.3333333333%}.small-margin-collapse>.medium-8{width:66.6666666667%}.small-margin-collapse>.medium-9{width:75%}.small-margin-collapse>.medium-10{width:83.3333333333%}.small-margin-collapse>.medium-11{width:91.6666666667%}.small-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.small-margin-collapse>.large-1{width:8.3333333333%}.small-margin-collapse>.large-2{width:16.6666666667%}.small-margin-collapse>.large-3{width:25%}.small-margin-collapse>.large-4{width:33.3333333333%}.small-margin-collapse>.large-5{width:41.6666666667%}.small-margin-collapse>.large-6{width:50%}.small-margin-collapse>.large-7{width:58.3333333333%}.small-margin-collapse>.large-8{width:66.6666666667%}.small-margin-collapse>.large-9{width:75%}.small-margin-collapse>.large-10{width:83.3333333333%}.small-margin-collapse>.large-11{width:91.6666666667%}.small-margin-collapse>.large-12{width:100%}}.small-padding-collapse{margin-left:0;margin-right:0}.small-padding-collapse>.cell{padding-left:0;padding-right:0}@media print,screen and (min-width:40em){.medium-margin-collapse,.medium-margin-collapse>.cell{margin-left:0;margin-right:0}.medium-margin-collapse>.small-1{width:8.3333333333%}.medium-margin-collapse>.small-2{width:16.6666666667%}.medium-margin-collapse>.small-3{width:25%}.medium-margin-collapse>.small-4{width:33.3333333333%}.medium-margin-collapse>.small-5{width:41.6666666667%}.medium-margin-collapse>.small-6{width:50%}.medium-margin-collapse>.small-7{width:58.3333333333%}.medium-margin-collapse>.small-8{width:66.6666666667%}.medium-margin-collapse>.small-9{width:75%}.medium-margin-collapse>.small-10{width:83.3333333333%}.medium-margin-collapse>.small-11{width:91.6666666667%}.medium-margin-collapse>.small-12{width:100%}.medium-margin-collapse>.medium-1{width:8.3333333333%}.medium-margin-collapse>.medium-2{width:16.6666666667%}.medium-margin-collapse>.medium-3{width:25%}.medium-margin-collapse>.medium-4{width:33.3333333333%}.medium-margin-collapse>.medium-5{width:41.6666666667%}.medium-margin-collapse>.medium-6{width:50%}.medium-margin-collapse>.medium-7{width:58.3333333333%}.medium-margin-collapse>.medium-8{width:66.6666666667%}.medium-margin-collapse>.medium-9{width:75%}.medium-margin-collapse>.medium-10{width:83.3333333333%}.medium-margin-collapse>.medium-11{width:91.6666666667%}.medium-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.medium-margin-collapse>.large-1{width:8.3333333333%}.medium-margin-collapse>.large-2{width:16.6666666667%}.medium-margin-collapse>.large-3{width:25%}.medium-margin-collapse>.large-4{width:33.3333333333%}.medium-margin-collapse>.large-5{width:41.6666666667%}.medium-margin-collapse>.large-6{width:50%}.medium-margin-collapse>.large-7{width:58.3333333333%}.medium-margin-collapse>.large-8{width:66.6666666667%}.medium-margin-collapse>.large-9{width:75%}.medium-margin-collapse>.large-10{width:83.3333333333%}.medium-margin-collapse>.large-11{width:91.6666666667%}.medium-margin-collapse>.large-12{width:100%}}@media print,screen and (min-width:40em){.medium-padding-collapse{margin-left:0;margin-right:0}.medium-padding-collapse>.cell{padding-left:0;padding-right:0}}@media print,screen and (min-width:64em){.large-margin-collapse,.large-margin-collapse>.cell{margin-left:0;margin-right:0}.large-margin-collapse>.small-1{width:8.3333333333%}.large-margin-collapse>.small-2{width:16.6666666667%}.large-margin-collapse>.small-3{width:25%}.large-margin-collapse>.small-4{width:33.3333333333%}.large-margin-collapse>.small-5{width:41.6666666667%}.large-margin-collapse>.small-6{width:50%}.large-margin-collapse>.small-7{width:58.3333333333%}.large-margin-collapse>.small-8{width:66.6666666667%}.large-margin-collapse>.small-9{width:75%}.large-margin-collapse>.small-10{width:83.3333333333%}.large-margin-collapse>.small-11{width:91.6666666667%}.large-margin-collapse>.small-12{width:100%}.large-margin-collapse>.medium-1{width:8.3333333333%}.large-margin-collapse>.medium-2{width:16.6666666667%}.large-margin-collapse>.medium-3{width:25%}.large-margin-collapse>.medium-4{width:33.3333333333%}.large-margin-collapse>.medium-5{width:41.6666666667%}.large-margin-collapse>.medium-6{width:50%}.large-margin-collapse>.medium-7{width:58.3333333333%}.large-margin-collapse>.medium-8{width:66.6666666667%}.large-margin-collapse>.medium-9{width:75%}.large-margin-collapse>.medium-10{width:83.3333333333%}.large-margin-collapse>.medium-11{width:91.6666666667%}.large-margin-collapse>.medium-12{width:100%}.large-margin-collapse>.large-1{width:8.3333333333%}.large-margin-collapse>.large-2{width:16.6666666667%}.large-margin-collapse>.large-3{width:25%}.large-margin-collapse>.large-4{width:33.3333333333%}.large-margin-collapse>.large-5{width:41.6666666667%}.large-margin-collapse>.large-6{width:50%}.large-margin-collapse>.large-7{width:58.3333333333%}.large-margin-collapse>.large-8{width:66.6666666667%}.large-margin-collapse>.large-9{width:75%}.large-margin-collapse>.large-10{width:83.3333333333%}.large-margin-collapse>.large-11{width:91.6666666667%}.large-margin-collapse>.large-12{width:100%}.large-padding-collapse{margin-left:0;margin-right:0}.large-padding-collapse>.cell{padding-left:0;padding-right:0}}.small-offset-0{margin-left:0}.grid-margin-x>.small-offset-0{margin-left:.625rem}.small-offset-1{margin-left:8.3333333333%}.grid-margin-x>.small-offset-1{margin-left:calc(8.33333% + .625rem)}.small-offset-2{margin-left:16.6666666667%}.grid-margin-x>.small-offset-2{margin-left:calc(16.66667% + .625rem)}.small-offset-3{margin-left:25%}.grid-margin-x>.small-offset-3{margin-left:calc(25% + .625rem)}.small-offset-4{margin-left:33.3333333333%}.grid-margin-x>.small-offset-4{margin-left:calc(33.33333% + .625rem)}.small-offset-5{margin-left:41.6666666667%}.grid-margin-x>.small-offset-5{margin-left:calc(41.66667% + .625rem)}.small-offset-6{margin-left:50%}.grid-margin-x>.small-offset-6{margin-left:calc(50% + .625rem)}.small-offset-7{margin-left:58.3333333333%}.grid-margin-x>.small-offset-7{margin-left:calc(58.33333% + .625rem)}.small-offset-8{margin-left:66.6666666667%}.grid-margin-x>.small-offset-8{margin-left:calc(66.66667% + .625rem)}.small-offset-9{margin-left:75%}.grid-margin-x>.small-offset-9{margin-left:calc(75% + .625rem)}.small-offset-10{margin-left:83.3333333333%}.grid-margin-x>.small-offset-10{margin-left:calc(83.33333% + .625rem)}.small-offset-11{margin-left:91.6666666667%}.grid-margin-x>.small-offset-11{margin-left:calc(91.66667% + .625rem)}@media print,screen and (min-width:40em){.medium-offset-0{margin-left:0}.grid-margin-x>.medium-offset-0{margin-left:.9375rem}.medium-offset-1{margin-left:8.3333333333%}.grid-margin-x>.medium-offset-1{margin-left:calc(8.33333% + .9375rem)}.medium-offset-2{margin-left:16.6666666667%}.grid-margin-x>.medium-offset-2{margin-left:calc(16.66667% + .9375rem)}.medium-offset-3{margin-left:25%}.grid-margin-x>.medium-offset-3{margin-left:calc(25% + .9375rem)}.medium-offset-4{margin-left:33.3333333333%}.grid-margin-x>.medium-offset-4{margin-left:calc(33.33333% + .9375rem)}.medium-offset-5{margin-left:41.6666666667%}.grid-margin-x>.medium-offset-5{margin-left:calc(41.66667% + .9375rem)}.medium-offset-6{margin-left:50%}.grid-margin-x>.medium-offset-6{margin-left:calc(50% + .9375rem)}.medium-offset-7{margin-left:58.3333333333%}.grid-margin-x>.medium-offset-7{margin-left:calc(58.33333% + .9375rem)}.medium-offset-8{margin-left:66.6666666667%}.grid-margin-x>.medium-offset-8{margin-left:calc(66.66667% + .9375rem)}.medium-offset-9{margin-left:75%}.grid-margin-x>.medium-offset-9{margin-left:calc(75% + .9375rem)}.medium-offset-10{margin-left:83.3333333333%}.grid-margin-x>.medium-offset-10{margin-left:calc(83.33333% + .9375rem)}.medium-offset-11{margin-left:91.6666666667%}.grid-margin-x>.medium-offset-11{margin-left:calc(91.66667% + .9375rem)}}@media print,screen and (min-width:64em){.large-offset-0{margin-left:0}.grid-margin-x>.large-offset-0{margin-left:.9375rem}.large-offset-1{margin-left:8.3333333333%}.grid-margin-x>.large-offset-1{margin-left:calc(8.33333% + .9375rem)}.large-offset-2{margin-left:16.6666666667%}.grid-margin-x>.large-offset-2{margin-left:calc(16.66667% + .9375rem)}.large-offset-3{margin-left:25%}.grid-margin-x>.large-offset-3{margin-left:calc(25% + .9375rem)}.large-offset-4{margin-left:33.3333333333%}.grid-margin-x>.large-offset-4{margin-left:calc(33.33333% + .9375rem)}.large-offset-5{margin-left:41.6666666667%}.grid-margin-x>.large-offset-5{margin-left:calc(41.66667% + .9375rem)}.large-offset-6{margin-left:50%}.grid-margin-x>.large-offset-6{margin-left:calc(50% + .9375rem)}.large-offset-7{margin-left:58.3333333333%}.grid-margin-x>.large-offset-7{margin-left:calc(58.33333% + .9375rem)}.large-offset-8{margin-left:66.6666666667%}.grid-margin-x>.large-offset-8{margin-left:calc(66.66667% + .9375rem)}.large-offset-9{margin-left:75%}.grid-margin-x>.large-offset-9{margin-left:calc(75% + .9375rem)}.large-offset-10{margin-left:83.3333333333%}.grid-margin-x>.large-offset-10{margin-left:calc(83.33333% + .9375rem)}.large-offset-11{margin-left:91.6666666667%}.grid-margin-x>.large-offset-11{margin-left:calc(91.66667% + .9375rem)}}.grid-y{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.grid-y>.cell{height:auto;max-height:none}.grid-y>.auto,.grid-y>.shrink{height:auto}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-full,.grid-y>.small-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-full,.grid-y>.medium-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-full,.grid-y>.large-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.small-1{height:8.3333333333%}.grid-y>.small-2{height:16.6666666667%}.grid-y>.small-3{height:25%}.grid-y>.small-4{height:33.3333333333%}.grid-y>.small-5{height:41.6666666667%}.grid-y>.small-6{height:50%}.grid-y>.small-7{height:58.3333333333%}.grid-y>.small-8{height:66.6666666667%}.grid-y>.small-9{height:75%}.grid-y>.small-10{height:83.3333333333%}.grid-y>.small-11{height:91.6666666667%}.grid-y>.small-12{height:100%}@media print,screen and (min-width:40em){.grid-y>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.medium-shrink{height:auto}.grid-y>.medium-1{height:8.3333333333%}.grid-y>.medium-2{height:16.6666666667%}.grid-y>.medium-3{height:25%}.grid-y>.medium-4{height:33.3333333333%}.grid-y>.medium-5{height:41.6666666667%}.grid-y>.medium-6{height:50%}.grid-y>.medium-7{height:58.3333333333%}.grid-y>.medium-8{height:66.6666666667%}.grid-y>.medium-9{height:75%}.grid-y>.medium-10{height:83.3333333333%}.grid-y>.medium-11{height:91.6666666667%}.grid-y>.medium-12{height:100%}}@media print,screen and (min-width:64em){.grid-y>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.large-shrink{height:auto}.grid-y>.large-1{height:8.3333333333%}.grid-y>.large-2{height:16.6666666667%}.grid-y>.large-3{height:25%}.grid-y>.large-4{height:33.3333333333%}.grid-y>.large-5{height:41.6666666667%}.grid-y>.large-6{height:50%}.grid-y>.large-7{height:58.3333333333%}.grid-y>.large-8{height:66.6666666667%}.grid-y>.large-9{height:75%}.grid-y>.large-10{height:83.3333333333%}.grid-y>.large-11{height:91.6666666667%}.grid-y>.large-12{height:100%}}.grid-padding-y .grid-padding-y{margin-bottom:-.625rem;margin-top:-.625rem}@media print,screen and (min-width:40em){.grid-padding-y .grid-padding-y{margin-bottom:-.9375rem;margin-top:-.9375rem}}.grid-padding-y>.cell{padding-bottom:.625rem;padding-top:.625rem}@media print,screen and (min-width:40em){.grid-padding-y>.cell{padding-bottom:.9375rem;padding-top:.9375rem}}.grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .grid-frame{width:100%}.cell-block{max-width:100%;overflow-x:auto}.cell-block,.cell-block-y{-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.cell-block-y{max-height:100%;min-height:100%;overflow-y:auto}.cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}@media print,screen and (min-width:40em){.medium-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .medium-grid-frame{width:100%}.medium-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.medium-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.medium-cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.medium-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media print,screen and (min-width:64em){.large-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .large-grid-frame{width:100%}.large-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.large-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.large-cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.large-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}.grid-y.grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}@media print,screen and (min-width:40em){.grid-y.medium-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}@media print,screen and (min-width:64em){.grid-y.large-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}.cell .grid-y.grid-frame{height:100%}@media print,screen and (min-width:40em){.cell .grid-y.medium-grid-frame{height:100%}}@media print,screen and (min-width:64em){.cell .grid-y.large-grid-frame{height:100%}}.grid-margin-y{margin-bottom:-.625rem;margin-top:-.625rem}@media print,screen and (min-width:40em){.grid-margin-y{margin-bottom:-.9375rem;margin-top:-.9375rem}}.grid-margin-y>.cell{height:calc(100% - 1.25rem);margin-bottom:.625rem;margin-top:.625rem}@media print,screen and (min-width:40em){.grid-margin-y>.cell{height:calc(100% - 1.875rem);margin-bottom:.9375rem;margin-top:.9375rem}}.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.25rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.25rem)}.grid-margin-y>.small-3{height:calc(25% - 1.25rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.25rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.25rem)}.grid-margin-y>.small-6{height:calc(50% - 1.25rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.25rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.25rem)}.grid-margin-y>.small-9{height:calc(75% - 1.25rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.25rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.25rem)}.grid-margin-y>.small-12{height:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.small-3{height:calc(25% - 1.875rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.small-6{height:calc(50% - 1.875rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.small-9{height:calc(75% - 1.875rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.small-12{height:calc(100% - 1.875rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.875rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.875rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.875rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-y>.large-auto,.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.large-3{height:calc(25% - 1.875rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.large-6{height:calc(50% - 1.875rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.large-9{height:calc(75% - 1.875rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.large-12{height:calc(100% - 1.875rem)}}.grid-frame.grid-margin-y{height:calc(100vh + 1.25rem)}@media print,screen and (min-width:40em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:64em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:40em){.grid-margin-y.medium-grid-frame{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-y.large-grid-frame{height:calc(100vh + 1.875rem)}}.button{-webkit-appearance:none;border:1px solid transparent;border-radius:0;cursor:pointer;display:inline-block;font-family:inherit;font-size:.9rem;line-height:1;margin:0 0 1rem;padding:.85em 1em;text-align:center;-webkit-transition:background-color .25s ease-out,color .25s ease-out;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle}[data-whatinput=mouse] .button{outline:0}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;margin-left:0;margin-right:0;width:100%}.button,.button.disabled,.button.disabled:focus,.button.disabled:hover,.button[disabled],.button[disabled]:focus,.button[disabled]:hover{background-color:#1779ba;color:#fefefe}.button:focus,.button:hover{background-color:#14679e;color:#fefefe}.button.primary,.button.primary.disabled,.button.primary.disabled:focus,.button.primary.disabled:hover,.button.primary[disabled],.button.primary[disabled]:focus,.button.primary[disabled]:hover{background-color:#1779ba;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#126195;color:#fefefe}.button.secondary,.button.secondary.disabled,.button.secondary.disabled:focus,.button.secondary.disabled:hover,.button.secondary[disabled],.button.secondary[disabled]:focus,.button.secondary[disabled]:hover{background-color:#767676;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5e5e5e;color:#fefefe}.button.success,.button.success.disabled,.button.success.disabled:focus,.button.success.disabled:hover,.button.success[disabled],.button.success[disabled]:focus,.button.success[disabled]:hover{background-color:#3adb76;color:#0a0a0a}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#0a0a0a}.button.warning,.button.warning.disabled,.button.warning.disabled:focus,.button.warning.disabled:hover,.button.warning[disabled],.button.warning[disabled]:focus,.button.warning[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#0a0a0a}.button.alert,.button.alert.disabled,.button.alert.disabled:focus,.button.alert.disabled:hover,.button.alert[disabled],.button.alert[disabled]:focus,.button.alert[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#a53b2a;color:#fefefe}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow:focus,.button.hollow:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{background-color:transparent}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button.hollow:focus,.button.hollow:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.primary,.button.hollow.primary.disabled,.button.hollow.primary.disabled:focus,.button.hollow.primary.disabled:hover,.button.hollow.primary[disabled],.button.hollow.primary[disabled]:focus,.button.hollow.primary[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.secondary,.button.hollow.secondary.disabled,.button.hollow.secondary.disabled:focus,.button.hollow.secondary.disabled:hover,.button.hollow.secondary[disabled],.button.hollow.secondary[disabled]:focus,.button.hollow.secondary[disabled]:hover{border:1px solid #767676;color:#767676}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3b3b3b;color:#3b3b3b}.button.hollow.success,.button.hollow.success.disabled,.button.hollow.success.disabled:focus,.button.hollow.success.disabled:hover,.button.hollow.success[disabled],.button.hollow.success[disabled]:focus,.button.hollow.success[disabled]:hover{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning,.button.hollow.warning.disabled,.button.hollow.warning.disabled:focus,.button.hollow.warning.disabled:hover,.button.hollow.warning[disabled],.button.hollow.warning[disabled]:focus,.button.hollow.warning[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert,.button.hollow.alert.disabled,.button.hollow.alert.disabled:focus,.button.hollow.alert.disabled:hover,.button.hollow.alert[disabled],.button.hollow.alert[disabled]:focus,.button.hollow.alert[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#67251a;color:#67251a}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear:focus,.button.clear:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{background-color:transparent;border-color:transparent}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{color:#1779ba}.button.clear:focus,.button.clear:hover{color:#0c3d5d}.button.clear.primary,.button.clear.primary.disabled,.button.clear.primary.disabled:focus,.button.clear.primary.disabled:hover,.button.clear.primary[disabled],.button.clear.primary[disabled]:focus,.button.clear.primary[disabled]:hover{color:#1779ba}.button.clear.primary:focus,.button.clear.primary:hover{color:#0c3d5d}.button.clear.secondary,.button.clear.secondary.disabled,.button.clear.secondary.disabled:focus,.button.clear.secondary.disabled:hover,.button.clear.secondary[disabled],.button.clear.secondary[disabled]:focus,.button.clear.secondary[disabled]:hover{color:#767676}.button.clear.secondary:focus,.button.clear.secondary:hover{color:#3b3b3b}.button.clear.success,.button.clear.success.disabled,.button.clear.success.disabled:focus,.button.clear.success.disabled:hover,.button.clear.success[disabled],.button.clear.success[disabled]:focus,.button.clear.success[disabled]:hover{color:#3adb76}.button.clear.success:focus,.button.clear.success:hover{color:#157539}.button.clear.warning,.button.clear.warning.disabled,.button.clear.warning.disabled:focus,.button.clear.warning.disabled:hover,.button.clear.warning[disabled],.button.clear.warning[disabled]:focus,.button.clear.warning[disabled]:hover{color:#ffae00}.button.clear.warning:focus,.button.clear.warning:hover{color:#805700}.button.clear.alert,.button.clear.alert.disabled,.button.clear.alert.disabled:focus,.button.clear.alert.disabled:hover,.button.clear.alert[disabled],.button.clear.alert[disabled]:focus,.button.clear.alert[disabled]:hover{color:#cc4b37}.button.clear.alert:focus,.button.clear.alert:hover{color:#67251a}.button.disabled,.button[disabled]{cursor:not-allowed;opacity:.25}.button.dropdown:after{border-color:#fefefe transparent transparent;border-style:solid;border-width:.4em .4em 0;content:"";display:block;display:inline-block;float:right;height:0;margin-left:1em;position:relative;top:.4em;width:0}.button.dropdown.clear.primary:after,.button.dropdown.clear:after,.button.dropdown.hollow.primary:after,.button.dropdown.hollow:after{border-top-color:#1779ba}.button.dropdown.clear.secondary:after,.button.dropdown.hollow.secondary:after{border-top-color:#767676}.button.dropdown.clear.success:after,.button.dropdown.hollow.success:after{border-top-color:#3adb76}.button.dropdown.clear.warning:after,.button.dropdown.hollow.warning:after{border-top-color:#ffae00}.button.dropdown.clear.alert:after,.button.dropdown.hollow.alert:after{border-top-color:#cc4b37}.button.arrow-only:after{float:none;margin-left:0;top:-.1em}a.button:focus,a.button:hover{text-decoration:none}.button-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1rem;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.button-group:after,.button-group:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.button-group:after{clear:both}.button-group:after,.button-group:before{display:none}.button-group .button{font-size:.9rem;margin:0 1px 1px 0;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.button-group.primary .button,.button-group.primary .button.disabled,.button-group.primary .button.disabled:focus,.button-group.primary .button.disabled:hover,.button-group.primary .button[disabled],.button-group.primary .button[disabled]:focus,.button-group.primary .button[disabled]:hover{background-color:#1779ba;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#126195;color:#fefefe}.button-group.secondary .button,.button-group.secondary .button.disabled,.button-group.secondary .button.disabled:focus,.button-group.secondary .button.disabled:hover,.button-group.secondary .button[disabled],.button-group.secondary .button[disabled]:focus,.button-group.secondary .button[disabled]:hover{background-color:#767676;color:#fefefe}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#5e5e5e;color:#fefefe}.button-group.success .button,.button-group.success .button.disabled,.button-group.success .button.disabled:focus,.button-group.success .button.disabled:hover,.button-group.success .button[disabled],.button-group.success .button[disabled]:focus,.button-group.success .button[disabled]:hover{background-color:#3adb76;color:#0a0a0a}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#22bb5b;color:#0a0a0a}.button-group.warning .button,.button-group.warning .button.disabled,.button-group.warning .button.disabled:focus,.button-group.warning .button.disabled:hover,.button-group.warning .button[disabled],.button-group.warning .button[disabled]:focus,.button-group.warning .button[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button,.button-group.alert .button.disabled,.button-group.alert .button.disabled:focus,.button-group.alert .button.disabled:hover,.button-group.alert .button[disabled],.button-group.alert .button[disabled]:focus,.button-group.alert .button[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#a53b2a;color:#fefefe}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button:focus,.button-group.hollow .button:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{background-color:transparent}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button-group.hollow .button:focus,.button-group.hollow .button:hover{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow .button.primary,.button-group.hollow .button.primary.disabled,.button-group.hollow .button.primary.disabled:focus,.button-group.hollow .button.primary.disabled:hover,.button-group.hollow .button.primary[disabled],.button-group.hollow .button.primary[disabled]:focus,.button-group.hollow .button.primary[disabled]:hover,.button-group.hollow.primary .button,.button-group.hollow.primary .button.disabled,.button-group.hollow.primary .button.disabled:focus,.button-group.hollow.primary .button.disabled:hover,.button-group.hollow.primary .button[disabled],.button-group.hollow.primary .button[disabled]:focus,.button-group.hollow.primary .button[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button-group.hollow .button.primary:focus,.button-group.hollow .button.primary:hover,.button-group.hollow.primary .button:focus,.button-group.hollow.primary .button:hover{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow .button.secondary,.button-group.hollow .button.secondary.disabled,.button-group.hollow .button.secondary.disabled:focus,.button-group.hollow .button.secondary.disabled:hover,.button-group.hollow .button.secondary[disabled],.button-group.hollow .button.secondary[disabled]:focus,.button-group.hollow .button.secondary[disabled]:hover,.button-group.hollow.secondary .button,.button-group.hollow.secondary .button.disabled,.button-group.hollow.secondary .button.disabled:focus,.button-group.hollow.secondary .button.disabled:hover,.button-group.hollow.secondary .button[disabled],.button-group.hollow.secondary .button[disabled]:focus,.button-group.hollow.secondary .button[disabled]:hover{border:1px solid #767676;color:#767676}.button-group.hollow .button.secondary:focus,.button-group.hollow .button.secondary:hover,.button-group.hollow.secondary .button:focus,.button-group.hollow.secondary .button:hover{border-color:#3b3b3b;color:#3b3b3b}.button-group.hollow .button.success,.button-group.hollow .button.success.disabled,.button-group.hollow .button.success.disabled:focus,.button-group.hollow .button.success.disabled:hover,.button-group.hollow .button.success[disabled],.button-group.hollow .button.success[disabled]:focus,.button-group.hollow .button.success[disabled]:hover,.button-group.hollow.success .button,.button-group.hollow.success .button.disabled,.button-group.hollow.success .button.disabled:focus,.button-group.hollow.success .button.disabled:hover,.button-group.hollow.success .button[disabled],.button-group.hollow.success .button[disabled]:focus,.button-group.hollow.success .button[disabled]:hover{border:1px solid #3adb76;color:#3adb76}.button-group.hollow .button.success:focus,.button-group.hollow .button.success:hover,.button-group.hollow.success .button:focus,.button-group.hollow.success .button:hover{border-color:#157539;color:#157539}.button-group.hollow .button.warning,.button-group.hollow .button.warning.disabled,.button-group.hollow .button.warning.disabled:focus,.button-group.hollow .button.warning.disabled:hover,.button-group.hollow .button.warning[disabled],.button-group.hollow .button.warning[disabled]:focus,.button-group.hollow .button.warning[disabled]:hover,.button-group.hollow.warning .button,.button-group.hollow.warning .button.disabled,.button-group.hollow.warning .button.disabled:focus,.button-group.hollow.warning .button.disabled:hover,.button-group.hollow.warning .button[disabled],.button-group.hollow.warning .button[disabled]:focus,.button-group.hollow.warning .button[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button-group.hollow .button.warning:focus,.button-group.hollow .button.warning:hover,.button-group.hollow.warning .button:focus,.button-group.hollow.warning .button:hover{border-color:#805700;color:#805700}.button-group.hollow .button.alert,.button-group.hollow .button.alert.disabled,.button-group.hollow .button.alert.disabled:focus,.button-group.hollow .button.alert.disabled:hover,.button-group.hollow .button.alert[disabled],.button-group.hollow .button.alert[disabled]:focus,.button-group.hollow .button.alert[disabled]:hover,.button-group.hollow.alert .button,.button-group.hollow.alert .button.disabled,.button-group.hollow.alert .button.disabled:focus,.button-group.hollow.alert .button.disabled:hover,.button-group.hollow.alert .button[disabled],.button-group.hollow.alert .button[disabled]:focus,.button-group.hollow.alert .button[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button-group.hollow .button.alert:focus,.button-group.hollow .button.alert:hover,.button-group.hollow.alert .button:focus,.button-group.hollow.alert .button:hover{border-color:#67251a;color:#67251a}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button:focus,.button-group.clear .button:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{background-color:transparent;border-color:transparent}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{color:#1779ba}.button-group.clear .button:focus,.button-group.clear .button:hover{color:#0c3d5d}.button-group.clear .button.primary,.button-group.clear .button.primary.disabled,.button-group.clear .button.primary.disabled:focus,.button-group.clear .button.primary.disabled:hover,.button-group.clear .button.primary[disabled],.button-group.clear .button.primary[disabled]:focus,.button-group.clear .button.primary[disabled]:hover,.button-group.clear.primary .button,.button-group.clear.primary .button.disabled,.button-group.clear.primary .button.disabled:focus,.button-group.clear.primary .button.disabled:hover,.button-group.clear.primary .button[disabled],.button-group.clear.primary .button[disabled]:focus,.button-group.clear.primary .button[disabled]:hover{color:#1779ba}.button-group.clear .button.primary:focus,.button-group.clear .button.primary:hover,.button-group.clear.primary .button:focus,.button-group.clear.primary .button:hover{color:#0c3d5d}.button-group.clear .button.secondary,.button-group.clear .button.secondary.disabled,.button-group.clear .button.secondary.disabled:focus,.button-group.clear .button.secondary.disabled:hover,.button-group.clear .button.secondary[disabled],.button-group.clear .button.secondary[disabled]:focus,.button-group.clear .button.secondary[disabled]:hover,.button-group.clear.secondary .button,.button-group.clear.secondary .button.disabled,.button-group.clear.secondary .button.disabled:focus,.button-group.clear.secondary .button.disabled:hover,.button-group.clear.secondary .button[disabled],.button-group.clear.secondary .button[disabled]:focus,.button-group.clear.secondary .button[disabled]:hover{color:#767676}.button-group.clear .button.secondary:focus,.button-group.clear .button.secondary:hover,.button-group.clear.secondary .button:focus,.button-group.clear.secondary .button:hover{color:#3b3b3b}.button-group.clear .button.success,.button-group.clear .button.success.disabled,.button-group.clear .button.success.disabled:focus,.button-group.clear .button.success.disabled:hover,.button-group.clear .button.success[disabled],.button-group.clear .button.success[disabled]:focus,.button-group.clear .button.success[disabled]:hover,.button-group.clear.success .button,.button-group.clear.success .button.disabled,.button-group.clear.success .button.disabled:focus,.button-group.clear.success .button.disabled:hover,.button-group.clear.success .button[disabled],.button-group.clear.success .button[disabled]:focus,.button-group.clear.success .button[disabled]:hover{color:#3adb76}.button-group.clear .button.success:focus,.button-group.clear .button.success:hover,.button-group.clear.success .button:focus,.button-group.clear.success .button:hover{color:#157539}.button-group.clear .button.warning,.button-group.clear .button.warning.disabled,.button-group.clear .button.warning.disabled:focus,.button-group.clear .button.warning.disabled:hover,.button-group.clear .button.warning[disabled],.button-group.clear .button.warning[disabled]:focus,.button-group.clear .button.warning[disabled]:hover,.button-group.clear.warning .button,.button-group.clear.warning .button.disabled,.button-group.clear.warning .button.disabled:focus,.button-group.clear.warning .button.disabled:hover,.button-group.clear.warning .button[disabled],.button-group.clear.warning .button[disabled]:focus,.button-group.clear.warning .button[disabled]:hover{color:#ffae00}.button-group.clear .button.warning:focus,.button-group.clear .button.warning:hover,.button-group.clear.warning .button:focus,.button-group.clear.warning .button:hover{color:#805700}.button-group.clear .button.alert,.button-group.clear .button.alert.disabled,.button-group.clear .button.alert.disabled:focus,.button-group.clear .button.alert.disabled:hover,.button-group.clear .button.alert[disabled],.button-group.clear .button.alert[disabled]:focus,.button-group.clear .button.alert[disabled]:hover,.button-group.clear.alert .button,.button-group.clear.alert .button.disabled,.button-group.clear.alert .button.disabled:focus,.button-group.clear.alert .button.disabled:hover,.button-group.clear.alert .button[disabled],.button-group.clear.alert .button[disabled]:focus,.button-group.clear.alert .button[disabled]:hover{color:#cc4b37}.button-group.clear .button.alert:focus,.button-group.clear .button.alert:hover,.button-group.clear.alert .button:focus,.button-group.clear.alert .button:hover{color:#67251a}.button-group.no-gaps .button{margin-right:-.0625rem}.button-group.no-gaps .button+.button{border-left-color:transparent}.button-group.stacked,.button-group.stacked-for-medium,.button-group.stacked-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.button-group.stacked .button,.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%}.button-group.stacked .button:last-child,.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child{margin-bottom:0}.button-group.stacked-for-medium.expanded .button,.button-group.stacked-for-small.expanded .button,.button-group.stacked.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}@media print,screen and (min-width:40em){.button-group.stacked-for-small .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (min-width:64em){.button-group.stacked-for-medium .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (max-width:39.99875em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}@media print,screen and (max-width:63.99875em){.button-group.stacked-for-medium.expanded{display:block}.button-group.stacked-for-medium.expanded .button{display:block;margin-right:0}}.close-button{color:#8a8a8a;cursor:pointer;position:absolute;z-index:10}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.close-button.small{font-size:1.5em;line-height:1;right:.66rem;top:.33em}.close-button,.close-button.medium{font-size:2em;line-height:1;right:1rem;top:.5rem}.label{border-radius:0;cursor:default;display:inline-block;font-size:.8rem;line-height:1;padding:.33333rem .5rem;white-space:nowrap}.label,.label.primary{background:#1779ba;color:#fefefe}.label.secondary{background:#767676;color:#fefefe}.label.success{background:#3adb76;color:#0a0a0a}.label.warning{background:#ffae00;color:#0a0a0a}.label.alert{background:#cc4b37;color:#fefefe}.progress{background-color:#cacaca;border-radius:0;height:1rem;margin-bottom:1rem}.progress.primary .progress-meter{background-color:#1779ba}.progress.secondary .progress-meter{background-color:#767676}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#cc4b37}.progress-meter{background-color:#1779ba;display:block;height:100%;position:relative;width:0}.progress-meter-text{color:#fefefe;font-size:.75rem;font-weight:700;left:50%;margin:0;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);white-space:nowrap}.slider{background-color:#e6e6e6;cursor:pointer;height:.5rem;margin-bottom:2.25rem;margin-top:1.25rem;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.slider-fill{background-color:#cacaca;display:inline-block;height:.5rem;left:0;max-width:100%;position:absolute;top:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.slider-fill.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider-handle{background-color:#1779ba;border-radius:0;cursor:-webkit-grab;cursor:grab;display:inline-block;height:1.4rem;left:0;position:absolute;top:50%;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;width:1.4rem;z-index:1}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#14679e}.slider-handle.is-dragging{cursor:-webkit-grabbing;cursor:grabbing;-webkit-transition:all 0s linear;transition:all 0s linear}.slider.disabled,.slider[disabled]{cursor:not-allowed;opacity:.25}.slider.vertical{display:inline-block;height:12.5rem;margin:0 1.25rem;-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);width:.5rem}.slider.vertical .slider-fill{max-height:100%;top:0;width:.5rem}.slider.vertical .slider-handle{height:1.4rem;left:50%;position:absolute;top:0;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:1.4rem}.switch{color:#fefefe;font-size:.875rem;font-weight:700;height:2rem;margin-bottom:1rem;outline:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-input{margin-bottom:0;opacity:0;position:absolute}.switch-paddle{background:#cacaca;border-radius:0;color:inherit;cursor:pointer;display:block;font-weight:inherit;height:2rem;position:relative;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:4rem}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;border-radius:0;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:1.5rem}input:checked~.switch-paddle{background:#1779ba}input:checked~.switch-paddle:after{left:2.25rem}input:disabled~.switch-paddle{cursor:not-allowed;opacity:.5}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{display:none;left:8%}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{font-size:.625rem;height:1.5rem;width:3rem}.switch.tiny .switch-paddle:after{height:1rem;left:.25rem;top:.25rem;width:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{font-size:.75rem;height:1.75rem;width:3.5rem}.switch.small .switch-paddle:after{height:1.25rem;left:.25rem;top:.25rem;width:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{font-size:1rem;height:2.5rem;width:5rem}.switch.large .switch-paddle:after{height:2rem;left:.25rem;top:.25rem;width:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{border-collapse:collapse;border-radius:0;margin-bottom:1rem;width:100%}tbody,tfoot,thead{background-color:#fefefe;border:1px solid #f1f1f1}caption{font-weight:700;padding:.5rem .625rem .625rem}thead{background:#f8f8f8}tfoot,thead{color:#0a0a0a}tfoot{background:#f1f1f1}tfoot tr,thead tr{background:0 0}tfoot td,tfoot th,thead td,thead th{font-weight:700;padding:.5rem .625rem .625rem;text-align:left}tbody td,tbody th{padding:.5rem .625rem .625rem}tbody tr:nth-child(2n){background-color:#f1f1f1;border-bottom:0}table.unstriped tbody{background-color:#fefefe}table.unstriped tbody tr{background-color:#fefefe;border-bottom:1px solid #f1f1f1}@media print,screen and (max-width:63.99875em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;overflow-x:auto;width:100%}table.hover thead tr:hover{background-color:#f3f3f3}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f9f9}table.hover:not(.unstriped) tr:nth-of-type(2n):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.badge{border-radius:50%;display:inline-block;font-size:.6rem;min-width:2.1em;padding:.3em;text-align:center}.badge,.badge.primary{background:#1779ba;color:#fefefe}.badge.secondary{background:#767676;color:#fefefe}.badge.success{background:#3adb76;color:#0a0a0a}.badge.warning{background:#ffae00;color:#0a0a0a}.badge.alert{background:#cc4b37;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.breadcrumbs:after{clear:both}.breadcrumbs li{color:#0a0a0a;cursor:default;float:left;font-size:.6875rem;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"/";margin:0 .75rem;opacity:1;position:relative}.breadcrumbs a{color:#1779ba}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.callout{background-color:#fff;border:1px solid hsla(0,0%,4%,.25);border-radius:0;color:#0a0a0a;margin:0 0 1rem;padding:1rem;position:relative}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#d7ecfa;color:#0a0a0a}.callout.secondary{background-color:#eaeaea;color:#0a0a0a}.callout.success{background-color:#e1faea;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding:.5rem}.callout.large{padding:3rem}.card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;background:#fefefe;border:1px solid #e6e6e6;border-radius:0;-webkit-box-shadow:none;box-shadow:none;color:#0a0a0a;flex-grow:1;margin-bottom:1rem;overflow:hidden}.card>:last-child{margin-bottom:0}.card-divider{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;background:#e6e6e6;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;padding:1rem}.card-divider>:last-child{margin-bottom:0}.card-section{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;padding:1rem}.card-section>:last-child{margin-bottom:0}.card-image{min-height:1px}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:none;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:10}.dropdown-pane.is-opening{display:block}.dropdown-pane.is-open{display:block;visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.pagination{margin-bottom:1rem;margin-left:0}.pagination:after,.pagination:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.pagination:after{clear:both}.pagination li{border-radius:0;display:none;font-size:.875rem;margin-right:.0625rem}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media print,screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{border-radius:0;color:#0a0a0a;display:block;padding:.1875rem .625rem}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{background:#1779ba;color:#fefefe;cursor:default;padding:.1875rem .625rem}.pagination .disabled{color:#cacaca;cursor:not-allowed;padding:.1875rem .625rem}.pagination .disabled:hover{background:0 0}.pagination .ellipsis:after{color:#0a0a0a;content:"…";padding:.1875rem .625rem}.pagination-previous a:before,.pagination-previous.disabled:before{content:"«";display:inline-block;margin-right:.5rem}.pagination-next a:after,.pagination-next.disabled:after{content:"»";display:inline-block;margin-left:.5rem}.has-tip{border-bottom:1px dotted #8a8a8a;cursor:help;display:inline-block;font-weight:700;position:relative}.tooltip{background-color:#0a0a0a;border-radius:0;color:#fefefe;font-size:80%;max-width:10rem;padding:.75rem;top:calc(100% + .6495rem);z-index:1200}.tooltip,.tooltip:before{position:absolute}.tooltip.bottom:before{border-color:transparent transparent #0a0a0a;border-style:solid;border-width:0 .75rem .75rem;bottom:100%;content:"";display:block;height:0;width:0}.tooltip.bottom.align-center:before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem 0;bottom:auto;content:"";display:block;height:0;top:100%;width:0}.tooltip.top.align-center:before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-style:solid;border-width:.75rem 0 .75rem .75rem;content:"";display:block;height:0;left:100%;width:0}.tooltip.left.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem .75rem 0;content:"";display:block;height:0;left:auto;right:100%;width:0}.tooltip.right.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.align-top:before{bottom:auto;top:10%}.tooltip.align-bottom:before{bottom:10%;top:auto}.tooltip.align-left:before{left:10%;right:auto}.tooltip.align-right:before{left:auto;right:10%}.accordion{background:#fefefe;list-style-type:none;margin-left:0}.accordion[disabled] .accordion-title{cursor:not-allowed}.accordion-item:first-child>:first-child,.accordion-item:last-child>:last-child{border-radius:0}.accordion-title{border:1px solid #e6e6e6;border-bottom:0;color:#1779ba;display:block;font-size:.75rem;line-height:1;padding:1.25rem 1rem;position:relative}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:"+";margin-top:-.5rem;position:absolute;right:1rem;top:50%}.is-active>.accordion-title:before{content:"–"}.accordion-content{background-color:#fefefe;border:1px solid #e6e6e6;border-bottom:0;color:#0a0a0a;display:none;padding:1rem}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.media-object{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;margin-bottom:1rem}.media-object img{max-width:none}@media print,screen and (max-width:39.99875em){.media-object.stack-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.media-object-section{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}@media print,screen and (max-width:39.99875em){.stack-for-small .media-object-section{-webkit-flex-basis:100%;padding:0 0 1rem;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.stack-for-small .media-object-section img{width:100%}}.media-object-section.main-section{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.orbit,.orbit-container{position:relative}.orbit-container{height:0;list-style:none;margin:0;overflow:hidden}.orbit-slide{position:absolute;width:100%}.orbit-slide.no-motionui.is-active{left:0;top:0}.orbit-figure{margin:0}.orbit-image{margin:0;max-width:100%;width:100%}.orbit-caption{background-color:hsla(0,0%,4%,.5);bottom:0;margin-bottom:0;width:100%}.orbit-caption,.orbit-next,.orbit-previous{color:#fefefe;padding:1rem;position:absolute}.orbit-next,.orbit-previous{top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:10}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{margin-bottom:.8rem;margin-top:.8rem;position:relative;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{background-color:#cacaca;border-radius:50%;height:1.2rem;margin:.1rem;width:1.2rem}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.flex-video,.responsive-embed{height:0;margin-bottom:1rem;overflow:hidden;padding-bottom:75%;position:relative}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video,.responsive-embed embed,.responsive-embed iframe,.responsive-embed object,.responsive-embed video{height:100%;left:0;position:absolute;top:0;width:100%}.flex-video.widescreen,.responsive-embed.widescreen{padding-bottom:56.25%}.tabs{background:#fefefe;border:1px solid #e6e6e6;list-style-type:none;margin:0}.tabs:after,.tabs:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.tabs:after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:0 0}.tabs.primary{background:#1779ba}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#1673b1}.tabs-title{float:left}.tabs-title>a{color:#1779ba;display:block;font-size:.75rem;line-height:1;padding:1.25rem 1.5rem}[data-whatinput=mouse] .tabs-title>a{outline:0}.tabs-title>a:hover{background:#fefefe;color:#1468a0}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6;color:#1779ba}.tabs-content{background:#fefefe;border:1px solid #e6e6e6;border-top:0;color:#0a0a0a;-webkit-transition:all .5s ease;transition:all .5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;border-radius:0;-webkit-box-shadow:0 0 0 1px hsla(0,0%,4%,.2);box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;margin-bottom:1rem;max-width:100%}a.thumbnail{-webkit-transition:-webkit-box-shadow .2s ease-out;transition:-webkit-box-shadow .2s ease-out;transition:box-shadow .2s ease-out;transition:box-shadow .2s ease-out,-webkit-box-shadow .2s ease-out}a.thumbnail:focus,a.thumbnail:hover{-webkit-box-shadow:0 0 6px 1px rgba(23,121,186,.5);box-shadow:0 0 6px 1px rgba(23,121,186,.5)}a.thumbnail image{-webkit-box-shadow:none;box-shadow:none}.menu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:0;padding:0;position:relative}[data-whatinput=mouse] .menu li{outline:0}.menu .button,.menu a{display:block;line-height:1;padding:.7rem 1rem;text-decoration:none}.menu a,.menu button,.menu input,.menu select{margin-bottom:0}.menu input{display:inline-block}.menu,.menu.horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.vertical.icon-bottom li a i,.menu.vertical.icon-bottom li a img,.menu.vertical.icon-bottom li a svg,.menu.vertical.icon-top li a i,.menu.vertical.icon-top li a img,.menu.vertical.icon-top li a svg{text-align:left}.menu.expanded li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.menu.expanded.icon-bottom li a i,.menu.expanded.icon-bottom li a img,.menu.expanded.icon-bottom li a svg,.menu.expanded.icon-top li a i,.menu.expanded.icon-top li a img,.menu.expanded.icon-top li a svg{text-align:left}.menu.simple{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.menu.simple li+li{margin-left:1rem}.menu.simple a{padding:0}@media print,screen and (min-width:40em){.menu.medium-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.medium-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.medium-expanded li,.menu.medium-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}@media print,screen and (min-width:64em){.menu.large-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.large-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.large-expanded li,.menu.large-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}.menu.nested{margin-left:1rem;margin-right:0}.menu.icon-bottom a,.menu.icon-left a,.menu.icon-right a,.menu.icon-top a,.menu.icons a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu.icon-left li a,.menu.nested.icon-left li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-left li a i,.menu.icon-left li a img,.menu.icon-left li a svg,.menu.nested.icon-left li a i,.menu.nested.icon-left li a img,.menu.nested.icon-left li a svg{margin-right:.25rem}.menu.icon-right li a,.menu.nested.icon-right li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-right li a i,.menu.icon-right li a img,.menu.icon-right li a svg,.menu.nested.icon-right li a i,.menu.nested.icon-right li a img,.menu.nested.icon-right li a svg{margin-left:.25rem}.menu.icon-top li a,.menu.nested.icon-top li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-top li a i,.menu.icon-top li a img,.menu.icon-top li a svg,.menu.nested.icon-top li a i,.menu.nested.icon-top li a img,.menu.nested.icon-top li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu.icon-bottom li a,.menu.nested.icon-bottom li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-bottom li a i,.menu.icon-bottom li a img,.menu.icon-bottom li a svg,.menu.nested.icon-bottom li a i,.menu.nested.icon-bottom li a img,.menu.nested.icon-bottom li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu .active>a,.menu .is-active>a{background:#1779ba;color:#fefefe}.menu.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.menu.align-right li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right.vertical li{display:block;text-align:right}.menu.align-right.icon-bottom li a i,.menu.align-right.icon-bottom li a img,.menu.align-right.icon-bottom li a svg,.menu.align-right.icon-top li a i,.menu.align-right.icon-top li a img,.menu.align-right.icon-top li a svg,.menu.align-right.vertical li .submenu li{text-align:right}.menu.align-right .nested{margin-left:0;margin-right:1rem}.menu.align-center li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu.align-center li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu .menu-text{color:inherit;font-weight:700;line-height:1;padding:.7rem 1rem}.menu-centered>.menu,.menu-centered>.menu li{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu-centered>.menu li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu-centered>.menu li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.no-js [data-responsive-menu] ul{display:none}.menu-icon{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon:after{background:#fefefe;-webkit-box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon:hover:after{background:#cacaca;-webkit-box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.menu-icon.dark{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon.dark:after{background:#0a0a0a;-webkit-box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon.dark:hover:after{background:#8a8a8a;-webkit-box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.accordion-menu li{width:100%}.accordion-menu .is-accordion-submenu a,.accordion-menu a{padding:.7rem 1rem}.accordion-menu .nested.is-accordion-submenu{margin-left:1rem;margin-right:0}.accordion-menu.align-right .nested.is-accordion-submenu{margin-left:0;margin-right:1rem}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a{position:relative}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;margin-top:-3px;position:absolute;right:1rem;top:50%;width:0}.accordion-menu.align-left .is-accordion-submenu-parent>a:after{left:auto;right:1rem}.accordion-menu.align-right .is-accordion-submenu-parent>a:after{left:1rem;right:auto}.accordion-menu .is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.is-accordion-submenu-parent{position:relative}.has-submenu-toggle>a{margin-right:40px}.submenu-toggle{cursor:pointer;height:40px;position:absolute;right:0;top:0;width:40px}.submenu-toggle:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;bottom:0;content:"";display:block;height:0;margin:auto;top:0;width:0}.submenu-toggle[aria-expanded=true]:after{-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.submenu-toggle-text{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.is-drilldown{overflow:hidden;position:relative}.is-drilldown li{display:block}.is-drilldown.animate-height{-webkit-transition:height .5s;transition:height .5s}.drilldown a{background:#fefefe;padding:.7rem 1rem}.drilldown .is-drilldown-submenu{background:#fefefe;left:100%;position:absolute;top:0;-webkit-transition:-webkit-transform .15s linear;transition:-webkit-transform .15s linear;transition:transform .15s linear;transition:transform .15s linear,-webkit-transform .15s linear;width:100%;z-index:-1}.drilldown .is-drilldown-submenu.is-active{display:block;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);z-index:1}.drilldown .is-drilldown-submenu.is-closing{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.drilldown .is-drilldown-submenu a{padding:.7rem 1rem}.drilldown .nested.is-drilldown-submenu{margin-left:0;margin-right:0}.drilldown .drilldown-submenu-cover-previous{min-height:100%}.drilldown .is-drilldown-submenu-parent>a{position:relative}.drilldown .is-drilldown-submenu-parent>a:after{margin-top:-6px;position:absolute;top:50%}.drilldown .is-drilldown-submenu-parent>a:after,.drilldown.align-left .is-drilldown-submenu-parent>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;right:1rem;width:0}.drilldown.align-left .is-drilldown-submenu-parent>a:after{left:auto}.drilldown.align-right .is-drilldown-submenu-parent>a:after{left:1rem;right:auto}.drilldown .js-drilldown-back>a:before,.drilldown.align-right .is-drilldown-submenu-parent>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;width:0}.drilldown .js-drilldown-back>a:before{display:inline-block;margin-right:.75rem;vertical-align:middle}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}[data-whatinput=mouse] .dropdown.menu a{outline:0}.dropdown.menu>li>a{padding:.7rem 1rem}.dropdown.menu>li.is-active>a{background:0 0;color:#1779ba}.no-js .dropdown.menu ul{display:none}.dropdown.menu .nested.is-dropdown-submenu{margin-left:0;margin-right:0}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.vertical>li>a:after{right:14px}.dropdown.menu.vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}@media print,screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.medium-vertical>li>a:after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}@media print,screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.large-vertical>li>a:after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{left:auto;right:0;top:100%}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{left:auto;margin-top:-6px;position:absolute;right:5px;top:50%}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{left:auto;top:100%}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{left:100%;right:auto}.is-dropdown-submenu{background:#fefefe;border:1px solid #cacaca;display:none;left:100%;min-width:200px;position:absolute;top:0;z-index:1}.dropdown .is-dropdown-submenu a{padding:.7rem 1rem}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{background:hsla(0,0%,100%,.25);height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;-webkit-transition:opacity .5s ease,visibility .5s ease;transition:opacity .5s ease,visibility .5s ease;visibility:hidden;width:100%;z-index:11}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{overflow:hidden;position:relative}.off-canvas{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:fixed;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.is-transition-push{z-index:12}.off-canvas.is-closed{visibility:hidden}.off-canvas.is-transition-overlap{z-index:13}.off-canvas.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-absolute{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:absolute;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-push{z-index:12}.off-canvas-absolute.is-closed{visibility:hidden}.off-canvas-absolute.is-transition-overlap{z-index:13}.off-canvas-absolute.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas-absolute.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.position-left{height:100%;left:0;overflow-y:auto;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-left,.position-left{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-left.has-transition-push{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.position-left.is-transition-push{-webkit-box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25)}.position-right{height:100%;overflow-y:auto;right:0;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-right,.position-right{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-right.has-transition-push{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.position-right.is-transition-push{-webkit-box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25)}.position-top{left:0;overflow-x:auto;top:0;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-top,.position-top{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-top.has-transition-push{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.position-top.is-transition-push{-webkit-box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25)}.position-bottom{bottom:0;left:0;overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-bottom,.position-bottom{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-bottom.has-transition-push{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.position-bottom.is-transition-push{-webkit-box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25)}.off-canvas-content{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-transition-overlap,.off-canvas-content.has-transition-push{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.off-canvas-content .off-canvas.is-open,.off-canvas-content.has-transition-push{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}@media print,screen and (min-width:40em){.position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-medium .close-button{display:none}.off-canvas-content .position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-medium .close-button{display:none}.off-canvas-content .position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-medium .close-button{display:none}.off-canvas-content .position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-medium~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-medium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-medium~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:64em){.position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-large .close-button{display:none}.off-canvas-content .position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-large .close-button{display:none}.off-canvas-content .position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}.position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-large .close-button{display:none}.off-canvas-content .position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-large~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-large .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-large~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:40em){.off-canvas.in-canvas-for-medium{background:0 0;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-medium.position-bottom,.off-canvas.in-canvas-for-medium.position-left,.off-canvas.in-canvas-for-medium.position-right,.off-canvas.in-canvas-for-medium.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-medium .close-button{display:none}}@media print,screen and (min-width:64em){.off-canvas.in-canvas-for-large{background:0 0;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-large.position-bottom,.off-canvas.in-canvas-for-large.position-left,.off-canvas.in-canvas-for-large.position-right,.off-canvas.in-canvas-for-large.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-large .close-button{display:none}}html.is-reveal-open{overflow-y:hidden;position:fixed;width:100%}html.is-reveal-open.zf-has-scroll{overflow-y:scroll;-webkit-overflow-scrolling:touch}html.is-reveal-open body{overflow-y:hidden}.reveal-overlay{background-color:hsla(0,0%,4%,.45);bottom:0;left:0;position:fixed;right:0;top:0;z-index:1005}.reveal,.reveal-overlay{display:none;overflow-y:auto;-webkit-overflow-scrolling:touch}.reveal{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;margin-left:auto;margin-right:auto;padding:1rem;position:relative;top:100px;z-index:1006}[data-whatinput=mouse] .reveal{outline:0}@media print,screen and (min-width:40em){.reveal{min-height:0}}.reveal .column{min-width:0}.reveal>:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.reveal{max-width:75rem;width:600px}}.reveal.collapse{padding:0}@media print,screen and (min-width:40em){.reveal.tiny{max-width:75rem;width:30%}.reveal.small{max-width:75rem;width:50%}.reveal.large{max-width:75rem;width:90%}}.reveal.full{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}@media print,screen and (max-width:39.99875em){.reveal{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}}.reveal.without-overlay{position:fixed}.sticky,.sticky-container{position:relative}.sticky{-webkit-transform:translateZ(0);transform:translateZ(0);z-index:0}.sticky.is-stuck{position:fixed;width:100%;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{left:auto;position:relative;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.title-bar{background:#0a0a0a;color:#fefefe;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left,.title-bar-right{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{display:inline-block;font-weight:700;vertical-align:middle}.top-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.5rem}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{margin-right:1rem;max-width:200px}.top-bar .input-group-field{margin-right:0;width:100%}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}@media print,screen and (min-width:40em){.top-bar{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.top-bar .top-bar-left{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:auto}.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;margin-left:auto}}@media print,screen and (max-width:63.99875em){.top-bar.stacked-for-medium{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media print,screen and (max-width:74.99875em){.top-bar.stacked-for-large{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.top-bar-title{margin:.5rem 1rem .5rem 0}.top-bar-left,.top-bar-right,.top-bar-title{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.clearfix:after{clear:both}.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.align-spaced{-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.align-left.vertical.menu>li>a{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right.vertical.menu>li>a{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center.vertical.menu>li>a{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-top{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.align-self-top{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.align-bottom{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.align-self-bottom{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.align-middle{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.align-self-middle{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.align-stretch{-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.align-self-stretch{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch}.align-center-middle{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-webkit-align-content:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.small-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.small-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.small-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.small-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.small-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.small-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}@media print,screen and (min-width:40em){.medium-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.medium-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.medium-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.medium-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.medium-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.medium-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}@media print,screen and (min-width:64em){.large-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.large-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.large-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.large-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.large-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.large-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}.flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}@media print,screen and (min-width:40em){.medium-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.medium-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.medium-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.medium-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.medium-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.medium-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.medium-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.medium-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media print,screen and (min-width:64em){.large-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.large-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.large-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.large-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.large-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.large-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.large-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.large-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.hide{display:none!important}.invisible{visibility:hidden}.visible{visibility:visible}@media print,screen and (max-width:39.99875em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media print,screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.99875em){.show-for-medium{display:none!important}}@media print,screen and (min-width:40em)and (max-width:63.99875em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.99875em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media print,screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.99875em){.show-for-large{display:none!important}}@media print,screen and (min-width:64em)and (max-width:74.99875em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.99875em),screen and (min-width:75em){.show-for-large-only{display:none!important}}.show-for-sr,.show-on-focus{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.show-on-focus:active,.show-on-focus:focus{height:auto!important;overflow:visible!important;position:static!important;width:auto!important;clip:auto!important;white-space:normal!important}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.show-for-dark-mode{display:none}.hide-for-dark-mode{display:block}@media screen and (prefers-color-scheme:dark){.show-for-dark-mode{display:block!important}.hide-for-dark-mode{display:none!important}}.show-for-ie{display:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.show-for-ie{display:block!important}.hide-for-ie{display:none!important}}.show-for-sticky{display:none}.is-stuck .show-for-sticky{display:block}.is-stuck .hide-for-sticky{display:none}@font-face{font-family:fonticon;src:url(data:font/ttf;base64,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AG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAAFcmFkaW8McmFkaW8tYWN0aXZlFmNoZWNrYm94LWluZGV0ZXJtaW5hdGUIY2hlY2tib3gPY2hlY2tib3gtYWN0aXZlBHN3YXAGdW5mb2xkB2FjY291bnQDYWRkCWFwYXJ0bWVudAphcnJvdy1sZWZ0CmFycm93LWRvd24OYXJyb3ctZHJvcGRvd24MYXJyb3ctZHJvcHVwC2Fycm93LXJpZ2h0CGFycm93LXVwBWJlYWNoB3JlZnJlc2gOY2FsZW5kYXItdG9kYXkNY2FuY2VsLWZpbGxlZBNjaGVjay1jaXJjbGUtZmlsbGVkDGNoZWNrLWNpcmNsZQVjaGVjawxjaGV2cm9uLWxlZnQNY2hldnJvbi1yaWdodAZjYW5jZWwFY2xvdWQKY29sbGVjdGlvbgRjb3B5A2N1dAVwYXN0ZQpjcmVkaXRjYXJkCGNhbGVuZGFyBmRlbGV0ZQhkb3dubG9hZAV0aXRsZQltYWlsLW9wZW4EZWRpdAVlcnJvcg1lcnJvci1vdXRsaW5lCmNoZXZyb24tdXAMY2hldnJvbi1kb3duBWhlYXJ0BHNvcnQGZm9sZGVyFUZvcm1hdEFsaWduTGVmdEZpbGxlZARob21lBWluYm94BGluZm8MaW5mby1vdXRsaW5lBmxheWVycwhsb2NhdGlvbgRsb2NrBmxvZ291dARtYWlsDG1haWwtb3V0bGluZQRtZW51B21vbml0b3IPbW9yZS1ob3Jpem9udGFsDW1vcmUtdmVydGljYWwMbm90aWZpY2F0aW9uBm5ld3RhYgV1c2VycwhhZGQtdXNlcgR1c2VyBXBob25lBXBob3RvDXBob3RvLW91dGxpbmUEcGxheQtwbGF5LWNpcmNsZQVjbG9jawZ1bmxvY2sIZGF0YWJhc2UHbmV0d29yaxBkYXNoYm9hcmQtZmlsbGVkCHNldHRpbmdzC3N0YXItZmlsbGVkDHN0YXItb3V0bGluZQttYWludGVuYW5jZQRzZW5kBG5leHQIcHJldmlvdXMPd2FybmluZy1vdXRsaW5lElZpZXdIZWFkbGluZUZpbGxlZAp1bml2ZXJzaXR5BXVzYWdlBGhlbHAHd2FybmluZwdzdXBwb3J0BnNlYXJjaARsb2dzEWRhc2hib2FyZC1vdXRsaW5lEHN0YXItaGFsZi1maWxsZWQHbW9kdWxlcwR3b3JrBnVwbG9hZAR3aWZpBXRoZW1lBXNsYWNrCWRvY3MtbWFpbA5kb2NzLWNvbW11bml0eRBkb2NzLW9wZW4tc291cmNlD2RvY3MtZW50ZXJwcmlzZQ9kb2NzLWFsdGVybmF0b3INZG9jcy1vcGVyYXRvcgxkb2NzLW1hbmFnZXIPZG9jcy1tb25pdG9yaW5nEmRvY3MtY2hldnJvbi1yaWdodAlkb2NzLWluZm8MZG9jcy13YXJuaW5nEWRvY3MtY2hldnJvbi1sZWZ0EmRvY3MtbWVudS1jb2xsYXBzZRBkb2NzLXRodW1icy1kb3duDmRvY3MtdGh1bWJzLXVwBmdpdGh1YghpbnN0YW5jZQVwYXVzZQRzdG9wBXJlc2V0A2V5ZQ5zdGFjay1vdmVyZmxvdxBkb2NzLW5zcWwtZ3VpZGVzCmRvY3MtY2xvdWQUZG9jcy1nZXR0aW5nLXN0YXJ0ZWQJZG9jcy1ibG9nD2RvY3MtY29udHJpYnV0ZQ1kb2NzLXRyYWluaW5nDWRvY3MtY29tbWFuZHMSZG9jcy1jb25maWd1cmF0aW9uEWRvY3MtZW50ZXJwcmlzZS1tAAAAAA==) format("truetype"),url(data:application/vnd.ms-fontobject;base64,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AGUAYQB0AGUAIABiAHkAIABpAGMAbwBuADIAZgBvAG4AdAAgADwAQQBiAGQAZQBsAGgAYQBrAGkAbQAgAFIAQQBGAEkASwA+AGYAbwBuAHQAaQBjAG8AbgBSAGUAZwB1AGwAYQByAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AGkAYwBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAGYAbwBuAHQAaQBjAG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAAFcmFkaW8McmFkaW8tYWN0aXZlFmNoZWNrYm94LWluZGV0ZXJtaW5hdGUIY2hlY2tib3gPY2hlY2tib3gtYWN0aXZlBHN3YXAGdW5mb2xkB2FjY291bnQDYWRkCWFwYXJ0bWVudAphcnJvdy1sZWZ0CmFycm93LWRvd24OYXJyb3ctZHJvcGRvd24MYXJyb3ctZHJvcHVwC2Fycm93LXJpZ2h0CGFycm93LXVwBWJlYWNoB3JlZnJlc2gOY2FsZW5kYXItdG9kYXkNY2FuY2VsLWZpbGxlZBNjaGVjay1jaXJjbGUtZmlsbGVkDGNoZWNrLWNpcmNsZQVjaGVjawxjaGV2cm9uLWxlZnQNY2hldnJvbi1yaWdodAZjYW5jZWwFY2xvdWQKY29sbGVjdGlvbgRjb3B5A2N1dAVwYXN0ZQpjcmVkaXRjYXJkCGNhbGVuZGFyBmRlbGV0ZQhkb3dubG9hZAV0aXRsZQltYWlsLW9wZW4EZWRpdAVlcnJvcg1lcnJvci1vdXRsaW5lCmNoZXZyb24tdXAMY2hldnJvbi1kb3duBWhlYXJ0BHNvcnQGZm9sZGVyFUZvcm1hdEFsaWduTGVmdEZpbGxlZARob21lBWluYm94BGluZm8MaW5mby1vdXRsaW5lBmxheWVycwhsb2NhdGlvbgRsb2NrBmxvZ291dARtYWlsDG1haWwtb3V0bGluZQRtZW51B21vbml0b3IPbW9yZS1ob3Jpem9udGFsDW1vcmUtdmVydGljYWwMbm90aWZpY2F0aW9uBm5ld3RhYgV1c2VycwhhZGQtdXNlcgR1c2VyBXBob25lBXBob3RvDXBob3RvLW91dGxpbmUEcGxheQtwbGF5LWNpcmNsZQVjbG9jawZ1bmxvY2sIZGF0YWJhc2UHbmV0d29yaxBkYXNoYm9hcmQtZmlsbGVkCHNldHRpbmdzC3N0YXItZmlsbGVkDHN0YXItb3V0bGluZQttYWludGVuYW5jZQRzZW5kBG5leHQIcHJldmlvdXMPd2FybmluZy1vdXRsaW5lElZpZXdIZWFkbGluZUZpbGxlZAp1bml2ZXJzaXR5BXVzYWdlBGhlbHAHd2FybmluZwdzdXBwb3J0BnNlYXJjaARsb2dzEWRhc2hib2FyZC1vdXRsaW5lEHN0YXItaGFsZi1maWxsZWQHbW9kdWxlcwR3b3JrBnVwbG9hZAR3aWZpBXRoZW1lBXNsYWNrCWRvY3MtbWFpbA5kb2NzLWNvbW11bml0eRBkb2NzLW9wZW4tc291cmNlD2RvY3MtZW50ZXJwcmlzZQ9kb2NzLWFsdGVybmF0b3INZG9jcy1vcGVyYXRvcgxkb2NzLW1hbmFnZXIPZG9jcy1tb25pdG9yaW5nEmRvY3MtY2hldnJvbi1yaWdodAlkb2NzLWluZm8MZG9jcy13YXJuaW5nEWRvY3MtY2hldnJvbi1sZWZ0EmRvY3MtbWVudS1jb2xsYXBzZRBkb2NzLXRodW1icy1kb3duDmRvY3MtdGh1bWJzLXVwBmdpdGh1YghpbnN0YW5jZQVwYXVzZQRzdG9wBXJlc2V0A2V5ZQ5zdGFjay1vdmVyZmxvdxBkb2NzLW5zcWwtZ3VpZGVzCmRvY3MtY2xvdWQUZG9jcy1nZXR0aW5nLXN0YXJ0ZWQJZG9jcy1ibG9nD2RvY3MtY29udHJpYnV0ZQ1kb2NzLXRyYWluaW5nDWRvY3MtY29tbWFuZHMSZG9jcy1jb25maWd1cmF0aW9uEWRvY3MtZW50ZXJwcmlzZS1tAAAAAA==) format("embedded-opentype"),url(data:font/woff;base64,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) format("woff")}[class*=" icon-addon-"]:before,[class^=icon-addon-]:before{clip-path:polygon(0 0,100% 0,100% 59%,95.5% 54.5%,88% 50.3%,80% 48.5%,71% 49.2%,64% 52%,58% 56%,53% 62%,50% 69%,48.8% 79%,50.5% 87%,55% 95%,60% 100%,0 100%)}.admonition-title:before,.icon,.search-box:before,.secondary-side-nav__content li a:before,.side-nav__content .scylla-icon--expand,[class*=" icon-"],[class^=icon-]{font-family:fonticon!important;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400!important;vertical-align:middle}.icon-radio:before{content:""}.icon-radio-active:before{content:""}.icon-checkbox-indeterminate:before{content:""}.icon-checkbox:before{content:""}.icon-checkbox-active:before{content:""}.icon-swap:before{content:""}.icon-unfold:before{content:""}.icon-account:before{content:""}.icon-add:before{content:""}.icon-apartment:before{content:""}.icon-arrow-left:before{content:""}.icon-arrow-down:before{content:""}.icon-arrow-dropdown:before{content:""}.icon-arrow-dropup:before{content:""}.icon-arrow-right:before{content:""}.icon-arrow-up:before{content:""}.icon-beach:before{content:""}.icon-refresh:before{content:""}.icon-calendar-today:before{content:""}.icon-cancel-filled:before{content:""}.icon-check-circle-filled:before{content:""}.icon-check-circle:before{content:""}.icon-check:before{content:""}.icon-chevron-left:before{content:""}.icon-chevron-right:before{content:""}.icon-cancel:before{content:""}.icon-cloud:before{content:""}.icon-collection:before{content:""}.icon-copy:before{content:""}.icon-cut:before{content:""}.icon-paste:before{content:""}.icon-creditcard:before{content:""}.icon-calendar:before{content:""}.icon-delete:before{content:""}.icon-download:before{content:""}.icon-title:before{content:""}.icon-mail-open:before{content:""}.icon-edit:before{content:""}.icon-error:before{content:""}.icon-error-outline:before{content:""}.icon-chevron-up:before{content:""}.icon-chevron-down:before{content:""}.icon-heart:before{content:""}.icon-sort:before{content:""}.icon-folder:before{content:""}.icon-FormatAlignLeftFilled:before{content:""}.icon-home:before{content:""}.icon-inbox:before{content:""}.icon-info:before{content:""}.icon-info-outline:before{content:""}.icon-layers:before{content:""}.icon-location:before{content:""}.icon-lock:before{content:""}.icon-logout:before{content:""}.icon-mail:before{content:""}.icon-mail-outline:before{content:""}.icon-menu:before{content:""}.icon-monitor:before{content:""}.icon-more-horizontal:before{content:""}.icon-more-vertical:before{content:""}.icon-notification:before{content:""}.icon-newtab:before{content:""}.icon-users:before{content:""}.icon-add-user:before{content:""}.icon-user:before{content:""}.icon-phone:before{content:""}.icon-photo:before{content:""}.icon-photo-outline:before{content:""}.icon-play:before{content:""}.icon-play-circle:before{content:""}.icon-clock:before{content:""}.icon-unlock:before{content:""}.icon-database:before{content:""}.icon-network:before{content:""}.icon-dashboard-filled:before{content:""}.icon-settings:before{content:""}.icon-star-filled:before{content:""}.icon-star-outline:before{content:""}.icon-maintenance:before{content:""}.icon-send:before{content:""}.icon-next:before{content:""}.icon-previous:before{content:""}.icon-warning-outline:before{content:""}.icon-ViewHeadlineFilled:before{content:""}.icon-university:before{content:""}.icon-usage:before{content:""}.icon-help:before{content:""}.icon-warning:before{content:""}.icon-support:before{content:""}.icon-search:before{content:""}.icon-logs:before{content:""}.icon-dashboard-outline:before{content:""}.icon-star-half-filled:before{content:""}.icon-modules:before{content:""}.icon-work:before{content:""}.icon-upload:before{content:""}.icon-wifi:before{content:""}.icon-theme:before{content:""}.icon-slack:before{content:""}.icon-docs-mail:before{content:""}.icon-docs-community:before{content:""}.icon-docs-open-source:before{content:""}.icon-docs-enterprise:before{content:""}.icon-docs-alternator:before{content:""}.icon-docs-operator:before{content:""}.icon-docs-manager:before{content:""}.icon-docs-monitoring:before{content:""}.icon-docs-chevron-right:before{content:""}.icon-docs-info:before{content:""}.icon-docs-warning:before{content:""}.icon-docs-chevron-left:before{content:""}.icon-docs-menu-collapse:before{content:""}.icon-docs-thumbs-down:before{content:""}.icon-docs-thumbs-up:before{content:""}.icon-github:before{content:""}.icon-instance:before{content:""}.icon-pause:before{content:""}.icon-stop:before{content:""}.icon-reset:before{content:""}.icon-eye:before{content:""}.icon-stack-overflow:before{content:""}.icon-docs-nsql-guides:before{content:""}.icon-docs-cloud:before{content:""}.icon-docs-getting-started:before{content:""}.icon-docs-blog:before{content:""}.icon-docs-contribute:before{content:""}.icon-docs-training:before{content:""}.icon-docs-commands:before{content:""}.icon-docs-configuration:before{content:""}.icon-docs-enterprise-m:before{content:""}:root{--white:#fff;--gray-50:#f7fcfc;--gray-100:#edf5f7;--gray-200:#d8e5eb;--gray-300:#c3d5de;--gray-400:#aec0cf;--gray-500:#95a7ba;--gray-600:#7b8ba2;--gray-700:#616d87;--gray-800:#4b546f;--gray-900:#383d57;--gray-950:#2f324b;--black:#23263b;--primary:#42c4e6;--secondary:#3a2d55;--success:#43a047;--info:#1976d2;--warning:#ffab00;--danger:#ce291f;--link-color:#3c4fe0;--link-color-hover:#3c4fe0;--text-color:#23263b;--code-color:#23263b;--text-emphasis:#23263b;--text-muted:#95a7ba;--border-color:#f1f1f1;--header-border:#4458a3;--bg-color:#fefefe;--well-bg:#f7f8f9;--navigation-bg:#f6f8ff;--card-bg:var(--white);--admonition:#6f7071;--scollbar-bg:#b3bac5;--tooltip-bg:#383d57;--shadow-lg:0px 4px 25px rgba(0,0,0,.15);--border-width:1px;--border-radius:5px;--border-radius-md:8px;--line-number:#5a7184;--logo-url:"../img/logo-scylla-horizontal-color.svg"}.dark{--primary:#42c4e6;--secondary:#3a2d55;--success:#43a047;--info:#1976d2;--warning:#ffab00;--danger:#ce291f;--link-color:#42c4e6;--link-color-hover:#42c4e6;--text-color:var(--gray-200);--code-color:var(--gray-200);--text-emphasis:var(--white);--text-muted:var(--gray-300);--border-color:var(--gray-800);--header-border:#4458a3;--bg-color:var(--black);--well-bg:#1e2031;--navigation-bg:#1e2031;--card-bg:var(--gray-950);--admonition:var(--gray-400);--logo-url:"../img/logo-scylla-horizontal-light.svg"}html{box-sizing:border-box;scroll-padding-top:100px}body{background-color:var(--bg-color);color:var(--text-color);font-family:Roboto,sans-serif;font-size:16px;line-height:1}*,:after,:before{box-sizing:inherit}a{color:var(--link-color)}a.reference:after{font-family:FontAwesome;font-size:12px;padding:0 4px}a.reference.external:after{content:""}a.reference.download:after{content:""}a:hover{color:var(--link-color-hover);font-weight:500}.headerlink{margin-left:5px;visibility:hidden}.toc-backref:hover{color:var(--black)}h1,h2,h3,h4,h5,h6{font-family:Roboto,sans-serif;font-size:16px;font-weight:500;letter-spacing:.2px;line-height:24px;margin-bottom:16px}h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{visibility:visible}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}h1{font-size:32px;font-weight:700;line-height:40px;margin-bottom:28px}h2{font-size:24px;line-height:32px}h3{font-size:20px}h4{font-size:18px}h5{font-size:16px}h6{font-weight:400}img{max-width:100%}button:focus{outline:0}blockquote{border:0;margin:0;padding:0}blockquote,blockquote p,cite{color:inherit}cite{display:inline;font-size:inherit}cite:before{content:""}.show{display:block!important}.centered{display:block;margin:0 auto}.break{flex-basis:100%;height:0}@media screen and (min-width:1024px){h1{font-size:36px}}.dark .highlight .c{color:#6272a4}.dark .highlight .err,.dark .highlight .g{color:#f8f8f2}.dark .highlight .k{color:#ff79c6}.dark .highlight .l,.dark .highlight .n{color:#f8f8f2}.dark .highlight .o{color:#ff79c6}.dark .highlight .p,.dark .highlight .x{color:#f8f8f2}.dark .highlight .ch,.dark .highlight .cm{color:#6272a4}.dark .highlight .cp{color:#ff79c6}.dark .highlight .c1,.dark .highlight .cpf,.dark .highlight .cs{color:#6272a4}.dark .highlight .gd{color:#8b080b}.dark .highlight .ge{color:#f8f8f2;text-decoration:underline}.dark .highlight .gr{color:#f8f8f2}.dark .highlight .gh,.dark .highlight .gi{color:#f8f8f2;font-weight:700}.dark .highlight .go{color:#dfdfe6}.dark .highlight .gp,.dark .highlight .gs{color:#f8f8f2}.dark .highlight .gu{color:#f8f8f2;font-weight:700}.dark .highlight .gt{color:#f8f8f2}.dark .highlight .kc{color:#ff79c6}.dark .highlight .kd{color:#8be9fd;font-style:italic}.dark .highlight .kn,.dark .highlight .kp,.dark .highlight .kr{color:#ff79c6}.dark .highlight .kt{color:#8be9fd}.dark .highlight .ld{color:#f8f8f2}.dark .highlight .m{color:#bd93f9}.dark .highlight .s{color:#f1fa8c}.dark .highlight .na{color:#50fa7b}.dark .highlight .nb{color:#8be9fd;font-style:italic}.dark .highlight .nc{color:#50fa7b}.dark .highlight .nd,.dark .highlight .ne,.dark .highlight .ni,.dark .highlight .no{color:#f8f8f2}.dark .highlight .nf{color:#50fa7b}.dark .highlight .nl{color:#8be9fd;font-style:italic}.dark .highlight .nn,.dark .highlight .nx,.dark .highlight .py{color:#f8f8f2}.dark .highlight .nt{color:#ff79c6}.dark .highlight .nv{color:#8be9fd;font-style:italic}.dark .highlight .ow{color:#ff79c6}.dark .highlight .w{color:#f8f8f2}.dark .highlight .mb,.dark .highlight .mf,.dark .highlight .mh,.dark .highlight .mi,.dark .highlight .mo{color:#bd93f9}.dark .highlight .dl,.dark .highlight .s1,.dark .highlight .s2,.dark .highlight .sa,.dark .highlight .sb,.dark .highlight .sc,.dark .highlight .sd,.dark .highlight .se,.dark .highlight .sh,.dark .highlight .si,.dark .highlight .sr,.dark .highlight .ss,.dark .highlight .sx{color:#f1fa8c}.dark .highlight .bp{color:#f8f8f2;font-style:italic}.dark .highlight .fm{color:#50fa7b}.dark .highlight .vc,.dark .highlight .vg,.dark .highlight .vi,.dark .highlight .vm{color:#8be9fd;font-style:italic}.dark .highlight .il{color:#bd93f9}.contents.local>ul>li .dark a:before,.dark .contents.local>ul>li a:before,.dark .scylla-icon{filter:brightness(0) saturate(100%) invert(100%) sepia(4%) saturate(10%) hue-rotate(140deg) brightness(106%) contrast(100%)}.contents.local>ul>li a:before,.scylla-icon{background-repeat:no-repeat;background-size:contain;display:inline-block;filter:brightness(0);vertical-align:middle}.scylla-icon--about-team{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMntzdHJva2UtbGluZWNhcDpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik00LjY2IDkuODEgMi42MyAxMWEyLjA4IDIuMDggMCAwIDAtMS4xMyAxLjgzdjcuODFjLjE5IDEuMTEuNSAxLjUzIDEuNSAxLjQ3TTcuMDYgOS45NGwxLjQ0Ljk0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMy41IDE4LjV2NS4zNE05LjUgMTguNXY1LjM0TTguNTQgMTguNDJ2NS4zM00xNS41IDE4LjV2NS4zNE0xNi41IDE4LjV2NS4zNE0zLjMzIDIwLjUzaDUuMDhNMTEuNDUgOC44NGwuMDYuMDZhMS42NSAxLjY1IDAgMCAwIDIuMzQgMGgwIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJNMTIuNDIgNy41YTEuODEgMS44MSAwIDAgMS0xLjkyLTEuNzdWNWExLjk0IDEuOTQgMCAwIDEgMS45Mi0yIDIuMDcgMi4wNyAwIDAgMSAyLjA4IDJ2Ljc3YTIgMiAwIDAgMS0yLjA4IDEuNzNaTTExLjQyIDguNzQgOS42MyA5LjlhMi4wNyAyLjA3IDAgMCAwLTEuMTMgMS44NXY3LjgyQTEuNDcgMS40NyAwIDAgMCAxMCAyMU0xMy43NSA5LjE4bDIgLjY1Yy43LjM1Ljc2IDEuMDYuNzYgMS44NHY3LjljMCAuNzctLjIzIDEuMjQtMSAxLjI0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNOS45MyAxOS41aDUuNCIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTE5LjQyIDkuMTJhMi4wNyAyLjA3IDAgMCAwIDIuMDgtMS45M3YtLjc3YTIuMDcgMi4wNyAwIDAgMC0yLjA4LTEuOTIgMS45MyAxLjkzIDAgMCAwLTEuOTIgMS45MnYuNzdhMS45NCAxLjk0IDAgMCAwIDEuOTIgMS45M1pNNS41OSA5LjEyYTEuOTMgMS45MyAwIDAgMCAxLjkyLTEuOTN2LS43N0ExLjkzIDEuOTMgMCAwIDAgNS41OSA0LjUgMi4wOCAyLjA4IDAgMCAwIDMuNSA2LjQydi43N2EyLjA4IDIuMDggMCAwIDAgMi4wOSAxLjkzWk0yMC40NCA5LjgxbDIgMS4xN2EyLjA2IDIuMDYgMCAwIDEgMS4xMyAxLjg1djcuODFjLS4xOCAxLjExLS40NyAxLjUzLTEuNDcgMS40N00xOC4wNCA5Ljk0bC0xLjQ0LjkzIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMjEuNiAxOC41djUuMzRNMjEuNzcgMjAuNTNoLTUuMDgiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--about-us{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6LjhweH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNi4yOCAxOS40OGMtLjEyLjA4LS4wOC4wNy0uMjMuMS0uNTguMDktMS4xMi0uMjgtMS4yNS0uODQgMCAwLTIuMy05LjE4LTIuMy0xMS4xMUMyLjUgMy42IDUuODguNDQgMTAuMzguNDRTMTcuNSAzLjQ4IDE3LjUgNy41YzAgMS45My0xLjMyIDExLjIzLTEuMzIgMTEuMjMtLjEzLjU2LS42Ny45NC0xLjI1Ljg0LS4xMi0uMDItLjEzIDAtLjIzLS4wNyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1Ljc1IDE1Ljc1Yy0uMTcgMS4xNS0uMjIgMi4zNC0uNTUgMy40Ni0uMzcuODUtMS42MyAxLjA2LTIuMjIuMzMtLjI1LS4yOC4xOS0uNjguNDQtLjQuNDMuNDYgMS4yNC4xOCAxLjMxLS40NGwuMDYtLjM0Yy4xOS0uODkuMzUtMS43OS41Ny0yLjY4LjA1LS4yNC40Mi0uMTcuMzkuMDciLz48cGF0aCBkPSJNMTEuNSA3YzAgMS45LTEuNTYgMy41LTMuNDYgMy41UzQuNSA4LjkgNC41IDdzMS42NC0zLjUgMy41NC0zLjVTMTEuNSA1LjEgMTEuNSA3IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNOC41NSA0Ljc1Yy0uNTkuMTItLjcxIDEuNDItLjM2IDEuNzguMjMuMjMuNzEuMzEuNzEuNDdzLS40OC4yNC0uNzEuNDdjLS4zNi4zNi0uMjQgMS42Ni4zNiAxLjc4LjcxLjE0IDEuNzgtLjcxIDEuNzgtMi4yNVM5LjI2IDQuNjEgOC41NSA0Ljc1TTYuNTEgMTIuMmMyLjEyLjMxIDQuMzQtLjIgNS42OC0xLjk2LjMyLS40MS45Ni4xMS42Mi41MS0uNzYuOS0xLjc4IDEuNjMtMi45MyAxLjk1LTEuMTQuMzMtMi4zMy4zMS0zLjQ2LjE2YS4zNC4zNCAwIDAgMS0uMjktLjM4Yy4wMi0uMTguMTktLjMxLjM3LS4yOVpNNy45NyAxOS41OWMtLjk5Ljk2LTIuMzYuMDgtMi4zNi0xLjE1LS4xMi0uOS0uMjctMS43OS0uMzctMi42OS0uMDEtLjExLjA3LS4yMS4xOC0uMjIuMS0uMDEuMTkuMDYuMjEuMTUuMjIuODguMzggMS43Ny41NiAyLjY2LjAxLjc4LjY4IDEuMzggMS4zNS44My4yNy0uMjcuNjkuMTYuNDIuNDNaIi8+PHBhdGggZD0iTTkuNzUgMTkuMjdjLS40Mi45LTEuOC45Ni0yLjMyLjExLS41LTEuMTMtLjMxLTIuNS0uNDctMy43MiAwLS4xMS4wOC0uMi4xOS0uMjEuMSAwIC4xOS4wNy4yMS4xNy4xNy45NS4yOCAxLjkxLjQyIDIuODcuMDEuNDUuMjMuNzQuNTcuODUuMzMuMS43MS0uMDUuODgtLjM2LjE4LS4zNC43MS0uMDUuNTIuMjlNMTQuMDMgMTUuNjZjLS4xNiAxLjIzLjAzIDIuNTctLjQ2IDMuNzItLjUyLjg2LTEuOTEuNzktMi4zMi0uMTEtLjE3LS4zNC4zNS0uNjEuNTMtLjI4LjQyLjcxIDEuNDguMzggMS40NS0uNDkuMTQtLjk2LjI1LTEuOTIuNDItMi44Ny4wNC0uMjQuNDEtLjIuNC4wNFoiLz48cGF0aCBkPSJNMTEuODUgMTUuNTRjLjAyLjc5LjAxIDEuNTguMDEgMi4zNy0uMDIuNDEuMDcuOS0uMTQgMS4yOS0uNDMgMS4wMi0yLjAxIDEuMDItMi40NSAwLS4yMS0uMzktLjEzLS44OS0uMTQtMS4yOSAwLS43OSAwLTEuNTguMDEtMi4zNyAwLS4xMS4xLS4yLjIxLS4xOS4xIDAgLjE4LjA4LjE5LjE4LjA3Ljc5LjEgMS41OC4xNSAyLjM3LjAzLjI3IDAgLjgyLjEzIDEuMDQuMTMuMjYuNC40My42OC40Mi40NiAwIC43OS0uNC43Ny0uODdsLjAzLS41OWMuMDQtLjc5LjA4LTEuNTguMTUtMi4zNy4wMi0uMjQuNC0uMjMuNC4wMSIvPjwvc3ZnPg==)}.scylla-icon--about-us-m{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNi4zOCAzMi40MyI+PHBhdGggZD0iTTYuNTUgMzEuNjRjLS4yLjEzLS40My4yMi0uNjkuMjZhMS44MSAxLjgxIDAgMCAxLTIuMDYtMS4zOVMuNDkgMTQuOTkuNDkgMTEuODJDLjUgNS4xOSA1Ljc3LjUgMTMuMTkuNXMxMi42OSA0LjY5IDEyLjY5IDExLjMyYzAgMy4xOC0zLjMxIDE4LjY5LTMuMzEgMTguNjlhMS44MSAxLjgxIDAgMCAxLTIuNjIgMS4yIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIvPjxwYXRoIGQ9Ik0yMS44NiAyNS4zNmMtLjI4IDEuOS0uMzcgMy44Ni0uOTEgNS43MS0uNjEgMS40MS0yLjY4IDEuNzUtMy42Ni41NS0uNDEtLjQ3LjMxLTEuMTEuNzMtLjY2LjcxLjc2IDIuMDQuMjkgMi4xNi0uNzMuMzItMS42Ni42NS0zLjMzIDEuMDQtNC45OC4wOS0uMzkuNy0uMjguNjUuMTFaIi8+PHBhdGggZD0iTTE0LjggMTAuNTdjMCAzLjEzLTIuNTMgNS42Ni01LjY2IDUuNjZzLTUuNDctMi41My01LjQ3LTUuNjYgMi4zNC01LjY2IDUuNDctNS42NiA1LjY2IDIuNTMgNS42NiA1LjY2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6LjlweCIvPjxwYXRoIGQ9Ik0xMC4zMSA2Ljg2Yy0uOTguMi0xLjE3IDIuMzQtLjU5IDIuOTMuMzguMzggMS4xNy41MSAxLjE3Ljc4cy0uNzkuNC0xLjE3Ljc4Yy0uNTkuNTktLjM5IDIuNzMuNTkgMi45MyAxLjE2LjIzIDIuOTMtMS4xNyAyLjkzLTMuNzFzLTEuNzYtMy45NC0yLjkzLTMuNzFNNi44MiAxOC41MWMzLjQ5Ljg5IDYuOTctLjUgOS41MS0yLjkzLjQ3LS40NCAxLjE2LjMxLjY4Ljc0LTEuMzggMS4yMy0yLjk4IDIuMjktNC43OSAyLjg3LTEuOC41OS0zLjc3LjU4LTUuNTguMTRhLjQyLjQyIDAgMCAxLS4zMS0uNWMuMDUtLjIyLjI4LS4zNi41LS4zMVoiLz48cGF0aCBkPSJNMTYuNzMgMTYuNjdjLS4xMi0uNDYtLjUxLS44My0uOTktLjgzLS43NS0uMDItLjU5LTEuMTcuMTQtLjk5LjgxLjE2IDEuNDMuODUgMS41IDEuNjYuMDguNC0uNTQuNTQtLjY1LjE1Wk05LjAzIDMxLjdjLTEuMjYgMS4zNi0zLjYyLjQ1LTMuOC0xLjM1bC0uMDktLjU1Yy0uMjEtMS40OC0uNDUtMi45NS0uNi00LjQ0LS4wMi0uMTguMTEtLjM0LjI5LS4zNi4xNy0uMDIuMzIuMDkuMzUuMjUuMzkgMS42My43MSAzLjI4IDEuMDMgNC45My4wOSAxLjAyIDEuMzggMS41NCAyLjEyLjgxLjQ1LS40NCAxLjE0LjI2LjY5LjdaIi8+PHBhdGggZD0iTTExLjk2IDMxLjE2Yy0xIDEuOTgtNC4wNCAxLjMtNC4yMS0uODgtLjE1LTEuNjktLjMtMy4zOC0uMzktNS4wNyAwLS4xOC4xMy0uMzQuMzEtLjM0LjE3IDAgLjMxLjExLjM0LjI3LjI4IDEuNjcuNSAzLjM1LjcyIDUuMDMuMDkgMS4yIDEuNzcgMS41OSAyLjM2LjUxLjMxLS41NiAxLjE2LS4wOS44Ny40N1pNMTkuMDMgMjUuMjFjLS4wOCAxLjY5LS4yNCAzLjM4LS4zOSA1LjA3LS4wNC4zNy0uMTcuNzUtLjM4IDEuMDYtLjg2IDEuNC0zLjExIDEuMzEtMy44My0uMTctLjMtLjU2LjU1LTEuMDMuODYtLjQ4LjU5IDEuMDggMi4yNy42OSAyLjM1LS41Mi4yMi0xLjY4LjQzLTMuMzYuNzItNS4wMy4wNi0uNC42OC0uMzMuNjUuMDdaIi8+PHBhdGggZD0iTTE1LjQzIDI1LjAyYy4wNCAxLjMxLjAyIDIuNjEuMDIgMy45MS0uMDMuNjcuMTEgMS40OC0uMjMgMi4xMy0uNzQgMS42OS0zLjI5IDEuNjktNC4wMyAwLS4zNC0uNjUtLjIxLTEuNDctLjI0LTIuMTMgMC0xLjMtLjAyLTIuNjEuMDItMy45MSAwLS4xOC4xNi0uMzIuMzQtLjMyLjE3IDAgLjMuMTQuMzIuMy4xMSAxLjMuMTcgMi42LjI0IDMuOTEuMDUuNDUgMCAxLjM1LjIxIDEuNzIuMjEuNDMuNjYuNzEgMS4xMi43LjQ2LjAyLjkxLS4yNyAxLjEyLS42OS4yMi0uMzYuMTYtMS4yOC4yMS0xLjcyLjA3LTEuMy4xMy0yLjYxLjI0LTMuOTEuMDItLjQuNjYtLjM4LjY2LjAyWiIvPjwvc3ZnPg==)}.scylla-icon--alternator{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMTcuNSAyLjkxYzAgMS4yOC0zLjY3IDIuNTktOCAyLjU5cy04LTEuMzEtOC0yLjU5UzUuMDkuNSA5LjQyLjVzOC4wOCAxLjEzIDguMDggMi40MU0xNy41IDcuNjZjMCAxLjI4LTMuNjMgMi44LTcuOTYgMi44UzEuNSA4LjkzIDEuNSA3LjY2TTE3LjUgMTIuNDdjMCAxLjI4LTMuNjcgMy4wMy04IDMuMDNzLTgtMS43NS04LTMuMDNNMTcuNSAxNy4yOWMwIDEuMjgtMy43NSAyLjMtOC4wOCAyLjNzLTcuOTItMS4wMy03LjkyLTIuM00xLjUgMTcuMTlWMi45MU0xNy41IDE3LjE5VjIuOTEiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--apps{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTS41IDEuNWgyMHYxNEguNXpNNy41IDE1Ljc0djIuODlNMTIuODMgMTUuNjN2Mi4zMk01LjUgMTguNWg5LjE0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMy42NCA1LjU2IDQuNTggMi45MS00LjU4IDIuOTJNOS4xIDEyLjA4aDQuMzIiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--architecture{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTIsLmNscy01e2ZpbGw6bm9uZTtzdHJva2U6Z3JheX0uY2xzLTF7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMiwuY2xzLTV7c3Ryb2tlLW1pdGVybGltaXQ6MTB9LmNscy0ye3N0cm9rZS13aWR0aDouOThweH0uY2xzLTV7c3Ryb2tlLXdpZHRoOi45OXB4fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0iTTEuOSAxMC4yN2ExMC44MyAxMC44MyAwIDAgMSA4LjczLTguMzhNMTAuNTEgMjMuMDhBMTAuNzkgMTAuNzkgMCAwIDEgMS43NyAxNE0yMy4yMyAxNGExMC44MSAxMC44MSAwIDAgMS05IDkuMTFNMTQuMjcgMS44OGExMC44MSAxMC44MSAwIDAgMSA4LjgzIDguMzciIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjEyLjI1IiBjeT0iMS43NSIgcj0iMS43NSIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iMTIuMjUiIGN5PSIyMi43NSIgcj0iMS43NSIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iNC45MiIgY3k9IjQuNzUiIHI9IjEuNzUiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOi45OXB4Ii8+PGNpcmNsZSBjeD0iMjAuMDkiIGN5PSIxOS45MSIgcj0iMS43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk5cHgiLz48Y2lyY2xlIGN4PSIxLjc1IiBjeT0iMTIuMjUiIHI9IjEuNzUiIGNsYXNzPSJjbHMtNSIvPjxjaXJjbGUgY3g9IjIzLjI1IiBjeT0iMTIuMjUiIHI9IjEuNzUiIGNsYXNzPSJjbHMtNSIvPjxjaXJjbGUgY3g9IjQuNzUiIGN5PSIxOS42NCIgcj0iMS43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk5cHgiLz48Y2lyY2xlIGN4PSIxOS45MSIgY3k9IjQuNDgiIHI9IjEuNzUiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOi45OXB4Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--benchmarks{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDozcHh9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV8yIiBkYXRhLW5hbWU9IkNhbHF1ZSAyIj48cGF0aCBkPSJNNS41MSAyNC45MXYtNS44NU0xMi41NyAyNC45MXYtOS43NE0xOS42MiAyNC45MVYxMC4xNSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibS45MSAxNC45OCA1LjEzLTcuOTQgNi4yNSA1Ljg4TDI0IDEiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1saW5lY2FwOnJvdW5kIi8+PHBhdGggZD0ibTI1IDUtNS01aDV6IiBzdHlsZT0iZmlsbDpncmF5Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTkgMTUtMi41LTEuNSA4LTEyTDE3IDN6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNi41IDEzLjUtLjUgM0w5IDE1eiIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTkuMjUgMi41aDQuMjV2MTZoLTEzdjQuMTdMNi40NiAxOC41bC00Ljk2LS4wNFYyLjVoOC4zMU0xNC41IDIuNWwxLjY3IDEuMzMiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--careers{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTEuNSAxMS41NXY4YzAgLjU2IDEuMDcgMiAyIDJoMThjLjg5IDAgMi0xLjQ0IDItMnYtOCIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTIzLjMxIDMuNUgxLjgxYy0uNDggMC0xLjMxLjU1LTEuMzEgMXY2bDEwIDJhOC40NSA4LjQ1IDAgMCAwIDQgMGwxMC0ydi02YzAtLjQ1LS43Mi0xLTEuMTktMU0xNS42MiAzLjV2LTFjMC0uNzYtLjYxLTEtMS4zOC0xaC0zLjQ1Yy0uNzYgMC0xLjM4LjI0LTEuMzggMXYxIiBjbGFzcz0iY2xzLTEiLz48cmVjdCB3aWR0aD0iNSIgaGVpZ2h0PSIzLjk5IiB4PSIxMCIgeT0iMTEiIHJ4PSIuNTUiIHJ5PSIuNTUiIHN0eWxlPSJmaWxsOmdyYXkiLz48L3N2Zz4=)}.scylla-icon--chevron-left{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTguMDkyIDE2IDEwIDE0LjExMyAzLjgxNyA4IDEwIDEuODg3IDguMDkyIDAgMCA4eiIvPjwvc3ZnPg==)}.contents.local>ul>li a:before,.scylla-icon--chevron-right{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTEuOTA4IDAgMCAxLjg4NyA2LjE4MyA4IDAgMTQuMTEzIDEuOTA4IDE2IDEwIDh6Ii8+PC9zdmc+)}.scylla-icon--circe{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzOCAzMCI+PGRlZnM+PHN0eWxlPi5jbHMtMiwuY2xzLTN7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH0uY2xzLTN7c3Ryb2tlLXdpZHRoOjEuMTFweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik0yMi4xIDEyaC02LjE2YTEuMDYgMS4wNiAwIDAgMS0uOTQtMS4wNy45My45MyAwIDAgMSAuOTQtLjkzaDYuMTZhLjkzLjkzIDAgMCAxIC45NC45M0ExLjA2IDEuMDYgMCAwIDEgMjIuMSAxMiIgc3R5bGU9ImZpbGw6IzRkNGQ0ZCIvPjxwYXRoIGQ9Ik0xMy40NCA0LjQ5SDkuNTF2MjRoMTl2LTI0SDI0LjUiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0xMyAzLjQ5SDguNWwtLjA4IDI2LjFIMjkuNVYzLjM5SDI1IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNMTIuNSAxOC4zOGgxM00xMi41IDE1LjQ5aDEzTTEyLjUgMjEuNDNoMTNNMTIuNSAyNC40N2gxM00xMy41IDIuNWgxMXYzLjk4aC0xMXoiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0yMS41LjVoLTUuMDR2MS45NWw1LjA0LjA1eiIgY2xhc3M9ImNscy0zIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--clock{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PGNpcmNsZSBjeD0iMTAuNSIgY3k9IjkuNSIgcj0iOSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTEwLjUgMy41djZsMy4wNiAzIiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNCIgaGVpZ2h0PSIzNCIgZmlsbD0ibm9uZSI+PGcgZmlsbD0iI2ZmZiIgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBkPSJNMTEuNjcgMjIuMTNhLjU2NC41NjQgMCAwIDEtLjM5OC0uOTYybDkuODk2LTkuODk2YS41NjMuNTYzIDAgMSAxIC43OTcuNzk3bC05Ljg5NiA5Ljg5NmEuNTYuNTYgMCAwIDEtLjM5OS4xNjUiLz48cGF0aCBkPSJNMjEuNTY2IDIyLjEzYS41Ni41NiAwIDAgMS0uMzk4LS4xNjVsLTkuODk2LTkuODk2YS41NjMuNTYzIDAgMSAxIC43OTctLjc5N2w5Ljg5NiA5Ljg5NWEuNTY0LjU2NCAwIDAgMS0uMzk5Ljk2MyIvPjxwYXRoIGQ9Ik0xNi42MTkgMzMuMjM3QzcuNDU1IDMzLjIzNyAwIDI1Ljc4MiAwIDE2LjYxOVM3LjQ1NSAwIDE2LjYxOSAwczE2LjYxOSA3LjQ1NSAxNi42MTkgMTYuNjE5LTcuNDU2IDE2LjYxOC0xNi42MiAxNi42MThtMC0zMi4xMWMtOC41NDIgMC0xNS40OTIgNi45NS0xNS40OTIgMTUuNDkyUzguMDc3IDMyLjExIDE2LjYxOSAzMi4xMSAzMi4xMSAyNS4xNiAzMi4xMSAxNi42MTkgMjUuMTYgMS4xMjcgMTYuNjE5IDEuMTI3Ii8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgzMy4yMzd2MzMuMjM3SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+)}.scylla-icon--cloud{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8yIiB2aWV3Qm94PSIwIDAgNDMuMDQgMzIuMDMiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMWQxZDFiO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iTGF5ZXJfMyI+PHBhdGggZD0iTTQyLjU0IDQuMDZjMCAxLjY4LTMuNjMgMi40NC05IDIuNDRzLTEwLS43My0xMC0yLjRTMjcuNjcuNSAzMy4wNC41czkuNSAxLjg5IDkuNSAzLjU2TTQyLjU0IDkuNjNjMCAxLjY4LTMuNzYgMi45MS05LjEyIDIuOTFzLTkuODQtMS4yMy05Ljg0LTIuOTFNNDIuNTQgMTUuMzRjMCAxLjY4LTMuNjggMy4yNS05LjA0IDMuMjUtNCAwLTcuNi0uOTYtOS4wOS0yLjA0TTQyLjU0IDIwLjY1YzAgMS42OC0zLjcyIDIuOTctOS4wOCAyLjk3TTIzLjU0IDE1LjQ2VjQuMU00Mi41NCAyMC43N1Y0LjEiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0yOC4xMSAyMS4wOGMtLjg3IDAtMS42Ny4yMy0yLjM5LjYxIDAtLjA3LjAxLS4xNC4wMS0uMjEgMC00Ljg1LTMuODMtOC45LTguNjgtOC45cy04Ljg4IDQuMDUtOC44OCA4LjljMCAuMTcuMDIuMzQuMDMuNTEtLjg0LS41Ny0xLjg1LS45MS0yLjk1LS45MS0yLjg4IDAtNC43NCAyLjU3LTQuNzQgNS40NnMxLjg2IDQuOTkgNC43NCA0Ljk5aDIyLjg2YzIuODggMCA1LjUyLTIuMjcgNS41Mi01LjE2cy0yLjYzLTUuMjktNS41Mi01LjI5IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--cloud-docs{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTYuNSAxMS41aDh2MWgtOHpNMTUuNjUgNi41NWEzLjQyIDMuNDIgMCAwIDAtMy4xNSAyIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTAuMDYgMi44QTUuMTcgNS4xNyAwIDAgMSAxNSA2LjM1aC4yNGE0Ljg0IDQuODQgMCAwIDEgMCA5LjY3aC0xMWEzLjQ1IDMuNDUgMCAwIDEgMC02LjlBMy4yIDMuMiAwIDAgMSA1IDkuMiA1LjMgNS4zIDAgMCAxIDQuODYgOGE1LjIgNS4yIDAgMCAxIDUuMi01LjJtMC0uOGE2IDYgMCAwIDAtNiA2di4zMWE0LjI1IDQuMjUgMCAwIDAgLjE4IDguNDloMTFhNS42MyA1LjYzIDAgMCAwIC4zLTExLjI2QTYgNiAwIDAgMCAxMC4wNiAyIiBzdHlsZT0iZmlsbDojNGQ0ZDRkIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--comparison{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTIsLmNscy00e2ZpbGw6bm9uZTtzdHJva2U6Z3JheX0uY2xzLTEsLmNscy0ye3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMiwuY2xzLTR7c3Ryb2tlLWxpbmVjYXA6cm91bmR9LmNscy00e3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik00LjUgMTMuNjN2Mi44OGg2LjA2TTIwLjUgMTMuNTR2Mi45NmwtNS41LjAxIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTIuNSAxOC41djIuNzJNNy41IDIxLjVoMTAiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjEyLjUiIGN5PSIxNi41IiByPSIyIiBzdHlsZT0ic3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7ZmlsbDpncmF5O3N0cm9rZS13aWR0aDouOTVweCIvPjxwYXRoIGQ9Ik01LjA2IDEzLjU4SDMuODhBMy4xIDMuMSAwIDAgMSAuNSAxMC41aDhhMy4xNiAzLjE2IDAgMCAxLTMuNDQgMy4wOE0yMSAxMy41OGgtMS4xN2EzLjA5IDMuMDkgMCAwIDEtMy4zNy0zLjA3aDhBMy4xNiAzLjE2IDAgMCAxIDIxIDEzLjU4TTcuNDYgNS4xMmMwIC41Ny0xLjEuNDYtMi43OS40NlMxLjU4IDUuNiAxLjU4IDUgMyA0LjQgNC42OSA0LjRzMi43Ny4xNiAyLjc3LjcyTTEuNSA5Ljg1VjUuMzFNNy41IDEwLjM1VjUuODFNMjMuNSA1LjEyYzAgLjU3LTEuMS40Ni0yLjc5LjQ2cy0zLjA5IDAtMy4wOS0uNTRTMTkgNC40IDIwLjczIDQuNHMyLjc3LjE2IDIuNzcuNzJNMTcuNTQgOS44NVY1LjMxTTIzLjU0IDEwLjM1VjUuODEiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.scylla-icon--contact-us{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDZweH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJtNi4yOTggMTAuMTggMTMuODMtNy4xOTcgNC42NzYgOC45ODYtMTMuODMgNy4xOTd6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNi4zIDEwLjE4IDguNjMgMS41NmExLjQyIDEuNDIgMCAwIDAgMS41My0uNzRsMy42Ny04TTExLjAyIDE5LjAzbDEuNzQtNU0yNC41OSAxMS45N2wtNS4wOS0xLjQ1TTcuMDkgMTcuNTggMy45IDE5LjM0TTYuMDYgMTUuNDEuNTQgMTguMzYiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--developers-blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJtNi40OCAxMC41OS0uNS4xNy41LjE2TDExIDEyLjE2VjE0bC03LTIuNDlWMTBsNy0yLjV2MS44M1pNMTQgOS4zMlY3LjVsNyAyLjV2MS41NEwxNCAxNHYtMS44M2w0LjE0LTEuMy40NC0uMTMtLjQzLS4xNFoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0xLjUgMi41aDIydjE2aC0xM3Y0LjE3TDYuNDYgMTguNWwtNC45Ni0uMDR6IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6Ljk4cHgiLz48L2c+PC9zdmc+)}.scylla-icon--docs{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNMy41IDIuNTFoMTYuOTR2MjAuOTFIMy41eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTIyLjQ1IDIxLjUuMDUtMjFoLTE3YTIuMTYgMi4xNiAwIDAgMC0yIDIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik02IDZoN3YySDZ6TTYgOWgxMXYySDZ6IiBjbGFzcz0iY2xzLTIiLz48L2c+PC9zdmc+)}.scylla-icon--enterprise{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTEsLmNscy0ye2ZpbGw6bm9uZTtzdHJva2U6IzAwMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye3N0cm9rZS13aWR0aDoxLjA3cHh9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0ibTEzLjYyIDcuNSAxLjg4LTEuMDggMiAyLjA4djdoMU0xNS41IDE1LjV2LTUiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik01LjUgMTUuNXYtMTJsNC0yIDQgMnYxMk05LjUgMTUuNVYxLjZNNy41IDUuNXYxME0xMS41IDUuNXYxMCIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTUuNSA4LjU0IDMuNDYgNy41bC0xLjk2Ljk2djcuMDRoLTFNMy41IDEwLjV2NU0uNSAxNy41aDE4IiBjbGFzcz0iY2xzLTEiLz48L3N2Zz4=)}.scylla-icon--enterprise-m{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIGlkPSJMYXllcl8yXzAwMDAwMDE2NzY4MDY2MDE5MjYzMjMyNzcwMDAwMDA1NDc1ODA5NTExODI4NjY2MDM2XyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQzIDMxIj48c3R5bGU+LnN0MHtmaWxsOm5vbmU7c3Ryb2tlOiMxZDFkMWI7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PGcgaWQ9IkxheWVyXzMiPjxwYXRoIGQ9Im0yOS42IDkuNSA0LTIgNi45IDQuMXYxNS45aDJNMzMuNiAyNy41VjcuNk0xNC42IDI3LjVWNC44TDIyLjUuNSAyOS42IDV2MjIuNU0yMi41IDI3LjVWMU0yNC41IDUuNmwzIDJNMjQuNSA5LjZsMyAyTTI0LjUgMTMuNmwzIDJNMjQuNSAxNy41bDMgMk0yNC41IDIxLjVsMyAyTTM1LjQgMTEuNmwzIDJNMzUuNCAxNS42bDMgMS45TTM1LjQgMTkuNWwzIDJNMzUuNCAyMy41bDMgMS45TTE4LjUgNS44djIxLjdNMTQuNiA5LjdsLTQuMS0yLjUtOCA0LjR2MTUuOWgtMk0xMC41IDI3LjVWNy4yTTEyLjUgMTEuNmwyIDFNMTIuNSAxNS42bDIgLjlNMTIuNSAxOS41bDIgMU0xMi41IDIzLjVsMi4xIDFNNi40IDEyLjR2MTUuMU0uNSAzMC41aDQyIiBjbGFzcz0ic3QwIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--events{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye2ZpbGw6Z3JheX08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMjIuNSAyMy41aC0yMXYtMjBoMjJ2MTUuMjEiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik00LjQyIDMuNWMwLTEuMzYgMS4wOS0yIDIuNDUtMmEyLjQ2IDIuNDYgMCAxIDEgMCA0LjkxIDIuNiAyLjYgMCAwIDEtMS0uMjFNMTAuNjcgMy41YzAtMS4zNiAxLjEtMiAyLjQ2LTJhMi40NiAyLjQ2IDAgMCAxIDAgNC45MSAyLjYgMi42IDAgMCAxLTEtLjIxTTE2LjkzIDMuNWMwLTEuMzYgMS4xLTIgMi40NS0yYTIuNDYgMi40NiAwIDEgMSAwIDQuOTEgMi41IDIuNSAwIDAgMS0xLS4yMSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTcgOWgzdjNIN3pNMTIgOWgzdjNoLTN6TTE3IDloM3YzaC0zek03IDE0aDN2M0g3ek0xMiAxNGgzdjNoLTN6TTE3IDE0aDN2M2gtM3oiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0zLjUgMy42N3YxNi42Nk0zLjUgMjAuNDNjMCAxLjI5LjQ0IDIuMzMgMS43MyAyLjMzczIuMzMtMS45IDIuMzMtMy4xOWwxNi45NC0uMDdjMCAxLjI5LS41NSAzLjEyLTEuODMgMy4xMkg2LjMiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--exclamation{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PG1hc2sgaWQ9ImEiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiIgeD0iMSIgeT0iMSIgbWFzay10eXBlPSJhbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEyIDIzQzUuOSAyMyAxIDE4LjEgMSAxMlM1LjkgMSAxMiAxczExIDQuOSAxMSAxMS00LjkgMTEtMTEgMTFtMC0yMGMtNSAwLTkgNC05IDlzNCA5IDkgOSA5LTQgOS05LTQtOS05LTkiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTIgMTNjLS42IDAtMS0uNC0xLTFWOGMwLS42LjQtMSAxLTFzMSAuNCAxIDF2NGMwIC42LS40IDEtMSAxTTEyIDE3Yy0uMyAwLS41LS4xLS43LS4zcy0uMy0uNC0uMy0uN2MwLS4xIDAtLjMuMS0uNHMuMS0uMi4yLS4zYy4zLS4zLjctLjQgMS4xLS4yLjEgMCAuMSAwIC4yLjEgMCAwIC4xLjEuMi4xLjEuMS4yLjIuMi4zdi40YzAgLjEgMCAuMy0uMS40cy0uMS4yLS4yLjNjLS4yLjItLjQuMy0uNy4zIi8+PC9tYXNrPjxnIG1hc2s9InVybCgjYSkiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoMjR2MjRIMHoiLz48L2c+PC9zdmc+)}.scylla-icon--expand{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNi4wMDEiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik01IDEzYTEgMSAwIDAgMS0uNzEtLjI5bC00LTRhMSAxIDAgMCAxIDAtMS40MWw0LTRhMSAxIDAgMCAxIDEuNDIgMS40MUwyLjQxIDhsMy4yOSAzLjI5QTEgMSAwIDAgMSA1IDEzIi8+PHBhdGggZD0iTTExIDlIMWExIDEgMCAwIDEgMC0yaDEwYTEgMSAwIDAgMSAwIDJNMTUgMTZhMSAxIDAgMCAxLTEtMVYxYTEgMSAwIDAgMSAyIDB2MTRhMSAxIDAgMCAxLTEgMSIvPjwvc3ZnPg==)}.scylla-icon--forum{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItdXNlcnMiPjxwYXRoIGQ9Ik0xNyAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyIi8+PGNpcmNsZSBjeD0iOSIgY3k9IjciIHI9IjQiLz48cGF0aCBkPSJNMjMgMjF2LTJhNCA0IDAgMCAwLTMtMy44N00xNiAzLjEzYTQgNCAwIDAgMSAwIDcuNzUiLz48L3N2Zz4=)}.scylla-icon--help{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWhlbHAtY2lyY2xlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIvPjxwYXRoIGQ9Ik05LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgM00xMiAxN2guMDEiLz48L3N2Zz4=)}.scylla-icon--home{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl81IiBkYXRhLW5hbWU9IkxheWVyIDUiPjxwYXRoIGQ9Ik0zLjUgNi4xNHYxMWExLjM4IDEuMzggMCAwIDAgMS4zNyAxLjM2aDExLjI2YTEuMzggMS4zOCAwIDAgMCAxLjM3LTEuMzd2LTExIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMTkuNSA3LjUtOC02LjI1YTEuNTkgMS41OSAwIDAgMC0xLjk0IDBMMS41IDcuNU0xMi43MyAxOC4wMnYtNy4yMUg4LjI3djcuMjEiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--getting-started{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTcgNC41IDguNTEgNS4wNUw3IDE0LjV6IiBzdHlsZT0iZmlsbDojNGQ0ZDRkIi8+PHJlY3Qgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiB4PSIxLjUiIHk9Ii41IiByeD0iMi40MyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzRkNGQ0ZDtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjwvZz48L3N2Zz4=)}.scylla-icon--glossary{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIuNSAyLjVoMTN2MTZoLTEzeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1LjU4IDE3LjIxaDEuOTJWLjVoLTEzYTIuMzQgMi4zNCAwIDAgMC0yIDIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik00LjggMTMuOTNhMSAxIDAgMCAwIC43NS0uNDMgNiA2IDAgMCAwIC41Mi0xLjA4bDIuODctNy4wN2guMzZsMi44OCA2Ljc5YTkgOSAwIDAgMCAuNzIgMS40Ny43Ni43NiAwIDAgMCAuNjguMzJ2LjMySDkuNHYtLjMyYTMuMiAzLjIgMCAwIDAgLjgzLS4xMWMuMTMtLjA2LjItLjE5LjItLjQyYTEuNiAxLjYgMCAwIDAtLjEtLjQ2YzAtLjEyLS4xLS4yNy0uMTctLjQ0bC0uMzMtLjc4aC0yLjljLS4xOS41MS0uMzEuODUtLjM2IDFhMi40IDIuNCAwIDAgMC0uMTcuNzNjMCAuMTguMTIuMzIuMzcuNGEyLjYgMi42IDAgMCAwIC42Ni4wOHYuMzJINC44Wm00Ljg0LTIuNzItMS4yNC0zaC0uMTFsLTEuMTYgM1oiIHN0eWxlPSJmaWxsOiM0ZDRkNGQiLz48L2c+PC9zdmc+)}.scylla-icon--infoworld{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTB9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNMTIgMi41SDYuNVY2YzAgMyAuNTUgNy4xNyA1IDkuNXY0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNi40IDQuNDRoLTRTMi41NiAxMSA4LjUgMTNNMTguNSA0LjVsNC0uMDZzLS4wNiA2LjU2LTYgOC41NiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTEyIDIuNWg2LjVWNmMwIDIuOTQtLjQgNy4wOC01IDkuNXY0TTkuNSAxOS41aDZ2MmgtNnoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik03LjUgMjEuNWgxMHYxaC0xMHoiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXkiLz48L2c+PC9zdmc+)}.scylla-icon--integrations{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTE0LjU2IDEyLjctMS4yNS0xLjU3LTEuMzEuNzZhNiA2IDAgMCAwLTEuNjUtMWwuMDgtMS40OS0yLS40LS41MyAxLjQ0YTUuNyA1LjcgMCAwIDAtMS44Ny4zMWwtLjg4LTEuMTktMS43NyAxTDMuOTIgMTJhNi4zIDYuMyAwIDAgMC0xLjIyIDEuNDFsLTEuNS0uMzUtLjc0IDEuODcgMS4zOC44YTYuMiA2LjIgMCAwIDAgMCAxLjgzbC0xLjQxLjcyLjY0IDEuOTEgMS41OS0uMjhhOCA4IDAgMCAwIC40OC42OCA2IDYgMCAwIDAgLjY3LjczbC0uNjIgMS40NiAxLjcyIDEgMS0xLjI0YTYuNSA2LjUgMCAwIDAgMS43OS4zNWwuNDYgMS41MiAyLS4zdi0xLjZhNi40IDYuNCAwIDAgMCAxLjYyLS44OWwxLjMuODVMMTQuNDMgMjFsLTEtMS4yYTYuMiA2LjIgMCAwIDAgLjY4LTEuNzVsMS41MS0uMTkuMDUtMi0xLjUxLS4yNmE2IDYgMCAwIDAtLjYyLTEuODFabS01LjM1IDUuNTFhMS45MyAxLjkzIDAgMSAxIC4zMS0yLjcxIDEuOTIgMS45MiAwIDAgMS0uMzEgMi43MSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTI0LjMxIDguMDUtLjEzLTEuNjUtMS4yNS0uMDlhNS4zIDUuMyAwIDAgMC0uNjctMS40NGwuNzUtMS0xLjE2LTEuMTctMSAuNzRhNS4yIDUuMiAwIDAgMC0xLjQzLS42NmwtLjA2LTEuMjQtMS42NS0uMTctLjMyIDEuMjVhNS44IDUuOCAwIDAgMC0xLjUyLjM4TDE1IDIuMWwtMS4zNy45LjU4IDEuMThhNC45IDQuOSAwIDAgMC0uODYgMS4yNWwtMS4zLS4xNi0uNDUgMS42IDEuMjIuNTVhNSA1IDAgMCAwIDAgLjY4QTQuMyA0LjMgMCAwIDAgMTMgOWwtMS4xMS43Mi42OSAxLjUxIDEuMjgtLjM3YTUgNSAwIDAgMCAxLjA3IDEuMDdsLS4zOSAxLjI2IDEuNS43MS43NC0xLjA5YTUgNSAwIDAgMCAxLjUyLjE0bC41IDEuMTkgMS42MS0uNDEtLjEzLTEuMjlhNS4xIDUuMSAwIDAgMCAxLjI3LS44OGwxLjEyLjU3IDEtMS4zNS0uOTEtLjg4YTQuOSA0LjkgMCAwIDAgLjQyLTEuNTJabS02LjIgMS40M2ExLjc0IDEuNzQgMCAxIDEgMS42LTEuODYgMS43NCAxLjc0IDAgMCAxLTEuNiAxLjg2IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--knowledge-base{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkfS5jbHMtMXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye3N0cm9rZS1taXRlcmxpbWl0OjEwfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl81IiBkYXRhLW5hbWU9IkxheWVyIDUiPjxwYXRoIGQ9Ik0xNi4yMSA2LjM4YTUuMzYgNS4zNiAwIDAgMS0xLjUxIDMuNzMgNSA1IDAgMCAwLTEuNDUgMy4zMUg4LjQ3YTUuNCA1LjQgMCAwIDAtMS4yOC0zLjExIDUuMzcgNS4zNyAwIDEgMSA5LTMuOTNaTTEzLjIzIDE1LjY3SDguNDUiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0xMy4yNCAxMy40aC00Ljh2NC4xNmEuNy43IDAgMCAwIC43MS43aDMuMzhhLjcuNyAwIDAgMCAuNzEtLjdaIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTAuODQgOC4yMWExLjY1IDEuNjUgMCAxIDEgMS42NC0xLjY1IDEuNjUgMS42NSAwIDAgMS0xLjY0IDEuNjVaTTEwLjg0IDguNjd2NC42NCIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--less{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNyIgZmlsbD0ibm9uZSI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiBmaWxsPSIjYjNiYWM1IiByeD0iMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMyA4LjVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMSAwLTJoN2ExIDEgMCAwIDEgMSAxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEzIDguNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxIDAtMmg3YTEgMSAwIDAgMSAxIDEiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTMgOC41YTEgMSAwIDAgMS0xIDFINWExIDEgMCAwIDEgMC0yaDdhMSAxIDAgMCAxIDEgMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMyA4LjVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMSAwLTJoN2ExIDEgMCAwIDEgMSAxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEzIDguNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxIDAtMmg3YTEgMSAwIDAgMSAxIDEiLz48L3N2Zz4=);filter:none}.scylla-icon--live-test{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtNntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWxpbmVjYXA6cm91bmR9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTUiIHI9IjkuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MS41cHgiLz48cGF0aCBkPSJNMTAgLjVoNXYyaC01eiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMXB4Ii8+PHBhdGggZD0iTTUuOCA4LjIgNC4xMyA2LjUzbDEuOC0xLjgxTDcuNiA2LjQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjExcHgiLz48cGF0aCBkPSJNMTIgNlYyLjUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjEuMTNweCIvPjxwYXRoIGQ9Ik0xMyA2VjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MS4wOHB4Ii8+PHBhdGggZD0iTTEyLjUgOC4wNlYxME0xMi41IDIwLjA0djEuODhNNy4xMyAxMC4wOGwxLjc5IDEuODhNMTYuMDQgMTcuMDhsMiAxLjg4TTcgMTguOTJsMS44OC0xLjg4TTE2LjEzIDExLjk2bDEuNzktMS44MyIgY2xhc3M9ImNscy02Ii8+PGVsbGlwc2UgY3g9IjEyLjUiIGN5PSIxNC4zNiIgcng9IjEuNSIgcnk9IjEuMzYiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJtMTIuNjMgMTQuNTQgMi41IDYuMzgiIGNsYXNzPSJjbHMtNiIvPjwvZz48L3N2Zz4=)}.scylla-icon--mail-list{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItbWFpbCI+PHBhdGggZD0iTTQgNGgxNmMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTIiLz48cGF0aCBkPSJtMjIgNi0xMCA3TDIgNiIvPjwvc3ZnPg==)}.scylla-icon--manager{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtM3tmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOTdweH0uY2xzLTR7ZmlsbDpncmF5fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGlkPSJDYWxxdWVfMiIgZD0iTTE4IDJoNXYyMkgzVjJoNC45MiIgZGF0YS1uYW1lPSJDYWxxdWUgMiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiLz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik04IDBoMTB2NEg4eiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDdweCIvPjxwYXRoIGQ9Ik03IDloM3YzSDd6TTcgMTZoM3YzSDd6IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNMTIuNSA5LjVoN3YyaC03ek0xMi41IDE2LjVoN3YyaC03eiIgY2xhc3M9ImNscy00Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--memory-management{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH0uY2xzLTJ7c3Ryb2tlLXdpZHRoOjEuMTNweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxyZWN0IHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgeD0iNS41IiB5PSI1LjUiIGNsYXNzPSJjbHMtMSIgcng9IjIuNzQiIHJ5PSIyLjc0Ii8+PHBhdGggZD0iTTkuNSA5LjVoN3Y3aC03eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTguNSA1LjV2LTRNMTEuNSA1LjV2LTRNMTQuNSA1LjV2LTRNMTcuNSA1LjV2LTRNOC41IDI0LjV2LTRNMTEuNSAyNC41di00TTE0LjUgMjQuNXYtNE0xNy41IDI0LjV2LTRNMjAuNSA4LjVoNE0yMC41IDExLjVoNE0yMC41IDE0LjVoNE0yMC41IDE3LjVoNE0xLjUgOC41aDRNMS41IDExLjVoNE0xLjUgMTQuNWg0TTEuNSAxNy41aDQiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--monitoring{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTUuNTUgMTAuODlhMy44MyAzLjgzIDAgMCAxLS4xNS0zLjc2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIvPjxyZWN0IHdpZHRoPSIzLjA1IiBoZWlnaHQ9IjEwLjgiIHg9IjE3LjYzIiB5PSIxNC4wMSIgcng9Ii41NyIgcnk9Ii41NyIgc3R5bGU9InN0cm9rZTpncmF5O2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk1cHg7c3Ryb2tlLW1pdGVybGltaXQ6MTAiIHRyYW5zZm9ybT0icm90YXRlKC00NSAxOS4xNTggMTkuNDA1KSIvPjxjaXJjbGUgY3g9IjguNSIgY3k9IjkiIHI9IjciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjJweCIvPjxwYXRoIGQ9Im0xNi4wNSAxNi4zOS0yLjI4LTIuMjgiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48L2c+PC9zdmc+)}.scylla-icon--networking{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTB9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTIuNSIgcj0iNCIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6Ljk0cHgiLz48Y2lyY2xlIGN4PSI1IiBjeT0iMyIgcj0iMi41IiBjbGFzcz0iY2xzLTIiLz48Y2lyY2xlIGN4PSIxOSIgY3k9IjIwIiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjIyIiBjeT0iNi42IiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjQuNSIgY3k9IjIyIiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Im02LjgzIDUuNSAzLjI1IDQuMzNNMjAuMjMgNy44NSAxNS4zMyAxMU05LjgzIDE1LjA4bC00LjA5IDUuODRNMTQuNTggMTUuMzNsMyAzLjA5IiBjbGFzcz0iY2xzLTIiLz48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTIuNSIgcj0iMS41IiBzdHlsZT0iZmlsbDpncmF5Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--news{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTMgMTUuMTcgMTYuMzEgMy44MmExLjQ4IDEuNDggMCAwIDEgMi4yMi40Nmw1LjE1IDkuNjVhMS40NiAxLjQ2IDAgMCAxLS45MyAyLjEyTDUuNjkgMTkuOVpNOC43MSAxOS4zM2wuNzYgMi4yMmExLjUxIDEuNTEgMCAwIDAgMS44NSAxbDMuNTgtMS4wNmExLjUgMS41IDAgMCAwIDEtMS44NkwxNS40NSAxOE01LjU0IDIwbC0xLjgzIDFhLjkyLjkyIDAgMCAxLTEuMjUtLjM3TC42MSAxNy40OUEuOTIuOTIgMCAwIDEgMSAxNi4yNGwxLjgzLTFNOC41IDE0bDcuMzgtNS41IiBjbGFzcz0iY2xzLTEiLz48L3N2Zz4=)}.scylla-icon--newsletter{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMntzdHJva2UtbGluZWNhcDpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik0xOS41IDkuNWgzdjEyaC0yMHYtMTJoMyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTIuNjUgOS44NCA5Ljg1IDYuODggOC42My02Ljg4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNS41IDcuNS0zIDJNMTQuMzUgMy44NmwtMS40Ni0xLjA5LTEuNDcgMS4wOU0yMS41IDkuNWwtMi0yTTE5LjUgMTEuNXYtN2gtMTR2Ny40NyIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--nsql-guides{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHJlY3Qgd2lkdGg9IjEuMTUiIGhlaWdodD0iOS43MiIgeD0iNC4zNyIgeT0iMTMuNzEiIHJ4PSIuNTQiIHJ5PSIuNTQiIHN0eWxlPSJmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOjEuMDlweDtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIgdHJhbnNmb3JtPSJyb3RhdGUoNDUgNC45NDggMTguNTcpIi8+PGNpcmNsZSBjeD0iMTIuMjUiIGN5PSIxMi4yNSIgcj0iNC43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MS41cHgiLz48cGF0aCBkPSJNOC41IDIwLjV2M2gxNXYtMjFoLTE1djIiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOm5vbmU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDZweCIvPjwvZz48L3N2Zz4=)}.scylla-icon--open-source{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNLjMxIDIxLjUxIDUgMTkuNjlhMi4zNyAyLjM3IDAgMCAxIDEuODguMTlsNS4yNCAxLjY4YTIuMjMgMi4yMyAwIDAgMCAyLS4xMmw5LjUtNC43NWMuOC0uNDQgMS42NC0xLjMxIDEuMTMtMS45MWEyLjM0IDIuMzQgMCAwIDAtMi42NC0uNDJMMTggMTYuMDkiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Im0uMjUgMTUuNjkgNC44OC0xLjIxYzEuMjUtLjMgMi4xNy0uNjMgMy40NC0uMTNhMTUuMiAxNS4yIDAgMCAwIDQgMS4xaDQuNTJjLjg1IDAgLjk1LjU0Ljk1IDEuMTNhMSAxIDAgMCAxLTEuMDggMSA2NiA2NiAwIDAgMS03LS4zMSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTguNTYgOS42OHYtLjgxYzAtLjkxLS4zOC0xLjIxLTEuMjktMS4yMUg3VjYuM2guMzFjLjkxIDAgMS4yOS0uMyAxLjI5LTEuMjF2LS44MWMwLTEuMi42Ni0xLjkyIDIuODItMi4zdjEuMTZjLTEuMjQuMzUtMS40My42OC0xLjQzIDEuNHYuODdBMS41MiAxLjUyIDAgMCAxIDguNzUgNyAxLjUyIDEuNTIgMCAwIDEgMTAgOC41NnYuODdjMCAuNzEuMTkgMSAxLjQzIDEuNFYxMmMtMi4yMS0uMzUtMi44Ny0xLjEyLTIuODctMi4zMk0xNy40MyA0LjN2LjgxYzAgLjkxLjM3IDEuMjEgMS4yOSAxLjIxSDE5djEuMzZoLS4zMWMtLjkyIDAtMS4yOS4zLTEuMjkgMS4yMXYuODFjMCAxLjItLjY1IDItMi44MSAyLjM1di0xLjJjMS4yNS0uMzYgMS40NC0uNjkgMS40NC0xLjR2LS44N0ExLjUzIDEuNTMgMCAwIDEgMTcuMjUgNyAxLjUzIDEuNTMgMCAwIDEgMTYgNS40M3YtLjg3YzAtLjcyLS4xOS0xLTEuNDQtMS40VjJjMi4yMi4zOCAyLjg3IDEuMSAyLjg3IDIuMyIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--operator{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjQuODEgMS4wMSAyOC4zMiAyNy42NCI+PHBhdGggZD0iTTMyLjUyIDE4cy0uMDkgMC0uMDktLjA1LS4wOCAwLS4xNyAwYTIuMiAyLjIgMCAwIDAtLjUxIDAgLjQ3LjQ3IDAgMCAxLS4yNi0uMDUgOS4zIDkuMyAwIDAgMS0xLjQ5LS4zMi41NC41NCAwIDAgMS0uMy0uMzFsLS4zNC0uMDhhMTEuMyAxMS4zIDAgMCAwLS4xOC0zLjc5IDExLjYgMTEuNiAwIDAgMC0xLjUtMy41MmwuMjYtLjI2YS42LjYgMCAwIDEgLjEzLS4zOSA3LjcgNy43IDAgMCAxIDEuMi0uODZsLjI2LS4xMy40Ny0uM3MuMDkgMCAuMTMtLjA4IDAtLjA1IDAtLjA5YS44NC44NCAwIDAgMCAuMTctMS4yLjc4Ljc4IDAgMCAwLS42LS4zIDEgMSAwIDAgMC0uNi4yMWMtLjA1LjA1LS4wOS4wOS0uMTMuMDlhMyAzIDAgMCAwLS4zNS4zOWMwIC4wOC0uMTMuMTMtLjE3LjE3YTUuNiA1LjYgMCAwIDEtMS4wNy45NC42LjYgMCAwIDEtLjI2LjA5LjI1LjI1IDAgMCAxLS4xNyAwaC0uMDVsLS4zNC4yMS0xLjA4LTFhMTEgMTEgMCAwIDAtNS42NS0yLjI3di0uMzRhLjYuNiAwIDAgMS0uMjItLjM0QTggOCAwIDAgMSAxOS42NiAzdi0uMjVjMC0uMDguMDUtLjM1LjA5LS41MnYtLjMxYS44Mi44MiAwIDAgMC0xLjQ2LS42Ljg2Ljg2IDAgMCAwLS4yNi42di4yMmExLjggMS44IDAgMCAwIC4wOS41MS42LjYgMCAwIDEgMCAuMjZWM2E5IDkgMCAwIDEgLjA4IDEuNDcuNi42IDAgMCAxLS4yMS4zNHYuNDNjLS40OCAwLTEgLjEzLTEuNDcuMjJhMTAuMTYgMTAuMTYgMCAwIDAtNS4yOCAzTDExIDguMjRoLS4xN2EuNy43IDAgMCAxLS4yNi0uMDkgOCA4IDAgMCAxLTEuMDctMWMwLS4wOC0uMTMtLjEzLS4xNy0uMTdzLS4yNS0uMi0uMzMtLjMzLS4wOCAwLS4xMy0uMDh2LS4wNWExIDEgMCAwIDAtLjYtLjIxLjY0LjY0IDAgMCAwLS42LjMuOTEuOTEgMCAwIDAgLjE3IDEuMnMwIC4wNSAwIC4wNS4wOS4wOC4xMy4wOGE1IDUgMCAwIDAgLjQ3LjI2bC4yNi4xM2E2LjYgNi42IDAgMCAxIDEuMjEuODYuNDcuNDcgMCAwIDEgLjEzLjM5di0uMDVsLjI1LjI2YTMgMyAwIDAgMS0uMTMuMjIgMTAuMiAxMC4yIDAgMCAwLTEuNSA3bC0uMzUuMDljMCAuMTMtLjE3LjIxLS4zLjNhOC42IDguNiAwIDAgMS0xLjQ2LjI2LjYuNiAwIDAgMC0uMjYgMGgtLjUyYy0uMTggMC0uMDguMDUtLjE3LjA1aC0uMDhhLjg0Ljg0IDAgMCAwLS42OSAxIC43OS43OSAwIDAgMCAuODYuNi40LjQgMCAwIDAgLjIxIDBoLjIyYTQgNCAwIDAgMCAuNDctLjE3LjY1LjY1IDAgMCAxIC4yNi0uMDggNy43IDcuNyAwIDAgMSAxLjQyLS4zOS41LjUgMCAwIDEgLjM1LjEzaC4zOWExMC4zIDEwLjMgMCAwIDAgMy41MyA1IDYuMyA2LjMgMCAwIDAgMS4xNi43N2wtLjIyLjNhLjUxLjUxIDAgMCAxIDAgLjQzIDYuNSA2LjUgMCAwIDEtLjY5IDEuMjR2LjA1YS44LjggMCAwIDEtLjE3LjIxYy0uMDkuMDktLjE3LjI2LS4zLjQzczAgLjA5LS4wOS4xMyAwIC4wNSAwIC4wNWEuODguODggMCAwIDAgLjM0IDEuMTYuOS45IDAgMCAwIC4zLjA4IDEgMSAwIDAgMCAuODItLjUxczAtLjA4LjA5LS4xMy4xMy0uMy4xNy0uNDdsLjA5LS4yNmE3IDcgMCAwIDEgLjU2LTEuMzMuNjIuNjIgMCAwIDEgLjM0LS4yNmwuMTctLjM1YTEwIDEwIDAgMCAwIDMuNzUuNjkgOC41IDguNSAwIDAgMCAyLjMyLS4zIDEyIDEyIDAgMCAwIDEuMzctLjM5bC4xOC4zMWEuNjIuNjIgMCAwIDEgLjM0LjI2IDcgNyAwIDAgMSAuNTYgMS4zM2wuMDkuMjZhMS4zIDEuMyAwIDAgMCAuMTcuNDdjMCAuMDUgMCAuMDkuMDkuMTNhMSAxIDAgMCAwIC44Mi41MSAxIDEgMCAwIDAgLjM0LS4wOC43Ni43NiAwIDAgMCAuMzktLjQ4IDEuMSAxLjEgMCAwIDAtLjA1LS42NC4yLjIgMCAwIDAtLjA4LS4xMyAxLjUgMS41IDAgMCAwLS4zMS0uNDMuNjUuNjUgMCAwIDAtLjE3LS4yMnYtLjA5YTUuMiA1LjIgMCAwIDEtLjY5LTEuMjQuNTEuNTEgMCAwIDEgLjA1LS40M2wtLjEzLS4zNEExMC42OCAxMC42OCAwIDAgMCAyOSAxOC44MmwuMzQuMDV2LS4wNWEuNTQuNTQgMCAwIDEgLjM1LS4xMyA4IDggMCAwIDEgMS4zOC4zOS42LjYgMCAwIDAgLjI2LjA5IDIuNCAyLjQgMCAwIDAgLjQ3LjIxcy4wOSAwIC4xNyAwaC4wOWEuNC40IDAgMCAwIC4yMSAwIC45NC45NCAwIDAgMCAuODYtLjYgMSAxIDAgMCAwLS43Ny0uOVptLTEyLjQzLTEuMzMtMS4xNi41Ni0xLjE2LS41Ni0uMy0xLjI1LjgxLTFoMS4yOWwuODIgMVptNy0yLjc5YTggOCAwIDAgMSAuMTcgMi43MWwtNC4xNS0uNzVjLS4zOC0uMDgtLjY4LS45LS43MS0xLjIyYTQgNCAwIDAgMSAuMjEtLjc0bDMuNDUtMi41NGE4LjYgOC42IDAgMCAxIDEuMDQgMi41NFptLTIuMzEtNC4xMy0zLjIyIDIuNjlhMS4yOCAxLjI4IDAgMCAxLTEuMjUtLjM3Yy0uMDktLjA5LS4zNy0uMjUtLjM3LS4zOFY3LjQzYTguMDcgOC4wNyAwIDAgMSA0Ljg2IDIuMzJaTTE3IDcuNTZsMS0uMTgtLjA2IDQuMzFjMCAuMzgtLjY0LjY4LTEgLjY4YTEuMSAxLjEgMCAwIDEtLjM1LS4wOEwxMyA5Ljc1YTguNCA4LjQgMCAwIDEgNC0yLjE5bS01LjI0IDMuNzggMy4zNyAyLjQ3LjMyLjUzYTEuMTQgMS4xNCAwIDAgMS0uMjUgMSAuNzguNzggMCAwIDEtLjM4LjMxbC00LjMxLjlhOSA5IDAgMCAxIDEuMjQtNS4yMVpNMTEgMTguNjFsNC4xLTEuMjNjLjM1IDAgLjg0LjcxLjg5IDEuMDZhLjUxLjUxIDAgMCAxLS4wNS40M2wtMS42MyAzLjk1QTguNCA4LjQgMCAwIDEgMTEgMTguNjFtOS43NiA1LjMzYTguNyA4LjcgMCAwIDEtMS44NS4yMSA5LjYgOS42IDAgMCAxLTIuNzEtLjQzbDEuNjYtNGMuMjEtLjI2IDEtLjIgMS4zMSAwYTIuNSAyLjUgMCAwIDEgLjM0LjNsMi4wNyAzLjc0YTYgNiAwIDAgMC0uOC4xOFpNMjYgMjAuMmE4LjQgOC40IDAgMCAxLTIuNTggMi41OGwtMS45Mi0zLjcyYTEuMTUgMS4xNSAwIDAgMSAuNDEtMWMuMjEtLjI1LjU5LS41OS43MS0uNTlsNC4yMiAxLjA2QTYuMyA2LjMgMCAwIDEgMjYgMjAuMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiIgc3R5bGU9ImZpbGw6IzRkNGQ0ZCIvPjwvc3ZnPg==)}.scylla-icon--overview{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIyLjYxIDMuNDVDMjIuNjEgNS4wNiAxOCA2LjUgMTIuNSA2LjVzLTEwLTEuNDQtMTAtMyA0LjUtMyAxMC0zIDEwLjExIDEuMzMgMTAuMTEgMi45NU0yMi42MSA5LjQ0YzAgMS42MS00LjY0IDMuMDYtMTAuMTEgMy4wNnMtMTAtMS40NS0xMC0zLjA2TTIyLjYxIDE1LjUxYzAgMS42Mi00LjY0IDMtMTAuMTEgM3MtMTAtMS4zNy0xMC0zTTIyLjYxIDIxLjU5YzAgMS42Mi00LjY0IDIuOTEtMTAuMTEgMi45MXMtMTAtMS4yOS0xMC0yLjkxTTIuNSAyMS40N1YzLjQ1TTIyLjUgMjEuNDdWMy40NSIgY2xhc3M9ImNscy0xIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--partners{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTE4LjUgOC4yNmgtNC43MmwtMS4yMyAxLjI3TTIuMzkgMTUuMDkuMTUgMTMuNzRsNC44Ny04LjQyIDIuMjQgMS4zNHpNMjIuNTkgMTUuMDlsMi4yNC0xLjM1LTQuODYtOC40Mi0yLjI0IDEuMzR6TTEwLjcxIDE1LjI2bC0yLjkzIDIuMjFNMTIuMTggMTYuNGwtMi45MyAyLjIxTTEzLjY4IDE3LjUzbC0yLjkzIDIuMjIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik02LjM4IDguM2gzLjc4YTIuMjcgMi4yNyAwIDAgMSAxLjM3LjQ3YzEuMjYgMSA0LjA5IDMuMTggNC40OCAzLjU2cy0xLjE0IDEuNjgtMi4yNyAxLjFhMTggMTggMCAwIDAtMi4xMS0uOTIuNTcuNTcgMCAwIDAtLjU2LjA5bC00Ljc5IDMuODlMMTIuMzMgMjFsOS40Ni03LjA5TTMuMjQgMTQuMjJsMy40IDEuODUiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--plus{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNyIgZmlsbD0ibm9uZSI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiBmaWxsPSIjYjNiYWM1IiByeD0iMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSA1YTEgMSAwIDEgMC0yIDB2Mi41SDVhMSAxIDAgMSAwIDAgMmgyLjVWMTJhMSAxIDAgMSAwIDIgMFY5LjVIMTJhMSAxIDAgMSAwIDAtMkg5LjV6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgNWExIDEgMCAxIDAtMiAwdjIuNUg1YTEgMSAwIDEgMCAwIDJoMi41VjEyYTEgMSAwIDEgMCAyIDBWOS41SDEyYTEgMSAwIDEgMCAwLTJIOS41eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS41IDVhMSAxIDAgMSAwLTIgMHYyLjVINWExIDEgMCAxIDAgMCAyaDIuNVYxMmExIDEgMCAxIDAgMiAwVjkuNUgxMmExIDEgMCAxIDAgMC0ySDkuNXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSA1YTEgMSAwIDEgMC0yIDB2Mi41SDVhMSAxIDAgMSAwIDAgMmgyLjVWMTJhMSAxIDAgMSAwIDIgMFY5LjVIMTJhMSAxIDAgMSAwIDAtMkg5LjV6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgNWExIDEgMCAxIDAtMiAwdjIuNUg1YTEgMSAwIDEgMCAwIDJoMi41VjEyYTEgMSAwIDEgMCAyIDBWOS41SDEyYTEgMSAwIDEgMCAwLTJIOS41eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+);filter:none}.scylla-icon--pricing{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0ibTIxLjczIDctMi40MS01LjEyYTIuNTIgMi41MiAwIDAgMC0yLjgyLTFsLTYuMDggMi4wNEExLjY5IDEuNjkgMCAwIDAgOS41MSA0TDMuOTMgMTkuMjlhMS4wNiAxLjA2IDAgMCAwIC42NCAxLjE3bDEwLjM0IDMuNzZhMSAxIDAgMCAwIDEuMjItLjQzbDUuNTgtMTUuMzNBMS44NyAxLjg3IDAgMCAwIDIxLjczIDciIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjE1LjczIiBjeT0iNS44OSIgcj0iMiIgY2xhc3M9ImNscy0xIi8+PHRleHQgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZpbGw6Z3JheTtmb250LWZhbWlseTpSb2JvdG8tTWVkaXVtLFJvYm90byIgdHJhbnNmb3JtPSJyb3RhdGUoMjAgLTQ4LjI0NCAzMC42NykiPiQ8L3RleHQ+PC9nPjwvc3ZnPg==)}.scylla-icon--release-note{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOTFweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzIiIGRhdGEtbmFtZT0iQ2FscXVlIDIiPjxwYXRoIGQ9Ik0yMS41IDI0LjVoLTE3VjUuN0w4Ljk1LjU0IDIxLjUuNXoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOXB4Ii8+PHBhdGggZD0iTTQuNjUgNS41SDkuNVYxTTcuNSA4LjVoMTFNNy41IDExLjVoMTFNNy41IDE0LjVoMTFNNy41IDE3LjVoMTFNNy41IDIwLjVoMTEiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--resource-center{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNNS41IDIuNWg2LjkxbC4wOSAyMGgtN3oiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik04IDRoMnYxMC45N0w4IDE1eiIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTUuMzYgMi4yOSAyLjUgMy41djE4bDIuNzkgMS4xNCIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTEyLjU3IDIxLjg2IDEuNTcuNzUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouNjhweCIvPjxwYXRoIGQ9Im0xNC4xMSAyLjUtMS41NC41NyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOi44NXB4Ii8+PGNpcmNsZSBjeD0iOSIgY3k9IjE5IiByPSIxIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJNMTQuNSAyLjVoNi45NGwuMDYgMjBoLTd6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTcgNGgydjEwLjk3TDE3IDE1eiIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOSIgcj0iMSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTEyLjYgMi43M2gxLjY3VjIyLjZIMTIuNnpNMi41OCAyMS41bDIuNzUgMS4xVjIuNzNsLTIuNjYuOTR6IiBjbGFzcz0iY2xzLTIiLz48L2c+PC9zdmc+)}.scylla-icon--roadmap{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5fS5jbHMtMXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOi45OHB4fS5jbHMtMntzdHJva2UtbWl0ZXJsaW1pdDoxMH0uY2xzLTN7ZmlsbDpncmF5fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibS41IDQuNSA4LTMgOCA0IDgtM3YxN2wtOCAzLTgtNC04IDN6TTguNSAxLjVWMThNMTYuNSA1LjVWMjIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0yLjUgMTMgNyAxNi41TTcgMTJsLTQuNSA1LjVNMTguNSA4bDQuNSAzLjVNMjMgN2wtNC41IDUuNSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTEwIDEzaDF2MWgtMXpNMTIgMTJoMXYxaC0xek0xNCAxMWgxdjFoLTF6IiBjbGFzcz0iY2xzLTMiLz48L2c+PC9zdmc+)}.scylla-icon--search{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTEwLjUgMThhNy41IDcuNSAwIDEgMCAwLTE1IDcuNSA3LjUgMCAwIDAgMCAxNU0yMSAyMWwtNS4yLTUuMiIvPjwvc3ZnPg==)}.scylla-icon--slack{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tISBGb250IEF3ZXNvbWUgUHJvIDYuMC4wIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIyIEZvbnRpY29ucywgSW5jLi0tPjxwYXRoIGQ9Ik05NC4xMiAzMTUuMWMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZTMCAzNDEgMCAzMTUuMXMyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNmg0Ny4wNnptMjMuNzIgMGMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ2MTE3Ljg0YzAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNnMtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZ6bTQ3LjA2LTE4OC45OGMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2UzEzOSAzMiAxNjQuOSAzMnM0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnY0Ny4wNnptMCAyMy43MmMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2SDQ3LjA2QzIxLjE2IDI0My45NiAwIDIyMi44IDAgMTk2LjlzMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZ6bTE4OC45OCA0Ny4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZTNDQ4IDE3MSA0NDggMTk2LjlzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2aC00Ny4wNnptLTIzLjcyIDBjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2cy00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlY3OS4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ6TTI4My4xIDM4NS44OGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZTMzA5IDQ4MCAyODMuMSA0ODBzLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2di00Ny4wNnptMC0yMy43MmMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2czIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDExNy44NGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2eiIvPjwvc3ZnPg==)}.scylla-icon--stack-overflow{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIzMSIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJtMjEuOTQ5LjExMyAyLjA0MyAxMS42Ny0yLjUxNC40MzJMMTkuNDM1LjU0NXptLTE3Ljk3MyAyNiAxMS45NDUtLjAwNS0uMDAyLTIuNTMtMTEuOTQ0LjAwNnptMTIuMjMyLTUuNzc3TDQuMzE1IDE5LjI1bC0uMjM1IDIuNTIgMTEuODk0IDEuMDg1em0tMTAuNzUtNi4zNzUgMTEuNTM1IDMuMDc0LS42NjIgMi40NDMtMTEuNTM1LTMuMDc1em0xMy4wNC4xOEw4LjIxMiA4LjEyNmwtMS4yOTcgMi4xNzggMTAuMjg5IDYuMDE3em0tNC4yMDYtMTEuNTYgNi43MyA5Ljc4Ny0yLjEwOCAxLjQyNC02LjczLTkuNzg1eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTE3Ljk1IDE3Ljc4OVYyOC4xM0gyLjI4MlYxNy43ODlILjI0M3YxMi4zMjZIMTkuOThWMTcuNzg5eiIvPjwvc3ZnPg==)}.scylla-icon--summit{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6IzRkNGQ0ZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0ibTE2LjUgMjIgMS02LjUtMTAgLjAzIDEgNi40MyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTMuNDYgMTJBNS42OSA1LjY5IDAgMCAxIDUgNy41IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MS4xcHgiLz48cGF0aCBkPSJNMTQuNjIgNWEyLjMzIDIuMzMgMCAwIDEtMi4yNSAyLjVjLTEuMzMgMC0yLTEuMTItMS45NS0yLjQ0cy43LTIuNSAyLTIuNDhBMi4yNyAyLjI3IDAgMCAxIDE0LjYyIDVNMTcuNTggMTJhMy4yMyAzLjIzIDAgMCAwLTMuNDYtMy41SDExQTMuMjYgMy4yNiAwIDAgMCA3LjUgMTIiIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjQuOTQiIGN5PSI2Ljk2IiByPSIxLjAxIiBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjFweDtmaWxsOiM0ZDRkNGQiLz48cGF0aCBkPSJNNy41NCAxOC41SDQuNWwtMi02aDIwbC0yIDZoLTMiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--support{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTE4LjE5IDcuNWExMCAxMCAwIDAgMSAuMjEgMi4wN2MwIDQuMzYtMi42MyA2LjkzLTUuOSA2Ljkzcy01Ljk0LTIuNTctNS45NC02LjkzYTEwLjUgMTAuNSAwIDAgMSAuMjItMi4xMiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTcuNjcgMi4yM0E2LjU4IDYuNTggMCAwIDEgMTIuNS41YTUuNjUgNS42NSAwIDAgMSA0LjI5IDEuN2MxLjkzIDEuOTQgMi4zNSA1LjA3IDIuNDMgNi43MmExLjUgMS41IDAgMCAwLS43OS4wNSA5IDkgMCAwIDAtLjA4LTEuMTZoMGE1LjUzIDUuNTMgMCAwIDEtMS43Ny0yLjM0TDE2LjQ5IDVsLS4zOC4yMkExOSAxOSAwIDAgMSA2LjggNy4zOGEuNTIuNTIgMCAwIDAtLjQyLjE2Yy0uMjMuMjQtLjE1LjY1LS4wNyAxLjA4IDAgLjExIDAgLjIyLjA1LjMyYTEuNCAxLjQgMCAwIDAtLjU4IDBjLS4xLTEuNDUtLjA2LTQuNjggMS44OS02LjcxTTYuMzggOWMtLjY1LS4wOC0xIC4xLTEuMTQuNzlhMi4wNiAyLjA2IDAgMCAwIDEuMzcgMi4yOU0xOC41NiA5Yy42NS0uMDggMS4wNS4xIDEuMTQuNzlhMi4wNiAyLjA2IDAgMCAxLTEuMzcgMi4yOU05LjUgMTguMjNWMTUuNU0xNS41IDE1LjV2Mi43M00yLjUgMjQuMTZjLjI0LTIgLjU5LTMuNjMgMi40My00LjQ5YTI0LjMgMjQuMyAwIDAgMSA0LjgyLTEuMzdNMjIuNSAyNC4zM2MtLjI0LTItLjQyLTMuOC0yLjI2LTQuNjZhMjQuMyAyNC4zIDAgMCAwLTQuODItMS4zNyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1LjM5IDE4LjM5YTQuMzcgNC4zNyAwIDAgMS0yLjkxIDEuMDcgNC40MiA0LjQyIDAgMCAxLTIuODktMS4wNSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTExIDEzaDN2MmgtM3oiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTguMDcgMTJhOS4yIDkuMiAwIDAgMS01LjUzIDIuMDciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48L2c+PC9zdmc+)}.scylla-icon--tech-talks{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTguMzkgNC41SDIzLjV2MTNoLTE1IiBjbGFzcz0iY2xzLTEiLz48Y2lyY2xlIGN4PSI0LjUiIGN5PSI2LjUiIHI9IjIiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNMS41IDkuNWgybC44Ljg2LjctLjg2aDUuNThhMSAxIDAgMSAxIDAgMkg2LjV2MTAuODhhMSAxIDAgMCAxLTEgMS4xMiAxIDEgMCAwIDEtMS0xIDEgMSAwIDAgMS0xIDEgLjkzLjkzIDAgMCAxLTEtMXYtNmMtLjc4IDAtMi0uNDctMi0xdi01YTEgMSAwIDAgMSAxLTEiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--testing{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTYuNSA2LjVoMTJ2MTJoLTEyeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTQuNSA0LjVoMTZ2MTZoLTE2eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTguNSAxMC41IDUgNSAxMS0xMiIgY2xhc3M9ImNscy0xIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--thumbs-up{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXRodW1icy11cCI+PHBhdGggZD0iTTE0IDlWNWEzIDMgMCAwIDAtMy0zbC00IDl2MTFoMTEuMjhhMiAyIDAgMCAwIDItMS43bDEuMzgtOWEyIDIgMCAwIDAtMi0yLjN6TTcgMjJINGEyIDIgMCAwIDEtMi0ydi03YTIgMiAwIDAgMSAyLTJoMyIvPjwvc3ZnPg==)}.scylla-icon--thumbs-down{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXRodW1icy1kb3duIj48cGF0aCBkPSJNMTAgMTV2NGEzIDMgMCAwIDAgMyAzbDQtOVYySDUuNzJhMiAyIDAgMCAwLTIgMS43bC0xLjM4IDlhMiAyIDAgMCAwIDIgMi4zem03LTEzaDIuNjdBMi4zMSAyLjMxIDAgMCAxIDIyIDR2N2EyLjMxIDIuMzEgMCAwIDEtMi4zMyAySDE3Ii8+PC9zdmc+)}.scylla-icon--tip{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEyIDI0QzUuNCAyNCAwIDE4LjYgMCAxMlM1LjQgMCAxMiAwczEyIDUuNCAxMiAxMi01LjQgMTItMTIgMTJtMC0yMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDIiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTEgMTZjLS4zIDAtLjUtLjEtLjctLjNsLTMtM2MtLjQtLjQtLjQtMSAwLTEuNHMxLS40IDEuNCAwbDMgM2MuNC40LjQgMSAwIDEuNC0uMi4yLS40LjMtLjcuMyIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMSAxNmMtLjMgMC0uNS0uMS0uNy0uMy0uNC0uNC0uNC0xIDAtMS40bDYtNmMuNC0uNCAxLS40IDEuNCAwcy40IDEgMCAxLjRsLTYgNmMtLjIuMi0uNC4zLS43LjMiLz48L3N2Zz4=)}.scylla-icon--training{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0iTTE3LjUgMTUuNUguNXYtMTNoMThNNS41IDI1bDQtNC4zIDQgNC4zIiBjbGFzcz0iY2xzLTEiLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjQiIHI9IjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjxwYXRoIGQ9Ik0yMy40MSA3LjVoLTEuNTJMMjEgOWwtLjktMS41SDEzQTEuOCAxLjggMCAwIDAgMTEuNSA5YTEuOCAxLjggMCAwIDAgMS41IDEuNWg0LjV2MTMuMjRBMS40MSAxLjQxIDAgMCAwIDE5IDI1YTEuNDIgMS40MiAwIDAgMCAxLjUtMS4yMiAxLjUzIDEuNTMgMCAwIDAgMyAwdi03LjExYTEuMTEgMS4xMSAwIDAgMCAxLjA5LTEuMThWOC42N2ExLjE4IDEuMTggMCAwIDAtMS4xOC0xLjE3TTkuNSAxNS40NHY1LjM4IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--triangle-down{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI1IiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSIjM2EyZDU1IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0wIDAgNSA1IDUtNXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==)}.scylla-icon--university{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTEuNSA4LjUgMTEtNCAxMSA0djNsLTExIDQtMTEtNHoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik01LjUgMTIuNXY1YTEyLjQ2IDEyLjQ2IDAgMCAwIDcgMiAxMS4yIDExLjIgMCAwIDAgNy0ydi01IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMTMuNSA5LjUgOCAxLjIzdjguNzdNMjIuNSAxNi41djMiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--users-blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIzLjUgMi41aC0yMnYxNmgxM3Y0LjE3bDQuMDQtNC4xNyA0Ljk2LS4wNHoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOThweCIvPjxwYXRoIGQ9Ik0xMC44NSA4QTEwLjQgMTAuNCAwIDAgMSAxMSA5LjVjMCAyLjQ3LTEuMjEgNC0zIDRzLTMuNS0yLTMuNS00LjVhNC4yIDQuMiAwIDAgMSAwLTEiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik01LjIgNS4wN2EzLjIyIDMuMjIgMCAwIDEgMi41LTEgMy4xNiAzLjE2IDAgMCAxIDIuNCAxIDYuMjIgNi4yMiAwIDAgMSAxLjMgMy44MS43NC43NCAwIDAgMC0uNDIgMGMwLS4yNCAwLS40NC0uMDUtLjY2aDBBMyAzIDAgMCAxIDEwIDYuOXYtLjI0bC0uMjEuMTJBOS42IDkuNiAwIDAgMSA0LjczIDhhLjI1LjI1IDAgMCAwLS4yMi4wOWMtLjEzLjE0LS4wOS4zNyAwIC42MXYuMThhLjkuOSAwIDAgMC0uMzIgMEE1LjM3IDUuMzcgMCAwIDEgNS4yIDUuMDdNNC41MSA4LjkzYy0uMzUgMC0uNTcuMDUtLjYxLjQ0YTEuMTcgMS4xNyAwIDAgMCAuNzMgMS4zTTExIDguOTNjLjM2IDAgLjU3LjA1LjYyLjQ0YTEuMTcgMS4xNyAwIDAgMS0uNzQgMS4zTTYuMzEgMTQuMTN2LS44NE05LjI1IDEzLjE5di45NE0yLjQyIDE4Yy4xMy0xLjE1LjU4LTIuNTIgMS41OC0zYTE1IDE1IDAgMCAxIDIuMzEtLjgyTTEzLjUgMThjLS4xMy0xLjE1LS41MS0yLjUyLTEuNS0zcy0yLjUtMS0yLjUtMSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTkuMzQgMTQuMjJhMi4yMyAyLjIzIDAgMCAxLTEuNTYuNjEgMi4zMiAyLjMyIDAgMCAxLTEuNTUtLjU5TTIxLjUgNi41aC03TTIxLjUgOS41aC03TTE4LjUgMTIuNWgtNCIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--warning{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PG1hc2sgaWQ9ImEiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMSIgeD0iMCIgeT0iMSIgbWFzay10eXBlPSJhbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZmlsbD0iIzA2MTkzOCIgZD0iTTMuNSAyMmMtLjUgMC0xLS4xLTEuNS0uNEMuNiAyMC44LjEgMTguOS45IDE3LjVMOS40IDMuM2MuMy0uNC42LS44IDEtMSAuNy0uNCAxLjUtLjUgMi4zLS4zczEuNC43IDEuOSAxLjRMMjMgMTcuNWMuMy41LjQgMSAuNCAxLjUgMCAuOC0uMyAxLjYtLjkgMi4xLS41LjYtMS4yLjktMiAuOXptNy42LTE3LjZMMi43IDE4LjVjLS4zLjUtLjEgMS4xLjQgMS40LjEuMS4zLjEuNC4xaDE2LjljLjMgMCAuNS0uMS43LS4zcy4zLS40LjMtLjdjMC0uMiAwLS4zLS4xLS41TDEyLjkgNC40Yy0uMy0uNS0uOS0uNi0xLjQtLjQtLjIuMS0uMy4yLS40LjQiLz48cGF0aCBmaWxsPSIjMDYxOTM4IiBkPSJNMTIgMTRjLS42IDAtMS0uNC0xLTFWOWMwLS42LjQtMSAxLTFzMSAuNCAxIDF2NGMwIC42LS40IDEtMSAxTTEyIDE4Yy0uMyAwLS41LS4xLS43LS4zcy0uMy0uNC0uMy0uN2MwLS4xIDAtLjMuMS0uNHMuMS0uMi4yLS4zLjItLjIuMy0uMmMuMi0uMS40LS4xLjYtLjEuMSAwIC4xIDAgLjIuMS4xIDAgLjEgMCAuMi4xIDAgMCAuMS4xLjIuMS4xLjEuMi4yLjIuM3MuMS4zLjEuNGMwIC4zLS4xLjUtLjMuNy0uMy4yLS41LjMtLjguMyIvPjwvbWFzaz48ZyBtYXNrPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjMDYxOTM4IiBkPSJNMCAwaDI0djI0SDB6Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--webinars{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTEuNSA1LjVoMjJ2MTRoLTIyeiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjxwYXRoIGQ9Ik05LjQ3IDIwLjV2MS44OE0xNS41IDIwLjV2Mk02LjUgMjIuNWgxMiIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0ibTkgOSA3LjUgMy41M0w5IDE2eiIgc3R5bGU9ImZpbGw6Z3JheSIvPjwvZz48L3N2Zz4=)}.scylla-icon--whitepapers{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTggOWg4djJIOHoiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTQuMDYgMS41IDMuNSAxLjUyVjIzLjVoMTdWN3oiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0xNC4zMiAxLjQydjMuMzdhMi4wNiAyLjA2IDAgMCAwIDIuMDggMi4xaDMuNjciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNNi41IDE5LjVoNE0xMy41IDE5LjVoNE02LjUgMTYuNWg0TTEzLjUgMTYuNWg0TTYuNSAxMy41aDRNMTMuNSAxMy41aDQiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--workshop{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkfS5jbHMtMXtzdHJva2UtbWl0ZXJsaW1pdDoxMH0uY2xzLTJ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTEuNSA1LjVoMjJ2MTRoLTIyeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTkuNSAxOS41LS4wMyAyLjg4TTE1LjUgMTkuNXYzTTYuNSAyMi41aDEyIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJtNCA4IDIgOCAuOTctMy45NUwxMSAxMnoiIHN0eWxlPSJmaWxsOiM0ZDRkNGQiLz48cGF0aCBkPSJtNi40NyAxMS4zNCAzLjM3IDQuMjgiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.button{background:transparent;border:1px solid var(--text-color);border-radius:4px;color:var(--text-color);display:inline;font-size:14px;letter-spacing:1px;line-height:21px;margin:0;padding:12px 14px}.button:focus,.button:hover{background:transparent;color:var(--link-color);text-decoration:none}.button--reverse{border:0}.button--reverse,.button--reverse:focus,.button--reverse:hover{background:var(--bg-color)}.tooltip{background-color:var(--tooltip-bg);border:0;border-radius:4px;font-size:12px;max-width:50%;padding:6px}.tooltip:before,.tooltip:empty{display:none!important}.has-tip{border:0;cursor:pointer}.content .has-tip{cursor:help;font-weight:inherit;text-decoration:underline;text-decoration-style:dotted}.scylla-dropdown{color:var(--text-color);font-size:14px;line-height:20px}.scylla-dropdown a,.scylla-dropdown a:focus,.scylla-dropdown a:hover{color:var(--text-emphasis)!important;padding:0!important}.scylla-dropdown__item{font-size:16px;padding:15px}.scylla-dropdown__title{align-items:center;color:inherit;display:flex!important;position:static!important}.scylla-dropdown__title:after{display:none!important}.scylla-dropdown__title .chevron{min-height:5px;width:10px}.scylla-dropdown__content{background:var(--white);border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);font-size:16px;list-style:none;margin-top:15px;overflow:hidden;padding:16px 0;width:max-content}.scylla-dropdown__content li{padding:7px 16px}.scylla-dropdown__content li a{align-items:center;display:flex}.scylla-dropdown__content li i{font-size:24px;margin-right:10px}.enlarge-image{cursor:zoom-in}.enlarge-image-reveal{background:transparent;border:none;cursor:zoom-out;padding:0;text-align:center;width:fit-content}.enlarge-image-reveal img{background-color:var(--white);padding:15px}.header{background-color:var(--card-bg);box-shadow:0 2px 22px rgba(0,0,0,.1);justify-content:space-between;padding:12.75px 0;position:fixed;width:100%;z-index:99}.header,.header-logo{align-items:center;display:flex}.header-logo{margin-left:20px;width:auto}.header-logo__img{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0ze2ZpbGw6IzRkOWJiNn0uY2xzLTR7ZmlsbDojM2IyZDU1fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8xIj48cGF0aCBkPSJNMTg1LjYgMTAzLjFjMi4xIDMuMSA0LjggNS41IDggNi45IDMuMyAxLjUgNi42IDIuMiAxMC4xIDIuMnMzLjktLjMgNS45LS45IDMuOC0xLjUgNS41LTIuN2MxLjYtMS4yIDMtMi43IDQtNC41czEuNi0zLjggMS42LTYuMi0xLTUuOC0zLjEtNy41LTQuNy0zLjItNy44LTQuM2MtMy4xLTEuMi02LjUtMi4zLTEwLjEtMy40LTMuNy0xLjEtNy0yLjYtMTAuMS00LjVxLTQuNjUtMi44NS03LjgtNy44Yy0yLjEtMy4zLTMuMS03LjctMy4xLTEzLjJzLjUtNS4yIDEuNi04IDIuOC01LjQgNS4xLTcuNyA1LjMtNC4zIDktNS45cTUuNTUtMi40IDEzLjItMi40YzcuNjUgMCA5LjEuNiAxMy40IDEuOXM4IDMuOSAxMS4yIDcuOWwtOS40IDguNmMtMS41LTIuMy0zLjUtNC4xLTYuMi01LjQtMi43LTEuNC01LjctMi4xLTkuMS0yLjFzLTUuOS40LTggMS4zcS0zLjE1IDEuMi01LjEgMy4zYy0xLjMgMS4zLTIuMiAyLjgtMi43IDQuM3MtLjggMi45LS44IDQuMmMwIDMuNiAxIDYuNCAzLjEgOC4zczQuNyAzLjUgNy44IDQuNyA2LjUgMi4zIDEwLjEgMy4zYzMuNyAxIDcgMi4zIDEwLjEgNHM1LjcgNC4xIDcuOCA3IDMuMSA3IDMuMSAxMi4xLS44IDcuOC0yLjQgMTEuMS0zLjcgNi4xLTYuMyA4LjNjLTIuNyAyLjMtNS44IDQtOS40IDUuMnMtNy41IDEuOC0xMS42IDEuOC0xMC43LTEtMTUuNi0yLjktOC44LTQuOS0xMS43LTguOWw5LjUtOC4yWk0yODYuMSA3OXEtMy0zLjE1LTYuMy00LjhjLTIuMi0xLjEtNC45LTEuNi03LjktMS42cy01LjYuNS03LjggMS42LTQuMSAyLjYtNS42IDQuNS0yLjYgNC4xLTMuNCA2LjVjLS44IDIuNS0xLjEgNS0xLjEgNy43cy40IDUuMiAxLjMgNy41Yy45IDIuNCAyLjEgNC40IDMuNyA2LjJzMy41IDMuMiA1LjggNC4yIDQuOCAxLjUgNy42IDEuNSA1LjctLjUgNy45LTEuNnEzLjMtMS42NSA2LTQuOGw3LjcgNy43Yy0yLjggMy4xLTYuMSA1LjQtOS44IDYuOHMtNy43IDIuMS0xMS45IDIuMS04LjUtLjctMTIuMS0yLjJjLTMuNy0xLjUtNi44LTMuNS05LjUtNi4xcy00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4xIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4zIDYzLjhoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN0gzNTZsLTI3LjIgNjkuNmMtMSAyLjUtMiA0LjgtMyA2LjgtMSAyLjEtMi4zIDMuOC0zLjcgNS4zcy0zLjIgMi42LTUuMiAzLjRxLTMgMS4yLTcuNSAxLjJjLTQuNSAwLTMuMi0uMS00LjktLjMtMS42LS4yLTMuMi0uNi00LjgtMS4zbDEuMy05LjljMi4yLjkgNC4zIDEuMyA2LjUgMS4zczMuMS0uMiA0LjMtLjdjMS4yLS40IDIuMi0xLjEgMy0xLjlxMS4yLTEuMiAyLjEtM2MuNi0xLjEgMS4xLTIuNCAxLjctMy45bDMuNS05LjEtMjMuNy01Ny42Wk0zNjQuMSAyOS43SDM3NVYxMjFoLTEwLjl6TTM4Ni43IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi44IDcwLjhjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczgtMi4xIDEyLjEtMi4xIDcuOC41IDEwLjggMS42YzMgMSA1LjUgMi41IDcuNCA0LjIgMS45IDEuOCAzLjQgMy44IDQuMyA2LjFzMS40IDQuNyAxLjQgNy4ydjI5LjJjMCAyIDAgMy45LjEgNS42IDAgMS43LjIgMy4zLjQgNC44aC05LjdjLS4yLTIuOS0uNC01LjgtLjQtOC43aC0uMmMtMi40IDMuNy01LjMgNi4zLTguNiA3LjktMy4zIDEuNS03LjEgMi4zLTExLjUgMi4zcy01LjItLjQtNy42LTEuMXEtMy42LTEuMDUtNi4zLTMuM2MtMS44LTEuNS0zLjItMy4yLTQuMy01LjQtMS0yLjEtMS42LTQuNi0xLjYtNy40cy44LTYuOCAyLjUtOS4zYzEuNi0yLjUgMy45LTQuNSA2LjgtNi4xczYuMi0yLjcgMTAtMy40IDcuOS0xIDEyLjMtMWg4di0yLjRjMC0xLjUtLjMtMi45LS44LTQuMy0uNi0xLjUtMS40LTIuOC0yLjUtMy45LTEuMS0xLjItMi41LTIuMS00LjItMi44cy0zLjctMS02LTEtMy45LjItNS41LjYtMyAuOS00LjMgMS41LTIuNSAxLjMtMy41IDIuMS0yLjEgMS42LTMgMi4zbC02LjUtNi44Wm0zMC43IDIyLjdjLTIuNiAwLTUuMi4xLTcuOS40cy01LjIuOC03LjQgMS42LTQgMS45LTUuNCAzLjQtMi4xIDMuMy0yLjEgNS42YzAgMy4zIDEuMSA1LjcgMy4zIDcuMSAyLjIgMS41IDUuMiAyLjIgOSAyLjJzNS41LS41IDcuNi0xLjVxMy4xNS0xLjUgNS4xLTMuOWMxLjMtMS42IDIuMi0zLjQgMi44LTUuNHMuOC0zLjkuOC01Ljl2LTMuNnpNNDczLjggMzUuNWgyOS44cTkgMCAxNS45IDIuMWM0LjYgMS40IDguNSAzLjIgMTEuOCA1LjVzNi4xIDQuOSA4LjMgNy45IDQgNiA1LjMgOS4yYzEuMyAzLjEgMi4yIDYuMyAyLjggOS40cy44IDYgLjggOC43cTAgOC4yNS0zIDE1LjljLTIgNS4xLTUgOS43LTguOSAxMy42LTQgNC04LjggNy4yLTE0LjcgOS42LTUuOCAyLjQtMTIuNiAzLjYtMjAuMiAzLjZoLTI3Ljl6bTExLjYgNzQuN0g1MDBjNC45IDAgOS42LS43IDE0LTJzOC4yLTMuMyAxMS41LTYgNS45LTYgNy45LTEwYzEuOS00IDIuOS04LjYgMi45LTEzLjlzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC40cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40djYzLjhaTTU2MS43IDM1LjVoMjkuN2MzLjcgMCA3LjEuNCAxMC4zIDEuM3M1LjkgMi4yIDguMiAzLjlxMy40NSAyLjU1IDUuNCA2LjZjMS4zIDIuNyAyIDUuOSAyIDkuNXMtMS40IDguOS00LjEgMTItNi4zIDUuNC0xMC42IDYuOHYuMmMyLjYuMiA1IC44IDcuMiAyIDIuMyAxLjIgNC4yIDIuNyA1LjkgNC42IDEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjRWMzUuNVpNNTczLjMgNzFoMTUuOGMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4ydjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yIDEuOC0xLjEgMy40LTIuNiA0LjctNC40IDEuMy0xLjkgMS45LTQuMyAxLjktNy40IDAtNS4xLTEuNy04LjktNS0xMS40cy03LjgtMy44LTEzLjQtMy44aC0xNy4ydjI5LjdaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNODYuMyA0LjJDNTMuNCA0LjIgMzAuNCAyNC43IDMwLjQgNTRzNC45IDM0LjggOS4xIDU1LjhjMyAxNS4xIDUuNiAyNy4zIDUuNyAyNy42LjggMy43IDQuNCA2LjEgOC4yIDUuNWguOGMwLS4xLS42LS43LS42LS43LTEuMS0xLjEtMS44LTIuNC0yLjMtMy44LS4yLS44LS4zLTEuNS0uNC0yLjEgMC0uMyAwLS42LS4xLS45bC0xLjUtOC45Yy0uNi00LTEuMy04LTEuOC0xMS44IDAtLjMuMS0uNS40LS41cy41LjEuNS40cTEuMiA1LjcgMi40IDExLjdsMS43IDguOGMwIC4zLjEuNi4yLjkuMS43LjMgMS40LjQgMiAuNSAxLjUgMS41IDIuOCAyLjggMy44LjEuMS4zLjIuNC4zLjguNCAxLjYuNyAyLjUuOS45LjEgMS44LjEgMi42IDAgLjktLjIgMS45LS42IDIuNy0xLjJsLjMtLjItLjItLjNjLS43LS45LTEuMS0xLjktMS40LTMtLjItLjgtLjMtMS41LS4zLTIuMnYtLjlsLS45LTguOWMtLjQtNC4xLS43LTguMS0xLTExLjkgMC0uMSAwLS4yLjEtLjMgMCAwIC4yLS4yLjMtLjIuMyAwIC41LjIuNS40LjUgMy44IDEuMSA3LjggMS42IDExLjhsMS4xIDguOWMwIC4zIDAgLjUuMS44IDAgLjcuMiAxLjQuMyAyIC4yLjcuNCAxLjMuOCAxLjkuNS45IDEuMiAxLjYgMiAyLjIgMCAwIDAgLjEuMS4xIDEuNCAxIDMuMyAxLjQgNSAxLjFzMy4zLTEuMiA0LjUtMi41Yy4zLS4zLjUtLjcuNy0xLjF2LS40Yy0uMS0uNC0uMi0uOC0uNC0xLjItLjEtLjYtLjItMS40LS4yLTIuM3YtNC40Yy0uMi01LjYtLjItMTEuMy0uMi0xNy42IDAtLjMuMi0uNS41LS41cy41LjIuNS40Yy40IDYuMy43IDEyIC45IDE3LjZsLjIgNC40YzAgLjggMCAxLjQuMiAyIC4xLjUuMyAxLjIuNyAxLjh2LjFjMS4yIDIuMiAzLjYgMy43IDYuMSAzLjdoLjFjMi41IDAgNS0xLjQgNi4zLTMuNy4zLS41LjUtMS4xLjctMS44LjEtLjYuMi0xLjIuMi0xLjlsLjItNC41Yy4yLTUuMy41LTExIC45LTE3LjYgMC0uMy4yLS41LjUtLjQuMiAwIC40LjIuNC41IDAgNi42IDAgMTIuMy0uMSAxNy42djQuNGMwIC42IDAgMS41LS4zIDIuMyAwIC40LS4yLjgtLjMgMS4ydi40Yy4yLjQuNS43LjcgMS4xIDEuMSAxLjQgMi43IDIuMyA0LjUgMi41IDEuNy4zIDMuNi0uMSA1LTEuMWguMWMuOC0uNiAxLjUtMS40IDItMi4yLjQtLjYuNi0xLjIuOC0xLjkuMS0uNi4yLTEuMy4zLTIgMC0uMyAwLS41LjEtLjhsMS4xLTguOWMuNS00IDEuMS04IDEuNi0xMS44IDAtLjEgMC0uMi4yLS4zLjEgMCAuMi0uMS4zIDAgLjIgMCAuNC4zLjQuNS0uMyAzLjgtLjcgNy44LTEgMTEuOWwtLjkgOC45di44YzAgLjctLjEgMS40LS4zIDIuMi0uMyAxLjEtLjcgMi4xLTEuNCAzbC0uMi4zLjMuMmMuOC42IDEuOCAxIDIuNyAxLjJzMS43LjIgMi42IDBjLjktLjEgMS43LS40IDIuNS0uOS4yIDAgLjMtLjIuNC0uMyAxLjMtLjkgMi4zLTIuMyAyLjgtMy44LjItLjUuMy0xLjMuNC0yIDAtLjMuMS0uNi4yLS44bDEuNy04LjhjLjgtNCAxLjYtOCAyLjQtMTEuNyAwLS4zLjMtLjQuNi0uNC4yIDAgLjQuMy40LjUtLjYgMy44LTEuMiA3LjgtMS44IDExLjhsLTEuNSA4LjljMCAuMy0uMS42LS4xLjktLjEuNy0uMiAxLjMtLjQgMi4yLS40IDEuNC0xLjIgMi43LTIuMyAzLjhsLS41LjUuNy4yYy40IDAgLjguMSAxLjIuMSAzLjMgMCA2LjMtMi4zIDctNS42IDAtLjMgMi44LTEyLjkgNS44LTI4LjUgNC4xLTIwLjkgOS00NyA5LTU1QzE0MiAyNSAxMTkgNC41IDg2LjEgNC41WiIgc3R5bGU9ImZpbGw6IzU3ZDFlNSIvPjxwYXRoIGQ9Ik0xMzMuMSAxMDkuN2MtMy4xIDE1LjctNS43IDI3LjUtNS43IDI3LjctLjcgMy4yLTMuNyA1LjQtNyA1LjRoLTEuNmwuMy0uNGMxLjEtMS4xIDEuOS0yLjQgMi4zLTMuOC4yLS44LjMtMS41LjQtMi4yIDAtLjQgMC0uNi4xLS45bDEuNS04LjljLjYtNCAxLjMtOCAxLjgtMTEuOCAwLS4zLS4yLS43LS41LS43aC0uNWMtLjEgMC0uMy4yLS4zLjQtLjggMy43LTEuNiA3LjctMi40IDExLjdsLTEuNyA4LjhjMCAuMiAwIC40LS4xLjZ2LjNjLS4yLjctLjMgMS40LS41IDEuOS0uNCAxLjUtMS40IDIuOC0yLjcgMy43LS4xIDAtLjMuMi0uNC4zLS43LjQtMS41LjctMi40LjhzLTEuNy4xLTIuNiAwYy0uOS0uMi0xLjgtLjYtMi42LTEuMmgtLjJjMC0uMS4xLS4zLjEtLjMuNy0xIDEuMS0yIDEuNC0zLjEuMi0uOC4zLTEuNS4zLTIuM3YtLjhsLjktOC45Yy40LTQuMS43LTguMSAxLTExLjkgMC0uMy0uMi0uNy0uNi0uNy0uMiAwLS4zIDAtLjUuMS0uMS4xLS4yLjMtLjMuNC0uNSAzLjgtMS4xIDcuNy0xLjYgMTEuOGwtMS4xIDguOWMwIC4zIDAgLjUtLjEuOCAwIC43LS4yIDEuNC0uMyAyLS4yLjYtLjQgMS4yLS44IDEuOC0uNS44LTEuMiAxLjYtMiAyLjEgMCAwIDAgLjEtLjEuMS0xLjQuOS0zLjIgMS4zLTQuOSAxLjFzLTMuMy0xLjEtNC4zLTIuNWMtLjMtLjMtLjUtLjctLjctMXYtLjJjLjEtLjQuMy0uOC40LTEuMi4yLS44LjItMS44LjItMi40di00LjRjLjItNS4yLjItMTAuOS4yLTE3LjYgMC0uMy0uMy0uNi0uNi0uNy0uNCAwLS43LjMtLjcuNi0uNCA2LjUtLjcgMTIuMy0uOSAxNy42bC0uMiA0LjVjMCAuNyAwIDEuMy0uMiAxLjktLjIuNy0uNCAxLjMtLjcgMS44LTEuMiAyLjItMy42IDMuNi02IDMuNkg4NmMtMi40IDAtNC44LTEuNC02LTMuNnYtLjFjLS4zLS42LS41LTEuMi0uNy0xLjctLjEtLjYtLjItMS4yLS4yLTJsLS4yLTQuNGMtLjItNS41LS41LTExLjMtLjktMTcuNiAwLS4zLS4zLS42LS43LS42cy0uNy4zLS43LjdjMCA2LjMgMCAxMiAuMSAxNy42djQuNHEwIDEuNS4zIDIuNGMuMS40LjIuOS40IDEuMnYuMmMtLjIuNC0uNS43LS43IDFhNy42IDcuNiAwIDAgMS00LjMgMi41Yy0xLjcuMy0zLjUtLjEtNC45LTEuMWgtLjFjLS44LS42LTEuNS0xLjMtMi0yLjItLjMtLjYtLjYtMS4yLS44LTEuOC0uMS0uNS0uMi0xLjItLjMtMiAwLS4zIDAtLjUtLjEtLjhsLTEuMS04LjljLS41LTQuMS0xLjEtOC4xLTEuNi0xMS44IDAtLjQtLjMtLjYtLjctLjYtLjIgMC0uMyAwLS40LjItLjEuMS0uMi4zLS4yLjUuMyAzLjguNyA3LjggMSAxMS45bC45IDguOXYuOWMwIC43LjEgMS40LjMgMi4yLjMgMS4xLjcgMi4xIDEuNCAzLjF2LjJjLjEgMCAwIC4xIDAgLjEtLjguNi0xLjcgMS0yLjYgMS4yLS44LjItMS43LjItMi42IDBxLTEuMzUtLjE1LTIuNC0uOWMtLjEgMC0uMy0uMi0uNC0uMy0xLjMtLjktMi4zLTIuMi0yLjctMy43LS4yLS41LS4zLTEuMi0uNC0xLjkgMC0uNC0uMS0uNy0uMi0uOWwtMS43LTguOGMtLjgtNC0xLjYtOC0yLjQtMTEuNyAwLS4zLS40LS42LS43LS41LS40IDAtLjYuNC0uNi43LjYgMy44IDEuMiA3LjggMS44IDExLjhsMS41IDguOWMwIC4zIDAgLjUuMS44LjEuOC4yIDEuNS40IDIuMy40IDEuNCAxLjIgMi43IDIuMyAzLjhsLjMuM2gtLjRjLTMuNy43LTcuMi0xLjctOC01LjMtLjMtMS4zLTMtMTMuMS01LjktMjcuNmw0LjIgMjhjMCAuMi4xLjUuMi43di4yYy4xLjIuMi4zLjMuNSAwIDAgMCAuMi4xLjMgMCAuMS4xLjIuMi40IDAgLjEuMS4yLjIuM3YuMmwuNi45Yy4xLjIuMi4zLjQuNS4xLjIuMy4zLjQuNSAxLjYgMS41IDMuNyAyLjMgNS45IDIuM3MxIDAgMS40LS4xbDMuMi0uNWMuNS4yIDEuMS40IDEuNy40IDEuMS4yIDIuMi4xIDMuMiAwIDEuMS0uMiAyLjMtLjcgMy4zLTEuNWwuOC0uNmMuMi4yLjUuNC44LjZsLjIuMmMxLjcgMS4xIDQgMS42IDYuMSAxLjNzNC4xLTEuNCA1LjQtMy4xYy4yLS4zLjUtLjYuNy0uOSAxLjUgMi41IDQuNCA0LjEgNy4zIDQuMWguMmMyLjkgMCA1LjctMS42IDcuMi00LjEuMi4zLjQuNy43LjkgMS4zIDEuNyAzLjMgMi44IDUuNCAzLjFoMS4zYzEuNyAwIDMuNC0uNSA0LjgtMS40IDAgMCAuMSAwIC4yLS4xLjMtLjIuNS0uNC44LS42bC44LjZxMS41IDEuMDUgMy4zIDEuNWMxIC4yIDIuMS4yIDMuMiAwcTEuMDUtLjE1IDIuMS0uNmwyLjcuN2guMWMuNS4xLjkuMSAxLjQuMSA0IDAgNy42LTIuOSA4LjUtNi44IDAtLjEgNC4yLTI4IDQuMi0yOFoiIGNsYXNzPSJjbHMtNCIvPjxwYXRoIGQ9Ik00Ni40IDE3LjdjLTEwLjEgOC44LTE2IDIxLjQtMTYgMzYuMnMxNC41IDgyLjggMTQuNyA4My41Yy4zIDEuNSAxLjQgMi42IDIuNCAzLjYtMy42LTE3LjQtMTUuNC03My41LTE1LjQtODYuNnM1LjItMjcuMiAxNC4zLTM2LjciIHN0eWxlPSJmaWxsOiM5M2UxZWYiLz48cGF0aCBkPSJNNzEuMyAyNS42QzU3LjkgMjUuNiA0NyAzNi41IDQ3IDQ5LjlzMTAuOSAyNC4zIDI0LjMgMjQuMyAyNC4zLTEwLjkgMjQuMy0yNC4zLTEwLjktMjQuMy0yNC4zLTI0LjMiIGNsYXNzPSJjbHMtMyIvPjxwYXRoIGQ9Ik00NC42IDQ4YzAgMTMuNCAxMC45IDI0LjMgMjQuMyAyNC4zUzkzLjIgNjEuNCA5My4yIDQ4IDgyLjMgMjMuNyA2OC45IDIzLjcgNDQuNiAzNC42IDQ0LjYgNDgiIHN0eWxlPSJmaWxsOiNmZmYiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=);background-position:50%;background-repeat:no-repeat;width:110px}.header-logo__img img{opacity:0}.dark .header-logo__img{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZn0uY2xzLTN7ZmlsbDojNGQ5YmI2fS5jbHMtNHtmaWxsOiMzYjJkNTV9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkxheWVyXzEiPjxwYXRoIGQ9Ik0xODUuNCAxMDMuMWMyLjEgMy4xIDQuOCA1LjUgOCA2LjkgMy4zIDEuNSA2LjYgMi4yIDEwLjEgMi4yczMuOS0uMyA1LjktLjkgMy44LTEuNSA1LjUtMi43YzEuNi0xLjIgMy0yLjcgNC00LjVzMS42LTMuOCAxLjYtNi4yLTEtNS44LTMuMS03LjUtNC43LTMuMi03LjgtNC4zYy0zLjEtMS4yLTYuNS0yLjMtMTAuMi0zLjRxLTUuNTUtMS42NS0xMC4yLTQuNXQtNy44LTcuOGMtMi4xLTMuMy0zLjEtNy43LTMuMS0xMy4ycy41LTUuMiAxLjYtOCAyLjgtNS40IDUuMS03LjcgNS4zLTQuMyA5LTUuOXE1LjU1LTIuNCAxMy4yLTIuNGM3LjY1IDAgOS4xLjYgMTMuNCAxLjlzOCAzLjkgMTEuMiA3LjlsLTkuNCA4LjZjLTEuNS0yLjMtMy41LTQuMS02LjItNS40LTIuNy0xLjQtNS43LTIuMS05LjEtMi4xcy01LjkuNC04IDEuM3EtMy4xNSAxLjItNS4xIDMuM2MtMS4zIDEuMy0yLjIgMi44LTIuNyA0LjNzLS44IDIuOS0uOCA0LjJjMCAzLjYgMSA2LjQgMy4xIDguM3M0LjcgMy41IDcuOCA0LjdxNC42NSAxLjggMTAuMiAzLjNjMy43IDEgNy4xIDIuMyAxMC4yIDRzNS43IDQuMSA3LjggNyAzLjEgNyAzLjEgMTIuMS0uOCA3LjgtMi40IDExLjEtMy43IDYuMS02LjMgOC4zYy0yLjcgMi4zLTUuOCA0LTkuNCA1LjJzLTcuNSAxLjgtMTEuNiAxLjgtMTAuNy0xLTE1LjYtMi45LTguOC00LjktMTEuNy04LjlsOS41LTguMlpNMjg2IDc5cS0zLTMuMTUtNi4zLTQuOGMtMi4yLTEuMS00LjktMS42LTcuOS0xLjZzLTUuNi41LTcuOCAxLjYtNC4xIDIuNi01LjYgNC41LTIuNiA0LjEtMy40IDYuNWMtLjggMi41LTEuMSA1LTEuMSA3LjdzLjQgNS4yIDEuMyA3LjVjLjkgMi40IDIuMSA0LjUgMy43IDYuMnMzLjUgMy4yIDUuOCA0LjIgNC44IDEuNSA3LjYgMS41IDUuNy0uNSA3LjktMS42cTMuMy0xLjY1IDYtNC44bDcuNyA3LjdjLTIuOCAzLjEtNi4xIDUuNC05LjkgNi44LTMuNyAxLjQtNy43IDIuMS0xMS45IDIuMXMtOC41LS43LTEyLjItMi4yLTYuOC0zLjUtOS41LTYuMS00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4yIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4yIDYzLjdoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN2gxMS42bC0yNy4yIDY5LjZjLTEgMi41LTIgNC44LTMgNi44LTEgMi4xLTIuMyAzLjgtMy43IDUuM3MtMy4yIDIuNi01LjIgMy40LTQuNiAxLjItNy41IDEuMi0zLjItLjEtNC45LS4zYy0xLjYtLjItMy4yLS42LTQuOC0xLjNsMS4zLTkuOWMyLjIuOSA0LjMgMS4zIDYuNSAxLjNzMy4xLS4yIDQuMy0uN2MxLjItLjQgMi4yLTEuMSAzLTEuOXExLjItMS4yIDIuMS0zYy42LTEuMSAxLjEtMi40IDEuNy0zLjlsMy41LTkuMS0yMy43LTU3LjZaTTM2My45IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTM4Ni42IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi43IDcwLjdjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczguMS0yLjEgMTIuMS0yLjEgNy44LjUgMTAuOCAxLjZjMyAxIDUuNSAyLjUgNy40IDQuMiAxLjkgMS44IDMuNCAzLjggNC4zIDYuMXMxLjQgNC43IDEuNCA3LjJ2MjkuMmMwIDIgMCAzLjkuMSA1LjYgMCAxLjcuMiAzLjMuNCA0LjhoLTkuN2MtLjItMi45LS40LTUuOC0uNC04LjdoLS4yYy0yLjQgMy43LTUuMyA2LjMtOC42IDcuOS0zLjMgMS41LTcuMSAyLjMtMTEuNSAyLjNzLTUuMi0uNC03LjYtMS4xcS0zLjYtMS4wNS02LjMtMy4zYy0xLjgtMS41LTMuMi0zLjItNC4zLTUuNC0xLTIuMS0xLjYtNC42LTEuNi03LjRzLjgtNi44IDIuNS05LjNjMS42LTIuNSAzLjktNC41IDYuOC02LjFzNi4yLTIuNyAxMC0zLjQgNy45LTEgMTIuMy0xaDh2LTIuNGMwLTEuNS0uMy0yLjktLjgtNC4zLS42LTEuNS0xLjQtMi44LTIuNS0zLjktMS4xLTEuMi0yLjUtMi4xLTQuMi0yLjhzLTMuNy0xLTYtMS0zLjkuMi01LjUuNi0zIC45LTQuMyAxLjUtMi41IDEuMy0zLjUgMi4xLTIuMSAxLjYtMyAyLjNsLTYuNS02LjhabTMwLjcgMjIuOGMtMi42IDAtNS4yLjEtNy45LjRzLTUuMi44LTcuNCAxLjYtNCAxLjktNS40IDMuNC0yLjEgMy4zLTIuMSA1LjZjMCAzLjMgMS4xIDUuNyAzLjMgNy4xIDIuMiAxLjUgNS4yIDIuMiA5IDIuMnM1LjUtLjUgNy42LTEuNXEzLjE1LTEuNSA1LjEtMy45YzEuMy0xLjYgMi4yLTMuNCAyLjgtNS40cy44LTMuOS44LTUuOXYtMy42ek00NzMuOCAzNS41aDI5LjlxOSAwIDE1LjkgMi4xYzQuNiAxLjQgOC41IDMuMiAxMS44IDUuNXM2LjEgNC45IDguMyA3LjkgNCA2IDUuMyA5LjJjMS4zIDMuMSAyLjIgNi4zIDIuOCA5LjRzLjggNiAuOCA4LjdxMCA4LjI1LTMgMTUuOWMtMiA1LjEtNSA5LjctOC45IDEzLjctNCA0LTguOCA3LjItMTQuNyA5LjYtNS44IDIuNC0xMi42IDMuNi0yMC4zIDMuNmgtMjcuOXptMTEuNiA3NC42SDUwMGM0LjkgMCA5LjYtLjcgMTQtMnM4LjItMy4zIDExLjUtNiA1LjktNiA3LjktMTBjMS45LTQgMi45LTguNiAyLjktMTRzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC41cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40VjExMFpNNTYxLjYgMzUuNWgyOS43YzMuNyAwIDcuMi40IDEwLjMgMS4zIDMuMi45IDUuOSAyLjIgOC4yIDMuOXEzLjQ1IDIuNTUgNS40IDYuNmMxLjMgMi43IDIgNS45IDIgOS41cy0xLjQgOC45LTQuMSAxMi02LjMgNS40LTEwLjYgNi44di4yYzIuNi4yIDUgLjggNy4zIDJzNC4yIDIuNyA1LjkgNC42YzEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjR6TTU3My4yIDcxSDU4OWMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4zdjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yczMuNC0yLjYgNC43LTQuNGMxLjMtMS45IDEuOS00LjMgMS45LTcuNCAwLTUuMS0xLjctOC45LTUtMTEuNHMtNy44LTMuOC0xMy40LTMuOGgtMTcuMnYyOS43WiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTg2LjMgNC4yQzUzLjQgNC4yIDMwLjQgMjQuNyAzMC40IDU0czQuOSAzNC44IDkuMSA1NS44YzMgMTUuMSA1LjYgMjcuMyA1LjcgMjcuNi44IDMuNyA0LjQgNi4xIDguMiA1LjVoLjhjMC0uMS0uNi0uNy0uNi0uNy0xLjEtMS4xLTEuOC0yLjQtMi4zLTMuOC0uMi0uOC0uMy0xLjUtLjQtMi4xIDAtLjMgMC0uNi0uMS0uOWwtMS41LTguOWMtLjYtNC0xLjMtOC0xLjgtMTEuOCAwLS4zLjEtLjUuNC0uNXMuNS4xLjUuNHExLjIgNS43IDIuNCAxMS43bDEuNyA4LjhjMCAuMy4xLjYuMi45LjEuNy4zIDEuNC40IDIgLjUgMS41IDEuNSAyLjggMi44IDMuOC4xLjEuMy4yLjQuMy44LjQgMS42LjcgMi41LjkuOS4xIDEuOC4xIDIuNiAwIC45LS4yIDEuOS0uNiAyLjctMS4ybC4zLS4yLS4yLS4zYy0uNy0uOS0xLjEtMS45LTEuNC0zLS4yLS44LS4zLTEuNS0uMy0yLjJ2LS45bC0uOS04LjljLS40LTQuMS0uNy04LjEtMS0xMS45IDAtLjEgMC0uMi4xLS4zIDAgMCAuMi0uMi4zLS4yLjMgMCAuNS4yLjUuNC41IDMuOCAxLjEgNy44IDEuNiAxMS44bDEuMSA4LjljMCAuMyAwIC41LjEuOCAwIC43LjIgMS40LjMgMiAuMi43LjQgMS4zLjggMS45LjUuOSAxLjIgMS42IDIgMi4yIDAgMCAwIC4xLjEuMSAxLjQgMSAzLjMgMS40IDUgMS4xczMuMy0xLjIgNC41LTIuNWMuMy0uMy41LS43LjctMS4xdi0uNGMtLjEtLjQtLjItLjgtLjQtMS4yLS4xLS42LS4yLTEuNC0uMi0yLjN2LTQuNGMtLjItNS42LS4yLTExLjMtLjItMTcuNiAwLS4zLjItLjUuNS0uNXMuNS4yLjUuNGMuNCA2LjMuNyAxMiAuOSAxNy42bC4yIDQuNGMwIC44IDAgMS40LjIgMiAuMS41LjMgMS4yLjcgMS44di4xYzEuMiAyLjIgMy42IDMuNyA2LjEgMy43aC4xYzIuNSAwIDUtMS40IDYuMy0zLjcuMy0uNS41LTEuMS43LTEuOC4xLS42LjItMS4yLjItMS45bC4yLTQuNWMuMi01LjMuNS0xMSAuOS0xNy42IDAtLjMuMi0uNS41LS40LjIgMCAuNC4yLjQuNSAwIDYuNiAwIDEyLjMtLjEgMTcuNnY0LjRjMCAuNiAwIDEuNS0uMyAyLjMgMCAuNC0uMi44LS4zIDEuMnYuNGMuMi40LjUuNy43IDEuMSAxLjEgMS40IDIuNyAyLjMgNC41IDIuNSAxLjcuMyAzLjYtLjEgNS0xLjFoLjFjLjgtLjYgMS41LTEuNCAyLTIuMi40LS42LjYtMS4yLjgtMS45LjEtLjYuMi0xLjMuMy0yIDAtLjMgMC0uNS4xLS44bDEuMS04LjljLjUtNCAxLjEtOCAxLjYtMTEuOCAwLS4xIDAtLjIuMi0uMy4xIDAgLjItLjEuMyAwIC4yIDAgLjQuMy40LjUtLjMgMy44LS43IDcuOC0xIDExLjlsLS45IDguOXYuOGMwIC43LS4xIDEuNC0uMyAyLjItLjMgMS4xLS43IDIuMS0xLjQgM2wtLjIuMy4zLjJjLjguNiAxLjggMSAyLjcgMS4yczEuNy4yIDIuNiAwYy45LS4xIDEuNy0uNCAyLjUtLjkuMiAwIC4zLS4yLjQtLjMgMS4zLS45IDIuMy0yLjMgMi44LTMuOC4yLS41LjMtMS4zLjQtMiAwLS4zLjEtLjYuMi0uOGwxLjctOC44Yy44LTQgMS42LTggMi40LTExLjcgMC0uMy4zLS40LjYtLjQuMiAwIC40LjMuNC41LS42IDMuOC0xLjIgNy44LTEuOCAxMS44bC0xLjUgOC45YzAgLjMtLjEuNi0uMS45LS4xLjctLjIgMS4zLS40IDIuMi0uNCAxLjQtMS4yIDIuNy0yLjMgMy44bC0uNS41LjcuMmMuNCAwIC44LjEgMS4yLjEgMy4zIDAgNi4zLTIuMyA3LTUuNiAwLS4zIDIuOC0xMi45IDUuOC0yOC41IDQuMS0yMC45IDktNDcgOS01NUMxNDIgMjUgMTE5IDQuNSA4Ni4xIDQuNVoiIHN0eWxlPSJmaWxsOiM1N2QxZTUiLz48cGF0aCBkPSJNMTMzLjEgMTA5LjdjLTMuMSAxNS43LTUuNyAyNy41LTUuNyAyNy43LS43IDMuMi0zLjcgNS40LTcgNS40aC0xLjZsLjMtLjRjMS4xLTEuMSAxLjktMi40IDIuMy0zLjguMi0uOC4zLTEuNS40LTIuMiAwLS40IDAtLjYuMS0uOWwxLjUtOC45Yy42LTQgMS4zLTggMS44LTExLjggMC0uMy0uMi0uNy0uNS0uN2gtLjVjLS4xIDAtLjMuMi0uMy40LS44IDMuNy0xLjYgNy43LTIuNCAxMS43bC0xLjcgOC44YzAgLjIgMCAuNC0uMS42di4zYy0uMi43LS4zIDEuNC0uNSAxLjktLjQgMS41LTEuNCAyLjgtMi43IDMuNy0uMSAwLS4zLjItLjQuMy0uNy40LTEuNS43LTIuNC44cy0xLjcuMS0yLjYgMGMtLjktLjItMS44LS42LTIuNi0xLjJoLS4yYzAtLjEuMS0uMy4xLS4zLjctMSAxLjEtMiAxLjQtMy4xLjItLjguMy0xLjUuMy0yLjN2LS44bC45LTguOWMuNC00LjEuNy04LjEgMS0xMS45IDAtLjMtLjItLjctLjYtLjctLjIgMC0uMyAwLS41LjEtLjEuMS0uMi4zLS4zLjQtLjUgMy44LTEuMSA3LjctMS42IDExLjhsLTEuMSA4LjljMCAuMyAwIC41LS4xLjggMCAuNy0uMiAxLjQtLjMgMi0uMi42LS40IDEuMi0uOCAxLjgtLjUuOC0xLjIgMS42LTIgMi4xIDAgMCAwIC4xLS4xLjEtMS40LjktMy4yIDEuMy00LjkgMS4xcy0zLjMtMS4xLTQuMy0yLjVjLS4zLS4zLS41LS43LS43LTF2LS4yYy4xLS40LjMtLjguNC0xLjIuMi0uOC4yLTEuOC4yLTIuNHYtNC40Yy4yLTUuMi4yLTEwLjkuMi0xNy42IDAtLjMtLjMtLjYtLjYtLjctLjQgMC0uNy4zLS43LjYtLjQgNi41LS43IDEyLjMtLjkgMTcuNmwtLjIgNC41YzAgLjcgMCAxLjMtLjIgMS45LS4yLjctLjQgMS4zLS43IDEuOC0xLjIgMi4yLTMuNiAzLjYtNiAzLjZIODZjLTIuNCAwLTQuOC0xLjQtNi0zLjZ2LS4xYy0uMy0uNi0uNS0xLjItLjctMS43LS4xLS42LS4yLTEuMi0uMi0ybC0uMi00LjRjLS4yLTUuNS0uNS0xMS4zLS45LTE3LjYgMC0uMy0uMy0uNi0uNy0uNnMtLjcuMy0uNy43YzAgNi4zIDAgMTIgLjEgMTcuNnY0LjRxMCAxLjUuMyAyLjRjLjEuNC4yLjkuNCAxLjJ2LjJjLS4yLjQtLjUuNy0uNyAxYTcuNiA3LjYgMCAwIDEtNC4zIDIuNWMtMS43LjMtMy41LS4xLTQuOS0xLjFoLS4xYy0uOC0uNi0xLjUtMS4zLTItMi4yLS4zLS42LS42LTEuMi0uOC0xLjgtLjEtLjUtLjItMS4yLS4zLTIgMC0uMyAwLS41LS4xLS44bC0xLjEtOC45Yy0uNS00LjEtMS4xLTguMS0xLjYtMTEuOCAwLS40LS4zLS42LS43LS42LS4yIDAtLjMgMC0uNC4yLS4xLjEtLjIuMy0uMi41LjMgMy44LjcgNy44IDEgMTEuOWwuOSA4Ljl2LjljMCAuNy4xIDEuNC4zIDIuMi4zIDEuMS43IDIuMSAxLjQgMy4xdi4yYy4xIDAgMCAuMSAwIC4xLS44LjYtMS43IDEtMi42IDEuMi0uOC4yLTEuNy4yLTIuNiAwcS0xLjM1LS4xNS0yLjQtLjljLS4xIDAtLjMtLjItLjQtLjMtMS4zLS45LTIuMy0yLjItMi43LTMuNy0uMi0uNS0uMy0xLjItLjQtMS45IDAtLjQtLjEtLjctLjItLjlsLTEuNy04LjhjLS44LTQtMS42LTgtMi40LTExLjcgMC0uMy0uNC0uNi0uNy0uNS0uNCAwLS42LjQtLjYuNy42IDMuOCAxLjIgNy44IDEuOCAxMS44bDEuNSA4LjljMCAuMyAwIC41LjEuOC4xLjguMiAxLjUuNCAyLjMuNCAxLjQgMS4yIDIuNyAyLjMgMy44bC4zLjNoLS40Yy0zLjcuNy03LjItMS43LTgtNS4zLS4zLTEuMy0zLTEzLjEtNS45LTI3LjZsNC4yIDI4YzAgLjIuMS41LjIuN3YuMmMuMS4yLjIuMy4zLjUgMCAwIDAgLjIuMS4zIDAgLjEuMS4yLjIuNCAwIC4xLjEuMi4yLjN2LjJsLjYuOWMuMS4yLjIuMy40LjUuMS4yLjMuMy40LjUgMS42IDEuNSAzLjcgMi4zIDUuOSAyLjNzMSAwIDEuNC0uMWwzLjItLjVjLjUuMiAxLjEuNCAxLjcuNCAxLjEuMiAyLjIuMSAzLjIgMCAxLjEtLjIgMi4zLS43IDMuMy0xLjVsLjgtLjZjLjIuMi41LjQuOC42bC4yLjJjMS43IDEuMSA0IDEuNiA2LjEgMS4zczQuMS0xLjQgNS40LTMuMWMuMi0uMy41LS42LjctLjkgMS41IDIuNSA0LjQgNC4xIDcuMyA0LjFoLjJjMi45IDAgNS43LTEuNiA3LjItNC4xLjIuMy40LjcuNy45IDEuMyAxLjcgMy4zIDIuOCA1LjQgMy4xaDEuM2MxLjcgMCAzLjQtLjUgNC44LTEuNCAwIDAgLjEgMCAuMi0uMS4zLS4yLjUtLjQuOC0uNmwuOC42cTEuNSAxLjA1IDMuMyAxLjVjMSAuMiAyLjEuMiAzLjIgMHExLjA1LS4xNSAyLjEtLjZsMi43LjdoLjFjLjUuMS45LjEgMS40LjEgNCAwIDcuNi0yLjkgOC41LTYuOCAwLS4xIDQuMi0yOCA0LjItMjhaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNNDYuNCAxNy43Yy0xMC4xIDguOC0xNiAyMS40LTE2IDM2LjJzMTQuNSA4Mi44IDE0LjcgODMuNWMuMyAxLjUgMS40IDIuNiAyLjQgMy42LTMuNi0xNy40LTE1LjQtNzMuNS0xNS40LTg2LjZzNS4yLTI3LjIgMTQuMy0zNi43IiBzdHlsZT0iZmlsbDojOTNlMWVmIi8+PHBhdGggZD0iTTcxLjMgMjUuNkM1Ny45IDI1LjYgNDcgMzYuNSA0NyA0OS45czEwLjkgMjQuMyAyNC4zIDI0LjMgMjQuMy0xMC45IDI0LjMtMjQuMy0xMC45LTI0LjMtMjQuMy0yNC4zIiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNDQuNiA0OGMwIDEzLjQgMTAuOSAyNC4zIDI0LjMgMjQuM1M5My4yIDYxLjQgOTMuMiA0OCA4Mi4zIDIzLjcgNjguOSAyMy43IDQ0LjYgMzQuNiA0NC42IDQ4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.header-logo__bar{background-color:var(--text-color);border-left:1px solid var(--text-color);height:11.56px;margin:0 7.5px;width:0}.header-logo__text{color:var(--text-color);font-size:10.11px;letter-spacing:.722408px;line-height:12px;text-transform:uppercase}.header-navigation{display:none}.header-button{display:none;margin-left:15px;text-transform:uppercase}.header-search-box{display:none;margin-right:20px;width:200px}.scylla-dropdown__content{background-color:var(--card-bg)}.scylla-dropdown--header .scylla-dropdown__item{font-size:14px}.scylla-dropdown--header .scylla-dropdown__title{text-transform:uppercase}.scylla-dropdown--header .scylla-dropdown__title .chevron{font-size:24px;line-height:.5em;margin-left:4px}.contents.local>ul>li .scylla-dropdown--header .scylla-dropdown__content a:before,.scylla-dropdown--header .scylla-dropdown__content .contents.local>ul>li a:before,.scylla-dropdown--header .scylla-dropdown__content .scylla-icon{min-height:20px;width:20px}@media screen and (min-width:1024px){.header{padding:18px 0}.header-logo__img{width:152px}.header-logo__bar{height:16px;margin:0 10px}.header-logo__text{font-size:14px;letter-spacing:.722408px;line-height:12px;text-transform:uppercase}.header-navigation{align-items:center;display:flex;justify-content:center}.header-search-box{align-items:center;display:flex;flex-direction:row;gap:20px}}@media screen and (min-width:1200px){.header-logo{margin-left:30px;width:357px}.header-search-box{margin-right:30px;max-width:20%;width:318px}.header-button{display:block}}.side-nav{background:var(--navigation-bg);display:none;height:100vh;left:0;line-height:24px;max-height:calc(100vh - 50px);overflow-y:auto;padding:20px 20px 0;position:fixed;top:50px;width:100%;z-index:100}.side-nav__title{font-weight:700;margin-bottom:20px}.side-nav__title a{color:var(--text-color);text-decoration:none}.side-nav__title a:hover{font-weight:700}.side-nav__content{max-width:90%;overflow-wrap:break-word}.side-nav__content label,.side-nav__content label i{align-items:center;display:flex;margin:0;padding:0}.side-nav__content label{color:inherit;font-size:22px;line-height:1;width:12px}.side-nav__content .scylla-icon--expand{height:5px;vertical-align:top;width:10px}.side-nav__content .toctree-checkbox{display:none;position:absolute;right:20px}.side-nav__content .toctree-checkbox~ul{display:none;margin-right:20px}.side-nav__content .toctree-checkbox:checked~ul{display:block}.side-nav__content ul{margin:0}.side-nav__content a:not(.current){color:var(--text-color)}.side-nav__content a:not(.current):hover{color:var(--link-color-hover);font-weight:400}.side-nav__content li{list-style:none;padding:0 0 24px}.side-nav__content li.has-children{align-items:center;display:flex;flex-wrap:wrap}.side-nav__content li.has-children>a{max-width:calc(100% - 15px)}.side-nav__content li.has-children.current{padding-bottom:20px}.side-nav__content li.has-children:hover{color:var(--link-color-hover)}.side-nav__content li.current-page{color:var(--link-color)}.side-nav__content li ul{margin-top:18px;width:100%}.side-nav__content li ul li{border-left:1px solid var(--link-color);padding:4px 0 4px 13px}.side-nav__content li ul ul{margin-left:0}.side-nav__content li .label{display:none}.side-nav__versions{max-width:90%}.side-nav__search,.side-nav__versions .dropdown{margin-bottom:20px}.collapsible-button{background:var(--white);background-color:var(--card-bg);border:0;border-radius:8px;border-radius:50%;bottom:10px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;display:none;font-size:0;left:300px;overflow:hidden;padding:13.5px;position:fixed}.collapsible-button i{display:block;font-size:20px}.side-nav--collapsed .collapsible-button{border-radius:0 30px 30px 0;left:-10px}.side-nav--collapsed .collapsible-button i{transform:rotate(180deg)}.layout--has-banner .side-nav{max-height:calc(100vh - 92.5px)}@media screen and (min-width:1024px){.side-nav{background-color:var(--navigation-bg);display:block;height:100%;left:auto;max-height:calc(100vh - 80px);padding:30px 40px;top:80px;width:286px;z-index:25}.side-nav__content{max-width:100%}.side-nav__search{display:none}.side-nav__versions{max-width:100%}.toctree-checkbox{right:40px}.layout--has-banner .side-nav{max-height:calc(100vh - 150px)}}@media screen and (min-width:1200px){.side-nav{width:357px}.side-nav--collapsed{background-color:transparent;padding-left:0;padding-right:0;width:126px}.side-nav--collapsed .side-nav-content{display:none}.collapsible-button{display:block}}.dark-theme-toggler,.side-nav-toggle{cursor:pointer;font-size:22px}.side-nav-toggle{display:flex;gap:10px;margin-right:20px;position:relative;z-index:300}@media screen and (min-width:1024px){.side-nav-toggle{display:none}}.secondary-side-nav{display:none;height:100%;line-height:24px;padding:20px;width:100%}.secondary-side-nav__content{overflow-wrap:break-word}.secondary-side-nav__content ul{list-style:none;margin:0}.secondary-side-nav__content li{border-bottom:1px solid var(--border-color);display:none;padding:10px 0;word-break:break-word}.secondary-side-nav__content li:last-child{border:0}.secondary-side-nav__content li .label{display:none}.secondary-side-nav__content li a{align-items:baseline;color:var(--text-muted);display:flex;font-size:14px}.secondary-side-nav__content li a:before{content:"";flex-shrink:0;font-size:8px;margin-right:10px;min-height:10px;opacity:.5}.secondary-side-nav__content li a.current,.secondary-side-nav__content li a:hover{color:var(--text-color);font-weight:400}.secondary-side-nav__content li a.current:before,.secondary-side-nav__content li a:hover:before{opacity:1}.secondary-side-nav__content li a.current{font-weight:700}.secondary-side-nav__content>ul>li>ul>li{display:block}.secondary-side-nav__content>ul>li{border:0;display:block}.secondary-side-nav__content>ul>li>a{display:none}@media screen and (min-width:1200px){.secondary-side-nav{display:block;max-height:100vh;max-height:calc(100vh - 80px);overflow-y:auto;padding:60px 60px 60px 20px;position:fixed;top:80px;width:286px}.layout--has-banner .secondary-side-nav{max-height:calc(100vh - 150px)}}.layout{background-color:var(--bg-color);display:flex}.pre-content{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.content{margin-top:50px;max-width:1440px;overflow-wrap:break-word;padding:20px;width:100%}.content .line-block,.content p{line-height:28px;margin-bottom:20px}.content ul{list-style:none}.content ul li:before{color:var(--text-muted);content:"•";float:left;font-family:FontAwesome;font-size:20px;font-weight:700;margin-left:-1em;margin-top:-2px;width:1em}.content ul ul{list-style:circle}.content ul ul li:before{content:""}.content ol ol{list-style:lower-latin}.content img{margin-bottom:30px}.content .inline-icon{font-size:22px}.content .inline-icon.icon-check{color:var(--primary)}.layout--full-width .content{max-width:100%;padding:0;width:100%}.layout--full-width .content .hero-wrapper,.layout--full-width .content .topics-grid{max-width:1190px}.layout--full-width .content.content--collapsed,.layout--full-width:not(.layout--sidebar) .content{margin-left:0}.landing__content{padding:0 16px}@media screen and (min-width:1024px){.content{margin-left:286px;margin-top:80px;min-height:calc(100vh - 260px);padding-bottom:100px;width:calc(100% - 286px)}}@media screen and (min-width:1200px){.content{margin-left:357px;padding:60px 40px 40px;width:calc(100% - 643px)}.content--collapsed{margin-left:126px;width:calc(100% - 412px)}.pre-content{margin-bottom:10px}.landing__content{padding:0 60px}.landing--floating .landing__content{position:relative;top:-70px}}.contents.local>ul{margin-bottom:30px;margin-left:0}.contents.local>ul>li{border-bottom:1px solid rgba(90,94,154,.1);padding:10px 0;word-break:break-word}.contents.local>ul>li:before{content:""}.contents.local>ul>li:last-child{border:0}.contents.local>ul>li ul{display:none}.contents.local>ul>li p{margin:0}.contents.local>ul>li a{font-size:14px}.contents.local>ul>li a:before{content:"";filter:invert(38%) sepia(71%) saturate(6789%) hue-rotate(231deg) brightness(90%) contrast(95%)!important;margin-right:10px;min-height:10px;opacity:.5;width:10px}.contents.local>ul>li a.current:before,.contents.local>ul>li a:hover:before{filter:brightness(0);opacity:1}.topic-title{color:var(--text-muted);font-size:10px;letter-spacing:1.5px;margin-bottom:0;text-transform:uppercase}.notice{margin-top:40px}.footer{background-color:var(--card-bg);box-shadow:0 -4px 10px rgba(0,0,0,.1);padding:30px 0;position:relative;width:100%;z-index:50}.footer-group{margin:0 auto;max-width:1030px;padding:0 20px}.footer-top{align-items:center;border-bottom:1px solid var(--border-color);display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:20px;text-align:center}.footer-logo{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0ze2ZpbGw6IzRkOWJiNn0uY2xzLTR7ZmlsbDojM2IyZDU1fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8xIj48cGF0aCBkPSJNMTg1LjYgMTAzLjFjMi4xIDMuMSA0LjggNS41IDggNi45IDMuMyAxLjUgNi42IDIuMiAxMC4xIDIuMnMzLjktLjMgNS45LS45IDMuOC0xLjUgNS41LTIuN2MxLjYtMS4yIDMtMi43IDQtNC41czEuNi0zLjggMS42LTYuMi0xLTUuOC0zLjEtNy41LTQuNy0zLjItNy44LTQuM2MtMy4xLTEuMi02LjUtMi4zLTEwLjEtMy40LTMuNy0xLjEtNy0yLjYtMTAuMS00LjVxLTQuNjUtMi44NS03LjgtNy44Yy0yLjEtMy4zLTMuMS03LjctMy4xLTEzLjJzLjUtNS4yIDEuNi04IDIuOC01LjQgNS4xLTcuNyA1LjMtNC4zIDktNS45cTUuNTUtMi40IDEzLjItMi40YzcuNjUgMCA5LjEuNiAxMy40IDEuOXM4IDMuOSAxMS4yIDcuOWwtOS40IDguNmMtMS41LTIuMy0zLjUtNC4xLTYuMi01LjQtMi43LTEuNC01LjctMi4xLTkuMS0yLjFzLTUuOS40LTggMS4zcS0zLjE1IDEuMi01LjEgMy4zYy0xLjMgMS4zLTIuMiAyLjgtMi43IDQuM3MtLjggMi45LS44IDQuMmMwIDMuNiAxIDYuNCAzLjEgOC4zczQuNyAzLjUgNy44IDQuNyA2LjUgMi4zIDEwLjEgMy4zYzMuNyAxIDcgMi4zIDEwLjEgNHM1LjcgNC4xIDcuOCA3IDMuMSA3IDMuMSAxMi4xLS44IDcuOC0yLjQgMTEuMS0zLjcgNi4xLTYuMyA4LjNjLTIuNyAyLjMtNS44IDQtOS40IDUuMnMtNy41IDEuOC0xMS42IDEuOC0xMC43LTEtMTUuNi0yLjktOC44LTQuOS0xMS43LTguOWw5LjUtOC4yWk0yODYuMSA3OXEtMy0zLjE1LTYuMy00LjhjLTIuMi0xLjEtNC45LTEuNi03LjktMS42cy01LjYuNS03LjggMS42LTQuMSAyLjYtNS42IDQuNS0yLjYgNC4xLTMuNCA2LjVjLS44IDIuNS0xLjEgNS0xLjEgNy43cy40IDUuMiAxLjMgNy41Yy45IDIuNCAyLjEgNC40IDMuNyA2LjJzMy41IDMuMiA1LjggNC4yIDQuOCAxLjUgNy42IDEuNSA1LjctLjUgNy45LTEuNnEzLjMtMS42NSA2LTQuOGw3LjcgNy43Yy0yLjggMy4xLTYuMSA1LjQtOS44IDYuOHMtNy43IDIuMS0xMS45IDIuMS04LjUtLjctMTIuMS0yLjJjLTMuNy0xLjUtNi44LTMuNS05LjUtNi4xcy00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4xIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4zIDYzLjhoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN0gzNTZsLTI3LjIgNjkuNmMtMSAyLjUtMiA0LjgtMyA2LjgtMSAyLjEtMi4zIDMuOC0zLjcgNS4zcy0zLjIgMi42LTUuMiAzLjRxLTMgMS4yLTcuNSAxLjJjLTQuNSAwLTMuMi0uMS00LjktLjMtMS42LS4yLTMuMi0uNi00LjgtMS4zbDEuMy05LjljMi4yLjkgNC4zIDEuMyA2LjUgMS4zczMuMS0uMiA0LjMtLjdjMS4yLS40IDIuMi0xLjEgMy0xLjlxMS4yLTEuMiAyLjEtM2MuNi0xLjEgMS4xLTIuNCAxLjctMy45bDMuNS05LjEtMjMuNy01Ny42Wk0zNjQuMSAyOS43SDM3NVYxMjFoLTEwLjl6TTM4Ni43IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi44IDcwLjhjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczgtMi4xIDEyLjEtMi4xIDcuOC41IDEwLjggMS42YzMgMSA1LjUgMi41IDcuNCA0LjIgMS45IDEuOCAzLjQgMy44IDQuMyA2LjFzMS40IDQuNyAxLjQgNy4ydjI5LjJjMCAyIDAgMy45LjEgNS42IDAgMS43LjIgMy4zLjQgNC44aC05LjdjLS4yLTIuOS0uNC01LjgtLjQtOC43aC0uMmMtMi40IDMuNy01LjMgNi4zLTguNiA3LjktMy4zIDEuNS03LjEgMi4zLTExLjUgMi4zcy01LjItLjQtNy42LTEuMXEtMy42LTEuMDUtNi4zLTMuM2MtMS44LTEuNS0zLjItMy4yLTQuMy01LjQtMS0yLjEtMS42LTQuNi0xLjYtNy40cy44LTYuOCAyLjUtOS4zYzEuNi0yLjUgMy45LTQuNSA2LjgtNi4xczYuMi0yLjcgMTAtMy40IDcuOS0xIDEyLjMtMWg4di0yLjRjMC0xLjUtLjMtMi45LS44LTQuMy0uNi0xLjUtMS40LTIuOC0yLjUtMy45LTEuMS0xLjItMi41LTIuMS00LjItMi44cy0zLjctMS02LTEtMy45LjItNS41LjYtMyAuOS00LjMgMS41LTIuNSAxLjMtMy41IDIuMS0yLjEgMS42LTMgMi4zbC02LjUtNi44Wm0zMC43IDIyLjdjLTIuNiAwLTUuMi4xLTcuOS40cy01LjIuOC03LjQgMS42LTQgMS45LTUuNCAzLjQtMi4xIDMuMy0yLjEgNS42YzAgMy4zIDEuMSA1LjcgMy4zIDcuMSAyLjIgMS41IDUuMiAyLjIgOSAyLjJzNS41LS41IDcuNi0xLjVxMy4xNS0xLjUgNS4xLTMuOWMxLjMtMS42IDIuMi0zLjQgMi44LTUuNHMuOC0zLjkuOC01Ljl2LTMuNnpNNDczLjggMzUuNWgyOS44cTkgMCAxNS45IDIuMWM0LjYgMS40IDguNSAzLjIgMTEuOCA1LjVzNi4xIDQuOSA4LjMgNy45IDQgNiA1LjMgOS4yYzEuMyAzLjEgMi4yIDYuMyAyLjggOS40cy44IDYgLjggOC43cTAgOC4yNS0zIDE1LjljLTIgNS4xLTUgOS43LTguOSAxMy42LTQgNC04LjggNy4yLTE0LjcgOS42LTUuOCAyLjQtMTIuNiAzLjYtMjAuMiAzLjZoLTI3Ljl6bTExLjYgNzQuN0g1MDBjNC45IDAgOS42LS43IDE0LTJzOC4yLTMuMyAxMS41LTYgNS45LTYgNy45LTEwYzEuOS00IDIuOS04LjYgMi45LTEzLjlzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC40cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40djYzLjhaTTU2MS43IDM1LjVoMjkuN2MzLjcgMCA3LjEuNCAxMC4zIDEuM3M1LjkgMi4yIDguMiAzLjlxMy40NSAyLjU1IDUuNCA2LjZjMS4zIDIuNyAyIDUuOSAyIDkuNXMtMS40IDguOS00LjEgMTItNi4zIDUuNC0xMC42IDYuOHYuMmMyLjYuMiA1IC44IDcuMiAyIDIuMyAxLjIgNC4yIDIuNyA1LjkgNC42IDEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjRWMzUuNVpNNTczLjMgNzFoMTUuOGMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4ydjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yIDEuOC0xLjEgMy40LTIuNiA0LjctNC40IDEuMy0xLjkgMS45LTQuMyAxLjktNy40IDAtNS4xLTEuNy04LjktNS0xMS40cy03LjgtMy44LTEzLjQtMy44aC0xNy4ydjI5LjdaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNODYuMyA0LjJDNTMuNCA0LjIgMzAuNCAyNC43IDMwLjQgNTRzNC45IDM0LjggOS4xIDU1LjhjMyAxNS4xIDUuNiAyNy4zIDUuNyAyNy42LjggMy43IDQuNCA2LjEgOC4yIDUuNWguOGMwLS4xLS42LS43LS42LS43LTEuMS0xLjEtMS44LTIuNC0yLjMtMy44LS4yLS44LS4zLTEuNS0uNC0yLjEgMC0uMyAwLS42LS4xLS45bC0xLjUtOC45Yy0uNi00LTEuMy04LTEuOC0xMS44IDAtLjMuMS0uNS40LS41cy41LjEuNS40cTEuMiA1LjcgMi40IDExLjdsMS43IDguOGMwIC4zLjEuNi4yLjkuMS43LjMgMS40LjQgMiAuNSAxLjUgMS41IDIuOCAyLjggMy44LjEuMS4zLjIuNC4zLjguNCAxLjYuNyAyLjUuOS45LjEgMS44LjEgMi42IDAgLjktLjIgMS45LS42IDIuNy0xLjJsLjMtLjItLjItLjNjLS43LS45LTEuMS0xLjktMS40LTMtLjItLjgtLjMtMS41LS4zLTIuMnYtLjlsLS45LTguOWMtLjQtNC4xLS43LTguMS0xLTExLjkgMC0uMSAwLS4yLjEtLjMgMCAwIC4yLS4yLjMtLjIuMyAwIC41LjIuNS40LjUgMy44IDEuMSA3LjggMS42IDExLjhsMS4xIDguOWMwIC4zIDAgLjUuMS44IDAgLjcuMiAxLjQuMyAyIC4yLjcuNCAxLjMuOCAxLjkuNS45IDEuMiAxLjYgMiAyLjIgMCAwIDAgLjEuMS4xIDEuNCAxIDMuMyAxLjQgNSAxLjFzMy4zLTEuMiA0LjUtMi41Yy4zLS4zLjUtLjcuNy0xLjF2LS40Yy0uMS0uNC0uMi0uOC0uNC0xLjItLjEtLjYtLjItMS40LS4yLTIuM3YtNC40Yy0uMi01LjYtLjItMTEuMy0uMi0xNy42IDAtLjMuMi0uNS41LS41cy41LjIuNS40Yy40IDYuMy43IDEyIC45IDE3LjZsLjIgNC40YzAgLjggMCAxLjQuMiAyIC4xLjUuMyAxLjIuNyAxLjh2LjFjMS4yIDIuMiAzLjYgMy43IDYuMSAzLjdoLjFjMi41IDAgNS0xLjQgNi4zLTMuNy4zLS41LjUtMS4xLjctMS44LjEtLjYuMi0xLjIuMi0xLjlsLjItNC41Yy4yLTUuMy41LTExIC45LTE3LjYgMC0uMy4yLS41LjUtLjQuMiAwIC40LjIuNC41IDAgNi42IDAgMTIuMy0uMSAxNy42djQuNGMwIC42IDAgMS41LS4zIDIuMyAwIC40LS4yLjgtLjMgMS4ydi40Yy4yLjQuNS43LjcgMS4xIDEuMSAxLjQgMi43IDIuMyA0LjUgMi41IDEuNy4zIDMuNi0uMSA1LTEuMWguMWMuOC0uNiAxLjUtMS40IDItMi4yLjQtLjYuNi0xLjIuOC0xLjkuMS0uNi4yLTEuMy4zLTIgMC0uMyAwLS41LjEtLjhsMS4xLTguOWMuNS00IDEuMS04IDEuNi0xMS44IDAtLjEgMC0uMi4yLS4zLjEgMCAuMi0uMS4zIDAgLjIgMCAuNC4zLjQuNS0uMyAzLjgtLjcgNy44LTEgMTEuOWwtLjkgOC45di44YzAgLjctLjEgMS40LS4zIDIuMi0uMyAxLjEtLjcgMi4xLTEuNCAzbC0uMi4zLjMuMmMuOC42IDEuOCAxIDIuNyAxLjJzMS43LjIgMi42IDBjLjktLjEgMS43LS40IDIuNS0uOS4yIDAgLjMtLjIuNC0uMyAxLjMtLjkgMi4zLTIuMyAyLjgtMy44LjItLjUuMy0xLjMuNC0yIDAtLjMuMS0uNi4yLS44bDEuNy04LjhjLjgtNCAxLjYtOCAyLjQtMTEuNyAwLS4zLjMtLjQuNi0uNC4yIDAgLjQuMy40LjUtLjYgMy44LTEuMiA3LjgtMS44IDExLjhsLTEuNSA4LjljMCAuMy0uMS42LS4xLjktLjEuNy0uMiAxLjMtLjQgMi4yLS40IDEuNC0xLjIgMi43LTIuMyAzLjhsLS41LjUuNy4yYy40IDAgLjguMSAxLjIuMSAzLjMgMCA2LjMtMi4zIDctNS42IDAtLjMgMi44LTEyLjkgNS44LTI4LjUgNC4xLTIwLjkgOS00NyA5LTU1QzE0MiAyNSAxMTkgNC41IDg2LjEgNC41WiIgc3R5bGU9ImZpbGw6IzU3ZDFlNSIvPjxwYXRoIGQ9Ik0xMzMuMSAxMDkuN2MtMy4xIDE1LjctNS43IDI3LjUtNS43IDI3LjctLjcgMy4yLTMuNyA1LjQtNyA1LjRoLTEuNmwuMy0uNGMxLjEtMS4xIDEuOS0yLjQgMi4zLTMuOC4yLS44LjMtMS41LjQtMi4yIDAtLjQgMC0uNi4xLS45bDEuNS04LjljLjYtNCAxLjMtOCAxLjgtMTEuOCAwLS4zLS4yLS43LS41LS43aC0uNWMtLjEgMC0uMy4yLS4zLjQtLjggMy43LTEuNiA3LjctMi40IDExLjdsLTEuNyA4LjhjMCAuMiAwIC40LS4xLjZ2LjNjLS4yLjctLjMgMS40LS41IDEuOS0uNCAxLjUtMS40IDIuOC0yLjcgMy43LS4xIDAtLjMuMi0uNC4zLS43LjQtMS41LjctMi40LjhzLTEuNy4xLTIuNiAwYy0uOS0uMi0xLjgtLjYtMi42LTEuMmgtLjJjMC0uMS4xLS4zLjEtLjMuNy0xIDEuMS0yIDEuNC0zLjEuMi0uOC4zLTEuNS4zLTIuM3YtLjhsLjktOC45Yy40LTQuMS43LTguMSAxLTExLjkgMC0uMy0uMi0uNy0uNi0uNy0uMiAwLS4zIDAtLjUuMS0uMS4xLS4yLjMtLjMuNC0uNSAzLjgtMS4xIDcuNy0xLjYgMTEuOGwtMS4xIDguOWMwIC4zIDAgLjUtLjEuOCAwIC43LS4yIDEuNC0uMyAyLS4yLjYtLjQgMS4yLS44IDEuOC0uNS44LTEuMiAxLjYtMiAyLjEgMCAwIDAgLjEtLjEuMS0xLjQuOS0zLjIgMS4zLTQuOSAxLjFzLTMuMy0xLjEtNC4zLTIuNWMtLjMtLjMtLjUtLjctLjctMXYtLjJjLjEtLjQuMy0uOC40LTEuMi4yLS44LjItMS44LjItMi40di00LjRjLjItNS4yLjItMTAuOS4yLTE3LjYgMC0uMy0uMy0uNi0uNi0uNy0uNCAwLS43LjMtLjcuNi0uNCA2LjUtLjcgMTIuMy0uOSAxNy42bC0uMiA0LjVjMCAuNyAwIDEuMy0uMiAxLjktLjIuNy0uNCAxLjMtLjcgMS44LTEuMiAyLjItMy42IDMuNi02IDMuNkg4NmMtMi40IDAtNC44LTEuNC02LTMuNnYtLjFjLS4zLS42LS41LTEuMi0uNy0xLjctLjEtLjYtLjItMS4yLS4yLTJsLS4yLTQuNGMtLjItNS41LS41LTExLjMtLjktMTcuNiAwLS4zLS4zLS42LS43LS42cy0uNy4zLS43LjdjMCA2LjMgMCAxMiAuMSAxNy42djQuNHEwIDEuNS4zIDIuNGMuMS40LjIuOS40IDEuMnYuMmMtLjIuNC0uNS43LS43IDFhNy42IDcuNiAwIDAgMS00LjMgMi41Yy0xLjcuMy0zLjUtLjEtNC45LTEuMWgtLjFjLS44LS42LTEuNS0xLjMtMi0yLjItLjMtLjYtLjYtMS4yLS44LTEuOC0uMS0uNS0uMi0xLjItLjMtMiAwLS4zIDAtLjUtLjEtLjhsLTEuMS04LjljLS41LTQuMS0xLjEtOC4xLTEuNi0xMS44IDAtLjQtLjMtLjYtLjctLjYtLjIgMC0uMyAwLS40LjItLjEuMS0uMi4zLS4yLjUuMyAzLjguNyA3LjggMSAxMS45bC45IDguOXYuOWMwIC43LjEgMS40LjMgMi4yLjMgMS4xLjcgMi4xIDEuNCAzLjF2LjJjLjEgMCAwIC4xIDAgLjEtLjguNi0xLjcgMS0yLjYgMS4yLS44LjItMS43LjItMi42IDBxLTEuMzUtLjE1LTIuNC0uOWMtLjEgMC0uMy0uMi0uNC0uMy0xLjMtLjktMi4zLTIuMi0yLjctMy43LS4yLS41LS4zLTEuMi0uNC0xLjkgMC0uNC0uMS0uNy0uMi0uOWwtMS43LTguOGMtLjgtNC0xLjYtOC0yLjQtMTEuNyAwLS4zLS40LS42LS43LS41LS40IDAtLjYuNC0uNi43LjYgMy44IDEuMiA3LjggMS44IDExLjhsMS41IDguOWMwIC4zIDAgLjUuMS44LjEuOC4yIDEuNS40IDIuMy40IDEuNCAxLjIgMi43IDIuMyAzLjhsLjMuM2gtLjRjLTMuNy43LTcuMi0xLjctOC01LjMtLjMtMS4zLTMtMTMuMS01LjktMjcuNmw0LjIgMjhjMCAuMi4xLjUuMi43di4yYy4xLjIuMi4zLjMuNSAwIDAgMCAuMi4xLjMgMCAuMS4xLjIuMi40IDAgLjEuMS4yLjIuM3YuMmwuNi45Yy4xLjIuMi4zLjQuNS4xLjIuMy4zLjQuNSAxLjYgMS41IDMuNyAyLjMgNS45IDIuM3MxIDAgMS40LS4xbDMuMi0uNWMuNS4yIDEuMS40IDEuNy40IDEuMS4yIDIuMi4xIDMuMiAwIDEuMS0uMiAyLjMtLjcgMy4zLTEuNWwuOC0uNmMuMi4yLjUuNC44LjZsLjIuMmMxLjcgMS4xIDQgMS42IDYuMSAxLjNzNC4xLTEuNCA1LjQtMy4xYy4yLS4zLjUtLjYuNy0uOSAxLjUgMi41IDQuNCA0LjEgNy4zIDQuMWguMmMyLjkgMCA1LjctMS42IDcuMi00LjEuMi4zLjQuNy43LjkgMS4zIDEuNyAzLjMgMi44IDUuNCAzLjFoMS4zYzEuNyAwIDMuNC0uNSA0LjgtMS40IDAgMCAuMSAwIC4yLS4xLjMtLjIuNS0uNC44LS42bC44LjZxMS41IDEuMDUgMy4zIDEuNWMxIC4yIDIuMS4yIDMuMiAwcTEuMDUtLjE1IDIuMS0uNmwyLjcuN2guMWMuNS4xLjkuMSAxLjQuMSA0IDAgNy42LTIuOSA4LjUtNi44IDAtLjEgNC4yLTI4IDQuMi0yOFoiIGNsYXNzPSJjbHMtNCIvPjxwYXRoIGQ9Ik00Ni40IDE3LjdjLTEwLjEgOC44LTE2IDIxLjQtMTYgMzYuMnMxNC41IDgyLjggMTQuNyA4My41Yy4zIDEuNSAxLjQgMi42IDIuNCAzLjYtMy42LTE3LjQtMTUuNC03My41LTE1LjQtODYuNnM1LjItMjcuMiAxNC4zLTM2LjciIHN0eWxlPSJmaWxsOiM5M2UxZWYiLz48cGF0aCBkPSJNNzEuMyAyNS42QzU3LjkgMjUuNiA0NyAzNi41IDQ3IDQ5LjlzMTAuOSAyNC4zIDI0LjMgMjQuMyAyNC4zLTEwLjkgMjQuMy0yNC4zLTEwLjktMjQuMy0yNC4zLTI0LjMiIGNsYXNzPSJjbHMtMyIvPjxwYXRoIGQ9Ik00NC42IDQ4YzAgMTMuNCAxMC45IDI0LjMgMjQuMyAyNC4zUzkzLjIgNjEuNCA5My4yIDQ4IDgyLjMgMjMuNyA2OC45IDIzLjcgNDQuNiAzNC42IDQ0LjYgNDgiIHN0eWxlPSJmaWxsOiNmZmYiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=);background-position:50%;background-repeat:no-repeat;height:36px;margin-bottom:0;width:156px!important}.dark .footer-logo{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZn0uY2xzLTN7ZmlsbDojNGQ5YmI2fS5jbHMtNHtmaWxsOiMzYjJkNTV9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkxheWVyXzEiPjxwYXRoIGQ9Ik0xODUuNCAxMDMuMWMyLjEgMy4xIDQuOCA1LjUgOCA2LjkgMy4zIDEuNSA2LjYgMi4yIDEwLjEgMi4yczMuOS0uMyA1LjktLjkgMy44LTEuNSA1LjUtMi43YzEuNi0xLjIgMy0yLjcgNC00LjVzMS42LTMuOCAxLjYtNi4yLTEtNS44LTMuMS03LjUtNC43LTMuMi03LjgtNC4zYy0zLjEtMS4yLTYuNS0yLjMtMTAuMi0zLjRxLTUuNTUtMS42NS0xMC4yLTQuNXQtNy44LTcuOGMtMi4xLTMuMy0zLjEtNy43LTMuMS0xMy4ycy41LTUuMiAxLjYtOCAyLjgtNS40IDUuMS03LjcgNS4zLTQuMyA5LTUuOXE1LjU1LTIuNCAxMy4yLTIuNGM3LjY1IDAgOS4xLjYgMTMuNCAxLjlzOCAzLjkgMTEuMiA3LjlsLTkuNCA4LjZjLTEuNS0yLjMtMy41LTQuMS02LjItNS40LTIuNy0xLjQtNS43LTIuMS05LjEtMi4xcy01LjkuNC04IDEuM3EtMy4xNSAxLjItNS4xIDMuM2MtMS4zIDEuMy0yLjIgMi44LTIuNyA0LjNzLS44IDIuOS0uOCA0LjJjMCAzLjYgMSA2LjQgMy4xIDguM3M0LjcgMy41IDcuOCA0LjdxNC42NSAxLjggMTAuMiAzLjNjMy43IDEgNy4xIDIuMyAxMC4yIDRzNS43IDQuMSA3LjggNyAzLjEgNyAzLjEgMTIuMS0uOCA3LjgtMi40IDExLjEtMy43IDYuMS02LjMgOC4zYy0yLjcgMi4zLTUuOCA0LTkuNCA1LjJzLTcuNSAxLjgtMTEuNiAxLjgtMTAuNy0xLTE1LjYtMi45LTguOC00LjktMTEuNy04LjlsOS41LTguMlpNMjg2IDc5cS0zLTMuMTUtNi4zLTQuOGMtMi4yLTEuMS00LjktMS42LTcuOS0xLjZzLTUuNi41LTcuOCAxLjYtNC4xIDIuNi01LjYgNC41LTIuNiA0LjEtMy40IDYuNWMtLjggMi41LTEuMSA1LTEuMSA3LjdzLjQgNS4yIDEuMyA3LjVjLjkgMi40IDIuMSA0LjUgMy43IDYuMnMzLjUgMy4yIDUuOCA0LjIgNC44IDEuNSA3LjYgMS41IDUuNy0uNSA3LjktMS42cTMuMy0xLjY1IDYtNC44bDcuNyA3LjdjLTIuOCAzLjEtNi4xIDUuNC05LjkgNi44LTMuNyAxLjQtNy43IDIuMS0xMS45IDIuMXMtOC41LS43LTEyLjItMi4yLTYuOC0zLjUtOS41LTYuMS00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4yIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4yIDYzLjdoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN2gxMS42bC0yNy4yIDY5LjZjLTEgMi41LTIgNC44LTMgNi44LTEgMi4xLTIuMyAzLjgtMy43IDUuM3MtMy4yIDIuNi01LjIgMy40LTQuNiAxLjItNy41IDEuMi0zLjItLjEtNC45LS4zYy0xLjYtLjItMy4yLS42LTQuOC0xLjNsMS4zLTkuOWMyLjIuOSA0LjMgMS4zIDYuNSAxLjNzMy4xLS4yIDQuMy0uN2MxLjItLjQgMi4yLTEuMSAzLTEuOXExLjItMS4yIDIuMS0zYy42LTEuMSAxLjEtMi40IDEuNy0zLjlsMy41LTkuMS0yMy43LTU3LjZaTTM2My45IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTM4Ni42IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi43IDcwLjdjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczguMS0yLjEgMTIuMS0yLjEgNy44LjUgMTAuOCAxLjZjMyAxIDUuNSAyLjUgNy40IDQuMiAxLjkgMS44IDMuNCAzLjggNC4zIDYuMXMxLjQgNC43IDEuNCA3LjJ2MjkuMmMwIDIgMCAzLjkuMSA1LjYgMCAxLjcuMiAzLjMuNCA0LjhoLTkuN2MtLjItMi45LS40LTUuOC0uNC04LjdoLS4yYy0yLjQgMy43LTUuMyA2LjMtOC42IDcuOS0zLjMgMS41LTcuMSAyLjMtMTEuNSAyLjNzLTUuMi0uNC03LjYtMS4xcS0zLjYtMS4wNS02LjMtMy4zYy0xLjgtMS41LTMuMi0zLjItNC4zLTUuNC0xLTIuMS0xLjYtNC42LTEuNi03LjRzLjgtNi44IDIuNS05LjNjMS42LTIuNSAzLjktNC41IDYuOC02LjFzNi4yLTIuNyAxMC0zLjQgNy45LTEgMTIuMy0xaDh2LTIuNGMwLTEuNS0uMy0yLjktLjgtNC4zLS42LTEuNS0xLjQtMi44LTIuNS0zLjktMS4xLTEuMi0yLjUtMi4xLTQuMi0yLjhzLTMuNy0xLTYtMS0zLjkuMi01LjUuNi0zIC45LTQuMyAxLjUtMi41IDEuMy0zLjUgMi4xLTIuMSAxLjYtMyAyLjNsLTYuNS02LjhabTMwLjcgMjIuOGMtMi42IDAtNS4yLjEtNy45LjRzLTUuMi44LTcuNCAxLjYtNCAxLjktNS40IDMuNC0yLjEgMy4zLTIuMSA1LjZjMCAzLjMgMS4xIDUuNyAzLjMgNy4xIDIuMiAxLjUgNS4yIDIuMiA5IDIuMnM1LjUtLjUgNy42LTEuNXEzLjE1LTEuNSA1LjEtMy45YzEuMy0xLjYgMi4yLTMuNCAyLjgtNS40cy44LTMuOS44LTUuOXYtMy42ek00NzMuOCAzNS41aDI5LjlxOSAwIDE1LjkgMi4xYzQuNiAxLjQgOC41IDMuMiAxMS44IDUuNXM2LjEgNC45IDguMyA3LjkgNCA2IDUuMyA5LjJjMS4zIDMuMSAyLjIgNi4zIDIuOCA5LjRzLjggNiAuOCA4LjdxMCA4LjI1LTMgMTUuOWMtMiA1LjEtNSA5LjctOC45IDEzLjctNCA0LTguOCA3LjItMTQuNyA5LjYtNS44IDIuNC0xMi42IDMuNi0yMC4zIDMuNmgtMjcuOXptMTEuNiA3NC42SDUwMGM0LjkgMCA5LjYtLjcgMTQtMnM4LjItMy4zIDExLjUtNiA1LjktNiA3LjktMTBjMS45LTQgMi45LTguNiAyLjktMTRzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC41cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40VjExMFpNNTYxLjYgMzUuNWgyOS43YzMuNyAwIDcuMi40IDEwLjMgMS4zIDMuMi45IDUuOSAyLjIgOC4yIDMuOXEzLjQ1IDIuNTUgNS40IDYuNmMxLjMgMi43IDIgNS45IDIgOS41cy0xLjQgOC45LTQuMSAxMi02LjMgNS40LTEwLjYgNi44di4yYzIuNi4yIDUgLjggNy4zIDJzNC4yIDIuNyA1LjkgNC42YzEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjR6TTU3My4yIDcxSDU4OWMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4zdjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yczMuNC0yLjYgNC43LTQuNGMxLjMtMS45IDEuOS00LjMgMS45LTcuNCAwLTUuMS0xLjctOC45LTUtMTEuNHMtNy44LTMuOC0xMy40LTMuOGgtMTcuMnYyOS43WiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTg2LjMgNC4yQzUzLjQgNC4yIDMwLjQgMjQuNyAzMC40IDU0czQuOSAzNC44IDkuMSA1NS44YzMgMTUuMSA1LjYgMjcuMyA1LjcgMjcuNi44IDMuNyA0LjQgNi4xIDguMiA1LjVoLjhjMC0uMS0uNi0uNy0uNi0uNy0xLjEtMS4xLTEuOC0yLjQtMi4zLTMuOC0uMi0uOC0uMy0xLjUtLjQtMi4xIDAtLjMgMC0uNi0uMS0uOWwtMS41LTguOWMtLjYtNC0xLjMtOC0xLjgtMTEuOCAwLS4zLjEtLjUuNC0uNXMuNS4xLjUuNHExLjIgNS43IDIuNCAxMS43bDEuNyA4LjhjMCAuMy4xLjYuMi45LjEuNy4zIDEuNC40IDIgLjUgMS41IDEuNSAyLjggMi44IDMuOC4xLjEuMy4yLjQuMy44LjQgMS42LjcgMi41LjkuOS4xIDEuOC4xIDIuNiAwIC45LS4yIDEuOS0uNiAyLjctMS4ybC4zLS4yLS4yLS4zYy0uNy0uOS0xLjEtMS45LTEuNC0zLS4yLS44LS4zLTEuNS0uMy0yLjJ2LS45bC0uOS04LjljLS40LTQuMS0uNy04LjEtMS0xMS45IDAtLjEgMC0uMi4xLS4zIDAgMCAuMi0uMi4zLS4yLjMgMCAuNS4yLjUuNC41IDMuOCAxLjEgNy44IDEuNiAxMS44bDEuMSA4LjljMCAuMyAwIC41LjEuOCAwIC43LjIgMS40LjMgMiAuMi43LjQgMS4zLjggMS45LjUuOSAxLjIgMS42IDIgMi4yIDAgMCAwIC4xLjEuMSAxLjQgMSAzLjMgMS40IDUgMS4xczMuMy0xLjIgNC41LTIuNWMuMy0uMy41LS43LjctMS4xdi0uNGMtLjEtLjQtLjItLjgtLjQtMS4yLS4xLS42LS4yLTEuNC0uMi0yLjN2LTQuNGMtLjItNS42LS4yLTExLjMtLjItMTcuNiAwLS4zLjItLjUuNS0uNXMuNS4yLjUuNGMuNCA2LjMuNyAxMiAuOSAxNy42bC4yIDQuNGMwIC44IDAgMS40LjIgMiAuMS41LjMgMS4yLjcgMS44di4xYzEuMiAyLjIgMy42IDMuNyA2LjEgMy43aC4xYzIuNSAwIDUtMS40IDYuMy0zLjcuMy0uNS41LTEuMS43LTEuOC4xLS42LjItMS4yLjItMS45bC4yLTQuNWMuMi01LjMuNS0xMSAuOS0xNy42IDAtLjMuMi0uNS41LS40LjIgMCAuNC4yLjQuNSAwIDYuNiAwIDEyLjMtLjEgMTcuNnY0LjRjMCAuNiAwIDEuNS0uMyAyLjMgMCAuNC0uMi44LS4zIDEuMnYuNGMuMi40LjUuNy43IDEuMSAxLjEgMS40IDIuNyAyLjMgNC41IDIuNSAxLjcuMyAzLjYtLjEgNS0xLjFoLjFjLjgtLjYgMS41LTEuNCAyLTIuMi40LS42LjYtMS4yLjgtMS45LjEtLjYuMi0xLjMuMy0yIDAtLjMgMC0uNS4xLS44bDEuMS04LjljLjUtNCAxLjEtOCAxLjYtMTEuOCAwLS4xIDAtLjIuMi0uMy4xIDAgLjItLjEuMyAwIC4yIDAgLjQuMy40LjUtLjMgMy44LS43IDcuOC0xIDExLjlsLS45IDguOXYuOGMwIC43LS4xIDEuNC0uMyAyLjItLjMgMS4xLS43IDIuMS0xLjQgM2wtLjIuMy4zLjJjLjguNiAxLjggMSAyLjcgMS4yczEuNy4yIDIuNiAwYy45LS4xIDEuNy0uNCAyLjUtLjkuMiAwIC4zLS4yLjQtLjMgMS4zLS45IDIuMy0yLjMgMi44LTMuOC4yLS41LjMtMS4zLjQtMiAwLS4zLjEtLjYuMi0uOGwxLjctOC44Yy44LTQgMS42LTggMi40LTExLjcgMC0uMy4zLS40LjYtLjQuMiAwIC40LjMuNC41LS42IDMuOC0xLjIgNy44LTEuOCAxMS44bC0xLjUgOC45YzAgLjMtLjEuNi0uMS45LS4xLjctLjIgMS4zLS40IDIuMi0uNCAxLjQtMS4yIDIuNy0yLjMgMy44bC0uNS41LjcuMmMuNCAwIC44LjEgMS4yLjEgMy4zIDAgNi4zLTIuMyA3LTUuNiAwLS4zIDIuOC0xMi45IDUuOC0yOC41IDQuMS0yMC45IDktNDcgOS01NUMxNDIgMjUgMTE5IDQuNSA4Ni4xIDQuNVoiIHN0eWxlPSJmaWxsOiM1N2QxZTUiLz48cGF0aCBkPSJNMTMzLjEgMTA5LjdjLTMuMSAxNS43LTUuNyAyNy41LTUuNyAyNy43LS43IDMuMi0zLjcgNS40LTcgNS40aC0xLjZsLjMtLjRjMS4xLTEuMSAxLjktMi40IDIuMy0zLjguMi0uOC4zLTEuNS40LTIuMiAwLS40IDAtLjYuMS0uOWwxLjUtOC45Yy42LTQgMS4zLTggMS44LTExLjggMC0uMy0uMi0uNy0uNS0uN2gtLjVjLS4xIDAtLjMuMi0uMy40LS44IDMuNy0xLjYgNy43LTIuNCAxMS43bC0xLjcgOC44YzAgLjIgMCAuNC0uMS42di4zYy0uMi43LS4zIDEuNC0uNSAxLjktLjQgMS41LTEuNCAyLjgtMi43IDMuNy0uMSAwLS4zLjItLjQuMy0uNy40LTEuNS43LTIuNC44cy0xLjcuMS0yLjYgMGMtLjktLjItMS44LS42LTIuNi0xLjJoLS4yYzAtLjEuMS0uMy4xLS4zLjctMSAxLjEtMiAxLjQtMy4xLjItLjguMy0xLjUuMy0yLjN2LS44bC45LTguOWMuNC00LjEuNy04LjEgMS0xMS45IDAtLjMtLjItLjctLjYtLjctLjIgMC0uMyAwLS41LjEtLjEuMS0uMi4zLS4zLjQtLjUgMy44LTEuMSA3LjctMS42IDExLjhsLTEuMSA4LjljMCAuMyAwIC41LS4xLjggMCAuNy0uMiAxLjQtLjMgMi0uMi42LS40IDEuMi0uOCAxLjgtLjUuOC0xLjIgMS42LTIgMi4xIDAgMCAwIC4xLS4xLjEtMS40LjktMy4yIDEuMy00LjkgMS4xcy0zLjMtMS4xLTQuMy0yLjVjLS4zLS4zLS41LS43LS43LTF2LS4yYy4xLS40LjMtLjguNC0xLjIuMi0uOC4yLTEuOC4yLTIuNHYtNC40Yy4yLTUuMi4yLTEwLjkuMi0xNy42IDAtLjMtLjMtLjYtLjYtLjctLjQgMC0uNy4zLS43LjYtLjQgNi41LS43IDEyLjMtLjkgMTcuNmwtLjIgNC41YzAgLjcgMCAxLjMtLjIgMS45LS4yLjctLjQgMS4zLS43IDEuOC0xLjIgMi4yLTMuNiAzLjYtNiAzLjZIODZjLTIuNCAwLTQuOC0xLjQtNi0zLjZ2LS4xYy0uMy0uNi0uNS0xLjItLjctMS43LS4xLS42LS4yLTEuMi0uMi0ybC0uMi00LjRjLS4yLTUuNS0uNS0xMS4zLS45LTE3LjYgMC0uMy0uMy0uNi0uNy0uNnMtLjcuMy0uNy43YzAgNi4zIDAgMTIgLjEgMTcuNnY0LjRxMCAxLjUuMyAyLjRjLjEuNC4yLjkuNCAxLjJ2LjJjLS4yLjQtLjUuNy0uNyAxYTcuNiA3LjYgMCAwIDEtNC4zIDIuNWMtMS43LjMtMy41LS4xLTQuOS0xLjFoLS4xYy0uOC0uNi0xLjUtMS4zLTItMi4yLS4zLS42LS42LTEuMi0uOC0xLjgtLjEtLjUtLjItMS4yLS4zLTIgMC0uMyAwLS41LS4xLS44bC0xLjEtOC45Yy0uNS00LjEtMS4xLTguMS0xLjYtMTEuOCAwLS40LS4zLS42LS43LS42LS4yIDAtLjMgMC0uNC4yLS4xLjEtLjIuMy0uMi41LjMgMy44LjcgNy44IDEgMTEuOWwuOSA4Ljl2LjljMCAuNy4xIDEuNC4zIDIuMi4zIDEuMS43IDIuMSAxLjQgMy4xdi4yYy4xIDAgMCAuMSAwIC4xLS44LjYtMS43IDEtMi42IDEuMi0uOC4yLTEuNy4yLTIuNiAwcS0xLjM1LS4xNS0yLjQtLjljLS4xIDAtLjMtLjItLjQtLjMtMS4zLS45LTIuMy0yLjItMi43LTMuNy0uMi0uNS0uMy0xLjItLjQtMS45IDAtLjQtLjEtLjctLjItLjlsLTEuNy04LjhjLS44LTQtMS42LTgtMi40LTExLjcgMC0uMy0uNC0uNi0uNy0uNS0uNCAwLS42LjQtLjYuNy42IDMuOCAxLjIgNy44IDEuOCAxMS44bDEuNSA4LjljMCAuMyAwIC41LjEuOC4xLjguMiAxLjUuNCAyLjMuNCAxLjQgMS4yIDIuNyAyLjMgMy44bC4zLjNoLS40Yy0zLjcuNy03LjItMS43LTgtNS4zLS4zLTEuMy0zLTEzLjEtNS45LTI3LjZsNC4yIDI4YzAgLjIuMS41LjIuN3YuMmMuMS4yLjIuMy4zLjUgMCAwIDAgLjIuMS4zIDAgLjEuMS4yLjIuNCAwIC4xLjEuMi4yLjN2LjJsLjYuOWMuMS4yLjIuMy40LjUuMS4yLjMuMy40LjUgMS42IDEuNSAzLjcgMi4zIDUuOSAyLjNzMSAwIDEuNC0uMWwzLjItLjVjLjUuMiAxLjEuNCAxLjcuNCAxLjEuMiAyLjIuMSAzLjIgMCAxLjEtLjIgMi4zLS43IDMuMy0xLjVsLjgtLjZjLjIuMi41LjQuOC42bC4yLjJjMS43IDEuMSA0IDEuNiA2LjEgMS4zczQuMS0xLjQgNS40LTMuMWMuMi0uMy41LS42LjctLjkgMS41IDIuNSA0LjQgNC4xIDcuMyA0LjFoLjJjMi45IDAgNS43LTEuNiA3LjItNC4xLjIuMy40LjcuNy45IDEuMyAxLjcgMy4zIDIuOCA1LjQgMy4xaDEuM2MxLjcgMCAzLjQtLjUgNC44LTEuNCAwIDAgLjEgMCAuMi0uMS4zLS4yLjUtLjQuOC0uNmwuOC42cTEuNSAxLjA1IDMuMyAxLjVjMSAuMiAyLjEuMiAzLjIgMHExLjA1LS4xNSAyLjEtLjZsMi43LjdoLjFjLjUuMS45LjEgMS40LjEgNCAwIDcuNi0yLjkgOC41LTYuOCAwLS4xIDQuMi0yOCA0LjItMjhaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNNDYuNCAxNy43Yy0xMC4xIDguOC0xNiAyMS40LTE2IDM2LjJzMTQuNSA4Mi44IDE0LjcgODMuNWMuMyAxLjUgMS40IDIuNiAyLjQgMy42LTMuNi0xNy40LTE1LjQtNzMuNS0xNS40LTg2LjZzNS4yLTI3LjIgMTQuMy0zNi43IiBzdHlsZT0iZmlsbDojOTNlMWVmIi8+PHBhdGggZD0iTTcxLjMgMjUuNkM1Ny45IDI1LjYgNDcgMzYuNSA0NyA0OS45czEwLjkgMjQuMyAyNC4zIDI0LjMgMjQuMy0xMC45IDI0LjMtMjQuMy0xMC45LTI0LjMtMjQuMy0yNC4zIiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNDQuNiA0OGMwIDEzLjQgMTAuOSAyNC4zIDI0LjMgMjQuM1M5My4yIDYxLjQgOTMuMiA0OCA4Mi4zIDIzLjcgNjguOSAyMy43IDQ0LjYgMzQuNiA0NC42IDQ4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.footer-links{margin-bottom:0!important;text-align:left}.footer-links__link{color:var(--text-color);font-size:12px;font-weight:500;letter-spacing:2.4px;margin-right:16px;text-transform:uppercase}.footer-actions{align-items:center;display:flex;gap:12px;justify-content:space-between}.footer-actions__link{color:var(--text-color);font-size:26px}.footer-bottom{color:var(--text-muted);display:flex;flex-wrap:wrap;font-size:12px;font-style:normal;font-weight:400;justify-content:center;letter-spacing:1.4px;line-height:23px;padding:20px 0 10px;text-align:center;text-transform:uppercase}@media screen and (max-width:510px){.footer-links{margin-bottom:20px}}@media screen and (min-width:1024px){.footer{padding:30px 0}.footer-group{padding:0}.footer-top{padding-bottom:30px}.footer-logo{margin:0;width:auto}.footer-links{padding:0 40px}.footer-links__link{font-size:14px;margin-right:28px}.footer-actions__link img{height:28px}.footer-bottom .footer-bottom__copyright,.footer-bottom .footer-bottom__last-updated,.footer-bottom .footer-bottom__version{padding:0 10px}.footer-bottom .footer-bottom__copyright{border-left:none}}.not-found{background-color:var(--navigation-bg);height:100%;overflow:hidden}.not-found__icon{display:block;margin:40px auto;max-width:300px}.not-found__text{text-align:center}.not-found__text h1{font-size:60px;line-height:1}.not-found__text p{margin:30px 0;width:100%}.not-found__button{text-transform:uppercase}.admonition{background-color:var(--body-bg);border-radius:4px;box-shadow:0 4px 4px rgba(0,0,0,.12);color:var(--text-muted);font-size:14px;line-height:20px;margin-bottom:30px;overflow:auto;padding:20px 20px 20px 52px;position:relative}.admonition:before{bottom:0;content:" ";left:0;position:absolute;right:0;top:0;z-index:-1}.admonition-title{color:var(--primary);display:flex;font-weight:700;left:-32px;position:relative}.admonition-title:before{background-image:none!important;content:"";font-size:24px;margin-right:8px;width:24px}.admonition p{margin-bottom:0!important}.admonition.tip{border:1px solid var(--success)}.admonition.tip:before{border-left:8px solid var(--success)}.admonition.tip .admonition-title{color:var(--success)!important}.admonition.note{border:1px solid var(--info)}.admonition.note:before{border-left:8px solid var(--info)}.admonition.note .admonition-title{color:var(--info)!important}.admonition.caution{border:1px solid var(--warning)}.admonition.caution:before{border-left:8px solid var(--warning)}.admonition.caution .admonition-title:before{content:""}.admonition.caution .admonition-title{color:var(--warning)!important}.admonition.warning{border:1px solid var(--danger)}.admonition.warning:before{border-left:8px solid var(--danger)}.admonition.warning .admonition-title:before{content:""}.admonition.warning .admonition-title{color:var(--danger)!important}.breadcrumbs{margin-bottom:0;text-transform:uppercase}.breadcrumbs .bread__item,.breadcrumbs .bread__item:not(.bread__item--last):after,.breadcrumbs a{color:var(--text-color);font-size:12px;font-weight:400;letter-spacing:1.5px;line-height:2;margin:0;padding:0}.breadcrumbs .bread__item:before{display:none}.breadcrumbs .bread__item:not(.bread__item--last):after{content:"/";margin:0 5px;opacity:1;position:relative}.breadcrumbs .bread__highlight{color:var(--link-color)}.breadcrumbs .bread__highlight:hover{font-weight:700;text-decoration:none}code{background-color:var(--well-bg);border:none;border-radius:4px;font-size:14px}code,code.download{color:var(--code-color)}code.download{background:none}.highlight{background:transparent!important}.highlight pre{background-color:var(--well-bg);border-radius:8px;color:var(--code-color);font-size:14px;line-height:26px;margin-bottom:30px;overflow:auto;padding:16px}.highlight a.copybtn{right:1em;top:1em}.highlighttable{background-color:var(--well-bg);border-radius:16px;box-shadow:none}.highlighttable tbody{background-color:transparent;border:0}.highlighttable tbody td{padding:15px!important}.highlighttable tbody tr{border-top:none}.highlighttable .linenos{background-color:var(--well-bg);color:var(--line-number);width:50px}.highlighttable .linenos span{line-height:26px}.highlighttable .highlight pre{background-color:transparent;margin:0;padding:0}.highlighttable .highlight a.copybtn{right:.2em;top:.2em}.copybtn{background-color:var(--card-bg)!important}.hide-copy-button .copybtn{display:none}.sphinx_collapse__label{color:var(--text-color);display:flex!important;flex-direction:row-reverse;font-size:medium;font-weight:700;justify-content:flex-end;margin-left:0!important}.sphinx_collapse__icon{border-top-color:var(--text-color)!important;margin-left:5px;margin-right:0}.sphinx_collapse__input:checked~.sphinx_collapse__label,.sphinx_collapse__label:hover{color:var(--link-color)}.sphinx_collapse__input:checked~.sphinx_collapse__label .sphinx_collapse__icon,.sphinx_collapse__label:hover .sphinx_collapse__icon{border-top-color:var(--link-color)!important}.sphinx_collapse__content{margin-top:10px}.contribute{margin:0 0 20px}.contribute__item{font-size:14px;list-style:none;padding-bottom:10px}.contribute__item a{align-items:center;display:flex}.contribute__item i{font-size:1.2em;line-height:1em;margin-right:5px}.content-navigation{display:flex;justify-content:space-between;margin-top:40px}.navigation{max-width:50%;word-break:break-word}.navigation,.navigation__link{display:flex}.navigation__title{color:var(--text-color);font-size:12px;font-weight:500;letter-spacing:1.5px;line-height:24px;text-transform:uppercase;word-wrap:break-word}.navigation__title .colored{color:var(--primary)}.navigation__button{background:var(--white);background-color:var(--card-bg);border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;display:none;font-size:0;height:fit-content;overflow:hidden;padding:8px}.navigation__button i{font-size:26px}.navigation--prev .navigation__title{margin-left:15px}.navigation--next .navigation__title{margin-right:15px;text-align:right}@media screen and (min-width:1200px){.navigation__title{display:inline-block}.navigation__button{display:block}.navigation--next .navigation__title{text-align:left}}.scylla-dropdown--versions .scylla-dropdown__item{background:var(--card-bg);border-radius:8px;box-shadow:0 28px 32px rgba(0,0,0,.06);width:100%}.scylla-dropdown--versions .scylla-dropdown__title{align-items:center;display:flex;justify-content:space-between}.scylla-dropdown--versions .scylla-dropdown__title .chevron{min-height:12px;transform:rotate(90deg);width:8px}@media screen and (min-width:1024px){.scylla-dropdown--versions .scylla-dropdown__item{box-shadow:none}}.feedback-container{font-size:16px;margin-top:40px;text-align:left}.feedback-container__title{font-weight:700;margin-bottom:5px!important}.feedback-container__button{background:var(--white);background-color:var(--card-bg)!important;border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;margin:4px;overflow:hidden;padding:8px}.feedback-container__button.active{border-color:var(--primary)}.feedback-container__icon{font-size:22px}.feedback-container__message{font-size:16px;margin-top:10px}.hero{background:var(--navigation-bg);margin-bottom:30px;overflow:hidden;padding:30px 16px;text-align:left}.hero__title{font-size:28px;font-weight:500;line-height:38px;margin-bottom:14px;max-width:229px}.hero__text{font-size:16px;line-height:26px;max-width:343px}.hero__text a{border-bottom:1px dotted var(--text-color);color:var(--text-color)}.hero__text p{margin-bottom:0!important}.hero__img{position:absolute;right:-18px;top:20px}.hero__img img{margin-bottom:0!important;width:124px}.hero__button{margin-top:20px;text-transform:uppercase}.hero__button--bold{border-width:2px;font-weight:700}.hero__button .admonition-title:before,.hero__button .icon,.hero__button .search-box:before,.hero__button .secondary-side-nav__content li a:before,.hero__button .side-nav__content .scylla-icon--expand,.secondary-side-nav__content li .hero__button a:before,.side-nav__content .hero__button .scylla-icon--expand{margin-right:5px}.hero__button .icon--right{margin-left:5px;margin-right:0}.hero__button .icon--link,.hero__cta{color:var(--link-color)}.hero__search-box{box-shadow:0 4px 25px rgba(0,0,0,.02);margin-top:20px}.hero-wrapper{align-items:center;display:flex;justify-content:space-between;margin:0 auto;position:relative}@media screen and (min-width:640px){.hero{padding:60px 16px}.hero__title{font-size:32px;line-height:42px;max-width:482px}.hero__text{font-size:18px;line-height:26px;max-width:482px}.hero__img{display:block;position:static}.hero__img img{height:100%;width:295px}.hero .hero-wrapper{flex-direction:row-reverse}.hero .landing--floating .hero{padding:30px 16px 100px}}@media screen and (min-width:1024px){.hero{padding:60px}}.label{background-color:var(--navigation-bg);border:0;border-radius:4px;color:var(--white);font-size:inherit}.label--default{color:var(--text-color)}.label--note{background-color:var(--info)}.label--tip{background-color:var(--success)}.label--caution{background-color:var(--warning)}.label--warning{background-color:var(--danger)}.last-updated{color:var(--link);font-size:12px;letter-spacing:1.5px;margin:10px 0;text-transform:uppercase}.last-updated__icon{font-size:14px}@media screen and (min-width:1024px){.last-updated{float:right;margin:0}}.panel{border:0;border-radius:4px;margin-bottom:30px}.promo-banner{background-color:var(--header-border);background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDQwIiBoZWlnaHQ9IjcwIiBmaWxsPSJub25lIj48bWFzayBpZD0iYSIgd2lkdGg9IjE0NDAiIGhlaWdodD0iNzAiIHg9IjAiIHk9IjAiIG1hc2stdHlwZT0iYWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9IiM0NDU4YTMiIGQ9Ik0wIDBoMTQ0MHY3MEgweiIvPjwvbWFzaz48ZyBmaWxsPSIjNTA2NGFlIiBtYXNrPSJ1cmwoI2EpIj48cGF0aCBkPSJNLTE5MyAyMDEuODg0IDEuNS0xMzUgMzU3LjQzNiA3MC41bC0xOTQuNSAzMzYuODg0ek0xMDkyLjkyLTM4LjAwOSA5NzIuODAzLTI0Ni4wNTcgNDAyLjk5NiA4Mi45MiA1MjMuMTEzIDI5MC45N3oiLz48cGF0aCBkPSJtMTAzOC0zOC4wMDkgMTIwLjExNy0yMDguMDQ5IDU2OS44MDcgMzI4Ljk3OS0xMjAuMTE3IDIwOC4wNDl6Ii8+PC9nPjwvc3ZnPg==);background-position:50%;background-repeat:no-repeat;background-size:cover;display:none;overflow:hidden;position:fixed;top:0;width:100%;z-index:900}.promo-banner__icon{margin-right:15px}.promo-banner__icon img{height:40px}.promo-banner__title{color:var(--white);font-size:12px;line-height:16px;margin-right:15px}.promo-banner__button{background:var(--white);border-radius:4px;color:var(--black);font-size:12px;min-width:max-content;padding:5px}.promo-banner__close{display:none;position:absolute;right:16px;top:16px}.promo-banner__close i{color:var(--white);font-size:34px;height:34px;width:34px}.promo-banner__close:hover{cursor:pointer;filter:opacity(.8)}.promo-banner-wrapper{align-items:center;display:flex;justify-content:center;padding:5.85px 20px}@media(min-width:1024px){.promo-banner__title{font-size:18px;line-height:23px}.promo-banner__button{font-size:14px;padding:8.5px}.promo-banner__close{display:block}.promo-banner-wrapper{flex-direction:unset;padding:16px}}.custom-scroll-bar::-webkit-scrollbar{background-color:transparent;width:5px}.custom-scroll-bar::-webkit-scrollbar-thumb{background-color:var(--scollbar-bg);-webkit-border-radius:8px;border-radius:8px}.search-box{align-items:center;background:var(--well-bg);border-radius:4px;display:flex;flex-grow:1;padding:10px 15px}.search-box--hero{background-color:var(--well-bg);padding:12px 14px}.search-box:before{background-repeat:no-repeat;background-size:contain;content:"";display:inline-block;font-size:24px;margin-right:8px;min-height:18px;min-width:18px;vertical-align:middle;width:20px}.search-box .er-dummy-search,.search-box .er-dummy-search-box,.search-box .er-search-form,.search-box ci-search,.search-box input{margin:0!important;width:100%!important}.search-box input{background:transparent!important;color:var(--text-color)!important;font-size:14px!important;padding:0!important}.search-box input::placeholder{color:var(--text-muted)!important;opacity:1!important}.search-box button{display:none!important}.er_search_suggestions{background-color:var(--card-bg)!important;border:0!important;border-radius:var(--border-radius);box-shadow:0 4px 25px rgba(0,0,0,.15)!important;color:var(--text-muted)}.er_search_suggestions strong{color:var(--text-color)}.er_search_suggestions .er-cse-suggest-query{border-bottom:1px solid var(--border-color);padding:8px 20px!important}.er_search_suggestions .er-search-result-box{border-bottom:1px solid var(--border-color)!important;padding:0!important}.er_search_suggestions .er-search-result-box .text-container{padding:0!important}.er_search_suggestions .er-search-result-box .text-container>a{display:block;padding:12px 20px}.er_search_suggestions .er-search-result-box .er_highlight{border-bottom:1px solid var(--primary)!important;color:var(--text-emphasis)!important}.er_search_suggestions .er-search-result-box .title{color:var(--text-color)!important}.er_search_suggestions .er-search-result-box .text{color:var(--text-muted)!important}.er_search_suggestions .er-search-result-box:hover{background:var(--well-bg)!important}.er_search_suggestions .er_more_result_btn{color:var(--link-color)!important;cursor:pointer}.er_search_suggestions h3{font-size:16px!important}.er-search-content{background-color:var(--bg-color)!important;padding:32px!important}.er_search_results_count{border-bottom:1px solid var(--border-color)!important;color:var(--text-color)!important}.er-cse-shimmer .er-shimmer,.er-ecom-shimmer .er-shimmer{background-color:var(--well-bg)!important;background-image:linear-gradient(to right,var(--well-bg) 0,var(--card-bg) 20%,var(--well-bg) 40%,var(--well-bg) 0)!important}#er_search_results h3.heading{color:var(--text-color)!important}#er_search_results .er-search-result-box{border-bottom:var(--border-color);color:var(--text-muted);display:block!important;margin:10px auto 0!important;width:100%!important}#er_search_results .er-search-result-box .er_highlight{border-bottom:1px solid var(--primary)!important;color:var(--text-emphasis)!important}#er_search_results .er-search-result-box .title a,#er_search_results .er-search-result-box .url a{color:var(--link-color)!important}#er_search_results .er-search-result-box .text{color:var(--text-muted)!important}#er_search_results .er-search-result-box .text,#er_search_results .er-search-result-box .title a,#er_search_results .er-search-result-box .url a{max-width:100%!important}#search-result-input-form{box-shadow:0 4px 25px rgba(0,0,0,.15)!important;max-width:800px!important}#er_search_button{background-color:var(--card-bg)!important;color:var(--primary)!important;text-align:center}#er_search_input{background-color:var(--well-bg)!important;color:var(--text-color)!important;margin:0!important}#er_search_input::placeholder{color:var(--text-muted)!important;opacity:.5!important}#er_clear_input{color:var(--text-color)!important;right:0!important;top:0!important}.er_gcs_facet_ul::-webkit-scrollbar{background-color:transparent;width:5px}.er_gcs_facet_ul::-webkit-scrollbar-thumb{background-color:var(--scollbar-bg);-webkit-border-radius:8px;border-radius:8px}.er-facet-header{background-color:transparent!important;border:0!important;color:var(--text-color)!important;padding:0 0 8px!important}.er-facet-val{padding:5px 2px!important}.er-facet-val input{display:block!important;margin:0}.er-facet-val label{color:var(--text-color)!important}#er_search_pagination{margin-top:20px!important}#er_search_pagination li.er-paginator-list{color:var(--text-color)!important}#er_search_pagination li.er-paginator-list.er-active{border-bottom:0!important;font-weight:700}.er-suggestion-sm .er_search_input_dummy{margin:0!important}.er-suggestion-sm .er_search_button_dummy{border:0!important}#er_gcs_mobile_model_container .er-facet-values .er-facet-val{align-items:baseline}@media screen and (min-width:640px){.er-facets{display:none;max-width:300px!important;min-width:auto!important;width:auto!important}}@media screen and (min-width:1024px){.er-suggestions{left:15px!important}}@media screen and (min-width:1200px){.er-facets{display:block;position:fixed!important}.er-facet-count{display:none}}.sphinx-tabs{margin-bottom:30px}.sphinx-tabs-tab{border-bottom:1px solid var(--text-muted);color:var(--text-muted);cursor:pointer;font-size:14px;font-weight:500;line-height:13px;padding:20px 25px}.sphinx-tabs-tab[aria-selected=true]{border-bottom:2px solid var(--link-color);color:var(--link-color);padding-bottom:19px}.sphinx-tabs-panel{margin:30px 0}.table-wrapper{border:1px solid var(--border-color);border-radius:4px;box-shadow:1px 1px 2px rgba(0,0,0,.25);display:block;margin-bottom:30px;max-width:100%;overflow-x:auto;scrollbar-color:var(--border-color)}table{color:var(--text-color);font-size:14px;line-height:24px;margin:0;overflow:hidden}table p{margin:0!important}table caption{border-bottom:1px solid var(--border-color);color:var(--text-emphasis);padding:10px 25px}table caption,table thead{background:var(--navigation-bg)}table thead{border:0;border-bottom:1px solid var(--border-color)}table thead th{color:var(--text-emphasis);font-size:14px;font-weight:700}table td,table thead th{padding:20px 25px}table tbody{background:transparent;border:1px solid var(--border-color)}table tbody tr{background-color:transparent!important;border-top:1px solid var(--border-color);line-height:18px}table:not(.highlighttable) tbody tr:first-child{border-top:1px solid var(--header-border)}table.thead-border thead .row-odd th{color:var(--text-emphasis)}table.thead-border thead .row-even th{font-weight:400}table.thead-border thead th{border:1px solid var(--border-color)}table.thead-border thead tr:first-child th{border-top:none}table.thead-border thead tr:last-child th{border-bottom:none}table.thead-border thead tr th:first-child{border-left:none}table.thead-border thead tr th:last-child{border-right:none}.topics-grid{display:block;margin:0 auto 30px}.topics-grid__title{color:var(--text-emphasis);font-size:24px;font-weight:700;line-height:32px;margin-bottom:6px}.topics-grid__text{color:var(--text-color);font-size:18px;line-height:24px}.topics-grid--scrollable .hs{display:grid;grid-auto-flow:column;overflow-x:scroll;padding:20px 10px;-ms-overflow-style:none;scrollbar-width:none}.topics-grid--scrollable .hs::-webkit-scrollbar{display:none}.topics-grid--scrollable .hs .topic-box:last-child:after{content:"";width:20px}.topic-box{align-items:stretch;display:flex}.topic-box .card{background:var(--white);background-color:var(--card-bg)!important;border:1px solid transparent;border:1px solid var(--card-bg);border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);display:flex;flex-direction:column;font-size:18px;margin:0 auto 30px;overflow:hidden;padding:20px;position:relative}.topic-box .card:hover{border:1px solid var(--text-color)!important;color:var(--text-color);font-weight:400}.topic-box__title{color:var(--text-emphasis);font-size:16px;font-weight:700;line-height:24px;margin-bottom:0}.topic-box__title img{bottom:0;opacity:.3;position:absolute;right:0;top:0}.topic-box__body{color:var(--text-color);display:flex;flex-direction:column;flex-grow:1;max-width:80%}.topic-box__body .container{flex-grow:1;margin:0;padding:0}.topic-box__body .line-block,.topic-box__body p{font-size:16px;line-height:19px;margin-top:10px}.topic-box__anchor{color:var(--link-color);font-size:14px;font-weight:700;line-height:24px}.topic-box__icon{display:block;font-size:50px;margin-bottom:20px}.topic-box__icon i{min-height:50px;width:100%}.topic-box__icon img{bottom:-12px;display:none;height:140px;margin:0;opacity:.3;position:absolute;right:-5px}.topic-box--product .card{box-shadow:none;padding:20px;text-align:center}.topic-box--product .card .topic-box__title{color:var(--text-color);font-size:14px}.topic-box--product .card .topic-box__body{display:flex;flex-direction:column;max-width:100%}.topic-box--product .card .topic-box__body .line-block,.topic-box--product .card .topic-box__body p{font-size:12px}.topic-box--product .card .topic-box__icon img{display:inline-block;max-height:84px;opacity:1;position:static}.topic-box--product .card:hover{background:var(--white);background-color:var(--card-bg);border:0;border:1px solid var(--text-color)!important;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);overflow:hidden}@media screen and (max-width:1024px){.topics-grid--scrollable .topic-box{width:280px!important}.topic-box--product:nth-last-child(-n+2) .card{margin-bottom:0}}@media screen and (min-width:1024px){.topics-grid{margin-bottom:10px}.topics-grid__text{font-size:16px}.topics-grid--scrollable .hs{display:flex;overflow-x:initial;padding:0}.topics-grid--scrollable .hs .topic-box:last-child:after{display:none}.topic-box .card{margin-bottom:60px;padding:45px 30px}.topic-box__title{font-size:20px;line-height:32px}.topic-box__body .line-block,.topic-box__body p{font-size:18px;line-height:26px}.topic-box__anchor{font-size:20px;line-height:26px}.topic-box .topic-box__icon img{display:inline-block}.topic-box--product .card{padding:20px}.topic-box--product .card .topic-box__title{font-size:18px;line-height:24px}.topic-box--product .card .topic-box__body .line-block,.topic-box--product .card .topic-box__body p{font-size:14px}.topic-box--product .card .topic-box__icon img{max-height:111px}.landing .topics-grid--products{margin-bottom:40px}} \ No newline at end of file diff --git a/v1.12/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css b/v1.12/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css new file mode 100644 index 00000000000..eb19f698afc --- /dev/null +++ b/v1.12/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/v1.12/_static/design-tabs.js b/v1.12/_static/design-tabs.js new file mode 100644 index 00000000000..36b38cf0d91 --- /dev/null +++ b/v1.12/_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/v1.12/_static/doctools.js b/v1.12/_static/doctools.js new file mode 100644 index 00000000000..4d67807d17d --- /dev/null +++ b/v1.12/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/v1.12/_static/documentation_options.js b/v1.12/_static/documentation_options.js new file mode 100644 index 00000000000..7e4c114f212 --- /dev/null +++ b/v1.12/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/v1.12/_static/file.png b/v1.12/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/banner-background.svg b/v1.12/_static/img/banner-background.svg new file mode 100644 index 00000000000..f8520d5b3e4 --- /dev/null +++ b/v1.12/_static/img/banner-background.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/v1.12/_static/img/favicon-228x228.png b/v1.12/_static/img/favicon-228x228.png new file mode 100644 index 0000000000000000000000000000000000000000..f30770c7edd4c0c8356c8f3c2ce60d84c395f9c7 GIT binary patch literal 4428 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/favicon-32x32.png b/v1.12/_static/img/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..aae1708f26fc93bd9b9e40284a4376a0e41f0494 GIT binary patch literal 837 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10qB_7Q#1%+e>xNqCh5|_t zGKc_@HWu;D2~9wTV{o~HZ=q*yubpE$L=BMZ-Mcby)2Wc7w?a?d58i(@VAUay>RI6z zp9bwXA9nunvb2athiah++x|x-ey3NdwQMqSUB14g?3w9~1u}nE7wzJ(aG9FkUgPBu z6ej3@WxA~3GgE^*Tl)K|TjKs|Z)Cdr<*>n*^B1)*nukA7a!tSNY;NlRhGAyDLkLsc zJO0Zid*!AopSkuX_Qci$27bZcP52T%vRepWTH|2v_xQp66_fc3TK!uqXFXFdXK;*W zeQCNy_p_*(!bUxleBM}lFZPb#Y0Z06ZeL%0FyxifpM2x! zQqN^u6{NCv-t3)weP!vs5U*kz`#ro5=J2c&S|Sl0H+kph zNZmh2R*>;5!~2>T^>Z6najoJC6zvf^bnfks`okQmFWMgIcy6jLaxNFCHLCa0bqLSi z_>Bh`k*X!G5hW>!C8<`)MX5lF!N|bKP}jg**T5pgz|zXp(8|mdKI;Vst0JRQDYXATM literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/favicon.ico b/v1.12/_static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6c7484f082f4dd44edbb9bccb87391e6fae208cd GIT binary patch literal 1150 zcmaizJ4gdT5QZlxSl9#v>y$QvwH7&oCW;S4jJ6?-k|?nWYUP!_Km@f@I}tk2UcB zP3WLEc>CrgsM*uK0lkm-W{g6?k*kY z-PJfx5Bb=v1$rkh?<#*i$#1WDE|;D;pUrXkabMShGdc4^FT6TS3woWq2=n{f3uDa3 zrf^0+O&)XUVdoo*JkWzf4rML$v~a(sS=`VA@R7hEzm_k5@YQ!){bZBRet;;dPM!+w6lJ2q1FIruC9NrA9`V7aRz*U(m&lh)kE~p+#5RRoqRP% zNZy0Vh+nNcWU}HTFTM@@C-S|+!bjZP_qK*e=AnzIGK;CNXChlAmnm^D#X6!7=ZqzD literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/icons/icon-about-team.svg b/v1.12/_static/img/icons/icon-about-team.svg new file mode 100644 index 00000000000..5448c7f007b --- /dev/null +++ b/v1.12/_static/img/icons/icon-about-team.svg @@ -0,0 +1 @@ +icon-about-team diff --git a/v1.12/_static/img/icons/icon-about-us-m.svg b/v1.12/_static/img/icons/icon-about-us-m.svg new file mode 100644 index 00000000000..09107d9520a --- /dev/null +++ b/v1.12/_static/img/icons/icon-about-us-m.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.12/_static/img/icons/icon-about-us.svg b/v1.12/_static/img/icons/icon-about-us.svg new file mode 100644 index 00000000000..1b1fcc83e30 --- /dev/null +++ b/v1.12/_static/img/icons/icon-about-us.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.12/_static/img/icons/icon-alternator.svg b/v1.12/_static/img/icons/icon-alternator.svg new file mode 100644 index 00000000000..7c2b4ebae0d --- /dev/null +++ b/v1.12/_static/img/icons/icon-alternator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.12/_static/img/icons/icon-apps.svg b/v1.12/_static/img/icons/icon-apps.svg new file mode 100644 index 00000000000..7e93612026b --- /dev/null +++ b/v1.12/_static/img/icons/icon-apps.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-architecture.svg b/v1.12/_static/img/icons/icon-architecture.svg new file mode 100644 index 00000000000..67ebbc2f38c --- /dev/null +++ b/v1.12/_static/img/icons/icon-architecture.svg @@ -0,0 +1 @@ +icon-architecture diff --git a/v1.12/_static/img/icons/icon-benchmarks.svg b/v1.12/_static/img/icons/icon-benchmarks.svg new file mode 100644 index 00000000000..e1ce2c1d784 --- /dev/null +++ b/v1.12/_static/img/icons/icon-benchmarks.svg @@ -0,0 +1 @@ +icon-benchmarks diff --git a/v1.12/_static/img/icons/icon-blog.svg b/v1.12/_static/img/icons/icon-blog.svg new file mode 100644 index 00000000000..f4096cbf111 --- /dev/null +++ b/v1.12/_static/img/icons/icon-blog.svg @@ -0,0 +1 @@ +icon-blog2 diff --git a/v1.12/_static/img/icons/icon-careers.svg b/v1.12/_static/img/icons/icon-careers.svg new file mode 100644 index 00000000000..2a7c6ea0b74 --- /dev/null +++ b/v1.12/_static/img/icons/icon-careers.svg @@ -0,0 +1 @@ +icon-careers diff --git a/v1.12/_static/img/icons/icon-chevron-left.svg b/v1.12/_static/img/icons/icon-chevron-left.svg new file mode 100644 index 00000000000..3afa25c4812 --- /dev/null +++ b/v1.12/_static/img/icons/icon-chevron-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.12/_static/img/icons/icon-chevron-right.svg b/v1.12/_static/img/icons/icon-chevron-right.svg new file mode 100644 index 00000000000..44eb829cdcb --- /dev/null +++ b/v1.12/_static/img/icons/icon-chevron-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.12/_static/img/icons/icon-circe.svg b/v1.12/_static/img/icons/icon-circe.svg new file mode 100644 index 00000000000..875e4216707 --- /dev/null +++ b/v1.12/_static/img/icons/icon-circe.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-clock.svg b/v1.12/_static/img/icons/icon-clock.svg new file mode 100644 index 00000000000..8c924698089 --- /dev/null +++ b/v1.12/_static/img/icons/icon-clock.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-close.svg b/v1.12/_static/img/icons/icon-close.svg new file mode 100644 index 00000000000..d1162b73e73 --- /dev/null +++ b/v1.12/_static/img/icons/icon-close.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/v1.12/_static/img/icons/icon-cloud-docs.svg b/v1.12/_static/img/icons/icon-cloud-docs.svg new file mode 100644 index 00000000000..a9069bb6e5c --- /dev/null +++ b/v1.12/_static/img/icons/icon-cloud-docs.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-cloud.svg b/v1.12/_static/img/icons/icon-cloud.svg new file mode 100644 index 00000000000..cfb2318daef --- /dev/null +++ b/v1.12/_static/img/icons/icon-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.12/_static/img/icons/icon-comparison.svg b/v1.12/_static/img/icons/icon-comparison.svg new file mode 100644 index 00000000000..49d809a5df4 --- /dev/null +++ b/v1.12/_static/img/icons/icon-comparison.svg @@ -0,0 +1 @@ +icon-comparison diff --git a/v1.12/_static/img/icons/icon-contact-us.svg b/v1.12/_static/img/icons/icon-contact-us.svg new file mode 100644 index 00000000000..9df3145dd21 --- /dev/null +++ b/v1.12/_static/img/icons/icon-contact-us.svg @@ -0,0 +1 @@ +icon-contact-us diff --git a/v1.12/_static/img/icons/icon-developers-blog.svg b/v1.12/_static/img/icons/icon-developers-blog.svg new file mode 100644 index 00000000000..ee804197a0b --- /dev/null +++ b/v1.12/_static/img/icons/icon-developers-blog.svg @@ -0,0 +1 @@ +icon-developers-blog diff --git a/v1.12/_static/img/icons/icon-docs.svg b/v1.12/_static/img/icons/icon-docs.svg new file mode 100644 index 00000000000..5501492f3e0 --- /dev/null +++ b/v1.12/_static/img/icons/icon-docs.svg @@ -0,0 +1 @@ +icon-docs diff --git a/v1.12/_static/img/icons/icon-enterprise-m.svg b/v1.12/_static/img/icons/icon-enterprise-m.svg new file mode 100644 index 00000000000..97be900b501 --- /dev/null +++ b/v1.12/_static/img/icons/icon-enterprise-m.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/icons/icon-enterprise.svg b/v1.12/_static/img/icons/icon-enterprise.svg new file mode 100644 index 00000000000..ee1ac26283d --- /dev/null +++ b/v1.12/_static/img/icons/icon-enterprise.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.12/_static/img/icons/icon-events.svg b/v1.12/_static/img/icons/icon-events.svg new file mode 100644 index 00000000000..ba5f2118644 --- /dev/null +++ b/v1.12/_static/img/icons/icon-events.svg @@ -0,0 +1 @@ +icon-events diff --git a/v1.12/_static/img/icons/icon-exclamation.svg b/v1.12/_static/img/icons/icon-exclamation.svg new file mode 100644 index 00000000000..a7eb4b77a42 --- /dev/null +++ b/v1.12/_static/img/icons/icon-exclamation.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/v1.12/_static/img/icons/icon-expand.svg b/v1.12/_static/img/icons/icon-expand.svg new file mode 100644 index 00000000000..38065653675 --- /dev/null +++ b/v1.12/_static/img/icons/icon-expand.svg @@ -0,0 +1,50 @@ + + + + + + + + + diff --git a/v1.12/_static/img/icons/icon-forum.svg b/v1.12/_static/img/icons/icon-forum.svg new file mode 100644 index 00000000000..37a709f7a8f --- /dev/null +++ b/v1.12/_static/img/icons/icon-forum.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-getting-started.svg b/v1.12/_static/img/icons/icon-getting-started.svg new file mode 100644 index 00000000000..702500be409 --- /dev/null +++ b/v1.12/_static/img/icons/icon-getting-started.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-glossary.svg b/v1.12/_static/img/icons/icon-glossary.svg new file mode 100644 index 00000000000..e8329c2afee --- /dev/null +++ b/v1.12/_static/img/icons/icon-glossary.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-help.svg b/v1.12/_static/img/icons/icon-help.svg new file mode 100644 index 00000000000..51fddd80de7 --- /dev/null +++ b/v1.12/_static/img/icons/icon-help.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.12/_static/img/icons/icon-home.svg b/v1.12/_static/img/icons/icon-home.svg new file mode 100644 index 00000000000..f0b9c25419c --- /dev/null +++ b/v1.12/_static/img/icons/icon-home.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-infoworld.svg b/v1.12/_static/img/icons/icon-infoworld.svg new file mode 100644 index 00000000000..906e87279c2 --- /dev/null +++ b/v1.12/_static/img/icons/icon-infoworld.svg @@ -0,0 +1 @@ +icon-infoworld diff --git a/v1.12/_static/img/icons/icon-integrations.svg b/v1.12/_static/img/icons/icon-integrations.svg new file mode 100644 index 00000000000..1ef0920d49e --- /dev/null +++ b/v1.12/_static/img/icons/icon-integrations.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-knowledge-base.svg b/v1.12/_static/img/icons/icon-knowledge-base.svg new file mode 100644 index 00000000000..884451270d2 --- /dev/null +++ b/v1.12/_static/img/icons/icon-knowledge-base.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-less.svg b/v1.12/_static/img/icons/icon-less.svg new file mode 100644 index 00000000000..3094127decf --- /dev/null +++ b/v1.12/_static/img/icons/icon-less.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/v1.12/_static/img/icons/icon-live-test.svg b/v1.12/_static/img/icons/icon-live-test.svg new file mode 100644 index 00000000000..dcb5916c264 --- /dev/null +++ b/v1.12/_static/img/icons/icon-live-test.svg @@ -0,0 +1 @@ +icon-live-test diff --git a/v1.12/_static/img/icons/icon-mail-list.svg b/v1.12/_static/img/icons/icon-mail-list.svg new file mode 100644 index 00000000000..0e6192a352c --- /dev/null +++ b/v1.12/_static/img/icons/icon-mail-list.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-manager.svg b/v1.12/_static/img/icons/icon-manager.svg new file mode 100644 index 00000000000..02b4e425beb --- /dev/null +++ b/v1.12/_static/img/icons/icon-manager.svg @@ -0,0 +1 @@ +icon-manager diff --git a/v1.12/_static/img/icons/icon-memory-management.svg b/v1.12/_static/img/icons/icon-memory-management.svg new file mode 100644 index 00000000000..e34eb4504f7 --- /dev/null +++ b/v1.12/_static/img/icons/icon-memory-management.svg @@ -0,0 +1 @@ +icon-memory-management diff --git a/v1.12/_static/img/icons/icon-modeling.svg b/v1.12/_static/img/icons/icon-modeling.svg new file mode 100644 index 00000000000..97fa3a0e213 --- /dev/null +++ b/v1.12/_static/img/icons/icon-modeling.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-monitoring.svg b/v1.12/_static/img/icons/icon-monitoring.svg new file mode 100644 index 00000000000..80b3787f668 --- /dev/null +++ b/v1.12/_static/img/icons/icon-monitoring.svg @@ -0,0 +1 @@ +icon-monitoring diff --git a/v1.12/_static/img/icons/icon-networking.svg b/v1.12/_static/img/icons/icon-networking.svg new file mode 100644 index 00000000000..40a3fd5f6f1 --- /dev/null +++ b/v1.12/_static/img/icons/icon-networking.svg @@ -0,0 +1 @@ +icon-networking diff --git a/v1.12/_static/img/icons/icon-news.svg b/v1.12/_static/img/icons/icon-news.svg new file mode 100644 index 00000000000..a952b59937d --- /dev/null +++ b/v1.12/_static/img/icons/icon-news.svg @@ -0,0 +1 @@ +icon-news diff --git a/v1.12/_static/img/icons/icon-newsletter.svg b/v1.12/_static/img/icons/icon-newsletter.svg new file mode 100644 index 00000000000..5b8d47eb157 --- /dev/null +++ b/v1.12/_static/img/icons/icon-newsletter.svg @@ -0,0 +1 @@ +icon-newsletter diff --git a/v1.12/_static/img/icons/icon-nsql-guides.svg b/v1.12/_static/img/icons/icon-nsql-guides.svg new file mode 100644 index 00000000000..60ebab37953 --- /dev/null +++ b/v1.12/_static/img/icons/icon-nsql-guides.svg @@ -0,0 +1 @@ +icon-nsql-guides diff --git a/v1.12/_static/img/icons/icon-open-source.svg b/v1.12/_static/img/icons/icon-open-source.svg new file mode 100644 index 00000000000..98c2ea7d5bf --- /dev/null +++ b/v1.12/_static/img/icons/icon-open-source.svg @@ -0,0 +1 @@ +icon-open-source diff --git a/v1.12/_static/img/icons/icon-operator.svg b/v1.12/_static/img/icons/icon-operator.svg new file mode 100644 index 00000000000..bb7d8d3ea86 --- /dev/null +++ b/v1.12/_static/img/icons/icon-operator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.12/_static/img/icons/icon-overview.svg b/v1.12/_static/img/icons/icon-overview.svg new file mode 100644 index 00000000000..515c1528a2a --- /dev/null +++ b/v1.12/_static/img/icons/icon-overview.svg @@ -0,0 +1 @@ +icon-overview diff --git a/v1.12/_static/img/icons/icon-partners.svg b/v1.12/_static/img/icons/icon-partners.svg new file mode 100644 index 00000000000..d0146fc4972 --- /dev/null +++ b/v1.12/_static/img/icons/icon-partners.svg @@ -0,0 +1 @@ +icon-partners diff --git a/v1.12/_static/img/icons/icon-plus.svg b/v1.12/_static/img/icons/icon-plus.svg new file mode 100644 index 00000000000..5757435085a --- /dev/null +++ b/v1.12/_static/img/icons/icon-plus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/v1.12/_static/img/icons/icon-pricing.svg b/v1.12/_static/img/icons/icon-pricing.svg new file mode 100644 index 00000000000..74b01db1684 --- /dev/null +++ b/v1.12/_static/img/icons/icon-pricing.svg @@ -0,0 +1 @@ +icon-pricing$ diff --git a/v1.12/_static/img/icons/icon-release-notes.svg b/v1.12/_static/img/icons/icon-release-notes.svg new file mode 100644 index 00000000000..80c490c7b01 --- /dev/null +++ b/v1.12/_static/img/icons/icon-release-notes.svg @@ -0,0 +1 @@ +icon-release-notes diff --git a/v1.12/_static/img/icons/icon-resource-center.svg b/v1.12/_static/img/icons/icon-resource-center.svg new file mode 100644 index 00000000000..6e3ab08e792 --- /dev/null +++ b/v1.12/_static/img/icons/icon-resource-center.svg @@ -0,0 +1 @@ +icon-ressource-center diff --git a/v1.12/_static/img/icons/icon-roadmap.svg b/v1.12/_static/img/icons/icon-roadmap.svg new file mode 100644 index 00000000000..c8cbf67c8cf --- /dev/null +++ b/v1.12/_static/img/icons/icon-roadmap.svg @@ -0,0 +1 @@ +icon-roadmap-4 diff --git a/v1.12/_static/img/icons/icon-search.svg b/v1.12/_static/img/icons/icon-search.svg new file mode 100644 index 00000000000..81aae93eef6 --- /dev/null +++ b/v1.12/_static/img/icons/icon-search.svg @@ -0,0 +1,4 @@ + + + + diff --git a/v1.12/_static/img/icons/icon-slack.svg b/v1.12/_static/img/icons/icon-slack.svg new file mode 100644 index 00000000000..fc164ea1e77 --- /dev/null +++ b/v1.12/_static/img/icons/icon-slack.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-stack-overflow.svg b/v1.12/_static/img/icons/icon-stack-overflow.svg new file mode 100644 index 00000000000..bebe9b82742 --- /dev/null +++ b/v1.12/_static/img/icons/icon-stack-overflow.svg @@ -0,0 +1,4 @@ + + + + diff --git a/v1.12/_static/img/icons/icon-summit.svg b/v1.12/_static/img/icons/icon-summit.svg new file mode 100644 index 00000000000..4b900bd0c0a --- /dev/null +++ b/v1.12/_static/img/icons/icon-summit.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/icons/icon-support.svg b/v1.12/_static/img/icons/icon-support.svg new file mode 100644 index 00000000000..a4228b34e86 --- /dev/null +++ b/v1.12/_static/img/icons/icon-support.svg @@ -0,0 +1 @@ +icon-support diff --git a/v1.12/_static/img/icons/icon-tech-talks.svg b/v1.12/_static/img/icons/icon-tech-talks.svg new file mode 100644 index 00000000000..df42b5522ba --- /dev/null +++ b/v1.12/_static/img/icons/icon-tech-talks.svg @@ -0,0 +1 @@ +icon-tech-talks diff --git a/v1.12/_static/img/icons/icon-testing.svg b/v1.12/_static/img/icons/icon-testing.svg new file mode 100644 index 00000000000..2fe54efdbc3 --- /dev/null +++ b/v1.12/_static/img/icons/icon-testing.svg @@ -0,0 +1 @@ +icon-testing diff --git a/v1.12/_static/img/icons/icon-thumbs-down.svg b/v1.12/_static/img/icons/icon-thumbs-down.svg new file mode 100644 index 00000000000..3e7bcd6d905 --- /dev/null +++ b/v1.12/_static/img/icons/icon-thumbs-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.12/_static/img/icons/icon-thumbs-up.svg b/v1.12/_static/img/icons/icon-thumbs-up.svg new file mode 100644 index 00000000000..226c44d853c --- /dev/null +++ b/v1.12/_static/img/icons/icon-thumbs-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.12/_static/img/icons/icon-tip.svg b/v1.12/_static/img/icons/icon-tip.svg new file mode 100644 index 00000000000..bf7aa6af840 --- /dev/null +++ b/v1.12/_static/img/icons/icon-tip.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/v1.12/_static/img/icons/icon-training.svg b/v1.12/_static/img/icons/icon-training.svg new file mode 100644 index 00000000000..08b95a88eda --- /dev/null +++ b/v1.12/_static/img/icons/icon-training.svg @@ -0,0 +1 @@ +icon-training diff --git a/v1.12/_static/img/icons/icon-triangle-down.svg b/v1.12/_static/img/icons/icon-triangle-down.svg new file mode 100644 index 00000000000..e8ae088106f --- /dev/null +++ b/v1.12/_static/img/icons/icon-triangle-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.12/_static/img/icons/icon-university.svg b/v1.12/_static/img/icons/icon-university.svg new file mode 100644 index 00000000000..f7547ab9599 --- /dev/null +++ b/v1.12/_static/img/icons/icon-university.svg @@ -0,0 +1 @@ +icon-university diff --git a/v1.12/_static/img/icons/icon-users-blog.svg b/v1.12/_static/img/icons/icon-users-blog.svg new file mode 100644 index 00000000000..47e56cddcf7 --- /dev/null +++ b/v1.12/_static/img/icons/icon-users-blog.svg @@ -0,0 +1 @@ +icon-users-blog diff --git a/v1.12/_static/img/icons/icon-warning.svg b/v1.12/_static/img/icons/icon-warning.svg new file mode 100644 index 00000000000..e4b1d40331b --- /dev/null +++ b/v1.12/_static/img/icons/icon-warning.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/v1.12/_static/img/icons/icon-webinars.svg b/v1.12/_static/img/icons/icon-webinars.svg new file mode 100644 index 00000000000..5e9f5cd4270 --- /dev/null +++ b/v1.12/_static/img/icons/icon-webinars.svg @@ -0,0 +1 @@ +icon-webinars diff --git a/v1.12/_static/img/icons/icon-whitepapers.svg b/v1.12/_static/img/icons/icon-whitepapers.svg new file mode 100644 index 00000000000..3351e51d23c --- /dev/null +++ b/v1.12/_static/img/icons/icon-whitepapers.svg @@ -0,0 +1 @@ +icon-whitepapers diff --git a/v1.12/_static/img/icons/icon-workshop.svg b/v1.12/_static/img/icons/icon-workshop.svg new file mode 100644 index 00000000000..5206e58e986 --- /dev/null +++ b/v1.12/_static/img/icons/icon-workshop.svg @@ -0,0 +1 @@ + diff --git a/v1.12/_static/img/logo-scylla-horizontal-color.svg b/v1.12/_static/img/logo-scylla-horizontal-color.svg new file mode 100644 index 00000000000..0feee9e1373 --- /dev/null +++ b/v1.12/_static/img/logo-scylla-horizontal-color.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/v1.12/_static/img/logo-scylla-horizontal-light.svg b/v1.12/_static/img/logo-scylla-horizontal-light.svg new file mode 100644 index 00000000000..6c6758f7d72 --- /dev/null +++ b/v1.12/_static/img/logo-scylla-horizontal-light.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/v1.12/_static/img/mascots-2/2-monster-laptop.svg b/v1.12/_static/img/mascots-2/2-monster-laptop.svg new file mode 100644 index 00000000000..b0cdb2caac8 --- /dev/null +++ b/v1.12/_static/img/mascots-2/2-monster-laptop.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/alternator.svg b/v1.12/_static/img/mascots-2/alternator.svg new file mode 100644 index 00000000000..066e2390aeb --- /dev/null +++ b/v1.12/_static/img/mascots-2/alternator.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/award.svg b/v1.12/_static/img/mascots-2/award.svg new file mode 100644 index 00000000000..dcb4be862ce --- /dev/null +++ b/v1.12/_static/img/mascots-2/award.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/care-pet.svg b/v1.12/_static/img/mascots-2/care-pet.svg new file mode 100644 index 00000000000..dd528340c76 --- /dev/null +++ b/v1.12/_static/img/mascots-2/care-pet.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/cdc.svg b/v1.12/_static/img/mascots-2/cdc.svg new file mode 100644 index 00000000000..4b6530d7c7b --- /dev/null +++ b/v1.12/_static/img/mascots-2/cdc.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/chef.svg b/v1.12/_static/img/mascots-2/chef.svg new file mode 100644 index 00000000000..4705a253c36 --- /dev/null +++ b/v1.12/_static/img/mascots-2/chef.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/cloud.svg b/v1.12/_static/img/mascots-2/cloud.svg new file mode 100644 index 00000000000..94e535b44be --- /dev/null +++ b/v1.12/_static/img/mascots-2/cloud.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/default.svg b/v1.12/_static/img/mascots-2/default.svg new file mode 100644 index 00000000000..41939b5aeab --- /dev/null +++ b/v1.12/_static/img/mascots-2/default.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/docs.svg b/v1.12/_static/img/mascots-2/docs.svg new file mode 100644 index 00000000000..1edb30b2d84 --- /dev/null +++ b/v1.12/_static/img/mascots-2/docs.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/driver.svg b/v1.12/_static/img/mascots-2/driver.svg new file mode 100644 index 00000000000..5b1a3c4011e --- /dev/null +++ b/v1.12/_static/img/mascots-2/driver.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/enterprise.svg b/v1.12/_static/img/mascots-2/enterprise.svg new file mode 100644 index 00000000000..6bf7d4ab0c7 --- /dev/null +++ b/v1.12/_static/img/mascots-2/enterprise.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/forward-2.svg b/v1.12/_static/img/mascots-2/forward-2.svg new file mode 100644 index 00000000000..11c53943a2f --- /dev/null +++ b/v1.12/_static/img/mascots-2/forward-2.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/forward.svg b/v1.12/_static/img/mascots-2/forward.svg new file mode 100644 index 00000000000..e2d7559db39 --- /dev/null +++ b/v1.12/_static/img/mascots-2/forward.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/headphones.svg b/v1.12/_static/img/mascots-2/headphones.svg new file mode 100644 index 00000000000..09845dd9fa8 --- /dev/null +++ b/v1.12/_static/img/mascots-2/headphones.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/heart.svg b/v1.12/_static/img/mascots-2/heart.svg new file mode 100644 index 00000000000..5f397de2c22 --- /dev/null +++ b/v1.12/_static/img/mascots-2/heart.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/laptop.svg b/v1.12/_static/img/mascots-2/laptop.svg new file mode 100644 index 00000000000..debb3f5dde5 --- /dev/null +++ b/v1.12/_static/img/mascots-2/laptop.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/magnifying-glass.svg b/v1.12/_static/img/mascots-2/magnifying-glass.svg new file mode 100644 index 00000000000..5668fc4844d --- /dev/null +++ b/v1.12/_static/img/mascots-2/magnifying-glass.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/manager.svg b/v1.12/_static/img/mascots-2/manager.svg new file mode 100644 index 00000000000..523d5a0c859 --- /dev/null +++ b/v1.12/_static/img/mascots-2/manager.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/monitor.svg b/v1.12/_static/img/mascots-2/monitor.svg new file mode 100644 index 00000000000..2aa1a147ab9 --- /dev/null +++ b/v1.12/_static/img/mascots-2/monitor.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/open-mouth.svg b/v1.12/_static/img/mascots-2/open-mouth.svg new file mode 100644 index 00000000000..062f25b7772 --- /dev/null +++ b/v1.12/_static/img/mascots-2/open-mouth.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/operator.svg b/v1.12/_static/img/mascots-2/operator.svg new file mode 100644 index 00000000000..3a794489398 --- /dev/null +++ b/v1.12/_static/img/mascots-2/operator.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/plug.svg b/v1.12/_static/img/mascots-2/plug.svg new file mode 100644 index 00000000000..e06ac69f3e3 --- /dev/null +++ b/v1.12/_static/img/mascots-2/plug.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/repair.svg b/v1.12/_static/img/mascots-2/repair.svg new file mode 100644 index 00000000000..8a2f27b3166 --- /dev/null +++ b/v1.12/_static/img/mascots-2/repair.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/server.svg b/v1.12/_static/img/mascots-2/server.svg new file mode 100644 index 00000000000..805b85f4626 --- /dev/null +++ b/v1.12/_static/img/mascots-2/server.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/sleepy.svg b/v1.12/_static/img/mascots-2/sleepy.svg new file mode 100644 index 00000000000..376ada21206 --- /dev/null +++ b/v1.12/_static/img/mascots-2/sleepy.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/smile-learning.svg b/v1.12/_static/img/mascots-2/smile-learning.svg new file mode 100644 index 00000000000..46fd91af9f6 --- /dev/null +++ b/v1.12/_static/img/mascots-2/smile-learning.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/stretched-up.svg b/v1.12/_static/img/mascots-2/stretched-up.svg new file mode 100644 index 00000000000..3d24b2c671c --- /dev/null +++ b/v1.12/_static/img/mascots-2/stretched-up.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/toolbox.svg b/v1.12/_static/img/mascots-2/toolbox.svg new file mode 100644 index 00000000000..218d7c0ceb3 --- /dev/null +++ b/v1.12/_static/img/mascots-2/toolbox.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/university.svg b/v1.12/_static/img/mascots-2/university.svg new file mode 100644 index 00000000000..086914cffcc --- /dev/null +++ b/v1.12/_static/img/mascots-2/university.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/workshop.svg b/v1.12/_static/img/mascots-2/workshop.svg new file mode 100644 index 00000000000..27d50a3ca5a --- /dev/null +++ b/v1.12/_static/img/mascots-2/workshop.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/wow-up.svg b/v1.12/_static/img/mascots-2/wow-up.svg new file mode 100644 index 00000000000..bea380c19a1 --- /dev/null +++ b/v1.12/_static/img/mascots-2/wow-up.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/wow.svg b/v1.12/_static/img/mascots-2/wow.svg new file mode 100644 index 00000000000..d809f8f074a --- /dev/null +++ b/v1.12/_static/img/mascots-2/wow.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots-2/yummy.svg b/v1.12/_static/img/mascots-2/yummy.svg new file mode 100644 index 00000000000..f93596e8cfa --- /dev/null +++ b/v1.12/_static/img/mascots-2/yummy.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/v1.12/_static/img/mascots/404.jpg b/v1.12/_static/img/mascots/404.jpg new file mode 100644 index 0000000000000000000000000000000000000000..769fa0889f8b33a7edfa1b6903e9bb33bd27da3a GIT binary patch literal 29400 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 *o#A4Bm2Pwzp|eK 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

          AsHsQZ?@8G~>-T9LgVg?Qm;9iIbZON|N- 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-advisor-crystal.png b/v1.12/_static/img/mascots/scylla-advisor-crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..d33fddd62f0900fceaf8bc7785aad0dd6badf111 GIT binary patch literal 67593 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 HdEoy8fIc?4 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-alternator.svg b/v1.12/_static/img/mascots/scylla-alternator.svg new file mode 100644 index 00000000000..0462f893d5f --- /dev/null +++ b/v1.12/_static/img/mascots/scylla-alternator.svg @@ -0,0 +1 @@ +scylla-alternator diff --git a/v1.12/_static/img/mascots/scylla-cloud.svg b/v1.12/_static/img/mascots/scylla-cloud.svg new file mode 100644 index 00000000000..a6c6a26fc99 --- /dev/null +++ b/v1.12/_static/img/mascots/scylla-cloud.svg @@ -0,0 +1 @@ +scylla-cloud diff --git a/v1.12/_static/img/mascots/scylla-computer-3-monsters.png b/v1.12/_static/img/mascots/scylla-computer-3-monsters.png new file mode 100644 index 0000000000000000000000000000000000000000..d0368a7027b1ee216abf8d8a1a83cb13dcf732c7 GIT binary patch literal 44539 zcmd>l^;er+uyt`OPH_$H#WlDVx8m+@p_Bkci(7Elphb$7qAkVUU5Yyt4bGSMe)qq) zKO|Y}S?kG}nKNt7o;~|SYpN?^W0GUOdGiKaSxHX&%^Re{H*XM<&{5$}rW5JR;Xh;` zc>|D+yB)~a(#!UZw2ix!Ev>SvrM<1Tt)-2h=a8-Vn>RIi%5u`WpO;TMu~YTt0$&5= z>`1k2KI0=GsW$1dCBMb2#FFplFbrZ${E&@U+xy~IuV!WO&P1cgAO*4JBc>^~jr96F zz08s1I|rj)=4`I#0qIoc`!L>lDOq&8By>VjGet{_N%4LEGoVM-l79ir`&MHA(Q-|| z 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-computer-headset.png b/v1.12/_static/img/mascots/scylla-computer-headset.png new file mode 100644 index 0000000000000000000000000000000000000000..0cdadaa2167503eaedfd33ca50de93801b46b4d8 GIT binary patch literal 22297 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

          k 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 diff --git a/v1.12/_static/img/mascots/scylla-drivers.svg b/v1.12/_static/img/mascots/scylla-drivers.svg new file mode 100644 index 00000000000..6012e71679b --- /dev/null +++ b/v1.12/_static/img/mascots/scylla-drivers.svg @@ -0,0 +1 @@ +scylla-manager diff --git a/v1.12/_static/img/mascots/scylla-enterprise.svg b/v1.12/_static/img/mascots/scylla-enterprise.svg new file mode 100644 index 00000000000..a1aa0b46ac1 --- /dev/null +++ b/v1.12/_static/img/mascots/scylla-enterprise.svg @@ -0,0 +1 @@ +scylla-enterprise diff --git a/v1.12/_static/img/mascots/scylla-forklift-boxes.png b/v1.12/_static/img/mascots/scylla-forklift-boxes.png new file mode 100644 index 0000000000000000000000000000000000000000..f64c29e6c7c37c8d30c704311ef9269553e87e81 GIT binary patch literal 29196 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 QE6QPBsOhT0m0w5vAK^}|lK=n! literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-forklift-migration.png b/v1.12/_static/img/mascots/scylla-forklift-migration.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f645c645adae7e881e0cb9cc099ec7a80faa34 GIT binary patch literal 24191 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-gear.png b/v1.12/_static/img/mascots/scylla-gear.png new file mode 100644 index 0000000000000000000000000000000000000000..0f53b26afa5a7e94e2e87b8baa568dd6c7dfb2da GIT binary patch literal 64841 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-hardhat.png b/v1.12/_static/img/mascots/scylla-hardhat.png new file mode 100644 index 0000000000000000000000000000000000000000..630f2d909427ebd1cf94b141b405c30e8a84f6ce GIT binary patch literal 20163 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-headband.png b/v1.12/_static/img/mascots/scylla-headband.png new file mode 100644 index 0000000000000000000000000000000000000000..c87abe684d5b67e5972edef5ad41990dcb2a6686 GIT binary patch literal 40533 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 CA}Z$q literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-looking-down.png b/v1.12/_static/img/mascots/scylla-looking-down.png new file mode 100644 index 0000000000000000000000000000000000000000..75cccbfdf12dfe20458552b79aadb3c21ad21d33 GIT binary patch literal 70044 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 HDWM4fznpb_ literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-looking-up.png b/v1.12/_static/img/mascots/scylla-looking-up.png new file mode 100644 index 0000000000000000000000000000000000000000..6f10405f2182a1f8359cb01cc51910d1ef88be41 GIT binary patch literal 69083 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 VQ?0M~bpRiX>}QZKi0@A5;BPd-mKvHm| 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 SK@E5k2!p4qpUXO@geCwl#5%|T literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-magnifying-glass.png b/v1.12/_static/img/mascots/scylla-magnifying-glass.png new file mode 100644 index 0000000000000000000000000000000000000000..74ad66950056c9952006d05ff406e4f74966322d GIT binary patch literal 16651 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 zwzscylla-manager-2 diff --git a/v1.12/_static/img/mascots/scylla-monitor.svg b/v1.12/_static/img/mascots/scylla-monitor.svg new file mode 100644 index 00000000000..48bec7dde32 --- /dev/null +++ b/v1.12/_static/img/mascots/scylla-monitor.svg @@ -0,0 +1 @@ +scylla-monitor diff --git a/v1.12/_static/img/mascots/scylla-movement-fast.png b/v1.12/_static/img/mascots/scylla-movement-fast.png new file mode 100644 index 0000000000000000000000000000000000000000..956d1dd0e227eb1a2ca927bfafe1551890c1ba57 GIT binary patch literal 18439 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-movement.png b/v1.12/_static/img/mascots/scylla-movement.png new file mode 100644 index 0000000000000000000000000000000000000000..7ee2b043384aff3efefccd431719dfe2fce9569d GIT binary patch literal 14720 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-opensource.svg b/v1.12/_static/img/mascots/scylla-opensource.svg new file mode 100644 index 00000000000..299e9cb9955 --- /dev/null +++ b/v1.12/_static/img/mascots/scylla-opensource.svg @@ -0,0 +1 @@ +Plan de travail 1 diff --git a/v1.12/_static/img/mascots/scylla-operator.svg b/v1.12/_static/img/mascots/scylla-operator.svg new file mode 100644 index 00000000000..655a450b2a4 --- /dev/null +++ b/v1.12/_static/img/mascots/scylla-operator.svg @@ -0,0 +1 @@ +scylla-operator diff --git a/v1.12/_static/img/mascots/scylla-plugin.png b/v1.12/_static/img/mascots/scylla-plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..b28dc857ccfefaf6b20f893ae11c51d827c70e0d GIT binary patch literal 52683 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-release-mascot.png b/v1.12/_static/img/mascots/scylla-release-mascot.png new file mode 100644 index 0000000000000000000000000000000000000000..09342ac6875c5ac16477e7cddb811569e0eff483 GIT binary patch literal 31893 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-repair.png b/v1.12/_static/img/mascots/scylla-repair.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4c613e702e46802b3a2921f81f339d3c153bb6 GIT binary patch literal 21261 zcmb?iWmj9@)1`&t8iEyv06|;a3j_@gh2l^kKykMsEf6G7EVvhKp}0H69SRh;;_gYX5Jq2Z_kJ}M?|#(l;H*OM+8u45)*HvBiAgrdn8Si~_i`uQ z=v2h{x2Mac@MH={s|t1~GEtY|fHnx91r3|bbOkty!`S-a-{aNJQBS;g!!3`7i|>fo z%E6Q>2Nc4v#$+=lS>cEXSAXq;S_8_A9b`f86hY{r#A|enE@BC4r`ayLN)|Yk*+jL5 z{oF|MVGzb7?fcZ%6nmiumn;r{Xk{buYfKR-QU32RjQjpXQiLNKG)5T@Ii^^$yE5-WC@oxLf(j3a2Qx<#&CzyiSnZ zU!5wYRm|hFzVS3FJ5L$p^!SWY3$Bj3MVlVV#)U5NLEB7f`r}v((%;Fa@=YlLKL~Ag zf;@IUtOe>qY|s4*@GzNaS9J)L4I8Ccay5~8Q3Wk{aAyThKD{dA-13z#mWn%%3pYs? zzmGgNvutrd#@BIc?fq6!%$Ws+ga>#F!JTY^oL z_vVm~J_z3g`puBRBwh#9wg~~Dht=^LH7KLp1>%kisy3X6Uv+5^)ir-Og^E1OPD^{| z$K_=V;|k)6L|K1qk=mcMP#+^J5jV_qm<1WM%}ip^>-Hi+{L+qL_q+8)y}vwtySGY5 z{Rc9};j=-EYHTJPirXLm-jWu;-($%mQ7dDL+WaWB18-7-8(rW+DkFUb^}w=88`RFw zy^}{pUoX3CdBB>kh|=`g4Fz@v>8OCe+;VT-c2K!j3vB zk}#%+yQzH_o*t658Lmv&K$|#w99$Eu!igMk3YdX4_qVGMLIFy!~@t-od|gp27eXH;4em z97rCddbPhJ6%ySEzK&`a9q`NyL5)JKBvmQwJA?aL3zpjN;-^fsEA_XdFBSe$9P{=~ zrg*x6i^s z`QB8X&mmQCU!ve(DGpd*NWHh-@MEarhJcj*5aYMwT@0#C4Kkh(~@7Y2)|?MOY~M*sbBKP3a)w2@UyuLL-)ZdkY~{p8J?l}SfI;z5(~7OSpT4QLGQ=<& zqT)x~deN%UC-?52j!X609JQZh(?nxL#}fX5yY4X=r4IfZX@o0OC|5&sl$e(8QfKXb zM_mZSq;>-pMFzm;R&bF9Ns6U1C(*aBOeOhEGsUF9uhbCEVW4b+n9p8@&xeAy|2rov z$mCdLxN%huXnW!ug1Y%56+>&sWoh{wTw8|S?Q@0>iik# zFg7Ei`^H6h;C}D5J`cd~R+PtdzC-p%t zi&Drl^6@11En8G4^Ica(_dU*g$8LRI*n_^K<5W#RzkKk=1(M$@vWh)vA&S++1|lOn zG!q4jC`ckC!y{L%t5iSMl?mErRby36woS}?riD@6;8ZXdxKXxV$J=3vvkp{Y2sa~E zN^q6G+PwDeF)-4(nP+RXd^e=xMuF(>+hdK4bFoWO0nx$ z+2j6{i64_V3;zq^PL|Id_dKpy2E#8dkK3S)n*W1J%&3?)Qzi!Q)uEuO7vijjRS{X~ z2Q7JSuyMt=8qv@T=L*ac(R}C3mQ2Qz2kVg%4++lXN4x)b*J^TQxUo^&66^wfo8=Vl z8gHK9*~N1Ku8|%Rao>&LP9@fi?wa3j93fn(`tR?=%9pS!UzY@P;{vl~9b8y*m#_ap zM!ip8=0OjYAv6UFP6VmNJCGw;7`cg3`Gu)w}loZ#;{*QV#G?VHgjb~;JA;St=m=6M(dH* z8SnLzQ3p5}vX^%B@rW(ok-aeC^#M}|*X_^yCLA%KlDquHT+wWPn2k71IP^crn5PT& z?uyX;N23C%=JKa2YL3Z?f`cvcEgbY|HXp%p^C7n*mKpVP<3LqZ9x%WwwDG@+=@?}_ z#AUpnjt%A>K6Q`R66Wk%=x^h9E|7kS1_=7Y7i*YD#VDZi-~8HKxjhTLv$L2P!a7X@ z-*Lo<2O5mtm^4D3$-AYUbUc(~$xtJOIt%Dgv-?sggJxRW7@MQM@c;Aaa*Ixi4G4ao zM*2DhrxQMfKj?N)6+HZ3vfNY#GrIh9c6@!aquV24=QB;F1lQvf4h*J%5X$IZyWFeP zPvOTupvN0qAgrj3;!q~x%2j1f!(zI*n|i_#pFUtZyH~mn3c+t?bpJ$X?4ET*$4dk~ zCz1mY)+~O66ORxozBbT6nG#W<`H_bR`q7Bn!HWj=*6R0%M{m44;{v0vG)z=Neq;+^JKbS0Uhk$aWr`>_*J`rX#Q>h)EZjV1z5n;JOe?|taNHf>;briA z5P!z)PZ&%Vo3*?&bR-6qHknA3zZ7BVYp1O@Jz7!sprrqnBDJ%I8=Z^L-bZC8&G1tYLetb5g7L!sHId|%|1XzAv3?V`WfZc~2Db@2 zDNq83 z^I{hBo#f2GAvYYWnyXq=xUIm~j{s%DeviBx5pVarU(Wml>I))vnBA}s2D0l9WGSHx zSAPC{c4<=2kf&UUuSfYD4N~PtAHX-z%F>HkjS4GjHGFzFl|KgJ%qQfK&!Oi7Pt*1x zBSvl%07x!Zn*Ms2+5S~}i>(`Fyhn{bi8Tu-_N#Pf=eLE&!02H`?9ghMMbq?0yU6=D z`dIU~Y4ThEX*Z3ZAo@s@ACi^8j7X(Jgbq0^j@aUpOMKRZvXa(Mf0k|T0OeIJF4TtQ zEao{R>i=j5`6`JhIe5z}A$pO1MgUwZM9*Z+`(_H~W!Km?3Q%_`+`_ioK_8IX=@9%- z?e{Pm^~wA6tS?^Brm!RA^})Z#3NxUe)89rBJ@Le71>EsC-u#}3gQ6%RA!pJZzwv=U z$CX+Hzt_?2s8Q)3*=P05OtGFvCNJ7ajtbYB8W|~SMv8i zH8ExK;KW|i!KlarS>XTRNvLN5m-MRCAkfWuJ!YH!2kBNGc`q1NY zZ^)6Z-`--})WF}c%LE*H9s!zB&GR>rlt;ozI;WDAeyTME`wZQF(hL*$LRPoYFFJ17 zt9fA9-EqNM^ehtK5{Uv<+fMZedtN84`k@>FgPlfEp91iYUJ4L=BHt8Cjaa4~{ zc#Q@D%imR5Im=9uV-ql6doH8{m7Y6&OfgksDJaQ!)0ycQZli|gUhDU?h&wHv-whZd zH}%A*rB`sO zqBfgtE|w@Ji};(yjol+Y2q?3w!Ib-50ro~$^R1D6ID%~2?`7Hj$)jY4?}1G#E)H#B zlapIo+@Uz)^$gkSUnYKIJf65Yn<`Y89n>t_Mrtv0lQ`7U=|w2R~h$lCPJViBtudAjo0B@dyzO|c8%#9Mj zKb7ru@J8=7;n`ai0mf{ZASDY1k?on-Z-K4PIBs5JsN{meA_{8dXvN}-laeOUeN=jnUElNi zV49&wE%PkzN?`Dy?kuONd&M#q*e_4_x3gybRI20q0{Pn%<1~NBh0%*HuNz`nBw);%sVp zZ1NY_#KC2!97Xw{y(kdCC%cZWyUn!YaP7VkSir#WJ5n&-MJ-VMuqG#mt-XDnk$Hz9 z|G6H*VM+Yhf&BiOj<|($zq6~Dw#6~Udr+~WVfGE{C@S(e+-SDtN1`8(e;n3*)6ba( zfofYX^iZwVWxv_JdWoctBT+ghnmK&jKKYm8{GIF~cC``%FfRWBJ;+E(P|^4zSK(}i z+Idl)5XJ!f=+SL|{Tm(5WlP-I*(Bz@UNAeXHuKor2~cTPMxn3?HKw2)obieO(C^-p z-@MWbG#qioO#~A~kL4|M)RCq=9l+DWr8g;M{`mZ~^Cn3i|8=7@SypY2+uUyy`TEdDZwCK*QO*?;bPD|yzNS~}D>Z%g{w9Z`L z;_tX2WLr(tbG{pvGk+sD$#Qy1g&mu7ovo-~G0vmH)nr@%!nYuW?XzZ-eY38ZC3dp9 z%5sa?43=t=Ej7JY%G32grJ_;CcjA9X2lF;FyN+zpr|2S=J{Pt&?}4FWPHuH0YU&2( zW~o2lK97IMsCX*;dzk0zz!l!!G@RitTcs4KykM|!le1;Pf{?s2=0Tyg!Ir^yjKx1g z691~aS?E#Vs8oUwXFqhV&fDV;_BQ6~bFuhdP&jk;0uaJbbq(nVUSSUC;cY5QvWB6B zFVZF&0!6we=o4z62u5c4|7$BQ=t_Wz{MBiZOeq2kItMu0<|YS#o?((CylT-gz$D7h zV@vxJa_>^$8)}6 z-A_3loPDtuJ!gy2naKFBViA z;H#?vTjG;4L!IAp8XESMhjjDaH^Vr2U_a~6c)sR??v^&~ng`dboO?MY7VFG7kYd}Q zD$;&odIM&<$CG~yfe+nk*Z&@Wrpq;|lxp<696d{4c32n#Ty5PgRrh<>_3#a<>WBU) z{q}=PC^KJmR!wM9jhsklX>a~1=JKlX%5aTAPx9=`2b0rEpWHU)%c21^74G)a+pVCU zX&Cvku-Q^BnE2Ca@lL?OZl7yXWRr68uRKkFni2)OO_c#Rf(Q~ADT&{UPSg--P*V~8 z@I>4gnk;S65Dk8Az};wO`0(L)k%rM>{wF%)X}NO+^swf@xy|5OyXI}of8-y&Fd{W& zXXsqZ-TFV%JEX9nCt1H1rX+Jvd=bC&ZQ=#QXHETr(74%Qj4Xtrqq%v)WQ(B0FNvxW zs0<*DDA>UuQMQVI2pZF`{|2g7(;a^K@OMG4ow@y1$%v`H?HcPeEz0s)3^xPh|KfjA0)`EwReQ7k|B4((H z8KcE)?RrD=)8c4Jijl83YS9>(O?czCQCjX!@6or2bynlK-TH+Lv=Y4IT=Glg@~3pk zpVihmlz{=IAWuWfprA5~Sbf$j)Id22=j`^^V-EG|W70dE2CVPB7Y0VYJnt$if&6JU zv3ePtDG+e*_9Ugf9hG_z{^jfKjuzTPp-8!Ial{U5^PohYGEmENf#WrO8mw_TN-waw ziFgOyptqWZ8B844lWgpg7+FB~Uy#BHDJkcyHi14Z6*!E7wny@~UIf()Ta0O%OtYCu zoSwE#imr9zSpN*8qC{CD-u>Gwk(MNA&tw7G>~!84ZY0}5kBc@iRLw$=oVD4878GSv z@=8swm~vN$??E{iw3ezUY~U}9I2?wO;Ks>be>kjg^j$S|_Raq$L7>mwqC7xD zbqP(+4_K{ek4_r=L6_;!#(|{R(!mG60GCUj+%Zxws`xCt={LDrRBs+R=2h@Jw82nm zN-u8gexaeA#=J%-=pcIW7*1=qVA=AML|aZo<9K^j>2qd*ftHuj;KcN3gQIiv;U z!%k*_XJyoKZUAAO9r2Lj?-h%Wlbj1u&aecJms{%D1h_0(Q-@dGj5xKj#~b=z-Y0ikel~W8_IR4Z%Ux$j8zKI>pld{no%7#?~^x zMsi%fh6T8~@WntSev1>*iI4X6=QEB!pPv!o&L7Z}&Zu<^@w{PRx5e%?)nf{B@XV~$ zn`?@PKugkg0^XX8CJ$0ogR;R+fZi9otO;1?l=!gLdT_V@MWx@i-J?WA;igzq%`RlG zal1Fqc>^mcWF>C)WZ;)QABB3&ei+m3vt!wJ560vxZ)Jqj=)Nazik?Cl9!eA#ky8E#WPJ2~_5tdTS3hZ6C7 z-722us)&ok8SkzeL+3|#Pqd&~dAAMfah>zK0QST|7s+K9Z=B;4u(0SLYTT3Z=CS-% z)6#sL7L&h(yU`=qb0X4;Dby`Vy~n|R;G~Xqd^HV{mX}X6o9 zjgv)FV;A0*V!2wc*7fr0r0)mD63FI@&O!O$?OUd&} z*mkrHt%M~)j^$kvQ@Avn~n#@AfW;N6G# zpVHDo8oqYpZ$@LzIg);D&gk}$4MsalOsVC9rj_t=6Z{!}^pUa{+gi+dcG~=V%RaVo zqBJ%;h|yIMdEd$#>$rpcV9C2;p{CrAP?jDyjO|DIe8RO-jzJ|D=Ve+&lpAMC{$n3XB9L?8Em%J-UG12KRQnyCm8dT#Dn*blM zMFR*`cJmK?kVd(Q_zp0V5RuCYYRO})#w5$W{9~$ zwO>WAI3dkvA4G?`bH$b=M3fr`rtRt3la!v%Ytt7m%S688Lcpt9!y(ho#dRL zI%WS3bu>&RRAvdR=jvV?^N9uLKg>GNuq1!-Kkyqq)U-DMc*6!%=JzUoy-oRdYHu6_ z6-Ow}lz&$g*BC~NFv)o*p)u!Dp35ajPa__`zhkaP3O5+$iFr&DunOKuHeyFtoR1IL zj^yMSek(D96=2$-_hD}P3#9m;0>caGZ2?wlt~Wp>e(AMmP=v$=Z6SXJ#g0geyz;%X zGSUY#;!RhL>y8S0BD;w4j1PA*KW}_Rh0k|jl9!u09c$wTkEKD1DqKZ&FszTT zxMPu0cwI5~HDU;Iq^qjz?wB8_3P|GR{r85u-`{y3-Nux9u*(7+bi~2}9QhNECZ8(6 zE(~+qWG~P6f4z4?!G}=Hh^Cqh2ZGf_l*BpK`VMRBL!3$GF>FFNmnc`_p&-u!fZW0kEA3veo%k9~iPH-df{l zd=(iGYc6lQm+jC?ENeodG2Moazj~FWKZGf4+?+%i<$1ic2H-`6Lu@J4%rkL#spl0I zwP*^VRwsXWhFO!(Z=u^nI=MA@W0p9F$pAJ4+sq4%+>wE_xQFb9GNTpTE7PKB(@_1u zi+I68(G-&tU&Uvs@ozpmzFft-Nc!Q)a?_)VBFV6?=kc2!xxfr&M z=Rks`!k5J@5SgT1(Mdg|4YhRMM2vD>m9}p|w9YTm4S zcWW%2L29|b!)^M0qQrnXK2Zho?8Ro$)}IegY$F~?@(MyQR`q~idn4^W2qgswko+oCM0x!uuir}6Oi|Qvy@7kja=vnWtkv^TGRjv8~gze3v8;RdzhSY1~i#YJ~YLalp%>gyfymUle)YpM~<- zWQz9GC7OT6TfJC)H)lShuU;u*7C}H;%JmkI!KCP##0pdvuEKPrsf1qO9nr4rxXj>N zw}ep)TR~)T8i59YS{=GjK5+>R%~w%`aKK<&?3?03&F=3R)(0(GrG)iQGqHZ{@#8k&`mR($UkUvX$~B7bR{9s_Td?4w60xUSlpsBx1Cf z??CqzSp~fXJNnznN6|_<$3HUi<0#ol-!+3dOwZt$_jW^85wA)vFK$G4ES;7ov1zyc z_WGmhG!Mlf?iN|0OM>Mdt7X)GE@MmPweL0xL(ESHfokwa?Luq^VI1i(QuXcQ=vk3|u|LMTUw%px>` z7!WKi{w|Cvw3tt!x_{J(o%T#J{TlJJgsm(5J)2t7Z}Q<2Lqw6LAy%~Mt4prh? zm8@=D2PaN-|B)ka?n_i8cLK~7!i~vkysu+3Z3fofhbM4y$E!MiBSmG1m~-0tFTwi+ z$oRx5Gn$F{Vu0-*g(;7t5`2A~1B9U`mWsk8Km~3R6*mwfgDBaR?Urqw{mIA#7=E-kb0y(1YKQ?5E?sb)73CUb8f7G7$U%b|4Tx zSA(LEA}-r)5nI9ID_RluJ1SB1Ni!b3g1xGGjxZ{(BNq&}cK~}3d!j;<^4Qxu93l+B zuvlwX`rrA&D01))XE$tg|9w|iOJRli7?&L@C#o98pidmfGs>Bf({cPFGeU_tU|UP& zcYm|rR%CKPc1&^+i(OR@V~GO}C59sH**D(OBFivi_(nJBMgoe(HePWq#n8`LZ5pi_ zr7QVd4x6<}-ON6ZocLiZj>%ivWm%hX=#iOsFP)2)INS|Ltcvk7HdjuJIRL)}D3=%h z4xuiRsT>cK06uNN$|KAQMW_ismh3<5iB!U3Itp4YW`>(4+PY6 z8W-5nQHG>&rG$Ws&^UbU58y~24&p9}I&{=&lbF@Mu3q^eL|mlHa>EdH{g`5=wu4!1 z9L0fwx07$!{0FP6f=FVC<6T7n$jfm~d|PPoB+2H_uMTTO!ALRlew=5qST9{|5{-~A z04iaBK7$P$fs$PmJ;+uaNR!p3_mq88B(V%VRB~ z?8)_!-0slE{_T;>*eG3Zz<9GnIpJ4LJIr~5nHNHTc2u{a3S4UpI-$QAlV$s2RjkJB zCLeR&;x_P9)k@h971pctbbA^(JO6Y1O`lelfLkjn&{g&dY%IFXGDS)J0-)@B`9XFp zT@rERII~$@VeXxg{bLhA^7vEcr@`GcT&;To3+GXWYa`6O?X#c9GAo@G01EO+d#C>u z%?WUUEK6UlM_LQg;uhZejJ=)IWo1j&|HO`dRPOc>iro-d&{O@P(H+SVe`&;*_#*Ov zOGDS!kkn^f(6@~oRWfOw-L2VRmx3Kf z%@Qep3p82LQz9sNP_lBnEnMFstI%#xc3xWP<63ZdQV3RpJOGSo;p>{Hx?XJY+F9)p zr3P3wUU{s3R&U-Zp!D;@qXwJ*ik}hsk`%diyTZR7GP-!U3jHV=v|9DKJG{9!_ERGi zpH@g`B-K}qeVhvJx@T4al+wS-boNWPR>*5X-TvH)^l<%| zeEzHWy-$(CpU&z}PAsA~|Bf$ZN1b>sHIIP~3TOY*!ld|a=dwWAz0Lotm?hK{p|IDv z{R~x?c=Ne&%_Uv2_0(hRZ4|HyIj-o>i@^u`=dQ-S&j!UVoI6$t`R_wh?-%yljgL5s z2OK_0VTF%_=){J8({7y@Xym;7s~qjNgNMw_puU=5b)9^9lq30Z%=P9R+Efwu?dwJtIU;ZL>jO(&g8&~qB|!>11LIy&j>Eg;?1UyIkQo7$ zlu*hnuCQlfZktE-GV( z3UqcDaEViqLLA&W`6mz;5k77gXaqXr;!-y2bgV}fc5`Mvo0ZNTp%YPPq-azz01#cL zEM4_F&xJN591k$|&CLSb=ZICL`WNZBDx~$viM-iJMr=?as@p9???cvXk1>1K&tub6 ztsl5+_cKO2?@KMF4kU8t!mBO*=JF%LWB8`x7wpz}HAKhuDI+IEfzJ|Y#4GK}oC)Rx zWUG!{X{#{aDmF=Cvvk#5ze!3l`MCBkuu*<+^=URzvj01WHr+dhiR_|^D17v>B+$#s zB{#ic{G)sqlEdE*^$Ox2#FQ`QSPsw-qK(6faS^$0uGmpb_T+x*MIYMR7<-Bsv=%2z1}utMEZ_e5Jas@P#Ww^ zL)UFln?Hy|?tPq)PB*b!r(otcbH_&dF@#|^+&z=|(0D(U7D~#P&Q{-UJ8oqyh~4eo z|M^+h2MPx;LZo?4+<%2-Wexwr<}h^mtHOqCydg|A~&uv)1C` zDh1U;e|kLOSZ}DG$9CPbHFQ{duMm%chR)Y6!qgA$jYUqY&4#~ip(jS>GR>!cR`Md( zLII&Y&G=<~Uo+u%n17H(Pe&GJ-g{!2aLf4VFIg(p9$r3Qj=UX+H6&VSo0-lw*9r5? zOTT+At+@=d6TallM3*4?NTi$+=J5J5?tf8MUa|u?v}wL=k62EtJfQuI&vJDZm zL=oV=ReH?>6t&s*ZyZz@bv7FKFM3^m|D{D9^?KT!Ar+hu9-j4LK_Gbfch#Q!`YP9JU0yT{AmA(p2 z_-%sdZ#*fc4l|v~mE9InY7d&rEg=%3BsBbtX09)y1-I6+N#3NE@B4vpI+tmN;uaR` zKvv!tU{rv!yBmfSw#X7y}zi4J+ZN7(?QW(=U(@P@O?Ef68$%b}=< zImx*ySkPUt;eqto7wmA%P4EFH?gdj@vxinoeB~pk-v;1u&o&lUFa*u=FzA0veTO5F zM~@%urqdh)l>jQ|pS7BcC>jvPRc^2z%?0oMw&`6DaB4_)R%f5lNZ+i@1Z7(Gj(6Hrt1_ww%_}}keECPhQ*{|*~sp}hteEXCWMWe!5DvnZ?#v_`7Hq?;w(m6 zETDR{Qr2<$A#geQ*@t{hqz4?irU!`xC(;(tSVEu@j#gshz@f|25q|>1%yeQ4a#7_? z^Z)S0Y78>10=_w|mYy?U*)+%+uL{rzg+Oa9P4sE2wb=2jNs&@Ogaj)B`@j7*nr?`uS2@dR1;~@3rz=>kUT=W);sp9ReFlh$S z;aUm#n8M7j`9N@(#sZmd=4~H}_AXYmR50^XGZ;rvn(~?y6U~2En18n|^`ylui41vg zoL`bE!765K{w8r+siOEBYsK)>)NgWs1&JVtCMw}W_$NOWCW4a&dgg;Uq(s!(;F0*D z%~H;sI_FOTXt+YW+=r_wd|J>ls!D5#Pn#uT6e%JbR=^6{fLt+n5O>Ph+@<{fr3g((C!mC{UK4XC-AJU1Ac$ zbwDS}&yQ<85vRa$Tz&IJZ!yLlHid7biZi(1+%Fg#U2n-c(_22U0jqk$i5%3A9%`;; zJ<|l&bT?{y9n&HDg`A*A{1c3{;*DEfHqDC~S_07YpOSR``@SY2UHVRw?7|JEFmVbh z9~X^WP%)m>f{NTPUK*6TzZ-Z<#+>|Z&cacW0ZBZ9sIQ3RP?-G118< zB(1gDXL19z9hxZEC-P)nu03!~?mA1NQYKUz_)BI}hT)U={wKvti95m<2_L9I#{rjv zpl_m(aMP@wtZ7kV=xM5FYnJ{tiW;E+?TU>AJN%A$xGjz7uC)f|o+GeuvRW{dcDLL)>W2sNm263Lm zEoRL=EoXPoxF7VVUCKTu0=CeZkwQVP(TvE6hF051jy>+kj2^K;Us3xp1;wS4JWXUl z@c>+!f><%4AcjOBGqVNLErR8XjO-|?V8QTGUReZd)(x`t#JS1y*fIAI~H>BKjI`B$|yXrspIT>4@|hu?i3 zU!z>H)Pq$z;XZdO;|+|CLA9QzX$g!YzUWp6~;y zT~BwzRfSO%yvg5x=?aO5I$O)C%~8D>*hcUrMxap(|&K9VgLH@olYf0Qj1*TFH=9>ir0x&HjCn-|06Zas1tUe^66*>LrY;mHClVlfTWdv1 zEMA%>7fw-|`nVYcq-ceRb27ykq(M7qn@rSF5Oa6vtk6XT@ zkMiT_iWVVF+wsZ|8d0oyVE`?9Pi}-g-dfC&L+|HRf-IVu6r{zvo(>v12%mBTKT&|} zWg}DH>|qQ$vg>vcq&zN2_V_Yi^CdX3dV(`BrbJvuzIuQVcTnkXj0|bOuZhl3q(xAZ zY{zrzfzufN_i~#Mk{JT##Aw&0f*8oAI;9t4drH&n^56?3jd4ca$W5bFLSbKF@|rFfpo?A9x+F3BcV7`vS4HLKi%; zv1~NdP~AYYy4l5s8mK1v)mB)VT(wkcL(jF5%unNY+AYPzHA@AOafZN8l1I>68xOeu zkMEGQ9=bRcIXJDx&^`xyVi@jLao|Ow43g|_Mk!g?{DswNuva8@XIQa?+{h-1&C$A9 zN>2D)W!k8yksBmZ`uj0Voswc$so9rB3w-f;XVk0Ntg+wO6tEs)v2QiLkI#|pb@tb} zVl64f^7St*dCb=?a-F!enUj?QAWY(FPiSk^hBn2yU7qIlj8-!v%NOfMNGQRLf4aC0 z9H`#C@SF=Ru_U|*QEcx~o6gmHEZJx?uDNpsC zbol44v7TY8ae`Wp&7T}RRD;wJmER-PcHI)BHxx$eNeCBT!ADA>#q>|edAkRo&8E04 zu4k=O56X3dOOh$m)`>?O^hj%Lp>W7Ndrsuf$FKZdZiejwAY~>EeOEPirnYz|B*a!M z*IBHTXoI!)4TUf=^Jz$GkbTH{0%WAfZuwhH_`_or8EB}t39GPgn-Mt{IHmj!7_rEJQAbVJhb7M*6U4N7hgA`V`5Kd2c+j(&6= z=~&ggJcxnVqE)xC7v^t^)aIam$ks|yBwaZoQW?+^zM#qd{f<%`tp^Xs09_B=X9qOMz!Qv zl0bCfGpV1>ZUqKD1 z#Md(XS-Q|k8h__EaKeKkv)<&$ATt1vyqX_4`Ik z$cH8jeyK$wUUtB~TT+|ZFjGZv0a2{Wv0;B?<&W}0V$ZI+GMJkSD%qKT)>3soqjTV84uF72j4Y>BaL^eOlh z(yq{*S7?o20)oo>JLu%N*JZIykH8dC{8EtASrZvUJpEvude3#Z{i28$Rggu%0tTcGJThU0BeTQ_z9Zf4ze@}q z)LPBg&;ZE^IIr*qQ!7;BVv9i>OD>{k;uVBOu^K( zd}_?hVbkFt1;#a6S-$S#o{glQkO8u7M!jV73oBf!v(r}gv|pr}U>5mNtXaYuSrJu(F;>i4k|Krj4347NPLqoVIl6C?BqU5Gy%PTmCh6| za0@Bsu4LZ9(3pzTqiB?KxxVD%?~%VU7H2=Agt%ej5vE3Y|4q6`)YdFf-Dmx#ruXFN znAH%$q>>C9{zbf_unlGmE|FB2THr->%p*)CW*uMPFixnMjtqpcx2s67nh4u`-hksJ zdA5QiT})j9??QS?_pd4+$GzudtkcEA;vRBYE*AnV-{wa&kbKA-cM@t0sK7oKH(g!3 z;>X(mcXY^t{^|b6EK;Q`oF1#ZDF)S(FuC{iqAFg}_loWfH@5euF#cXW zeYXDvXS?%4z-^L6H@X>Fn^Qnn5k|T(I9!_Jp&>A&cm-5VF}|6LSCWP{LKf@ z1mNSSHV6T~^Y)G``edpbdD8r8dO_a_35+5^2F0u5N3~jF^GbuW;uz&8e-mz;K6QOk zY{W3YihvP?X$)gAp?CKSC{?7`sk<3qLp!wq$gB+G$J)!f!P(^=Ob+(yXGp!Pth{4N z2ihi@uE=C(nN6m6!Ip~oTJ42 z=&7xWn>^jSJ$0_Zpt-2$tx5$&WCsU*Y3_@zdfb* zbwH5-h>SuuGL-Oc&HBzfdF?X2%17YuNF|;>sfoBFJvxDouvAhmae?%cKa$+}-5lIB z61@H~qOPt~X{>OUZh0~Kn@_Trs9!996|cES)3d9TK>K98CZU(*E3~wxg$q#dSXB zJ|#@{QuwpRp7qN@YfL`j4vm_;XfmseV7uVHd{sT(uZ_ek0c;&W2vR^R8k@S!nCt%oC!=&3Xb52I@4HpZw?}TZV zUCT%R(I0^yi;v+029d=QHmjxA-e1XK?B0r)4#9-Ck^{t1t}U3`&{IBgn>bub#@c_V ztv!4MAS(!kaQmKBCMioX1_GLu>ep}xR&}xZ%yVvN^7j`h>Q(?aS~Um&U%e*^THSAg zkR}?I7iel&h~1nPgV3BwP1T4ZT6B&Zz1G~f;Yq9^QYMT4dP7I5eEL zc1FpgC_bgZc1WsIs)_da`n=QfVrtLJxYtdR86Hw&ct?rs7zMGoS&l7hkpf_g3q9pW zzL~VKxZFVB3>zWUc^AwcP{yI`+rE`w7wi$!GgP10r>Ii>k|=8pc5DcH+gVxs0{0M3 z%&@s97@1&RJ;d>ZwW^(@?(NQlI38M{xkgf5LVIN^CMZ%=qYCp&yFxDS(QoFSWdVdI ziF5oP!+R!26h%Z65rCf zbhBw~Ha&Oj2wf}UF1=b59iPay3FgxrF=E&vd4PP=NPSxgau1ioUdE^skZ)Z7^lB1g zPrMvooPFCZ2Ntp@!G(3^&l?ns{s6?5V3WTA_c&#As@6C+WR|pk@7X2@ie9|u0I88d z_euG;mqR~07OZ)O8buh-4+9G|_4BZ+7U4(rj&`8O1Gf*tjA35`5BL=%_p;Glif^5l z2!iPymxarocl(4IT>;0{2;=zxHnNRlmOI$zv)`^fcf36&;M)^v!v$XGH=xie27TtYc2oC+sXlICFnNQ}}z4^I>;= zfDwX`f{$l20OdGe%W?n$xI*Z8`&8Kx*M^))wHoJB!Tl%*U>RT*xjMB3KE{BS%$VVh z$hAqSNB6U}UO2}LT#m|P-JklE^H*%oTIJymgT+ru>M7 zGB~t}6ZYpadZkP~R^>0kMtdQ7BFF$isZ>|lpnq87mW%C;LkZL;8NcpjM75LrwOwpv zg`=Y}rIITD55L+rmpPmgV}J=~Z|^O)$zkEY55s^I5&C5)cq-@g*jZT&Bq!OiKvC!E zJSm+%eUYkY*{S51stnbXrjfzBy0}38JWx<+NtMXIvFsKE>CyI{VelInCBe)$5SlVC(@8E$!t*wHeMpy$0`~~dPCyh+E!#>gs@1%tg0^xSd)f zj+F!Q)AC{QsQxQDwx8h1iZGlC84w*jaak4VR-}9Bs@Vf+?4wnEyhw9u_5h`hqKnx1 zprGwc$Z)-TH=RtYP$;=-Kkc64;%sPWUQ#g`~Km$o_`xsc(t{TlAnGSOhp7 zx)>bhqX_Ahw0>kvyt~NhU8o-ytKR3U$&&*zp9CAtX8bj?uK8Wc5`H5T$Sg0qUvhU| zFzsC*uXh;AwdLRYdVvVWDBarakP3MNgT5rmQU_XRT2BU_bb-Tob8SRtBT`(NO{5MV0q z%<|DyqGSSPfmgIl-k9#y*}jjeZxU9`jPA9Zc{62O`f^qrHNhxy?;$|3CnlL^98@a+ zhK0>NpTK>a(vTJlJh8bS#_#>jc7=#&c7%!1jMSUN*}b+U3j{JWKJBEfJ&8l38QR@~HWcDT8bYU%fF>lWN5~LpO@FvJw#7)#-A})*<|{{Qww>>mPbE?2RM%|_%eQ@4 z76RiO&JRRO^LQf^9Bei5q(uug{Ns{4K!RmtRPQkyN)llu(f+sxQvj@Fn-Ye5xpD!< z=%AnOluJ3Pe;Q`WKJ7cMx^DSY85BWH-O24Z98>6{tE}A-ZBY)_o%xRDj?21qe4r6a zA^UQ59dv4vg!W6Ht8SQ9&f^UL+loJmr0}*CGXK60efe_e9nzgHT;rR+f=Is=zo_w5 zi9eD4BPanSr)#OdgynwEjPExDY9sK-S8o&U5nc*~IpdmcW3 z{VWZ>UoRk&Qa7c-KVIg_c`VyxL7rg(AA z1v77bwQa)QpV_(CFW@-Lt25qNobRZQ_ghzLtJ>*fLR#$#AkbV~o+H79s4-o~Arv&6B5PmtOnnRK zu+NYXR-j1Hyl%oAdnMiP;*m$ z?2jqiSNUc5owJLdv|v{1^@H;@>DsNtfPbp)>O5?^_t`iavZTG!E|HKQROEAOEj1Ct#mU3rSujjHVs7MEx|WsF z8+HgADzF~A1&0cr-AO<*T)t-n%F*Le-J3`~ zz+1>s)|us5TcSFCs#lBO=y-hYx|#c)vDZk)P4xqZ+6!)suU(5F!?T)5hVvTvr;~Y3 zl^{lBw>2OBwi>+-jU^p6xQAX_MCY11f{!%KUpwr5H=UZ4hijj_F-r-q%$Eq860O7w z41XV56GPy<9$sRRx6A($g5m{DTup*=s{^S+ENyL9eh}Q^yhXT(R;J4Hk@yp1x)^2% z&nkDOFvI5hma)$PuI1@yA%3J9pY?N2-YfZIB3xE0t`Rk%L39>Cj!f%!(X^UL0S9~$ z46IL+Db$;7)s^RhvdrN@xE-FRVz9RWM(s`t!q@dh650a&uqxuJIYzT!@u312wnSpy z*8}#TWUR&&vyiJ`hUa#qD&ox~O8c^@iNP&Yns6nZk(UO&$)(m$_~m_D&e=*j+ho4f zU#fkwxFY$BZ?2{1$r& zK1-n|pkxn{S|zi2MP>I+dX-dD~hntl4_n&#A;OHEA=qGZo)i0{UBC(o)w~t5UHE`yaSa Bgz*3X literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-server.png b/v1.12/_static/img/mascots/scylla-server.png new file mode 100644 index 0000000000000000000000000000000000000000..96dc785298bdb82ffdac74c64e6d360f12dfccff GIT binary patch literal 48529 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

          oIm9P(H!ZF(6O_ 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 literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/api-reference/index.doctree b/v1.12/.doctrees/api-reference/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..617d0ff64b8fe216ae3a6d3dbd32bdde741f0520 GIT binary patch literal 5640 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%0D-pYD4(}(#V(*c{gvnZi&i*U-M zS#s@ATKG74j)^!3tKaNL_JeWVAh0JnJb&)lkEe#chQB|so^jjDK`eJ~Cmg8|=0sSm zB%xLty~_P%Nu`HNA?R7G#5^xb)tAcy80)XQVXeFD!tL5L}^56JBqAKtShWf$)WRM5dfpbDx5nq^#%TQjZCwrvM SG(>SL4V+igL+Ii~Jo+zt^|9Ij literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/contributing.doctree b/v1.12/.doctrees/contributing.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cada2fe464939e4f6b448fe3640b30009f08fd71 GIT binary patch literal 28823 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 literal 0 HcmV?d00001 diff --git a/v1.12/.doctrees/environment.pickle b/v1.12/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..782d3687b165e49cfabe98a70a8ff88794ad0cf0 GIT binary patch literal 747149 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

          kp; z?~7^cKyq*4vFWy*x|44fU3h*)xe%?%HVVPGqIkH{li&+~TAP=*gB-4m*U913zc*fX z7KF@iwR-N?8Oj-T_u#;NaO$ZBR)wolEeyguP;J7sZ<8fCwaPq{L$;W>llUj*5PQs$ zaSc4JoMf2^Da4zYM$P5-9}F(~j}jk6pRYsLRXm^d4qFEC8E1AHWY@nes|Q}9n-Ep^ ztgI^819g%a0>UFU)Rk6w!j|rK}9LU$TVcV=2eh)}qgq_ztL^ogqV z7`xSvz-z;)>A`e1oEAm9%fD!*uZH(OuVz*t3hdNrVdeS51s*8OB#-Q39Oi^kYw z^MbyP(?=yYl(rxwUwssB^p4EIG+zvO_`VL8;ur6&V!ds7smZWlc$c-co+sI0;9e|T z!fjxYb&a|*H%g&iW31Qk!iiOPDgKa*ab0rs=xkH1pL{lcgABll734*}laS(yt{PLX z$BCFm4@aGvfQn{sPCv(*)F&R0=d8nTe!RVSRr(ji9Q|HBs(UAB2ZZ~Ug&cr{#`ZeA zy_Z$RLR;xJFPJKp6vp)rV+I>a{NB0rjg4>ZNuT7$PG)~75gkWB@>%ZtG(|h$(2uU7 zMn*0^y?AGZk`w4nEw?C6==I#4cE~;zI*jQ`)fkIyQH_~6bTZ_Fn4d$kCE}a-`vf{V zz!5s*A#M}br~+!QMco@W*V~>V-$W>zgY=Oarx{w$-uGl?ax#&Va^2;k+wVxqK{0Nh zjPX&XqO$+@hxOn_TKz|LWrs_d(^2)rfw>jtFZntMHnOtbr4X-eaR-EZY^c3ZkyVW) zKQu8CWtD{Fg3e0{|A?W!Xt==6*|aF(k^0waT80AKj>|Fbf#0isJ^zsUaB`2sg4M#T z#Hg&t-LwAT{;TF!FY;XW1NQoJAJsjk5I$`TpT^~-Rz1w0{5W;Ob$Lbk{V5iG2#A-^ zS&5pO{6<27RXg`&2{qvy{=91}r(#Q2`&qd2G#G@XiF)-1=3r$JTn=Na}b5*h{_PfnoH2?sz|KqJ6@b4|{ z4eUd;w~Ds6@459$oFCXcv9gGbS!Ipk*e7WHussn?0NcJl%lNjxdEDz_YpzVJGL1|6 z#_CjC%18HHJjUiPdh=b*n7s)%rlz21dPS$V|<5?_(>_4A?TY>l3* zf@g_>+OJkMuU2ZUlv_xDF+E)b4~@%NO} z?ELIw{JAb`OKwD=d|m|J$n^hfHfcl0Z0>ERyw^b zv@5zWN`339pV-Cs^STN3Tyv}usVQ~R7N3{vdPil&J*&)ZgL5d>k=d;L>Q{(4D})P$CM0>;G`$oF4i5G}OQ?LK8SrC%N8NwfZ5JAPf&< zdLB!JGFEyQtL2!NaKsSapV9HqSZmbOIjPd;I$+$V#zD2mcf=>%7;0y+K$8Pm`{~ys z%Y?4{?sydLPEs4+GLBl*jOhdY@XV0&VTJ(|n*XVf#xR4iWaH;$pqiy+mbsGYQj|OHesy8<-A7T2=#zXqiLjM z`gu=*e;GOuFE3*-VcvbF16=67r$STCBeVs7`9LZnkkqAxrNr#wm6F@8#P6G3#W2RS z934>FRr`u4oJkWgIwFW=6kpaK;5S;Dj~fbo5GjwbpZ%>R^NJJ08y*o(#;BahF6Z)U zj=L$`GxFapqaqxuqUdFLGat2!`+6x!%=t0m6kpwK+;Cw$q=ZU>$G_1S7q z+9^oni6~OoACcv4XTPQE#GQ7Tg5|J^FG$(6Y|i(O)J}xEwHSjW((3J@Aiv!W*3{7x zjZ+^r&TSECg0iJR{BvO+}kOx zX$mzGzwGi_(yj_$K^gvF(Q>VROd?D43|piDqeMkoy%xZ zg7_59IlhN8yD4{dJgu(6<(o7issg1XL@s_9#=*bTecAKiQn;Gb<|W>(kyE8(wqz;j zF8fz6Ne9H}DH|-AO%$*Y$zOo-MfD#_W_^5gYUrtH`Jgw}9n*cKA)SxEOm z!Mc~bL)3|%6VduEM#OT&8OX!@%0A5FocIKkrK7`@De2%}>Li$V>_UP~)Sbxyw9nX3kR)LqOt@bHuQV#g6hyW!gF3!kAt4l{Oi z{`g*9#kq=ERI%}V!`e{d>c(Vr>z`30_b~bGR?~fkaJs2S@4dwB$65|Jes#z}!}omM z^D=Oevy_Ocjk>u=QDfSOJtGJJr=9DVPX5^j_1n0`!nVwj%wHxYF0U`s%Ds{+F*uBz zsB4EP7VfBXCz+`tWdeuWrss%huC{_4`j_b(8% z<}CQ9cw)B(vRp4dIrUaIY3;OlOd{4(=eoCf%M9GKZ!XhXktW_*$mhW{8W>All=h5G zY;FGDdpPYC%y1ORK1zb6d*Tva1i(GEH<0PG6I-|zI_ zs1ulWs|Nry-$*F8do(aWlsk~yE4{DKz<_>gGCa+5r9Z0gd5sdUv_IMBc^U=b*l;dm zgHfcInR)eR9Qaah2Cf`iPIhe=79c#(7<5=$jGBrW7*iGA{#7fz#v|&)O6yOUUIPTU7=!QwaPR4qGC|_)GW9wt2{-N^*qeRdiT;=7Yn6K)(ot$ zzKrN9<8=V1%#{&Bpg!O=n2*DlRwIpdyO`p!Ls2#H!Gy<;%E)v59Jbq3uMc1`uF=)z zUm@eGYY`s@&daZxlkNW4y?znI#mC)p)v`hw%L8c*pGRev4Q@l6|a~$i#?Xpp3>Z#c9 zHgGFfJaz0Z!>u2j1*RC+G3oj_!A660$LB7-Zo5(9*-k!^t#}liL7MwJ3)^3)hI(~0 zfdB-}MRM%Zw?CLrs{yphy6gSrRk8R@>yy6Md#xF27tu?!<&r0Q4$YXCCG)2X%74=Z z$)pULoz@A5NY*`_p64jv=d)o}F@Yi&HTR`$@_%jUbEk2e$^efwn`VlsI}lr!a%fKZ zAs)jEmvLLHBk?^2pkxMn>yXcg*#@a@Y<<8u9vt3MtM-+rPCTz@8`Qzh&QZE1 zj7gQFI7RYt(XZ}MRSBH-)u1>92RU_a=V9D_40(IXP44IIS`tEdS+l>>bvxrmVz#59 zrOe7|tPx%6%_6zR_oN)mSa-amdXCG2$N_iT++jCn?dYeSE`~f*j@{~3o()*X79-F8 zd_B9@pTQ`wrCfjuzoIy@LB_}i4#WpwWrMu?7)!V0!i-zg&z zEf)k;n*elIR^y_gdg?TiRuue8x|hUmGgDFS?XbVtMx>9^!8PRY4T$-O%^d(PXhGsn zEV_p&MV(h=d=obxnJJbztduzEIK3w_Ptz7KIrgebIEu>~Sa;v!)%lDk5~`z*MMJfm zpcm9)0LsF=pM+!oBt z`052DLbO#JMLw3IHW$XVd^SpH`gk2C%niCiijF)rhJk|XJshu<8}aYxzIHD`eKza4 z<4oV{3(6%$ld!#*pkGzuijzpc{Rc@0TnvTcX~IHJX6EiVZT;*fZ*`d#y)hqr`xe0X z7xf z^A7||jSEq%<_7Oz1w@R0U`^)wpDL?SGlr~sn8$r`L-fD)(d4KK3@z1{u?-i?kv010 zWjhtg)9{&=)ltyvej`A9RTUo`ax)Ia%QN4;oTsVU z?7oR^|MbS?aK$H5UtCf$v-h{~q;$QXL%%h(2-B15QBbq{LM$-N`SBh$19N1Ew_0kv zN!6Z7S9G7UXjH)_&U7&!53%$lvq)@xd~Z*NDYN%6QUBLT34^jA0(#`AustbAM#<)V zm$`XFFQUSx!&_$%Oq+K_Ur7fiR5RF8Zt}6~bN|jqJY>kt6ST&#*&_}zcqDH90S_4w zN}h&{bvs*EIx*9JAmUx^7pH~%SJ&>+jAV@)yj3*M%LyWDwF|<(GcyNc=Ef%S9`X=( zESKMB&1o`V)0P!%DzWF(owXCWF7eg&iZIjpPm^jtt%6gF)g3xW)$7LWJ$3d>zJ5CR zE>8XT;M6UFNO4(tJKKJSvEqYPCk2=4mBGdBRbjY`O8A={yg^?ck``S{dJ&Z5ui8 z;>*a|K$#_^pDn-<8jTkohqS&KS{m*!7{yDwgU&u057mrPNYH9v|7qE~w$1TGOdj8W zZM}Fz^o~J3nz!&eq@ShHx~znNx(U&`W~oPPeJXvv83%8*+051Cak&E4x9P~&Re(Wt zW2}JJcsI|-TNnv|q1j^J;g9{RBE)aY6QI`&Ljvt}jlbWrWHuR8xLzPfBs9KBn(#I? ztxObiIXRX$^rfoap_ZkjLw2}Q53Wz}*pht7d^&9KxV#u71*+am zVy8skM0^=|ngcZC45wbp%}s4UV$yY#T|F@`PZJZK;@DtLy8O}hb<%|41d%lvfVETa zD@&R00c{{F-qYM9&NRLUYVG;@vYUNxn7d;7wh?2v8#JS}Z(0<06Km_)7)kB~)yn6! zN+*gT|KcH}-P{uCvRy;@^NXgt?&3XduM1Y6uQFt(zD3Zgsen%ps+6xOhb(Mta7Bvc zu5e9fxQ2$lx^($%lHXuCOIQh%OGx_bDFIYzQB?kF=7Px}u8e*+F*pA+E7 zx`T=Q49gEVFy#G*`zBLVZsoz>qi>cbKpFHy!B*Vifrp17hc@rrOb_@+&6JmQNQ9N! z>nt_*f%DVMN7E$3K_^X$D25ed%mRBVm{#N76KCl_dR)o3v%NiXosANqcYOfVi0RsH zqn9I*hN!8rv-O%;uU04B^#c;9^5F-QTNRPe-8(}9hTmLyX^Z>cjxLZr_175A8lPw3 zZF#b$t=*DsmDx{+bTi40c#`NQ1%Rc#)(yA@uITCDEc`3WJ{G+Ara(^vXdBjaDGlEI z$kZ4bOfvrkyRwwj*BC()`|vHGjSK7Ox~n~4n{)TnSLYOBLF2`X+hno_w1M|0^U)ys zds#=;@e`_*%j1h$nSh>hr`-uzw#9$*re!IBa)2}@M&tHxys6w-y}`Sg-hcyZ#!(a8 zi)#-+Z*wrL3C@y61rCxyJyaxV(AU=>dU(~daKw{`O13~sy68>OgnaqNs+ZHo>9Dy& z><;6=Qv!<7aIUT*5at8Y^jd5WKD*!>Sf;K4EdMk9>eH#2@y%pWDg#k_4gXFMCoM4^ zrsK-#!)@ZN<1J5rK6D#;LpM}2#US&|R+#Zb|1p)p*PwxTG^9Tk?16?NZw-l8yyu3y zxy>rIG{u>5Qs9D=I(GM|04`jftZ_O>e*`pT7JpEQ_7aLS|$x9-@G%keRk5dw5}B!NHtH;C`%( zTt!t$3D_jwv*Ez3NXdal~)RqHdioU4*bIUvZk3NPnL8=}d z;1&WWmOwxegy@NF2?Z}&+6%7N3-~Xdll@=Ly1@ZOwy7A<) z^qZzyw(-4B$Bz}Sy&_yWmXT{Iy<=0Sye#mW`*AMxlX}F$j$p|I{*s!a3(!pPU}pAO z(hHZD<%C@Lh=7^7RceXZ9XjCf=19;Jr$ZHb%DgyG4oTEo*&-PyXY zJ%Gujo!NixfmG962LFRlAd@*FG>w(Go#dtded^g3k?bbAwn$=8X~OyPtk(@PF0aA95{fnme?N1sy5GCLt!oqH zU0uKa7N=evHlI#>lH15$R3e2>2Un67r9?pMU^MqLEKA;t)F73${x`nhN@v6LH$&p-468mw`(lzP|gCG>}h*#;bQtT0oHm_k`5We zEij}a^-TgsF4+9WN4b?zg~{aVIo|=KaHg-HLq2+E3J5eFBlG6|6~K?;7aQnb&+j1j z@v&}UdcmN&pK43+?gAwugwN|XMF1iK$)(4!^aQ@R-FMWEl}?tbOlmtDj+`D`h}i0J z{MVHxa9$rV7|}YYJrLZAE~ntaLv&r~oVNB79(9f+phWt@#Jdi!SJvVNI>HC3DKNK= zMu}k_gfKb_X0r^HRGq#jneik+QHku&bOyec(xnhVQfS_^)NPh>Jy9hXBPVP=f3VCU ztZxbk7_;TqXKU~acw(nCO z^=!0NTvz@JQlLcZ>tyKAs=C=%?SJi?W zo;ihm|4arAWsXg|u&@&`?jwsIwTTnS7EY%e^dg08sYj-xQt0&rZNkPEQTv`aqR`O; z+L~uT5&psqRytXC0QYVUFm+t{Q|RZwWN?_tH!tqq6)LPDl`1@OLQ}1Wgcu2LAL3`~ zYh8nj;?y4mtIQpxS&~R)_>jHqzP--g6Z4yvba;SHv+U$_${L1)WPG4x&zgoC2r9@A zcgo1n#N$k%+P=LelJ$Q3E=SR&)J&gdfdjS;`ObU<D|^&lT95{2{JnPq4IlEi)y!XWPlpT18^Sr*27;m6wcz z510o+Kn~2*M#84~=+`;k0rYL10|5ov$zeL!a0od;gkARbxIOm9Y3E}rm+#!mS6&EO zy?rDl4smTu)r{A^p(1|(2`y60*3^Mr;Ld=dGC2-!?-zL7CJDrqqT_nA1|e&EK$qd+ z^}52lNFH3Q>Cq8yl*=Z+nzXYMdq)br4gzm-#*o%VQkZL(#PwFE_fN&H$(G9+_;;VX zAHTkwG*5jatMY9FS>~UkYZXEz9r@l2YOsVRX>92(?F_z}A&W>nZ{RJO>#w36xt+gG`;sk#&Zoi`ZO%{nYRK>8vySO7?s|4<57G<7JKsz&HBTX z;Cv#|$)IyJFz$5>1gD0HPo4xbFOeXi6Q(9xHHoX&_{?ZTfbRIyV!r)7VO%UJqV#O^0(M(xjcyvQWzb%-Np&R23tihn=8ui>RY= zu!XnQ-FGkPAtcX-+e5K3Q24@RdRhw{V3<$Za-#TT7{2ELx_c0R2P-ab*&Te}uy1)i;6Q6| za$^Wqdu~Vu=>scD#kpVPx=<(Ul=1?8)gr*~U{_Z%=|-QJwZ=j;2k7vFVDt2+gWkWc zIMkJyO&gXJrVO}qUkK7dtt^y4S_`#Rh29`NrVm$17>IYI!{rse${5$7S)EK#8H!_j z(Uhbtl!-`-sYn1V2o@7o-&7qMBbQ$?#z_wXIJNK>2d<4-{mXa_xdQWetay`tM)sNj ziPu%bl7*ehTFl&wPFz4k_;;kWK&QAx>XRAzeyJZ)8gi;`*4@FhvA2AZ(s7fI4MD(U ze1OVR0!^G#_=twqgwlsQG&T}hGE-UUs;$SFuepT$-ULd+=Bs;IEhKM1%(uF3;-dea zvc$A zw$z_lWkYKLa6_*0vy_0Y7_>hVq1IPNZlkLi=y@4Ii)pJwn%;V3D>5bCsmcKUGFJ^& z4YJ`5idy9q7J?>mVwC%wi8XrX$JQMV&Tzn^k=sKz>e6D=gR&H462(U3{k_l8Wu_c{ zxcd2Nv-D-pWGS(77e~;zaacIWigFs1N0NUcL>avnV=nGRdID$&9!Koknm(ZImjd%; zX5zA%=*aL80ioIzRyI_iM{+j}C-8gXiqdBM?G+s?^JLAp8cGWC%$Oo>sd!wv+-kcv z`7O6;{?fSPnk95MW0r8!`p0{%Ye3tW?8g#Fb>||;>=)|3>r4(UtKoZ~LfKA*8fnYG z!)j1ZC72b;&||AE3nZKejVBd^WDk>sC(@DDN9pO?0WnzG5Qw;Ei4D&>iOmQ1LdgB+ zmS>Q{v#2XK=D^{B8h#z_Iez5(lj1H2b;O8S>omk`yf`-$+`ywaaBKtq84-c(`?yw} zzZ|=8PQJODHOF#N9+t>#NrE`(v%;D{EkZ%Lcw3;M7a&?HeW0hsvivhLhc6}$@toWGl8aVa&c$X^-+P7=Bf?*D78 z4t;IN9aVgTH`=Bz0UE!%w(l)n9s3ul3DVzA;Z~H%9%w?EafcevK$fY!Es2@C7bOmQ zsi9)LeZG(oB69R$Q8KO9M>sBZ*Re=v76{GGQSo2n7XYnkw}*PIxWLmB!D$eiq0&37 zKDce_;04SfdYJ)VoNh|c{&E%oYt17=`CCNBsYmeiNl>W`(xET!@FLRq7Q?=WD*&v5 zWvmvH0nW`+ziUd+SFsM3(YLq64$h~nON=i?kh$+>yaHtaXTl0n@DJS-K%n$3RdIWp zrbGmAokEjXeXbYik@6M9M+fG6DqlOJkfDsF9_@6+RW&xwvljw6FO4P0Ie=-|!;Nel z>^`b6-c!+ioHah`Us*d@_L4e~b8==@K%xd?7^g; zV|(q6&S~yE)7a;V+EB#kQ#&F+_62x1>DpXYpY+i$AKc)jgk-gUV&t=5YN?ntGlWcn z+7pzqQ8|FDRnWQ)SA{jTt^EY=|H|5*nQ33Q+JQfQ-qJLchmn1=CIcS8JT8T%gc+0Q zk@fCB@1V$#9d)P;e?LU8x5uibHU0*xj%k<@|AhG|z_8y~lNu0*b&b`uV(%t3)2ot! zGJ{tatrjH8x(%-4SBbvCyOY*IID~1mG7`^eqJxhK?EDShW-$jLq9X_x&aXC6;?!%@ z3i5D}1y+K#$F~}W#X$Z^6lLCrj?mC=m?Ff8MjBf0;ScbS{Pc7zi=L63Y&INt-JYOm zX2aUwc&deewai^}4 zw121FFB%HYV$DI*f<6!!PE4-z9bBQ;haz$+FB^lRvG4&T7(_fkC9WByojg0cCw8fN zw3QIrq0(lytlq)n4n>m`hpD*m3LpRw`_7S}Yk5L~qPFhLm%E4sevuRHe|d%)j;yg4YXpRtC#J0B>1e`qcPRHC}DX8;4WU*)D>_uyV2+msV4w)~YCt zo+HF~zefiL@+QEF*tv}8^|G5uz8_**vfe?K@@kM{RE#B_%0Qx%6{b#OPyjT1jz@5c zK@Nl+9mX!}$&Bm&vmdX`rp) ztuQU5PYBR`IzGbC*2kUVW&o#n%`cf-H?5upH%L(F&3*(qc7HwlN*ZMC@Kk7>o#kz} zA(-E-p&}#OsQ^z4UCM_dR36xx!h;z<`JH8lhOZdb+w#OA;rG5YToO)_HKs4fqv-6Ojk0-P~~l7A2B2$ zJ|ZLrBwS*11SoY5(_4U3!k0g@!OO2D7iNP0ZOiU_MFpBTxP%~ zXa%MN9NNN#p>zU7!35pMiS%#bZ1vyk&_89vINwOw=?E=6{v?BjL@;yXOl~7m>IM5S zx~N&$w`q&yqg)Lj0D7R2&dLm+_aGYNz{3op1Ya(xS=WC=E*OqX>})*xFd}k~j-N*O zh!#F)p)mwH&c6DPfhgPhynXbkoK3}631yzv@NMb<#oN3H#;&3&UlPAW!HTJAj7o*W z+t%bQaRLe(>}50#ru=kB5Im}uP!~f05zMz~3dk*d;9ixK(A?vN&PY8HR=dh8pJGqxatLdw=iw zOF3sw?7j9{Yd`y0&#t#~OYYxl(x^f<=ovW0#a^As!5-97Nn_+el(TSVEAZUzVIqfY z1>`_~Q_r5<)W{3*v;(mF6H}U42b-6V#l0MdgEw1`Th`|XYe+J>SWd5(ExckqHd(|- z)@|S>yY@wT92hN^j4E$AGbZsJ>GtkkP%~uf=bvu@pY=)74P%_J2UpdVED`6rH& zYp>fA7=vvu3ZjCoM5bA8&aNbg>t+Q0n;L7CaP4Dula5#USDqUCfBLIHM zy?zbv?W@;O7*;S7V=%`*KTYu`*)rjOC=O=fMSKCBbMB)qeqd?ky(Ebt^Lxnyure%6 z7A2Ix@y)i_W)wktmn+jr*O@Mq7GVWY^A#LLjNmUd4x z*IK*>q7;$we(+@+}Pci+->_owAxN1+Hz{d?`ss+mp~>!LHu+N4Gv1j4UrR%bkA?>nPky79DS_OTG3 z>1T0vB2V@$io&MVyr*&S3A0nxw<98>>kELnDE)bh@%p_*V(E`J@*yR`SO`S zY1*(0-nL=)!(yj?mTcXNUwaqN@_K8Re6HC+Pk~{6uKL0RuKd)*eE!XsJ{)PYy@Fmt zQ=WBMN?2DR+0PGoGuYhUxTg(81eaf$&l!0{WIlT()JE|AzMfg~$ytA0kRU#!T*K;| zr#DtWxiyl@A!CU7SghH(jjcO%ZFg8LN5teXrky-f>-4Ajv1o~Kw{v_hdB-Dz`ft~C znHWoU&H#_=xSP`v1m}7t_P&l5P}5;_I3J8stiBA9Dw%F>wG^+s>++pnT^O%*^eD=M z1-6jkG{}*#5`%3($ai!uYug6b-d&G6`SDqZ*}yC?WEhv=lw_QupwIpPBp>iv5!LK={LtgX{92yx>$iWbw6N!UcX`A z8*~7;JDBPlTplVNSWGAS{OlGB&#f~o>%-%#6HZ5faSkfv<@6lys(~Ul&{x={9T6hP zx7T4%>5l@l&8^+zXw#EQj^N_w7QKjiS4xM9aW0cfz6AM5q&+MASR&vZQ|nQFcZ#%P zl~Sy3QmOAXKKSkZ$1@F>JU2fl0so;0`2&IMp0|V~EBmOy!xM?A6$-_(jmI39(*{`P zU+zK*Cc0Tob1;Vs>waS|my`P!D?OhpHo7~_Xt6ZK5*;+?K>bxBdfJegCqA{OeWh5h zlJ$%a#*d(Lm%};+e`^RUrj~EbCEhDlT`Kq#_>JoNu_`xSs;2B&hs4IX;>&u9CCuf6 zJ(pIDwKg&9oy@D$kh|R-81;b;f{4Kd`NIXw73{+2T_C6g_X7qKvT*UYprtI|I+;{g z*cQMdLIqBgOB@A%4Dk#LBb_J(YuUR$y&p(pi9(c?R|G(AvW7iRq*9Y0(#BVgFKr@! zC7bmFI>7Z-n>cm0`U(NbGN4Y(aTN!*8~2oC`IbMWXC+j_dCNseX_Ido*@)4 zSQR|b9u5HoT+cuum*!zQ&C6xc?~JD)9iHS5&f^!D@J#Eo5=HE^x+!p(4iCEqqeu>^ z6jsI~fau0=5;FTw&5jC{y9|o)aePdxX1#c9B?TV^9|vxv#I?>2d74c3>!_3=nJLzA z^|~2CavsPh+{8qjZ!v3Oo)(c|C_spMzTjJSb2nEo&*B-!{fvi9{X>+}_musg$XaT< zWxW_KwKllEZUuEPNEHU3vZTnopCMM8^R3RPH>-mm zTO95xVdJw;KAnDfq$2Z+W_+sBYDdp+%5gYFDQNJ6g^`rV;@rw56#K%?AKtfaf~;Y1 z1q`zS^_$ui0=p9%Y5u`i0m)63Z?{+=BUU)YqK!P$Nwa#w!*I@WcXa~4dLR2b=@+0p zm>Y1lvRCmEOgnHKd>Ct1eC$#9A+Fl4;+L1i*$|~{v;IcCT#lMAd&`Nm_b04B{So() z+|VnzH8;UW*tA{cof;|u z9bHK(m1=dR1*J<*&o7#JQ@!|-1i9|(6K0?JCv74-cd%2Ckb}#I?aeOHP0t40u+fL1 zM6rZ>cBCzGybX)~${0?(R)9(Q`P9B>Yy4uf&n?;#AM|8a9S#zP^|mFM5gS0(#sgo) zmf2r$gi|8;<}FnOR7<{sq8G;#Nw|(!lNq9V1oAuHc%yl4r(%Kb+qe%Bp5l1Q=T3^e zgJ;Rzl=>@Rk7Wv;267tTqi`h!Vo+|99Z&g9>aPaEj>P+Vt46w^&=2E+X9HN@pO!(g zc4}&L*BKy8T(wG^#gY=3iOmI*vcMB|cQV`^3)cdtcyke!gL{hX5eNT@w1Q0+v8klU zsYU&-S6+O*)bkmN^}vo@)W@@tTkh&$7bU6DZh{p_po6iGw~r$-FxH^NnuoREVyn(9 z%{|yBW(JdL4n62`S2_JInlZ=&@J7Ojv`twm|NG~;iCb{<^@~=Qd{7T40 z{pTCkc#^{HK3rL*8_lsgtp@01${V$1&0E3iXZ^$oM8Z@yh`V*j8yXIaIF&B44Ksg5 z$saY{3a^$d@S8I26;>xn_yr-~!ZI^1GFDyFL(izLjy`JYgi}Gs%{?!9slkpxf(Qo$ zYHs^AB{9eQf>AMdBcLUj{Rv^p@q(Q6_4Ghwh?V+I(0KhHRy*z3OcnMjvxo(LR|Uo9 zBoWI9w>B@D&Xek;&;iMI`Tl4=rti!6O3?-3J-zNPBGqf|waw4p$py~})0{0PPbR%t z5Cuvhjw@QN1$b>fCrItHPqfdWld-Q%sQvV^Z7$DAb0j)(AZ&8x>WaF8tvXKuDfWEw zBHLt#Fg-vNM~Zq1L;v6)JBQ+U3;sZkjd=2-Eken>p~K(9~=6ehz_h1@%b z{1Lg?YWs~^5uquv+pw9rJ*o!bJZ1c*2F4lyvAZ`!;luwgvZJ$o4 zt|@#|6;WLGGU5Qo48OX7>W&k|5ZTuLep@kKaHQDQbi2Ch3Yc20nFQcV~eBP%rzuVX*8r@8Ip7r!6h%8*dIK-jS>=Sl9QR zX$#d;L@-fY!veZbwdV7t{nE!56mJ=k*L>N&YHqm`BWfy;Ad%;&-Y9wv3;PbA5?45< z2qkB(I6HJTiQP$dyBLnzJ}9aqfFu_A z&O6GLhws#kFe^}Ap4SE89li1pwkE@~(Kr_A$4919P8Nno`BkaQ9)|d*&I^{6^Nf1j zO*~u$WHYI4OBJM048^63gcnN2y%9RY=ezA0t3t__?vM)#E?HK8uc2aqw8)^)mN|5y0Z>ov=>c>vtPcYCz4X z!HIMNDPj~L*Gf*2fV|Wel`lMF3GT`el|NZPn~*;_M~+PMHS>3Et1sK+Yl)u}*g3JL z|DNn~_XjANO;@M8;2cTu7J0e7`5-Xlw#g=-t$tc{>R<3QUpUkdP7TooQXhA374(Oo z*ej`G#(-pjnIkmjKNGv`K+3kX?WNW1lWtNIz->u?Wl5^S* zo36+UvvrWyBRYY3@IRU?*bDO{8zo`4pP9X|z$uT6Qjgj_pCbZ-J;FnHmNXNJ4=)`! zq3%zylfQ9K2ynZ}-nthYyy7EEc#k)sWW-47cFvm!sI5z9L;FeC461iQsa+SO#?RJX zyPmRI{5X{0+Ps6F1lpmX%=LI{J3x3&1Xqc9*an?(y7-O0-~)Of@v-qi8U1HJD+pj{ zy0Th%#|luZdURRlBHTROSaVhL?0gyJJkv5yrD8m`L|T%rc#-w#71e9)Hz-i|$+(fv z^GQryVNqmeB&83BGEeYmI4U<7d%H0>JYiVb@ zl2pNbSLW{mtq>Gn_2_oC;Apl0yZi=h?}CVorwExNr zQg->N3DnOz{8P&x%f+C$|C@o+6%yn^#!U6XgQ8NTSuE2tk8sKrJf-LBjz?+g*A<>x zSzVa_Hi5D;-&Lg>5HsT}PUmCo^9J=0nZN3IMz+LK$&jLQvGPb~qh`-0FS-d_hz#}z zI0851D{le9D(h+eIZ}1Z^R((tDs17qsZT|SprUh>>?wk4SEN_o+_gMZAza{IDH4$K z&;&+H1)uNxssAo`j{#U0SwNL<Dd_K~!!MS`{71lJ?5A zNHd{|W7g;Nep5CN_LEfC%D4 zj!Vj*#EK3BZS-2avRuFT@L~5+yuj_Yh$KlmyrrbC!#P z&&cQCA5m&7+iW}($1H!PZz|bYJ{Z*#fc2tE4T?#4<-0F4=41YOkw%DJIbt`M15xD4gt8C0Cx=}sYuFojx+GqpTGQ+7S zkJJ2H zR{q^CwqNR{NSaB1I-LV+{}l=K+R}yNpMu=YIqlrC-X~jIcP@|}*naY%r4yin5du5sNkcMEZj4FNkGk_9`zv6O;Azj^!`aHa$KT|DuH38ZezUC@hHE+ z5H%oF5q>;>2U^oq32HTHAk-h=dG3=SQMH+i5+sjqR@qQluwJ|KRHWBZxL5vHf#|IX z9^X*L$q=4|UpayTy8u?F8Fx1r_5D0e27kOQrgy229Uas~wKl?WHp)2Jy0Mcm*<6VJ zHBoYv^@hK#v-9PyUIWKXS)i1se3UPFCtI}H=b_hujEJzVST0?^b!mQZTarkNF9ti) z%(&LrCp(OadlP1nxJvhMx`#!YWtQ!S8e`(8AphRB^1>6<4x5tn%9%`BYijCENDFg%UT{hcDu=6I(T8 zkPuee;D+k;zpou8q0P;k0m5rodzE zjzzk7?*opafKb?gfu3YihG<>p>dZ~8*ed?_N7fgp#m4@<6X|Zbq%aQ$LLV=Q9J|5; zA7+#8pnVVJGWgR3$3Q0k{2qI+MMhWOpo^UInRaHYjO&mP$bhx5dP7+=X-$6f=MX_3 z`po!?;-Nb$uTy@={p9R632!}{R}xGj^rGMA-zZK^Noh3k3d@O3K3@7GRLXO)&f~bK z*vk4qSWohGhWjip>gwq1VA?|qUr_wtW9o}DKrsuA+?W-|3v54w7;K$P4H z%Ff0ejEwy^ltJfkO$9NXh6rYc1Vx}$&4=k4-`y=ooZrh5k0+~14?@1ijwv)mH5gB< z4(FVuLg_D9L`9=53x(uPca65)ley5Zjjh`6Vxo4=OJpkup7q#&>mF_^n7B7*tP%H! z7W3`snV#fb8oN*HdTnh(7*dE*yshAAN30;i9Gje4WWBNStH|#5o|0(N(v}x*jP5p| zto&~8^D4_ys(oREUtb15Si#e z(DYlJdF0c$d&Cq^znto~P-6x}5MpEdUZX{H|2^M$^Tip2LZO^hW!p;FflwuEhGK)* z3O*jTouBgn<=_~c!vJpSYEQL8S6FtW_l(7Dso(IGN{rO8P z+*u7Z(HV+*e*fV?nj@JyHr5u`mB zG$3C4wY6rq1+bqMjZ20wtNu56t*HLGeLTY+)2ZdcR6Y7unJP$V*X)Jz^JL0Z*Uq~K>K z9`zC|c=Jx(r=dGu?uG=A@;{&b1o0mcwKhU#H$7QUtqQ)?MX6%9;iFv(&W_h4(r3#D ze2E{LS-w7{oB!JOfg5_2aDUS0NcL4g&Y1}>ygo_EdvJc^#>CTja(nE`d*@g89TFT! zYVX{USvqf#*}of9R+Q;5TeVzW(>evkXiT}IMH-%6=aGhdB`twsWV9>lE*<(mq8lMv zTcMP&SW1-60dcEg+YJ%&ODp`TkG=8K*sDOKPSnIlMtHaP#cB6YkT14%NdMBlIQ^hO zlM6+@FFBcqRCDy}_`;yHZmFD;$$i=WgAAzymR-?KrIzz^@58TMJ|c9?5Suqs*1krE zN0|qw2VZ&DlJ2`!=T+_*Ao@9EW*;0R?LgI*L_OH&o1G)-bPBj{(jIPP<_f;D?DW5; z>Ms)wpg#7Eefx}v@;LProidm|Gc<-G$Y1I3DKE3uyiYY>w`^2y49FQ21# zMP1T33#?_)4Cpes!uwvY1GW(5EH{Og&IU?qU8qy_1@np2+AD<ZOEeT;TI#DrLL3`aC#tW$0;UoN}GYNclpe4sj&%$g=MRJn) zq19b=GFZJ(u>E$`aQsE(_5-H&+uEs(e2(A&Mvp#TAF1OR@0U}A2i+7@4&+BFW$Fp* zMx2&EmMiEQ)=69%GJMGOA%kv(mwcuap5MEN{YLV!>7sH!(EY{|SC!D>PoUp-chyks zUd8L|7q070#ZJj|cjh^3V^MQULhD{3H&6Bh~$X8 zeBN%DF^tdDV_ZzKKAkOVzJ7GCOJ}<&-qnP5W=7cYUU*IanI+;_i+Irf;pe>ZlWC@> z$e_i;)*@-Jfq?togOLf8%H@MN&uo4=t^MC08LWDnI8fTF?6kRK&EDO9$NrfbzY~A| zFm!lx#gm}%K!n8!DLy>gyx>2ze=7;Yca|3J4hgw2y%~lodU1S@^r7<9O%qS}yUy|N z0jIC6R8Acb9paJCHO>0%Zprc~T@(C(ZcQNfJk@B^`RzgZ5e26n>1IDWeU0+%rO<^a zg=u=vKkpZM>aJ9jBs*X|*Z;jxZsj~NH>lo=RrR-OfLzhIkm;&+s=k0wHJfa0QSTsK zQ?KdU1e4VvU(T*Wr~yqEqtfW2D)lHH#etDMZY%QQ$$km4t2ruK(84i%t@?8dSjlD+rZ z%r8(>HGawdcTzY1C*qCkiIF7(SF)E)`{>3pZgO|D=y%O@b4cRF%I(cH?)aYsR$}1t zpB1p21w4*)@H%ff2qeX?j|5INa~!3^J01?)XpU!_Trt$W{x?!x+Kc+bf$+mJ zxBfyEUuHsd+C!O_Zp+>rT{8Yk)i{pyE5(ZLjnpc_yqA}uk6u@|EE4&Jqwi@>kTX!} zR_7Eb;1DYW|%||5wtf!H&O60iV2WE?zpw}IE^@y z^=fY#cWDPpMzANJ(T;pl&YU#KF*ZC;4<`Q5DAg*w|K4$QbrjWOC(Va1-64l+(V(&? zI_KuQy7H@4aqP=Fo{6aMTV`UmaX$tA!+mj*=CW!3Hzw8G?w%g%nT?i9V&SV=_bhog zM48&KyFc|!-g|0Fd}(wHf5a?QQR0mzQw<}5=hJ%3h~tQXr_;c_J@DZBQD*fs2QL({F8+6t$Fy zLfkd}G#Kd$H+)J}mieFuB5r;Tc=QX>HBS#B2+DRn&bUu+JD|Um3o}X!eT}2?y}=74 z%$mdd8gg*HFXnt!@%%i6Tf4AV4w_Dc5B#4(?pQCgQcITeEW-O~gR`ar?ng?;_%gWP zblK;`bWM}szHW&U_lOXtnaLQO@;hK6veJ$qS18$F1?EBZ&h4_%^FP`cam$d9;QRZ3 zBE-if`i}1pXU%;QbDOZ-kTS<9n>3O?Zm2*qb})%1s`|0^n5Ea@L!RUsQP8C{aL#5} zk?+&pK0+c!dYK`~^U(e`2WKA)+dtT_813&k50}lBJ82L@lwJ+8`p*5-pE`bvI%MZ5 zcID2E^Y2jN@qsLHPxKh|%5R%7Y6_?R)Ea9aRWcg-Ak*p;CsU7<@Fs+WR9B8~=;{Z% za~7lTiR3!@c%&W%m%t&!S4-5i))FF{VpON^y+bvb|8%?BAqOvT6qKh1++i-XOq?I$ zvv?$)WwXJY5*4Ut#H>79PMZvL5pMAHizS58|FHTTKu;t9U$Ni<_>^$rX*leMPVZ4+ z4B>%+Ara-zUgnVZqn6WLA7*93l|I)etJYXUNOSzOi-uu5Nx zkU)q*AkxkAzJSK$v+fe23uN$C{nik##8ZSXLD+;2gU;jiFL{PP!@rd*Ea69RKevGl z==f5uiCVSiRT?-k8V5mcP~76s{;0`j&p@#pz90yJtk}U=6$_>jbQ4H9xPPDrb}2ve zI^>H6wH}o<)gz@eLxb%gdFW|5!dYJe1mJ43V*FD!pEJCd$8+)eg6}=(-(3B1vZC#3 z^|1{W^yYLq)zwt!TqntI3(>yYB2Zd5Qde9bo&|pR!{obJNlnduOE&7lKg;}5+^tKV z6}sCPOF(wAO|4AqpQ;XW0jl3+4ORM#7srdmP6!L=Ofb>w1CXA5z6ya%78idgb#!fH zuR;WDTyz_6$a)_!?aShlbtS=iZ6~-JH-6(LlwB-2BF(tB9TxNnNGd}hdo(c(0Dw$X3QDrXA zh;h8@a^kft8N9%1K>Sro);La~7R-OTa@peA6bIPTnnDK$Vq4_BCV7%(pX!(j8{_PxVQr#a!agF>!J{&$75Y`Q)E z*TLHn9^Ci$Qq7l(>}wq1FBsDm#;!~_n;GkLm*o|P`hE0X+MU{nz_v54NSnSQ+FkNp z)+JU1H6OSBJn%!&_{8jgk`(erq|CxWUi@qJR>{Yxzhrofhck>Zo>%7mY-czM1oHk3 zX=LBVOWNtBzBBTM*Jd)VL-tF71s}Wj26SNTv%6w}$h4-%^1%WY6=}%1~ z&fQ^C&KfV3A7{>;nC2>4m$s*MNGwYKL~3Ckh;{|B+lH^dc+BK|$=U&8-;7?|7(e^^ zA6hEWqFPmk*G81+{vi`*mqM4<;ID zMhx7LrHyixEF>$+;lsh6D!bMf@3YR<=^kZJZ0@|t^aL*%Js=Pa-!p?U^kom<;o4*k zsM4Oteq|>2k9(lB1I8HL13DO60fV&HNzI54G=h1wf5EpT8o@Z~<-*^~s*0AYIz9v*%DQ&NZtSg3 zPIR{C7C;K?_?B`1N;yl?#7MCM5u%}_YZ$^ zx9B0jb*oWB(ivOVTp)$>)l1?e>on6`->4#ddA{bzR<)kfl5zy{j}3O&>g)|*Sth5% zbEO4TRrb76jDK1mXK-&hCr3x)g1}E6v%&fs%C6^%E_MG;&g{K=azv# z71y}7EMJx);yV2&_c?)nS6h;LVWNX8gF{b0P4Qg4*dz=1BM_Kc`K7r--ph*O=)kJf zyHHjB;8WS6%Imaq>;c2{J-Z|h=E=TP!Jpe1HvPgrPl3os#!Dm6ZdaQGKi%OHDQH9Q zG|$^8TqoI>5@dAiJiC2}_Ae~8$5v`(Y0}zZPagS{RLwV}5M0?0Stvo-l6VuFh2#{g zWJpI}Oczc~J6zrD_cZgQ_se!}|M6yyDUp#zM$(`2nzjZO#AeD(FAaqE)d{G``z3%Q zeS2*@yqYlBDUDgjo{Vug_O0Y)*7LDjzCQN}_O3Ynz4k5Uw{4auJzSSoehx3NYA9({ z#iEmmIWnIedZSgm2qmMkj6E-NjeZ!I{2LY2t?uhwc9<1tcHVHCc6A-b2uIXq?ZHC* zNuJOQ@l930!|1z`Prsj<97u*ztW{yo>C}J_rPXrn6-da-m$FSl8)ysJr@~ck7c;2K zr9jSyf2!UQsXTF%sapF6$_A$*0ByOL-4}FGQb{f`G-{o42fx_ z$xlAKd%O(*$IWcTsi7wBaYR^41PEYqUmDtS4*gkN&nJYATEgp%**=-OG>a7t`}$eI@)&=}xTf5A=x?b4!y>vK9!_DA z4>@KN+X(&~hT@ForsZs{Kv{~*<)Zw@do$&;Yg^LD%C6Y>%LlgpMmeKd5kVi++!N%a zv*NkB-nU+6CPBXCsY2)!vbpS^@9yQmXg#m;PE{@41%ZT{vMn`myJ>(+Qu%ezoz|S} zmE16i+_(|gO}mo1wNVoK$HgDpu~s}pO%RZV2)4WKYfO0?nfRAv*8*NPWG_KW$3i}} zatk(r`V!7%U$ZFOllPE$lM*D7de6We5*P5Tn)S86CPo$vwk#;+KJ`xtv1SGL!S)9SO->&bXM^3agl58%h03=jk7{ixo5eF!zYxGK2ccuvBh$uJQ-*SB*A;wP{=RB@IDXFk6J}h~%4`mNrkh@BS@qTi}|__` z7M@Omy_kMSldtHylSe2k--j0%W~#xHtDfOPYZ-ofc2aozPkzozKP!hpCf&D8$op|U z<6BI8MqMNGpT;wt)0if+@A&_@ObOg=<30>^_cKcP>L`>1@m{Rx^B4)3d=9=XgY}<{ zSd!d(Lwr}J#oJBj*<1f1PuES`L^YS-3SY|J_@kH@DmvR3F9-7OCa@!foIq(s@2Nbt zx~Q{f`1DNPs5WSL&Uea9|0eZ_;;8TbNYgdc2!}3jw~T5Em(7g$c&is$VfYNsmvG7p zE|acZeGx^3V%-+Z=i;2}k3VvW@6j}{hy`)K^wkBveSWnl?erV&nVo4`9 zFeNwV7T+Ke{R)HE`p}1fK%VfRC!*re$=DzbEiEKEKA$p#tk~H^-}q4~eP!RKCQ@)k zZMgl>nUd}p_liH)2)4OykzZqC4nys;KsB-05CKOBNUdR5*R!UY!Dx*zC(j2|9_=X2dsq# z7IK}Fj$SfNk0@SdjfH=e+fsXa{!|zE*{_Pm{~4uS*G&jhc^MF8rWk4K^?_PA-{s zu|{s}2&(2{_sj@A7Zo?34Y{dXAAn_&-$;PCMn-m1C z6T12GXO2}}H?h{A8oHrR)T}*kH{(G+l&n1Oe2$j)?g4;TAo<5Xf}R{Q*DLG%=1au9du_P#*L!*REPr^KfoM zW_nfI;qtTBLWY_XR4mdMq9Q^qn5S74wZHmDMEOkdmtG^~ZA0jMD_i0Y~$_i_sWVzFwizPF@avy77 zy~@72EobyC%J{Bbr0U{OLo}fy2@;KoP^(*tYcB<3&dGV>5n8^`3-xMsf>fP%+)VoM zF-RcFPqIc;cTbo=x?kACfaEh3GIHfv^kO;lFpm@vTd8_b8@;qCLb3KMW*I;wSDru7 zDvj|7g}<0p;FwJ+Z5Yr_&E2+Z^>iTR>4LZNm!;6N89eZSBG%I#5BK7%3<>aJzb2G6 z86Qdmlq#3H;I*LgBbHYAqH(a;IB|y5^xAE$g6VgK-q3@c&YkZ{=y^BdHO^7`9J0ijheDZHW zU_d!el0<5B@3iOYF#XoLkjd^;&;=Qq9k;}(Q*z4)_$41~@WwW#%X(3SZo6~j8^0qW zR@_$Gi^;Hc*1ORf1CYv0`XOLIkVgc5U~Xk!B5{qkz+Q{Uy(ES1wXtVOHj!#!&p-vn zuj4gLR`lZ%wgsIuY(Cq}keTd(zH-0|G0=PB+l&J?RSo6Fm= z>hgol{D1xqnJSM^Q$PG9pnlMK?|M&X?m3Z#Qb2c>_a*0n9T^6|6Er*Ko#(f(Q z-}QODX3$_JUh28PgxIi^j82_27Ha@|C_$FU*8m_;9}ZKiaPIjIee>j{@HzdqOCq66 zDZ)D`gJ(_&yj#fL=99gh$#TY#R|D~a%&;PJg(BHNF>nST3iI4qGI~e(XQG|3Ji!lDOe!C3nT~}z9-Dxa1?H%LyD|Q$UE-Ebpca$`#ve>* zD`ugCg`Ms4755LmngJ_08(+i_xNi%&Rez373Q<_xND>nM#_SvKrqFP-;S$;b)>X=Y zJH5vFp?Sk0_|q#KSPEe?#%ulVTYhl5f|vfSTylc*G0oQ&weSkn#q)TqjubcyOin zh?{<=N&?=F6?Ot&?uNwwN`f$2r>o@v6W+?P-hvF0wbU^nv0F3F0D+{IShR=pg5+#Q zer1Y^)JSQH!Ej{p-X*Zd;QjAn_Qg)y=H1}dHUUDXCh`Ez1j93RlP$Q11TJ)Wud9l5EIVD&zgG*{vUm_T)S-?I18rf~o-Q~?O7nLrt|M`%gkOX{J!1%GHG%96WV_(R|V?&F4<_Kji&t*p4;PG?`o zP^WryC9hETGMOOD&x2Gg|Kwi@bRJ9;Q7<$iax}bw&W1i2m$f$csyFbOl932JtY{eo zhQg+uaO5(dH}qx8CzTsu<7#(gK+NHmoo>4`3?yuB=A4D?-sThPio1a7}P@<&KHb9FVBt0T|?398l{ z0K-EpND=4F#E`Fcg|cyy7)s=0$~Bz3`%a9*xPXbYgGp#K>!`Jl%Bd&5pEt;>8ovtr zK$N02Q;&f6sRqVrN_e& ztW`rG4>hIQLqn{7hYYhIN|_GL6AX$lDCO3k(5-jTJ?*HdBXm z2?6dQL`usm;HxeeY(8!L4QjY`U0knx#m}R}`F@2@O>+#iU`zvRp@`(zWhjWmdCZbr z0!Vx_5ldSX4#-z~_%N+B4c!EQ{H~q$;)R_x&Rn{;;*qGi{h&3AzQAkmxulx$AU#hE zoGE1SAT}|PktL-^;f(u!L&+tplWo}_iJ6j~%~R;#`;XZidab*#d4<&3{Kx79fDa&9 z`)5UlPPmr={*J`FzrxZ+;J;S%7H35Pey{%p9-Q3*$f^X)P5F90FD)OoKim6yAm9DmN`dq2g)gr{@#^( zqSO2|$ zijK-5U}Ke91+VH-vV3V`L&Pqbhe)Q@JTQ62|2X2%b21~j5O3~$p@B39F$fJg9Vlsp1zKP=2 z$U;^paaTNG9ia+NJoM+rEQKWGNFY(6((}T=Ex%L(6a(A^vxh-`qGys5l<6mrrC;zA zJ@a~N_MdYh4+sxlWQ}=6)Y~UYZ;lDo00bm^J z-3+XZY|NH5zcMC5{f#NpP9U?t8r-GX^?4`1Y#K@EsYmYVVgCW=g+iz|GFIfs@3lXj zX)uz8GMoXj<0o7HB%pEjFMws>fRhUytnrH#d&~2!iHGg>+bvE~w+Ij1B|vIa_wNZW zTn5XTUVFVWMDQRnY$csO_vKpT4NTL=c0!LYdsgtusQxwB>H8|~lf1C2LqZp-C6mKV zjdkKqJynnVn2Ewd6xbQQNABG+&CR0XiSwu8zuVU(YyOtE9`br%LJ%QZP^J_TAzy|c5!Q6?z!PUF-=zC7G zw6!)jIeZ^Yhb=<|GB-(lc+?yuO{8Mve&5Qz7WDuSlEfo%oo^#c(zDerTO8}jJbW=2 zm=umk?*9XAH%o$JFGj5`H(Pjj>W1tn&jl#7rHIobpX|%XdSwq#|Mh#1ck9lk;8;$c zXzLeEr=uK;ZeWT9=E01zIU(6%Ams*|;DDn(iEHSbvVR}N3+9j@R!EBpQ)T^2B{z9g z2Qj3`edu#?b){i#fU-aIVf>dJP>)7@il`IYnJZtu(P~=qaSDjAft!8fDj3f4iSfHg z6DVy!6nx%-b*=4KZvXSnS>G0O}%z9c*C0cl-y?Pc&H zO2xe+KJfV2qFc|Z%*rBl|LgbXUx)mE|0W0T1FrpR%p#+I%^d^^zpr>%xK)_{C02+4 zBd|J;u)I?{d!_hX=WHL3dyjA*uKnmV$-*SV14wSEP&G@6k!&w6F>eo8lb zsnImJTzkb)3~!zl_oCkn0cL`mPt^Fk7c^=sp_QYCk{rO`Aua=e%Jb_)kgwltza2ge z!U*HTo?Wv1`zodYjZ~+7&ovF!u%frv+e;CIo=@>`)*IrM=&}uMM-}0Wyz^1&rYm{@^cnZBK*Rn;k#SIJ_I%pfHmKzaoW-6HB$c@-~XkT)`rk z2swO_l?36ee2)K}i69l^Mw!)PG0Tw;D=$N+Jw~N;Sw^i_U(5zcOpldazBx_qRgDNM znlcGEyeCnzc9VxRM4wS=$Dyz`Y^t7ko6^_Pf3;3JF915yPL3D&;h(vK{W5&ew|rjy zO?Ajzk8VNV^`bz!REri zw4eUCo8NfRWpPZP9MSp?zcK76E^DNl+EKR0&6^%6eC5Qy@HXxf{p3IbA*7#1fX{(S z{iKy0WBhEme#<`MA=@JqQ0C$FT}Qj^r&0jw%Lf2$HqL9?Urq$g<(Y~RUC z9{~%WV<8+!qfk>&om%~1!f*XUm+ZrU{P5OG17)gxsIE&u)8LumZ8TI@;m=wF@M(DS zRN|4ULyvd=7@(ewb$P8Gn+5-2aTz}jx(|b1Ec`@e;aO<9;5$b3EU_=2fymeE%>xg^<}dDf=bmRiqdQl|~TG(qi> ze5iONj{U0UJ|=HH9#(FUX~9W#kg3mQBK9DN_y4r_-H%ki;rr*`^m6gr0$tENmJA|xbZ!*uZJ_kCUWbzjfZ z%*HBi`#Apkx&*Ef(37re59IGgk!&TX9sAbPOaZN_p7zv=R`YN9Xw=^+&CfRqK>#F| z3g>%Nos52QU!4WmGE12f_TlT7+VWtURP(%N0uOBpOg`aTT_X-CAY@7CN; zK@{xT#ptK=zh7*q01lTbNO2c|w?C4vc)f(z({ywv81Kt^CIw)<}iD9gnC zOn1lA;e-}34?=TXc_8vjP39w&V#QJXuD2k8m9v{(4}cKsPq)zrne=zvw7oz7)Ce$k z!9ISJE3j)&BqZ~C!JqVi6>#Tud0$O5{*t0*WIRh@@;8pwd$Jr#N{s7pH<*Vl1}XdtiRDibX+{zgR@e!LOAc zSyO%K1rmp)6v0w&?Ngx$H&blm?g}k~xCJt=&=)fii%nYr;K}sY;rcV?A=)>%DZbk> zQ8WOTQIm@{mD_!}dZXhMqB?*FkpfDHLx8i9! z$L>w>1;jP~*x7*0BU4hv*)H;RWfxeVV$ue0Lb+GKkSR#i5JS}MN4 zl5i{JeI>!$qD}C)#+pMp6ucfB`pE-w=l3dYqwQbFmQX(P@P>3W`%N*8+kiwuFn)l48U_c}X$*H0BWMU>@b_EhT6bC*JP>6~ppByc4o7e`$ z(MwqEKWe^@((--DxWSw_?hLW^05J((1N&s@W$^6{_S?^+>F9rEr`;f30`%fYX#-S} zu9Lf)w~tTh{0^_;EX_Dj58k{lZ%*XW9au9S7g~b)|9pDsUng;wm?X3g z+c)aJYg7+6$rW46wtrYwG_ZNDZ`UtF512=A@$C`HE~*lMmbIb4Ye(R(FC>rFXI2L)5p`D5~S>MqfN6O`}`F)dU_j^zm&YUR#bf8OyXX$ zfA(NYs^i|sEkH>q0+2N}f7ZNlc@Qt*dU8S;APZ*Cglnx64Rj52Z|d510<0w?}09_`JLp zU<7C!g$Cz#kSvwbLpA~0{#x@U!yXxMnIL+jl-jUAuJCxY$@iJv<gO*Lnxo#z%XvpM*){fq`+reXOjaYEg4V ze$!v3>;@VQgq_UO&-JbXWL8k8dX>=mo7n4o-ICbDKzQ(f zJV3PWuLp1+mcd>tN1zQ3WDHRe{`81T?Y$2%xJDsqvy&6Sv(|gqH;9PL^@aH0y)XH9 zc7)*t#+mIHw|Z?5w`@VD$e|<$j6$qj($jXrG8yH@?txYMwlYlZIDoQqV;q;+sd37Y z+SKx@*N?H!l^{b#@(png{B+*5s^scB7TN}8_{)vy<6Awe% z7BvAPcVDm-`BZHm?&hLr#by$=pjzBm_CW@Oe@TK$r8u#h7Y0=2rRuh*b5?YN^N2y` z5AX)k4$!%BqTG(d`JKYfCT*j==S~1)A*Ac{gI{MH`{F_6^5}h?mTq~kuRK%^FyZN6 zl9M}5^UM`XTg#?OfH`;q?BjGE$?h`#*ZLX3Rrda5_ZCpZU|eeFW+eH8JnIwIfos{N)J ziGwg3+=&=2UBImG1&Hidd%H~zNo|zJvgP9>vzrUK zqT<7EQxLiM#|Rc5=AFxq=W?>12koT`H;f4W$3VvLo7=r-AYX9j1DQo3?^1ZICWMUJ z&EC35N#8cn%ugj<%Ef3Cr9vq);|x1Bt|G3-hc;>5ALAU@B)j>jN2>4BK4fg11bUGL z${`EyKynHIKGttRUHV;TN`}pTt}f6N8@yIOT39B%=fVe|tjbSOTYUF4E_8%}lYMqq zlQw*UwAd z^EF5z9dlp|dcJ0sZ(%(BQ)~{qSBEb>F5Ws`^Ds%z#`=gk)x|Du;~cbt;{9ET4AmLKcY$Y_7}Wb zYMwA`OvdSmC5ivDpWsC?qu2O7gG2z=@xt#&qH$J;rhGfUiVmghVuIS4@!VQ=$U=pT zyWso^q5A+KGX|YsK$+T2RdN*U0%bLH7UvW=%N}aWPZY?K&gIzQMK1X^YgreuLS!~k z7+T2v?SY0@_40F?0zWb~#G!My0CJzw^*fsW_jo6Asqtl7N&{)DlOk#W#AD_q#`h=X zrM=}T_eHUH0{)WR5M^99OH_1b1RnO&`jGw$pc$;9AftQC{T3e>Uz7RW95w~`jz{ms zjxpB2gT3Bv2v(&&hRUf5IsUv$Ey@T+TcntLaH82={u%)%kH`>|Y`{teT%y58yVjk2 z5gzEseQCaPPcKuNbRxBjz#Y{tg`O1gd# zZl)nuYXC^1>g@8$!P8~;L8$SXb-CfYu4meM>*5Z7wEWV|_s#WkYDTBE2m4QBTy7V? zW+(1mb)&tp(!rUY*fHG1b0A#bF2f&diz+W2jLY7-)3^Gl4IaqIe$$ng&eIp_xb)sl zxTq`NEUOL`VMzEOi}w#dlI_D&3sp#9h=YE$5#th=B2AE(sEDHXZ2oqpcVD}BZ6Iyc zKXakC2GB(>Kqo%wPxWo-A1s!46V#6`jM73k!Z?1=TV=A`TWY+U%YEZgudEjKPeC|N zF+=~0vDp_;hj{iaj?*|YOeniZ^o|hc7iQr{uC|a-eR*?JB5BBxE`E%gh+zc3Hs~E8 zCxM=XXoJEFl$G+do#Liv?mx|Sv@jB*^WTK$ppeXUn|zQ(2+;f^rCxiM+PHr6aFs?9 zSy=kh8;VR4Kej7Uk}e85Vtd0mb@iIe5xq7XFC5bsc@Fp=IrcRf{OCbYz!RWdMoI(7 z?Yqd7(jE6*-rao_k4y<0_$ast=nzo!CFjj?4kTuMtKNELMAy0goQPVL|3Xydc8fAS zGUm=rommPxcK=&ZI@m4gfCqI!s}1*eQlW9T#((edK1c6Ktu2^~OZd%qOpT{eR)eh1 zhGw-Us{%w0m5w^vaBNNFLQK>k-+2=^H>U`#WmR90=R~=Id<6>J5I}Mnea|~91z9i( zgZ%u5-N&D&mx*N~^aXrbKIg_f9x7e_gRb*QZZKmP%gz@u=2q~z;L`2C2z?s4wSI(i zu<>7Q%qS74U``Bj8u-rlKqdLaitw2HXkw8=`9BJcIcw%7x^pika(QPsai+u2r5~dR zEJ9Sizs3fCfaMM6C!OOzS&ukr%KjlyuOt7|oqrp!0L%?S1yi*SH|g zhn}}v4b`u0Gjjy<=Ary;#vcsTwszGW2m5_88;pyWw^Z=x36@M_ya&3TMo}OwREp7u z^X+8}W4eG6G_J%*ujx{&!z)aVa~n~BT>DNzF8fM5Z96lsVi+agqGLZ4?`!_*+ z>8R{#C5sNIeKy^R+z1*9QKB5Nxw+|zMfc{2C$)mcw^#gGtf@ku6GF`Bz5$tmoZQnq z+RmY#xmqIIwQSZZlnAR*umWg!Ls(M@(JYA$PQxVVqsKMhs(*SlVu3*kDAh0|6Zhrf zZzh1~-0vXUEA&x4+UOOH+&U@VJep6m$!!@Xo>=!I(pUkzFtpS~%92F|u&&?V5sH_( zGT<0R$A1x1-slGg7+{x-Z^dkldbspq9W374O|_q*O)7GvElmK&uzUw)B+{37uXz6M zt95tRf?yJ(JsKf5JjtLzGYBO3AlXzlJkaDd==PH0$SO6y|K=!Hz}5Frh-}tI3+^%k zlmnN~lN_A9KLs*E0bD!#fi+_;iIt{-sn+enuaww{nEsfNDLL8BXHRy=oJ3Rw3PIl2 zcTC8XjR7pAfu6e|Z6|-lG*jOPJQi~Hq4!{am(kbW2pmu-QgE7G#>-k+LI)8c{YT}+ z2mV3tc_>SiT@V;6e8TlM92#0%mf$*ZKyPtqMuuQSS^}K;&zt}LAT91wBk?A&1}cT@ z0OIDRA|X?h+#uoFEZ!Z<8C}}TlSroYA^ZX{qe)ronAUx;C z?dLYUn}gUl)GZfaFMbN?kJP`8D|UvjDQtv*4KSZDkk+p8J!V4n!2#NTZ9@nj+0tk#u7a-giO^-}p1AE!pP zPObLrO|S9o@H;VmU6GV@(E5W)SKS1lPv$$c>9gm{qdn5uUgm1J41qjz>jDVYAP`BQ zbJhT4*O|3lyq;r;7Wsnn@59bVZVZzAK~WT`(1K>)$D`oTxSL4LAN60aX`-oH_>Pot zQspNdO5@#MsWr$CSu?ssxMyL-U+R%2=vj2`|AsA+A8Xk&NOObQuO2MyP-8DyKn&s; z&yrIjMl6#9ZXz4#x(Z9-FgbeAb#^|0tiQaVPQ4`;=9v3Tq7JC5wdUVYov4DK1rm$x z=r=X5NsCgDD_H!{@LHA;&}2a)%d${{>CgNVFJ{eSMUkb^p~&R|Mw z;ypiGi+wdFCcoTpW$;G3^?l0{3(@jJ^EP3fJl=u3$^_x`{;XJ^Q@r_(g!n zv*dH!wbM1vpng6tB^>BL03wo|VV#Fho}I|N&fu>@vD(dLNw^P zQ@L}v&#~;>j_5nYN~=L)@_jG_;kV}Kd{bBh+5Y319nGMS9Az%F)AT*ih`t(eyqhFJ z=FloU^p~52$~$87F!fYh{`g)V?32#H9a1?CJ&SIlXz+u^ZzSF{pd8R>yY z!Lhc>6EN420<;^jyzFup8K`u|4^%e3^omwXoTPm=$~_z06jT0qD($Q$yt78}je~OO zFH4|#A&^IbBt&Q5u0xEO(2voOX&Hm5;V>M z1QY`j34lV&3JV|Uk(Q#GmP@X5H@SK)l)O@n4aHB@@~aBd%GVS@UDZtmu=LOqx^nedNO@`MH!d5ERS^7r|0~Db87AiXwg;9UVtHR| z>7{zvu+gU#TKdSq;Qxv!k)%&sf=!I{XwV-;$WCPA@zF~=926sO+`nmowy(Bn!>$NN z76nk!wtYMRUBgi@jn(M*#ww;oR&n+NAg_Xmpo5ANAUX!I>`d|gw7r9pT#tr?Bt-oF zYO;Xsp+;47qhA4XUIHMv(EZPM0}PZ5&b%$Ozx^02)CY=ljhz<^QQp+5MlEtaOl_v6 ze1UvKRh290UI8f}V157nNw{}(HdWswQwHn`LD0{)y)#i%9hrs7PJ4|?LI7ta?_4p#+}ofc?N-;KJOHLFl^7^wT-^2KJ=)&} z%lo^6EUB?*Ac;ViL`n8tO81bYhzAWZT{gwmadm$V?Hh3qfUI`L?WUFd{STmyf>wpF zya@n}nCekWe)GU+?6?$?aM&Hvc2?f=-ud$Up~_Gv!y=`nMGs)BZdyh!Ke|N<51kXB z_wqfw*iTq?#-?Wo&V-%Y7#M_jl;A1UvARo*VU6>;zLKXrdhUSHb$6ssCn@L^#zPpoQ!l}rYEBnP{-#vnFOyDY{_5dpY1vn6IkmNnD`0D3vF6qTIm^&g zhbCC&Z+>Cy==?uFBdxNTD&{YzGM7-?sOuQA>mgXEg355R`bn9YSzQCfzzvsOyl+ts^4efxoj{=M6PR zU1k3cC$Ud{Yw$8Yxi9KqeU_W?P(NSi2^DY4_w?)?2xLJ;Y~sR;br3FE&}r}(sHaaH)ztm!{YoMPV8a?30!!k_uxh=A>YpxP&$q z(0ne~F@EV5aur34Zr7T|&Cl%{T!-BAHpTD>AzEaEveo)tZ+!~lx)^KL3=$RXBCVSO z86C3frd#<&IbTJn3k^5O>4|p5m@gS!1Tqvo`v#mzb-B3IzO(vC*>t5bz5q(VGK)o# zZCJ)BXfb2*79xVuTIt?-tK+!)Y!SP)3iFqqI2gKz$)~=}^ZJ%xo>Px|U}v?|)FI_Q zcZ~6W6lLX$g}6dpzt5#)gPSggxHGu!b@+n4{Y>Da>bDoR({MlxvS(R5p5{=FflhQ7 zENGW!r2%Q!_f2})Q8=IZQfPQYAkA)Tq3Mt?|2`YZbKfHypFuR3TxyQ-PC6WdLX^8B zO|jLAd+shr{%jJ#LP!G;glix#sLM=v0T4K@nOR79aHNm0+K=vrS>vITe!l zOL@<#v>+Hr+P1|9%B>t*dWf7PTo!Xu!Y)!Xl=#~j$DJq=PHzBCrgGGZ>{!X^@0eZS zBwZFEA08Cwo2&KXhQ^uiFb7zpt# zdmT|lSKq;Itz*E>Ps?g@F@f&8T=U{AvV|%A&#&xl9CyhYwBujhZtSzx0*?EVRC7wg zG00?}IzfKY%hB?=t>>hu!iYhZ#8`v3FI(0w4H(r&9;cf{!9es@(Nb;%S^@KYM zyz68te)iyj3`ed!E7jzk?<+Y@`@yhSiRMl{!O^0`1v@7jP7f1f_al#~$eKpm-_8y? zaR@W#x8B#;?RFdcR#z>V3Uc2d^j=4`mClney$K z@2ra#cAI93yk({H?*Z-R*RO9#q#zxEU$THis(+{7K+yzP|CxrolO;oP3%_{M(ykQv zC|&favETM%(|`a%0rs^RwQkw#Y+W9wPosO>t_opAL{p;;_=Q{6F&mrO9DJ#D@#BJ0^WUt%0y1i7ENj`Ik%Z|J=dOa3-JzQ3Z z4as@-O-%UGpnG~0~b{3-`DvB!D>E`USo-OlVC zSC&W8Sb1C}YCl=V)N~k@+IPT!45fRD49%sSmDdW>Xp|!EI~AHSTb_)06zavsvQ2=s zLtgOgXbER)Kk2DMoCW*!PO|gasQ%$mx!2g%M#@0$S5h%Z__T-Ngv;TDpy8;`uK!!t z>MHnjy7?Rjj{9eEsPP~7M;^5lN)J?j^|p3(=>@#1jot3)G#TYex>Ks|QJi$y2cKIU zBYKYeA!1&$U9_p0Y}1c>QQtB2?wdS?(S>sp-+jzPWX82 z(aOW^V_mMXiZ$Nk_82cncz7a%&uA~NgI9qN4O{k$K?%d4vxVH$jg;aJf#8@tq1^B3pPmHZRN(AHBX-e*>#Y7JK+QW$BR6j+&>|CO? z1X$nDfUA}a50v8h1H0Wz-@$Dlt)ZE-W+_2^Bv}_&@q2|aK{XZJ zl(o7eP-aWZ{3siL=FPN#H{K($1SoJQW{A6m+fW$xtcXOZ) zD6iiCL=&Gze}hv4%#7#gx_w|4&0G?xX^pnUae2Rsq8(6Qc)y?PEhCYa)~KDv-uv%I z^GG%*bMrw<)}<1-U2SfQuX?@>SWa?ED^LAwjdC%(`%4@u%?1zT;r_ZSTq7;3=*?2x zAJgFh`Qoju)KeO*&#RAWCRj|;?IhsF~gsYAD4%F^q{1$pR zDdOhlMl8eg9`~>khgv#Hq|ZZJW%l*CvyFb$FV?Tw4wqdH@C}M{WQ8HS5$MAKCMN=m z!Wgc~B9E4*riHyf+Zh$C2&MEfQ!BpnVj=E?d`z;(u33vxm`gUw`NHy89=8Fj*FIzk z7|xdC%iE|oYuB!6GX?hvz9pIUx?e1tj8(ajwu8?UaHTlRM_mmtjGHiL8>>bFc1uI< z+Q+KU+{n7{pFK&L(eq5Z)3QCH!@>}x04hhHD~`SWn}gaB>~2ZJuu$(oqmglyGGf*; z_E;yrxIy5fT;lP*+W-tcf1cX|yIj9Mv69ECD)nJxJ7oaFgY*pwv#;aKcN+|jird;2 zC`O^of6cBgqJN5+E_ggb<5mGBT=Wx{Yp|i-PY^pP*f%mN-)4A#8 zlleg@;Bpn*v(A&UCiOm(QdDroD~9gTWfEw62PTue| zecLV#IYPAYS2~*%I)2J?3Yp|vkRsXj6R#lhV^x|LtqNeHo)MS>Zf3f(`=`NQN@*EJ ztuEbDa(Vh!@=|3Q5MP1cHImJE$`pw0#}29)G~@y*kZnc|jD)Ck?SZgX4&(n^XDRm`OZ$aq|d)Pohu|-l>if#ve!+0rx;xx zE(r6)pgl*3T6=9GL%XQ7-$4vTU*@M?fA*{}(Y%FC-znYhOqR{nm*u89F+{*@)Shd_ z9@)g4z<1YunY;dVg;DKqL>A9^f!9n_@XK)lAxYBub>XHMS*1{#-ul;z@VKA2m}b$h z#ZD+ge;hWNRFM|s`SjXxGq-5E!;Gx!&NG$cb?JbJKJ6O`2E}9rYbkasPIhC{;iZD7 z1(Rk0ZFy>Kr)?$$vYlc0#>5XuRO(qZFD7e0^TUWoUM|qSA5-BOct9{UN?M;Ho)xad1e5wWT4UT3^S58yMwT(%k1L$f%!U=CBwJm{+)RMT!V%15K_TdsZnp5_Blzw1 z3a$xD($0E2V6c=&CDmO|<*L`NHkF6{o07_jb?gD*yARSFrDY=dyjoodv95%3mEcdE z?J$npC=uMQaB5L_bp`9)=jnsKX|nBr{`tCD)wML54Ol4Pv&u%*5P0mY;e5agx7o5c zr8NO!RC}p4sfAEttMj(#Y|VNNK&dRW|WT(RZ;vY z#)J^LmEihP+bbQ^f^YE}MOHAQIp|loW}hQyO}wbXS&Nn&M;T-~eI9bG)3G4V5&o8@ zgEmQ65HdSI)`>T|eT3-ly2*4|*Gj{|`EYn7E0b>;L6n7ex8(@=yc)$wW@%- zJAGcwFvi^nw5fi-M|?3-M;>PO`Gy-+hvrX@qJ7KVK9E4nuo{PA@DzjxEt>yp?7)~9~NCJ-go&)<|*d6Ku08(N|*{ZailEUIc%ry zpUwVs)k5YJA-iV%CS6K_a@Vcci zLtw`FFw$+#!=p1NaNw@u*<%qms$y+lYQz<~X>>0^&-{FVT`Mz9_OPDT`SHhuIp@`1 z3a__T>nQD{Kl)U>svLjR!j(o*E;{9{0-6NPc=xNt0wPSOUTkviGl+Fq6lS3i+^PG2KeODUq+% z-XRU8rohWZoUZR?9LzfzcT@U%R#@&n&Hs7&<~2JGv0 zGR;nDNfWpAgRtb}3aY>H2r1a~e=ngb+Ji|Q5f1COGh)4XSYd1M5jl1DUreOKOycNP z)R6~+%bS(Phc=YXeKi^sti1}q-rh`ANnq+)1lZw|7!jIWWF`$h2H>e?x|$|{LWR<*0t%L z+ssqJG~D5T3@shIzIL3(U1UF=sT*}B5fyABx__=0$-7e4p0Wdopvo+pGjD5pK`)Eq zz{|h%bKzELyp@N!*L5Y5c2Rf*mGn6j|9oz4cz8;)S-r97r3-Te3xrQ1>d~{5%MsG>olRvj=ZSyAyU`sir;axXLb^kLNbrN#19^Qqlzms~^5D<~kB i|NlR*0;8x}2sR|8bK#G8f}GLKl018&p;WG57W_YueU_2{ literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-sleeping.png b/v1.12/_static/img/mascots/scylla-sleeping.png new file mode 100644 index 0000000000000000000000000000000000000000..f88598e05ad61c07b8fd4dd2df25db2c3b331ec5 GIT binary patch literal 12942 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 UO=AtOBHIEKWK^W9B;N=AKL$v=ApigX literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-tall-measure.png b/v1.12/_static/img/mascots/scylla-tall-measure.png new file mode 100644 index 0000000000000000000000000000000000000000..6f0ca146c0d4a9ca231919e5a38d26cecb176fd3 GIT binary patch literal 18996 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

          7V#U-M2EVk_UGHzyn=t98lh6Suk{M*aQ=9*yn^ z49B>TtLy9AdX1P^u_t?J>9J3^gn-wl^40sAO`<4dCFsE(BaLqDQ27L$KCr2&iQUGklXe9P5nHH= zv3cY-(0%IT#w7)|49v!!uFhB9tx}$yn98NgKrTxumvUy~aRVEq?ntJ-$Ktu^F}k7R z9DQtF^zw>kU|-XTk~lmzI@T0q7Gor_T6Nf%EB*Q+=A3Q7812TG*vrw>aML_oc5wnOoHmMNr}cd7yy!w8oa_|pcJvN~|W zq5xQ}%vL2+NcicUlg>_`2R*l+ z8KpFy8kEUgv2Tne&SbD!faP_vw(541y%o%V^yvxEmq)>c<*I(0=KLqWA)I)=;%zhP ziMS0LPDY|iQe|F{Gv0efDD3fA$u?Z&tW^NXHZ4S-YX7T6PDBKyj8Xtj8%iw7`krb)xZU-|c|JCaep4-bt& z0HQA2b_M_+`Ak-`R2qI@2&toJXl6FPNw;+^!g^q&bGyn9I8Qt2+TJcS4Q*NYV}|`v z-fkTScsGBPFV+sRi>0Oqw;i^a&vTFVc6Q`7HF4WhwSKHTDj<2X!cA{!rC8vE6B}td z=<11|$7WFC@72C~x|rDodD(6>Ir=Wgm0T`>?&X}c@~@cr%GK&3v2p0n26O*zS+W{DlnY3D!?F${Y@MfgI_QuEOHX2MRxz#dA)UAveKyAW_@Op` zg01M-{@0YpV8HAsg9y?Ry5O)z>8c^zhh>z@!yp_q+VuG@pA>Y|N35@3Z_UD9J(G5Jk?3|*)!eD?o z>R>IqISq)?jS48vZ2iN6^UxQ>Y&V||^-1zNb_B*X=jo>6tv<;bzXL+(kFZ?e(7CzU z&w3Kz(Z=9Si*&on3DDISoBoFO0nn&($1a10zO`7t+J;8S;QG~C$7%cqSUcMZ!=v!Q zWXl6j{_QG3e5GCsiLM8*P$BFrmBYX3(%b!!c~es;tL6lZXQ=uqm=d--z=`26q+BX{ za@S&~&tR9owf?B*V*f0lqmv~JuV1TCWjE+x{CG*)46S6}|AwiAfG$6<1a5Ps>3AAL zCM41i0S6g|NLxHUOQ9SEw+!+V_Ai*_UIdF{Fin-IVVj9QK0eqnK3BMn@zYw=DtK^d z_IPpe;An$~s|DcAwGNB&0PWsw{ns1OYFuJsLk&=@!bRc(DnXT*6R@3%=n}Rnyqw0<}N9Sr3HsQaC0YW3|F9O=vA2+x%S&%L8sLrD+M#EC0^{YcUTE#xq!NGX3 z-h`bj6aQFe73Ope+VRs*7_oIRZD9+9A6yZQZ3br){%jQ zB@D5x=K&)r1Rfa+gpJ9m@%UAaThiyEqN{lMb>H{XA~e4;B!Ih%8nY%qt z>r9SE{Ss|~9yVW(g^w@IHr|S*Ey-uIY*}-V@$TVwbaWJ6)q@hj_E$<~Z*TW4H@C6Z zmlztr632hg3t3j=hvhdUVYR;9;^!VlcA7}kRGO6A0!kg@S-XVYZ%;OaB#p%dS^g%E z{7dis)CQIoH%Cs)%*;jazdby%UViAwqeS3vMe;u0fZ8yc%|=g2ro}HGup++!*_Qmm z?S~JfD(jjptW4ZPB$LY`Wl@J#jLzj_uYR$1IGgaQuy(#eV3U=XM`@S!+Bz~X&!W|6 zm?~0G5?R~@k3Gl(*ultseSQ13;I}Z<+`k8GMq#B%XS+@Q68wNjiI8r4CsVRmKACNV zA){xDGFr1MnX1NpIOO8;;*P*!8#8H1qmFwiSy@>D$K?m&&8Om3ipt*I#-{P0J#|G5 z(cSS@FgabFqxNNCQC?S>mz`fAS0N$r(dJht(m=2Wr1X2!>3l5PHEWD+dn;vS^ciwM z)eTM#d$e_Kd03K5P~zD_n&7l>idZPX$FwjfXIMMWjUZ`&nTg3{B#AL;`xArB#J8j6 zhKfliE@3iPT~!xVf{%q{f&f*RqPO%C-eRRLMGy+xFZ+%u-et9KRN+A@3qK0xyoCzx z6WlzPPqvbHJt6hT!T$AzsK_cR#sd$M3x@#c{As|BK=?8VDv9+AQTzCtg*|T-BvKV+ zT1wb7u#`WoKu`z%DctB*ag&Y!ADuZ}6c=6B-i)*Ojlb$Xv4dkRbRzU=^9|p8u2lvK z5tm`9e4VU6QIDoa&L2>R`<)_IXP{df&=Oj1It@LH*63NUY-$}0tFOc37<<=#y9ZAxVbU=i35b7!boGXQuc2o5<=d%^=At z9v&V-1{SdGU()ua?$yT;=oHc}XU6GfbT`&8@xnqA6CyKyXs51L`yhH>M9S2UVnM>; zd&W0A@Pin57<4*6iAzedY?a%G4y9GojGwLLK)o1!Mg2BW8PGi~qII&SQv&YXZqbq! zDFo4Dg;8D%bK_Ij8ZQ0fjHX5_#k=^nz^G42&V~UhOH2tJOG68b;g9L{cJ3b-i0F-h z=Qcrvj1N?R*`_BwZn~a1Fo1-FgR*){_-@@iB@{ONldD?OMxR!6xqMYAn>#224lL;O zMUC_B?pU#|CHNndPf}4)k;D8izU+~;HpWFxLLzS8_Gc^l(}kv<%H*HnbgM1S-X&W? z5PFngO@DM?e}w%2C@fbyV&eMrh=mr1QkNb3LX_wT<+__@uBLgcjhRnymiLhFWtXx| zo9Y=*Ama|IT+n*yy&LNY`qeemgvm_WL}F%ecxGw4C*}9=kz?*ncx?ntM5NaZqFRc__7UL49cGnO2x|m` zc6N8=_GeIu;b66f(}xE~izsO+U!g@=ez4^yfo;gBmwt=f&>1BTOBb!o&nS907cVX; zy;!`PcF$LEl13y`54t&7jN>H5Y!?=h3CV4-VIidW0UbjE4l$tR(AY`q8b+n%E`f~M z8T5}Sjn*TBs^06AStV%DKptD(w#YJ*Pj7pRg1V$)k}oiXBsn=Q#a;umR0puI!v;2H zD%O--DR_&hZ259SD*e*Wp!t_&@>vFr4V@97ThO(drC(k1Ol3vsM+}30bGnMt#tRey z6kR@PW4+>)Njez+4xRb>b6s&t0)|vNgzLy7A8#xda(P`YbVeE?v3T6zf4L3jbzR6^ z1+cdxiO#%#vqS|)l~#+uVNC)8iDDpeV=>u)l2HD=O;Wy@;zFJMo}U2c+t%?A@py#H z7lnW%_O}X^gWkOe-gk@j=e1jh#ofeh|9Qp`F)?xLDEfB56-cKs)g}nMuyL}I)>UfU zp9N7-QQ6oKQUH>D5R}}SMW%#{!hYMr4O+-(w_C2dTQAU%x?Q(yREZs;(d8MK6n}Foga7?|S5{Hk z?i7&ykeQ@`-x5VYhC5*tW?{E?9`E*rTIN`k%G}RZ#YM8)^Q&{Xig=%Ba@6K{3HLaA z&b2EX72kdL2#~hAmr*~fo7a>8RW$l`_w?BM;`o1bv2GXbrIp6v;ozogE-=xturB!l zy#_{HB_Ib5{pt_#nZVgt^Bcz8za_Uk54L;o%@$8O;&Kezu8hqS@?$jQt}0}NXQa9k z0k=sA_26P4CVLvC6|O1>1-)H!F4CZ9cv*?X7HW5R)!J+lg@#4-gjjxiSTHo+p8)7q zQoz0;W(;F-e=ye~GuWlk2{II{Iw2}h0D|XS$hce>u&F*dsM(dzIdSZ7W9roE8yjQj zwsIP^DcDge6lY)1F=GkNV%2`kSS?#N2({*@5^J&kvL|0%Z+1odle{&7ev3t%H6<T58(XVWegi+FE)(lw{i!E=xhv?kWFe>(-!yzA#!@)XCP54w+bWi zwf>e)FU4(p> z`0}rtEqzKrJ|r?BV`d+NmNn#KObBhDvPzwG~9CsIq$7QlV zhF9$6=;XL!f8K_Q7jbvp)%#B_=OYoR)$IvH6c!c}gK4{+(_ry@f-f#A%LDl3Nk>Nx zlTqa9)|%H(yJhrm^_a8efNr7e_)Fti|K-g_j=hPs7#5o4l3+%~Dhd7{n>DCDTYLC%?x9oxFRE7qsbVZZK65F!yd}*eDVLEAS;)wtMWA z8`5{O%4fa)X&nW)f-AEH#FC_Ft79E(4C8`n+~5G zalZu8uHl`oG%??|?WfCcD8h+I=#?{Gpl$i!-+rw&qoWlF`3lPaY|wLae?I`sUPGUr zIHe?6zN<$m|7F)DqHEegIm^@}h(`MbgR-Yi!D{@EkGay1X`oXrkwV~KnDx4=L zBWq7eOf0zgYslXPFJDUQ94*|9zXUE~oF%8B5Ohq}c7FpW6bunccPS((YG>oIYFwEl z_4>q1%GP`{C1KkW!8bsE-uNXTAmBS68zAE~lFppMRhY_->up0t-?F|Q6%_@TeJwCN9KQ8_&7H@~>8RE;X&`S93W0e% zDd5I-`}C zhN5-6ZIUUb(sH?U-7zpWe+_uCbNJ2wQa+%dpuo}p7kC9ceCSJN9-_G{4?-KK`kl*m zd4=#A&Up9Acp;))dG5q`!hS_>5J748q<%d}ck;Ku-g%KizKt=qgK{V{gY%hYOM6^g zoS$)qJEB*+m&-;M6r=r~BoFQo5h2ys9`lf|uP!7B*;(VJ?kH9bS3K;pLLw(NtQ}N* zClwtXBDG4nkdzc{`@_~SJ|7Mia>%1G-H)Fp6wZbGB0%}F7i^xmprmxN(xfn)D;6?t z)qH5=@9*FEEc-&ZiQyrlCd&}s(+3U%Lxp!1La|F8^ZuS5*i=-dy-pt11A(C#3^33) zfT+>C*~60_6ldjg|k}^7Ngjy z>}&R{^OxHL=3xF5 z9LAm6``RZwF2p;t1VDSt8WqHlBKxu^YEoWtd`}nHJ7A6u1q*uh+P;^aNe4mGX;p() z*;cI(LUF`nIj*%nI(gGmQ^T2eJP2Huuh&6MOl9EP`o4s$U()ZV( z+L%8bpB*-wcU)6ydX2g!G3n#_3W5P%p*WynCreL%DjyN;_U@cM|E3ob z=~6FklaRMW5>=Z$uvGUoyHRJo<$415SMI+}L5Mj0crlYn%+BTLx4>}IYW}|3zPid= z8`5Yz%`YU5Ot;II`SSGX_N-joO#_g{6frW|6XUIUO}elJF{F$9OFdLaANEn@posOu zW#CbhG!Za6M=HeraY?Utm&y?w9Nvkf(Qud48ww5ZX7w0L43fUrg4s#@S$b{T+cWaG zyLoS)ri5Gp?9f0vGJX+`3Uc6MTCjVD&y60FE zCg0krC$)Tlo0Og&k;XZ2k^J(vAt6oLkv!2LNk{_M>`U(OWJZ3wHYdxavTZr7++S20l-UIk_a7g=z{~UCCgEs-Pu{$AQi>HRf?PO=?k5tz^4<6hx zTmk|D>Gvfh)c{6(S}K!6B9BFnnN!|O%O$DecK&BJj){)8&P0{qU}+ZgootuW4yf9w z;9%&|)(tS0nfdM4dzIT}Cp;9C&`0C+!I09VX=qr)e%F0kQ6r=L)%Dd%UC-g_l!GW{ z<1vA)B%z(%{ibUh6d*hS2hwnNZ*T5m@gqFtOVjj%sZq7+V&zoKoUMmET}^#HCFZ3A zfQXms5dl4qk8NIFccsiXmHnd!s8pDDD>dWY*$XQ1XB%CTmWzJifKlInLvz#$=YySjygLqcrtH^T$`uOB`vjaiZZGH^a2E6}hn;q3CV%NLXo1C`v0W`KE#dRY zNGI*5-Gj=KK)|CcENDa`unq6;DaiX`h((vQ<1(X38}1uaweA2m62qF9AYN$4Gj?${ zya^l27fEU9xpeEb6?c9{@d|FoB}FUme3h5iS4Q`_QZG-ojyQdW5R_u0Bcp#D*C)bZ z=$Gt+KqP4mQ)p?(CgXGOe8&3AfCBVyg*`oaoK6-dkN1Jnx8HE+FR$Qc4y0e#+4(LW zCwN#MsQ?LpUAoSj_?!c1HKAXs0jGgMOIT{m3rJ=mTQh)2ym`D|g7*1Xg0M0^9@WYt ze_WQrF7+$;oxHqyc8I2LsUCp%nCQDKlvM$8qu{uTO29_+U3wyYk+g^*quTYQd1qi~ z_QizEGH3NywzKcRlWXL@wuv z_$q`5*4Zy>NV6J0&2KaLGndm z;g0=8I|BR21Tp)s<)^NIj1BjKF4Xesw*|66Epv(=D7x^J|FwcU8(x zJZekLuerIo%<{M>SxL#-bi|PPS5;u?`_rnL!GYDWpU;B?o|d|W2Qi4bxJm}b$w^5~ zv6!&>wFCqNY7f4-XYwwp$%2DJ5`8CArVnEIo-jfO|8b@aj_xc1rX|w+qkH?u%d!KEAPL-;#1mz!MmYL&5(u z>^6gnO1GxcX60*)f)P#{2s-V%C@R|}(1W>v(SekFi6%UCm3aco^FI&IE_CC>Rnx>4 z`)_{+CKcrZ^A!>hm$e-nL^Zt~>rS!pFKsVRC%?fne+@*!$q$IWOZaUiHgj}*eB<Cy-(?XA^yJzuln(gn*;E=!U^Pyt~yz!-==L(!rl zH?b2yJqm%$CDmYRY0I1%atC+t;gL(L3z*`WdF0l z%Wf#YE-7_Lv1j@{#WpwdM@0~7w{ZfHmb-xeX~s^%rJ*1>?N~F8AQl0<4z7eYjn<^x zAQ{?@awiQU3;>ZJ$!F?h0~b}u(vtS* z$c&55Lrp|pe!e>d$X7k3<3<=f^J=X9S*!TbL&uPR23=p(jQqdt1uD1- z?H{J$64Fk;;-qCH&aaYmAwTW0Q|k@jJ8!a?8x7CfU|h7&J`G8M;H_=W>353l#h!cqf@|KCDQ zMT3;jwA9DRL+o_CvFnT;gB>gr_9Di)%7Q6v(Nt} z0LV$4!usqE>Pl)M-TDEi6_lygZ!eFh6&wcfwvd0MA7!A`KdIGQU;%o23%jp-`9>#e zbrSajIaEisyd`stb|8SbWaKb9W=mATsg$Qi85^sS&GoOwt1lGI<@I*H78mXF=hT@{ zTke<`IaRMUyMK^s)bgUs0Is5($0@)0DZU;aDC;!=t*q>-s?WE#2&jju+q5)O4Z2TD#&A3^SiETnanv z`K&`5RH+`rS*0f7gocj{hzmDkNeReKGr?GrIG8erm9=MmM%&#jEGnAJ{vj?dZ59QH zMYEIk{xmcsO-@d(4JISEE3GUnjQroloa9SRvKd2&v6=v=EWg%rQeIwMjfuFZaoWAS zR^GyUvVIa}0DiI*QA8w%jOv65LzRXCa3es&;@|N2K*;t$OiY!`@&4`YZDitevD?JT zOm7j>M~oteh7D72&WMT0`Ws=IztI0kJwA{>in9qETwBJ7hzNGaqxkO+agJRAe_#kv zP;K#|^Rjvte#qoHAxpl_|48`?kVh#jJ;cRB|0G4MG5;NTFgs0LsI?`&gYn`21239; zh3@T+k-_?r=3%L(Qd3Zj@i8-lw)-Q@y`%o{(6!yjqoal^m|9th{5f!6594qD#z!#A zI-6__{&?pAEbc3+kv(TS$}iTtujRbm4@tR9KvEK3Pfx!}rwhzty&li;*6C42nW9*}%Q*4lO7)kHZM;Za z*>vgR4vqHhP%1QbVFd{wW4)`r60|;ST_?}}keQGdm$QwjpNtIw>iD)6ir8-n7i#qg zJxomt33cveA@5&IaWh51Wz<#^! zRuWS7&j=Zxs9pz4ju0Ij;^&gPQXQ2UwgE1^!la3)uhft@FdQM+z;Is4avfqG`B7M0 z+zl{xj^bC4IJ;m3-d-)87_rxEH(H$%YK!uqlhRF}_%ZG3_e>lwjh23KWL>hAYs zdV6g1KhbY1fh|6Ic=Ub`!|{Hz=Y<;it@?i2ppFkiZ^V|dyQWJ3bX%B52d?BEDjMXR zv-402CqJdeKyo{Vh2o5}5?UIhBvm3b{UYftZgeYxh*~Yw+rq?ZYtoaYSm!!#Eep71 z9Qmy9wuq8d{@v0z z)WfL~>{&~N;h5fjQO9AcXnrYR2!aNy zzH9o{-@u^1wnLOCsnm?skC^Mr-wPD=1`d`S(~u(5 z<87*^e8YRF#Hp23)q-1vJiMAoB%(t0y^Z-d`=SS%OLj9SNxd5m4`5d7#a7S0;9oDV zRPFE!WM7|Wu5XygDYQBA3^~0Q@@&HPT-r>uJQK zZrR@+2P%`)adDEe2qD!oyytM#%#YQmd( za7x&(4j{c{9&j@>+UcD0nj9O7Wj&uPV}05C;ia+66jMX<#S_HJ)zXTX%rvI^tek=) zcX3}Jr!W&sOwRtP(XPrr`o}(jin=cZl9st|g$$BjaXDf|>l19c=N?vSF*Yiqb2tLU z(|(h2hVa{F53Qaaoy~UBDD=&-+1AzV<%-1&Xds%n_H{iculH~eR;y_^JR?JN-nu2h zD0m@V3iuiEZw5HvXKJ!mrVQVv45u5dyPS=`om8Z-Wc}>PJ+>U6_7z zJ5+>;8)zPjGJi4I2(&kNxT#za3y1?+;r6W;-Pg&TI*{b?4<|tc_4T2UjB(mav2Sf$ z=~NU4*b}`!WZ%8{IAq^Fnjq$BEdS!xqLc}El5mi6_yZFP8|3LxZ=xTf60keCOIY4` z0k!E?9JZbwHvrR8r|U)L8X7CHWrpN!u;bNkHjRwh2xh~lsNPcorPeMe}lw>HTP%}6)w z625NM92f>Zz}4m39aaV^&wfnWXE%5vJ#eP%$I~k?3bX&i72od`@A<6uEDyEXi!KS) zA7S@;LPvzz_{@Y>waK$CuB6oEe%=u@ukDEzfuLFETFL*$QhTzg|A~%60lxKnGu$JA zKcw4Sm2l8!6O~VI6dHJbKD(lTz-)<#jyf(GZz$k1o z!ZEu=CPb^0e06yQ?+wJN;gmYZ8>xO)xZDIo-u_gpuM8sD%-^N*2tQ-Qkijb1_=9HV z9>b`isG_1j3srK_Rjjn8RpN8lAI0~U$s-aV_LIQWeIt+2^=GXy9u6%lUHaC7IXxL} z$yI@^=v_p{ zVe6sQs1vqyQ3WZf=jB8?6RerlLE&p!RnD?|jZd>LE|qbGQDo-!^$L_ynvsU;p zWn_#+du=?teGb9F3rv`MZA0IVitWCaQU^HY5i1OB)c30}u{d%uzr1x9K*?ob>Ptw{ zSypksi6`RH=jOW%n^S9IV@Y#gz0PM^+WyPgbHOSHcCCD}e-DR?R3vQcMif1pWqKlL z=rciHWfTwl9d9AtZ`Yu^B24gjXDUoK&UR;sxk}9OV7$Ee8|r=eK$(3_kI!CI`2`NH z=HkF?X+r0a?IiwCC%JhyV**@QF?ZP;10iWOAX1Bn+vMB1m6V;MRruK>JqthM#~yr2 zkw(qjh%lC|@5qtetTZVmS_(gq^)xuZun3Sd|EE$OH` zmy|ME27A+p!y$9?5SiH3$ZT(2K=OGmMl^E3YFIVmt0*mBU+ zvU5;2Z){*gNBAES%0P$!j0sPXGgv4g^B7XM3x!HDiks>k+b8*O^8iE+f2VWmSG6vb(|Ky`ef z-4aKV3>4L=C8F_$e1xpOyDgyv^AEuS2tX}I~zA2PCfw)yo0)ikh@w*f$2Sj~mQ4Fa<4m?>NcM8^`JdMnuK|xOpY+)>L|Bu4 zG%4fd3O!AuM~oL7GUU^+`iy82UP+tUqFUpA`nt~S^SSwEKzQOe7Mqj|$;^)20HHf7 z3IWu~@!Mr6FD8xdp{C;DDgP*fSz!YiESg^fCHe-dF+l=RlnpIG21kROlP0?j5S$FN zj@rG-&hIcO!+6DDw~7$ha7a04LWD=x)f3;+RS4*3?7pY+{`^91G~9T}4HxMCLv>a7 zdX(L5D%iUe;^_#VfASN3+YJ%0J%K^^PsDnS@(sN0slzW(5mKKMxx# z5E9l%FzX_M7t7dmaid`ck)HgUd=Y;Jr**YhtQIc$>3Z3hs580M$AAg1!wurhxGlSv zE>>JtL6=s(=q@1nd1H%9LVyx9^spOX)a&2mlosY1}!E$KtEMvUfbi*(uY%p*ouIOGgI-|wMS^GTa63Nwk&ty{CJc# zEIu@?_FwhBY90w4{XkU)({TEF<6{zE)1>fqEr{??=U2y{eQy-5zr+&m8Uzj0A~B){ zRApT#=0;w|`qlk|T0ALAA1R{$P5M~}u^#`X_T(BdL^EM`0!OctgAQ>^O5mi3g<&<1 z`cbujNJ|W|`Az@V&rry}@F!N5Sre(rDhr(epyRYvHIIO|d}DxyF{W_&DNRE^3a{X;GEgW+sMvKUDGa zhOMOy&p3j4Bko*-92+GT1q4C>2uxadh`V*Z-FT)AWoi^Fhl0AJqWsTNoP`W#v|RZ$ zujDjJyX=pLT)k{TgqY8Gpn5(z@);bZfiQPRLBSQ`M12H0;h1II*Ja(vT4CPyXhNF z(>R}RbLbV_c@UHYCb@r)u(7x*_g{fw_6z}IEAB*rb$FNOlD7tlU%zPAJg%jHxf{Oo z`YR3qT7eQFUU$0*4fw;Y?nwbCT$RSL&-f`}q>QSo{tXlErcR(W@Ka$_1SS_o)f%dBPaNSOerh9v< zO(9!73PKa##(nLLlQgjl&M3j5C>jr2jfA+qos?&0egbsBpp<(FkWP6Rx5@i;04=&&_S@940WPWT8fo5muv4pUgN<%uPU;x6a+ogB=W%jPad;>=(g z*#(ATu~t&j(syRlE1BYLry~?d=5wE%5!YBuH0&j31^q?a;EqEn^2lW$R_A}MJ)h2^ zoV6~1<@nH|c%2QtFm|@%UF;`pvXa-wF#gSyfdv zc-g8AZJg(s#;mxcDaO%vQBOocVfr@>s-s4)E;i~qnHw~0j>REhs*2I^kHly)439ikjA7&$*EF6HThzI> z@=b`T3uJ2DvnflJFdUQ7I?w7kU!6IquX3w)z@>K`4gPQtO9>xA*Gt0t4`U?jet+Hw zLBgGnjKBWB>dx{ns_*T>O1Cn!bmxF{clVGIQbQ_3w{*h{C5@ysNVkA=H_{z~fJh@9 z&-woTi)TLb{+yY;&)Ivg`&#SXte=zsro;1rW}w2yk8c<<^m13^I+tPw28glcYo5C% z>!tO%dGKxy!Lg+u5^BLZG85d`8oD=mbqWfyZmM{gDi@Sw9|vk!Pzxf5jL?=_Fec+$ zu@;zkKoU3lMWtyhr7iTVtREB|9UZ~gSeh*~?gZ{@H${ph~H?oz`n~) zB`3Yqv9!EDOmVX&#a+*g86kqatVK-fo*p^gV@3T72kPispB1SFcGJwFcO?z+07}8p zSQGOe{^0|< z+WqEUgKZV+=i%ylz5*PgW7plYOuz3~)YYzTRg_}ek5UfUUGILXN&O|w^+Zs`QDmB# zwq%|9R&@Lj@%TNACJ?o`3c}4da;A?`r!98dXL$oOL0DNhBlE(5r|v+411888t!dR* z8HAa}LTEn|_aVSyi$B?z+T&+YupLdmVn|p0V4#NkGAN7muEe=Po?ckAQ3K`X@FuMtN=quUNc4RyDQ>%3uiUNjpoieLv{r@kIWSu{V3{Gd&!-Q{PVr5 ztF>anJgK&=aSH4-o{fb*+oGZQ`E(CkU(sDoyQCdq?@UWPz|#U&IoG>?Yw^O_2%rCe zl)pu(sB<*cGa4FYCw}3XC69~WEg|TWLxlH;KlXkhl6v(-u)}hwG8(9iSje^u-n=}DtS{=D#502$F!Bi@36@D&oQ=~CzR?puNQ`*5OyR$F!WV* z!)3!3ute`lWm|E-U2%Wm0Z4Aux6BofoVHH_bE|q%H+QGm(}o=B48KMg(Mpb#3SC@CvvbcM(`VXcIJsBr*S zw^+Vz7Po8L2<*`}!7st&O6ip~L6!Gkb=GjpBwN^mTYN}iHZ3+~AtjFd?p0ng zj1!$|6yks4qobp#(xSrKMqf7+uLi7H-~adcCbmPvzX;_~zl)o+U+JC}=Ugh*|9My>K1f2pJV2%72{uILda&3%)56@>bqg>8`+Oano6Kin|tMe_i~G zAuVk9c?PiQD0sV+9|Lm!4cORRdULbq8hU+Rl98`ZwVCAf`FipG=AVge0uwqL!HhyvK_ zs?g9rAC^`1pxlt$Z0mueJ=JXX`#1fl|H@$rTo%&Y7*q2n8C2(*LJPF@>O<~L5WY-S z5>(O4?+v>L)e<($o1H2PdCx}Z)lGS zm$6m%TAE5Ws%cAkxl>Vbkp@ssYj+%QF~P=COr;eRwn%8UZWT;9kcG7HP)CAQrMfdKef2A{(zx=; zSM`sBz~RA5Not~Z7+NlC!mfLaa+0)c>vjVCnl{qYDdO|%e>M9eDy2JaOYaLLv!W}l zQM?RQheRyYUyJyEFPPy$6nd)L%uV%S_Z$a3+)d;bZ2m;G1A=LPwSlTSx6raWT^R)n zk%f~p5u(p0K>hLq{g}-mJ_Ie4&8Clo<-kpR+h)%$#?ZkGQBU~?G+YSC!a)D!N1SO^iQlM)v=O|Z3}h;$vFVOiUo`*J{n z#?(n_%}Ph9HA(vN<&S5)wfLHa;3Dtae_@pga>g1VkNr-4uiI?)CK@3zwcIt-&ZEN( zbMw+k*?W>MpYB{}nMK0mz7TbYwkGXtVL2LAHKo9gQ;Jm6wyOjE-$-|NuX^Kc_nrM} z*-bUB@fo$rOpW%$4j&`N5(n*6ZR3bf4(K z^Jllp@8IL-pQ}`^zH~>JIQ)~LVQvG90{EDKO}Ew4$s|ZcGi)r|@!uny|M2~?cdR&v zL(5&W?(&Uq)A9(dpju_Fdz+Su)z|&~?FOc?mb6ovOt6MX#7E!%K*=aV1T zblff+g6W})-z}M`{4ccts=HwFVD!;nSf|*O7LbgR)P?AAvt{dSzmOF0}8N`AM&s211@?NTt;ONxl&AHh=x{HuI14W2c5X*uudcW{k7k3j z&`vv|i0@*4G(AMvf82 zO|XHdM=~Qv6q}%h{Cx9;iR_ktshL3b+GIYEz+iSCjlI`2`{+SfYW~SJ&7Nr%CQzTZ z-`Csp^i^%F?g$^LR`9)zFU`~7ARYk`-$fI@`Olw&(IuvC@Y1|sAdgGO%=UcZHIX~a zJw_ap+%~NG=f+`~1O23N)WmHQ@&hnj(dHl`5|!~B9At9WmVHpU}rz97zbvICZlR;qCik1x%4 z*(9t+`3wq@F_bplWg=wvVe1t{dk4UFX(5qQJzE4fI5^m^<1Y<>X>k3xp#x&se3DaB z@w@|@bGYaQvgBLV4Vix@x4rtXfQc*dO*TY!o`i^~HqTBL15VxFD-1<6ORS79pviB9 zef@zq#X!7Y-z39)w3G(6+u-ZUgsZ{=BEl5@c}dzKMf52KqPx|V6N+EQuh+Q{=P_y- zv{Y`WB1Oh|(OCBllN4S4(7dNeHR_Z!wm%G-?F)#EPYhytUPxnk-sk5eZ90~rX zX*9I8rT=d4)|caXU_V`PDZR|lZktZW%AEv^#`&k;-MOx}B4|c`}1lD}| z_i<-e*i)ICR=;PN+2=s{-)z z#KaJ-Gx-RGstz#w{&naSu*akHQhixHG!uZ`SXAIoyYDo;;b4DQMVF7Hu4tTUcSiuW z)V9}ha1?$Qd`dz~4E+~deEkW@=i0AHKHU8LE;g=akFgDOg zk9V=&_SKs=6eqd->?UJ=Cm(*tm06D25RpjigtikLr7oCR+geNRO>7kU`syF%-IOgV zxRCs5OW%)Yaih5;f1+=STwS73XOXQelaE?`AfR6LaG}2jWnWw^ba-3GhWu%rNh<-I zwY65m+FAY+!s$HLBYEFWq>BcC#&%(iW&zRJZJr|IJ}GG7_LE4*or&O2pNhUJ_sBYt zpKeqhEnqSlw5nsk36393TD^XW>$}!?%dHBjG`t-}mhVR+d9-=c#r2nyNu+V(UF8wU zNyx@|>S7gPr*-8`n_}NZIMmG(P65)9bay&rDx$Dy)M}G9t&@`egK_nBN)#YpP|%eY zGw5y1*9Phb1{AEUt)YWgM~j`gA0JAM{?sKTydFY3iBSStk<9w3Jlzg6d*4?Ip55-{ z{sNGpag{9&r2e^2>tt*L@xKq{-b63P--0Tz0fM=6UK@yYKD2s7|S=$t@-?KV@N`WMQTy9y}S= znw0eBDu&+mLY;j_N1T{0o=xzmlme~C*``(R)g2u=!|@0~$y=A-=Xoxho{l{#9o~+h zIy_b&&3L2~b2t!_(>o?Ot=V?(d*`_LU@?#AiakcZG&@R|TCrNSyOf5(Z~*^6k+4f~ zNqleVbOAmAL1<9Wi#2L?L-M{c?a}_vN!gXV@j~9GFEp}*f=5PF(w=jMErZjZH07-@ zu(5tfNhmPtv6-6uLO6Mru~g3=TU+IN%dBpj0^l0wT<^){VtU?ua41???lk{Yya{A2 zp}9Y(!RYT{$o%8`w?RNFnB&mQ*bTpThZ}z;yNu@U+H#xUDJ{Mx_G+SX3w&U=lL~AT zq_vPWsGyKCo;iCiX>OuQ6F3m5U%p`y*L=gdb#zY{hJJzjGiiu5`D{p($8&d?86{SM zURy`!vxFlBAdzzmxKvyjIsKE?$Pp_uG%Cen0so>H5e)+v_O?ealO{+%b>P4Pe7!0> ztv}moZQ_bHlNd!Zk!J1hL@8c1KH(Z#nN}t5v2u1_f9bq~=Ao1tIam^Ar+(&O-_@Bn z6QE#7cJs~X`g@5-;I|_(NE`0{WhP0(6Rv%J=}~jw!pw=M)IIp`m9fIo4Hz{$U{nfK z{kka!Cck+3tuiSw>A~7CAcjNe@~%CDEvHrQ<(|^H7@R$}^S*^1+ftLg&1YFp&e1z6sr_eJza%CT+G2sT6zqJJV@m7hA-x7~{Qv#>w z&dcwOok^F`#^f z(tpLL0O6QXQmu#)hPA>omQ8J+DW?g=3j^UGEit&aJH`3fm9 z(ru;njf$>3zp!I~0tlKvDtVMZV*>6QI1!Updkqlt?WzZ|*{4J)M)JGS8*k)Yz0VLxMZQOP zXuJ7>&K-=FX&#$f>tuLvC?w?U4Nyf3CF%#MP7-XF9#ih+p6atCU#@0gc~U1r413|w zyqkL!QnEp$RYTZlVp#fH^CJOJ*T+abq#LDLmREpSk?Pay0&uzQXow{--9$#PYqXoD zw&t;YolkB} ze}rX}bmx((tIm2A$;aM$jKPNdg%n|e>FU2J|0^dhEdsbgbvF$;e2f@=96@_+fQZ&g z752&$l$Ecr^E5FSahNs>c?b$Kz*IoSh6kU|d78Cyt)(*vS=|a{&(0Ha+et1~LtwQcsit6&70084u>r~Z}dIwuoG6Xfms0B3D%G4r<$e#?(_6-6+c_OuoZ$IxIPLB@p~F9_F{ zvAumcXpG*3LyRBls}yqSXeuqeWc~pg0J59U%xb~-#y1lbo1sqDtF3^9C`dr0LTnv( zxzE-8L=0ACvZVICV0^gurS@wb&ey|qD8ggwAY41UUNT$~4y{yQoapx^-++U2b0Eb1 z{F%Wvyw$kAyiXEhqQezDq4vD@`5EP-^qFthy z1aTFpZP#ri)6yQ6hOraBe8>6ub+?B^JDSRy!q&kT){bjR#dq$Xa&vsu_A!grY+y4} z3>Iq|$W&&iS>=ay?N^$#45kwk6YE2jeZccHza*za0Fb0!#l=OO`g;F9oXu;0%1sqF zH3DyCdnCUerhdoiIJMJA--<#_)u8b*Y{RWuct47POo$eRLD{rzm>?LMW~&%7?Bt( z1^Wucw)a0iIY-kqgcuN&vxSEuy=u4UyZXy1v)$5CEtZ^=eSy{t0zBXeG^4H&{m|PY z?>jLgI>`n@%SKWxiQ9=V2SbH1@@nWOthfAz(rTpG*qVh)aw+7#l!VGsgwYO?Mq{&s zd}n!ZMNDQZ<*JeK$?Dh8S=#KNt0bROb0Q-wDazWb4DRUY0EJLmjmsGeczF!NXIkYi zi=;EH(-%@D&D48k%_Hk#$fl;T$53eQ;*%Y>vBWQ85z5r!m<1q=fkD>N@|Vilr5BW( zt7*n>Ikd0cc|r)8({L&bpBt?bqMabQVJ9ApzQMO`wvk(mY)8ZOdc~1D^I^=6FTnq_ zt6L=g%hB!aaCCu!I68E1}d+O`%iL9%awQ?}0(Dq}-G8%T?ZzJS!F8ehW+Ro09QlVl4+5`oagx~OH zE_|<3cbuv30n=8SyP``aQ7jz%+g#MjH;&avI*M0+WsJ68J3MQ6>NjQlcNe`4yskS+ zp}Dymy2`1?L|nE}4ni=YX)PfWSW8&Z3{HB+a?EEJT}dR2SNb$=71=8vh?}o@Px$g$ zJ9dG-8?OZ)xzKxSf#3`k1!~Lk*CZt6khJLLpGK7=p2Hhu%53W`gGiFO-7C4nWzBg8 z{nbyu5m`N+E-Kr!IxrHrM9Sbha=@@vt9;kuPL1g2krB%-9KQy!K@K9N zeXB6Y4z;oEDwHECh&(OqH-Rl4B35$kb4^Z&Ll0Acgz=@&8m{~34l$##LY;oKJI}Lu zvD$xS>FRe%m|PoWbezyrBi4?!qtL;3tX~LhnAd~h=ymn=@nn6Y!!?B=gCl|P27p%t(c9ou+2Q5(#<0|nqR$a zc+syZR;2xPeeUU@cVxzZ<624x_#u zmjQX5q|#jP09x02>N1-v;Ig0G49QS&B|hU0SDof~XktWS;zu|zL0f(gWF>-Fs_&x3A^TSE4vrzOF?P*_7kycHpuKHa2DJfqby|Gk>P$kj*`D<_FJ7Ko6CG&{20n&k&J9~RG zpAPkxfnX^~d=Q=fYN;KQkp61J0Ais*>}RTDhMYp1BwFQ0s%{yy-rSh@^*-|l)J(dN z;Gx%K^iW2IKC%RnoM@Ej5L zJ2ePJKC02{91F{F^X1nKpd7euA#!^s=8^;_s{b)5Q)`33uMQ~A&nqYu`bVx3aOLjl zdG+!b71)cD#?uK3rbTqM&sSdHitC2BN2D`qp=s7Z6U-DiMBws`vb^jn9kMHb#+P3s zlJO-B=sG;+-FYJh6Fho-2j?6N(H?G18lo|`{b{Fwz+P?|79=b9Yx@W%FI6EgrgkQF zj_|O6mUWWqs)OwkRS&(K*D~9B694|Ya<%p4{&d~69nNQ59$~*kOI!G&4OTa|Dh3{$ zv(~VaR?I*~rUK45!|-0Hxqo;jlcoIa_VQp5!S2!WR}H9zvc!am@WNkJ#E0 z;2!mh^c{F1|2KWQBSf=r=AsPoU?p(6GoC}~lWAtv^;oUCXg0+uF>JP-3vCk>Wp7KL z6al8cMV?-s-1fc}H&lv}zG___RM@6l>M}2JxJQo`<8A&Vx2a7l%i>$IV==O=n;nz+ z#P(|wzfnBtYkB!3{MSt-Da9h+7Abo_Q6Arn4C3w{=^GUd`le01SZWBA-qANzt`w`$ zKOu<<^z19l&WoV*0&IskmIwfTG~;e5j&cZZ3C{tq=R>+?vc&vjx^AXHzcnGiZ{-M! zFuc~HBa6iKhNgtAMK0TZVW4>uaUYtJ1c*yq9^m<8{f~LuWVA6kVl~fF zsJVuF_ym-))~z25B$5UqdU*2klzN7|M6d%q|N7CdRouPNlEo-lMMe&`z##!=om_I5e=Y***_Lo+k!kMtNMGw z&b{6s(SuGv22`&@G~63Ji()AD0@!DBW6Dln}7{zqx;Zz z8Kqe-z(ga3xP9#XTk)4o!mWy)AIxv6H)q^8krUTdMk4dR2+pC}++aF#$b%3_% z!@5W<`fBV5Sje>f3TKU^Q!2=1tZrCNNyvpm1TwAp_{bqz^aT|v-O;Y7k#VC#LLBs+ zO48#8$05ecmyo;{ z3z*n-GCLH4o4cBNFbSHkUuAh`F;nj9_PI27cXpgzgaAix@4lU77FULv3v)|Uqmfb~4;tK1MLlgC8qy`%igDdU)PjY-wp9#XsSIkzc=YO0)l}r(a|`GKb*tpzVQP z@z3H};(ud+^9#I9CoF6bL!%njlFn+%NxWip2`j2YAIYqX4GUYGx3RUR-X^vM{z9By zZ`KB&DnF|vX_%;33L)q-CX5gx0ZRzddLF6u({j^kVck;qH7V-N^#Y3~d|X{UD-Zs^ zi|~??iNMk+h>7168zgU4Hd?b}HwQ*~LO!?@=to7o!PNfT4`r2f--qxwQvmn$|L42j c_e^5`!dmKx>C2(i*bCsJEUzI~C1W1)e@jLkE)=!Vp^{6DlcdLo*X46GMo*eZR?v7cYXjr9KI(xXtgkV7sYov>e{k z(XDaE#Jr%!_*6_5UH#5IXj(lBwR;bx(09q-sptoC^we~~>N&-)ZF{7G-kkBhx7)S5 zhpZjbUM!SNG+NGWUxL`(4%9yU%oqTPar$GgkzJ3V{S&wxzzXg^Eq0$Cx=CyBnRz=S zWEz*MX*oUQSa$34_$UGpL8lJ<|LzN3-x>oIeA$zc4Gv%Pnpwi{>-g3-EtT)8B-S^g z(;rrdn|yy$5h&r$gm*))iI(B1{JLFX1+T z_$mC3Q77ayJQ<#CW2L=ufWh*q8EmM&kk%)^{NE!a-*ihW%BBew>yX{LDiSrHVRI^0 zaWZ@%y|$qWRA_&);u-;)eT5Qx&R%i-XJgq(p|N7)9TMt5#9;V`FXgI*e#zz;*nbk0 z9c!lP9zwOj5kW`6g4-XKZs0e_RT6K0oJYr2r!N1;OS0kosCnEdR$s~Up%(Glaq%!= zdg(K4zh8Ol(dWyp+#ac*Wo+Fw@?wfJfE)1E$?U&vO5Wt;(Fj+&iHzbVOH+?`;jsXi z-RbYeTAg*tXDy>6zE3O&5}N%iw^(YCsDAx{ZvGYd#V++Qp+1V+H5!q4D2iI3a!5$1@YO{NgG@(stbTp+O%HU)!Q~C@|Lm1*zC%pI`<_8- ze4rYNf;rIf6&fh>Zo>OtIXz@`I&Jpm7$x-w!5jde%gN-w4OU85L%Xg3AdAFM;o`GW zQmGCjp~Y<8T6dYoC`8hY4HWm^#%geLBZ#6?)5QnLh{;w@h7v3h)w2QE?6khBe;eA4 z;{f}SIp(Yx52kj|i@`Kg>Dj>lEvTPvO^Lmg1z$$9TBv;Wd!W)#F~RE%6YRyD|E!}( z2s-Af*j4dvvm0UxC(0DIL8aO3TR6&_M>Yu9wu8L0v&4gk6g;3liPcZ`6^WfFt)02X z8t=GvX(WXNy;z5|dU_}qV!vR5{I?-4<$9rC1bU8%OpS&*bY_(hJ^;9P`H@3a-89cY z{Qq_W>CDs8o8l(~+1KU$`>wbcii^OW`l`%_HL)YrnUlJ!)a1Vf`e6WhKvQzwujYtC ziJb6g{~&9oiYoPG(N`f+=>g94hu9_2vwfdpuE6eh=*wi%i50_C;viW@(v7^NYj^-W z2c#f$(CE(}%^~w|n1M2X0xNPdn>iBXspDUm_AQQj!bA2cqC zWK24J?qfAp`u8l12g%7C>+=6CQ>9)d6lW%He*K}PNIZNzRhf8%QHukBpJx(`#JSV+ zbb#U3CXPrZbw3Z}u+!z}&HID_tQBQo5NamZI4`si2%h`DZE3F=r8x_S5leR~aEXU1 zlP4u+D{Hc&8T{umCn9j-$*zgvm?74N5t5}D$Ck+W=D(Y|;z};K@oY91iA5yM8tw4` zB9hbL$?lxTM%r9S>RN0;gC$9)aq*d>*b?LUTcI-S!i$xT$vlo{DNDK@eKNyi!nBSq zM@!6z7ybc;fIA58zB@A^fKja0Z$JNz9u)94wYmgEp)QZWfB zlBNXQ|AjLq6q6jt1Foev9%_uC5-O+Wn!UsD%YQ@J0pi{b9!Ir4TS>HZn1bLZ zB&7S>4flD}k{4hS+~k_{b|ok#%VKVc?xIY?T9?sqV>5bs(jfvDw#}bSbCJ%Ws>gzF zBksP*T47ui`y3T3`btcMqRV;nhu&-?w1!Y&DH0-`za)o@&~1JMn>(5={SKkI?q^WG zyUY2i?)0(A1!0>*jSUa(81A-jI;;DrpIp0gABoVQoNx@wx5X4s zafxA3AHGZ;ne6|&>-~&%tr5UbqEO(bt|WmU(nR%s17yuRoH%ZH1!;p{eydkWSh~F=0Mnh&^iVCzS>@+byWaeae%yPzdNk3p-wjiUr zNIxjOO&m*zQ-r4lNuto?PR`uoAx!F2#7{#N!`e(nlC?e$>Y+Hjc|B*YsGGH+d#9I~ zKv39Z9aarKXZE(N_|r@OJe>HOUq`}%6rc*wnBv=gpUyD5o#Y9Io^?vRm2H>F3vd05 zLEvacX?c^(Y98dtrg#Tnjs+WI_#!8GFCK_0Y`edN6XOMst`E#^9lz)I0;%_wk{KO! zM^*UPO6I+_XJLdRhP6UnI8hi51V2a3R#dnOPMREDLK9tVo~DRTHYP^nV<*)a_I8Rwn( zhpA6n4^;p)O8yjdU2_?Y3QMAira(O!)Vh9H1b7U6aaTS1R8O_ypN4q?vH?shaXtNY z*mN?JG6bRrTB;e2nwn{3&@ zfqr56>n*$A)6!%1?`XPH+mfB@j7KnoRq#Y`MR7&PZ;FH5LNSwbI0R>)njk&jYmPRX z1`Sv4Z`m?;0!b%V@8|<#Bt5fX`}!@17l)z)CDe(50BVdf5_&C{w_)Iw<)2M5p4bqYm4*73hMZZ~iDBPd<{2@7BJAo7isM@kds}4AJD~7_Qdnd zil-n>A2^C`fz=bknNOFz)StKy9u9X-rL$-Dl!}jXVdes9lv-=!Bmqj5KQ=0=zdapb z$-6;SviT5m;W=V*IN(XsFvO60lV)8FIR;+y5z$*iCPpwgC~H z+a_z|^n7#DrfKT<#_a{Q)k52|xu{8qe0pH#y%^?N4*P3XIGk+jzKtUb2Vk4YXW)Gv z%)n=F`mukg)_pOcNvoseqD7^`pm&}}0FsDIBT`=N{BTy}Pz04l8>nwxxsPbCqejLG zj6_`_|NP|Umq*F$(me`%`D`B!1vgL?;rJ0#EhbAP48g-*!*kVU(A&_RBO*^J&?947 zzAG=g5MUzvp;P{T%sNb|(o73fQTjGAy3X$+&c;(4Uqq6JgwK4POhkG9#f(Y&>y^La zG*I8PJI_D&9cnPX>(SB$d7YZ+OW-vx2AW5OWVS4pzsX3{ZTAxX ztI)E` z>G{twcMB5>q1#BZB#?M;? z>+IhR&l5_<0KBgUip-qrl1JMl){`%`f@z@C*GhM;dsE73cM~p4x}`~&D}n>vGnoxF zG}m*QbeAjKCz;MPD7`3WU@PF@(T&L2j{Cdvnd1XoMkwXOxHdW8vh#dDNi6O6k#m5m zyFO}TNr($S{ljHy>-6a#a*49OzrW^+dPg@F(%}(tj>2Xoa@*HZ{+F2g_k?Yyh9Zw? z!jkT;@u`sHS$o#Xcc+IJi07;;%rDQx+EKI~0+!|vO>akBfJfEX=odT#7Wi<$nx~M^ z6A*X;sX$ER&xsKQ8MGi1^GpDcspXuZ2_HeMB8Vdl9gue7AIvz_e;7doH9mb6Hh4LSI*hq>xK^Sv|j6{&AQkrcF4GnqK**|$H`XzSeqrKGhRX~ z8pk*iHac>lw(Po4nqjnC7r;It^1#3-5gMG{l2CV)gov8n4=8>WPL~G}p%5*4Vls3A zvHDP+J?;F)l670g2t9quj;K$eGOG|F;W?oq?o?Fdj`ss78nkt4+ku#spjV+d1;yj* zu2g!ZqboigMr|K1t7q+Nqj~I0EvJ#M@k2uf)(Q~4O5E-~FWfMlaJcvGCNUu_r)p;KpHiDVSq(unU6?_Rv5KJ<54m-<$6qXCKv+^TY@ zXugqkN?0Hbh+~CF;9c9adY2A-|J<#{z+kQ*oj=$Wn3GVvV7T--<2CJ%Cy+SU@MFPw{G%|pxN^}>ZWX`!9&C>yI3K1gv zdd*!Q7U;8?=(XKss%jIgl(l_K!qOe2lGLHLUM;Ka{|{f!wR+LG6gw{Fn@ z*hlzbCM>8sA~--xJilv|1u||S-Nc=Gye)dKifp%(Ngzp&RXd^M*0yF-&9EsGi zv7NQWx}N!GUJhE+i5!16^KiOOpS~cMY1eriHuke2Yp$*3=AAEv2xHX;7M+(_2RP~W zEuR%)YT~>igrnqsM5C5dn(jVgXSd1a$iTpXKMG{QuPevdHJ-<#G8dB5eRFAXaCAn_ zc~=y)9V*jw7m3^^ukG?y^Y$!(;N|M%g?!Cr2(5n{Xuk{b`sh$}(2F?_db-&1^YHFg zuHy<`X3w>M+?_L{`JPH_rlY`ux~9b2YzYLds~>tgq)hXs>XgrX5nd!o5SgmOQssN| zVq|2N^&47i`oBge$1kgN*?+%NW?5m6L}S;SxM@l~`6Tt+q=Y?+_+qxRxUbcKGeV3V zS$ePZo8|j{R(7Im`ukCEpnbY^l~XyBVD$t0ACMTeo?xSmdkZ$zi*j4}H=b562|u_r z3QeBHjJ9nD+h9@8>k-J&69B!gEP!+)nlJ_!$uE?Dd?0>gBWT|qQqNRm5wAE|e zdk^rkde7chfe@T{FxqSsA8`ii)b8C1Y9j~1RC-iKPGy*)e776b?iW{puWi<3bS`N- z#;$eZ?!`K=DaWiQY&B>tFL*gzZ954w`*ML2v4gM8PgGNn<9{VWeDHhC$%G3K2+w>? z?TYPt;7p%7MjF&xf}D-nP4H=u2Mx9Uf4*+MP zm!cN&AfE>Idj{29^eWkzAJnQ|UNAVSZ~OY^uyea##o+8!_kgQ(vDLTm?1lp9Ws}cZ z|KFUu!}lctH6T^S56-O2Pau;5wy8!ck-Xz2O6;QWqRQ1l3{9f7Z82lFTH?V!VwfEP zaJH~YnEp(eQ*YB^W?1da@+v12BJZf-xp^R3xhzu`VUS`b*>x;jhZVp zx$j@svpd=>Zq43Hs!5|FAW=K|{S!=P&9G?rw4iHwt*g&8IDNM{-3$KH3Ia>_Q|*pb z&SmYTnB^JU6T=t-0gr9XMb7$*-SIt7z=wN16BR%*u{$lvaC=g<-#A8SatMBi3El^IVdED@z&6tsT!F-gncc1FC}*Y8>7occwXE;X;eb--*~hnGdIy2nf0JlkQF@BYJQTA zBwt{?exszh7bP~4MR}KQ8BtCZy2XAmRfgO9_)o%qbGxGNgKH=W+kVBi#Cw+gXeXj8 z!_`TBJ}z+|v~xtIy` zdJgi=4Xf`K(U4H7&A)0G<^PzXmlo4L^|p8Vdn5+WFf$htis32Z z-Z`n6^|1?B4Q;8MxaOD+pyGE&ZUDrD59!XfQ4fon= zj1b*wd>A>NSSlWYtUUZM&?RmL@yIT?T&lE|2AniJ7TD~(eJ%8Rc6T}gYNoVJpDnCs zlLXuNEU3pX(+3x!w!rq;J0FNP_Td?#KGEwJ>6GG#>f0NPy+(OMTl=|Cj18}7N`7h= zt0N7GcaP3(vlG=TH-g?7Aag|DdnLEwUwwzbrc$jSWAQM*8t%x)Wy6N(Xh}b_iM&0; zKZqe4whqxv?|zdZ>na<$>oWWHPh5D6J`bHp~vXV4_7!tE9dZ#^^oA0kc*h@8n}WltZkC65xiR1@L;gI;JGu;b-Wqk^|}Q_$dlwf zp=Gn@(Br${;Hcmj`y^-pGKu-j=|(>3l{8|DvgXElb5E9_c{&?-nK`cJUyXDV(>doP>ZP74x zWM-n#h<;!7v3N+eEe%s}<{!7ysuIfVns+3b`-g)xxkeRiLFVblR>|AOhx~0b+Uc1HL8#93m%zq z?gz1YH~?zXu83iEq#lcc@5p8d2F7qlX&6YYRQ%R4Ji=qv5uQsPi>7}VM z1`S>Yc(*;r>#IJntJ8Ao??&s@eG-~7eZyawK8wyBolAlJ%7xutm|vh)%z931w;Tu| z=8Mj`?3_r30sFFC)B)XWT36!TQ5`ho>5VEm$by53qm&|MM-y$;^E7)xnCm1;^#+{l z;t^_fLR~KsLpv;mcl7y0@NbDkB$cH@;_=w$b~`1Hm1xVB0m0U>oTDal`(S7t;{K|0 z_t-?vT9w|wDt}sYT3Q;&@8M)|!sv2NZvf$2$hW_)e9~+F>y{hr^D{wPADQZ=9N57; zB#t2UVq4aDM24MXgdaDzO3iGqx^ACK?>k%$^K_l0D@RMf%Fp9$@57Li+P$Oa(>d6@Y4pks#$_s%SK2Z<4rvJ`<$yVX-=p+rxC zMkTHUxuTJl;;9?u-erTZ3g|i9s)sbI_hX9ex{T)N>daN7g9n&s@Z%S>8 zE;6Ci6IHF&<@8tazV}#Ld7QFGqE8aS@mJxu=IhZxG|elV^(VCo0$WK-pQVr%r<3yt zSTBc~K7TlirxY8v=OpCn>uZk^Ue!k<>H~1{WMZ1J7tgYFCT3O5PWqc#uHmC7Ob2HN zhGkpwn0WO@N*Af}%Dtl_u}S>{ikxuZtQPZLKl)J|SHgj)j-HB};7gB)5V?;j-HV5E z@~z6N@lDhVrX`jHM4IiH2yv7~AweCW&bzwgly%)P22UyCm5HZn3fAJ=LDvl0Id7fO zOTQp79EA>6Zb4JQ2cxyQI{TEF`cB^45C)`dRNRRITifGf34W`=ff%4e?roy_dNP4! z6$g-QdINUw$TDk|7!}04XXFoZ^17JZslJqXSoPym#{&)NHO$^#ViAD84R&*^`R09fy#bQN>3Ka{0#?CphABM9p|!YsrPl#FQVp5MHZo)nS&$!hJa1$G#Q zhB)e<;(yVLzFI_dYsa*zMhCB#m`MU(aMA02yT2eG4D$$v>mX3*ZxO?oLY$K-lQ{U#t)kG?0$Zf+~=WN27VaHiYI~PBSK)$mN9zSfC*|MXU~#rD?hVh7SJpCFY~5H|`q= zsxS;A00~BlkkCDyCpT6DH4L$SvE%h)i_!dl+Ra%IESQPiwa}r)AI`sELtl9_Z>2Hy=9jKhp0=s!;=dN5wSi zf2x4qU4;M5hM%Orl^rEXp^AP=m2eKLryw2X^Or}8pwFJe%yf530&$4}M~AqYAz-hP zi{&=rNzZH6M$htms+b3Q$C-_fwVMqx2JaqS)Ta|8>5XUUftpBskL3*=q=6QUMmK8u zuN$|b^O0DzMx3i&f89b(SY4HM7WELcoQCorAVGU-l~_MTuDRE*u1r6U5=4xSoDoTg zwd(L@Iv40x=`NPK;Eck(Z63IS<6D`;Obccn1Z|X1 z!#(AbpOv~aDkDRm5?5$}E*b`u(Zh-xY=;@^8kS%w`BYg_Py>-%F~u%9*)qaKxNcE+ zLpKZb%UfRYMGn^=G%aS6N=ru+$8qs+hTu^A2~R0Uxy3XxbV`hP(QD+i9GlR2OB{Jg zX@=PyqLgwsO&X&P3EIIW?^&tY^9)?DqpbcdCP`{m7uze+<)23`YolE1aY8T5B;`N0V5gX`h$Mbqo)u=u_5Jx zC#kHzGy&^0NF@*A2JSLZsjznKwMxmV1w!#rwZ9DX5s42o|9qk=wm{Ux3NhiCptTh_ zjOJTnqVbedqZyV|Shp80QiU%_&5%S7gAukZ?mVNPU?*%qhjgl@XY<-BF=PkMUSw34 z6`#5*S2i7bmO@n0lWfOv9=mra^nCT$hw=?~=`PoGcEJnl?z8rM41utAT*urn@iUaAV#BCkk5#&KHG|Io@*UI}c8gnzwR~%5f#>%F>GZ@Zf*GQ;7TBQ&KsAW4$*s~#^vzPI}l z<07EF-6th7?OI9)Oe}v9%P%#vf)uD$T3y%Pimsc=_Q_v2}F2=%8DPlF)m; zW3P7G8nTem=X!dnb)-#bCq(XoEAZU?vP~(xF+3VrU|!J~QW zL}e3JyELa#{N=|V^D+s&z9S}3I~g8MKlBtM>ycO-IC#dKMxc}+qE})Pj$AD`lmCEs zY4<(y9nl(*pL(TyWBxO8vNwzd!IriQUiqT!?ase#NebE0g@3E-)SnH$Jo0~UZ@80> zG<_6Y(fA|3;~M>>N>UHDVI&1Cs*B`hgNs6DYKakZoLfEjT9+@E&Q*Gmz9FUWX*{|} zRVMX3H^>olwOSOgroB2ye3o*sBMxqfhF}?|LeRy!EOC$9>~mYqgG3}<^t0XH&VY-I zJrKNeXwU!(qvr;&t{goCB`UwHvI{#kDXvNd(lKM7w?tx5d%3%dI3+}=GBm-}`54Cv z?Q%0(yQ~<5aX;hSh?K-$&}SgBh%) zs)4km>EW3q{@Ak=`vnN6&7Jv%H6WosIP^yN)vyP?D3g6YZ>-x$_nQPt9EAAHf8Uq* zvtQtv<8Nl}Rk`^YJ;>^9(l>#j7@y!U#$}x!q1~S7-#+o0@&{oaq|bZj8+K?|;!(oY z4XIV-d!J_rz$;K{k;Llp>!7)AFFc=L*aD@{4-BB$mARvn(qc_p8NX3!7wV_tbVgGo z4ZtI5;!5R++oo_Aj^psjn~A2x-08Ca4Mg2A!Y||dk{Ds=C%3QZ7SYN&mtXsk6e9%% zjYTVQL5%KIgKw_duEN)T9#Hd?0cUJK= z`*NXHSl2sPoX7=9Bf0dvEMY&M!TO~p(o@C;DEuY@Z>Xh)tx)Ovr3Kk2Vw?G1iBA1u zEq34{1b~H6Z#YMxhxa5vu;Ml-A0~eQlv4{C`v-HY?(cMq3kVB3qt=NVaq`m;&Oj=O zWev$(N7w;W$4@8D?MSn8-b%U-z1iR2kx}Ow%B*0fe(tjxW$zd1bG%7eOXNF7RN(7b zjA+aHTvM9Bwk_1Qc;)Sn)>~ta< zlhcMgI;{kA@d}CTXLaXrmPW%gGn%nY4OjXha1dtawViHUBOj9&Ocr?Qi6V|7Ol{R!9%N;6lXm@-Rto6O*3G_>sg3D%uzu>K|m*N>gGs$frr)iT3D#icNJ?O zs2{9|nKFT^%aX;P@I`peX8>ERKTUnMp2H$Bwxa`Xvp*Db@D1qzN1W_|O-fumUWH0r z)vD7qq#^CTV|HXb{O{O*WdBlAf|EaVTof3R`)Jx{WnHVO2*G0T~0W#*%XEF>wpbpexR4JmB~ z9^hs%eIit#xT>`2OyWLV*#4<1jk@OFX4oaotT%1ac`^D|I|d-4Big{xe|kN1k!)){ z&Xyt(J}9nY2M!7)QBts38lPhCTK%KE;Cch{?s}n<03O{4TQc(qYca!Q^UHBm+YiM2 z^l7K$J&F=38fWNVJ#HbQ&Y!~6I{&Wye7$S>joT4?|B9^Pt)e~ri#LMzdJ?}$G$-tP zpm>0;u1%J{X#*2Q16Dt3u`ZZc?L%eazL~m>E@d(=WIWNb#axk=l%1mmeDk>_h^~rk z##ifkAD`X}@jr{zD~-WayUMc>IZW7Nu~?3V7jK+(%gH@_WO^`(L*rYv8ntJReHb%p zT&jP?=46|9@+i6utNNLJ<**dzPID@3W|ISeuO4aQ+agjya9zDOO-8c4^{IEC=ZF}K zxW!R{&8w4Q_ESi`WkwP4-C;QXx8Nw!P+&sjQrgQrJ1q!lKmQ(Xmy}q&+UI#9|&xDbFpj5$3Nv=pL{CWo^1!9N?U~xz&jwe1p8XR(lqgOhszCErcUZYcPh>fF9AWA=#!!ysooa4b=tWQ4}jx?hLEV zfCNk91MgN0cIJiExKZ(4hZUM5laK0pWakf`7m275vu$&FD$8*K zW?_(*8us#=IGG6XvC-Y*@!k(~^SVdfLsUmybHX5TquV35cC0`oVyOwE|C znc(8!?-)0RGXSfOYz)iGHy`9by#Gv5BJOSKi9f^OgGueh7N-d!k}LPIQw;id+$v#d zf}S+unY*BPT(HTJe(=K@%e5Dc6y{-)<2&0CVu1$AK{&p{LN(tiL{eo0=hv; zpAI~xe5z5-t&!;N$OQ&%5!6Gh3N+m{1?h|BCQ2q0iv(mWB1`^}vs%-NdQL%9nistQ zD8}aGr;?vIw{m~O1q{!YnQW^3VR8duk{m(?%Qv%jCd?$k+BBDO8q&dY9OmNLEcBv8 zs5z4AEapslWA;{}3^umUT1AW}B@9iLpm=Z}7&SQ;Y_nnS^U->r zNkW3u>X>&m_ zRCs)SqxY}Mo7Y;+a>I3gvMpea11@hPAIiqr7~3CLaw*rne?I=ACS&qK?{87eF4KJ- zIC;Q3{>?*a{K=sWn5KD&ZT+ZD2MLPa$Y$)abKiKT|Mk^Az`$m=JUGj_)ff@C-yF(i zxN9{L{O{yCNL}R3}E0%f|toti* z)q|uqn<33^&m)VM3Z@2kIw?DyGpf16Kt(2?hut!lgo$zggWh6)cIY2vBFBCeOZ^RfjXLH_MCz#45B-dN~GrA@vzu3^ih2Ef=QV=dgZO z^1BB0mAavb$>Je!fBorjyAY<_=DT;YFfA;_4YDKS2%skulOa!VpwOt%TTr02ufSYG zL=fddt2ejxoKbX(0vCBp8WZzne_PjHnbxFA|LKz&Mm}) z4z0?5EBM~#?D}t@pkFj4R`k=2IcU|j&Es6fM{x9ip~Fb_t1=5Uj0O#TIrdko7^QTZ zlx(I-Yr882vuy>z=p8$}gN0Nxn0S(l$c@6Ru%!FRU;I%@w1x#eS&s{ODb-OKq3Wi4 z<>o?%T90Vtmc;ctV&JuE+BA=qFk&zLLJ($JMZU>s7!tTdp5*~X?N!~qp_9D-VyVk% zX?@HY>(mgBWa_{UXx1a%-0p5M)MG94q$7~9=5a&4ec8iIM-!0IAWL-PY zjkJUDJlPIuW}Ve$^8V=q>8DrVZteF^3}pU5y{faBBa)N?@?}&cunD)DlUKP=O83cr zN6A8QxV~$udY47HBB#&xyQ(pg9;p;_eizhc`JO-0gxPMvsiZv%azHz zz>}%4mxEyoteX!oqm2Uq=mm}}7kdJ`qh4GG9v57&1qe!8kMQi1Pl>f7ueZOb=kVUL z4dteel>2IO`QSBe6aOUVfEZvXc_LUl_=Ilqvdz1{PTrv>)4}MMS={OCo`p3Ca!J!A zlaI}~pX}S~CEH~;6C~FhgaZn+Yv*CAfy49-ZT^28Yt?VL0x`8|@%c9w>%mi(5=iO5 zXCU^c6=vf*;9wr)^Jcr^?luG{8j8$#cI;_#6q*76ppOz*qkP#Z(v}e2CLIyJHhuU= zn+Z#s*2m3(ozr@h=N_RoslSGkX}FsZ;~PA-LYMZrX=|*KSXc0GV@n8(uUCF6JkN3v zIzQa~`yotB394czEOjgr zDSW%mpGj`YqPMypot!K_d@#|Y!|O#_$MRfFQLk3wcGcq|u2<(n3U9}T2swx)8_K*1 z;no>-+pR&!r#B`u%Gr2$x^qDzhJmWuTGU|M((HwFDDf1^fyfMcEIeoo2J-~N41m>9 zR_2lVnJ*2XB0a+1ceb33f?Bk+zeW#@paf|2#sKQ~j4s4ok9m^6;~!N}E)}KKz?IGa z8zq#?lKrkV95v>CJW)M**=w~lRpZHme+o7aYcBJ49zQgCq1#O)XKU)p2}4haWY<+T z4Z4Ugr)JP|k{iHt{~h)+=~J;1*LBlgr87VG(bbNd|+Gj7%; z(b%um`q6eANWdxf#A!sv*G{u2G-h_Ee|F8To*?+yRKvSeVw&xv)C+%5t~?;2NCAEc z=22E$F?c1h>g-pMC9z?&3S7Zit-{OndR#7T{VP$tY<$UiB6>t7d+*F%!taqln0lib zfE*?pNJw7as(g6T`3v!d>rGjb0oTdDMt%K?oc`shN0~N4(UfS8L_+b&6C&S2p%D`S zC+acb22M(#ofar-4BHTrLoiPITPQ}t4N{=pK7ReQS$}{w_8tPnkHZ7Z=ZE3YcYu)~5 zx#2abir@#2lj=*#b^80a5r+6^3_J+JmtypMWL`e9iK2g+zCh^eGAH~J03ZNIAP>S) z_i7`t3rW%E_f}vZpF9HQs!t*K@sdH?+iJBbPe?8a*%pAqqSkFV4_5k|&w<8)MF^K`ga4b4h2H0r0CR_ZR)1y-Z>Sjr;QI3@M<(OU6pD;`c{? zy!xfbmJ!Kj1FDUard9x)i_0I2kRx>X;}~zhF`YFj9uPaGG4int8`j;evhaDD=m_=D z2l-`V>iifY_)U6X+Wb%Q8%YIj~1{;X$uI-7Fy1w3O{Z-C-eG0n|m}4po@*y|@lS@k7 z8Ex>>tM#WKkOkfw3{=M=qEK!UzH@Czda`z?vVxD!YbcT{Wuc3KY$dxFhKKgIP<;f4 z4;eTK&1<|zSB|;nHuGhka({cGiMVYZOOHASEuA*J^=i1)HuO971W^AtujZYLbL%S5 zyz|;O9C4y%_L~DSk#M8$2GA?jvt20EuR@7UTZjH;JX50&Exjtn{QhdO&OogvA=mm|=>DdK zl*!%dGzlb#>3B`d1w!BbQ4fNn)W0NC)>HV7$cJ1k2wv;x(wMUyBwG5jNYOt;T;M7_-Ww2TjK{Ces%kO(Mwmh*-eRy z$WeD!b%mL96|rO}$?N%2!Qr1@H->wMA6q~05HQD}1vAbnFYa`TQC<}MKSpn-oCnu%bc6#Ah8H4vH4Uwq9qPc`OGU< zIEsIU!*157Ujm&fU{bQP_-Fjf^Q$DVn`*p*0 z!i|Q+D6U$G>S}cHal+b%5@vGos^E4yc8Jyc=HEn)_xay!pm85VOR0TiGZQ8M#X}N^ z1|b?>#f`Fbu=Pe&yb~pW33t4}j{3KMmH;%u&+hn*K24BJ-ZuJYXlx08|Z^ss}nM(qD$i zsfaY!AB3-dOyQA1DT!~PsQiwu#dB1oZ~Y<00p9Ruy9|PdcMpmvGj=5?Yox0fQ@{;w zY?udh0wGl~KWOo(8I)8%eVDUxc5cUZfk9Bz1%y+YFN!a|R_qQ{6^1>ygz zCGNy^#W!;?C*b{nfy~_MfohqVMU=O(ug+|jPVAYG?g1b^`$ToE{YF;*>He_Nw9G?H z=)~5m4~67espvYugb3kkz5G-d?fLMRV01C=K#x8O;F z0Z#jAx}1f7Ktz-b4>pY$4`LPbovRl7sW%(5bcQCKHSvCMR{43vJfXY4$WHrJYCwfH zy78J7km3mIgi8@jAAnh9>|t!45v_ZHk~0yZ@KG9rKbbJ+G-c)xQzv;zW;ZgBA63za ziXK%NFK*nP&@wu*yj56%QUt-@FmGX06a$Erb0@3!1*?tq-v=VcSA4l-?-AgB8H5i( z|Jay93KJBBGlFea;J0mpO*D=29BUB8``FhDfqp&k7|0m#U#vDmqe%B%8SYd+}QDdfnVU*Y}}&}y!By!e91XZ z+rM-?i)lQXoBBWVAWC>srzhz{crewc#Z<7^FRlCv?_!dTq!Rhft*xulh(l8#1WsUp zYOaJ94Qd-u?4Oox=12B_TYeu#;s@1OYy)n&$}iMLDfk%$_16b``@rWmn{X4hJe~={ zM=e`_UIy(|-l1Xb#83K7RIbkil$3j0ddO8abseP8iFL`?2)<(0i?MgtOsNrH26#}| zI=p&Pt|foPAZ~t{N={u$BLe$s@G+wdrRMfFF4h)RNa?t^2NApUi%C7oNm;}?3vU%O zA+DjIp_WlgQl!<%lJor%IM#NtjVge3%B0nU`szM7^itSspHnx2=u9{g9K7$vj23KY zCCCn9ZCw@)Vmk9gyr)I$7ioudlPMby9w4+sPpA4lQ@|aAZpvalWRu{)I{L$%W3G^( z5C!U~VUG0JQeTFrXWqLAB*neU4@7l5%@6Fy*U`zOCc0yqkx0x^d`=Y7VK&B6?Fd_{ z9*}wv{KlWPovRaH6SQb8Wey!p6A%7^Rm>uRP88l7M}mbi=vYpRJWgJ zM{VI3iRpiX+KEz}kbL_Q{!)@#tM|;n2v-cjq{Hj7hH__*?| zmfAL|ooFs0(aGoz6(_k=_LW>3<*CM^e<|iMSv^Q*CLz^@IAB6?&u>qOy(|M@S}J3_&-<_I z8C_^zI&kPRaL}^)Dsi>VGxv6Adh0T4_KJ9KEJ zrh`#Yv?!h8Mr;#^_oe|XD`6jgeM)5{SU7B=HrgfhC4O1OK#8mn@7!tx>Zct3IafG^ zgpX|QEc|Vu4q6H~n=!YgwClZGf2eeak=sFY&A{^t+waDU3rn0s%-c;;KX53NU=3Ii#7 z{)a{YS_UL$O2=E?=YJOP65Hh`PI8?qq2XL+=J8>&v7hD_OvY zD4X5p%yz=B+l+z^XQa(|;EmHGA`}xO(QCbKkL>Fm{qS6}M_o<5+0+qDpokJm>7XcB zj}ATwn`v%6D&^wJL($jRyuRreiv815GsT&B0pNj?w)cD?IyH)b!~Fd_#To-BRt%N! zugA&Ehn!)apK)Ob^m$@QWC6Z{iz!)^oB;54F{*2y49CwCv&X-{+DnqNfCUk<`RFE) z^>BZP*SIsaO}T|OC1=}%k@8F)D2dyC!ufYh<}d(siOxM^lD*(g_WVLaB95!^gYjVQ zZ7wcf1)oe?FYe!=?(n1~Hnko5|GN9izo`1JYr2tUXc#&N7^IN~DM3QIQz_|??(P^+ zLQ3iG?rx-{TLkHpdJbN{`=5AtIeg}vZ|+!o?KP=fj;u5^<}|);wol7i;Gofw>E_$4 zC{V3}uVcsq`XT^i4*t<6ZN6qS0B!OQHhk5`;z-2Shsoj{9PI$}YXZ`vmgV)M1Jj9( zH%DzJ@jY+E(ZH*89b63zwr*(s z+c#h49ixQ>p{4;Mtu4>@)D@^>FB03HyN_)EsPz^4JTlnl@Xox`)kH2kAE=jN6}&{- zN1V4R9-J`oMw!Q~apD%S=NRex*N656S?SGTR1GFfq^b8hC$%V v$lNm9so>ZzZN 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/menu.svg b/v1.12/_static/img/menu.svg new file mode 100644 index 00000000000..30ea1d901e1 --- /dev/null +++ b/v1.12/_static/img/menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.12/_static/img/scylladb-logo-horizontal.svg b/v1.12/_static/img/scylladb-logo-horizontal.svg new file mode 100644 index 00000000000..ad5cf5016f3 --- /dev/null +++ b/v1.12/_static/img/scylladb-logo-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.12/_static/js/main.bundle.js b/v1.12/_static/js/main.bundle.js new file mode 100644 index 00000000000..454abe3b00a --- /dev/null +++ b/v1.12/_static/js/main.bundle.js @@ -0,0 +1,2 @@ +/*! For license information please see main.bundle.js.LICENSE.txt */ +(self.webpackChunksphinx_scylladb_theme=self.webpackChunksphinx_scylladb_theme||[]).push([[792],{452:(t,e,n)=>{var i;self,i=function(t){return function(){"use strict";var e={"./js/foundation.abide.js":function(t,e,n){n.r(e),n.d(e,{Abide:function(){return f}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function l(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};this.$element=t,this.options=o().extend(!0,{},d.defaults,this.$element.data(),e),this.isEnabled=!0,this.formnovalidate=null,this.className="Abide",this._init()}},{key:"_init",value:function(){var t=this;this.$inputs=o().merge(this.$element.find("input").not('[type="submit"]'),this.$element.find("textarea, select")),this.$submits=this.$element.find('[type="submit"]');var e=this.$element.find("[data-abide-error]");this.options.a11yAttributes&&(this.$inputs.each((function(e,n){return t.addA11yAttributes(o()(n))})),e.each((function(e,n){return t.addGlobalErrorA11yAttributes(o()(n))}))),this._events()}},{key:"_events",value:function(){var t=this;this.$element.off(".abide").on("reset.zf.abide",(function(){t.resetForm()})).on("submit.zf.abide",(function(){return t.validateForm()})),this.$submits.off("click.zf.abide keydown.zf.abide").on("click.zf.abide keydown.zf.abide",(function(e){e.key&&" "!==e.key&&"Enter"!==e.key||(e.preventDefault(),t.formnovalidate=null!==e.target.getAttribute("formnovalidate"),t.$element.submit())})),"fieldChange"===this.options.validateOn&&this.$inputs.off("change.zf.abide").on("change.zf.abide",(function(e){t.validateInput(o()(e.target))})),this.options.liveValidate&&this.$inputs.off("input.zf.abide").on("input.zf.abide",(function(e){t.validateInput(o()(e.target))})),this.options.validateOnBlur&&this.$inputs.off("blur.zf.abide").on("blur.zf.abide",(function(e){t.validateInput(o()(e.target))}))}},{key:"_reflow",value:function(){this._init()}},{key:"_validationIsDisabled",value:function(){return!1===this.isEnabled||("boolean"==typeof this.formnovalidate?this.formnovalidate:!!this.$submits.length&&null!==this.$submits[0].getAttribute("formnovalidate"))}},{key:"enableValidation",value:function(){this.isEnabled=!0}},{key:"disableValidation",value:function(){this.isEnabled=!1}},{key:"requiredCheck",value:function(t){if(!t.attr("required"))return!0;var e=!0;switch(t[0].type){case"checkbox":e=t[0].checked;break;case"select":case"select-one":case"select-multiple":var n=t.find("option:selected");n.length&&n.val()||(e=!1);break;default:t.val()&&t.val().length||(e=!1)}return e}},{key:"findFormError",value:function(t,e){var n=this,i=t.length?t[0].id:"",o=t.siblings(this.options.formErrorSelector);return o.length||(o=t.parent().find(this.options.formErrorSelector)),i&&(o=o.add(this.$element.find('[data-form-error-for="'.concat(i,'"]')))),e&&(o=o.not("[data-form-error-on]"),e.forEach((function(e){o=(o=o.add(t.siblings('[data-form-error-on="'.concat(e,'"]')))).add(n.$element.find('[data-form-error-for="'.concat(i,'"][data-form-error-on="').concat(e,'"]')))}))),o}},{key:"findLabel",value:function(t){var e=t[0].id,n=this.$element.find('label[for="'.concat(e,'"]'));return n.length?n:t.closest("label")}},{key:"findRadioLabels",value:function(t){var e=this,n=t.map((function(t,n){var i=n.id,r=e.$element.find('label[for="'.concat(i,'"]'));return r.length||(r=o()(n).closest("label")),r[0]}));return o()(n)}},{key:"findCheckboxLabels",value:function(t){var e=this,n=t.map((function(t,n){var i=n.id,r=e.$element.find('label[for="'.concat(i,'"]'));return r.length||(r=o()(n).closest("label")),r[0]}));return o()(n)}},{key:"addErrorClasses",value:function(t,e){var n=this.findLabel(t),i=this.findFormError(t,e);n.length&&n.addClass(this.options.labelErrorClass),i.length&&i.addClass(this.options.formErrorClass),t.addClass(this.options.inputErrorClass).attr({"data-invalid":"","aria-invalid":!0}),i.filter(":visible").length&&this.addA11yErrorDescribe(t,i)}},{key:"addA11yAttributes",value:function(t){var e=this.findFormError(t),n=e.filter("label");if(e.length){var i=e.filter(":visible").first();if(i.length&&this.addA11yErrorDescribe(t,i),n.filter("[for]").length=s&&(i=!0)),!0!==this.initialized&&s>1||(n.each((function(t,n){i?e.removeErrorClasses(o()(n)):e.addErrorClasses(o()(n),["required"])})),i)}},{key:"matchValidation",value:function(t,e,n){var i=this;return n=!!n,-1===e.split(" ").map((function(e){return i.options.validators[e](t,n,t.parent())})).indexOf(!1)}},{key:"resetForm",value:function(){var t=this.$element,e=this.options;o()(".".concat(e.labelErrorClass),t).not("small").removeClass(e.labelErrorClass),o()(".".concat(e.inputErrorClass),t).not("small").removeClass(e.inputErrorClass),o()("".concat(e.formErrorSelector,".").concat(e.formErrorClass)).removeClass(e.formErrorClass),t.find("[data-abide-error]").css("display","none"),o()(":input",t).not(":button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]").val("").attr({"data-invalid":null,"aria-invalid":null}),o()(":input:radio",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),o()(":input:checkbox",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),t.trigger("formreset.zf.abide",[t])}},{key:"_destroy",value:function(){var t=this;this.$element.off(".abide").find("[data-abide-error]").css("display","none"),this.$inputs.off(".abide").each((function(){t.removeErrorClasses(o()(this))})),this.$submits.off(".abide")}}],n&&l(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),d}(r.Plugin);f.defaults={validateOn:"fieldChange",labelErrorClass:"is-invalid-label",inputErrorClass:"is-invalid-input",formErrorSelector:".form-error",formErrorClass:"is-visible",a11yAttributes:!0,a11yErrorLevel:"assertive",liveValidate:!1,validateOnBlur:!1,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^((?:(https?|ftps?|file|ssh|sftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,website:{test:function(t){return f.defaults.patterns.domain.test(t)||f.defaults.patterns.url.test(t)}}},validators:{equalTo:function(t){return o()("#".concat(t.attr("data-equalto"))).val()===t.val()}}}},"./js/foundation.accordion.js":function(t,e,n){n.r(e),n.d(e,{Accordion:function(){return d}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js");function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){for(var n=0;n'),t.options.submenuToggle?(n.addClass("has-submenu-toggle"),n.children("a").after('")):n.attr({"aria-controls":r,"aria-expanded":s,id:e}),i.attr({"aria-labelledby":e,"aria-hidden":!s,role:"group",id:r})}));var e=this.$element.find(".is-active");e.length&&e.each((function(){t.down(o()(this))})),this._events()}},{key:"_events",value:function(){var t=this;this.$element.find("li").each((function(){var e=o()(this).children("[data-submenu]");e.length&&(t.options.submenuToggle?o()(this).children(".submenu-toggle").off("click.zf.accordionMenu").on("click.zf.accordionMenu",(function(){t.toggle(e)})):o()(this).children("a").off("click.zf.accordionMenu").on("click.zf.accordionMenu",(function(n){n.preventDefault(),t.toggle(e)})))})).on("keydown.zf.accordionMenu",(function(e){var n,i,s=o()(this),a=s.parent("ul").children("li"),l=s.children("[data-submenu]");a.each((function(t){if(o()(this).is(s))return n=a.eq(Math.max(0,t-1)).find("a").first(),i=a.eq(Math.min(t+1,a.length-1)).find("a").first(),o()(this).children("[data-submenu]:visible").length&&(i=s.find("li:first-child").find("a").first()),o()(this).is(":first-child")?n=s.parents("li").first().find("a").first():n.parents("li").first().children("[data-submenu]:visible").length&&(n=n.parents("li").find("li:last-child").find("a").first()),void(o()(this).is(":last-child")&&(i=s.parents("li").first().next("li").find("a").first()))})),r.Keyboard.handleKey(e,"AccordionMenu",{open:function(){l.is(":hidden")&&(t.down(l),l.find("li").first().find("a").first().focus())},close:function(){l.length&&!l.is(":hidden")?t.up(l):s.parent("[data-submenu]").length&&(t.up(s.parent("[data-submenu]")),s.parents("li").first().find("a").first().focus())},up:function(){return n.focus(),!0},down:function(){return i.focus(),!0},toggle:function(){return!t.options.submenuToggle&&(s.children("[data-submenu]").length?(t.toggle(s.children("[data-submenu]")),!0):void 0)},closeAll:function(){t.hideAll()},handled:function(t){t&&e.preventDefault()}})}))}},{key:"hideAll",value:function(){this.up(this.$element.find("[data-submenu]"))}},{key:"showAll",value:function(){this.down(this.$element.find("[data-submenu]"))}},{key:"toggle",value:function(t){t.is(":animated")||(t.is(":hidden")?this.down(t):this.up(t))}},{key:"down",value:function(t){var e=this;if(!this.options.multiOpen){var n=t.parentsUntil(this.$element).add(t).add(t.find(".is-active")),i=this.$element.find(".is-active").not(n);this.up(i)}t.addClass("is-active").attr({"aria-hidden":!1}),this.options.submenuToggle?t.prev(".submenu-toggle").attr({"aria-expanded":!0}):t.parent(".is-accordion-submenu-parent").attr({"aria-expanded":!0}),t.slideDown(this.options.slideSpeed,(function(){e.$element.trigger("down.zf.accordionMenu",[t])}))}},{key:"up",value:function(t){var e=this,n=t.find("[data-submenu]"),i=t.add(n);n.slideUp(0),i.removeClass("is-active").attr("aria-hidden",!0),this.options.submenuToggle?i.prev(".submenu-toggle").attr("aria-expanded",!1):i.parent(".is-accordion-submenu-parent").attr("aria-expanded",!1),t.slideUp(this.options.slideSpeed,(function(){e.$element.trigger("up.zf.accordionMenu",[t])}))}},{key:"_destroy",value:function(){this.$element.find("[data-submenu]").slideDown(0).css("display",""),this.$element.find("a").off("click.zf.accordionMenu"),this.$element.find("[data-is-parent-link]").detach(),this.options.submenuToggle&&(this.$element.find(".has-submenu-toggle").removeClass("has-submenu-toggle"),this.$element.find(".submenu-toggle").remove()),s.Nest.Burn(this.$element,"accordion")}}])&&u(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),p}(n("./js/foundation.core.plugin.js").Plugin);d.defaults={parentLink:!1,slideSpeed:250,submenuToggle:!1,submenuToggleText:"Toggle menu",multiOpen:!0}},"./js/foundation.core.js":function(t,e,n){n.r(e),n.d(e,{Foundation:function(){return l}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.mediaQuery.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var l={version:"6.8.1",_plugins:{},_uuids:[],plugin:function(t,e){var n=e||u(t),i=c(n);this._plugins[i]=this[n]=t},registerPlugin:function(t,e){var n=e?c(e):u(t.constructor).toLowerCase();t.uuid=(0,r.GetYoDigits)(6,n),t.$element.attr("data-".concat(n))||t.$element.attr("data-".concat(n),t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf.".concat(n)),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var e=c(u(t.$element.data("zfPlugin").constructor));for(var n in this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-".concat(e)).removeData("zfPlugin").trigger("destroyed.zf.".concat(e)),t)"function"==typeof t[n]&&(t[n]=null)},reInit:function(t){var e=t instanceof o();try{if(e)t.each((function(){o()(this).data("zfPlugin")._init()}));else{var n=a(t),i=this;({object:function(t){t.forEach((function(t){t=c(t),o()("[data-"+t+"]").foundation("_init")}))},string:function(){t=c(t),o()("[data-"+t+"]").foundation("_init")},undefined:function(){this.object(Object.keys(i._plugins))}})[n](t)}}catch(t){console.error(t)}finally{return t}},reflow:function(t,e){void 0===e?e=Object.keys(this._plugins):"string"==typeof e&&(e=[e]);var n=this;o().each(e,(function(e,i){var r=n._plugins[i];o()(t).find("[data-"+i+"]").addBack("[data-"+i+"]").filter((function(){return void 0===o()(this).data("zfPlugin")})).each((function(){var t=o()(this),e={reflow:!0};t.attr("data-options")&&t.attr("data-options").split(";").forEach((function(t){var n,i=t.split(":").map((function(t){return t.trim()}));i[0]&&(e[i[0]]="true"===(n=i[1])||"false"!==n&&(isNaN(1*n)?n:parseFloat(n)))}));try{t.data("zfPlugin",new r(o()(this),e))}catch(t){console.error(t)}finally{return}}))}))},getFnName:u,addToJquery:function(){return o().fn.foundation=function(t){var e=a(t),n=o()(".no-js");if(n.length&&n.removeClass("no-js"),"undefined"===e)s.MediaQuery._init(),l.reflow(this);else{if("string"!==e)throw new TypeError("We're sorry, ".concat(e," is not a valid parameter. You must use a string representing the method you wish to invoke."));var i=Array.prototype.slice.call(arguments,1),r=this.data("zfPlugin");if(void 0===r||void 0===r[t])throw new ReferenceError("We're sorry, '"+t+"' is not an available method for "+(r?u(r):"this element")+".");1===this.length?r[t].apply(r,i):this.each((function(e,n){r[t].apply(o()(n).data("zfPlugin"),i)}))}return this},o()}};function u(t){if(void 0===Function.prototype.name){var e=/function\s([^(]{1,})\(/.exec(t.toString());return e&&e.length>1?e[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function c(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}l.util={throttle:function(t,e){var n=null;return function(){var i=this,o=arguments;null===n&&(n=setTimeout((function(){t.apply(i,o),n=null}),e))}}},window.Foundation=l,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e0&&void 0!==arguments[0]?arguments[0]:6,e=arguments.length>1?arguments[1]:void 0,n="",i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=e.ignoreLeaveWindow,i=void 0!==n&&n,r=e.ignoreReappear,s=void 0!==r&&r;return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a'),e.data("savedHref",e.attr("href")).removeAttr("href").attr("tabindex",0),e.children("[data-submenu]").attr({"aria-hidden":!0,tabindex:0,role:"group"}),t._events(e)})),this.$submenus.each((function(){var e=o()(this);if(!e.find(".js-drilldown-back").length)switch(t.options.backButtonPosition){case"bottom":e.append(t.options.backButton);break;case"top":e.prepend(t.options.backButton);break;default:console.error("Unsupported backButtonPosition value '"+t.options.backButtonPosition+"'")}t._back(e)})),this.$submenus.addClass("invisible"),this.options.autoHeight||this.$submenus.addClass("drilldown-submenu-cover-previous"),this.$element.parent().hasClass("is-drilldown")||(this.$wrapper=o()(this.options.wrapper).addClass("is-drilldown"),this.options.animateHeight&&this.$wrapper.addClass("animate-height"),this.$element.wrap(this.$wrapper)),this.$wrapper=this.$element.parent(),this.$wrapper.css(this._getMaxDims())}},{key:"_resize",value:function(){this.$wrapper.css({"max-width":"none","min-height":"none"}),this.$wrapper.css(this._getMaxDims())}},{key:"_events",value:function(t){var e=this;t.off("click.zf.drilldown").on("click.zf.drilldown",(function(n){if(o()(n.target).parentsUntil("ul","li").hasClass("is-drilldown-submenu-parent")&&n.preventDefault(),e._show(t.parent("li")),e.options.closeOnClick){var i=o()("body");i.off(".zf.drilldown").on("click.zf.drilldown",(function(t){t.target===e.$element[0]||o().contains(e.$element[0],t.target)||(t.preventDefault(),e._hideAll(),i.off(".zf.drilldown"))}))}}))}},{key:"_registerEvents",value:function(){this.options.scrollTop&&(this._bindHandler=this._scrollTop.bind(this),this.$element.on("open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown",this._bindHandler)),this.$element.on("mutateme.zf.trigger",this._resize.bind(this))}},{key:"_scrollTop",value:function(){var t=this,e=""!==t.options.scrollTopElement?o()(t.options.scrollTopElement):t.$element,n=parseInt(e.offset().top+t.options.scrollTopOffset,10);o()("html, body").stop(!0).animate({scrollTop:n},t.options.animationDuration,t.options.animationEasing,(function(){this===o()("html")[0]&&t.$element.trigger("scrollme.zf.drilldown")}))}},{key:"_keyboardEvents",value:function(){var t=this;this.$menuItems.add(this.$element.find(".js-drilldown-back > a, .is-submenu-parent-item > a")).on("keydown.zf.drilldown",(function(e){var n,i,s=o()(this),l=s.parent("li").parent("ul").children("li").children("a");l.each((function(t){if(o()(this).is(s))return n=l.eq(Math.max(0,t-1)),void(i=l.eq(Math.min(t+1,l.length-1)))})),r.Keyboard.handleKey(e,"Drilldown",{next:function(){if(s.is(t.$submenuAnchors))return t._show(s.parent("li")),s.parent("li").one((0,a.transitionend)(s),(function(){s.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()})),!0},previous:function(){return t._hide(s.parent("li").parent("ul")),s.parent("li").parent("ul").one((0,a.transitionend)(s),(function(){setTimeout((function(){s.parent("li").parent("ul").parent("li").children("a").first().focus()}),1)})),!0},up:function(){return n.focus(),!s.is(t.$element.find("> li:first-child > a"))},down:function(){return i.focus(),!s.is(t.$element.find("> li:last-child > a"))},close:function(){s.is(t.$element.find("> li > a"))||(t._hide(s.parent().parent()),s.parent().parent().siblings("a").focus())},open:function(){return(!t.options.parentLink||!s.attr("href"))&&(s.is(t.$menuItems)?s.is(t.$submenuAnchors)?(t._show(s.parent("li")),s.parent("li").one((0,a.transitionend)(s),(function(){s.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()})),!0):void 0:(t._hide(s.parent("li").parent("ul")),s.parent("li").parent("ul").one((0,a.transitionend)(s),(function(){setTimeout((function(){s.parent("li").parent("ul").parent("li").children("a").first().focus()}),1)})),!0))},handled:function(t){t&&e.preventDefault()}})}))}},{key:"_hideAll",value:function(){var t=this,e=this.$element.find(".is-drilldown-submenu.is-active");if(e.addClass("is-closing"),e.parent().closest("ul").removeClass("invisible"),this.options.autoHeight){var n=e.parent().closest("ul").data("calcHeight");this.$wrapper.css({height:n})}this.$element.trigger("close.zf.drilldown"),e.one((0,a.transitionend)(e),(function(){e.removeClass("is-active is-closing"),t.$element.trigger("closed.zf.drilldown")}))}},{key:"_back",value:function(t){var e=this;t.off("click.zf.drilldown"),t.children(".js-drilldown-back").on("click.zf.drilldown",(function(){e._hide(t);var n=t.parent("li").parent("ul").parent("li");n.length?e._show(n):e.$currentMenu=e.$element}))}},{key:"_menuLinkEvents",value:function(){var t=this;this.$menuItems.not(".is-drilldown-submenu-parent").off("click.zf.drilldown").on("click.zf.drilldown",(function(){setTimeout((function(){t._hideAll()}),0)}))}},{key:"_setShowSubMenuClasses",value:function(t,e){t.addClass("is-active").removeClass("invisible").attr("aria-hidden",!1),t.parent("li").attr("aria-expanded",!0),!0===e&&this.$element.trigger("open.zf.drilldown",[t])}},{key:"_setHideSubMenuClasses",value:function(t,e){t.removeClass("is-active").addClass("invisible").attr("aria-hidden",!0),t.parent("li").attr("aria-expanded",!1),!0===e&&t.trigger("hide.zf.drilldown",[t])}},{key:"_showMenu",value:function(t,e){var n=this;if(this.$element.find('li[aria-expanded="true"] > ul[data-submenu]').each((function(){n._setHideSubMenuClasses(o()(this))})),this.$currentMenu=t,t.is("[data-drilldown]"))return!0===e&&t.find("li > a").first().focus(),void(this.options.autoHeight&&this.$wrapper.css("height",t.data("calcHeight")));var i=t.children().first().parentsUntil("[data-drilldown]","[data-submenu]");i.each((function(r){0===r&&n.options.autoHeight&&n.$wrapper.css("height",o()(this).data("calcHeight"));var s=r===i.length-1;!0===s&&o()(this).one((0,a.transitionend)(o()(this)),(function(){!0===e&&t.find("li > a").first().focus()})),n._setShowSubMenuClasses(o()(this),s)}))}},{key:"_show",value:function(t){var e=t.children("[data-submenu]");t.attr("aria-expanded",!0),this.$currentMenu=e,t.parent().closest("ul").addClass("invisible"),e.addClass("is-active visible").removeClass("invisible").attr("aria-hidden",!1),this.options.autoHeight&&this.$wrapper.css({height:e.data("calcHeight")}),this.$element.trigger("open.zf.drilldown",[t])}},{key:"_hide",value:function(t){this.options.autoHeight&&this.$wrapper.css({height:t.parent().closest("ul").data("calcHeight")}),t.parent().closest("ul").removeClass("invisible"),t.parent("li").attr("aria-expanded",!1),t.attr("aria-hidden",!0),t.addClass("is-closing").one((0,a.transitionend)(t),(function(){t.removeClass("is-active is-closing visible"),t.blur().addClass("invisible")})),t.trigger("hide.zf.drilldown",[t])}},{key:"_getMaxDims",value:function(){var t=0,e={},n=this;return this.$submenus.add(this.$element).each((function(){var e=l.Box.GetDimensions(this).height;t=e>t?e:t,n.options.autoHeight&&o()(this).data("calcHeight",e)})),this.options.autoHeight?e.height=this.$currentMenu.data("calcHeight"):e["min-height"]="".concat(t,"px"),e["max-width"]="".concat(this.$element[0].getBoundingClientRect().width,"px"),e}},{key:"_destroy",value:function(){o()("body").off(".zf.drilldown"),this.options.scrollTop&&this.$element.off(".zf.drilldown",this._bindHandler),this._hideAll(),this.$element.off("mutateme.zf.trigger"),s.Nest.Burn(this.$element,"drilldown"),this.$element.unwrap().find(".js-drilldown-back, .is-submenu-parent-item").remove().end().find(".is-active, .is-closing, .is-drilldown-submenu").removeClass("is-active is-closing is-drilldown-submenu").off("transitionend otransitionend webkitTransitionEnd").end().find("[data-submenu]").removeAttr("aria-hidden tabindex role"),this.$submenuAnchors.each((function(){o()(this).off(".zf.drilldown")})),this.$element.find("[data-is-parent-link]").detach(),this.$submenus.removeClass("drilldown-submenu-cover-previous invisible"),this.$element.find("a").each((function(){var t=o()(this);t.removeAttr("tabindex"),t.data("savedHref")&&t.attr("href",t.data("savedHref")).removeData("savedHref")}))}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(n("./js/foundation.core.plugin.js").Plugin);h.defaults={autoApplyClass:!0,backButton:'
        • Back
        • ',backButtonPosition:"top",wrapper:"
          ",parentLink:!1,closeOnClick:!1,autoHeight:!1,animateHeight:!1,scrollTop:!1,scrollTopElement:"",scrollTopOffset:0,animationDuration:500,animationEasing:"swing"}},"./js/foundation.dropdown.js":function(t,e,n){n.r(e),n.d(e,{Dropdown:function(){return v}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.positionable.js"),l=n("./js/foundation.util.triggers.js"),u=n("./js/foundation.util.touch.js");function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function f(t,e){for(var n=0;n-1,l=s?t.$tabs:r.siblings("li").add(r);l.each((function(t){if(o()(this).is(r))return n=l.eq(t-1),void(i=l.eq(t+1))}));var u=function(){i.children("a:first").focus(),e.preventDefault()},c=function(){n.children("a:first").focus(),e.preventDefault()},f=function(){var n=r.children("ul.is-dropdown-submenu");n.length&&(t._show(n),r.find("li > a:first").focus(),e.preventDefault())},d=function(){var n=r.parent("ul").parent("li");n.children("a:first").focus(),t._hide(n),e.preventDefault()},h={open:f,close:function(){t._hide(t.$element),t.$menuItems.eq(0).children("a").focus(),e.preventDefault()}};s?t._isVertical()?t._isRtl()?o().extend(h,{down:u,up:c,next:d,previous:f}):o().extend(h,{down:u,up:c,next:f,previous:d}):t._isRtl()?o().extend(h,{next:c,previous:u,down:f,up:d}):o().extend(h,{next:u,previous:c,down:f,up:d}):t._isRtl()?o().extend(h,{next:d,previous:f,down:u,up:c}):o().extend(h,{next:f,previous:d,down:u,up:c}),a.Keyboard.handleKey(e,"DropdownMenu",h)}))}},{key:"_addBodyHandler",value:function(){var t=this,e=o()(document.body);this._removeBodyHandler(),e.on("click.zf.dropdownMenu tap.zf.dropdownMenu",(function(e){o()(e.target).closest(t.$element).length||(t._hide(),t._removeBodyHandler())}))}},{key:"_removeBodyHandler",value:function(){o()(document.body).off("click.zf.dropdownMenu tap.zf.dropdownMenu")}},{key:"_show",value:function(t){var e=this.$tabs.index(this.$tabs.filter((function(e,n){return o()(n).find(t).length>0}))),n=t.parent("li.is-dropdown-submenu-parent").siblings("li.is-dropdown-submenu-parent");this._hide(n,e),t.css("visibility","hidden").addClass("js-dropdown-active").parent("li.is-dropdown-submenu-parent").addClass("is-active");var i=u.Box.ImNotTouchingYou(t,null,!0);if(!i){var r="left"===this.options.alignment?"-right":"-left",s=t.parent(".is-dropdown-submenu-parent");s.removeClass("opens".concat(r)).addClass("opens-".concat(this.options.alignment)),(i=u.Box.ImNotTouchingYou(t,null,!0))||s.removeClass("opens-".concat(this.options.alignment)).addClass("opens-inner"),this.changed=!0}t.css("visibility",""),this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdownMenu",[t])}},{key:"_hide",value:function(t,e){var n;if((n=t&&t.length?t:void 0!==e?this.$tabs.not((function(t){return t===e})):this.$element).hasClass("is-active")||n.find(".is-active").length>0){var i=n.find("li.is-active");if(i.add(n).attr({"data-is-click":!1}).removeClass("is-active"),n.find("ul.js-dropdown-active").removeClass("js-dropdown-active"),this.changed||n.find("opens-inner").length){var o="left"===this.options.alignment?"right":"left";n.find("li.is-dropdown-submenu-parent").add(n).removeClass("opens-inner opens-".concat(this.options.alignment)).addClass("opens-".concat(o)),this.changed=!1}clearTimeout(i.data("_delay")),this._removeBodyHandler(),this.$element.trigger("hide.zf.dropdownMenu",[n])}}},{key:"_destroy",value:function(){this.$menuItems.off(".zf.dropdownMenu").removeAttr("data-is-click").removeClass("is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner"),o()(document.body).off(".zf.dropdownMenu"),l.Nest.Burn(this.$element,"dropdown")}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),m}(r.Plugin);v.defaults={disableHover:!1,disableHoverOnTouch:!0,autoclose:!0,hoverDelay:50,clickOpen:!1,closingTime:500,alignment:"auto",closeOnClick:!0,closeOnClickInside:!0,verticalClass:"vertical",rightClass:"align-right",forceFollow:!0}},"./js/foundation.equalizer.js":function(t,e,n){n.r(e),n.d(e,{Equalizer:function(){return d}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.imageLoader.js"),a=n("./js/foundation.core.utils.js");function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){for(var n=0;n0,this.isNested=this.$element.parentsUntil(document.body,"[data-equalizer]").length>0,this.isOn=!1,this._bindHandler={onResizeMeBound:this._onResizeMe.bind(this),onPostEqualizedBound:this._onPostEqualized.bind(this)};var n,i=this.$element.find("img");this.options.equalizeOn?(n=this._checkMQ(),o()(window).on("changed.zf.mediaquery",this._checkMQ.bind(this))):this._events(),(void 0!==n&&!1===n||void 0===n)&&(i.length?(0,s.onImagesLoaded)(i,this._reflow.bind(this)):this._reflow())}},{key:"_pauseEvents",value:function(){this.isOn=!1,this.$element.off({".zf.equalizer":this._bindHandler.onPostEqualizedBound,"resizeme.zf.trigger":this._bindHandler.onResizeMeBound,"mutateme.zf.trigger":this._bindHandler.onResizeMeBound})}},{key:"_onResizeMe",value:function(){this._reflow()}},{key:"_onPostEqualized",value:function(t){t.target!==this.$element[0]&&this._reflow()}},{key:"_events",value:function(){this._pauseEvents(),this.hasNested?this.$element.on("postequalized.zf.equalizer",this._bindHandler.onPostEqualizedBound):(this.$element.on("resizeme.zf.trigger",this._bindHandler.onResizeMeBound),this.$element.on("mutateme.zf.trigger",this._bindHandler.onResizeMeBound)),this.isOn=!0}},{key:"_checkMQ",value:function(){var t=!r.MediaQuery.is(this.options.equalizeOn);return t?this.isOn&&(this._pauseEvents(),this.$watched.css("height","auto")):this.isOn||this._events(),t}},{key:"_killswitch",value:function(){}},{key:"_reflow",value:function(){if(!this.options.equalizeOnStack&&this._isStacked())return this.$watched.css("height","auto"),!1;this.options.equalizeByRow?this.getHeightsByRow(this.applyHeightByRow.bind(this)):this.getHeights(this.applyHeight.bind(this))}},{key:"_isStacked",value:function(){return!this.$watched[0]||!this.$watched[1]||this.$watched[0].getBoundingClientRect().top!==this.$watched[1].getBoundingClientRect().top}},{key:"getHeights",value:function(t){for(var e=[],n=0,i=this.$watched.length;nn;if(this.scrollPos=n,n0&&"push"===this.options.transition&&(this.options.contentScroll=!1);var r=this.$element.attr("class").match(/\bin-canvas-for-(\w+)/);r&&2===r.length?this.options.inCanvasOn=r[1]:this.options.inCanvasOn&&this.$element.addClass("in-canvas-for-".concat(this.options.inCanvasOn)),this.options.inCanvasOn&&this._checkInCanvas(),this._removeContentClasses()}},{key:"_events",value:function(){var t=this;this.$element.off(".zf.trigger .zf.offCanvas").on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"keydown.zf.offCanvas":this._handleKeyboard.bind(this)}),!0===this.options.closeOnClick&&(this.options.contentOverlay?this.$overlay:this.$content).on({"click.zf.offCanvas":this.close.bind(this)}),this.options.inCanvasOn&&o()(window).on("changed.zf.mediaquery",(function(){t._checkInCanvas()}))}},{key:"_setMQChecker",value:function(){var t=this;this.onLoadListener=(0,s.onLoad)(o()(window),(function(){l.MediaQuery.atLeast(t.options.revealOn)&&t.reveal(!0)})),o()(window).on("changed.zf.mediaquery",(function(){l.MediaQuery.atLeast(t.options.revealOn)?t.reveal(!0):t.reveal(!1)}))}},{key:"_checkInCanvas",value:function(){this.isInCanvas=l.MediaQuery.atLeast(this.options.inCanvasOn),!0===this.isInCanvas&&this.close()}},{key:"_removeContentClasses",value:function(t){"boolean"!=typeof t?this.$content.removeClass(this.contentClasses.base.join(" ")):!1===t&&this.$content.removeClass("has-reveal-".concat(this.position))}},{key:"_addContentClasses",value:function(t){this._removeContentClasses(t),"boolean"!=typeof t?this.$content.addClass("has-transition-".concat(this.options.transition," has-position-").concat(this.position)):!0===t&&this.$content.addClass("has-reveal-".concat(this.position))}},{key:"_fixStickyElements",value:function(){this.$sticky.each((function(t,e){var n=o()(e);if("fixed"===n.css("position")){var i=parseInt(n.css("top"),10);n.data("offCanvasSticky",{top:i});var r=o()(document).scrollTop()+i;n.css({top:"".concat(r,"px"),width:"100%",transition:"none"})}}))}},{key:"_unfixStickyElements",value:function(){this.$sticky.each((function(t,e){var n=o()(e),i=n.data("offCanvasSticky");"object"===c(i)&&(n.css({top:"".concat(i.top,"px"),width:"",transition:""}),n.data("offCanvasSticky",""))}))}},{key:"reveal",value:function(t){t?(this.close(),this.isRevealed=!0,this.$element.attr("aria-hidden","false"),this.$element.off("open.zf.trigger toggle.zf.trigger"),this.$element.removeClass("is-closed")):(this.isRevealed=!1,this.$element.attr("aria-hidden","true"),this.$element.off("open.zf.trigger toggle.zf.trigger").on({"open.zf.trigger":this.open.bind(this),"toggle.zf.trigger":this.toggle.bind(this)}),this.$element.addClass("is-closed")),this._addContentClasses(t)}},{key:"_stopScrolling",value:function(){return!1}},{key:"_recordScrollable",value:function(t){this.lastY=t.touches[0].pageY}},{key:"_preventDefaultAtEdges",value:function(t){var e=this,n=t.data,i=e.lastY-t.touches[0].pageY;e.lastY=t.touches[0].pageY,n._canScroll(i,e)||t.preventDefault()}},{key:"_scrollboxTouchMoved",value:function(t){var e=this,n=t.data,i=e.closest("[data-off-canvas], [data-off-canvas-scrollbox-outer]"),o=e.lastY-t.touches[0].pageY;i.lastY=e.lastY=t.touches[0].pageY,t.stopPropagation(),n._canScroll(o,e)||(n._canScroll(o,i)?i.scrollTop+=o:t.preventDefault())}},{key:"_canScroll",value:function(t,e){var n=t<0,i=t>0,o=e.scrollTop>0,r=e.scrollTop1&&this.geoSync(),this.options.accessible&&this.$wrapper.attr("tabindex",0)}},{key:"_loadBullets",value:function(){this.$bullets=this.$element.find(".".concat(this.options.boxOfBullets)).find("button")}},{key:"geoSync",value:function(){var t=this;this.timer=new a.Timer(this.$element,{duration:this.options.timerDelay,infinite:!1},(function(){t.changeSlide(!0)})),this.timer.start()}},{key:"_prepareForOrbit",value:function(){this._setWrapperHeight()}},{key:"_setWrapperHeight",value:function(t){var e,n=0,i=0,r=this;this.$slides.each((function(){e=this.getBoundingClientRect().height,o()(this).attr("data-slide",i),/mui/g.test(o()(this)[0].className)||r.$slides.filter(".is-active")[0]===r.$slides.eq(i)[0]||o()(this).css({display:"none"}),n=e>n?e:n,i++})),i===this.$slides.length&&(this.$wrapper.css({height:n}),t&&t(n))}},{key:"_setSlideHeight",value:function(t){this.$slides.each((function(){o()(this).css("max-height",t)}))}},{key:"_events",value:function(){var t=this;this.$element.off(".resizeme.zf.trigger").on({"resizeme.zf.trigger":this._prepareForOrbit.bind(this)}),this.$slides.length>1&&(this.options.swipe&&this.$slides.off("swipeleft.zf.orbit swiperight.zf.orbit").on("swipeleft.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(!0)})).on("swiperight.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(!1)})),this.options.autoPlay&&(this.$slides.on("click.zf.orbit",(function(){t.$element.data("clickedOn",!t.$element.data("clickedOn")),t.timer[t.$element.data("clickedOn")?"pause":"start"]()})),this.options.pauseOnHover&&this.$element.on("mouseenter.zf.orbit",(function(){t.timer.pause()})).on("mouseleave.zf.orbit",(function(){t.$element.data("clickedOn")||t.timer.start()}))),this.options.navButtons&&this.$element.find(".".concat(this.options.nextClass,", .").concat(this.options.prevClass)).attr("tabindex",0).on("click.zf.orbit touchend.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(o()(this).hasClass(t.options.nextClass))})),this.options.bullets&&this.$bullets.on("click.zf.orbit touchend.zf.orbit",(function(){if(/is-active/g.test(this.className))return!1;var e=o()(this).data("slide"),n=e>t.$slides.filter(".is-active").data("slide"),i=t.$slides.eq(e);t.changeSlide(n,i,e)})),this.options.accessible&&this.$wrapper.add(this.$bullets).on("keydown.zf.orbit",(function(e){r.Keyboard.handleKey(e,"Orbit",{next:function(){t.changeSlide(!0)},previous:function(){t.changeSlide(!1)},handled:function(){o()(e.target).is(t.$bullets)&&t.$bullets.filter(".is-active").focus()}})})))}},{key:"_reset",value:function(){void 0!==this.$slides&&this.$slides.length>1&&(this.$element.off(".zf.orbit").find("*").off(".zf.orbit"),this.options.autoPlay&&this.timer.restart(),this.$slides.each((function(t){o()(t).removeClass("is-active is-active is-in").removeAttr("aria-live").hide()})),this.$slides.first().addClass("is-active").show(),this.$element.trigger("slidechange.zf.orbit",[this.$slides.first()]),this.options.bullets&&this._updateBullets(0))}},{key:"changeSlide",value:function(t,e,n){if(this.$slides){var i=this.$slides.filter(".is-active").eq(0);if(/mui/g.test(i[0].className))return!1;var o,r=this.$slides.first(),a=this.$slides.last(),l=t?"Right":"Left",u=t?"Left":"Right",c=this;(o=e||(t?this.options.infiniteWrap?i.next(".".concat(this.options.slideClass)).length?i.next(".".concat(this.options.slideClass)):r:i.next(".".concat(this.options.slideClass)):this.options.infiniteWrap?i.prev(".".concat(this.options.slideClass)).length?i.prev(".".concat(this.options.slideClass)):a:i.prev(".".concat(this.options.slideClass)))).length&&(this.$element.trigger("beforeslidechange.zf.orbit",[i,o]),this.options.bullets&&(n=n||this.$slides.index(o),this._updateBullets(n)),this.options.useMUI&&!this.$element.is(":hidden")?(s.Motion.animateIn(o.addClass("is-active"),this.options["animInFrom".concat(l)],(function(){o.css({display:"block"}).attr("aria-live","polite")})),s.Motion.animateOut(i.removeClass("is-active"),this.options["animOutTo".concat(u)],(function(){i.removeAttr("aria-live"),c.options.autoPlay&&!c.timer.isPaused&&c.timer.restart()}))):(i.removeClass("is-active is-in").removeAttr("aria-live").hide(),o.addClass("is-active is-in").attr("aria-live","polite").show(),this.options.autoPlay&&!this.timer.isPaused&&this.timer.restart()),this.$element.trigger("slidechange.zf.orbit",[o]))}}},{key:"_updateBullets",value:function(t){var e=this.$bullets.filter(".is-active"),n=this.$bullets.not(".is-active"),i=this.$bullets.eq(t);e.removeClass("is-active").blur(),i.addClass("is-active");var r=e.children("[data-slide-active-label]").last();if(!r.length){var s=e.children("span");n.toArray().map((function(t){return o()(t).children("span").length})).every((function(t){return t1?i[0]:"small",a=i.length>1?i[1]:i[0];null!==v[a]&&(t[s]=v[a])}this.rules=t}this._getAllOptions(),o().isEmptyObject(this.rules)||this._checkMediaQueries()}},{key:"_getAllOptions",value:function(){var t=this;for(var e in t.allOptions={},v)if(v.hasOwnProperty(e)){var n=v[e];try{var i=o()("
            "),r=new n.plugin(i,t.options);for(var s in r.options)if(r.options.hasOwnProperty(s)&&"zfPlugin"!==s){var a=r.options[s];t.allOptions[s]=a}r.destroy()}catch(t){console.warn("Warning: Problems getting Accordion/Tab options: ".concat(t))}}}},{key:"_events",value:function(){this._changedZfMediaQueryHandler=this._checkMediaQueries.bind(this),o()(window).on("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}},{key:"_checkMediaQueries",value:function(){var t,e=this;o().each(this.rules,(function(e){r.MediaQuery.atLeast(e)&&(t=e)})),t&&(this.currentPlugin instanceof this.rules[t].plugin||(o().each(v,(function(t,n){e.$element.removeClass(n.cssClass)})),this.$element.addClass(this.rules[t].cssClass),this.currentPlugin&&(!this.currentPlugin.$element.data("zfPlugin")&&this.storezfData&&this.currentPlugin.$element.data("zfPlugin",this.storezfData),this.currentPlugin.destroy()),this._handleMarkup(this.rules[t].cssClass),this.currentRule=this.rules[t],this.currentPlugin=new this.currentRule.plugin(this.$element,this.options),this.storezfData=this.currentPlugin.$element.data("zfPlugin")))}},{key:"_handleMarkup",value:function(t){var e=this,n="accordion",i=o()("[data-tabs-content="+this.$element.attr("id")+"]");if(i.length&&(n="tabs"),n!==t){var r=e.allOptions.linkClass?e.allOptions.linkClass:"tabs-title",a=e.allOptions.panelClass?e.allOptions.panelClass:"tabs-panel";this.$element.removeAttr("role");var l=this.$element.children("."+r+",[data-accordion-item]").removeClass(r).removeClass("accordion-item").removeAttr("data-accordion-item"),u=l.children("a").removeClass("accordion-title");if("tabs"===n?(i=i.children("."+a).removeClass(a).removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby")).children("a").removeAttr("role").removeAttr("aria-controls").removeAttr("aria-selected"):i=l.children("[data-tab-content]").removeClass("accordion-content"),i.css({display:"",visibility:""}),l.css({display:"",visibility:""}),"accordion"===t)i.each((function(t,n){o()(n).appendTo(l.get(t)).addClass("accordion-content").attr("data-tab-content","").removeClass("is-active").css({height:""}),o()("[data-tabs-content="+e.$element.attr("id")+"]").after('
            ').detach(),l.addClass("accordion-item").attr("data-accordion-item",""),u.addClass("accordion-title")}));else if("tabs"===t){var c=o()("[data-tabs-content="+e.$element.attr("id")+"]"),f=o()("#tabs-placeholder-"+e.$element.attr("id"));f.length?(c=o()('
            ').insertAfter(f).attr("data-tabs-content",e.$element.attr("id")),f.remove()):c=o()('
            ').insertAfter(e.$element).attr("data-tabs-content",e.$element.attr("id")),i.each((function(t,e){var n=o()(e).appendTo(c).addClass(a),i=u.get(t).hash.slice(1),r=o()(e).attr("id")||(0,s.GetYoDigits)(6,"accordion");i!==r&&(""!==i?o()(e).attr("id",i):(i=r,o()(e).attr("id",i),o()(u.get(t)).attr("href",o()(u.get(t)).attr("href").replace("#","")+"#"+i))),o()(l.get(t)).hasClass("is-active")&&n.addClass("is-active")})),l.addClass(r)}}}},{key:"open",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.open)return(t=this.currentRule).open.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"close",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.close)return(t=this.currentRule).close.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"toggle",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.toggle)return(t=this.currentRule).toggle.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"_destroy",value:function(){this.currentPlugin&&this.currentPlugin.destroy(),o()(window).off("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}}],n&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(a.Plugin);m.defaults={}},"./js/foundation.responsiveMenu.js":function(t,e,n){n.r(e),n.d(e,{ResponsiveMenu:function(){return m}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.core.plugin.js"),l=n("./js/foundation.dropdownMenu.js"),u=n("./js/foundation.drilldown.js"),c=n("./js/foundation.accordionMenu.js");function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function d(t,e){for(var n=0;n1?i[0]:"small",l=i.length>1?i[1]:i[0];null!==v[l]&&(t[a]=v[l])}this.rules=t}o().isEmptyObject(this.rules)||this._checkMediaQueries(),this.$element.attr("data-mutate",this.$element.attr("data-mutate")||(0,s.GetYoDigits)(6,"responsive-menu"))}},{key:"_events",value:function(){var t=this;o()(window).on("changed.zf.mediaquery",(function(){t._checkMediaQueries()}))}},{key:"_checkMediaQueries",value:function(){var t,e=this;o().each(this.rules,(function(e){r.MediaQuery.atLeast(e)&&(t=e)})),t&&(this.currentPlugin instanceof this.rules[t].plugin||(o().each(v,(function(t,n){e.$element.removeClass(n.cssClass)})),this.$element.addClass(this.rules[t].cssClass),this.currentPlugin&&this.currentPlugin.destroy(),this.currentPlugin=new this.rules[t].plugin(this.$element,{})))}},{key:"_destroy",value:function(){this.currentPlugin.destroy(),o()(window).off(".zf.ResponsiveMenu")}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(a.Plugin);m.defaults={}},"./js/foundation.responsiveToggle.js":function(t,e,n){n.r(e),n.d(e,{ResponsiveToggle:function(){return f}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.motion.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function l(t,e){for(var n=0;n").addClass("reveal-overlay"+t).appendTo(this.options.appendTo)}},{key:"_updatePosition",value:function(){var t,e=this.$element.outerWidth(),n=o()(window).width(),i=this.$element.outerHeight(),r=o()(window).height(),s=null;t="auto"===this.options.hOffset?parseInt((n-e)/2,10):parseInt(this.options.hOffset,10),"auto"===this.options.vOffset?s=i>r?parseInt(Math.min(100,r/10),10):parseInt((r-i)/4,10):null!==this.options.vOffset&&(s=parseInt(this.options.vOffset,10)),null!==s&&this.$element.css({top:s+"px"}),this.$overlay&&"auto"===this.options.hOffset||(this.$element.css({left:t+"px"}),this.$element.css({margin:"0px"}))}},{key:"_events",value:function(){var t=this,e=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":function(n,i){if(n.target===e.$element[0]||o()(n.target).parents("[data-closable]")[0]===i)return t.close.apply(t)},"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":function(){e._updatePosition()}}),this.options.closeOnClick&&this.options.overlay&&this.$overlay.off(".zf.reveal").on("click.zf.dropdown tap.zf.dropdown",(function(t){t.target!==e.$element[0]&&!o().contains(e.$element[0],t.target)&&o().contains(document,t.target)&&e.close()})),this.options.deepLink&&o()(window).on("hashchange.zf.reveal:".concat(this.id),this._handleState.bind(this))}},{key:"_handleState",value:function(){window.location.hash!=="#"+this.id||this.isActive?this.close():this.open()}},{key:"_disableScroll",value:function(t){t=t||o()(window).scrollTop(),o()(document).height()>o()(window).height()&&o()("html").css("top",-t)}},{key:"_enableScroll",value:function(t){t=t||parseInt(o()("html").css("top"),10),o()(document).height()>o()(window).height()&&(o()("html").css("top",""),o()(window).scrollTop(-t))}},{key:"open",value:function(){var t=this,e="#".concat(this.id);this.options.deepLink&&window.location.hash!==e&&(window.history.pushState?this.options.updateHistory?window.history.pushState({},"",e):window.history.replaceState({},"",e):window.location.hash=e),this.$activeAnchor=o()(document.activeElement).is(this.$anchor)?o()(document.activeElement):this.$anchor,this.isActive=!0,this.$element.css({visibility:"hidden"}).show().scrollTop(0),this.options.overlay&&this.$overlay.css({visibility:"hidden"}).show(),this._updatePosition(),this.$element.hide().css({visibility:""}),this.$overlay&&(this.$overlay.css({visibility:""}).hide(),this.$element.hasClass("fast")?this.$overlay.addClass("fast"):this.$element.hasClass("slow")&&this.$overlay.addClass("slow")),this.options.multipleOpened||this.$element.trigger("closeme.zf.reveal",this.id),0===o()(".reveal:visible").length&&this._disableScroll();var n=this;this.options.animationIn?(this.options.overlay&&u.Motion.animateIn(this.$overlay,"fade-in"),u.Motion.animateIn(this.$element,this.options.animationIn,(function(){t.$element&&(t.focusableElements=a.Keyboard.findFocusable(t.$element),n.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),n._addGlobalClasses(),a.Keyboard.trapFocus(n.$element))}))):(this.options.overlay&&this.$overlay.show(0),this.$element.show(this.options.showDelay)),this.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),a.Keyboard.trapFocus(this.$element),this._addGlobalClasses(),this._addGlobalListeners(),this.$element.trigger("open.zf.reveal")}},{key:"_addGlobalClasses",value:function(){var t=function(){o()("html").toggleClass("zf-has-scroll",!!(o()(document).height()>o()(window).height()))};this.$element.on("resizeme.zf.trigger.revealScrollbarListener",(function(){return t()})),t(),o()("html").addClass("is-reveal-open")}},{key:"_removeGlobalClasses",value:function(){this.$element.off("resizeme.zf.trigger.revealScrollbarListener"),o()("html").removeClass("is-reveal-open"),o()("html").removeClass("zf-has-scroll")}},{key:"_addGlobalListeners",value:function(){var t=this;this.$element&&(this.focusableElements=a.Keyboard.findFocusable(this.$element),this.options.overlay||!this.options.closeOnClick||this.options.fullScreen||o()("body").on("click.zf.dropdown tap.zf.dropdown",(function(e){e.target!==t.$element[0]&&!o().contains(t.$element[0],e.target)&&o().contains(document,e.target)&&t.close()})),this.options.closeOnEsc&&o()(window).on("keydown.zf.reveal",(function(e){a.Keyboard.handleKey(e,"Reveal",{close:function(){t.options.closeOnEsc&&t.close()}})})))}},{key:"close",value:function(){if(!this.isActive||!this.$element.is(":visible"))return!1;var t=this;function e(){var e=parseInt(o()("html").css("top"),10);0===o()(".reveal:visible").length&&t._removeGlobalClasses(),a.Keyboard.releaseFocus(t.$element),t.$element.attr("aria-hidden",!0),0===o()(".reveal:visible").length&&t._enableScroll(e),t.$element.trigger("closed.zf.reveal")}if(this.options.animationOut?(this.options.overlay&&u.Motion.animateOut(this.$overlay,"fade-out"),u.Motion.animateOut(this.$element,this.options.animationOut,e)):(this.$element.hide(this.options.hideDelay),this.options.overlay?this.$overlay.hide(0,e):e()),this.options.closeOnEsc&&o()(window).off("keydown.zf.reveal"),!this.options.overlay&&this.options.closeOnClick&&o()("body").off("click.zf.dropdown tap.zf.dropdown"),this.$element.off("keydown.zf.reveal"),this.options.resetOnClose&&this.$element.html(this.$element.html()),this.isActive=!1,t.options.deepLink&&window.location.hash==="#".concat(this.id))if(window.history.replaceState){var n=window.location.pathname+window.location.search;this.options.updateHistory?window.history.pushState({},"",n):window.history.replaceState("",document.title,n)}else window.location.hash="";this.$activeAnchor.focus()}},{key:"toggle",value:function(){this.isActive?this.close():this.open()}},{key:"_destroy",value:function(){this.options.overlay&&(this.$element.appendTo(o()(this.options.appendTo)),this.$overlay.hide().off().remove()),this.$element.hide().off(),this.$anchor.off(".zf"),o()(window).off(".zf.reveal:".concat(this.id)),this.onLoadListener&&o()(window).off(this.onLoadListener),0===o()(".reveal:visible").length&&this._removeGlobalClasses()}}])&&h(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),y}(r.Plugin);m.defaults={animationIn:"",animationOut:"",showDelay:0,hideDelay:0,closeOnClick:!0,closeOnEsc:!0,multipleOpened:!1,vOffset:"auto",hOffset:"auto",fullScreen:!1,overlay:!0,resetOnClose:!1,deepLink:!1,updateHistory:!1,appendTo:"body",additionalOverlayClasses:""}},"./js/foundation.slider.js":function(t,e,n){n.r(e),n.d(e,{Slider:function(){return v}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.util.motion.js"),a=n("./js/foundation.core.utils.js"),l=n("./js/foundation.core.plugin.js"),u=n("./js/foundation.util.touch.js"),c=n("./js/foundation.util.triggers.js");function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function d(t,e){for(var n=0;n1?this.inputs.eq(1):o()("#".concat(this.$handle2.attr("aria-controls"))),this.inputs[1]||(this.inputs=this.inputs.add(this.$input2)),this._setInitAttr(1)),this.setHandles(),this._events(),this.initialized=!0}},{key:"setHandles",value:function(){var t=this;this.handles[1]?this._setHandlePos(this.$handle,this.inputs.eq(0).val(),(function(){t._setHandlePos(t.$handle2,t.inputs.eq(1).val())})):this._setHandlePos(this.$handle,this.inputs.eq(0).val())}},{key:"_reflow",value:function(){this.setHandles()}},{key:"_pctOfBar",value:function(t){var e=m(t-this.options.start,this.options.end-this.options.start);switch(this.options.positionValueFunction){case"pow":e=this._logTransform(e);break;case"log":e=this._powTransform(e)}return e.toFixed(2)}},{key:"_value",value:function(t){switch(this.options.positionValueFunction){case"pow":t=this._powTransform(t);break;case"log":t=this._logTransform(t)}return this.options.vertical?parseFloat(this.options.end)+t*(this.options.start-this.options.end):(this.options.end-this.options.start)*t+parseFloat(this.options.start)}},{key:"_logTransform",value:function(t){return function(t,e){return Math.log(e)/Math.log(t)}(this.options.nonLinearBase,t*(this.options.nonLinearBase-1)+1)}},{key:"_powTransform",value:function(t){return(Math.pow(this.options.nonLinearBase,t)-1)/(this.options.nonLinearBase-1)}},{key:"_setHandlePos",value:function(t,e,n){if(!this.$element.hasClass(this.options.disabledClass)){(e=parseFloat(e))this.options.end&&(e=this.options.end);var i=this.options.doubleSided;if(i)if(0===this.handles.index(t)){var o=parseFloat(this.$handle2.attr("aria-valuenow"));e=e>=o?o-this.options.step:e}else{var r=parseFloat(this.$handle.attr("aria-valuenow"));e=e<=r?r+this.options.step:e}var a=this,l=this.options.vertical,u=l?"height":"width",c=l?"top":"left",f=t[0].getBoundingClientRect()[u],d=this.$element[0].getBoundingClientRect()[u],h=this._pctOfBar(e),p=(100*m((d-f)*h,d)).toFixed(this.options.decimal);e=parseFloat(e.toFixed(this.options.decimal));var v={};if(this._setValues(t,e),i){var y,g=0===this.handles.index(t),b=Math.floor(100*m(f,d));if(g)v[c]="".concat(p,"%"),y=parseFloat(this.$handle2[0].style[c])-p+b,n&&"function"==typeof n&&n();else{var w=parseFloat(this.$handle[0].style[c]);y=p-(isNaN(w)?(this.options.initialStart-this.options.start)/((this.options.end-this.options.start)/100):w)+b}v["min-".concat(u)]="".concat(y,"%")}var k=this.$element.data("dragging")?1e3/60:this.options.moveTime;(0,s.Move)(k,t,(function(){isNaN(p)?t.css(c,"".concat(100*h,"%")):t.css(c,"".concat(p,"%")),a.options.doubleSided?a.$fill.css(v):a.$fill.css(u,"".concat(100*h,"%"))})),this.initialized&&(this.$element.one("finished.zf.animate",(function(){a.$element.trigger("moved.zf.slider",[t])})),clearTimeout(a.timeout),a.timeout=setTimeout((function(){a.$element.trigger("changed.zf.slider",[t])}),a.options.changedDelay))}}},{key:"_setInitAttr",value:function(t){var e=0===t?this.options.initialStart:this.options.initialEnd,n=this.inputs.eq(t).attr("id")||(0,a.GetYoDigits)(6,"slider");this.inputs.eq(t).attr({id:n,max:this.options.end,min:this.options.start,step:this.options.step}),this.inputs.eq(t).val(e),this.handles.eq(t).attr({role:"slider","aria-controls":n,"aria-valuemax":this.options.end,"aria-valuemin":this.options.start,"aria-valuenow":e,"aria-orientation":this.options.vertical?"vertical":"horizontal",tabindex:0})}},{key:"_setValues",value:function(t,e){var n=this.options.doubleSided?this.handles.index(t):0;this.inputs.eq(n).val(e),t.attr("aria-valuenow",e)}},{key:"_handleEvent",value:function(t,e,n){var i;if(n)i=this._adjustValue(null,n);else{t.preventDefault();var r=this.options.vertical,s=r?"height":"width",l=r?"top":"left",u=r?t.pageY:t.pageX,c=this.$element[0].getBoundingClientRect()[s],f=r?o()(window).scrollTop():o()(window).scrollLeft(),d=this.$element.offset()[l];t.clientY===t.pageY&&(u+=f);var h,p=u-d,v=m(h=p<0?0:p>c?c:p,c);i=this._value(v),(0,a.rtl)()&&!this.options.vertical&&(i=this.options.end-i),i=this._adjustValue(null,i),e||(e=y(this.$handle,l,h,s)<=y(this.$handle2,l,h,s)?this.$handle:this.$handle2)}this._setHandlePos(e,i)}},{key:"_adjustValue",value:function(t,e){var n,i,o,r=this.options.step,s=parseFloat(r/2);return 0===(i=(n=t?parseFloat(t.attr("aria-valuenow")):e)>=0?n%r:r+n%r)?n:n=n>=(o=n-i)+s?o+r:o}},{key:"_events",value:function(){this._eventsForHandle(this.$handle),this.handles[1]&&this._eventsForHandle(this.$handle2)}},{key:"_eventsForHandle",value:function(t){var e,n=this,i=function(t){var e=n.inputs.index(o()(this));n._handleEvent(t,n.handles.eq(e),o()(this).val())};if(this.inputs.off("keyup.zf.slider").on("keyup.zf.slider",(function(t){13===t.keyCode&&i.call(this,t)})),this.inputs.off("change.zf.slider").on("change.zf.slider",i),this.options.clickSelect&&this.$element.off("click.zf.slider").on("click.zf.slider",(function(t){if(n.$element.data("dragging"))return!1;o()(t.target).is("[data-slider-handle]")||(n.options.doubleSided?n._handleEvent(t):n._handleEvent(t,n.$handle))})),this.options.draggable){this.handles.addTouch();var s=o()("body");t.off("mousedown.zf.slider").on("mousedown.zf.slider",(function(i){t.addClass("is-dragging"),n.$fill.addClass("is-dragging"),n.$element.data("dragging",!0),e=o()(i.currentTarget),s.on("mousemove.zf.slider",(function(t){t.preventDefault(),n._handleEvent(t,e)})).on("mouseup.zf.slider",(function(i){n._handleEvent(i,e),t.removeClass("is-dragging"),n.$fill.removeClass("is-dragging"),n.$element.data("dragging",!1),s.off("mousemove.zf.slider mouseup.zf.slider")}))})).on("selectstart.zf.slider touchmove.zf.slider",(function(t){t.preventDefault()}))}t.off("keydown.zf.slider").on("keydown.zf.slider",(function(e){var i,s=o()(this),a=(n.options.doubleSided&&n.handles.index(s),parseFloat(t.attr("aria-valuenow")));r.Keyboard.handleKey(e,"Slider",{decrease:function(){i=a-n.options.step},increase:function(){i=a+n.options.step},decreaseFast:function(){i=a-10*n.options.step},increaseFast:function(){i=a+10*n.options.step},min:function(){i=n.options.start},max:function(){i=n.options.end},handled:function(){e.preventDefault(),n._setHandlePos(s,i)}})}))}},{key:"_destroy",value:function(){this.handles.off(".zf.slider"),this.inputs.off(".zf.slider"),this.$element.off(".zf.slider"),clearTimeout(this.timeout)}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),g}(l.Plugin);function m(t,e){return t/e}function y(t,e,n,i){return Math.abs(t.position()[e]+t[i]()/2-n)}v.defaults={start:0,end:100,step:1,initialStart:0,initialEnd:100,binding:!1,clickSelect:!0,vertical:!1,draggable:!0,disabled:!1,doubleSided:!1,decimal:2,moveTime:200,disabledClass:"disabled",invertVertical:!1,changedDelay:500,nonLinearBase:5,positionValueFunction:"linear"}},"./js/foundation.smoothScroll.js":function(t,e,n){n.r(e),n.d(e,{SmoothScroll:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js");function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function a(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:h.defaults,n=arguments.length>2?arguments[2]:void 0,i=o()(t);if(!i.length)return!1;var r=Math.round(i.offset().top-e.threshold/2-e.offset);o()("html, body").stop(!0).animate({scrollTop:r},e.animationDuration,e.animationEasing,(function(){"function"==typeof n&&n()}))}}],(n=[{key:"_setup",value:function(t,e){this.$element=t,this.options=o().extend({},h.defaults,this.$element.data(),e),this.className="SmoothScroll",this._init()}},{key:"_init",value:function(){var t=this.$element[0].id||(0,r.GetYoDigits)(6,"smooth-scroll");this.$element.attr({id:t}),this._events()}},{key:"_events",value:function(){this._linkClickListener=this._handleLinkClick.bind(this),this.$element.on("click.zf.smoothScroll",this._linkClickListener),this.$element.on("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}},{key:"_handleLinkClick",value:function(t){var e=this;if(o()(t.currentTarget).is('a[href^="#"]')){var n=t.currentTarget.getAttribute("href");this._inTransition=!0,h.scrollToLoc(n,this.options,(function(){e._inTransition=!1})),t.preventDefault()}}},{key:"_destroy",value:function(){this.$element.off("click.zf.smoothScroll",this._linkClickListener),this.$element.off("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}}])&&a(e.prototype,n),i&&a(e,i),Object.defineProperty(e,"prototype",{writable:!1}),h}(n("./js/foundation.core.plugin.js").Plugin);c.defaults={animationDuration:500,animationEasing:"linear",threshold:50,offset:0}},"./js/foundation.sticky.js":function(t,e,n){n.r(e),n.d(e,{Sticky:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.mediaQuery.js"),l=n("./js/foundation.util.triggers.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n=n.topPoint))})),n._events(e.split("-").reverse().join("-"))}))}},{key:"_parsePoints",value:function(){for(var t=[""===this.options.topAnchor?1:this.options.topAnchor,""===this.options.btmAnchor?document.documentElement.scrollHeight:this.options.btmAnchor],e={},n=0,i=t.length;n=this.topPoint?e<=this.bottomPoint?this.isStuck||this._setSticky():this.isStuck&&this._removeSticky(!1):this.isStuck&&this._removeSticky(!0)}},{key:"_setSticky",value:function(){var t=this,e=this.options.stickTo,n="top"===e?"marginTop":"marginBottom",i="top"===e?"bottom":"top",o={};o[n]="".concat(this.options[n],"em"),o[e]=0,o[i]="auto",this.isStuck=!0,this.$element.removeClass("is-anchored is-at-".concat(i)).addClass("is-stuck is-at-".concat(e)).css(o).trigger("sticky.zf.stuckto:".concat(e)),this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",(function(){t._setSizes()}))}},{key:"_removeSticky",value:function(t){var e=this.options.stickTo,n="top"===e,i={},o=(this.points?this.points[1]-this.points[0]:this.anchorHeight)-this.elemHeight,r=t?"top":"bottom";i[n?"marginTop":"marginBottom"]=0,i.bottom="auto",i.top=t?0:o,this.isStuck=!1,this.$element.removeClass("is-stuck is-at-".concat(e)).addClass("is-anchored is-at-".concat(r)).css(i).trigger("sticky.zf.unstuckfrom:".concat(r))}},{key:"_setSizes",value:function(t){this.canStick=a.MediaQuery.is(this.options.stickyOn),this.canStick||t&&"function"==typeof t&&t();var e=this.$container[0].getBoundingClientRect().width,n=window.getComputedStyle(this.$container[0]),i=parseInt(n["padding-left"],10),o=parseInt(n["padding-right"],10);if(this.$anchor&&this.$anchor.length?this.anchorHeight=this.$anchor[0].getBoundingClientRect().height:this._parsePoints(),this.$element.css({"max-width":"".concat(e-i-o,"px")}),this.options.dynamicHeight||!this.containerHeight){var r=this.$element[0].getBoundingClientRect().height||this.containerHeight;r="none"===this.$element.css("display")?0:r,this.$container.css("height",r),this.containerHeight=r}if(this.elemHeight=this.containerHeight,!this.isStuck&&this.$element.hasClass("is-at-bottom")){var s=(this.points?this.points[1]-this.$container.offset().top:this.anchorHeight)-this.elemHeight;this.$element.css("top",s)}this._setBreakPoints(this.containerHeight,(function(){t&&"function"==typeof t&&t()}))}},{key:"_setBreakPoints",value:function(t,e){if(!this.canStick){if(!e||"function"!=typeof e)return!1;e()}var n=p(this.options.marginTop),i=p(this.options.marginBottom),o=this.points?this.points[0]:this.$anchor.offset().top,r=this.points?this.points[1]:o+this.anchorHeight,s=window.innerHeight;"top"===this.options.stickTo?(o-=n,r-=t+n):"bottom"===this.options.stickTo&&(o-=s-(t+i),r-=s-i),this.topPoint=o,this.bottomPoint=r,e&&"function"==typeof e&&e()}},{key:"_destroy",value:function(){this._removeSticky(!0),this.$element.removeClass("".concat(this.options.stickyClass," is-anchored is-at-top")).css({height:"",top:"",bottom:"","max-width":""}).off("resizeme.zf.trigger").off("mutateme.zf.trigger"),this.$anchor&&this.$anchor.length&&this.$anchor.off("change.zf.sticky"),this.scrollListener&&o()(window).off(this.scrollListener),this.onLoadListener&&o()(window).off(this.onLoadListener),this.wasWrapped?this.$element.unwrap():this.$container.removeClass(this.options.containerClass).css({height:""})}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(r.Plugin);function p(t){return parseInt(window.getComputedStyle(document.body,null).fontSize,10)*t}h.defaults={container:"
            ",stickTo:"top",anchor:"",topAnchor:"",btmAnchor:"",marginTop:1,marginBottom:1,stickyOn:"medium",stickyClass:"sticky",containerClass:"sticky-container",dynamicHeight:!0,checkEvery:-1}},"./js/foundation.tabs.js":function(t,e,n){n.r(e),n.d(e,{Tabs:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js"),l=n("./js/foundation.util.imageLoader.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n=0?e.slice(1):e,i=n&&o()("#".concat(n)),r=e&&t.$element.find('[href$="'.concat(e,'"],[data-tabs-target="').concat(n,'"]')).first();if(i.length&&r.length){if(i&&i.length&&r&&r.length?t.selectTab(i,!0):t._collapse(),t.options.deepLinkSmudge){var s=t.$element.offset();o()("html, body").animate({scrollTop:s.top-t.options.deepLinkSmudgeOffset},t.options.deepLinkSmudgeDelay)}t.$element.trigger("deeplink.zf.tabs",[r,i])}},this.options.deepLink&&this._checkDeepLink(),this._events(),this._isInitializing=!1}},{key:"_events",value:function(){this._addKeyHandler(),this._addClickHandler(),this._setHeightMqHandler=null,this.options.matchHeight&&(this._setHeightMqHandler=this._setHeight.bind(this),o()(window).on("changed.zf.mediaquery",this._setHeightMqHandler)),this.options.deepLink&&o()(window).on("hashchange",this._checkDeepLink)}},{key:"_addClickHandler",value:function(){var t=this;this.$element.off("click.zf.tabs").on("click.zf.tabs",".".concat(this.options.linkClass),(function(e){e.preventDefault(),t._handleTabChange(o()(this))}))}},{key:"_addKeyHandler",value:function(){var t=this;this.$tabTitles.off("keydown.zf.tabs").on("keydown.zf.tabs",(function(e){if(9!==e.which){var n,i,r=o()(this),s=r.parent("ul").children("li");s.each((function(e){o()(this).is(r)&&(t.options.wrapOnKeys?(n=0===e?s.last():s.eq(e-1),i=e===s.length-1?s.first():s.eq(e+1)):(n=s.eq(Math.max(0,e-1)),i=s.eq(Math.min(e+1,s.length-1))))})),a.Keyboard.handleKey(e,"Tabs",{open:function(){r.find('[role="tab"]').focus(),t._handleTabChange(r)},previous:function(){n.find('[role="tab"]').focus(),t._handleTabChange(n)},next:function(){i.find('[role="tab"]').focus(),t._handleTabChange(i)},handled:function(){e.preventDefault()}})}}))}},{key:"_handleTabChange",value:function(t,e){if(t.hasClass("".concat(this.options.linkActiveClass)))this.options.activeCollapse&&this._collapse();else{var n=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass)),i=t.find('[role="tab"]'),o=i.attr("data-tabs-target"),r=o&&o.length?"#".concat(o):i[0].hash,s=this.$tabContent.find(r);this._collapseTab(n),this._openTab(t),this.options.deepLink&&!e&&(this.options.updateHistory?history.pushState({},"",r):history.replaceState({},"",r)),this.$element.trigger("change.zf.tabs",[t,s]),s.find("[data-mutate]").trigger("mutateme.zf.trigger")}}},{key:"_openTab",value:function(t){var e=t.find('[role="tab"]'),n=e.attr("data-tabs-target")||e[0].hash.slice(1),i=this.$tabContent.find("#".concat(n));t.addClass("".concat(this.options.linkActiveClass)),e.attr({"aria-selected":"true",tabindex:"0"}),i.addClass("".concat(this.options.panelActiveClass)).removeAttr("aria-hidden")}},{key:"_collapseTab",value:function(t){var e=t.removeClass("".concat(this.options.linkActiveClass)).find('[role="tab"]').attr({"aria-selected":"false",tabindex:-1});o()("#".concat(e.attr("aria-controls"))).removeClass("".concat(this.options.panelActiveClass)).attr({"aria-hidden":"true"})}},{key:"_collapse",value:function(){var t=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass));t.length&&(this._collapseTab(t),this.$element.trigger("collapse.zf.tabs",[t]))}},{key:"selectTab",value:function(t,e){var n,i;(n="object"===u(t)?t[0].id:t).indexOf("#")<0?i="#".concat(n):(i=n,n=n.slice(1));var o=this.$tabTitles.has('[href$="'.concat(i,'"],[data-tabs-target="').concat(n,'"]')).first();this._handleTabChange(o,e)}},{key:"_setHeight",value:function(){var t=0,e=this;this.$tabContent&&this.$tabContent.find(".".concat(this.options.panelClass)).css("min-height","").each((function(){var n=o()(this),i=n.hasClass("".concat(e.options.panelActiveClass));i||n.css({visibility:"hidden",display:"block"});var r=this.getBoundingClientRect().height;i||n.css({visibility:"",display:""}),t=r>t?r:t})).css("min-height","".concat(t,"px"))}},{key:"_destroy",value:function(){this.$element.find(".".concat(this.options.linkClass)).off(".zf.tabs").hide().end().find(".".concat(this.options.panelClass)).hide(),this.options.matchHeight&&null!=this._setHeightMqHandler&&o()(window).off("changed.zf.mediaquery",this._setHeightMqHandler),this.options.deepLink&&o()(window).off("hashchange",this._checkDeepLink),this.onLoadListener&&o()(window).off(this.onLoadListener)}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),p}(r.Plugin);h.defaults={deepLink:!1,deepLinkSmudge:!1,deepLinkSmudgeDelay:300,deepLinkSmudgeOffset:0,updateHistory:!1,autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,activeCollapse:!1,linkClass:"tabs-title",linkActiveClass:"is-active",panelClass:"tabs-panel",panelActiveClass:"is-active"}},"./js/foundation.toggler.js":function(t,e,n){n.r(e),n.d(e,{Toggler:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.motion.js"),s=n("./js/foundation.core.plugin.js"),a=n("./js/foundation.core.utils.js"),l=n("./js/foundation.util.triggers.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n").addClass(e).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:t})}},{key:"_setPosition",value:function(){c(d(v.prototype),"_setPosition",this).call(this,this.$element,this.template)}},{key:"show",value:function(){if("all"!==this.options.showOn&&!s.MediaQuery.is(this.options.showOn))return!1;this.template.css("visibility","hidden").show(),this._setPosition(),this.template.removeClass("top bottom left right").addClass(this.position),this.template.removeClass("align-top align-bottom align-left align-right align-center").addClass("align-"+this.alignment),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),this.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,(function(){})),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,(function(){t.isActive=!1,t.isClick=!1})),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var t=this,e="ontouchstart"in window||void 0!==window.ontouchstart,n=!1;e&&this.options.disableForTouch||(this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",(function(){t.isActive||(t.timeout=setTimeout((function(){t.show()}),t.options.hoverDelay))})).on("mouseleave.zf.tooltip",(0,r.ignoreMousedisappear)((function(){clearTimeout(t.timeout),(!n||t.isClick&&!t.options.clickOpen)&&t.hide()}))),e&&this.$element.on("tap.zf.tooltip touchend.zf.tooltip",(function(){t.isActive?t.hide():t.show()})),this.options.clickOpen?this.$element.on("mousedown.zf.tooltip",(function(){t.isClick||(t.isClick=!0,!t.options.disableHover&&t.$element.attr("tabindex")||t.isActive||t.show())})):this.$element.on("mousedown.zf.tooltip",(function(){t.isClick=!0})),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",(function(){if(n=!0,t.isClick)return t.options.clickOpen||(n=!1),!1;t.show()})).on("focusout.zf.tooltip",(function(){n=!1,t.isClick=!1,t.hide()})).on("resizeme.zf.trigger",(function(){t.isActive&&t._setPosition()})))}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"_destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tooltip").removeClass(this.options.triggerClass).removeClass("top right left bottom").removeAttr("aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box"),this.template.remove()}}])&&u(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(n("./js/foundation.positionable.js").Positionable);h.defaults={hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,disableForTouch:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,position:"auto",alignment:"auto",allowOverlap:!1,allowBottomOverlap:!1,vOffset:0,hOffset:0,tooltipHeight:14,tooltipWidth:12,allowHtml:!1}},"./js/foundation.util.box.js":function(t,e,n){n.r(e),n.d(e,{Box:function(){return i}});var i={ImNotTouchingYou:function(t,e,n,i,r){return 0===o(t,e,n,i,r)},OverlapArea:o,GetDimensions:r,GetExplicitOffsets:function(t,e,n,i,o,s,a){var l,u,c=r(t),f=e?r(e):null;if(null!==f){switch(n){case"top":l=f.offset.top-(c.height+o);break;case"bottom":l=f.offset.top+f.height+o;break;case"left":u=f.offset.left-(c.width+s);break;case"right":u=f.offset.left+f.width+s}switch(n){case"top":case"bottom":switch(i){case"left":u=f.offset.left+s;break;case"right":u=f.offset.left-c.width+f.width-s;break;case"center":u=a?s:f.offset.left+f.width/2-c.width/2+s}break;case"right":case"left":switch(i){case"bottom":l=f.offset.top-o+f.height-c.height;break;case"top":l=f.offset.top+o;break;case"center":l=f.offset.top+o+f.height/2-c.height/2}}}return{top:l,left:u}}};function o(t,e,n,i,o){var s,a,l,u,c=r(t);if(e){var f=r(e);a=f.height+f.offset.top-(c.offset.top+c.height),s=c.offset.top-f.offset.top,l=c.offset.left-f.offset.left,u=f.width+f.offset.left-(c.offset.left+c.width)}else a=c.windowDims.height+c.windowDims.offset.top-(c.offset.top+c.height),s=c.offset.top-c.windowDims.offset.top,l=c.offset.left-c.windowDims.offset.left,u=c.windowDims.width-(c.offset.left+c.width);return a=o?0:Math.min(a,0),s=Math.min(s,0),l=Math.min(l,0),u=Math.min(u,0),n?l+u:i?s+a:Math.sqrt(s*s+a*a+l*l+u*u)}function r(t){if((t=t.length?t[0]:t)===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var e=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),i=document.body.getBoundingClientRect(),o=window.pageYOffset,r=window.pageXOffset;return{width:e.width,height:e.height,offset:{top:e.top+o,left:e.left+r},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+r}},windowDims:{width:i.width,height:i.height,offset:{top:o,left:r}}}}},"./js/foundation.util.imageLoader.js":function(t,e,n){n.r(e),n.d(e,{onImagesLoaded:function(){return r}});var i=n("jquery"),o=n.n(i);function r(t,e){var n=t.length;function i(){0==--n&&e()}0===n&&e(),t.each((function(){if(this.complete&&void 0!==this.naturalWidth)i();else{var t=new Image,e="load.zf.images error.zf.images";o()(t).one(e,(function t(){o()(this).off(e,t),i()})),t.src=o()(this).attr("src")}}))}},"./js/foundation.util.keyboard.js":function(t,e,n){n.r(e),n.d(e,{Keyboard:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",35:"END",36:"HOME",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},a={};function l(t){return!!t&&t.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter((function(){return!(!o()(this).is(":visible")||o()(this).attr("tabindex")<0)})).sort((function(t,e){if(o()(t).attr("tabindex")===o()(e).attr("tabindex"))return 0;var n=parseInt(o()(t).attr("tabindex"),10),i=parseInt(o()(e).attr("tabindex"),10);return void 0===o()(t).attr("tabindex")&&i>0?1:void 0===o()(e).attr("tabindex")&&n>0?-1:0===n&&i>0?1:0===i&&n>0||ni?1:void 0}))}function u(t){var e=s[t.which||t.keyCode]||String.fromCharCode(t.which).toUpperCase();return e=e.replace(/\W+/,""),t.shiftKey&&(e="SHIFT_".concat(e)),t.ctrlKey&&(e="CTRL_".concat(e)),t.altKey&&(e="ALT_".concat(e)),e.replace(/_$/,"")}var c={keys:function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[t[n]]=t[n]);return e}(s),parseKey:u,handleKey:function(t,e,n){var i,s=a[e],l=this.parseKey(t);if(!s)return console.warn("Component not defined!");if(!0!==t.zfIsKeyHandled)if((i=n[(void 0===s.ltr?s:(0,r.rtl)()?o().extend({},s.ltr,s.rtl):o().extend({},s.rtl,s.ltr))[l]])&&"function"==typeof i){var u=i.apply();t.zfIsKeyHandled=!0,(n.handled||"function"==typeof n.handled)&&n.handled(u)}else(n.unhandled||"function"==typeof n.unhandled)&&n.unhandled()},findFocusable:l,register:function(t,e){a[t]=e},trapFocus:function(t){var e=l(t),n=e.eq(0),i=e.eq(-1);t.on("keydown.zf.trapfocus",(function(t){t.target===i[0]&&"TAB"===u(t)?(t.preventDefault(),n.focus()):t.target===n[0]&&"SHIFT_TAB"===u(t)&&(t.preventDefault(),i.focus())}))},releaseFocus:function(t){t.off("keydown.zf.trapfocus")}}},"./js/foundation.util.mediaQuery.js":function(t,e,n){n.r(e),n.d(e,{MediaQuery:function(){return a}});var i=n("jquery"),o=n.n(i);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n').appendTo(document.head);var t,e,n,i=o()(".foundation-mq").css("font-family");for(var r in n=void 0,n={},t="string"!=typeof(e=i)?n:(e=e.trim().slice(1,-1))?(n=e.split("&").reduce((function(t,e){var n=e.replace(/\+/g," ").split("="),i=n[0],o=n[1];return i=decodeURIComponent(i),o=void 0===o?null:decodeURIComponent(o),t.hasOwnProperty(i)?Array.isArray(t[i])?t[i].push(o):t[i]=[t[i],o]:t[i]=o,t}),{}),n):n,this.queries=[],t)t.hasOwnProperty(r)&&this.queries.push({name:r,value:"only screen and (min-width: ".concat(t[r],")")});this.current=this._getCurrentSize(),this._watcher()},_reInit:function(){this.isInitialized=!1,this._init()},atLeast:function(t){var e=this.get(t);return!!e&&window.matchMedia(e).matches},only:function(t){return t===this._getCurrentSize()},upTo:function(t){var e=this.next(t);return!e||!this.atLeast(e)},is:function(t){var e,n,i=(e=t.trim().split(" ").filter((function(t){return!!t.length})),n=2,function(t){if(Array.isArray(t))return t}(e)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,o,r,s,a=[],l=!0,u=!1;try{if(r=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=r.call(n)).done)&&(a.push(i.value),a.length!==e);l=!0);}catch(t){u=!0,o=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(u)throw o}}return a}}(e,n)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(t,e):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=i[0],r=i[1],a=void 0===r?"":r;if("only"===a)return this.only(o);if(!a||"up"===a)return this.atLeast(o);if("down"===a)return this.upTo(o);throw new Error('\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like " ", got "'.concat(t,'".\n '))},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var n=this.queries[e];if(t===n.name)return n.value}return null},next:function(t){var e=this,n=this.queries.findIndex((function(n){return e._getQueryName(n)===t}));if(-1===n)throw new Error('\n Unknown breakpoint "'.concat(t,'" passed to MediaQuery.next().\n Ensure it is present in your Sass "$breakpoints" setting.\n '));var i=this.queries[n+1];return i?i.name:null},_getQueryName:function(t){if("string"==typeof t)return t;if("object"===r(t))return t.name;throw new TypeError('\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got "'.concat(t,'" (').concat(r(t),")\n "))},_getCurrentSize:function(){for(var t,e=0;e1&&void 0!==arguments[1]?arguments[1]:"zf";t.attr("role","menubar"),t.find("a").attr({role:"menuitem"});var n=t.find("li").attr({role:"none"}),i="is-".concat(e,"-submenu"),r="".concat(i,"-item"),s="is-".concat(e,"-submenu-parent"),a="accordion"!==e;n.each((function(){var t=o()(this),n=t.children("ul");if(n.length){if(t.addClass(s),a){var l=t.children("a:first");l.attr({"aria-haspopup":!0,"aria-label":l.attr("aria-label")||l.text()}),"drilldown"===e&&t.attr({"aria-expanded":!1})}n.addClass("submenu ".concat(i)).attr({"data-submenu":"",role:"menubar"}),"drilldown"===e&&n.attr({"aria-hidden":!0})}t.parent("[data-submenu]").length&&t.addClass("is-submenu-item ".concat(r))}))},Burn:function(t,e){var n="is-".concat(e,"-submenu"),i="".concat(n,"-item"),o="is-".concat(e,"-submenu-parent");t.find(">li, > li > ul, .menu, .menu > li, [data-submenu] > li").removeClass("".concat(n," ").concat(i," ").concat(o," is-submenu-item submenu is-active")).removeAttr("data-submenu").css("display","")}}},"./js/foundation.util.timer.js":function(t,e,n){function i(t,e,n){var i,o,r=this,s=e.duration,a=Object.keys(t.data())[0]||"timer",l=-1;this.isPaused=!1,this.restart=function(){l=-1,clearTimeout(o),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(o),l=l<=0?s:l,t.data("paused",!1),i=Date.now(),o=setTimeout((function(){e.infinite&&r.restart(),n&&"function"==typeof n&&n()}),l),t.trigger("timerstart.zf.".concat(a))},this.pause=function(){this.isPaused=!0,clearTimeout(o),t.data("paused",!0);var e=Date.now();l-=e-i,t.trigger("timerpaused.zf.".concat(a))}}n.r(e),n.d(e,{Timer:function(){return i}})},"./js/foundation.util.touch.js":function(t,e,n){n.r(e),n.d(e,{Touch:function(){return f}});var i=n("jquery"),o=n.n(i);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function s(t,e){for(var n=0;n=o().spotSwipe.moveThreshold&&u<=o().spotSwipe.timeThreshold&&(e=i>0?"left":"right"),e&&(t.preventDefault(),p.apply(this,arguments),o()(this).trigger(o().Event("swipe",Object.assign({},t)),e).trigger(o().Event("swipe".concat(e),Object.assign({},t))))}}function m(t){1===t.touches.length&&(a=t.touches[0].pageX,c=t,d=!0,h=!1,l=(new Date).getTime(),this.addEventListener("touchmove",v,{passive:!0===o().spotSwipe.preventDefault}),this.addEventListener("touchend",p,!1))}function y(){this.addEventListener&&this.addEventListener("touchstart",m,{passive:!0})}var g=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.version="1.0.0",this.enabled="ontouchstart"in document.documentElement,this.preventDefault=!1,this.moveThreshold=75,this.timeThreshold=200,this._init()}var e,n;return e=t,(n=[{key:"_init",value:function(){o().event.special.swipe={setup:y},o().event.special.tap={setup:y},o().each(["left","up","down","right"],(function(){o().event.special["swipe".concat(this)]={setup:function(){o()(this).on("swipe",o().noop)}}}))}}])&&s(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();f.setupSpotSwipe=function(){o().spotSwipe=new g(o())},f.setupTouchHandler=function(){o().fn.addTouch=function(){this.each((function(e,n){o()(n).bind("touchstart touchmove touchend touchcancel",(function(e){t(e)}))}));var t=function(t){var e,n=t.changedTouches[0],i={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"}[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=new window.MouseEvent(i,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(e)}}},f.init=function(){void 0===o().spotSwipe&&(f.setupSpotSwipe(o()),f.setupTouchHandler(o()))}},"./js/foundation.util.triggers.js":function(t,e,n){n.r(e),n.d(e,{Triggers:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.motion.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var l=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e0&&e-1 in t)}function S(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}C.fn=C.prototype={jquery:_,constructor:C,length:0,toArray:function(){return a.call(this)},get:function(t){return null==t?a.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=C.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return C.each(this,t)},map:function(t){return this.pushStack(C.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return this.pushStack(a.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(C.grep(this,(function(t,e){return(e+1)%2})))},odd:function(){return this.pushStack(C.grep(this,(function(t,e){return e%2})))},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n+~]|"+P+")"+P+"*"),F=new RegExp(P+"|>"),N=new RegExp(M),B=new RegExp("^"+A+"$"),W={ID:new RegExp("^#("+A+")"),CLASS:new RegExp("^\\.("+A+")"),TAG:new RegExp("^("+A+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+M),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:new RegExp("^(?:"+x+")$","i"),needsContext:new RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},Q=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,G=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Y=/[+~]/,U=new RegExp("\\\\[\\da-fA-F]{1,6}"+P+"?|\\\\([^\\r\\n\\f])","g"),V=function(t,e){var n="0x"+t.slice(1)-65536;return e||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},X=function(){lt()},Z=dt((function(t){return!0===t.disabled&&S(t,"fieldset")}),{dir:"parentNode",next:"legend"});try{v.apply(r=a.call(D.childNodes),D.childNodes),r[D.childNodes.length].nodeType}catch(t){v={apply:function(t,e){L.apply(t,a.call(e))},call:function(t){L.apply(t,a.call(arguments,1))}}}function J(t,e,n,i){var o,r,s,a,u,c,h,p=e&&e.ownerDocument,g=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==g&&9!==g&&11!==g)return n;if(!i&&(lt(e),e=e||l,f)){if(11!==g&&(u=G.exec(t)))if(o=u[1]){if(9===g){if(!(s=e.getElementById(o)))return n;if(s.id===o)return v.call(n,s),n}else if(p&&(s=p.getElementById(o))&&J.contains(e,s)&&s.id===o)return v.call(n,s),n}else{if(u[2])return v.apply(n,e.getElementsByTagName(t)),n;if((o=u[3])&&e.getElementsByClassName)return v.apply(n,e.getElementsByClassName(o)),n}if(!(_[t+" "]||d&&d.test(t))){if(h=t,p=e,1===g&&(F.test(t)||I.test(t))){for((p=Y.test(t)&&at(e.parentNode)||e)==e&&m.scope||((a=e.getAttribute("id"))?a=C.escapeSelector(a):e.setAttribute("id",a=y)),r=(c=ct(t)).length;r--;)c[r]=(a?"#"+a:":scope")+" "+ft(c[r]);h=c.join(",")}try{return v.apply(n,p.querySelectorAll(h)),n}catch(e){_(t,!0)}finally{a===y&&e.removeAttribute("id")}}}return gt(t.replace(z,"$1"),e,n,i)}function tt(){var t=[];return function n(i,o){return t.push(i+" ")>e.cacheLength&&delete n[t.shift()],n[i+" "]=o}}function et(t){return t[y]=!0,t}function nt(t){var e=l.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function it(t){return function(e){return S(e,"input")&&e.type===t}}function ot(t){return function(e){return(S(e,"input")||S(e,"button"))&&e.type===t}}function rt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&Z(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function st(t){return et((function(e){return e=+e,et((function(n,i){for(var o,r=t([],n.length,e),s=r.length;s--;)n[o=r[s]]&&(n[o]=!(i[o]=n[o]))}))}))}function at(t){return t&&void 0!==t.getElementsByTagName&&t}function lt(t){var n,i=t?t.ownerDocument||t:D;return i!=l&&9===i.nodeType&&i.documentElement?(u=(l=i).documentElement,f=!C.isXMLDoc(l),p=u.matches||u.webkitMatchesSelector||u.msMatchesSelector,u.msMatchesSelector&&D!=l&&(n=l.defaultView)&&n.top!==n&&n.addEventListener("unload",X),m.getById=nt((function(t){return u.appendChild(t).id=C.expando,!l.getElementsByName||!l.getElementsByName(C.expando).length})),m.disconnectedMatch=nt((function(t){return p.call(t,"*")})),m.scope=nt((function(){return l.querySelectorAll(":scope")})),m.cssHas=nt((function(){try{return l.querySelector(":has(*,:jqfake)"),!1}catch(t){return!0}})),m.getById?(e.filter.ID=function(t){var e=t.replace(U,V);return function(t){return t.getAttribute("id")===e}},e.find.ID=function(t,e){if(void 0!==e.getElementById&&f){var n=e.getElementById(t);return n?[n]:[]}}):(e.filter.ID=function(t){var e=t.replace(U,V);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},e.find.ID=function(t,e){if(void 0!==e.getElementById&&f){var n,i,o,r=e.getElementById(t);if(r){if((n=r.getAttributeNode("id"))&&n.value===t)return[r];for(o=e.getElementsByName(t),i=0;r=o[i++];)if((n=r.getAttributeNode("id"))&&n.value===t)return[r]}return[]}}),e.find.TAG=function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):e.querySelectorAll(t)},e.find.CLASS=function(t,e){if(void 0!==e.getElementsByClassName&&f)return e.getElementsByClassName(t)},d=[],nt((function(t){var e;u.appendChild(t).innerHTML="",t.querySelectorAll("[selected]").length||d.push("\\["+P+"*(?:value|"+x+")"),t.querySelectorAll("[id~="+y+"-]").length||d.push("~="),t.querySelectorAll("a#"+y+"+*").length||d.push(".#.+[+~]"),t.querySelectorAll(":checked").length||d.push(":checked"),(e=l.createElement("input")).setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),u.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(e=l.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||d.push("\\["+P+"*name"+P+"*="+P+"*(?:''|\"\")")})),m.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),$=function(t,e){if(t===e)return s=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(1&(n=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!m.sortDetached&&e.compareDocumentPosition(t)===n?t===l||t.ownerDocument==D&&J.contains(D,t)?-1:e===l||e.ownerDocument==D&&J.contains(D,e)?1:o?c.call(o,t)-c.call(o,e):0:4&n?-1:1)},l):l}for(t in J.matches=function(t,e){return J(t,null,null,e)},J.matchesSelector=function(t,e){if(lt(t),f&&!_[e+" "]&&(!d||!d.test(e)))try{var n=p.call(t,e);if(n||m.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){_(e,!0)}return J(e,l,null,[t]).length>0},J.contains=function(t,e){return(t.ownerDocument||t)!=l&<(t),C.contains(t,e)},J.attr=function(t,n){(t.ownerDocument||t)!=l&<(t);var i=e.attrHandle[n.toLowerCase()],o=i&&h.call(e.attrHandle,n.toLowerCase())?i(t,n,!f):void 0;return void 0!==o?o:t.getAttribute(n)},J.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},C.uniqueSort=function(t){var e,n=[],i=0,r=0;if(s=!m.sortStable,o=!m.sortStable&&a.call(t,0),T.call(t,$),s){for(;e=t[r++];)e===t[r]&&(i=n.push(r));for(;i--;)E.call(t,n[i],1)}return o=null,t},C.fn.uniqueSort=function(){return this.pushStack(C.uniqueSort(a.apply(this)))},e=C.expr={cacheLength:50,createPseudo:et,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(U,V),t[3]=(t[3]||t[4]||t[5]||"").replace(U,V),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||J.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&J.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return W.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&N.test(n)&&(e=ct(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(U,V).toLowerCase();return"*"===t?function(){return!0}:function(t){return S(t,e)}},CLASS:function(t){var e=w[t+" "];return e||(e=new RegExp("(^|"+P+")"+t+"("+P+"|$)"))&&w(t,(function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")}))},ATTR:function(t,e,n){return function(i){var o=J.attr(i,t);return null==o?"!="===e:!e||(o+="","="===e?o===n:"!="===e?o!==n:"^="===e?n&&0===o.indexOf(n):"*="===e?n&&o.indexOf(n)>-1:"$="===e?n&&o.slice(-n.length)===n:"~="===e?(" "+o.replace(H," ")+" ").indexOf(n)>-1:"|="===e&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,n,i,o){var r="nth"!==t.slice(0,3),s="last"!==t.slice(-4),a="of-type"===e;return 1===i&&0===o?function(t){return!!t.parentNode}:function(e,n,l){var u,c,f,d,h,p=r!==s?"nextSibling":"previousSibling",v=e.parentNode,m=a&&e.nodeName.toLowerCase(),b=!l&&!a,w=!1;if(v){if(r){for(;p;){for(f=e;f=f[p];)if(a?S(f,m):1===f.nodeType)return!1;h=p="only"===t&&!h&&"nextSibling"}return!0}if(h=[s?v.firstChild:v.lastChild],s&&b){for(w=(d=(u=(c=v[y]||(v[y]={}))[t]||[])[0]===g&&u[1])&&u[2],f=d&&v.childNodes[d];f=++d&&f&&f[p]||(w=d=0)||h.pop();)if(1===f.nodeType&&++w&&f===e){c[t]=[g,d,w];break}}else if(b&&(w=d=(u=(c=e[y]||(e[y]={}))[t]||[])[0]===g&&u[1]),!1===w)for(;(f=++d&&f&&f[p]||(w=d=0)||h.pop())&&(!(a?S(f,m):1===f.nodeType)||!++w||(b&&((c=f[y]||(f[y]={}))[t]=[g,w]),f!==e)););return(w-=o)===i||w%i==0&&w/i>=0}}},PSEUDO:function(t,n){var i,o=e.pseudos[t]||e.setFilters[t.toLowerCase()]||J.error("unsupported pseudo: "+t);return o[y]?o(n):o.length>1?(i=[t,t,"",n],e.setFilters.hasOwnProperty(t.toLowerCase())?et((function(t,e){for(var i,r=o(t,n),s=r.length;s--;)t[i=c.call(t,r[s])]=!(e[i]=r[s])})):function(t){return o(t,0,i)}):o}},pseudos:{not:et((function(t){var e=[],n=[],i=yt(t.replace(z,"$1"));return i[y]?et((function(t,e,n,o){for(var r,s=i(t,null,o,[]),a=t.length;a--;)(r=s[a])&&(t[a]=!(e[a]=r))})):function(t,o,r){return e[0]=t,i(e,null,r,n),e[0]=null,!n.pop()}})),has:et((function(t){return function(e){return J(t,e).length>0}})),contains:et((function(t){return t=t.replace(U,V),function(e){return(e.textContent||C.text(e)).indexOf(t)>-1}})),lang:et((function(t){return B.test(t||"")||J.error("unsupported lang: "+t),t=t.replace(U,V).toLowerCase(),function(e){var n;do{if(n=f?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}})),target:function(t){var e=i.location&&i.location.hash;return e&&e.slice(1)===t.id},root:function(t){return t===u},focus:function(t){return t===function(){try{return l.activeElement}catch(t){}}()&&l.hasFocus()&&!!(t.type||t.href||~t.tabIndex)},enabled:rt(!1),disabled:rt(!0),checked:function(t){return S(t,"input")&&!!t.checked||S(t,"option")&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!e.pseudos.empty(t)},header:function(t){return K.test(t.nodeName)},input:function(t){return Q.test(t.nodeName)},button:function(t){return S(t,"input")&&"button"===t.type||S(t,"button")},text:function(t){var e;return S(t,"input")&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:st((function(){return[0]})),last:st((function(t,e){return[e-1]})),eq:st((function(t,e,n){return[n<0?n+e:n]})),even:st((function(t,e){for(var n=0;ne?e:n;--i>=0;)t.push(i);return t})),gt:st((function(t,e,n){for(var i=n<0?n+e:n;++i1?function(e,n,i){for(var o=t.length;o--;)if(!t[o](e,n,i))return!1;return!0}:t[0]}function pt(t,e,n,i,o){for(var r,s=[],a=0,l=t.length,u=null!=e;a-1&&(r[u]=!(s[u]=d))}}else h=pt(h===s?h.splice(y,h.length):h),o?o(null,s,h,l):v.apply(s,h)}))}function mt(t){for(var i,o,r,s=t.length,a=e.relative[t[0].type],l=a||e.relative[" "],u=a?1:0,f=dt((function(t){return t===i}),l,!0),d=dt((function(t){return c.call(i,t)>-1}),l,!0),h=[function(t,e,o){var r=!a&&(o||e!=n)||((i=e).nodeType?f(t,e,o):d(t,e,o));return i=null,r}];u1&&ht(h),u>1&&ft(t.slice(0,u-1).concat({value:" "===t[u-2].type?"*":""})).replace(z,"$1"),o,u0,r=t.length>0,s=function(s,a,u,c,d){var h,p,m,y=0,b="0",w=s&&[],k=[],j=n,_=s||r&&e.find.TAG("*",d),$=g+=null==j?1:Math.random()||.1,x=_.length;for(d&&(n=a==l||a||d);b!==x&&null!=(h=_[b]);b++){if(r&&h){for(p=0,a||h.ownerDocument==l||(lt(h),u=!f);m=t[p++];)if(m(h,a||l,u)){v.call(c,h);break}d&&(g=$)}o&&((h=!m&&h)&&y--,s&&w.push(h))}if(y+=b,o&&b!==y){for(p=0;m=i[p++];)m(w,k,a,u);if(s){if(y>0)for(;b--;)w[b]||k[b]||(k[b]=O.call(c));k=pt(k)}v.apply(c,k),d&&!s&&k.length>0&&y+i.length>1&&C.uniqueSort(c)}return d&&(g=$,n=j),w};return o?et(s):s}(s,r)),a.selector=t}return a}function gt(t,n,i,o){var r,s,a,l,u,c="function"==typeof t&&t,d=!o&&ct(t=c.selector||t);if(i=i||[],1===d.length){if((s=d[0]=d[0].slice(0)).length>2&&"ID"===(a=s[0]).type&&9===n.nodeType&&f&&e.relative[s[1].type]){if(!(n=(e.find.ID(a.matches[0].replace(U,V),n)||[])[0]))return i;c&&(n=n.parentNode),t=t.slice(s.shift().value.length)}for(r=W.needsContext.test(t)?0:s.length;r--&&(a=s[r],!e.relative[l=a.type]);)if((u=e.find[l])&&(o=u(a.matches[0].replace(U,V),Y.test(s[0].type)&&at(n.parentNode)||n))){if(s.splice(r,1),!(t=o.length&&ft(s)))return v.apply(i,o),i;break}}return(c||yt(t,d))(o,n,!f,i,!n||Y.test(t)&&at(n.parentNode)||n),i}ut.prototype=e.filters=e.pseudos,e.setFilters=new ut,m.sortStable=y.split("").sort($).join("")===y,lt(),m.sortDetached=nt((function(t){return 1&t.compareDocumentPosition(l.createElement("fieldset"))})),C.find=J,C.expr[":"]=C.expr.pseudos,C.unique=C.uniqueSort,J.compile=yt,J.select=gt,J.setDocument=lt,J.tokenize=ct,J.escape=C.escapeSelector,J.getText=C.text,J.isXML=C.isXMLDoc,J.selectors=C.expr,J.support=C.support,J.uniqueSort=C.uniqueSort}();var M=function(t,e,n){for(var i=[],o=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(o&&C(t).is(n))break;i.push(t)}return i},H=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},q=C.expr.match.needsContext,I=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function F(t,e,n){return y(e)?C.grep(t,(function(t,i){return!!e.call(t,i,t)!==n})):e.nodeType?C.grep(t,(function(t){return t===e!==n})):"string"!=typeof e?C.grep(t,(function(t){return c.call(e,t)>-1!==n})):C.filter(e,t,n)}C.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?C.find.matchesSelector(i,t)?[i]:[]:C.find.matches(t,C.grep(e,(function(t){return 1===t.nodeType})))},C.fn.extend({find:function(t){var e,n,i=this.length,o=this;if("string"!=typeof t)return this.pushStack(C(t).filter((function(){for(e=0;e1?C.uniqueSort(n):n},filter:function(t){return this.pushStack(F(this,t||[],!1))},not:function(t){return this.pushStack(F(this,t||[],!0))},is:function(t){return!!F(this,"string"==typeof t&&q.test(t)?C(t):t||[],!1).length}});var N,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(C.fn.init=function(t,e,n){var i,o;if(!t)return this;if(n=n||N,"string"==typeof t){if(!(i="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:B.exec(t))||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof C?e[0]:e,C.merge(this,C.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:b,!0)),I.test(i[1])&&C.isPlainObject(e))for(i in e)y(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(o=b.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):y(t)?void 0!==n.ready?n.ready(t):t(C):C.makeArray(t,this)}).prototype=C.fn,N=C(b);var W=/^(?:parents|prev(?:Until|All))/,Q={children:!0,contents:!0,next:!0,prev:!0};function K(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}C.fn.extend({has:function(t){var e=C(t,this),n=e.length;return this.filter((function(){for(var t=0;t-1:1===n.nodeType&&C.find.matchesSelector(n,t))){r.push(n);break}return this.pushStack(r.length>1?C.uniqueSort(r):r)},index:function(t){return t?"string"==typeof t?c.call(C(t),this[0]):c.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(C.uniqueSort(C.merge(this.get(),C(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),C.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return M(t,"parentNode")},parentsUntil:function(t,e,n){return M(t,"parentNode",n)},next:function(t){return K(t,"nextSibling")},prev:function(t){return K(t,"previousSibling")},nextAll:function(t){return M(t,"nextSibling")},prevAll:function(t){return M(t,"previousSibling")},nextUntil:function(t,e,n){return M(t,"nextSibling",n)},prevUntil:function(t,e,n){return M(t,"previousSibling",n)},siblings:function(t){return H((t.parentNode||{}).firstChild,t)},children:function(t){return H(t.firstChild)},contents:function(t){return null!=t.contentDocument&&s(t.contentDocument)?t.contentDocument:(S(t,"template")&&(t=t.content||t),C.merge([],t.childNodes))}},(function(t,e){C.fn[t]=function(n,i){var o=C.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(o=C.filter(i,o)),this.length>1&&(Q[t]||C.uniqueSort(o),W.test(t)&&o.reverse()),this.pushStack(o)}}));var G=/[^\x20\t\r\n\f]+/g;function Y(t){return t}function U(t){throw t}function V(t,e,n,i){var o;try{t&&y(o=t.promise)?o.call(t).done(e).fail(n):t&&y(o=t.then)?o.call(t,e,n):e.apply(void 0,[t].slice(i))}catch(t){n.apply(void 0,[t])}}C.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return C.each(t.match(G)||[],(function(t,n){e[n]=!0})),e}(t):C.extend({},t);var e,n,i,o,r=[],s=[],a=-1,l=function(){for(o=o||t.once,i=e=!0;s.length;a=-1)for(n=s.shift();++a-1;)r.splice(n,1),n<=a&&a--})),this},has:function(t){return t?C.inArray(t,r)>-1:r.length>0},empty:function(){return r&&(r=[]),this},disable:function(){return o=s=[],r=n="",this},disabled:function(){return!r},lock:function(){return o=s=[],n||e||(r=n=""),this},locked:function(){return!!o},fireWith:function(t,n){return o||(n=[t,(n=n||[]).slice?n.slice():n],s.push(n),e||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},C.extend({Deferred:function(t){var e=[["notify","progress",C.Callbacks("memory"),C.Callbacks("memory"),2],["resolve","done",C.Callbacks("once memory"),C.Callbacks("once memory"),0,"resolved"],["reject","fail",C.Callbacks("once memory"),C.Callbacks("once memory"),1,"rejected"]],n="pending",o={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},catch:function(t){return o.then(null,t)},pipe:function(){var t=arguments;return C.Deferred((function(n){C.each(e,(function(e,i){var o=y(t[i[4]])&&t[i[4]];r[i[1]]((function(){var t=o&&o.apply(this,arguments);t&&y(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[i[0]+"With"](this,o?[t]:arguments)}))})),t=null})).promise()},then:function(t,n,o){var r=0;function s(t,e,n,o){return function(){var a=this,l=arguments,u=function(){var i,u;if(!(t=r&&(n!==U&&(a=void 0,l=[i]),e.rejectWith(a,l))}};t?c():(C.Deferred.getErrorHook?c.error=C.Deferred.getErrorHook():C.Deferred.getStackHook&&(c.error=C.Deferred.getStackHook()),i.setTimeout(c))}}return C.Deferred((function(i){e[0][3].add(s(0,i,y(o)?o:Y,i.notifyWith)),e[1][3].add(s(0,i,y(t)?t:Y)),e[2][3].add(s(0,i,y(n)?n:U))})).promise()},promise:function(t){return null!=t?C.extend(t,o):o}},r={};return C.each(e,(function(t,i){var s=i[2],a=i[5];o[i[1]]=s.add,a&&s.add((function(){n=a}),e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),s.add(i[3].fire),r[i[0]]=function(){return r[i[0]+"With"](this===r?void 0:this,arguments),this},r[i[0]+"With"]=s.fireWith})),o.promise(r),t&&t.call(r,r),r},when:function(t){var e=arguments.length,n=e,i=Array(n),o=a.call(arguments),r=C.Deferred(),s=function(t){return function(n){i[t]=this,o[t]=arguments.length>1?a.call(arguments):n,--e||r.resolveWith(i,o)}};if(e<=1&&(V(t,r.done(s(n)).resolve,r.reject,!e),"pending"===r.state()||y(o[n]&&o[n].then)))return r.then();for(;n--;)V(o[n],s(n),r.reject);return r.promise()}});var X=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;C.Deferred.exceptionHook=function(t,e){i.console&&i.console.warn&&t&&X.test(t.name)&&i.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},C.readyException=function(t){i.setTimeout((function(){throw t}))};var Z=C.Deferred();function J(){b.removeEventListener("DOMContentLoaded",J),i.removeEventListener("load",J),C.ready()}C.fn.ready=function(t){return Z.then(t).catch((function(t){C.readyException(t)})),this},C.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--C.readyWait:C.isReady)||(C.isReady=!0,!0!==t&&--C.readyWait>0||Z.resolveWith(b,[C]))}}),C.ready.then=Z.then,"complete"===b.readyState||"loading"!==b.readyState&&!b.documentElement.doScroll?i.setTimeout(C.ready):(b.addEventListener("DOMContentLoaded",J),i.addEventListener("load",J));var tt=function(t,e,n,i,o,r,s){var a=0,l=t.length,u=null==n;if("object"===j(n))for(a in o=!0,n)tt(t,e,a,n[a],!0,r,s);else if(void 0!==i&&(o=!0,y(i)||(s=!0),u&&(s?(e.call(t,i),e=null):(u=e,e=function(t,e,n){return u.call(C(t),n)})),e))for(;a1,null,!0)},removeData:function(t){return this.each((function(){lt.remove(this,t)}))}}),C.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=at.get(t,e),n&&(!i||Array.isArray(n)?i=at.access(t,e,C.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=C.queue(t,e),i=n.length,o=n.shift(),r=C._queueHooks(t,e);"inprogress"===o&&(o=n.shift(),i--),o&&("fx"===e&&n.unshift("inprogress"),delete r.stop,o.call(t,(function(){C.dequeue(t,e)}),r)),!i&&r&&r.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return at.get(t,n)||at.access(t,n,{empty:C.Callbacks("once memory").add((function(){at.remove(t,[e+"queue",n])}))})}}),C.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]*)/i,St=/^$|^module$|\/(?:java|ecma)script/i;_t=b.createDocumentFragment().appendChild(b.createElement("div")),($t=b.createElement("input")).setAttribute("type","radio"),$t.setAttribute("checked","checked"),$t.setAttribute("name","t"),_t.appendChild($t),m.checkClone=_t.cloneNode(!0).cloneNode(!0).lastChild.checked,_t.innerHTML="",m.noCloneChecked=!!_t.cloneNode(!0).lastChild.defaultValue,_t.innerHTML="",m.option=!!_t.lastChild;var Ot={thead:[1,"","
            "],col:[2,"","
            "],tr:[2,"","
            "],td:[3,"","
            "],_default:[0,"",""]};function Tt(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&S(t,e)?C.merge([t],n):n}function Et(t,e){for(var n=0,i=t.length;n",""]);var Pt=/<|&#?\w+;/;function zt(t,e,n,i,o){for(var r,s,a,l,u,c,f=e.createDocumentFragment(),d=[],h=0,p=t.length;h-1)o&&o.push(r);else if(u=mt(r),s=Tt(f.appendChild(r),"script"),u&&Et(s),n)for(c=0;r=s[c++];)St.test(r.type||"")&&n.push(r);return f}var At=/^([^.]*)(?:\.(.+)|)/;function Rt(){return!0}function Dt(){return!1}function Lt(t,e,n,i,o,r){var s,a;if("object"==typeof e){for(a in"string"!=typeof n&&(i=i||n,n=void 0),e)Lt(t,a,n,i,e[a],r);return t}if(null==i&&null==o?(o=n,i=n=void 0):null==o&&("string"==typeof n?(o=i,i=void 0):(o=i,i=n,n=void 0)),!1===o)o=Dt;else if(!o)return t;return 1===r&&(s=o,o=function(t){return C().off(t),s.apply(this,arguments)},o.guid=s.guid||(s.guid=C.guid++)),t.each((function(){C.event.add(this,e,o,i,n)}))}function Mt(t,e,n){n?(at.set(t,e,!1),C.event.add(t,e,{namespace:!1,handler:function(t){var n,i=at.get(this,e);if(1&t.isTrigger&&this[e]){if(i)(C.event.special[e]||{}).delegateType&&t.stopPropagation();else if(i=a.call(arguments),at.set(this,e,i),this[e](),n=at.get(this,e),at.set(this,e,!1),i!==n)return t.stopImmediatePropagation(),t.preventDefault(),n}else i&&(at.set(this,e,C.event.trigger(i[0],i.slice(1),this)),t.stopPropagation(),t.isImmediatePropagationStopped=Rt)}})):void 0===at.get(t,e)&&C.event.add(t,e,Rt)}C.event={global:{},add:function(t,e,n,i,o){var r,s,a,l,u,c,f,d,h,p,v,m=at.get(t);if(rt(t))for(n.handler&&(n=(r=n).handler,o=r.selector),o&&C.find.matchesSelector(vt,o),n.guid||(n.guid=C.guid++),(l=m.events)||(l=m.events=Object.create(null)),(s=m.handle)||(s=m.handle=function(e){return void 0!==C&&C.event.triggered!==e.type?C.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(G)||[""]).length;u--;)h=v=(a=At.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),h&&(f=C.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=C.event.special[h]||{},c=C.extend({type:h,origType:v,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&C.expr.match.needsContext.test(o),namespace:p.join(".")},r),(d=l[h])||((d=l[h]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,i,p,s)||t.addEventListener&&t.addEventListener(h,s)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),o?d.splice(d.delegateCount++,0,c):d.push(c),C.event.global[h]=!0)},remove:function(t,e,n,i,o){var r,s,a,l,u,c,f,d,h,p,v,m=at.hasData(t)&&at.get(t);if(m&&(l=m.events)){for(u=(e=(e||"").match(G)||[""]).length;u--;)if(h=v=(a=At.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),h){for(f=C.event.special[h]||{},d=l[h=(i?f.delegateType:f.bindType)||h]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=r=d.length;r--;)c=d[r],!o&&v!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||i&&i!==c.selector&&("**"!==i||!c.selector)||(d.splice(r,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(t,c));s&&!d.length&&(f.teardown&&!1!==f.teardown.call(t,p,m.handle)||C.removeEvent(t,h,m.handle),delete l[h])}else for(h in l)C.event.remove(t,h+e[u],n,i,!0);C.isEmptyObject(l)&&at.remove(t,"handle events")}},dispatch:function(t){var e,n,i,o,r,s,a=new Array(arguments.length),l=C.event.fix(t),u=(at.get(this,"events")||Object.create(null))[l.type]||[],c=C.event.special[l.type]||{};for(a[0]=l,e=1;e=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(r=[],s={},n=0;n-1:C.find(o,this,null,[u]).length),s[o]&&r.push(i);r.length&&a.push({elem:u,handlers:r})}return u=this,l\s*$/g;function Ft(t,e){return S(t,"table")&&S(11!==e.nodeType?e:e.firstChild,"tr")&&C(t).children("tbody")[0]||t}function Nt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Bt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Wt(t,e){var n,i,o,r,s,a;if(1===e.nodeType){if(at.hasData(t)&&(a=at.get(t).events))for(o in at.remove(e,"handle events"),a)for(n=0,i=a[o].length;n1&&"string"==typeof p&&!m.checkClone&&qt.test(p))return t.each((function(o){var r=t.eq(o);v&&(e[0]=p.call(this,o,r.html())),Kt(r,e,n,i)}));if(d&&(r=(o=zt(e,t[0].ownerDocument,!1,t,i)).firstChild,1===o.childNodes.length&&(o=r),r||i)){for(a=(s=C.map(Tt(o,"script"),Nt)).length;f0&&Et(s,!l&&Tt(t,"script")),a},cleanData:function(t){for(var e,n,i,o=C.event.special,r=0;void 0!==(n=t[r]);r++)if(rt(n)){if(e=n[at.expando]){if(e.events)for(i in e.events)o[i]?C.event.remove(n,i):C.removeEvent(n,i,e.handle);n[at.expando]=void 0}n[lt.expando]&&(n[lt.expando]=void 0)}}}),C.fn.extend({detach:function(t){return Gt(this,t,!0)},remove:function(t){return Gt(this,t)},text:function(t){return tt(this,(function(t){return void 0===t?C.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)}))}),null,t,arguments.length)},append:function(){return Kt(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ft(this,t).appendChild(t)}))},prepend:function(){return Kt(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=Ft(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return Kt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return Kt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)}))},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(C.cleanData(Tt(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return C.clone(this,t,e)}))},html:function(t){return tt(this,(function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!Ht.test(t)&&!Ot[(xt.exec(t)||["",""])[1].toLowerCase()]){t=C.htmlPrefilter(t);try{for(;n=0&&(l+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-r-l-a-.5))||0),l+u}function ce(t,e,n){var i=Vt(t),o=(!m.boxSizingReliable()||n)&&"border-box"===C.css(t,"boxSizing",!1,i),r=o,s=Jt(t,e,i),a="offset"+e[0].toUpperCase()+e.slice(1);if(Yt.test(s)){if(!n)return s;s="auto"}return(!m.boxSizingReliable()&&o||!m.reliableTrDimensions()&&S(t,"tr")||"auto"===s||!parseFloat(s)&&"inline"===C.css(t,"display",!1,i))&&t.getClientRects().length&&(o="border-box"===C.css(t,"boxSizing",!1,i),(r=a in t)&&(s=t[a])),(s=parseFloat(s)||0)+ue(t,e,n||(o?"border":"content"),r,i,s)+"px"}function fe(t,e,n,i,o){return new fe.prototype.init(t,e,n,i,o)}C.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=Jt(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(t,e,n,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var o,r,s,a=ot(e),l=Ut.test(e),u=t.style;if(l||(e=oe(a)),s=C.cssHooks[e]||C.cssHooks[a],void 0===n)return s&&"get"in s&&void 0!==(o=s.get(t,!1,i))?o:u[e];"string"==(r=typeof n)&&(o=ht.exec(n))&&o[1]&&(n=bt(t,e,o),r="number"),null!=n&&n==n&&("number"!==r||l||(n+=o&&o[3]||(C.cssNumber[a]?"":"px")),m.clearCloneStyle||""!==n||0!==e.indexOf("background")||(u[e]="inherit"),s&&"set"in s&&void 0===(n=s.set(t,n,i))||(l?u.setProperty(e,n):u[e]=n))}},css:function(t,e,n,i){var o,r,s,a=ot(e);return Ut.test(e)||(e=oe(a)),(s=C.cssHooks[e]||C.cssHooks[a])&&"get"in s&&(o=s.get(t,!0,n)),void 0===o&&(o=Jt(t,e,i)),"normal"===o&&e in ae&&(o=ae[e]),""===n||n?(r=parseFloat(o),!0===n||isFinite(r)?r||0:o):o}}),C.each(["height","width"],(function(t,e){C.cssHooks[e]={get:function(t,n,i){if(n)return!re.test(C.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?ce(t,e,i):Xt(t,se,(function(){return ce(t,e,i)}))},set:function(t,n,i){var o,r=Vt(t),s=!m.scrollboxSize()&&"absolute"===r.position,a=(s||i)&&"border-box"===C.css(t,"boxSizing",!1,r),l=i?ue(t,e,i,a,r):0;return a&&s&&(l-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(r[e])-ue(t,e,"border",!1,r)-.5)),l&&(o=ht.exec(n))&&"px"!==(o[3]||"px")&&(t.style[e]=n,n=C.css(t,e)),le(0,n,l)}}})),C.cssHooks.marginLeft=te(m.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Jt(t,"marginLeft"))||t.getBoundingClientRect().left-Xt(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),C.each({margin:"",padding:"",border:"Width"},(function(t,e){C.cssHooks[t+e]={expand:function(n){for(var i=0,o={},r="string"==typeof n?n.split(" "):[n];i<4;i++)o[t+pt[i]+e]=r[i]||r[i-2]||r[0];return o}},"margin"!==t&&(C.cssHooks[t+e].set=le)})),C.fn.extend({css:function(t,e){return tt(this,(function(t,e,n){var i,o,r={},s=0;if(Array.isArray(e)){for(i=Vt(t),o=e.length;s1)}}),C.Tween=fe,fe.prototype={constructor:fe,init:function(t,e,n,i,o,r){this.elem=t,this.prop=n,this.easing=o||C.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=i,this.unit=r||(C.cssNumber[n]?"":"px")},cur:function(){var t=fe.propHooks[this.prop];return t&&t.get?t.get(this):fe.propHooks._default.get(this)},run:function(t){var e,n=fe.propHooks[this.prop];return this.options.duration?this.pos=e=C.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):fe.propHooks._default.set(this),this}},fe.prototype.init.prototype=fe.prototype,fe.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=C.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){C.fx.step[t.prop]?C.fx.step[t.prop](t):1!==t.elem.nodeType||!C.cssHooks[t.prop]&&null==t.elem.style[oe(t.prop)]?t.elem[t.prop]=t.now:C.style(t.elem,t.prop,t.now+t.unit)}}},fe.propHooks.scrollTop=fe.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},C.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},C.fx=fe.prototype.init,C.fx.step={};var de,he,pe=/^(?:toggle|show|hide)$/,ve=/queueHooks$/;function me(){he&&(!1===b.hidden&&i.requestAnimationFrame?i.requestAnimationFrame(me):i.setTimeout(me,C.fx.interval),C.fx.tick())}function ye(){return i.setTimeout((function(){de=void 0})),de=Date.now()}function ge(t,e){var n,i=0,o={height:t};for(e=e?1:0;i<4;i+=2-e)o["margin"+(n=pt[i])]=o["padding"+n]=t;return e&&(o.opacity=o.width=t),o}function be(t,e,n){for(var i,o=(we.tweeners[e]||[]).concat(we.tweeners["*"]),r=0,s=o.length;r1)},removeAttr:function(t){return this.each((function(){C.removeAttr(this,t)}))}}),C.extend({attr:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return void 0===t.getAttribute?C.prop(t,e,n):(1===r&&C.isXMLDoc(t)||(o=C.attrHooks[e.toLowerCase()]||(C.expr.match.bool.test(e)?ke:void 0)),void 0!==n?null===n?void C.removeAttr(t,e):o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:(t.setAttribute(e,n+""),n):o&&"get"in o&&null!==(i=o.get(t,e))?i:null==(i=C.find.attr(t,e))?void 0:i)},attrHooks:{type:{set:function(t,e){if(!m.radioValue&&"radio"===e&&S(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,i=0,o=e&&e.match(G);if(o&&1===t.nodeType)for(;n=o[i++];)t.removeAttribute(n)}}),ke={set:function(t,e,n){return!1===e?C.removeAttr(t,n):t.setAttribute(n,n),n}},C.each(C.expr.match.bool.source.match(/\w+/g),(function(t,e){var n=je[e]||C.find.attr;je[e]=function(t,e,i){var o,r,s=e.toLowerCase();return i||(r=je[s],je[s]=o,o=null!=n(t,e,i)?s:null,je[s]=r),o}}));var _e=/^(?:input|select|textarea|button)$/i,$e=/^(?:a|area)$/i;function Ce(t){return(t.match(G)||[]).join(" ")}function xe(t){return t.getAttribute&&t.getAttribute("class")||""}function Se(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(G)||[]}C.fn.extend({prop:function(t,e){return tt(this,C.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[C.propFix[t]||t]}))}}),C.extend({prop:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return 1===r&&C.isXMLDoc(t)||(e=C.propFix[e]||e,o=C.propHooks[e]),void 0!==n?o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:t[e]=n:o&&"get"in o&&null!==(i=o.get(t,e))?i:t[e]},propHooks:{tabIndex:{get:function(t){var e=C.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||$e.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),m.optSelected||(C.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),C.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){C.propFix[this.toLowerCase()]=this})),C.fn.extend({addClass:function(t){var e,n,i,o,r,s;return y(t)?this.each((function(e){C(this).addClass(t.call(this,e,xe(this)))})):(e=Se(t)).length?this.each((function(){if(i=xe(this),n=1===this.nodeType&&" "+Ce(i)+" "){for(r=0;r-1;)n=n.replace(" "+o+" "," ");s=Ce(n),i!==s&&this.setAttribute("class",s)}})):this:this.attr("class","")},toggleClass:function(t,e){var n,i,o,r,s=typeof t,a="string"===s||Array.isArray(t);return y(t)?this.each((function(n){C(this).toggleClass(t.call(this,n,xe(this),e),e)})):"boolean"==typeof e&&a?e?this.addClass(t):this.removeClass(t):(n=Se(t),this.each((function(){if(a)for(r=C(this),o=0;o-1)return!0;return!1}});var Oe=/\r/g;C.fn.extend({val:function(t){var e,n,i,o=this[0];return arguments.length?(i=y(t),this.each((function(n){var o;1===this.nodeType&&(null==(o=i?t.call(this,n,C(this).val()):t)?o="":"number"==typeof o?o+="":Array.isArray(o)&&(o=C.map(o,(function(t){return null==t?"":t+""}))),(e=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,o,"value")||(this.value=o))}))):o?(e=C.valHooks[o.type]||C.valHooks[o.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(o,"value"))?n:"string"==typeof(n=o.value)?n.replace(Oe,""):null==n?"":n:void 0}}),C.extend({valHooks:{option:{get:function(t){var e=C.find.attr(t,"value");return null!=e?e:Ce(C.text(t))}},select:{get:function(t){var e,n,i,o=t.options,r=t.selectedIndex,s="select-one"===t.type,a=s?null:[],l=s?r+1:o.length;for(i=r<0?l:s?r:0;i-1)&&(n=!0);return n||(t.selectedIndex=-1),r}}}}),C.each(["radio","checkbox"],(function(){C.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=C.inArray(C(t).val(),e)>-1}},m.checkOn||(C.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})}));var Te=i.location,Ee={guid:Date.now()},Pe=/\?/;C.parseXML=function(t){var e,n;if(!t||"string"!=typeof t)return null;try{e=(new i.DOMParser).parseFromString(t,"text/xml")}catch(t){}return n=e&&e.getElementsByTagName("parsererror")[0],e&&!n||C.error("Invalid XML: "+(n?C.map(n.childNodes,(function(t){return t.textContent})).join("\n"):t)),e};var ze=/^(?:focusinfocus|focusoutblur)$/,Ae=function(t){t.stopPropagation()};C.extend(C.event,{trigger:function(t,e,n,o){var r,s,a,l,u,c,f,d,p=[n||b],v=h.call(t,"type")?t.type:t,m=h.call(t,"namespace")?t.namespace.split("."):[];if(s=d=a=n=n||b,3!==n.nodeType&&8!==n.nodeType&&!ze.test(v+C.event.triggered)&&(v.indexOf(".")>-1&&(m=v.split("."),v=m.shift(),m.sort()),u=v.indexOf(":")<0&&"on"+v,(t=t[C.expando]?t:new C.Event(v,"object"==typeof t&&t)).isTrigger=o?2:3,t.namespace=m.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=n),e=null==e?[t]:C.makeArray(e,[t]),f=C.event.special[v]||{},o||!f.trigger||!1!==f.trigger.apply(n,e))){if(!o&&!f.noBubble&&!g(n)){for(l=f.delegateType||v,ze.test(l+v)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(n.ownerDocument||b)&&p.push(a.defaultView||a.parentWindow||i)}for(r=0;(s=p[r++])&&!t.isPropagationStopped();)d=s,t.type=r>1?l:f.bindType||v,(c=(at.get(s,"events")||Object.create(null))[t.type]&&at.get(s,"handle"))&&c.apply(s,e),(c=u&&s[u])&&c.apply&&rt(s)&&(t.result=c.apply(s,e),!1===t.result&&t.preventDefault());return t.type=v,o||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),e)||!rt(n)||u&&y(n[v])&&!g(n)&&((a=n[u])&&(n[u]=null),C.event.triggered=v,t.isPropagationStopped()&&d.addEventListener(v,Ae),n[v](),t.isPropagationStopped()&&d.removeEventListener(v,Ae),C.event.triggered=void 0,a&&(n[u]=a)),t.result}},simulate:function(t,e,n){var i=C.extend(new C.Event,n,{type:t,isSimulated:!0});C.event.trigger(i,null,e)}}),C.fn.extend({trigger:function(t,e){return this.each((function(){C.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var n=this[0];if(n)return C.event.trigger(t,e,n,!0)}});var Re=/\[\]$/,De=/\r?\n/g,Le=/^(?:submit|button|image|reset|file)$/i,Me=/^(?:input|select|textarea|keygen)/i;function He(t,e,n,i){var o;if(Array.isArray(e))C.each(e,(function(e,o){n||Re.test(t)?i(t,o):He(t+"["+("object"==typeof o&&null!=o?e:"")+"]",o,n,i)}));else if(n||"object"!==j(e))i(t,e);else for(o in e)He(t+"["+o+"]",e[o],n,i)}C.param=function(t,e){var n,i=[],o=function(t,e){var n=y(e)?e():e;i[i.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!C.isPlainObject(t))C.each(t,(function(){o(this.name,this.value)}));else for(n in t)He(n,t[n],e,o);return i.join("&")},C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=C.prop(this,"elements");return t?C.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!C(this).is(":disabled")&&Me.test(this.nodeName)&&!Le.test(t)&&(this.checked||!Ct.test(t))})).map((function(t,e){var n=C(this).val();return null==n?null:Array.isArray(n)?C.map(n,(function(t){return{name:e.name,value:t.replace(De,"\r\n")}})):{name:e.name,value:n.replace(De,"\r\n")}})).get()}});var qe=/%20/g,Ie=/#.*$/,Fe=/([?&])_=[^&]*/,Ne=/^(.*?):[ \t]*([^\r\n]*)$/gm,Be=/^(?:GET|HEAD)$/,We=/^\/\//,Qe={},Ke={},Ge="*/".concat("*"),Ye=b.createElement("a");function Ue(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var i,o=0,r=e.toLowerCase().match(G)||[];if(y(n))for(;i=r[o++];)"+"===i[0]?(i=i.slice(1)||"*",(t[i]=t[i]||[]).unshift(n)):(t[i]=t[i]||[]).push(n)}}function Ve(t,e,n,i){var o={},r=t===Ke;function s(a){var l;return o[a]=!0,C.each(t[a]||[],(function(t,a){var u=a(e,n,i);return"string"!=typeof u||r||o[u]?r?!(l=u):void 0:(e.dataTypes.unshift(u),s(u),!1)})),l}return s(e.dataTypes[0])||!o["*"]&&s("*")}function Xe(t,e){var n,i,o=C.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((o[n]?t:i||(i={}))[n]=e[n]);return i&&C.extend(!0,t,i),t}Ye.href=Te.href,C.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Te.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Te.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":C.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?Xe(Xe(t,C.ajaxSettings),e):Xe(C.ajaxSettings,t)},ajaxPrefilter:Ue(Qe),ajaxTransport:Ue(Ke),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};var n,o,r,s,a,l,u,c,f,d,h=C.ajaxSetup({},e),p=h.context||h,v=h.context&&(p.nodeType||p.jquery)?C(p):C.event,m=C.Deferred(),y=C.Callbacks("once memory"),g=h.statusCode||{},w={},k={},j="canceled",_={readyState:0,getResponseHeader:function(t){var e;if(u){if(!s)for(s={};e=Ne.exec(r);)s[e[1].toLowerCase()+" "]=(s[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=s[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return u?r:null},setRequestHeader:function(t,e){return null==u&&(t=k[t.toLowerCase()]=k[t.toLowerCase()]||t,w[t]=e),this},overrideMimeType:function(t){return null==u&&(h.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)_.always(t[_.status]);else for(e in t)g[e]=[g[e],t[e]];return this},abort:function(t){var e=t||j;return n&&n.abort(e),$(0,e),this}};if(m.promise(_),h.url=((t||h.url||Te.href)+"").replace(We,Te.protocol+"//"),h.type=e.method||e.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(G)||[""],null==h.crossDomain){l=b.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Ye.protocol+"//"+Ye.host!=l.protocol+"//"+l.host}catch(t){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=C.param(h.data,h.traditional)),Ve(Qe,h,e,_),u)return _;for(f in(c=C.event&&h.global)&&0==C.active++&&C.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Be.test(h.type),o=h.url.replace(Ie,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qe,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(Pe.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Fe,"$1"),d=(Pe.test(o)?"&":"?")+"_="+Ee.guid+++d),h.url=o+d),h.ifModified&&(C.lastModified[o]&&_.setRequestHeader("If-Modified-Since",C.lastModified[o]),C.etag[o]&&_.setRequestHeader("If-None-Match",C.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||e.contentType)&&_.setRequestHeader("Content-Type",h.contentType),_.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ge+"; q=0.01":""):h.accepts["*"]),h.headers)_.setRequestHeader(f,h.headers[f]);if(h.beforeSend&&(!1===h.beforeSend.call(p,_,h)||u))return _.abort();if(j="abort",y.add(h.complete),_.done(h.success),_.fail(h.error),n=Ve(Ke,h,e,_)){if(_.readyState=1,c&&v.trigger("ajaxSend",[_,h]),u)return _;h.async&&h.timeout>0&&(a=i.setTimeout((function(){_.abort("timeout")}),h.timeout));try{u=!1,n.send(w,$)}catch(t){if(u)throw t;$(-1,t)}}else $(-1,"No Transport");function $(t,e,s,l){var f,d,b,w,k,j=e;u||(u=!0,a&&i.clearTimeout(a),n=void 0,r=l||"",_.readyState=t>0?4:0,f=t>=200&&t<300||304===t,s&&(w=function(t,e,n){for(var i,o,r,s,a=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=t.mimeType||e.getResponseHeader("Content-Type"));if(i)for(o in a)if(a[o]&&a[o].test(i)){l.unshift(o);break}if(l[0]in n)r=l[0];else{for(o in n){if(!l[0]||t.converters[o+" "+l[0]]){r=o;break}s||(s=o)}r=r||s}if(r)return r!==l[0]&&l.unshift(r),n[r]}(h,_,s)),!f&&C.inArray("script",h.dataTypes)>-1&&C.inArray("json",h.dataTypes)<0&&(h.converters["text script"]=function(){}),w=function(t,e,n,i){var o,r,s,a,l,u={},c=t.dataTypes.slice();if(c[1])for(s in t.converters)u[s.toLowerCase()]=t.converters[s];for(r=c.shift();r;)if(t.responseFields[r]&&(n[t.responseFields[r]]=e),!l&&i&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=r,r=c.shift())if("*"===r)r=l;else if("*"!==l&&l!==r){if(!(s=u[l+" "+r]||u["* "+r]))for(o in u)if((a=o.split(" "))[1]===r&&(s=u[l+" "+a[0]]||u["* "+a[0]])){!0===s?s=u[o]:!0!==u[o]&&(r=a[0],c.unshift(a[1]));break}if(!0!==s)if(s&&t.throws)e=s(e);else try{e=s(e)}catch(t){return{state:"parsererror",error:s?t:"No conversion from "+l+" to "+r}}}return{state:"success",data:e}}(h,w,_,f),f?(h.ifModified&&((k=_.getResponseHeader("Last-Modified"))&&(C.lastModified[o]=k),(k=_.getResponseHeader("etag"))&&(C.etag[o]=k)),204===t||"HEAD"===h.type?j="nocontent":304===t?j="notmodified":(j=w.state,d=w.data,f=!(b=w.error))):(b=j,!t&&j||(j="error",t<0&&(t=0))),_.status=t,_.statusText=(e||j)+"",f?m.resolveWith(p,[d,j,_]):m.rejectWith(p,[_,j,b]),_.statusCode(g),g=void 0,c&&v.trigger(f?"ajaxSuccess":"ajaxError",[_,h,f?d:b]),y.fireWith(p,[_,j]),c&&(v.trigger("ajaxComplete",[_,h]),--C.active||C.event.trigger("ajaxStop")))}return _},getJSON:function(t,e,n){return C.get(t,e,n,"json")},getScript:function(t,e){return C.get(t,void 0,e,"script")}}),C.each(["get","post"],(function(t,e){C[e]=function(t,n,i,o){return y(n)&&(o=o||i,i=n,n=void 0),C.ajax(C.extend({url:t,type:e,dataType:o,data:n,success:i},C.isPlainObject(t)&&t))}})),C.ajaxPrefilter((function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")})),C._evalUrl=function(t,e,n){return C.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){C.globalEval(t,e,n)}})},C.fn.extend({wrapAll:function(t){var e;return this[0]&&(y(t)&&(t=t.call(this[0])),e=C(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map((function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t})).append(this)),this},wrapInner:function(t){return y(t)?this.each((function(e){C(this).wrapInner(t.call(this,e))})):this.each((function(){var e=C(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)}))},wrap:function(t){var e=y(t);return this.each((function(n){C(this).wrapAll(e?t.call(this,n):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){C(this).replaceWith(this.childNodes)})),this}}),C.expr.pseudos.hidden=function(t){return!C.expr.pseudos.visible(t)},C.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},C.ajaxSettings.xhr=function(){try{return new i.XMLHttpRequest}catch(t){}};var Ze={0:200,1223:204},Je=C.ajaxSettings.xhr();m.cors=!!Je&&"withCredentials"in Je,m.ajax=Je=!!Je,C.ajaxTransport((function(t){var e,n;if(m.cors||Je&&!t.crossDomain)return{send:function(o,r){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];for(s in t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest"),o)a.setRequestHeader(s,o[s]);e=function(t){return function(){e&&(e=n=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===t?a.abort():"error"===t?"number"!=typeof a.status?r(0,"error"):r(a.status,a.statusText):r(Ze[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=e(),n=a.onerror=a.ontimeout=e("error"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&i.setTimeout((function(){e&&n()}))},e=e("abort");try{a.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),C.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),C.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return C.globalEval(t),t}}}),C.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),C.ajaxTransport("script",(function(t){var e,n;if(t.crossDomain||t.scriptAttrs)return{send:function(i,o){e=C(" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            scylla.scylladb.com

            + +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/api-reference/groups/scylla.scylladb.com/nodeconfigs.html b/v1.12/api-reference/groups/scylla.scylladb.com/nodeconfigs.html new file mode 100644 index 00000000000..c8150fb1bd0 --- /dev/null +++ b/v1.12/api-reference/groups/scylla.scylladb.com/nodeconfigs.html @@ -0,0 +1,2840 @@ + + + + + + + + + + + + + NodeConfig (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            NodeConfig (scylla.scylladb.com/v1alpha1)

            +
            +
            APIVersion: scylla.scylladb.com/v1alpha1
            +
            Kind: NodeConfig
            +
            PluralName: nodeconfigs
            +
            SingularName: nodeconfig
            +
            Scope: Cluster
            +
            ListKind: NodeConfigList
            +
            Served: true
            +
            Storage: true
            +
            +
            +

            Description

            +
            +
            +

            Specification

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            apiVersion

            string

            APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

            kind

            string

            Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

            metadata

            object

            spec

            object

            status

            object

            +
            +

            .metadata

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            disableOptimizations

            boolean

            disableOptimizations controls if nodes matching placement requirements are going to be optimized. Turning off optimizations on already optimized Nodes does not revert changes.

            localDiskSetup

            object

            localDiskSetup contains options of automatic local disk setup.

            placement

            object

            placement contains scheduling rules for NodeConfig Pods.

            +
            +
            +
            +

            .spec.localDiskSetup

            +
            +

            Description

            +

            localDiskSetup contains options of automatic local disk setup.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            filesystems

            array (object)

            filesystems is a list of filesystem configurations.

            loopDevices

            array (object)

            loops is a list of loop device configurations.

            mounts

            array (object)

            mounts is a list of mount configuration.

            raids

            array (object)

            raids is a list of raid configurations.

            +
            +
            +
            +

            .spec.localDiskSetup.filesystems[]

            +
            +

            Description

            +

            FilesystemConfiguration specifies filesystem configuration options.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            device

            string

            device is a path to the device where the desired filesystem should be created.

            type

            string

            type is a desired filesystem type.

            +
            +
            +
            +

            .spec.localDiskSetup.loopDevices[]

            +
            +

            Description

            +

            LoopDeviceConfiguration specifies loop device configuration options.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            imagePath

            string

            imagePath specifies path on host where backing image file for loop device should be located.

            name

            string

            name specifies the name of the symlink that will point to actual loop device, created under /dev/loops/.

            size

            size specifies the size of the loop device.

            +
            +
            +
            +

            .spec.localDiskSetup.mounts[]

            +
            +

            Description

            +

            MountConfiguration specifies mount configuration options.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            device

            string

            device is path to a device that should be mounted.

            fsType

            string

            fsType specifies the filesystem on the device.

            mountPoint

            string

            mountPoint is a path where the device should be mounted at.

            unsupportedOptions

            array (string)

            unsupportedOptions is a list of mount options used during device mounting. unsupported in this field name means that we won’t support all the available options passed down using this field.

            +
            +
            +
            +

            .spec.localDiskSetup.raids[]

            +
            +

            Description

            +

            RAIDConfiguration is a configuration of a raid array.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            RAID0

            object

            RAID0 specifies RAID0 options.

            name

            string

            name specifies the name of the raid device to be created under in /dev/md/.

            type

            string

            type is a type of raid array.

            +
            +
            +
            +

            .spec.localDiskSetup.raids[].RAID0

            +
            +

            Description

            +

            RAID0 specifies RAID0 options.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            devices

            object

            devices defines which devices constitute the raid array.

            +
            +
            +
            +

            .spec.localDiskSetup.raids[].RAID0.devices

            +
            +

            Description

            +

            devices defines which devices constitute the raid array.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            modelRegex

            string

            modelRegex is a regular expression filtering devices by their model name.

            nameRegex

            string

            nameRegex is a regular expression filtering devices by their name.

            +
            +
            +
            +

            .spec.placement

            +
            +

            Description

            +

            placement contains scheduling rules for NodeConfig Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            affinity

            object

            affinity is a group of affinity scheduling rules for NodeConfig Pods.

            nodeSelector

            object

            nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node.

            tolerations

            array (object)

            tolerations is a group of tolerations NodeConfig Pods are going to have.

            +
            +
            +
            +

            .spec.placement.affinity

            +
            +

            Description

            +

            affinity is a group of affinity scheduling rules for NodeConfig Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            nodeAffinity

            object

            Describes node affinity scheduling rules for the pod.

            podAffinity

            object

            Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

            podAntiAffinity

            object

            Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

            +
            +
            +
            +

            .spec.placement.affinity.nodeAffinity

            +
            +

            Description

            +

            Describes node affinity scheduling rules for the pod.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            object

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

            +
            +
            +
            +

            .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preference

            object

            A node selector term, associated with the corresponding weight.

            weight

            integer

            Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

            +
            +

            Description

            +

            A node selector term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            A list of node selector requirements by node’s labels.

            matchFields

            array (object)

            A list of node selector requirements by node’s fields.

            +
            +
            +
            +

            .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

            +
            +

            Description

            +

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            nodeSelectorTerms

            array (object)

            Required. A list of node selector terms. The terms are ORed.

            +
            +
            +
            +

            .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

            +
            +

            Description

            +

            A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            A list of node selector requirements by node’s labels.

            matchFields

            array (object)

            A list of node selector requirements by node’s fields.

            +
            +
            +
            +

            .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity

            +
            +

            Description

            +

            Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            array (object)

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            podAffinityTerm

            object

            Required. A pod affinity term, associated with the corresponding weight.

            weight

            integer

            weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

            +
            +

            Description

            +

            Required. A pod affinity term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity

            +
            +

            Description

            +

            Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            array (object)

            If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            podAffinityTerm

            object

            Required. A pod affinity term, associated with the corresponding weight.

            weight

            integer

            weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

            +
            +

            Description

            +

            Required. A pod affinity term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.placement.nodeSelector

            +
            +

            Description

            +

            nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.placement.tolerations[]

            +
            +

            Description

            +

            The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            effect

            string

            Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

            key

            string

            Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

            operator

            string

            Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

            tolerationSeconds

            integer

            TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

            value

            string

            Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

            +
            +
            +
            +

            .status

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            conditions

            array (object)

            conditions represents the latest available observations of current state.

            nodeStatuses

            array (object)

            nodeStatuses hold the status for each tuned node.

            observedGeneration

            integer

            observedGeneration indicates the most recent generation observed by the controller.

            +
            +
            +
            +

            .status.conditions[]

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            lastTransitionTime

            string

            lastTransitionTime is last time the condition transitioned from one status to another.

            message

            string

            message is a human-readable message indicating details about the transition.

            observedGeneration

            integer

            observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

            reason

            string

            reason is the reason for condition’s last transition.

            status

            string

            status represents the state of the condition, one of True, False, or Unknown.

            type

            string

            type is the type of the NodeConfig condition.

            +
            +
            +
            +

            .status.nodeStatuses[]

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            tunedContainers

            array (string)

            tunedNode

            boolean

            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/api-reference/groups/scylla.scylladb.com/scyllaclusters.html b/v1.12/api-reference/groups/scylla.scylladb.com/scyllaclusters.html new file mode 100644 index 00000000000..0251fda3bf1 --- /dev/null +++ b/v1.12/api-reference/groups/scylla.scylladb.com/scyllaclusters.html @@ -0,0 +1,7407 @@ + + + + + + + + + + + + + ScyllaCluster (scylla.scylladb.com/v1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            ScyllaCluster (scylla.scylladb.com/v1)

            +
            +
            APIVersion: scylla.scylladb.com/v1
            +
            Kind: ScyllaCluster
            +
            PluralName: scyllaclusters
            +
            SingularName: scyllacluster
            +
            Scope: Namespaced
            +
            ListKind: ScyllaClusterList
            +
            Served: true
            +
            Storage: true
            +
            +
            +

            Description

            +

            ScyllaCluster defines a Scylla cluster.

            +
            +
            +

            Specification

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            apiVersion

            string

            APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

            kind

            string

            Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

            metadata

            object

            spec

            object

            spec defines the desired state of this scylla cluster.

            status

            object

            status is the current status of this scylla cluster.

            +
            +

            .metadata

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec

            +
            +

            Description

            +

            spec defines the desired state of this scylla cluster.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            agentRepository

            string

            agentRepository is the repository to pull the agent image from.

            agentVersion

            string

            agentVersion indicates the version of Scylla Manager Agent to use.

            alternator

            object

            alternator designates this cluster an Alternator cluster.

            automaticOrphanedNodeCleanup

            boolean

            automaticOrphanedNodeCleanup controls if automatic orphan node cleanup should be performed.

            backups

            array (object)

            backups specifies backup tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored.

            cpuset

            boolean

            cpuset determines if the cluster will use cpu-pinning for max performance.

            datacenter

            object

            datacenter holds a specification of a datacenter.

            developerMode

            boolean

            developerMode determines if the cluster runs in developer-mode.

            dnsDomains

            array (string)

            dnsDomains is a list of DNS domains this cluster is reachable by. These domains are used when setting up the infrastructure, like certificates. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

            exposeOptions

            object

            exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

            externalSeeds

            array (string)

            externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as “seeds” parameter of seed-provider.

            forceRedeploymentReason

            string

            forceRedeploymentReason can be used to force a rolling update of all racks by providing a unique string.

            genericUpgrade

            object

            genericUpgrade allows to configure behavior of generic upgrade logic.

            imagePullSecrets

            array (object)

            imagePullSecrets is an optional list of references to secrets in the same namespace used for pulling Scylla and Agent images.

            minReadySeconds

            integer

            minReadySeconds is the minimum number of seconds for which a newly created ScyllaDB node should be ready for it to be considered available. When used to control load balanced traffic, this can give the load balancer in front of a node enough time to notice that the node is ready and start forwarding traffic in time. Because it all depends on timing, the order is not guaranteed and, if possible, you should use readinessGates instead. If not provided, Operator will determine this value.

            minTerminationGracePeriodSeconds

            integer

            minTerminationGracePeriodSeconds specifies minimum duration in seconds to wait before every drained node is terminated. This gives time to potential load balancer in front of a node to notice that node is not ready anymore and stop forwarding new requests. This applies only when node is terminated gracefully. If not provided, Operator will determine this value. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

            network

            object

            network holds the networking config.

            podMetadata

            object

            podMetadata controls shared metadata for all pods created based on this spec.

            readinessGates

            array (object)

            readinessGates specifies custom readiness gates that will be evaluated for every ScyllaDB Pod readiness. It’s projected into every ScyllaDB Pod as its readinessGate. Refer to upstream documentation to learn more about readiness gates.

            repairs

            array (object)

            repairs specify repair tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored.

            repository

            string

            repository is the image repository to pull the Scylla image from.

            scyllaArgs

            string

            scyllaArgs will be appended to Scylla binary during startup. This is supported from 4.2.0 Scylla version.

            sysctls

            array (string)

            sysctls holds the sysctl properties to be applied during initialization given as a list of key=value pairs. Example: fs.aio-max-nr=232323

            version

            string

            version is a version tag of Scylla to use.

            +
            +
            +
            +

            .spec.alternator

            +
            +

            Description

            +

            alternator designates this cluster an Alternator cluster.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            insecureDisableAuthorization

            boolean

            insecureDisableAuthorization disables Alternator authorization. If not specified, the authorization is enabled. For backwards compatibility the authorization is disabled when this field is not specified and a manual port is used.

            insecureEnableHTTP

            boolean

            insecureEnableHTTP enables serving Alternator traffic also on insecure HTTP port.

            port

            integer

            port is the port number used to bind the Alternator API. Deprecated: port is deprecated and may be ignored in the future. Please make sure to avoid using hostNetworking and work with standard Kubernetes concepts like Services.

            servingCertificate

            object

            servingCertificate references a TLS certificate for serving secure traffic.

            writeIsolation

            string

            writeIsolation indicates the isolation level.

            +
            +
            +
            +

            .spec.alternator.servingCertificate

            +
            +

            Description

            +

            servingCertificate references a TLS certificate for serving secure traffic.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            operatorManagedOptions

            object

            operatorManagedOptions specifies options for certificates manged by the operator.

            type

            string

            type determines the source of this certificate.

            userManagedOptions

            object

            userManagedOptions specifies options for certificates manged by users.

            +
            +
            +
            +

            .spec.alternator.servingCertificate.operatorManagedOptions

            +
            +

            Description

            +

            operatorManagedOptions specifies options for certificates manged by the operator.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            additionalDNSNames

            array (string)

            additionalDNSNames represents external DNS names that the certificates should be signed for.

            additionalIPAddresses

            array (string)

            additionalIPAddresses represents external IP addresses that the certificates should be signed for.

            +
            +
            +
            +

            .spec.alternator.servingCertificate.userManagedOptions

            +
            +

            Description

            +

            userManagedOptions specifies options for certificates manged by users.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            secretName

            string

            secretName references a kubernetes.io/tls type secret containing the TLS cert and key.

            +
            +
            +
            +

            .spec.backups[]

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            dc

            array (string)

            dc is a list of datacenter glob patterns, e.g. ‘dc1,!otherdc*’ used to specify the DCs to include or exclude from backup.

            interval

            string

            interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s.

            keyspace

            array (string)

            keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

            location

            array (string)

            location is a list of backup locations in the format [<dc>:]<provider>:<name> ex. s3:my-bucket. The <dc>: part is optional and is only needed when different datacenters are being used to upload data to different locations. <name> must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden. The only supported storage <provider> at the moment are s3 and gcs.

            name

            string

            name is a unique name of a task.

            numRetries

            integer

            numRetries indicates how many times a scheduled task will be retried before failing.

            rateLimit

            array (string)

            rateLimit is a list of megabytes (MiB) per second rate limits expressed in the format [<dc>:]<limit>. The <dc>: part is optional and only needed when different datacenters need different upload limits. Set to 0 for no limit (default 100).

            retention

            integer

            retention is the number of backups which are to be stored.

            snapshotParallel

            array (string)

            snapshotParallel is a list of snapshot parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set, the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

            startDate

            string

            startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

            uploadParallel

            array (string)

            uploadParallel is a list of upload parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

            +
            +
            +
            +

            .spec.datacenter

            +
            +

            Description

            +

            datacenter holds a specification of a datacenter.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            name is the name of the scylla datacenter. Used in the cassandra-rackdc.properties file.

            racks

            array (object)

            racks specify the racks in the datacenter.

            +
            +
            +
            +

            .spec.datacenter.racks[]

            +
            +

            Description

            +

            RackSpec is the desired state for a Scylla Rack.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            agentResources

            object

            agentResources specify the resources for the Agent container.

            agentVolumeMounts

            array (object)

            AgentVolumeMounts to be added to Agent container.

            members

            integer

            members is the number of Scylla instances in this rack.

            name

            string

            name is the name of the Scylla Rack. Used in the cassandra-rackdc.properties file.

            placement

            object

            placement describes restrictions for the nodes Scylla is scheduled on.

            resources

            object

            resources the Scylla container will use.

            scyllaAgentConfig

            string

            Scylla config map name to customize scylla manager agent

            scyllaConfig

            string

            Scylla config map name to customize scylla.yaml

            storage

            object

            storage describes the underlying storage that Scylla will consume.

            volumeMounts

            array (object)

            VolumeMounts to be added to Scylla container.

            volumes

            array (object)

            Volumes added to Scylla Pod.

            +
            +
            +
            +

            .spec.datacenter.racks[].agentResources

            +
            +

            Description

            +

            agentResources specify the resources for the Agent container.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            claims

            array (object)

            +
            Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

            This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

            +
            +
            +

            limits

            object

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            requests

            object

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +
            +

            .spec.datacenter.racks[].agentResources.claims[]

            +
            +

            Description

            +

            ResourceClaim references one entry in PodSpec.ResourceClaims.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

            +
            +
            +
            +

            .spec.datacenter.racks[].agentResources.limits

            +
            +

            Description

            +

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].agentResources.requests

            +
            +

            Description

            +

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].agentVolumeMounts[]

            +
            +

            Description

            +

            VolumeMount describes a mounting of a Volume within a container.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            mountPath

            string

            Path within the container at which the volume should be mounted. Must not contain ‘:’.

            mountPropagation

            string

            mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

            name

            string

            This must match the Name of a Volume.

            readOnly

            boolean

            Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

            subPath

            string

            Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

            subPathExpr

            string

            Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement

            +
            +

            Description

            +

            placement describes restrictions for the nodes Scylla is scheduled on.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            nodeAffinity

            object

            nodeAffinity describes node affinity scheduling rules for the pod.

            podAffinity

            object

            podAffinity describes pod affinity scheduling rules.

            podAntiAffinity

            object

            podAntiAffinity describes pod anti-affinity scheduling rules.

            tolerations

            array (object)

            tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.nodeAffinity

            +
            +

            Description

            +

            nodeAffinity describes node affinity scheduling rules for the pod.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            object

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preference

            object

            A node selector term, associated with the corresponding weight.

            weight

            integer

            Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

            +
            +

            Description

            +

            A node selector term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            A list of node selector requirements by node’s labels.

            matchFields

            array (object)

            A list of node selector requirements by node’s fields.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

            +
            +

            Description

            +

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            nodeSelectorTerms

            array (object)

            Required. A list of node selector terms. The terms are ORed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

            +
            +

            Description

            +

            A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            A list of node selector requirements by node’s labels.

            matchFields

            array (object)

            A list of node selector requirements by node’s fields.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity

            +
            +

            Description

            +

            podAffinity describes pod affinity scheduling rules.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            array (object)

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            podAffinityTerm

            object

            Required. A pod affinity term, associated with the corresponding weight.

            weight

            integer

            weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

            +
            +

            Description

            +

            Required. A pod affinity term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity

            +
            +

            Description

            +

            podAntiAffinity describes pod anti-affinity scheduling rules.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            array (object)

            If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            podAffinityTerm

            object

            Required. A pod affinity term, associated with the corresponding weight.

            weight

            integer

            weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

            +
            +

            Description

            +

            Required. A pod affinity term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].placement.tolerations[]

            +
            +

            Description

            +

            The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            effect

            string

            Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

            key

            string

            Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

            operator

            string

            Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

            tolerationSeconds

            integer

            TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

            value

            string

            Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

            +
            +
            +
            +

            .spec.datacenter.racks[].resources

            +
            +

            Description

            +

            resources the Scylla container will use.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            claims

            array (object)

            +
            Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

            This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

            +
            +
            +

            limits

            object

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            requests

            object

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +
            +

            .spec.datacenter.racks[].resources.claims[]

            +
            +

            Description

            +

            ResourceClaim references one entry in PodSpec.ResourceClaims.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

            +
            +
            +
            +

            .spec.datacenter.racks[].resources.limits

            +
            +

            Description

            +

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].resources.requests

            +
            +

            Description

            +

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].storage

            +
            +

            Description

            +

            storage describes the underlying storage that Scylla will consume.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            capacity

            string

            capacity describes the requested size of each persistent volume.

            metadata

            object

            metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

            storageClassName

            string

            storageClassName is the name of a storageClass to request.

            +
            +
            +
            +

            .spec.datacenter.racks[].storage.metadata

            +
            +

            Description

            +

            metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            annotations

            object

            annotations is a custom key value map that gets merged with managed object annotations.

            labels

            object

            labels is a custom key value map that gets merged with managed object labels.

            +
            +
            +
            +

            .spec.datacenter.racks[].storage.metadata.annotations

            +
            +

            Description

            +

            annotations is a custom key value map that gets merged with managed object annotations.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].storage.metadata.labels

            +
            +

            Description

            +

            labels is a custom key value map that gets merged with managed object labels.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].volumeMounts[]

            +
            +

            Description

            +

            VolumeMount describes a mounting of a Volume within a container.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            mountPath

            string

            Path within the container at which the volume should be mounted. Must not contain ‘:’.

            mountPropagation

            string

            mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

            name

            string

            This must match the Name of a Volume.

            readOnly

            boolean

            Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

            subPath

            string

            Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

            subPathExpr

            string

            Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[]

            +
            +

            Description

            +

            Volume represents a named volume in a pod that may be accessed by any container in the pod.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            awsElasticBlockStore

            object

            awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

            azureDisk

            object

            azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

            azureFile

            object

            azureFile represents an Azure File Service mount on the host and bind mount to the pod.

            cephfs

            object

            cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

            cinder

            object

            cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

            configMap

            object

            configMap represents a configMap that should populate this volume

            csi

            object

            csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

            downwardAPI

            object

            downwardAPI represents downward API about the pod that should populate this volume

            emptyDir

            object

            emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

            ephemeral

            object

            +
            ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

            Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

            +
            +
            +

            fc

            object

            fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

            flexVolume

            object

            flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

            flocker

            object

            flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

            gcePersistentDisk

            object

            gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

            gitRepo

            object

            gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

            glusterfs

            object

            glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

            hostPath

            object

            hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

            iscsi

            object

            iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

            name

            string

            name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

            nfs

            object

            nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

            persistentVolumeClaim

            object

            persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

            photonPersistentDisk

            object

            photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

            portworxVolume

            object

            portworxVolume represents a portworx volume attached and mounted on kubelets host machine

            projected

            object

            projected items for all in one resources secrets, configmaps, and downward API

            quobyte

            object

            quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

            rbd

            object

            rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

            scaleIO

            object

            scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

            secret

            object

            secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

            storageos

            object

            storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

            vsphereVolume

            object

            vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].awsElasticBlockStore

            +
            +

            Description

            +

            awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fsType

            string

            fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine

            partition

            integer

            partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty).

            readOnly

            boolean

            readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

            volumeID

            string

            volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].azureDisk

            +
            +

            Description

            +

            azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            cachingMode

            string

            cachingMode is the Host Caching mode: None, Read Only, Read Write.

            diskName

            string

            diskName is the Name of the data disk in the blob storage

            diskURI

            string

            diskURI is the URI of data disk in the blob storage

            fsType

            string

            fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

            kind

            string

            kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

            readOnly

            boolean

            readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].azureFile

            +
            +

            Description

            +

            azureFile represents an Azure File Service mount on the host and bind mount to the pod.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            readOnly

            boolean

            readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

            secretName

            string

            secretName is the name of secret that contains Azure Storage Account Name and Key

            shareName

            string

            shareName is the azure share Name

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].cephfs

            +
            +

            Description

            +

            cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            monitors

            array (string)

            monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

            path

            string

            path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /

            readOnly

            boolean

            readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

            secretFile

            string

            secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

            secretRef

            object

            secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

            user

            string

            user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].cephfs.secretRef

            +
            +

            Description

            +

            secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].cinder

            +
            +

            Description

            +

            cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fsType

            string

            fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

            readOnly

            boolean

            readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

            secretRef

            object

            secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

            volumeID

            string

            volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].cinder.secretRef

            +
            +

            Description

            +

            secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].configMap

            +
            +

            Description

            +

            configMap represents a configMap that should populate this volume

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            defaultMode

            integer

            defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

            items

            array (object)

            items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            optional

            boolean

            optional specify whether the ConfigMap or its keys must be defined

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].configMap.items[]

            +
            +

            Description

            +

            Maps a string key to a path within a volume.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the key to project.

            mode

            integer

            mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

            path

            string

            path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].csi

            +
            +

            Description

            +

            csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            driver

            string

            driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.

            fsType

            string

            fsType to mount. Ex. “ext4”, “xfs”, “ntfs”. If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.

            nodePublishSecretRef

            object

            nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

            readOnly

            boolean

            readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).

            volumeAttributes

            object

            volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef

            +
            +

            Description

            +

            nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].csi.volumeAttributes

            +
            +

            Description

            +

            volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].downwardAPI

            +
            +

            Description

            +

            downwardAPI represents downward API about the pod that should populate this volume

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            defaultMode

            integer

            Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

            items

            array (object)

            Items is a list of downward API volume file

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].downwardAPI.items[]

            +
            +

            Description

            +

            DownwardAPIVolumeFile represents information to create the file containing the pod field

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fieldRef

            object

            Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

            mode

            integer

            Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

            path

            string

            Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

            resourceFieldRef

            object

            Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef

            +
            +

            Description

            +

            Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            apiVersion

            string

            Version of the schema the FieldPath is written in terms of, defaults to “v1”.

            fieldPath

            string

            Path of the field to select in the specified API version.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef

            +
            +

            Description

            +

            Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            containerName

            string

            Container name: required for volumes, optional for env vars

            divisor

            Specifies the output format of the exposed resources, defaults to “1”

            resource

            string

            Required: resource to select

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].emptyDir

            +
            +

            Description

            +

            emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            medium

            string

            medium represents what type of storage medium should back this directory. The default is “” which means to use the node’s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

            sizeLimit

            sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral

            +
            +

            Description

            +
            +
            ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

            Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

            +
            +
            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            volumeClaimTemplate

            object

            +
            Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

            An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

            +
            +
            +
            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate

            +
            +

            Description

            +
            +
            Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

            An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

            +
            +
            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            metadata

            object

            May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

            spec

            object

            The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata

            +
            +

            Description

            +

            May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec

            +
            +

            Description

            +

            The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            accessModes

            array (string)

            accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

            dataSource

            object

            dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

            dataSourceRef

            object

            dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

            resources

            object

            resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

            selector

            object

            selector is a label query over volumes to consider for binding.

            storageClassName

            string

            storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

            volumeAttributesClassName

            string

            volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

            volumeMode

            string

            volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

            volumeName

            string

            volumeName is the binding reference to the PersistentVolume backing this claim.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource

            +
            +

            Description

            +

            dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            apiGroup

            string

            APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

            kind

            string

            Kind is the type of resource being referenced

            name

            string

            Name is the name of resource being referenced

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef

            +
            +

            Description

            +

            dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            apiGroup

            string

            APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

            kind

            string

            Kind is the type of resource being referenced

            name

            string

            Name is the name of resource being referenced

            namespace

            string

            Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources

            +
            +

            Description

            +

            resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            limits

            object

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            requests

            object

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits

            +
            +

            Description

            +

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests

            +
            +

            Description

            +

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector

            +
            +

            Description

            +

            selector is a label query over volumes to consider for binding.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].fc

            +
            +

            Description

            +

            fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fsType

            string

            fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine

            lun

            integer

            lun is Optional: FC target lun number

            readOnly

            boolean

            readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

            targetWWNs

            array (string)

            targetWWNs is Optional: FC target worldwide names (WWNs)

            wwids

            array (string)

            wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].flexVolume

            +
            +

            Description

            +

            flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            driver

            string

            driver is the name of the driver to use for this volume.

            fsType

            string

            fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. The default filesystem depends on FlexVolume script.

            options

            object

            options is Optional: this field holds extra command options if any.

            readOnly

            boolean

            readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

            secretRef

            object

            secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].flexVolume.options

            +
            +

            Description

            +

            options is Optional: this field holds extra command options if any.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].flexVolume.secretRef

            +
            +

            Description

            +

            secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].flocker

            +
            +

            Description

            +

            flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            datasetName

            string

            datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated

            datasetUUID

            string

            datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].gcePersistentDisk

            +
            +

            Description

            +

            gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fsType

            string

            fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine

            partition

            integer

            partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

            pdName

            string

            pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

            readOnly

            boolean

            readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].gitRepo

            +
            +

            Description

            +

            gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            directory

            string

            directory is the target directory name. Must not contain or start with ‘..’. If ‘.’ is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.

            repository

            string

            repository is the URL

            revision

            string

            revision is the commit hash for the specified revision.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].glusterfs

            +
            +

            Description

            +

            glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            endpoints

            string

            endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

            path

            string

            path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

            readOnly

            boolean

            readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].hostPath

            +
            +

            Description

            +

            hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            path

            string

            path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

            type

            string

            type for HostPath Volume Defaults to “” More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].iscsi

            +
            +

            Description

            +

            iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            chapAuthDiscovery

            boolean

            chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication

            chapAuthSession

            boolean

            chapAuthSession defines whether support iSCSI Session CHAP authentication

            fsType

            string

            fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine

            initiatorName

            string

            initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

            iqn

            string

            iqn is the target iSCSI Qualified Name.

            iscsiInterface

            string

            iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to ‘default’ (tcp).

            lun

            integer

            lun represents iSCSI Target Lun number.

            portals

            array (string)

            portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

            readOnly

            boolean

            readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

            secretRef

            object

            secretRef is the CHAP Secret for iSCSI target and initiator authentication

            targetPortal

            string

            targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].iscsi.secretRef

            +
            +

            Description

            +

            secretRef is the CHAP Secret for iSCSI target and initiator authentication

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].nfs

            +
            +

            Description

            +

            nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            path

            string

            path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

            readOnly

            boolean

            readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

            server

            string

            server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].persistentVolumeClaim

            +
            +

            Description

            +

            persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            claimName

            string

            claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

            readOnly

            boolean

            readOnly Will force the ReadOnly setting in VolumeMounts. Default false.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].photonPersistentDisk

            +
            +

            Description

            +

            photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fsType

            string

            fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

            pdID

            string

            pdID is the ID that identifies Photon Controller persistent disk

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].portworxVolume

            +
            +

            Description

            +

            portworxVolume represents a portworx volume attached and mounted on kubelets host machine

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fsType

            string

            fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”. Implicitly inferred to be “ext4” if unspecified.

            readOnly

            boolean

            readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

            volumeID

            string

            volumeID uniquely identifies a Portworx volume

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected

            +
            +

            Description

            +

            projected items for all in one resources secrets, configmaps, and downward API

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            defaultMode

            integer

            defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

            sources

            array (object)

            sources is the list of volume projections

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[]

            +
            +

            Description

            +

            Projection that may be projected along with other supported volume types

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            clusterTrustBundle

            object

            +
            ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

            Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

            +
            +
            +

            configMap

            object

            configMap information about the configMap data to project

            downwardAPI

            object

            downwardAPI information about the downwardAPI data to project

            secret

            object

            secret information about the secret data to project

            serviceAccountToken

            object

            serviceAccountToken is information about the serviceAccountToken data to project

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle

            +
            +

            Description

            +
            +
            ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

            Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

            +
            +
            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

            name

            string

            Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.

            optional

            boolean

            If true, don’t block pod startup if the referenced ClusterTrustBundle(s) aren’t available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.

            path

            string

            Relative path from the volume root to write the bundle.

            signerName

            string

            Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector

            +
            +

            Description

            +

            Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].configMap

            +
            +

            Description

            +

            configMap information about the configMap data to project

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            items

            array (object)

            items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            optional

            boolean

            optional specify whether the ConfigMap or its keys must be defined

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]

            +
            +

            Description

            +

            Maps a string key to a path within a volume.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the key to project.

            mode

            integer

            mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

            path

            string

            path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI

            +
            +

            Description

            +

            downwardAPI information about the downwardAPI data to project

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            items

            array (object)

            Items is a list of DownwardAPIVolume file

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]

            +
            +

            Description

            +

            DownwardAPIVolumeFile represents information to create the file containing the pod field

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fieldRef

            object

            Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

            mode

            integer

            Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

            path

            string

            Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

            resourceFieldRef

            object

            Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef

            +
            +

            Description

            +

            Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            apiVersion

            string

            Version of the schema the FieldPath is written in terms of, defaults to “v1”.

            fieldPath

            string

            Path of the field to select in the specified API version.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef

            +
            +

            Description

            +

            Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            containerName

            string

            Container name: required for volumes, optional for env vars

            divisor

            Specifies the output format of the exposed resources, defaults to “1”

            resource

            string

            Required: resource to select

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].secret

            +
            +

            Description

            +

            secret information about the secret data to project

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            items

            array (object)

            items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            optional

            boolean

            optional field specify whether the Secret or its key must be defined

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]

            +
            +

            Description

            +

            Maps a string key to a path within a volume.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the key to project.

            mode

            integer

            mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

            path

            string

            path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken

            +
            +

            Description

            +

            serviceAccountToken is information about the serviceAccountToken data to project

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            audience

            string

            audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.

            expirationSeconds

            integer

            expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.

            path

            string

            path is the path relative to the mount point of the file to project the token into.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].quobyte

            +
            +

            Description

            +

            quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            group

            string

            group to map volume access to Default is no group

            readOnly

            boolean

            readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

            registry

            string

            registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

            tenant

            string

            tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin

            user

            string

            user to map volume access to Defaults to serivceaccount user

            volume

            string

            volume is a string that references an already created Quobyte volume by name.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].rbd

            +
            +

            Description

            +

            rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fsType

            string

            fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine

            image

            string

            image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

            keyring

            string

            keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

            monitors

            array (string)

            monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

            pool

            string

            pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

            readOnly

            boolean

            readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

            secretRef

            object

            secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

            user

            string

            user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].rbd.secretRef

            +
            +

            Description

            +

            secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].scaleIO

            +
            +

            Description

            +

            scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fsType

            string

            fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Default is “xfs”.

            gateway

            string

            gateway is the host address of the ScaleIO API Gateway.

            protectionDomain

            string

            protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.

            readOnly

            boolean

            readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

            secretRef

            object

            secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

            sslEnabled

            boolean

            sslEnabled Flag enable/disable SSL communication with Gateway, default false

            storageMode

            string

            storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.

            storagePool

            string

            storagePool is the ScaleIO Storage Pool associated with the protection domain.

            system

            string

            system is the name of the storage system as configured in ScaleIO.

            volumeName

            string

            volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].scaleIO.secretRef

            +
            +

            Description

            +

            secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].secret

            +
            +

            Description

            +

            secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            defaultMode

            integer

            defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

            items

            array (object)

            items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

            optional

            boolean

            optional field specify whether the Secret or its keys must be defined

            secretName

            string

            secretName is the name of the secret in the pod’s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].secret.items[]

            +
            +

            Description

            +

            Maps a string key to a path within a volume.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the key to project.

            mode

            integer

            mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

            path

            string

            path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].storageos

            +
            +

            Description

            +

            storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fsType

            string

            fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

            readOnly

            boolean

            readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

            secretRef

            object

            secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

            volumeName

            string

            volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.

            volumeNamespace

            string

            volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod’s namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to “default” if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].storageos.secretRef

            +
            +

            Description

            +

            secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            +
            +
            +
            +

            .spec.datacenter.racks[].volumes[].vsphereVolume

            +
            +

            Description

            +

            vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            fsType

            string

            fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

            storagePolicyID

            string

            storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

            storagePolicyName

            string

            storagePolicyName is the storage Policy Based Management (SPBM) profile name.

            volumePath

            string

            volumePath is the path that identifies vSphere volume vmdk

            +
            +
            +
            +

            .spec.exposeOptions

            +
            +

            Description

            +

            exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            broadcastOptions

            object

            BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

            cql

            object

            cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

            nodeService

            object

            nodeService controls properties of Service dedicated for each ScyllaCluster node.

            +
            +
            +
            +

            .spec.exposeOptions.broadcastOptions

            +
            +

            Description

            +

            BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            clients

            object

            clients specifies options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

            nodes

            object

            nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

            +
            +
            +
            +

            .spec.exposeOptions.broadcastOptions.clients

            +
            +

            Description

            +

            clients specifies options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            podIP

            object

            podIP holds options related to Pod IP address.

            type

            string

            type of the address that is broadcasted.

            +
            +
            +
            +

            .spec.exposeOptions.broadcastOptions.clients.podIP

            +
            +

            Description

            +

            podIP holds options related to Pod IP address.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            source

            string

            sourceType specifies source of the Pod IP.

            +
            +
            +
            +

            .spec.exposeOptions.broadcastOptions.nodes

            +
            +

            Description

            +

            nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            podIP

            object

            podIP holds options related to Pod IP address.

            type

            string

            type of the address that is broadcasted.

            +
            +
            +
            +

            .spec.exposeOptions.broadcastOptions.nodes.podIP

            +
            +

            Description

            +

            podIP holds options related to Pod IP address.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            source

            string

            sourceType specifies source of the Pod IP.

            +
            +
            +
            +

            .spec.exposeOptions.cql

            +
            +

            Description

            +

            cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            ingress

            object

            ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

            +
            +
            +
            +

            .spec.exposeOptions.cql.ingress

            +
            +

            Description

            +

            ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            annotations

            object

            annotations is a custom key value map that gets merged with managed object annotations.

            disabled

            boolean

            disabled controls if Ingress object creation is disabled. Unless disabled, there is an Ingress objects created for every Scylla node. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

            ingressClassName

            string

            ingressClassName specifies Ingress class name. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

            labels

            object

            labels is a custom key value map that gets merged with managed object labels.

            +
            +
            +
            +

            .spec.exposeOptions.cql.ingress.annotations

            +
            +

            Description

            +

            annotations is a custom key value map that gets merged with managed object annotations.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.exposeOptions.cql.ingress.labels

            +
            +

            Description

            +

            labels is a custom key value map that gets merged with managed object labels.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.exposeOptions.nodeService

            +
            +

            Description

            +

            nodeService controls properties of Service dedicated for each ScyllaCluster node.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            allocateLoadBalancerNodePorts

            boolean

            allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

            annotations

            object

            annotations is a custom key value map that gets merged with managed object annotations.

            externalTrafficPolicy

            string

            externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

            internalTrafficPolicy

            string

            internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

            labels

            object

            labels is a custom key value map that gets merged with managed object labels.

            loadBalancerClass

            string

            loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

            type

            string

            type is the Kubernetes Service type.

            +
            +
            +
            +

            .spec.exposeOptions.nodeService.annotations

            +
            +

            Description

            +

            annotations is a custom key value map that gets merged with managed object annotations.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.exposeOptions.nodeService.labels

            +
            +

            Description

            +

            labels is a custom key value map that gets merged with managed object labels.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.genericUpgrade

            +
            +

            Description

            +

            genericUpgrade allows to configure behavior of generic upgrade logic.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            failureStrategy

            string

            failureStrategy specifies which logic is executed when upgrade failure happens. Currently only Retry is supported.

            pollInterval

            string

            pollInterval specifies how often upgrade logic polls on state updates. Increasing this value should lower number of requests sent to apiserver, but it may affect overall time spent during upgrade. DEPRECATED.

            +
            +
            +
            +

            .spec.imagePullSecrets[]

            +
            +

            Description

            +

            LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

            +
            +
            +
            +

            .spec.network

            +
            +

            Description

            +

            network holds the networking config.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            dnsPolicy

            string

            dnsPolicy defines how a pod’s DNS will be configured.

            hostNetworking

            boolean

            hostNetworking determines if scylla uses the host’s network namespace. Setting this option avoids going through Kubernetes SDN and exposes scylla on node’s IP.

            +
            +
            +
            +

            .spec.podMetadata

            +
            +

            Description

            +

            podMetadata controls shared metadata for all pods created based on this spec.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            annotations

            object

            annotations is a custom key value map that gets merged with managed object annotations.

            labels

            object

            labels is a custom key value map that gets merged with managed object labels.

            +
            +
            +
            +

            .spec.podMetadata.annotations

            +
            +

            Description

            +

            annotations is a custom key value map that gets merged with managed object annotations.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.podMetadata.labels

            +
            +

            Description

            +

            labels is a custom key value map that gets merged with managed object labels.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.readinessGates[]

            +
            +

            Description

            +

            PodReadinessGate contains the reference to a pod condition

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            conditionType

            string

            ConditionType refers to a condition in the pod’s condition list with matching type.

            +
            +
            +
            +

            .spec.repairs[]

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            dc

            array (string)

            dc is a list of datacenter glob patterns, e.g. ‘dc1’, ‘!otherdc*’ used to specify the DCs to include or exclude from backup.

            failFast

            boolean

            failFast indicates if a repair should be stopped on first error.

            host

            string

            host specifies a host to repair. If empty, all hosts are repaired.

            intensity

            string

            intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs). Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs. Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume. For Scylla clusters that do not support row-level repair, intensity can be a decimal between (0,1). In that case it specifies percent of shards that can be repaired in parallel on a repair master node. For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1.

            interval

            string

            interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s.

            keyspace

            array (string)

            keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

            name

            string

            name is a unique name of a task.

            numRetries

            integer

            numRetries indicates how many times a scheduled task will be retried before failing.

            parallel

            integer

            parallel is the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used. The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes. The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2.

            smallTableThreshold

            string

            smallTableThreshold enable small table optimization for tables of size lower than given threshold. Supported units [B, MiB, GiB, TiB].

            startDate

            string

            startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

            +
            +
            +
            +

            .status

            +
            +

            Description

            +

            status is the current status of this scylla cluster.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            availableMembers

            integer

            availableMembers is the number of ScyllaDB members in all racks that are available.

            backups

            array (object)

            backups reflects status of backup tasks.

            conditions

            array (object)

            conditions hold conditions describing ScyllaCluster state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False.

            managerId

            string

            managerId contains ID under which cluster was registered in Scylla Manager.

            members

            integer

            members is the number of ScyllaDB members in all racks.

            observedGeneration

            integer

            observedGeneration is the most recent generation observed for this ScyllaCluster. It corresponds to the ScyllaCluster’s generation, which is updated on mutation by the API Server.

            rackCount

            integer

            rackCount is the number of ScyllaDB racks in this cluster.

            racks

            object

            racks reflect status of cluster racks.

            readyMembers

            integer

            readyMembers is the number of ScyllaDB members in all racks that are ready.

            repairs

            array (object)

            repairs reflects status of repair tasks.

            upgrade

            object

            upgrade reflects state of ongoing upgrade procedure.

            +
            +
            +
            +

            .status.backups[]

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            dc

            array (string)

            dc is a list of datacenter glob patterns, e.g. ‘dc1,!otherdc*’ used to specify the DCs to include or exclude from backup.

            error

            string

            error holds the backup task error, if any.

            id

            string

            id is the identification number of the backup task.

            interval

            string

            interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s.

            keyspace

            array (string)

            keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

            location

            array (string)

            location is a list of backup locations in the format [<dc>:]<provider>:<name> ex. s3:my-bucket. The <dc>: part is optional and is only needed when different datacenters are being used to upload data to different locations. <name> must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden. The only supported storage <provider> at the moment are s3 and gcs.

            name

            string

            name is a unique name of a task.

            numRetries

            integer

            numRetries indicates how many times a scheduled task will be retried before failing.

            rateLimit

            array (string)

            rateLimit is a list of megabytes (MiB) per second rate limits expressed in the format [<dc>:]<limit>. The <dc>: part is optional and only needed when different datacenters need different upload limits. Set to 0 for no limit (default 100).

            retention

            integer

            retention is the number of backups which are to be stored.

            snapshotParallel

            array (string)

            snapshotParallel is a list of snapshot parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set, the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

            startDate

            string

            startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

            uploadParallel

            array (string)

            uploadParallel is a list of upload parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

            +
            +
            +
            +

            .status.conditions[]

            +
            +

            Description

            +
            +
            Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example,

            type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:”conditions,omitempty” patchStrategy:”merge” patchMergeKey:”type” protobuf:”bytes,1,rep,name=conditions” +// other fields }

            +
            +
            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            lastTransitionTime

            string

            lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

            message

            string

            message is a human readable message indicating details about the transition. This may be an empty string.

            observedGeneration

            integer

            observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

            reason

            string

            reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

            status

            string

            status of the condition, one of True, False, Unknown.

            type

            string

            type of condition in CamelCase or in foo.example.com/CamelCase. — Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

            +
            +
            +
            +

            .status.racks

            +
            +

            Description

            +

            racks reflect status of cluster racks.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .status.repairs[]

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            dc

            array (string)

            dc is a list of datacenter glob patterns, e.g. ‘dc1’, ‘!otherdc*’ used to specify the DCs to include or exclude from backup.

            error

            string

            error holds the repair task error, if any.

            failFast

            boolean

            failFast indicates if a repair should be stopped on first error.

            host

            string

            host specifies a host to repair. If empty, all hosts are repaired.

            id

            string

            id is the identification number of the repair task.

            intensity

            string

            intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs). Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs. Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume. For Scylla clusters that do not support row-level repair, intensity can be a decimal between (0,1). In that case it specifies percent of shards that can be repaired in parallel on a repair master node. For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1.

            interval

            string

            interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s.

            keyspace

            array (string)

            keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

            name

            string

            name is a unique name of a task.

            numRetries

            integer

            numRetries indicates how many times a scheduled task will be retried before failing.

            parallel

            integer

            parallel is the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used. The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes. The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2.

            smallTableThreshold

            string

            smallTableThreshold enable small table optimization for tables of size lower than given threshold. Supported units [B, MiB, GiB, TiB].

            startDate

            string

            startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

            +
            +
            +
            +

            .status.upgrade

            +
            +

            Description

            +

            upgrade reflects state of ongoing upgrade procedure.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            currentNode

            string

            currentNode node under upgrade. DEPRECATED.

            currentRack

            string

            currentRack rack under upgrade. DEPRECATED.

            dataSnapshotTag

            string

            dataSnapshotTag is the snapshot tag of data keyspaces.

            fromVersion

            string

            fromVersion reflects from which version ScyllaCluster is being upgraded.

            state

            string

            state reflects current upgrade state.

            systemSnapshotTag

            string

            systemSnapshotTag is the snapshot tag of system keyspaces.

            toVersion

            string

            toVersion reflects to which version ScyllaCluster is being upgraded.

            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html b/v1.12/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html new file mode 100644 index 00000000000..cdf4890e056 --- /dev/null +++ b/v1.12/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html @@ -0,0 +1,5297 @@ + + + + + + + + + + + + + ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)

            +
            +
            APIVersion: scylla.scylladb.com/v1alpha1
            +
            Kind: ScyllaDBMonitoring
            +
            PluralName: scylladbmonitorings
            +
            SingularName: scylladbmonitoring
            +
            Scope: Namespaced
            +
            ListKind: ScyllaDBMonitoringList
            +
            Served: true
            +
            Storage: true
            +
            +
            +

            Description

            +

            ScyllaDBMonitoring defines a monitoring instance for ScyllaDB clusters.

            +
            +
            +

            Specification

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            apiVersion

            string

            APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

            kind

            string

            Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

            metadata

            object

            spec

            object

            spec defines the desired state of this ScyllaDBMonitoring.

            status

            object

            status is the current status of this ScyllaDBMonitoring.

            +
            +

            .metadata

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec

            +
            +

            Description

            +

            spec defines the desired state of this ScyllaDBMonitoring.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            components

            object

            components hold additional config for the monitoring components in use.

            endpointsSelector

            object

            endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors.

            type

            string

            type determines the platform type of the monitoring setup.

            +
            +
            +
            +

            .spec.components

            +
            +

            Description

            +

            components hold additional config for the monitoring components in use.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            grafana

            object

            grafana holds configuration for the grafana instance, if any.

            prometheus

            object

            prometheus holds configuration for the prometheus instance, if any.

            +
            +
            +
            +

            .spec.components.grafana

            +
            +

            Description

            +

            grafana holds configuration for the grafana instance, if any.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            authentication

            object

            authentication hold the authentication options for accessing Grafana.

            exposeOptions

            object

            exposeOptions specifies options for exposing Grafana UI.

            placement

            object

            placement describes restrictions for the nodes Grafana is scheduled on.

            resources

            object

            resources the Grafana container will use.

            servingCertSecretName

            string

            servingCertSecretName is the name of the secret holding a serving cert-key pair. If not specified, the operator will create a self-signed CA that creates the default serving cert-key pair.

            +
            +
            +
            +

            .spec.components.grafana.authentication

            +
            +

            Description

            +

            authentication hold the authentication options for accessing Grafana.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            insecureEnableAnonymousAccess

            boolean

            insecureEnableAnonymousAccess allows access to Grafana without authentication.

            +
            +
            +
            +

            .spec.components.grafana.exposeOptions

            +
            +

            Description

            +

            exposeOptions specifies options for exposing Grafana UI.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            webInterface

            object

            webInterface specifies expose options for the user web interface.

            +
            +
            +
            +

            .spec.components.grafana.exposeOptions.webInterface

            +
            +

            Description

            +

            webInterface specifies expose options for the user web interface.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            ingress

            object

            ingress is an Ingress configuration options.

            +
            +
            +
            +

            .spec.components.grafana.exposeOptions.webInterface.ingress

            +
            +

            Description

            +

            ingress is an Ingress configuration options.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            annotations

            object

            annotations specifies custom annotations merged into every Ingress object.

            disabled

            boolean

            disabled controls if Ingress object creation is disabled.

            dnsDomains

            array (string)

            dnsDomains is a list of DNS domains this ingress is reachable by.

            ingressClassName

            string

            ingressClassName specifies Ingress class name.

            +
            +
            +
            +

            .spec.components.grafana.exposeOptions.webInterface.ingress.annotations

            +
            +

            Description

            +

            annotations specifies custom annotations merged into every Ingress object.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.grafana.placement

            +
            +

            Description

            +

            placement describes restrictions for the nodes Grafana is scheduled on.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            nodeAffinity

            object

            nodeAffinity describes node affinity scheduling rules for the pod.

            podAffinity

            object

            podAffinity describes pod affinity scheduling rules.

            podAntiAffinity

            object

            podAntiAffinity describes pod anti-affinity scheduling rules.

            tolerations

            array (object)

            tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

            +
            +
            +
            +

            .spec.components.grafana.placement.nodeAffinity

            +
            +

            Description

            +

            nodeAffinity describes node affinity scheduling rules for the pod.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            object

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

            +
            +
            +
            +

            .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preference

            object

            A node selector term, associated with the corresponding weight.

            weight

            integer

            Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

            +
            +

            Description

            +

            A node selector term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            A list of node selector requirements by node’s labels.

            matchFields

            array (object)

            A list of node selector requirements by node’s fields.

            +
            +
            +
            +

            .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

            +
            +

            Description

            +

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            nodeSelectorTerms

            array (object)

            Required. A list of node selector terms. The terms are ORed.

            +
            +
            +
            +

            .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

            +
            +

            Description

            +

            A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            A list of node selector requirements by node’s labels.

            matchFields

            array (object)

            A list of node selector requirements by node’s fields.

            +
            +
            +
            +

            .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity

            +
            +

            Description

            +

            podAffinity describes pod affinity scheduling rules.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            array (object)

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            podAffinityTerm

            object

            Required. A pod affinity term, associated with the corresponding weight.

            weight

            integer

            weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

            +
            +

            Description

            +

            Required. A pod affinity term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity

            +
            +

            Description

            +

            podAntiAffinity describes pod anti-affinity scheduling rules.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            array (object)

            If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            podAffinityTerm

            object

            Required. A pod affinity term, associated with the corresponding weight.

            weight

            integer

            weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

            +
            +

            Description

            +

            Required. A pod affinity term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.grafana.placement.tolerations[]

            +
            +

            Description

            +

            The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            effect

            string

            Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

            key

            string

            Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

            operator

            string

            Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

            tolerationSeconds

            integer

            TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

            value

            string

            Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

            +
            +
            +
            +

            .spec.components.grafana.resources

            +
            +

            Description

            +

            resources the Grafana container will use.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            claims

            array (object)

            +
            Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

            This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

            +
            +
            +

            limits

            object

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            requests

            object

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +
            +

            .spec.components.grafana.resources.claims[]

            +
            +

            Description

            +

            ResourceClaim references one entry in PodSpec.ResourceClaims.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

            +
            +
            +
            +

            .spec.components.grafana.resources.limits

            +
            +

            Description

            +

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.grafana.resources.requests

            +
            +

            Description

            +

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus

            +
            +

            Description

            +

            prometheus holds configuration for the prometheus instance, if any.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            exposeOptions

            object

            exposeOptions specifies options for exposing Prometheus UI.

            placement

            object

            placement describes restrictions for the nodes Prometheus is scheduled on.

            resources

            object

            resources the Prometheus container will use.

            storage

            object

            storage describes the underlying storage that Prometheus will consume.

            +
            +
            +
            +

            .spec.components.prometheus.exposeOptions

            +
            +

            Description

            +

            exposeOptions specifies options for exposing Prometheus UI.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            webInterface

            object

            webInterface specifies expose options for the user web interface.

            +
            +
            +
            +

            .spec.components.prometheus.exposeOptions.webInterface

            +
            +

            Description

            +

            webInterface specifies expose options for the user web interface.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            ingress

            object

            ingress is an Ingress configuration options.

            +
            +
            +
            +

            .spec.components.prometheus.exposeOptions.webInterface.ingress

            +
            +

            Description

            +

            ingress is an Ingress configuration options.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            annotations

            object

            annotations specifies custom annotations merged into every Ingress object.

            disabled

            boolean

            disabled controls if Ingress object creation is disabled.

            dnsDomains

            array (string)

            dnsDomains is a list of DNS domains this ingress is reachable by.

            ingressClassName

            string

            ingressClassName specifies Ingress class name.

            +
            +
            +
            +

            .spec.components.prometheus.exposeOptions.webInterface.ingress.annotations

            +
            +

            Description

            +

            annotations specifies custom annotations merged into every Ingress object.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.placement

            +
            +

            Description

            +

            placement describes restrictions for the nodes Prometheus is scheduled on.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            nodeAffinity

            object

            nodeAffinity describes node affinity scheduling rules for the pod.

            podAffinity

            object

            podAffinity describes pod affinity scheduling rules.

            podAntiAffinity

            object

            podAntiAffinity describes pod anti-affinity scheduling rules.

            tolerations

            array (object)

            tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

            +
            +
            +
            +

            .spec.components.prometheus.placement.nodeAffinity

            +
            +

            Description

            +

            nodeAffinity describes node affinity scheduling rules for the pod.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            object

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

            +
            +
            +
            +

            .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preference

            object

            A node selector term, associated with the corresponding weight.

            weight

            integer

            Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

            +
            +

            Description

            +

            A node selector term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            A list of node selector requirements by node’s labels.

            matchFields

            array (object)

            A list of node selector requirements by node’s fields.

            +
            +
            +
            +

            .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

            +
            +

            Description

            +

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            nodeSelectorTerms

            array (object)

            Required. A list of node selector terms. The terms are ORed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

            +
            +

            Description

            +

            A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            A list of node selector requirements by node’s labels.

            matchFields

            array (object)

            A list of node selector requirements by node’s fields.

            +
            +
            +
            +

            .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

            +
            +

            Description

            +

            A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            The label key that the selector applies to.

            operator

            string

            Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

            values

            array (string)

            An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity

            +
            +

            Description

            +

            podAffinity describes pod affinity scheduling rules.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            array (object)

            If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            podAffinityTerm

            object

            Required. A pod affinity term, associated with the corresponding weight.

            weight

            integer

            weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

            +
            +

            Description

            +

            Required. A pod affinity term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity

            +
            +

            Description

            +

            podAntiAffinity describes pod anti-affinity scheduling rules.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            preferredDuringSchedulingIgnoredDuringExecution

            array (object)

            The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

            requiredDuringSchedulingIgnoredDuringExecution

            array (object)

            If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            podAffinityTerm

            object

            Required. A pod affinity term, associated with the corresponding weight.

            weight

            integer

            weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

            +
            +

            Description

            +

            Required. A pod affinity term, associated with the corresponding weight.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

            +
            +

            Description

            +

            Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            labelSelector

            object

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            matchLabelKeys

            array (string)

            MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            mismatchLabelKeys

            array (string)

            MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

            namespaceSelector

            object

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            namespaces

            array (string)

            namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

            topologyKey

            string

            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

            +
            +

            Description

            +

            A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

            +
            +

            Description

            +

            A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.placement.tolerations[]

            +
            +

            Description

            +

            The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            effect

            string

            Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

            key

            string

            Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

            operator

            string

            Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

            tolerationSeconds

            integer

            TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

            value

            string

            Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

            +
            +
            +
            +

            .spec.components.prometheus.resources

            +
            +

            Description

            +

            resources the Prometheus container will use.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            claims

            array (object)

            +
            Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

            This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

            +
            +
            +

            limits

            object

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            requests

            object

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +
            +

            .spec.components.prometheus.resources.claims[]

            +
            +

            Description

            +

            ResourceClaim references one entry in PodSpec.ResourceClaims.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            name

            string

            Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

            +
            +
            +
            +

            .spec.components.prometheus.resources.limits

            +
            +

            Description

            +

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.resources.requests

            +
            +

            Description

            +

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.storage

            +
            +

            Description

            +

            storage describes the underlying storage that Prometheus will consume.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            annotations

            object

            Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations

            labels

            object

            Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels

            volumeClaimTemplate

            object

            volumeClaimTemplates is a PVC template defining storage to be used by Prometheus.

            +
            +
            +
            +

            .spec.components.prometheus.storage.annotations

            +
            +

            Description

            +

            Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.storage.labels

            +
            +

            Description

            +

            Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.storage.volumeClaimTemplate

            +
            +

            Description

            +

            volumeClaimTemplates is a PVC template defining storage to be used by Prometheus.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            metadata

            object

            May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

            spec

            object

            The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

            +
            +
            +
            +

            .spec.components.prometheus.storage.volumeClaimTemplate.metadata

            +
            +

            Description

            +

            May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.storage.volumeClaimTemplate.spec

            +
            +

            Description

            +

            The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            accessModes

            array (string)

            accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

            dataSource

            object

            dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

            dataSourceRef

            object

            dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

            resources

            object

            resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

            selector

            object

            selector is a label query over volumes to consider for binding.

            storageClassName

            string

            storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

            volumeAttributesClassName

            string

            volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

            volumeMode

            string

            volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

            volumeName

            string

            volumeName is the binding reference to the PersistentVolume backing this claim.

            +
            +
            +
            +

            .spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource

            +
            +

            Description

            +

            dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            apiGroup

            string

            APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

            kind

            string

            Kind is the type of resource being referenced

            name

            string

            Name is the name of resource being referenced

            +
            +
            +
            +

            .spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef

            +
            +

            Description

            +

            dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            apiGroup

            string

            APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

            kind

            string

            Kind is the type of resource being referenced

            name

            string

            Name is the name of resource being referenced

            namespace

            string

            Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

            +
            +
            +
            +

            .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources

            +
            +

            Description

            +

            resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            limits

            object

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            requests

            object

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +
            +

            .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits

            +
            +

            Description

            +

            Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests

            +
            +

            Description

            +

            Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector

            +
            +

            Description

            +

            selector is a label query over volumes to consider for binding.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec.endpointsSelector

            +
            +

            Description

            +

            endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            matchExpressions

            array (object)

            matchExpressions is a list of label selector requirements. The requirements are ANDed.

            matchLabels

            object

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +
            +

            .spec.endpointsSelector.matchExpressions[]

            +
            +

            Description

            +

            A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            key

            string

            key is the label key that the selector applies to.

            operator

            string

            operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

            values

            array (string)

            values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

            +
            +
            +
            +

            .spec.endpointsSelector.matchLabels

            +
            +

            Description

            +

            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .status

            +
            +

            Description

            +

            status is the current status of this ScyllaDBMonitoring.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            conditions

            array (object)

            conditions hold conditions describing ScyllaDBMonitoring state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False.

            observedGeneration

            integer

            observedGeneration is the most recent generation observed for this ScyllaDBMonitoring. It corresponds to the ScyllaDBMonitoring’s generation, which is updated on mutation by the API Server.

            +
            +
            +
            +

            .status.conditions[]

            +
            +

            Description

            +
            +
            Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example,

            type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:”conditions,omitempty” patchStrategy:”merge” patchMergeKey:”type” protobuf:”bytes,1,rep,name=conditions” +// other fields }

            +
            +
            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            lastTransitionTime

            string

            lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

            message

            string

            message is a human readable message indicating details about the transition. This may be an empty string.

            observedGeneration

            integer

            observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

            reason

            string

            reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

            status

            string

            status of the condition, one of True, False, Unknown.

            type

            string

            type of condition in CamelCase or in foo.example.com/CamelCase. — Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html b/v1.12/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html new file mode 100644 index 00000000000..fb6e4496d1a --- /dev/null +++ b/v1.12/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html @@ -0,0 +1,743 @@ + + + + + + + + + + + + + ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)

            +
            +
            APIVersion: scylla.scylladb.com/v1alpha1
            +
            Kind: ScyllaOperatorConfig
            +
            PluralName: scyllaoperatorconfigs
            +
            SingularName: scyllaoperatorconfig
            +
            Scope: Cluster
            +
            ListKind: ScyllaOperatorConfigList
            +
            Served: true
            +
            Storage: true
            +
            +
            +

            Description

            +

            ScyllaOperatorConfig describes the Scylla Operator configuration.

            +
            +
            +

            Specification

            + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Property

            Type

            Description

            apiVersion

            string

            APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

            kind

            string

            Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

            metadata

            object

            spec

            object

            spec defines the desired state of the operator.

            status

            object

            status defines the observed state of the operator.

            +
            +

            .metadata

            +
            +

            Description

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +

            .spec

            +
            +

            Description

            +

            spec defines the desired state of the operator.

            +
            +
            +

            Type

            +

            object

            + +++++ + + + + + + + + + + + + +

            Property

            Type

            Description

            scyllaUtilsImage

            string

            scyllaUtilsImage is a Scylla image used for running scylla utilities.

            +
            +
            +
            +

            .status

            +
            +

            Description

            +

            status defines the observed state of the operator.

            +
            +
            +

            Type

            +

            object

            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/api-reference/index.html b/v1.12/api-reference/index.html new file mode 100644 index 00000000000..33ef40b01c4 --- /dev/null +++ b/v1.12/api-reference/index.html @@ -0,0 +1,624 @@ + + + + + + + + + + + + + API Reference | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            API Reference

            +

            All APIs provided by Scylla Operator are defined using CRDs and adhere to Kubernetes API standards. You can find out how Kubernetes style REST APIs work on https://kubernetes.io/docs/reference/using-api/ and https://kubernetes.io/docs/reference/access-authn-authz/.

            +
            +

            API Groups and Kinds

            + +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/clients/alternator.html b/v1.12/clients/alternator.html new file mode 100644 index 00000000000..173cb1cc49b --- /dev/null +++ b/v1.12/clients/alternator.html @@ -0,0 +1,703 @@ + + + + + + + + + + + + + Using Alternator (DynamoDB) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Using Alternator (DynamoDB)

            +

            Alternator is a DynamoDB compatible API provided by ScyllaDB. +You can enable it on your ScyllaClusters by adding this section:

            +
            spec:
            +  alternator: {}
            +
            +
            +

            While this is enough to turn it on, there are more options available. +Please refer to our API documentation for details.

            +
            +

            Note

            +

            Contrary to CQL clients, Alternator clients don’t need to connect to every ScyllaDB node directly, nor discover the ScyllaDB node IP addresses. +Alternator protocol is based on HTTP and you can also expose the service “manually” with other networking concepts like Ingresses.

            +
            +
            +

            Credentials

            +

            Scylla Operator enables Alternator authorization by default. +Here is a quick example of how to get the token for accessing Alternator API. +To find out more, please refer to ScyllaDB Alternator documentation.

            +
            +

            Caution

            +

            The salted_hash is only present if password authentication for CQL is set up.

            +

            Always make sure your clusters are configured to use Authentication and Authorization.

            +
            +
            +

            Tip

            +

            You can find a quick example that enables Authentication and Authorization here.

            +
            +
            kubectl exec -it service/<sc-name>-client -c scylla -- cqlsh --user <cql_user> \
            +-e "SELECT salted_hash FROM system_auth.roles WHERE role = '<cql_user>'"
            +
            +
            +
            +
            +

            AWS CLI

            +

            This paragraph shows how to use aws dynamodb cli to remotely connect to ScyllaDB Alternator API.

            +
            +

            Note

            +

            This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured networking options differently, +or are using additional networking concepts like Ingresses, this address will need to be adjusted.

            +
            +
            +

            Caution

            +

            At the time of writing this document kubectl exec -i echoes passwords into the terminal. +It can be avoided by manually running kubectl exec -it and copying the output into a file / variable. +Because using kubectl exec with -t option merges standard and error outputs, we can’t use it in the scripts bellow.

            +

            See https://github.com/kubernetes/kubernetes/issues/123913 for more details.

            +
            +
            SCYLLACLUSTER_NAME=scylladb
            +CQL_USER=cassandra
            +
            +
            +
            SCYLLADB_EP="$( kubectl get "service/${SCYLLACLUSTER_NAME}-client" -o='jsonpath={.spec.clusterIP}' )"
            +AWS_ENDPOINT_URL_DYNAMODB="https://${SCYLLADB_EP}:8043"
            +export AWS_ENDPOINT_URL_DYNAMODB
            +
            +AWS_ACCESS_KEY_ID="${CQL_USER}"
            +export AWS_ACCESS_KEY_ID
            +AWS_SECRET_ACCESS_KEY="$( kubectl exec -i "service/${SCYLLACLUSTER_NAME}-client" -c scylla -- cqlsh --user ${CQL_USER} --no-color \
            +-e "SELECT salted_hash from system_auth.roles WHERE role = '${AWS_ACCESS_KEY_ID}';" \
            +| sed -e 's/\r//g' | sed -e '4q;d' | sed -E -e 's/^\s+//' )"
            +export AWS_SECRET_ACCESS_KEY
            +
            +AWS_CA_BUNDLE="$( mktemp )"
            +export AWS_CA_BUNDLE
            +kubectl get "configmap/${SCYLLACLUSTER_NAME}-alternator-local-serving-ca" --template='{{ index .data "ca-bundle.crt" }}' > "${AWS_CA_BUNDLE}"
            +
            +
            +

            Now we can use aws dynamodb cli without modifications.

            +
            aws dynamodb create-table --table-name MusicCollection --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
            +
            +
            +
            TABLEDESCRIPTION        2024-03-01T16:35:41+01:00       5c8aae70-d7e1-11ee-a99e-6f31aaf1d6d3    MusicCollection ACTIVE
            +ATTRIBUTEDEFINITIONS    Artist  S
            +ATTRIBUTEDEFINITIONS    SongTitle       S
            +KEYSCHEMA       Artist  HASH
            +KEYSCHEMA       SongTitle       RANGE
            +PROVISIONEDTHROUGHPUT   5       5
            +
            +
            +
            aws dynamodb list-tables
            +
            +
            +
            TABLENAMES      MusicCollection
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/clients/cql.html b/v1.12/clients/cql.html new file mode 100644 index 00000000000..81bc207e960 --- /dev/null +++ b/v1.12/clients/cql.html @@ -0,0 +1,749 @@ + + + + + + + + + + + + + Using CQL | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + + + +
            +

            Using CQL

            +

            cqlsh is the CQL shell for ScyllaDB. You can learn more about it in ScyllaDB documentation.

            +
            +

            Authentication and Authorization

            +

            For security reasons, you should always enable Authentication and Authorization. +At this point, this needs to be done manually in ScyllaDB Config. +You can find an example configuration bellow:

            +
            apiVersion: v1
            +kind: ConfigMap
            +metadata:
            +  name: scylla-config
            +data:
            +  scylla.yaml: |
            +    authenticator: PasswordAuthenticator
            +    authorizer: CassandraAuthorizer
            +
            +
            +
            +
            +

            Embedded cqlsh (aka localhost)

            +

            Every ScyllaDB node has an integrated cqlsh available. Here is an example of how it can be used:

            +
            + +
            +
            kubectl exec -it service/<sc-name>-client -c scylla -- cqlsh -u <user>
            +
            +
            +
            + +
            +
            kubectl exec -it pod/<sc-name>-<datacenter>-<node-index> -c scylla -- cqlsh -u <user>
            +
            +
            +
            +
            +
            Password: 
            +Connected to scylla at 127.0.0.1:9042
            +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4]
            +Use HELP for help.
            +<user>@cqlsh>
            +
            +
            +
            +
            +

            Remote cqlsh

            +

            This paragraph shows how to use cqlsh to remotely connect to a ScyllaDB node. +It is strongly recommended to access CQL over TLS connections on port 9142 instead of unencrypted 9042. +Note that Scylla Operator sets up TLS certificates by default and makes them accessible in the Kubernetes API, +so the encrypted port 9142 works by default.

            +
            +

            Caution

            +

            In future releases the unencrypted port 9042 will be disabled by default, unless explicitly opted-in.

            +
            +
            +

            Caution

            +

            To avoid unnecessary complexity, the following example simplifies how the credentials file is created. +Please create the credentials file with your text editor and avoid your password leaking into your bash history or environment variables. +To store the configuration permanently, please adjust SCYLLADB_CONFIG variable to an empty folder of your choice.

            +
            +
            +

            Note

            +

            This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured the networking options differently, +you may need to adjust this endpoint. Please refer to discovery documentation page.

            +
            +
            SCYLLADB_CONFIG="$( mktemp -d )" 
            +
            +cat <<EOF > "${SCYLLADB_CONFIG}/credentials"
            +[PlainTextAuthProvider]
            +username = <your_username>
            +password = <your_password>
            +EOF
            +chmod 600 "${SCYLLADB_CONFIG}/credentials"
            +
            +SCYLLADB_DISCOVERY_EP="$( kubectl get service/<sc-name>-client -o='jsonpath={.spec.clusterIP}' )"
            +kubectl get configmap/<sc-name>-local-serving-ca -o='jsonpath={.data.ca-bundle\.crt}' > "${SCYLLADB_CONFIG}/serving-ca-bundle.crt"
            +kubectl get secret/<sc-name>-local-user-admin -o='jsonpath={.data.tls\.crt}' | base64 -d > "${SCYLLADB_CONFIG}/admin.crt"
            +kubectl get secret/<sc-name>-local-user-admin -o='jsonpath={.data.tls\.key}' | base64 -d > "${SCYLLADB_CONFIG}/admin.key"
            +
            +cat <<EOF > "${SCYLLADB_CONFIG}/cqlshrc"
            +[authentication]
            +credentials = ${SCYLLADB_CONFIG}/credentials
            +[connection]
            +hostname = ${SCYLLADB_DISCOVERY_EP}
            +port = 9142
            +ssl=true
            +factory = cqlshlib.ssl.ssl_transport_factory
            +[ssl]
            +validate=true
            +certfile=${SCYLLADB_CONFIG}/serving-ca-bundle.crt
            +usercert=${SCYLLADB_CONFIG}/admin.crt
            +userkey=${SCYLLADB_CONFIG}/admin.key
            +EOF
            +
            +
            +
            + +
            +
            cqlsh --cqlshrc="${SCYLLADB_CONFIG}/cqlshrc"
            +
            +
            +
            + +
            +
            podman run -it --rm --entrypoint=cqlsh \
            +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro,Z" \
            +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro,Z" \
            +docker.io/scylladb/scylla:5.4.3
            +
            +
            +
            + +
            +
            docker run -it --rm --entrypoint=cqlsh \
            +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro" \
            +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro" \
            +docker.io/scylladb/scylla:5.4.3
            +
            +
            +
            +
            +
            Connected to scylla at <CLUSTER_IP>:9142
            +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4]
            +Use HELP for help.
            +<your_username>@cqlsh> 
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/clients/discovery.html b/v1.12/clients/discovery.html new file mode 100644 index 00000000000..69b3dce91a4 --- /dev/null +++ b/v1.12/clients/discovery.html @@ -0,0 +1,688 @@ + + + + + + + + + + + + + Discovering ScyllaDB Nodes | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Discovering ScyllaDB Nodes

            +
            +

            Preface

            +

            Outside the Kubernetes ecosystem, ScyllaDB nodes are usually set up on static IP addresses +and a fixed subset of them is configured as the initial contact points for ScyllaDB clients. +This has several disadvantages because this particular subset of nodes can be down at the time the client is (re)started, +or the nodes can be replaced and change their IP addresses. +The latter can be mitigated by using DNS and updating the records.

            +

            Scylla Operator allows setting up ScyllaDB in several network configurations, some of which are based on ephemeral IPs. +This makes solving the above-mentioned issues more pressing.

            +
            +
            +

            ScyllaDB Discovery Endpoint

            +

            For every ScyllaCluster, the operator will set up a Kubernetes Service (an internal load balancer) selecting all ScyllaDB nodes +and the internal Kubernetes controllers make sure to continuously update its endpoints with a subset of ScyllaDB nodes that are ready. +Because of that, you can always talk to ScyllaDB through this endpoint, as long as there are nodes to back it. +In case you are in the same Kubernetes cluster you can also use internal DNS for this service.

            +

            Clients can use this endpoint for the initial connection to reach one of the ScyllaDB nodes that are ready +and from there the drivers will automatically discover the per-node IP address for every ScyllaDB node that’s part of this cluster.

            +

            This service is called <sc-name>-client and in its default configuration it uses ClusterIP which is virtual and local to the Kubernetes cluster. +It can be configured to be backed by an external load balancer, be exposed through an Ingress, an additional hop or in other ways. +Depending on how you have configured the networking, use the appropriate IP address or DNS name for your client.

            +

            Here is an example of how the unmodified service looks like:

            +
            kubectl get scyllacluster/scylla service/scylla-client
            +
            +
            +
            NAME                                       READY   MEMBERS   RACKS   AVAILABLE   PROGRESSING   DEGRADED   AGE
            +scyllacluster.scylla.scylladb.com/scylla   1       1         1       True        True          True       10d
            +
            +NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                                                                                   AGE
            +service/scylla-client   ClusterIP   10.102.44.43   <none>        7000/TCP,7001/TCP,9042/TCP,9142/TCP,19042/TCP,19142/TCP,7199/TCP,10001/TCP,9180/TCP,5090/TCP,9100/TCP,9160/TCP,8043/TCP   10d
            +
            +
            +

            You can get only the ClusterIP using

            +
            kubectl get service/scylla-client -o='jsonpath={.spec.clusterIP}'
            +
            +
            +

            or use its DNS name (scylla-client.<sc-namespace>.svc).

            +
            +

            Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary

            +

            In case you are connecting from outside the Kubernetes cluster and using Pod IPs as your exposure type, you can expose just the <sc-name>-client service using an internal load balancer. +Having a stable contact point is especially important when using ephemeral Pod IPs. +Services configure internal load balancer using provider-specific annotations, so this may differ with your provider.

            +
            +

            Tip

            +

            To learn more about exposing ScyllaClusters, visit our dedicated documentation page.

            +
            +
            + +
            +
            kubectl patch service/<sc-name>-client -p '{"metadata": {"annotations": {"networking.gke.io/load-balancer-type": "Internal"}}, "spec": {"type": "LoadBalancer"}}'
            +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/<sc-name>-client
            +kubectl get service/<sc-name>-client -o='jsonpath={.status.loadBalancer.ingress[0].ip}'
            +
            +
            +
            + +
            +
            kubectl patch service/<sc-name>-client -p '{"metadata": {"annotations": {"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal", "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "tcp"}}, "spec": {"type": "LoadBalancer"}}'
            +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/<sc-name>-client
            +kubectl get service/<sc-name>-client -o='jsonpath={.status.loadBalancer.ingress[0].hostname}'
            +
            +
            +
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/clients/index.html b/v1.12/clients/index.html new file mode 100644 index 00000000000..fb3d7c00d0f --- /dev/null +++ b/v1.12/clients/index.html @@ -0,0 +1,605 @@ + + + + + + + + + + + + + Using ScyllaDB APIs | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Using ScyllaDB APIs

            + +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/contributing.html b/v1.12/contributing.html new file mode 100644 index 00000000000..ddc8c9bd7dc --- /dev/null +++ b/v1.12/contributing.html @@ -0,0 +1,765 @@ + + + + + + + + + + + + + Contributing to Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Contributing to Scylla Operator

            +
            +

            Prerequisites

            +

            To develop on scylla-operator, your environment must have the following:

            +
              +
            1. Go 1.13

              +
                +
              • Make sure GOPATH is set to GOPATH=$HOME/go.

              • +
              +
            2. +
            3. Kustomize v3.1.0

            4. +
            5. kubebuilder v2.3.1

            6. +
            7. Docker

            8. +
            9. Git client installed

            10. +
            11. Github account

            12. +
            +

            To install all dependencies (Go, kustomize, kubebuilder, dep), simply run:

            +
            ./install-dependencies.sh
            +
            +
            +
            +
            +

            Initial Setup

            +
            +

            Create a Fork

            +

            From your browser navigate to http://github.com/scylladb/scylla-operator and click the “Fork” button.

            +
            +
            +

            Clone Your Fork

            +

            Open a console window and do the following:

            +
            # Create the scylla operator repo path
            +mkdir -p $GOPATH/src/github.com/scylladb
            +
            +# Navigate to the local repo path and clone your fork
            +cd $GOPATH/src/github.com/scylladb
            +
            +# Clone your fork, where <user> is your GitHub account name
            +git clone https://github.com/<user>/scylla-operator.git
            +
            +
            +
            +
            +

            Add Upstream Remote

            +

            First you will need to add the upstream remote to your local git:

            +
            # Add 'upstream' to the list of remotes
            +git remote add upstream https://github.com/scylladb/scylla-operator.git
            +
            +# Verify the remote was added
            +git remote -v
            +
            +
            +

            Now you should have at least origin and upstream remotes. You can also add other remotes to collaborate with other contributors.

            +
            +
            +
            +

            Development

            +

            To add a feature or to make a bug fix, you will need to create a branch in your fork and then submit a pull request (PR) from the branch.

            +
            +

            Building the project

            +

            You can build the project using the Makefile commands:

            +
              +
            • Open the Makefile and change the IMG environment variable to a repository you have access to.

            • +
            • Run make docker-push and wait for the image to be built and uploaded in your repo.

            • +
            +
            +
            +

            Create a Branch

            +

            From a console, create a new branch based on your fork and start working on it:

            +
            # Ensure all your remotes are up to date with the latest
            +git fetch --all
            +
            +# Create a new branch that is based off upstream master.  Give it a simple, but descriptive name.
            +# Generally it will be two to three words separated by dashes and without numbers.
            +git checkout -b feature-name upstream/master
            +
            +
            +

            Now you are ready to make the changes and commit to your branch.

            +
            +
            +

            Updating Your Fork

            +

            During the development lifecycle, you will need to keep up-to-date with the latest upstream master. As others on the team push changes, you will need to rebase your commits on top of the latest. This avoids unnecessary merge commits and keeps the commit history clean.

            +

            Whenever you need to update your local repository, you never want to merge. You always will rebase. Otherwise you will end up with merge commits in the git history. If you have any modified files, you will first have to stash them (git stash save -u "<some description>").

            +
            git fetch --all
            +git rebase upstream/master
            +
            +
            +

            Rebasing is a very powerful feature of Git. You need to understand how it works or else you will risk losing your work. Read about it in the Git documentation, it will be well worth it. In a nutshell, rebasing does the following:

            +
              +
            • “Unwinds” your local commits. Your local commits are removed temporarily from the history.

            • +
            • The latest changes from upstream are added to the history

            • +
            • Your local commits are re-applied one by one

            • +
            • If there are merge conflicts, you will be prompted to fix them before continuing. Read the output closely. It will tell you how to complete the rebase.

            • +
            • When done rebasing, you will see all of your commits in the history.

            • +
            +
            +
            +
            +

            Submitting a Pull Request

            +

            Once you have implemented the feature or bug fix in your branch, you will open a PR to the upstream repo. Before opening the PR ensure you have added unit tests, are passing the integration tests, cleaned your commit history, and have rebased on the latest upstream.

            +

            In order to open a pull request (PR) it is required to be up to date with the latest changes upstream. If other commits are pushed upstream before your PR is merged, you will also need to rebase again before it will be merged.

            +
            +

            Commit History

            +

            To prepare your branch to open a PR, you will need to have the minimal number of logical commits so we can maintain +a clean commit history. Most commonly a PR will include a single commit where all changes are squashed, although +sometimes there will be multiple logical commits.

            +
            # Inspect your commit history to determine if you need to squash commits
            +git log
            +
            +# Rebase the commits and edit, squash, or even reorder them as you determine will keep the history clean.
            +# In this example, the last 5 commits will be opened in the git rebase tool.
            +git rebase -i HEAD~5
            +
            +
            +

            Once your commit history is clean, ensure you have based on the latest upstream before you open the PR.

            +
            +
            +

            Commit messages

            +

            Please make the first line of your commit message a summary of the change that a user (not a developer) of Operator would like to read, +and prefix it with the most relevant directory of the change followed by a colon. +The changelog gets made by looking at just these first lines so make it good!

            +

            If you have more to say about the commit, then enter a blank line and carry on the description. +Remember to say why the change was needed - the commit itself shows what was changed.

            +

            Writing more is better than less. Comparing the behaviour before the change to that after the change is very useful. +Imagine you are writing to yourself in 12 months time when you’ve forgotten everything about what you just did, and you need to get up to speed quickly.

            +

            If the change fixes an issue then write Fixes #1234 in the commit message. +This can be on the subject line if it will fit. If you don’t want to close the associated issue just put #1234 and the change will get linked into the issue.

            +

            Here is an example of a short commit message:

            +
            sidecar: log on reconcile loop - fixes #1234
            +
            +
            +

            And here is an example of a longer one:

            +
            
            +api: now supports host networking (#1234)
            +
            +The operator CRD now has a "network" property that can be used to
            +select host networking as well as setting the apropriate DNS policy.
            +
            +Fixes #1234
            +
            +
            +
            +
            +

            Submitting

            +

            Go to the Scylla Operator github to open the PR. If you have pushed recently, you should see an obvious link to open the PR. If you have not pushed recently, go to the Pull Request tab and select your fork and branch for the PR.

            +

            After the PR is open, you can make changes simply by pushing new commits. Your PR will track the changes in your fork and update automatically.

            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/eks.html b/v1.12/eks.html new file mode 100644 index 00000000000..804f2abe5a2 --- /dev/null +++ b/v1.12/eks.html @@ -0,0 +1,760 @@ + + + + + + + + + + + + + Deploying Scylla on EKS | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Deploying Scylla on EKS

            +

            This guide is focused on deploying Scylla on EKS with improved performance. +Performance tricks used by the script won’t work with different machine tiers. +It sets up the kubelets on EKS nodes to run with static cpu policy and uses local sdd disks in RAID0 for maximum performance.

            +

            Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the general guide.

            +
            +

            TL;DR;

            +

            If you don’t want to run the commands step-by-step, you can just run a script that will set everything up for you:

            +
            # Edit according to your preference
            +EKS_REGION=us-east-1
            +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c
            +
            +# From inside the examples/eks folder
            +cd examples/eks
            +./eks.sh -z "$EKS_ZONES" -r "$EKS_REGION"
            +
            +
            +

            After you deploy, see how you can benchmark your cluster with cassandra-stress.

            +
            +
            +

            Walkthrough

            +
            +

            EKS Setup

            +
            +

            Configure environment variables

            +

            First of all, we export all the configuration options as environment variables. +Edit according to your own environment.

            +
            EKS_REGION=us-east-1
            +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c
            +CLUSTER_NAME=scylla-demo
            +
            +
            +
            +
            +

            Creating an EKS cluster

            +

            For this guide, we’ll create an EKS cluster with the following:

            +
              +
            • A NodeGroup of 3 i3-2xlarge Nodes, where the Scylla Pods will be deployed. These nodes will only accept pods having scylla-clusters toleration.

            • +
            +
              - name: scylla-pool
            +    instanceType: i3.2xlarge
            +    desiredCapacity: 3
            +    labels:
            +      scylla.scylladb.com/node-type: scylla
            +    taints:
            +      role: "scylla-clusters:NoSchedule"
            +    ssh:
            +      allow: true
            +    kubeletExtraConfig:
            +      cpuManagerPolicy: static
            +
            +
            +
              +
            • A NodeGroup of 4 c4.2xlarge Nodes to deploy cassandra-stress later on. These nodes will only accept pods having cassandra-stress toleration.

            • +
            +
              - name: cassandra-stress-pool
            +    instanceType: c4.2xlarge
            +    desiredCapacity: 4
            +    labels:
            +      pool: "cassandra-stress-pool"
            +    taints:
            +      role: "cassandra-stress:NoSchedule"
            +    ssh:
            +      allow: true
            +
            +
            +
              +
            • A NodeGroup of 1 i3.large Node, where the monitoring stack and operator will be deployed.

            • +
            +
              - name: monitoring-pool
            +    instanceType: i3.large
            +    desiredCapacity: 1
            +    labels:
            +      pool: "monitoring-pool"
            +    ssh:
            +      allow: true
            +
            +
            +
            +
            +
            +

            Prerequisites

            +
            +

            Installing script third party dependencies

            +

            Script requires several dependencies:

            +
              +
            • eksctl - See: https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html

            • +
            • kubectl - See: https://kubernetes.io/docs/tasks/tools/install-kubectl/

            • +
            +
            +
            +
            +

            Deploying ScyllaDB Operator

            +

            Refer to Deploying Scylla on a Kubernetes Cluster in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites.

            +
            +

            Setting up nodes for ScyllaDB

            +

            ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you’ll first need to form a RAID array from those disks. +NodeConfig performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in Performance tuning section of ScyllaDB Operator’s documentation.

            +

            Deploy NodeConfig to let it take care of the above operations:

            +
            kubectl apply --server-side -f examples/eks/nodeconfig-alpha.yaml
            +
            +
            +
            +
            +

            Deploying Local Volume Provisioner

            +

            Afterwards, deploy ScyllaDB’s Local Volume Provisioner, capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays.

            +
            kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/
            +kubectl apply --server-side -f examples/common/local-volume-provisioner/storageclass_xfs.yaml
            +
            +
            +
            +
            +
            +

            Deploying ScyllaDB

            +

            Now you can follow the steps described in Deploying Scylla on a Kubernetes Cluster to launch your ScyllaDB cluster in a highly performant environment.

            +
            +

            Accessing the database

            +

            Instructions on how to access the database can also be found in the generic guide.

            +
            +
            +
            +

            Deleting an EKS cluster

            +

            Once you are done with your experiments delete your cluster using the following command:

            +
            eksctl delete cluster "${CLUSTER_NAME}"
            +
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/exposing.html b/v1.12/exposing.html new file mode 100644 index 00000000000..6c777ff0f74 --- /dev/null +++ b/v1.12/exposing.html @@ -0,0 +1,906 @@ + + + + + + + + + + + + + Exposing ScyllaCluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Exposing ScyllaCluster

            +

            This document explains how ScyllaDB Operator exposes ScyllaClusters in different network setups. +A ScyllaCluster can be exposed in various network configurations, independently to clients and nodes.

            +
            +

            Note

            +

            ScyllaClusters can be only exposed when the ScyllaDB version used version is >=2023.1 ScyllaDB Enterprise or >=5.2 ScyllaDB Open Source.

            +
            +
            +

            Expose Options

            +

            exposeOptions specifies configuration options for exposing ScyllaCluster’s. +A ScyllaCluster created without any exposeOptions is equivalent to the following:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    nodeService:
            +     type: ClusterIP
            +    broadcastOptions:
            +      clients:
            +        type: ServiceClusterIP
            +      nodes:
            +        type: ServiceClusterIP
            +
            +
            +

            The following sections cover what every field controls and what the configuration options are.

            +
            +

            Node Service Template

            +

            nodeService serves as a template for a node-dedicated Service managed by the Scylla Operator for each node within a ScyllaCluster. +The properties of the Services depend on the selected type. +Additionally, there’s an option to define custom annotations, incorporated into each node’s Service, +which might be useful for further tweaking the Service properties or related objects.

            +
            +

            Headless Type

            +

            For Headless type, Scylla Operator creates a Headless Service with a selector pointing to the particular node in the ScyllaCluster. +Such Service doesn’t provide any additional IP addresses, and the internal DNS record resolves to the PodIP of a node.

            +

            This type of Service is useful when ScyllaCluster nodes broadcast PodIPs to clients and other nodes.

            +

            Example:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    nodeService:
            +     type: Headless
            +
            +
            +
            +
            +

            ClusterIP Type

            +

            For ClusterIP type, Scylla Operator creates a ClusterIP Service backed by a specific node in the ScyllaCluster.

            +

            These IP addresses are only routable within the same Kubernetes cluster, so it’s a good fit, if you don’t want to expose them to other networks.

            +

            Example:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    nodeService:
            +     type: ClusterIP
            +
            +
            +
            +
            +

            LoadBalancer Type

            +

            For the LoadBalancer type, Scylla Operator generates a LoadBalancer Service that directs traffic to a specific node within the ScyllaCluster. +On platforms with support for external load balancers, this Service provisions one. +The accessibility of this load balancer’s address depends on the platform and any customizations made; in some cases it may be reachable from the internal network or public Internet.

            +

            Customizations are usually managed via Service annotations, key-value pairs provided in annotations field are merged into each Service object. +LoadBalancer Services should be configured to pass through entire traffic.
            +For example, to expose LoadBalancer only to internal network use the following annotations:

            +
            + +
            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    nodeService:
            +     type: LoadBalancer
            +     annotations:
            +       service.beta.kubernetes.io/aws-load-balancer-scheme: internal
            +       service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
            +
            +
            +
            + +
            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    nodeService:
            +     type: LoadBalancer
            +     annotations:
            +       networking.gke.io/load-balancer-type: Internal
            +
            +
            +
            +
            +

            Check platform-specific documentation regarding LoadBalancer configuration to learn more about available options.

            +

            LoadBalancer Service is a superset of ClusterIP Service, implying that each LoadBalancer Service also contains an allocated ClusterIP. +They can be configured using the following fields, which propagate to every node Service:

            +
              +
            • externalTrafficPolicy

            • +
            • internalTrafficPolicy

            • +
            • loadBalancerClass

            • +
            • allocateLoadBalancerNodePorts

            • +
            +

            Check Kubernetes Service documentation to learn more about these options.

            +

            Example:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    nodeService:
            +     type: LoadBalancer
            +     loadBalancerClass: my-custom-load-balancer-class
            +
            +
            +
            +
            +
            +
            +

            Broadcast Options

            +

            Broadcast options control what is the source of the address being broadcasted to clients and nodes. +It’s configured independently for clients and nodes because you may want to expose these two types of traffic on different networks. +Using different networks can help manage costs, reliability, latency, security policies or other metrics you care about.

            +
            +

            PodIP Type

            +

            Address broadcasted to clients/nodes is taken from Pod. +By default, the address is taken from Pod’s status.PodIP field. +Because a Pod can use multiple address, you may want to provide source options by specifying podIP.source.

            +

            Example:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    broadcastOptions:
            +       clients:
            +         type: PodIP
            +         podIP:
            +           source: Status
            +
            +
            +
            +
            +

            ServiceClusterIP Type

            +

            Address broadcasted to clients or nodes is taken from spec.ClusterIP field of a node’s dedicated Service.

            +

            In order to configure it, the nodeService template must specify a Service having a ClusterIP assigned.

            +

            Example:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    broadcastOptions:
            +       clients:
            +         type: ServiceClusterIP
            +
            +
            +
            +
            +

            ServiceLoadBalancerIngress Type

            +

            Address broadcasted to clients/nodes is taken from the node dedicated Service, from status.ingress[0].ipAddress or status.ingress[0].hostname field.

            +

            In order to configure it, the nodeService template must specify the LoadBalancer Service.

            +

            Example:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    broadcastOptions:
            +       clients:
            +         type: ServiceLoadBalancerIngress
            +         podIP:
            +           source: Status
            +
            +
            +
            +
            +
            +
            +

            Deployment Examples

            +

            The following section contains several specific examples of various network scenarios and explains how nodes and clients communicate with one another.

            +
            +

            In-cluster only

            +

            ScyllaCluster definition:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    nodeService:
            +      type: ClusterIP
            +    broadcastOptions:
            +      clients:
            +        type: ServiceClusterIP
            +      nodes:
            +        type: ServiceClusterIP
            +
            +
            +

            Both client and nodes are deployed within the same Kubernetes cluster. +They talk through ClusterIP addresses taken from the Service. +Because ClusterIP Services are only routable within the same Kubernetes cluster, this cluster won’t be reachable from outside.

            +

            ClusterIPs

            +
            +
            +

            In-cluster node-to-node, VPC clients-to-nodes

            +

            ScyllaCluster definition:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    nodeService:
            +      type: ClusterIP
            +    broadcastOptions:
            +      clients:
            +        type: PodIP
            +      nodes:
            +        type: ServiceClusterIP
            +
            +
            +

            In this scenario, we assume that the Pod IP subnet is routable within a VPC. +Clients within the VPC network can communicate directly with ScyllaCluster nodes using PodIPs. +Nodes communicate with each other exclusively within the same Kubernetes cluster.

            +

            PodIPs

            +
            +
            +

            Multi VPC

            +

            ScyllaCluster definition:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    nodeService:
            +      type: Headless
            +    broadcastOptions:
            +      clients:
            +        type: PodIP
            +      nodes:
            +        type: PodIP
            +
            +
            +

            In this scenario, we set up two separate Kubernetes clusters in distinct VPCs. +These VPCs are interconnected to facilitate inter-VPC connectivity. +We operate on the assumption that the Pod IP subnet is routable within each VPC.

            +

            Both ScyllaClusters use the same exposeOptions, nodes broadcast their Pod IP addresses, enabling them to establish connections with one another. +****Check other documentation pages to know how to connect two ScyllaClusters into one logical cluster.

            +

            Clients, whether deployed within the same Kubernetes cluster or within a VPC, have the capability to reach nodes using their Pod IPs. +Since there is no requirement for any address other than the Pod IP, the Headless service type is sufficient.

            +

            MultiVPC

            +
            +
            +

            Internet

            +

            ScyllaCluster definition:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    nodeService:
            +      type: LoadBalancer
            +    broadcastOptions:
            +      clients:
            +        type: ServiceLoadBalancerIngress
            +      nodes:
            +        type: ClusterIP 
            +
            +
            +

            We assume that a Kubernetes cluster has been deployed in a cloud provider environment that supports external load balancers. +By specifying the LoadBalancer type in the nodeService template, the Scylla Operator generates a dedicated LB Service for each node. +The cloud provider then establishes an external load balancer with an internet-accessible address. +ScyllaDB nodes broadcast this external address to clients, enabling drivers to connect and discover other nodes. +Since all ScyllaDB nodes reside within the same Kubernetes cluster, there is no need to route traffic through the internet. +Consequently, the nodes are configured to communicate via ClusterIP, which is also accessible within LoadBalancer Services.

            +

            Internet

            +
            +

            Other more complex scenarios can be built upon these simple ones.

            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/generic.html b/v1.12/generic.html new file mode 100644 index 00000000000..dd910cdf391 --- /dev/null +++ b/v1.12/generic.html @@ -0,0 +1,977 @@ + + + + + + + + + + + + + Deploying Scylla on a Kubernetes Cluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Deploying Scylla on a Kubernetes Cluster

            +

            This is a guide to deploy a Scylla Cluster in a generic Kubernetes environment, meaning that Scylla will not be deployed with the ideal performance. +Scylla performs the best when it has fast disks and direct access to the cpu. +This requires some extra setup, which is platform-specific. +For specific configuration and setup, check for details about your particular environment:

            + +
            +

            Prerequisites

            + +
            +
            +

            Running locally

            +

            Running kubernetes locally is a daunting and error prone task. +Fortunately there are ways to make life easier and Minikube makes it a breeze.

            +

            We need to give minikube a little bit more resources than default so start minikube like this:

            +
            minikube start --cpus=6
            +
            +
            +

            Then make kubectl aware of this local installation like this:

            +
            eval $(minikube docker-env)
            +
            +
            +
            +
            +

            Download Scylla Operator

            +

            In this guide you will be using the examples and manifests from Scylla Operator repository, so start off by cloning it to your local machine.

            +
            git clone git@github.com:scylladb/scylla-operator.git
            +cd scylla-operator
            +
            +
            +
            +
            +

            Deploy Cert Manager

            +

            First deploy Cert Manager, you can either follow upsteam instructions or use following command:

            +
            kubectl apply -f examples/common/cert-manager.yaml
            +
            +
            +

            This will install Cert Manager to provision a self-signed certificate.

            +

            Once it’s deployed, wait until Cert Manager is ready:

            +
            kubectl wait --for condition=established crd/certificates.cert-manager.io crd/issuers.cert-manager.io
            +kubectl -n cert-manager rollout status deployment.apps/cert-manager-webhook
            +
            +
            +
            +
            +

            Deploy Scylla Operator

            +

            Deploy the Scylla Operator using the following commands:

            +
            kubectl apply -f deploy/operator.yaml
            +
            +
            +

            This will install the operator in namespace scylla-operator. +Wait until it’s ready:

            +
            kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
            +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
            +
            +
            +

            If you want to check the logs of the operator you can do so with:

            +
            kubectl -n scylla-operator logs deployment.apps/scylla-operator
            +
            +
            +
            +
            +

            Create and Initialize a Scylla Cluster

            +

            Now that the operator is running, we can create an instance of a Scylla cluster by creating an instance of the clusters.scylla.scylladb.com resource. +Some of that resource’s values are configurable, so feel free to browse cluster.yaml and tweak the settings to your liking. +Full details for all the configuration options can be found in the Scylla Cluster CRD documentation.

            +

            When you are ready to create a Scylla cluster, simply run:

            +
            kubectl create -f examples/generic/cluster.yaml
            +
            +
            +

            We can verify that a Kubernetes object has been created that represents our new Scylla cluster with the command below. +This is important because it shows that has successfully extended Kubernetes to make Scylla clusters a first class citizen in the Kubernetes cloud-native environment.

            +
            kubectl -n scylla get ScyllaCluster
            +
            +
            +

            Checking the pods that are created is as easy as:

            +
            kubectl -n scylla get pods
            +
            +
            +

            The output should be something like:

            +
            NAME                                    READY   STATUS    RESTARTS   AGE
            +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          9m49s
            +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          7m43s
            +simple-cluster-us-east-1-us-east-1a-2   2/2     Running   0          6m46s
            +
            +
            +

            It is important to note that the operator creates these instances according to a pattern. +This pattern is as follows: CLUSTER_NAME-DATACENTER_NAME-RACK_NAME-INSTANCE_NUMBER as specified in cluster.yaml.

            +

            In the above example we have the following properties:

            +
              +
            • CLUSTER_NAME: simple-cluster

            • +
            • DATACENTER_NAME: us-east-1

            • +
            • RACK_NAME: us-east-1a

            • +
            • INSTANCE_NUMBER: An automatically generated number attached to the pod name.

            • +
            +

            We picked the names to resemble something you can find in a cloud service but this is inconsequential, they can be set to anything you want.

            +

            To check if all the desired members are running, you should see the same number of entries from the following command as the number of members that was specified in cluster.yaml:

            +
            kubectl -n scylla get pod -l app=scylla
            +
            +
            +

            You can also track the state of a Scylla cluster from its status. To check the current status of a Cluster, run:

            +
            kubectl -n scylla describe ScyllaCluster simple-cluster
            +
            +
            +

            Checking the logs of the running scylla instances can be done like this:

            +
            kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 scylla
            +
            +
            +
            +

            Configure host networking

            +

            To squeeze the most out of your deployment it is sometimes necessary to employ host networking. +To enable this the CRD allows for specifying a network parameter as such:

            +
              version: 5.4.0
            +  agentVersion: 3.2.5
            +  cpuset: true
            +  network:
            +    hostNetworking: true
            +
            +
            +

            This will result in hosts network to be used for the Scylla Stateful Set deployment.

            +
            +
            +

            Configure container kernel parameters

            +

            Sometimes it is necessary to run the container with different kernel parameters. +In order to support this, the Scylla Operator defines a cluster property sysctls that is a list of the desired key-value pairs to set.

            +

            For example: To increase the number events available for asynchronous IO processing in the Linux kernel to N set sysctls tofs.aio-max-nr=N.

            +
            spec:
            +  sysctls:
            +  - "fs.aio-max-nr=2097152"
            +
            +
            +
            +
            +

            Deploying Alternator

            +

            The operator is also capable of deploying Alternator instead of the regular Scylla. +This requires a small change in the cluster definition. +Change the cluster.yaml file from this:

            +
            spec:
            +  agentVersion: 3.2.5
            +  version: 5.4.0
            +  developerMode: true
            +  datacenter:
            +    name: us-east-1
            +
            +
            +

            to this:

            +
            spec:
            +  version: 5.4.0
            +  alternator:
            +    port: 8000
            +    writeIsolation: only_rmw_uses_lwt
            +  agentVersion: 3.2.5
            +  developerMode: true
            +  datacenter:
            +    name: us-east-1
            +
            +
            +

            You can specify whichever port you want.

            +

            You must provide desired write isolation, supported values are: “always”, “forbid_rmw”, “only_rmw_uses_lwt”. +Difference between those isolation levels can be found in Scylla Alternator documentation.

            +

            Once this is done the regular CQL ports will no longer be available, the cluster is a pure Alternator cluster.

            +
            +
            +
            +

            Accessing the Database

            +
              +
            • From kubectl:

            • +
            +

            To get a cqlsh shell in your new Cluster:

            +
            kubectl exec -n scylla -it simple-cluster-us-east-1-us-east-1a-0 -- cqlsh
            +> DESCRIBE KEYSPACES;
            +
            +
            +
              +
            • From inside a Pod:

            • +
            +

            When you create a new Cluster, automatically creates a Service for the clients to use in order to access the Cluster. +The service’s name follows the convention <cluster-name>-client. +You can see this Service in your cluster by running:

            +
            kubectl -n scylla describe service simple-cluster-client
            +
            +
            +

            Pods running inside the Kubernetes cluster can use this Service to connect to Scylla. +Here’s an example using the Python Driver:

            +
            from cassandra.cluster import Cluster
            +
            +cluster = Cluster(['simple-cluster-client.scylla.svc'])
            +session = cluster.connect()
            +
            +
            +

            If you are running the Alternator you can access the API on the port you specified using plain http.

            +
            +
            +

            Configure Scylla

            +

            The operator can take a ConfigMap and apply it to the scylla.yaml configuration file. +This is done by adding a ConfigMap to Kubernetes and refering to this in the Rack specification. +The ConfigMap is just a file called scylla.yaml that has the properties you want to change in it. +The operator will take the default properties for the rest of the configuration.

            +
              +
            • Create a ConfigMap the default name that the operator uses is scylla-config:

            • +
            +
            kubectl create configmap scylla-config -n scylla --from-file=/path/to/scylla.yaml
            +
            +
            +
              +
            • Wait for the mount to propagate and then restart the cluster:

            • +
            +
            kubectl rollout restart -n scylla statefulset/simple-cluster-us-east-1-us-east-1a
            +
            +
            +
              +
            • The new config should be applied automatically by the operator, check the logs to be sure.

            • +
            +

            Configuring cassandra-rackdc.properties is done by adding the file to the same mount as scylla.yaml.

            +
            kubectl create configmap scylla-config -n scylla --from-file=/tmp/scylla.yaml --from-file=/tmp/cassandra-rackdc.properties -o yaml --dry-run | kubectl replace -f -
            +
            +
            +

            The operator will then apply the overridable properties prefer_local and dc_suffix if they are available in the provided mounted file.

            +
            +

            Note

            +

            If you want to enable authentication, you first need to adjust system_auth keyspace replication factor to the number of nodes in the datacenter via cqlsh. It allows you to ensure that the user’s information is kept highly available for the cluster. If system_auth is not equal to the number of nodes and a node fails, the user whose information is on that node will be denied access. +For production environments only use NetworkTopologyStrategy.

            +
            kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : <replication_factor>};"
            +
            +
            +

            You can read more about enabling authentication in the Enable authentication section of ScyllaDB’s documentation.

            +
            +
            +
            +

            Configure Scylla Manager Agent

            +

            The operator creates a second container for each scylla instance that runs Scylla Manager Agent. +This container serves as a sidecar and it’s the main endpoint for interacting with Scylla API. +The Scylla Manager Agent can be configured with various things such as the security token used to allow access to Scylla API and storage providers for backups.

            +

            To configure the agent you just create a new secret called scylla-agent-config-secret and populate it with the contents in the scylla-manager-agent.yaml file like this:

            +
            kubectl create secret -n scylla generic scylla-agent-config-secret --from-file scylla-manager-agent.yaml
            +
            +
            +

            See Scylla Manager Agent configuration for a complete reference of the Scylla Manager agent config file.

            +
            +

            Scylla Manager Agent auth token

            +

            Operator provisions Agent auth token by copying value from user provided config secret or auto generates it if it’s empty. +To check which value is being used, decode content of <cluster-name>-auth-token secret. +To change it simply remove the secret. Operator will create a new one. To pick up the change in the cluster, initiate a rolling restart.

            +
            +
            +
            +

            Set up monitoring

            +

            To set up monitoring using Prometheus and Grafana follow this guide.

            +
            +
            +

            Scale a ScyllaCluster

            +

            The operator supports adding new nodes to existing racks, adding new racks to the cluster, as well as removing both single nodes and entire racks. To introduce the changes, edit the cluster with:

            +
            kubectl -n scylla edit scyllaclusters.scylla.scylladb.com/simple-cluster
            +
            +
            +
              +
            • To modify the number of nodes in a rack, update the members field of the selected rack to a desired value.

            • +
            • To add a new rack, append it to the .spec.datacenter.racks list. Remember to choose a unique rack name for the new rack.

            • +
            • To remove a rack, first scale it down to zero nodes, and then remove it from .spec.datacenter.racks list.

            • +
            +

            Having edited and saved the yaml, you can check your cluster’s Status and Events to retrieve information about what’s happening:

            +
            kubectl -n scylla describe scyllaclusters.scylla.scylladb.com/simple-cluster
            +
            +
            +
            +

            Note

            +

            If you have configured ScyllaDB with authenticator set to PasswordAuthenticator, you need to manually configure the replication factor of the system_auth keyspace with every scaling operation.

            +
            kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -u <username> -p <password> -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : <new_replication_factor>};"
            +
            +
            +

            It is recommended to set system_auth replication factor to the number of nodes in each datacenter.

            +
            +
            +
            +

            Benchmark with cassandra-stress

            +

            After deploying our cluster along with the monitoring, we can benchmark it using cassandra-stress and see its performance in Grafana. We have a mini cli that generates Kubernetes Jobs that run cassandra-stress against a cluster.

            +
            +

            Because cassandra-stress doesn’t scale well to multiple cores, we use multiple jobs with a small core count for each

            +
            +
            # Run a benchmark with 10 jobs, with 6 cpus and 50.000.000 operations each.
            +# Each Job will throttle throughput to 30.000 ops/sec for a total of 300.000 ops/sec.
            +hack/cass-stress-gen.py --num-jobs=10 --cpu=6 --memory=20G --ops=50000000 --limit=30000
            +kubectl apply -f scripts/cassandra-stress.yaml
            +
            +
            +

            Make sure you set the proper arguments in case you have altered things such as name or namespace.

            +
            ./hack/cass-stress-gen.py -h
            +usage: cass-stress-gen.py [-h] [--num-jobs NUM_JOBS] [--name NAME] [--namespace NAMESPACE] [--scylla-version SCYLLA_VERSION] [--host HOST] [--cpu CPU] [--memory MEMORY] [--ops OPS] [--threads THREADS] [--limit LIMIT]
            +                          [--connections-per-host CONNECTIONS_PER_HOST] [--print-to-stdout] [--nodeselector NODESELECTOR]
            +
            +Generate cassandra-stress job templates for Kubernetes.
            +
            +optional arguments:
            +  -h, --help            show this help message and exit
            +  --num-jobs NUM_JOBS   number of Kubernetes jobs to generate - defaults to 1
            +  --name NAME           name of the generated yaml file - defaults to cassandra-stress
            +  --namespace NAMESPACE
            +                        namespace of the cassandra-stress jobs - defaults to "default"
            +  --scylla-version SCYLLA_VERSION
            +                        version of scylla server to use for cassandra-stress - defaults to 4.0.0
            +  --host HOST           ip or dns name of host to connect to - defaults to scylla-cluster-client.scylla.svc
            +  --cpu CPU             number of cpus that will be used for each job - defaults to 1
            +  --memory MEMORY       memory that will be used for each job in GB, ie 2G - defaults to 2G * cpu
            +  --ops OPS             number of operations for each job - defaults to 10000000
            +  --threads THREADS     number of threads used for each job - defaults to 50 * cpu
            +  --limit LIMIT         rate limit for each job - defaults to no rate-limiting
            +  --connections-per-host CONNECTIONS_PER_HOST
            +                        number of connections per host - defaults to number of cpus
            +  --print-to-stdout     print to stdout instead of writing to a file
            +  --nodeselector NODESELECTOR
            +                        nodeselector limits cassandra-stress pods to certain nodes. Use as a label selector, eg. --nodeselector role=scylla
            +
            +
            +

            While the benchmark is running, open up Grafana and take a look at the monitoring metrics.

            +

            After the Jobs finish, clean them up with:

            +
            kubectl delete -f scripts/cassandra-stress.yaml
            +
            +
            +
            +
            +

            Clean Up

            +

            To clean up all resources associated with this walk-through, you can run the commands below.

            +

            NOTE: this will destroy your database and delete all of its associated data.

            +
            kubectl delete -f examples/generic/cluster.yaml
            +kubectl delete -f deploy/operator.yaml
            +kubectl delete -f examples/common/cert-manager.yaml
            +
            +
            +
            +
            +

            Troubleshooting

            +

            If the cluster does not come up, the first step would be to examine the operator’s logs:

            +
            kubectl -n scylla-operator logs deployment.apps/scylla-operator
            +
            +
            +

            If everything looks OK in the operator logs, you can also look in the logs for one of the Scylla instances:

            +
            kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/genindex.html b/v1.12/genindex.html new file mode 100644 index 00000000000..bed02a52459 --- /dev/null +++ b/v1.12/genindex.html @@ -0,0 +1,582 @@ + + + + + + + + + + + + + Index | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + + + +
            + + + + + +
            + + +
            + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/gke.html b/v1.12/gke.html new file mode 100644 index 00000000000..80662b0de74 --- /dev/null +++ b/v1.12/gke.html @@ -0,0 +1,799 @@ + + + + + + + + + + + + + Deploying Scylla on GKE | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Deploying Scylla on GKE

            +

            This guide is focused on deploying Scylla on GKE with maximum performance (without any persistence guarantees). +It sets up the kubelets on GKE nodes to run with static cpu policy and uses local sdd disks in RAID0 for maximum performance.

            +

            Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the general guide.

            +
            +

            TL;DR;

            +

            If you don’t want to run the commands step-by-step, you can just run a script that will set everything up for you:

            +
            # Edit according to your preference
            +GCP_USER=$(gcloud config list account --format "value(core.account)")
            +GCP_PROJECT=$(gcloud config list project --format "value(core.project)")
            +GCP_ZONE=us-west1-b
            +
            +# From inside the examples/gke folder
            +cd examples/gke
            +./gke.sh -u "$GCP_USER" -p "$GCP_PROJECT" -z "$GCP_ZONE"
            +
            +# Example:
            +# ./gke.sh -u yanniszark@arrikto.com -p gke-demo-226716 -z us-west1-b
            +
            +
            +
            +

            Warning

            +

            Make sure to pass a ZONE (ex.: us-west1-b) and not a REGION (ex.: us-west1) or it will deploy nodes in each ZONE available in the region.

            +
            +

            After you deploy, see how you can benchmark your cluster with cassandra-stress.

            +
            +
            +

            Walkthrough

            +
            +

            Google Kubernetes Engine Setup

            +
            +

            Configure environment variables

            +

            First of all, we export all the configuration options as environment variables. +Edit according to your own environment.

            +
            GCP_USER=$( gcloud config list account --format "value(core.account)" )
            +GCP_PROJECT=$( gcloud config list project --format "value(core.project)" )
            +GCP_REGION=us-west1
            +GCP_ZONE=us-west1-b
            +CLUSTER_NAME=scylla-demo
            +CLUSTER_VERSION=$( gcloud container get-server-config --zone ${GCP_ZONE} --format "value(validMasterVersions[0])" )
            +
            +
            +
            +
            +

            Creating a GKE cluster

            +

            First we need to change kubelet CPU Manager policy to static by providing a config file. Create file called systemconfig.yaml with the following content:

            +
            kubeletConfig:
            +  cpuManagerPolicy: static
            +
            +
            +

            Then we’ll create a GKE cluster with the following:

            +
              +
            1. A NodePool of 2 n1-standard-8 Nodes, where the operator and the monitoring stack will be deployed. These are generic Nodes and their free capacity can be used for other purposes.

              +
              gcloud container \
              +clusters create "${CLUSTER_NAME}" \
              +--cluster-version "${CLUSTER_VERSION}" \
              +--node-version "${CLUSTER_VERSION}" \
              +--machine-type "n1-standard-8" \
              +--num-nodes "2" \
              +--disk-type "pd-ssd" --disk-size "20" \
              +--image-type "UBUNTU_CONTAINERD" \
              +--enable-stackdriver-kubernetes \
              +--no-enable-autoupgrade \
              +--no-enable-autorepair
              +
              +
              +
            2. +
            3. A NodePool of 2 n1-standard-32 Nodes to deploy cassandra-stress later on.

              +
              gcloud container --project "${GCP_PROJECT}" \
              +node-pools create "cassandra-stress-pool" \
              +--cluster "${CLUSTER_NAME}" \
              +--zone "${GCP_ZONE}" \
              +--node-version "${CLUSTER_VERSION}" \
              +--machine-type "n1-standard-32" \
              +--num-nodes "2" \
              +--disk-type "pd-ssd" --disk-size "20" \
              +--node-taints role=cassandra-stress:NoSchedule \
              +--image-type "UBUNTU_CONTAINERD" \
              +--no-enable-autoupgrade \
              +--no-enable-autorepair
              +
              +
              +
            4. +
            5. A NodePool of 4 n1-standard-32 Nodes, where the Scylla Pods will be deployed. Each of these Nodes has 8 local NVMe SSDs attached, which are provided as raw block devices. It is important to disable autoupgrade and autorepair. Automatic cluster upgrade or node repair has a hard timeout after which it no longer respect PDBs and force deletes the Compute Engine instances, which also deletes all data on the local SSDs. At this point, it’s better to handle upgrades manually, with more control over the process and error handling.

              +
              gcloud container \
              +node-pools create "scylla-pool" \
              +--cluster "${CLUSTER_NAME}" \
              +--node-version "${CLUSTER_VERSION}" \
              +--machine-type "n1-standard-32" \
              +--num-nodes "4" \
              +--disk-type "pd-ssd" --disk-size "20" \
              +--local-nvme-ssd-block count="8" \
              +--node-taints role=scylla-clusters:NoSchedule \
              +--node-labels scylla.scylladb.com/node-type=scylla \
              +--image-type "UBUNTU_CONTAINERD" \
              +--system-config-from-file=systemconfig.yaml \
              +--no-enable-autoupgrade \
              +--no-enable-autorepair
              +
              +
              +
            6. +
            +
            +
            +

            Setting Yourself as cluster-admin

            +
            +

            (By default GKE doesn’t give you the necessary RBAC permissions)

            +
            +

            Get the credentials for your new cluster

            +
            gcloud container clusters get-credentials "${CLUSTER_NAME}" --zone="${GCP_ZONE}"
            +
            +
            +

            Create a ClusterRoleBinding for your user. +In order for this to work you need to have at least permission container.clusterRoleBindings.create. +The easiest way to obtain this permission is to enable the Kubernetes Engine Admin role for your user in the GCP IAM web interface.

            +
            kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user "${GCP_USER}"
            +
            +
            +
            +
            +
            +

            Prerequisites

            +
            +
            +

            Deploying ScyllaDB Operator

            +

            Refer to Deploying Scylla on a Kubernetes Cluster in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites.

            +
            +

            Setting up nodes for ScyllaDB

            +

            ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you’ll first need to form a RAID array from those disks. +NodeConfig performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in Performance tuning section of ScyllaDB Operator’s documentation.

            +

            Deploy NodeConfig to let it take care of the above operations:

            +
            kubectl apply --server-side -f examples/gke/nodeconfig-alpha.yaml
            +
            +
            +
            +
            +

            Deploying Local Volume Provisioner

            +

            Afterwards, deploy ScyllaDB’s Local Volume Provisioner, capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays.

            +
            kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/
            +kubectl apply --server-side -f examples/common/local-volume-provisioner/storageclass_xfs.yaml
            +
            +
            +
            +
            +
            +

            Deploy Scylla cluster

            +

            In order for the example to work you need to modify the cluster definition in the following way:

            +
            sed -i "s/<gcp_region>/${GCP_REGION}/g;s/<gcp_zone>/${GCP_ZONE}/g" examples/gke/cluster.yaml
            +
            +
            +

            This will inject your region and zone into the cluster definition so that it matches the kubernetes cluster you just created.

            +
            +
            +

            Deploying ScyllaDB

            +

            Now you can follow the steps described in Deploying Scylla on a Kubernetes Cluster to launch your ScyllaDB cluster in a highly performant environment.

            +
            +

            Accessing the database

            +

            Instructions on how to access the database can also be found in the generic guide.

            +
            +
            +
            +

            Deleting a GKE cluster

            +

            Once you are done with your experiments delete your cluster using the following command:

            +
            gcloud container --project "${GCP_PROJECT}" clusters delete --zone "${GCP_ZONE}" "${CLUSTER_NAME}"
            +
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/helm.html b/v1.12/helm.html new file mode 100644 index 00000000000..4ae47eb58cf --- /dev/null +++ b/v1.12/helm.html @@ -0,0 +1,947 @@ + + + + + + + + + + + + + Deploying Scylla stack using Helm Charts | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Deploying Scylla stack using Helm Charts

            +

            In this example we will install Scylla stack on Kubernetes. This includes the following components:

            +
              +
            • Scylla Operator

            • +
            • Scylla Manager

            • +
            • Scylla

            • +
            +

            We will use Minikube K8s cluster, but this could be any K8s cluster supported by the Scylla Operator.

            +
            +

            Prerequisites

            +
              +
            • Kubernetes 1.16+

            • +
            • Helm 3+

            • +
            +
            +
            +

            TL;DR

            +
            helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable
            +helm repo update
            +kubectl apply -f examples/common/cert-manager.yaml 
            +helm install scylla-operator scylla/scylla-operator --create-namespace --namespace scylla-operator
            +helm install scylla-manager scylla/scylla-manager --create-namespace --namespace scylla-manager
            +helm install scylla scylla/scylla --create-namespace --namespace scylla
            +
            +
            +
            +
            +

            Deploy Cert Manager

            +

            This step is optional if you want to use your own certificate. +If you don’t have one, make sure to not disable autogeneration using Scylla Operator Helm Chart.

            +

            First deploy Cert Manager, you can either follow upsteam instructions or use following command:

            +
            kubectl apply -f examples/common/cert-manager.yaml
            +
            +
            +

            Once it’s deployed, wait until all Cert Manager pods will enter into Running state:

            +
            kubectl wait -n cert-manager --for=condition=ready pod -l app=cert-manager --timeout=60s
            +
            +
            +
            +
            +

            Helm Chart repository

            +

            To install Scylla Helm Chart repository execute the following commands:

            +
            helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable
            +helm repo update
            +
            +
            +

            Then you can search through repository, it should contain at least three Helm charts:

            +
            helm search repo scylla
            +NAME                   CHART VERSION   APP VERSION     DESCRIPTION                                       
            +scylla/scylla          1.0.1           v1.0.1          Scylla is a close-to-the-hardware rewrite of Ca...
            +scylla/scylla-manager  1.0.1           v1.0.1          Scylla Manager automates database operations.     
            +scylla/scylla-operator 1.0.1           v1.0.1          Scylla Operator is a Kubernetes Operator for ma...
            +
            +
            +

            All these charts should be installable without any need of customizing (defaults are provided). +Although Helm is used for this particular reason, so lets customize them a bit.

            +
            +
            +

            Scylla Operator Chart

            +

            This chart is very simple, most interesting customizable fields are image, resources and webhook. +All others can be looked up in Chart source in Scylla Operator repository.

            +
            +

            image

            +

            Image allows to define which Scylla Operator image will be used. By default it downloads the image from main +Docker Hub repository, using version defined in Helm Chart. +You can also change pullPolicy if default one does not +fullfill your needs. In Kubernetes documentation you +can read more about different pull policies.

            +

            Image URL will be composed based on these fields in follwing pattern: +repository/scylla-operator:tag

            +
            image:
            +  repository: scylladb
            +  pullPolicy: IfNotPresent
            +  tag: ""
            +
            +
            +
            +
            +

            resources

            +

            You can customize how much resources will be allocated for Operator pods via resource field:

            +
            resources:
            +  limits:
            +    cpu: 100m
            +    memory: 128Mi
            +  requests:
            +    cpu: 100m
            +    memory: 32Mi
            +
            +
            +

            To read more about resource specification, follow Kubernetes documentation.

            +
            +
            +

            webhook

            +

            Webhook field allows to decide whether you want to use autogenerated self-signed certificate using Cert Manager or +whether you want to provide your own certificate.

            +

            createSelfSignedCertificate specifies whether a self-signed certificate should be created using Cert Manager +certificateSecretName: name of a secret containing custom certificate.

            +
            webhook:
            +  createSelfSignedCertificate: true
            +  certificateSecretName: ""
            +
            +
            +
            +
            +

            Customization

            +

            You can customize all these fields and others by providing file containing desired values. +Content of this file will overwrite default values.

            +

            You can find an example in Scylla Operator repository under examples/helm/values.operator.yaml

            +
            +
            +

            Installation

            +

            To deploy Scylla Operator using customized values file execute the following:

            +
            helm install scylla-operator scylla/scylla-operator --values examples/helm/values.operator.yaml --create-namespace --namespace scylla-operator
            +
            +
            +
            +
            +
            +

            Scylla Helm Chart

            +

            Scylla Chart allows to customize and deploy Scylla cluster. +By default Scylla Helm charts deploys working Scylla cluster, but of course we can customize it.

            +
            +

            Customization

            +

            Versions of images used in the cluster can be set via scyllaImage and agentImage

            +
            scyllaImage:
            +  repository: scylladb/scylla
            +  tag: 4.3.0
            +
            +agentImage:
            +  repository: scylladb/scylla-manager-agent
            +  tag: 2.2.1
            +
            +
            +

            A minimal Scylla cluster can be expressed as:

            +
            datacenter: us-east-1
            +racks:
            +- name: us-east-1b
            +  members: 2
            +  storage:
            +    capacity: 5G
            +  resources:
            +    limits:
            +      cpu: 1
            +      memory: 1Gi
            +    requests:
            +      cpu: 1
            +      memory: 1Gi
            +
            +
            +

            Above cluster will use 4.3.0 Scylla, 2.2.1 Scylla Manager Agent sidecar and will have a single rack having 2 nodes. +Each node will have a single CPU and 1 GiB of memory.

            +

            For other customizable fields, please refer to ScyllaCluster CRD. +CRD Rack Spec and Helm Chart Rack should have the same fields.

            +
            +
            +

            Installation

            +

            To deploy Scylla cluster using customzied values file execute the following command:

            +
            helm install scylla scylla/scylla --values examples/helm/values.cluster.yaml --create-namespace --namespace scylla
            +
            +
            +

            Scylla Operator will provision this cluster on your K8s environment.

            +
            +
            +
            +

            Scylla Manager Helm Chart

            +

            Scylla Manager Chart allows to customize and deploy Scylla Manager in K8s environment. +Scylla Manager consist of two applications (Scylla Manager itself and Scylla Manager Controller) and additional Scylla cluster.

            +

            To read more about Scylla Manager see Manager guide.

            +
            +

            Scylla Manager

            +

            To set version of used Scylla Manager you can use image field:

            +
            image:
            +  repository: scylladb
            +  pullPolicy: IfNotPresent
            +  tag: 2.2.1
            +
            +
            +

            To control how many resources are allocated for Scylla Manager use resource field:

            +
            resources:
            +  limits:
            +    cpu: 500m
            +    memory: 500Mi
            +  requests:
            +    cpu: 500m
            +    memory: 500Mi
            +
            +
            +
            +
            +

            Scylla Manager Controller

            +

            Similarly Scylla Manager Controller image can be customized:

            +
            controllerImage:
            +  repository: scylladb
            +  pullPolicy: IfNotPresent
            +  tag: ""
            +
            +
            +

            And allocated resources:

            +
            controllerResources:
            +  limits:
            +    cpu: 100m
            +    memory: 30Mi
            +  requests:
            +    cpu: 100m
            +    memory: 20Mi
            +
            +
            +
            +
            +

            Scylla

            +

            To customize internal Scylla instance dedicated to Scylla Manager, see guide above customizing Scylla Helm Chart. +It’s definition should land as a scylla field.

            +
            +
            +

            Customization

            +

            All others customizable fields can be looked up in Chart source in Scylla Operator repository.

            +
            +
            +

            Installation

            +

            To deploy Scylla Manager using customized values file execute the following command:

            +
            helm install scylla-manager scylla/scylla-manager --values examples/helm/values.manager.yaml --create-namespace --namespace scylla-manager
            +
            +
            +
            +
            +
            +

            Results

            +

            Scylla need some time to bootstrap all nodes, but after some time you should be ready to roll. It was simple isn’t it? +You can validate if everything was set up correctly by looking at the all resources created in used namespaces.

            +

            Scylla Operator:

            +
            $ kubectl -n scylla-operator get all
            +
            +NAME                                   READY   STATUS    RESTARTS   AGE
            +pod/scylla-operator-5dbcb54f5c-vjm4m   1/1     Running   0          51s
            +pod/scylla-operator-5dbcb54f5c-wfjbw   1/1     Running   0          51s
            +
            +NAME                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
            +service/scylla-operator-webhook   ClusterIP   10.105.207.130   <none>        443/TCP   51s
            +
            +NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
            +deployment.apps/scylla-operator   2/2     2            2           51s
            +
            +NAME                                         DESIRED   CURRENT   READY   AGE
            +replicaset.apps/scylla-operator-5dbcb54f5c   2         2         2       51s
            +
            +
            +

            Operator is running!

            +

            Scylla Manager:

            +
            $ kubectl -n scylla-manager get all 
            +
            +NAME                                             READY   STATUS    RESTARTS   AGE
            +pod/scylla-manager-669db64dd-bcm4v               1/1     Running   0          89s
            +pod/scylla-manager-controller-844ccc56c4-drbth   1/1     Running   0          89s
            +pod/scylla-manager-controller-844ccc56c4-rhwqx   1/1     Running   0          89s
            +
            +NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
            +service/scylla-manager          ClusterIP   10.105.231.53   <none>        80/TCP,5090/TCP     89s
            +service/scylla-manager-client   ClusterIP   None            <none>        9180/TCP,5090/TCP   89s
            +
            +NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
            +deployment.apps/scylla-manager              1/1     1            1           89s
            +deployment.apps/scylla-manager-controller   2/2     2            2           89s
            +
            +NAME                                                   DESIRED   CURRENT   READY   AGE
            +replicaset.apps/scylla-manager-669db64dd               1         1         1       89s
            +replicaset.apps/scylla-manager-controller-844ccc56c4   2         2         2       89s
            +
            +
            +

            Good to go, ready to serve!

            +

            Scylla itself:

            +
            $ kubectl -n scylla get all        
            +
            +NAME                                READY   STATUS    RESTARTS   AGE
            +pod/scylla-us-east-1-us-east-1b-0   2/2     Running   0          5m58s
            +pod/scylla-us-east-1-us-east-1b-1   2/2     Running   0          4m29s
            +
            +NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
            +service/scylla-client                   ClusterIP   None           <none>        9180/TCP,5090/TCP                                                 5m59s
            +service/scylla-us-east-1-us-east-1b-0   ClusterIP   10.43.149.92   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   5m58s
            +service/scylla-us-east-1-us-east-1b-1   ClusterIP   10.43.49.0     <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   4m29s
            +
            +NAME                                           READY   AGE
            +statefulset.apps/scylla-us-east-1-us-east-1b   2/2     5m59s
            +
            +
            +

            Two running nodes, exactly what we were asking for.

            +
            +
            +

            Monitoring

            +

            To spin up a Prometheus monitoring refer to monitoring guide.

            +

            Helm charts can create ServiceMonitors needed to observe Scylla Manager and Scylla. +Both of these Helm Charts allows to specify whether you want to create a ServiceMonitor:

            +
            serviceMonitor:
            +  create: false
            +
            +
            +

            Change create to true and update your current deployment using:

            +
            helm upgrade --install scylla --namespace scylla scylla/scylla -f examples/helm/values.cluster.yaml
            +
            +
            +

            Helm should notice the difference, install the ServiceMonitor, and then Prometheous will be able to scrape metrics.

            +
            +
            +

            Cleanup

            +

            To remove these applications you can simply uninstall them using Helm CLI:

            +
            helm uninstall scylla -n scylla
            +helm uninstall scylla-manager -n scylla-manager
            +helm uninstall scylla-operator -n scylla-operator
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/index.html b/v1.12/index.html new file mode 100644 index 00000000000..ffa02300042 --- /dev/null +++ b/v1.12/index.html @@ -0,0 +1,628 @@ + + + + + + + + + + + + + Scylla Operator Documentation | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Scylla Operator Documentation

            +
            +
            +

            Scylla Operator is an open source project which helps users of Scylla Open Source and Scylla Enterprise run Scylla on Kubernetes (K8s) +The Scylla operator manages Scylla clusters deployed to Kubernetes and automates tasks related to operating a Scylla cluster, like installation, out and downscale, rolling upgrades.

            +_images/logo.png +

            For the latest status of the project, and reports issue, see the Github Project. Also check out the K8s Operator lesson on Scylla University.

            +

            scylla-operator is a Kubernetes Operator for managing Scylla clusters.

            +

            Currently it supports:

            +
              +
            • Deploying multi-zone clusters

            • +
            • Scaling up or adding new racks

            • +
            • Scaling down

            • +
            • Monitoring with Prometheus and Grafana

            • +
            • Integration with Scylla Manager

            • +
            • Dead node replacement

            • +
            • Version Upgrade

            • +
            • Backup

            • +
            • Repairs

            • +
            • Autohealing

            • +
            +

            Choose a topic to begin:

            + +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/manager.html b/v1.12/manager.html new file mode 100644 index 00000000000..86bf5e1f833 --- /dev/null +++ b/v1.12/manager.html @@ -0,0 +1,834 @@ + + + + + + + + + + + + + Deploying Scylla Manager on a Kubernetes Cluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Deploying Scylla Manager on a Kubernetes Cluster

            +

            Scylla Manager is a product for database operations automation, +it can schedule tasks such as repairs and backups. +Scylla Manager can manage multiple Scylla clusters and run cluster-wide tasks +in a controlled and predictable way.

            +

            Scylla Manager is available for Scylla Enterprise customers and Scylla Open Source users. +With Scylla Open Source, Scylla Manager is limited to 5 nodes. +See the Scylla Manager Proprietary Software License Agreement for details.

            +
            +

            Prerequisites

            + +
            +
            +

            Architecture

            +

            Scylla Manager in K8s consist of:

            +
              +
            • Dedicated Scylla Cluster

              +

              Scylla Manager persists its state to a Scylla cluster. +Additional small single node cluster is spawned in the Manager namespace.

              +
            • +
            • Scylla Manager Controller

              +

              Main mission of Controller is to watch changes of Scylla Clusters, and synchronize three states.

              +
                +
              1. What user wants - task definition in CRD.

              2. +
              3. What Controller registered - Task name to Task ID mapping - CRD status.

              4. +
              5. Scylla Manager task listing - internal state of Scylla Manager.

              6. +
              +

              When Scylla Cluster CRD is being deployed Controller will register it in Scylla Manager once cluster reaches desired node count. +Once Cluster is fully up and running it will schedule all tasks defined in Cluster CRD. +Controller also supports task updates and unscheduling.

              +
            • +
            • Scylla Manager

              +

              Regular Scylla Manager, the same used in cloud and bare metal deployments.

              +
            • +
            +
            +
            +

            Deploy Scylla Manager

            +

            Deploy the Scylla Manager using the following commands:

            +
            kubectl apply -f deploy/manager-prod.yaml
            +
            +
            +

            This will install the Scylla Manager in the scylla-manager namespace. +You can check if the Scylla Manager is up and running with:

            +
            kubectl -n scylla-manager get pods
            +NAME                                               READY   STATUS    RESTARTS   AGE
            +scylla-manager-cluster-manager-dc-manager-rack-0   2/2     Running   0          37m
            +scylla-manager-controller-0                        1/1     Running   0          28m
            +scylla-manager-scylla-manager-7bd9f968b9-w25jw     1/1     Running   0          37m
            +
            +
            +

            As you can see there are three pods:

            +
              +
            • scylla-manager-cluster-manager-dc-manager-rack-0 - is a single node Scylla cluster.

            • +
            • scylla-manager-controller-0 - Scylla Manager Controller.

            • +
            • scylla-manager-scylla-manager-7bd9f968b9-w25jw - Scylla Manager.

            • +
            +

            To see if Scylla Manager is fully up and running we can check their logs. +To do this, execute following command:

            +
            kubectl -n scylla-manager logs scylla-manager-controller-0
            +
            +
            +

            The output should be something like:

            +
            {"L":"INFO","T":"2020-09-23T11:25:27.882Z","M":"Scylla Manager Controller started","version":"","build_date":"","commit":"","built_by":"","go_version":"","options":{"Name":"scylla-manager-controller-0","Namespace":"scylla-manager","LogLevel":"debug","ApiAddress":"http://127.0.0.1:5080/api/v1"},"_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"}
            +{"L":"INFO","T":"2020-09-23T11:25:28.435Z","M":"Registering Components.","_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"}
            +
            +
            +

            To check logs of Scylla Manager itself, use following command:

            +
            kubectl -n scylla-manager logs scylla-manager-scylla-manager-7bd9f968b9-w25jw
            +
            +
            +

            The output should be something like:

            +
            {"L":"INFO","T":"2020-09-23T11:26:53.238Z","M":"Scylla Manager Server","version":"2.1.2-0.20200816.76cc4dcc","pid":1,"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
            +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Using config","config":{"HTTP":"127.0.0.1:5080","HTTPS":"","TLSCertFile":"/var/lib/scylla-manager/scylla_manager.crt","TLSKeyFile":"/var/lib/scylla-manager/scylla_manager.key","TLSCAFile":"","Prometheus":":56090","PrometheusScrapeInterval":5000000000,"debug":"127.0.0.1:56112","Logger":{"Mode":"stderr","Level":"info","Development":false},"Database":{"Hosts":["scylla-manager-cluster-manager-dc-manager-rack-0.scylla-manager.svc"],"SSL":false,"User":"","Password":"","LocalDC":"","Keyspace":"scylla_manager","MigrateDir":"/etc/scylla-manager/cql","MigrateTimeout":30000000000,"MigrateMaxWaitSchemaAgreement":300000000000,"ReplicationFactor":1,"Timeout":600000000,"TokenAware":true},"SSL":{"CertFile":"","Validate":true,"UserCertFile":"","UserKeyFile":""},"Healthcheck":{"Timeout":250000000,"SSLTimeout":750000000},"Backup":{"DiskSpaceFreeMinPercent":10,"AgeMax":43200000000000},"Repair":{"SegmentsPerRepair":1,"ShardParallelMax":0,"ShardFailedSegmentsMax":100,"PollInterval":200000000,"ErrorBackoff":300000000000,"AgeMax":0,"ShardingIgnoreMsbBits":12}},"config_files":["/mnt/etc/scylla-manager/scylla-manager.yaml"],"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
            +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Checking database connectivity...","_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
            +
            +
            +

            If there are no errors in the logs, let’s spin a Scylla Cluster.

            +
            +
            +

            Cluster registration

            +

            When the Scylla Manager is fully up and running, lets create a regular instance of Scylla cluster.

            +

            See generic tutorial to spawn your cluster.

            +

            Note: If you already have some Scylla Clusters, after installing Manager they should be +automatically registered in Scylla Manager.

            +

            Once cluster reaches desired node count, cluster status will be updated with ID under which it was registered in Manager.

            +
            kubectl -n scylla describe Cluster
            +
            +[...]
            +Status:
            + Manager Id:  d1d532cd-49f2-4c97-9263-25126532803b
            + Racks:
            +   us-east-1a:
            +     Members:        3
            +     Ready Members:  3
            +     Version:        4.0.0
            +
            +
            +

            You can use this ID to talk to Scylla Manager using sctool CLI installed in Scylla Manager Pod. +You can also use Cluster name in namespace/cluster-name format.

            +
            kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list
            +
            +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b)
            +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮
            +│ Task                                                        │ Arguments                            │ Next run                       │ Status │
            +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤
            +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b            │                                      │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE   │
            +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd       │                                      │ 23 Sep 20 14:29:57 CEST (+1m)  │ NEW    │
            +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯
            +
            +
            +

            Scylla Manager by default registers recurring healhcheck tasks for Agent and for each of the enabled frontends (CQL, Alternator).

            +

            In this task listing we can see CQL and REST healthchecks.

            +
            +
            +

            Task scheduling

            +

            You can either define tasks prior Cluster creation, or for existing Cluster. +Let’s edit already running cluster definition to add repair and backup task.

            +
            kubectl -n scylla edit Cluster simple-cluster
            +
            +
            +

            Add following task definition to Cluster spec:

            +
              repairs:
            +    - name: "users repair"
            +      keyspace: ["users"]
            +      interval: "1d"
            +  backups:
            +    - name: "weekly backup"
            +      location: ["s3:cluster-backups"]
            +      retention: 3
            +      interval: "7d"
            +    - name: "daily backup"
            +      location: ["s3:cluster-backups"]
            +      retention: 7
            +      interval: "1d"
            +
            +
            +

            For full task definition configuration consult ScyllaCluster CRD.

            +

            Note: Scylla Manager Agent must have access to above bucket prior the update in order to schedule backup task. +Consult Scylla Manager documentation for details on how to set it up.

            +

            Scylla Manager Controller will spot this change and will schedule tasks in Scylla Manager.

            +
            kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list
            +
            +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b)
            +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮
            +│ Task                                                        │ Arguments                            │ Next run                       │ Status │
            +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤
            +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b            │                                      │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE   │
            +│ backup/275aae7f-c436-4fc8-bcec-479e65fb8372                 │ -L s3:cluster-backups  --retention 3 │ 23 Sep 20 14:28:58 CEST (+7d)  │ NEW    │
            +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd       │                                      │ 23 Sep 20 14:29:57 CEST (+1m)  │ NEW    │
            +│ repair/d4946360-c29d-4bb4-8b9d-619ada495c2a                 │                                      │ 23 Sep 20 14:38:42 CEST        │ NEW    │
            +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯
            +
            +
            +

            As you can see, we have two new tasks, weekly recurring backup, and one repair which should start shortly.

            +

            To check progress of run you can use following command:

            +
            kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task progress --cluster d1d532cd-49f2-4c97-9263-25126532803b repair/d4946360-c29d-4bb4-8b9d-619ada495c2a
            +Status:         RUNNING
            +Start time:     23 Sep 20 14:38:42 UTC
            +Duration:       13s
            +Progress:       2.69%
            +Datacenters:
            +  - us-east-1
            ++--------------------+-------+
            +| system_auth        | 8.06% |
            +| system_distributed | 0.00% |
            +| system_traces      | 0.00% |
            ++--------------------+-------+
            +
            +
            +

            Other tasks can be also tracked using the same command, but using different task ID. +Task IDs are present in Cluster Status as well as in task listing.

            +
            +
            +

            Clean Up

            +

            To clean up all resources associated with Scylla Manager, you can run the commands below.

            +

            NOTE: this will destroy your Scylla Manager database and delete all of its associated data.

            +
            kubectl delete -f deploy/manager-prod.yaml
            +
            +
            +
            +
            +

            Troubleshooting

            +

            Manager is not running

            +

            If the Scylla Manager does not come up, the first step would be to examine the Manager and Controller logs:

            +
            kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-controller
            +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-scylla-manager-7bd9f968b9-w25jw
            +
            +
            +

            My task wasn’t scheduled

            +

            If your task wasn’t scheduled, Cluster status will be updated with error messages for each failed task. +You can also consult Scylla Manager logs.

            +

            Example:

            +

            Following status describes error when backup task cannot be scheduled, due to lack of access to bucket:

            +
            Status:
            +  Backups:
            +    Error:     create backup target: location is not accessible: 10.100.16.62: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.100.16.62 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.107.193.33: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.107.193.33 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.109.197.60: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.109.197.60 and run "scylla-manager-agent check-location -L s3:manager-test --debug"
            +    Id:        00000000-0000-0000-0000-000000000000
            +    Interval:  0
            +    Location:
            +      s3:manager-test
            +    Name:         adhoc backup
            +    Num Retries:  3
            +    Retention:    3
            +    Start Date:   now
            +  Manager Id:     2b9dbe8c-9daa-4703-a66d-c29f63a917c8
            +  Racks:
            +    us-east-1a:
            +      Members:        3
            +      Ready Members:  3
            +      Version:        4.0.0
            +
            +
            +

            Because Controller is infinitely retrying to schedule each defined task, once permission issues will be resolved, +task should appear in task listing and Cluster status.

            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/migration.html b/v1.12/migration.html new file mode 100644 index 00000000000..65d5eda72d1 --- /dev/null +++ b/v1.12/migration.html @@ -0,0 +1,771 @@ + + + + + + + + + + + + + Version migrations | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Version migrations

            +
            +

            v0.3.0 -> v1.0.0 migration

            +

            v0.3.0 used a very common name as a CRD kind (Cluster). In v1.0.0 this issue was solved by using less common kind +which is easier to disambiguate (ScyllaCluster). +This change is backward incompatible, which means manual migration is needed.

            +

            This procedure involves having two CRDs registered at the same time. We will detach Scylla Pods +from Scylla Operator for a short period to ensure that nothing is garbage collected when Scylla Operator is upgraded. +Compared to the upgrade guide where full deletion is requested, this procedure shouldn’t cause downtimes. +Although detaching resources from their controller is considered hacky. This means that you shouldn’t run procedure +out of the box on production. Make sure this procedure works well multiple times on your staging environment first.

            +

            Read the whole procedure and make sure you understand what is going on before executing any of the commands!

            +

            In case of any issues or questions regarding this procedure, you’re welcomed on our Scylla Users Slack +on #kubernetes channel.

            +
            +
            +

            Procedure

            +
              +
            1. Execute this whole procedure for each cluster sequentially. To get a list of existing clusters execute the following

              +
              kubectl -n scylla get cluster.scylla.scylladb.com
              +
              +NAME             AGE
              +simple-cluster   30m
              +
              +
              +

              All below commands will use scylla namespace and simple-cluster as a cluster name.

              +
            2. +
            3. Make sure you’re using v1.0.0 tag:

              +
              git checkout v1.0.0
              +
              +
              +
            4. +
            5. Upgrade your cert-manager to v1.0.0. If you installed it from a static file from this repo, simply execute the following:

              +
               kubectl apply -f examples/common/cert-manager.yaml
              +
              +
              +

              If your cert-manager was installed in another way, follow official instructions on cert-manager website.

              +
            6. +
            7. deploy/operator.yaml file contains multiple resources. Extract only CustomResourceDefinition to separate file.

            8. +
            9. Install v1.0.0 CRD definition from file created in the previous step:

              +
              kubectl apply -f examples/common/crd.yaml
              +
              +
              +
            10. +
            11. Save your existing simple-cluster Cluster definition to a file:

              +
              kubectl -n scylla get cluster.scylla.scylladb.com simple-cluster -o yaml > existing-cluster.yaml
              +
              +
              +
            12. +
            13. Migrate Kind and ApiVersion to new values using:

              +
              sed -i 's/scylla.scylladb.com\/v1alpha1/scylla.scylladb.com\/v1/g' existing-cluster.yaml
              +sed -i 's/kind: Cluster/kind: ScyllaCluster/g' existing-cluster.yaml
              +
              +
              +
            14. +
            15. Install migrated CRD instance

              +
              kubectl apply -f existing-cluster.yaml
              +
              +
              +

              At this point, we should have two CRDs describing your Scylla cluster, although the new one is not controlled by the Operator.

              +
            16. +
            17. Get UUID of newly created ScyllaCluster resource:

              +
              kubectl -n scylla get ScyllaCluster simple-cluster --template="{{ .metadata.uid }}"
              +
              +12a3678d-8511-4c9c-8a48-fa78d3992694
              +
              +
              +

              Save output UUID somewhere, it will be referred as <new-cluster-uid> in commands below.

              +

              Depending on your shell, you might get additional ‘%’ sign at the end of UUID, make sure to remove it!

              +
            18. +
            19. Upgrade ClusterRole attached to each of the Scylla nodes to grant them permission to lookup Scylla clusters:

              +
              kubectl patch ClusterRole simple-cluster-member --type "json" -p '[{"op":"add","path":"/rules/-","value":{"apiGroups":["scylla.scylladb.com"],"resources":["scyllaclusters"],"verbs":["get"]}}]'
              +
              +
              +

              Amend role name according to your cluster name, it should look like <scylla-cluster-name>-member.

              +
            20. +
            21. Get a list of all Services associated with your cluster. First get list of all services:

              +
               kubectl -n scylla get svc -l "scylla/cluster=simple-cluster"
              +
              + NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
              + simple-cluster-client                   ClusterIP   None           <none>        9180/TCP                                                          109m
              + simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.23.96    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   109m
              + simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.66.22    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   108m
              + simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.246.25   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   106m
              +
              +
              +
              +
            22. +
            23. For each service, change its ownerReference to point to new CRD instance:

              +
               kubectl -n scylla patch svc <cluster-svc-name> --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":"<new-cluster-uid>"}]'
              +
              +
              +

              Replace <cluster-svc-name> with Service name, and <new-cluster-uid> with saved UUID from one of the previous steps.

              +
            24. +
            25. Get a list of all Services again to see if none was deleted. Check also “Age” column, it shouldn’t be lower than previous result.

              +
               kubectl -n scylla get svc -l "scylla/cluster=simple-cluster"
              +
              + NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
              + simple-cluster-client                   ClusterIP   None           <none>        9180/TCP                                                          110m
              + simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.23.96    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   110m
              + simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.66.22    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   109m
              + simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.246.25   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   107m
              +
              +
              +
              +
            26. +
            27. Get a list of StatefulSets associated with your cluster:

              +
              kubectl -n scylla get sts -l "scylla/cluster=simple-cluster"
              +
              +NAME                                  READY   AGE
              +simple-cluster-us-east-1-us-east-1a   3/3     104m
              +
              +
              +
            28. +
            29. For each StatefulSet from previous step, change its ownerReference to point to new CRD instance.

              +
               kubectl -n scylla patch sts <cluster-sts-name> --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":"<new-cluster-uid>"}]'
              +
              +
              +

              Replace <cluster-sts-name> with StatefulSet name, and <new-cluster-uid> with saved UUID from one of the previous steps.

              +
            30. +
            31. Now when all k8s resources bound to Scylla are attached to new CRD, we can remove 0.3.0 Operator and old CRD definition. +Checkout v0.3.0 version, and remove Scylla Operator, and old CRD:

              +
               git checkout v0.3.0
              + kubectl delete -f examples/generic/operator.yaml
              +
              +
              +
            32. +
            33. Checkout v1.0.0, and install upgraded Scylla Operator:

              +
               git checkout v1.0.0
              + kubectl apply -f deploy/operator.yaml
              +
              +
              +
            34. +
            35. Wait until Scylla Operator boots up:

              +
               kubectl -n scylla-operator-system wait --for=condition=ready pod --all --timeout=600s
              +
              +
              +
            36. +
            37. Get a list of StatefulSets associated with your cluster:

              +
              kubectl -n scylla get sts -l "scylla/cluster=simple-cluster"
              +
              +NAME                                  READY   AGE
              +simple-cluster-us-east-1-us-east-1a   3/3     104m
              +
              +
              +
            38. +
            39. For each StatefulSet from previous step, change its sidecar container image to v1.0.0, and wait until change will be propagated. This step will initiate a rolling restart of pods one by one.

              +
              kubectl -n scylla patch sts <cluster-sts> --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/initContainers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]'
              +kubectl -n scylla rollout status sts <cluster-sts>
              +
              +
              +

              Replace <cluster-sts-name> with StatefulSet name.

              +
            40. +
            41. If you’re using Scylla Manager, bump Scylla Manager Controller image to v1.0.0

              +
               kubectl -n scylla-manager-system patch sts scylla-manager-controller --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]'
              +
              +
              +
            42. +
            43. Your Scylla cluster is now migrated to v1.0.0.

            44. +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/monitoring.html b/v1.12/monitoring.html new file mode 100644 index 00000000000..f4f649742e8 --- /dev/null +++ b/v1.12/monitoring.html @@ -0,0 +1,816 @@ + + + + + + + + + + + + + Monitoring | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Monitoring

            +

            Scylla Operator 1.8 introduced a new API resource ScyllaDBMonitoring, allowing users to deploy a managed monitoring +setup for their Scylla Clusters.

            +
            apiVersion: scylla.scylladb.com/v1alpha1
            +kind: ScyllaDBMonitoring
            +metadata:
            +  name: example
            +spec:
            +  type: Platform
            +  endpointsSelector:
            +    matchLabels:
            +      app.kubernetes.io/name: scylla
            +      scylla-operator.scylladb.com/scylla-service-type: member
            +      scylla/cluster: replace-with-your-scyllacluster-name
            +  components:
            +    prometheus:
            +      storage:
            +        volumeClaimTemplate:
            +          spec:
            +            resources:
            +              requests:
            +                storage: 1Gi
            +    grafana:
            +      exposeOptions:
            +        webInterface:
            +          ingress:
            +            ingressClassName: haproxy
            +            dnsDomains:
            +            - test-grafana.test.svc.cluster.local
            +            annotations:
            +              haproxy-ingress.github.io/ssl-passthrough: "true"
            +
            +
            +

            For details, refer to the below command:

            +
            $ kubectl explain scylladbmonitorings.scylla.scylladb.com/v1alpha1
            +
            +
            +
            +

            Deploy managed monitoring

            +

            Note: as of v1.8, ScyllaDBMonitoring is experimental. The API is currently in version v1alpha1 and may change in future versions.

            +
            +

            Requirements

            +

            Before you can set up your ScyllaDB monitoring, you need Scylla Operator already installed in your Kubernetes cluster. +For more information on how to deploy Scylla Operator, see:

            + +

            The above example of the monitoring setup also makes use of HAProxy Ingress and Prometheus Operator. +You can deploy them in your Kubernetes cluster using the provided third party examples. If you already have them deployed +in your cluster, you can skip the below steps.

            +
            +

            Deploy Prometheus Operator

            +

            Deploy Prometheus Operator using kubectl:

            +
            $ kubectl -n prometheus-operator apply --server-side -f ./examples/third-party/prometheus-operator
            +
            +
            +
            +
            Wait for Prometheus Operator to roll out
            +
            $ kubectl -n prometheus-operator rollout status --timeout=5m deployments.apps/prometheus-operator
            +deployment "prometheus-operator" successfully rolled out
            +
            +
            +
            +
            +
            +

            Deploy HAProxy Ingress

            +

            Deploy HAProxy Ingress using kubectl:

            +
            $ kubectl -n haproxy-ingress apply --server-side -f ./examples/third-party/haproxy-ingress
            +
            +
            +
            +
            Wait for HAProxy Ingress to roll out
            +
            $ kubectl -n haproxy-ingress rollout status --timeout=5m deployments.apps/haproxy-ingress
            +deployment "haproxy-ingress" successfully rolled out
            +
            +
            +
            +
            +
            +
            +

            Deploy ScyllaDBMonitoring

            +

            First, update the endpointsSelector in examples/monitoring/v1alpha1/scylladbmonitoring.yaml with a label +matching your ScyllaCluster instance name.

            +

            Deploy the monitoring setup using kubectl:

            +
            $ kubectl -n scylla apply --server-side -f ./examples/monitoring/v1alpha1/scylladbmonitoring.yaml
            +
            +
            +

            Scylla Operator will notice the new ScyllaDBMonitoring object, and it will reconcile all necessary resources.

            +
            +

            Wait for ScyllaDBMonitoring to roll out

            +
            $ kubectl wait --for='condition=Progressing=False' scylladbmonitorings.scylla.scylladb.com/example
            +scylladbmonitoring.scylla.scylladb.com/example condition met
            +
            +$ kubectl wait --for='condition=Degraded=False' scylladbmonitorings.scylla.scylladb.com/example
            +scylladbmonitoring.scylla.scylladb.com/example condition met
            +
            +$ kubectl wait --for='condition=Available=True' scylladbmonitorings.scylla.scylladb.com/example
            +scylladbmonitoring.scylla.scylladb.com/example condition met
            +
            +
            +
            +
            +

            Wait for Prometheus to roll out

            +
            $ kubectl rollout status --timeout=5m statefulset.apps/prometheus-example
            +statefulset rolling update complete 1 pods at revision prometheus-example-65b89d55bb...
            +
            +
            +
            +
            +

            Wait for Grafana to roll out

            +
            $ kubectl rollout status --timeout=5m deployments.apps/example-grafana
            +deployment "example-grafana" successfully rolled out
            +
            +
            +
            +
            +
            +

            Accessing Grafana

            +

            For accessing Grafana service from outside the Kubernetes cluster we recommend using an Ingress, although there are many other ways to do so. +When using Ingress, what matters is to direct your packets to the ingress controller Service/Pods and have the correct TLS SNI field set by the caller when reaching out to the service, so it is routed properly, and your client can successfully validate the grafana serving certificate. +This is easier when you are using a real DNS domain that resolves to your Ingress controller’s IP address but most clients and tools allow setting the SNI field manually.

            +
            +
            +

            Prerequisites

            +

            To access Grafana, you first need to collect the serving CA and the credentials.

            +
            $ GRAFANA_SERVING_CERT="$( kubectl -n scylla get secret/example-grafana-serving-ca --template '{{ index .data "tls.crt" }}' | base64 -d )"
            +$ GRAFANA_USER="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "username" }}' | base64 -d )"
            +$ GRAFANA_PASSWORD="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "password" }}' | base64 -d )"
            +
            +
            +
            +
            +

            Connecting through Ingress using a resolvable domain

            +

            In production clusters, the Ingress controller and appropriate DNS records should be set up already. Often there is already a generic wildcard record like *.app.mydomain pointing to the Ingress controller’s external IP. For custom service domains, it is usually a CNAME pointing to the Ingress controller’s A record.

            +

            Note: The ScyllaDBMonitoring example creates an Ingress object with test-grafana.test.svc.cluster.local DNS domain that you should adjust to your domain. Below examples use example-grafana.apps.mydomain.

            +

            Note: To test a resolvable domain from your machine without creating DNS records, you can adjust /etc/hosts or similar.

            +
            $ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://example-grafana.apps.mydomain" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}"
            +200
            +
            +
            +
            +
            +

            Connecting through Ingress using an unresolvable domain

            +

            To connect to an Ingress without a resolvable domain you first need to find out your Ingress controller’s IP that can be resolved externally. Again, there are many ways to do so beyond the below examples.

            +

            Unless stated otherwise, we assume your Ingress is running on port 443.

            +
            $ INGRESS_PORT=443
            +
            +
            +
            +

            Variants

            +
            +
            Ingress ExternalIP
            +

            When you are running in a real cluster there is usually a cloud LoadBalancer or a bare metal alternative providing you with an externally reachable IP address.

            +
            $ INGRESS_IP="$( kubectl -n=haproxy-ingress get service/haproxy-ingress --template='{{ ( index .status.loadBalancer.ingress 0 ).ip }}' )"
            +
            +
            +
            +
            +
            Ingress NodePort
            +

            NodePort is slightly less convenient, but it’s available in development clusters as well.

            +
            $ INGRESS_IP="$( kubectl get nodes --template='{{ $internal_ip := "" }}{{ $external_ip := "" }}{{ range ( index .items 0 ).status.addresses }}{{ if eq .type "InternalIP" }}{{ $internal_ip = .address }}{{ else if eq .type "ExternalIP" }}{{ $external_ip = .address }}{{ end }}{{ end }}{{ if $external_ip }}{{ $external_ip }}{{ else }}{{ $internal_ip }}{{ end }}' )"
            +$ INGRESS_PORT="$( kubectl -n=haproxy-ingress get services/haproxy-ingress --template='{{ range .spec.ports }}{{ if eq .port 443 }}{{ .nodePort }}{{ end }}{{ end }}' )"
            +
            +
            +
            +
            +
            Connection
            +
            $ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://test-grafana.test.svc.cluster.local:${INGRESS_PORT}" --resolve "test-grafana.test.svc.cluster.local:${INGRESS_PORT}:${INGRESS_IP}" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}"
            +200
            +
            +
            +
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/multidc/eks.html b/v1.12/multidc/eks.html new file mode 100644 index 00000000000..377c43e34ab --- /dev/null +++ b/v1.12/multidc/eks.html @@ -0,0 +1,800 @@ + + + + + + + + + + + + + Build multiple Amazon EKS clusters with inter-Kubernetes networking | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Build multiple Amazon EKS clusters with inter-Kubernetes networking

            +

            This document describes the process of creating multiple Amazon EKS clusters in different regions, using separate VPCs, and explains the steps necessary for configuring inter-Kubernetes networking between the clusters. +The interconnected clusters can serve as a platform for deploying a multi-datacenter ScyllaDB cluster.

            +

            This guide will walk you through the process of creating and configuring EKS clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference.

            +
            +

            Prerequisites

            +

            To follow the below guide, you first need to install and configure the tools that you will need to create and manage AWS and Kubernetes resources:

            +
              +
            • eksctl – A command line tool for working with EKS clusters.

            • +
            • kubectl – A command line tool for working with Kubernetes clusters.

            • +
            +

            For more information see Getting started with Amazon EKS – eksctl in AWS documentation.

            +
            +
            +

            Create EKS clusters

            +
            +

            Create the first EKS cluster

            +

            Below is the required specification for the first cluster.

            +
            apiVersion: eksctl.io/v1alpha5
            +kind: ClusterConfig
            +
            +metadata:
            +  name: scylladb-us-east-1
            +  region: us-east-1
            +
            +availabilityZones:
            +- us-east-1a
            +- us-east-1b
            +- us-east-1c
            +
            +vpc:
            +  cidr: 10.0.0.0/16
            +
            +nodeGroups:
            +  ...
            +
            +
            +

            Specify the first cluster’s configuration file and save it as cluster-us-east-1.yaml. +Refer to Creating an EKS cluster section of ScyllaDB Operator documentation for the reference of the configuration of node groups.

            +

            To deploy the first cluster, use the below command:

            +
            eksctl create cluster -f=cluster-us-east-1.yaml
            +
            +
            +

            Run the following command to learn the status and VPC ID of the cluster:

            +
            eksctl get cluster --name=scylladb-us-east-1 --region=us-east-1
            +
            +
            +

            You will need to get the cluster’s context for future operations. To do so, use the below command:

            +
            kubectl config current-context
            +
            +
            +

            For any kubectl commands that you will want to run against this cluster, use the --context flag with the value returned by the above command.

            +
            +

            Deploy ScyllaDB Operator

            +

            Once the cluster is ready, refer to Deploying Scylla on a Kubernetes Cluster to deploy the ScyllaDB Operator and its prerequisites.

            +
            +
            +

            Prepare nodes for running ScyllaDB

            +

            Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in Deploying Scylla on EKS in ScyllaDB Operator documentation.

            +
            +
            +
            +

            Create the second EKS cluster

            +

            Below is the required specification for the second cluster. As was the case with the first cluster, the provided values are only exemplary and can be adjusted according to your needs.

            +
            +

            Caution

            +

            It is required that the VPCs of the two EKS clusters have non-overlapping IPv4 network ranges.

            +
            +
            apiVersion: eksctl.io/v1alpha5
            +kind: ClusterConfig
            +
            +metadata:
            +  name: scylladb-us-east-2
            +  region: us-east-2
            +
            +availabilityZones:
            +- us-east-2a
            +- us-east-2b
            +- us-east-2c
            +
            +vpc:
            +  cidr: 172.16.0.0/16
            +
            +nodeGroups:
            +  ...
            +
            +
            +

            Follow analogous steps to create the second EKS cluster and prepare it for running ScyllaDB.

            +
            +
            +
            +

            Configure the network

            +

            The prepared Kubernetes clusters each have a dedicated VPC network. +To be able to route the traffic between the two VPC networks, you need to create a networking connection between them, otherwise known as VPC peering.

            +
            +

            Create VPC peering

            +

            Refer to Create a VPC peering connection in AWS documentation for instructions on creating a VPC peering connection between the two earlier created VPCs.

            +

            In this example, the ID of the created VPC peering connection is pcx-08077dcc008fbbab6.

            +
            +
            +

            Update route tables

            +

            To enable private IPv4 traffic between the instances in the VPC peered network, you need to establish a communication channel by adding a route to the route tables associated with all the subnets associated with the instances for both VPCs. +The destination of the new route in a given route table is the CIDR of the VPC of the other cluster and the target is the ID of the VPC peering connection.

            +

            The following is an example of the route tables that enable communication of instances in two peered VPCs. Each table has a local route and the added route which sends traffic targeted at the other VPC to the peered network connection. The other preconfigured routes are omitted for readability.

            + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            Route tableDestinationTarget
            eksctl-scylladb-us-east-1-cluster/PublicRouteTable10.0.0.0/16local
            172.16.0.0/16pcx-08077dcc008fbbab6
            eksctl-scylladb-us-east-2-cluster/PublicRouteTable172.16.0.0/16local
            10.0.0.0/16pcx-08077dcc008fbbab6
            +

            Refer to Update your route tables for a VPC peering connection in AWS documentation for more information.

            +
            +
            +

            Update security groups

            +

            To allow traffic to flow to and from instances associated with security groups in the peered VPC, you need to update the inbound rules of the VPCs’ shared security groups.

            +

            Below is an example of the inbound rules that to be added to the corresponding security groups of the two VPCs.

            + + + + + + + + + + + + + + + + + + + + + + + +

            Security group name

            Type

            Protocol

            Port range

            Source

            eksctl-scylladb-us-east-1-cluster-ClusterSharedNodeSecurityGroup-TD05V9EVU3B8

            All traffic

            All

            All

            Custom 172.16.0.0/16

            eksctl-scylladb-us-east-2-cluster-ClusterSharedNodeSecurityGroup-1FR9YDLU0VE7M

            All traffic

            All

            All

            Custom 10.0.0.0/16

            +

            The names of the shared security groups of your VPCs should be similar to the ones presented in the example.

            +
            +

            Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters in ScyllaDB Operator documentation for guidance.

            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/multidc/gke.html b/v1.12/multidc/gke.html new file mode 100644 index 00000000000..a8cebf72309 --- /dev/null +++ b/v1.12/multidc/gke.html @@ -0,0 +1,770 @@ + + + + + + + + + + + + + Build multiple GKE clusters with inter-Kubernetes networking | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Build multiple GKE clusters with inter-Kubernetes networking

            +

            This document describes the process of creating multiple GKE clusters in a shared VPC and explains the steps necessary for configuring inter-Kubernetes networking between clusters in different regions. +The interconnected clusters can serve as a platform for deploying a Multi Datacenter ScyllaDB cluster.

            +

            This guide will walk you through the process of creating and configuring GKE clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference.

            +
            +

            Prerequisites

            +

            To follow the below guide, you first need to install and configure the following tools that you will need to create and manage GCP and Kubernetes resources:

            +
              +
            • gcloud CLI - Google Cloud Command Line Interface, a command line tool for working with Google Cloud resources and services directly.

            • +
            • kubectl – A command line tool for working with Kubernetes clusters.

            • +
            +

            See Install the Google Cloud CLI in GCP documentation and Install Tools in Kubernetes documentation for reference.

            +
            +
            +

            Create and configure a VPC network

            +

            For the clusters to have inter-Kubernetes networking, you will create a virtual network shared between all the instances, with dedicated subnets for each of the clusters. +To create the subnets manually, create the network in custom subnet mode.

            +
            +

            Create the VPC network

            +

            Run the below command to create the network:

            +
            gcloud compute networks create scylladb --subnet-mode=custom
            +
            +
            +

            With the VPC network created, create a dedicated subnet with secondary CIDR ranges for their Pod and Service pools in each region which the clusters will reside in.

            +
            +
            +

            Create VPC network subnets

            +

            To create a subnet for the first cluster in region us-east1, run the below command:

            +
            gcloud compute networks subnets create scylladb-us-east1 \
            +    --region=us-east1 \
            +    --network=scylladb \
            +    --range=10.0.0.0/20 \
            +    --secondary-range='cluster=10.1.0.0/16,services=10.2.0.0/20'
            +
            +
            +

            To create a subnet for the second cluster in region us-west1, run the below command:

            +
            gcloud compute networks subnets create scylladb-us-west1 \
            +    --region=us-west1 \
            +    --network=scylladb \
            +    --range=172.16.0.0/20 \
            +    --secondary-range='cluster=172.17.0.0/16,services=172.18.0.0/20'
            +
            +
            +
            +

            Caution

            +

            It is required that the IPv4 address ranges of the subnets allocated for the GKE clusters do not overlap.

            +
            +

            Refer to Create a VPC-native cluster and Alias IP ranges in GKE documentation for more information about VPC native clusters and alias IP ranges.

            +
            +
            +
            +

            Create GKE clusters

            +

            With the VPC network created, you will now create two VPC native GKE clusters in dedicated regions.

            +
            +

            Create the first GKE cluster

            +

            Run the following command to create the first GKE cluster in the us-east1 region:

            +
            gcloud container clusters create scylladb-us-east1 \
            +    --location=us-east1-b \
            +    --node-locations='us-east1-b,us-east1-c' \
            +    --machine-type=n1-standard-8 \
            +    --num-nodes=1 \
            +    --disk-type=pd-ssd \
            +    --disk-size=20 \
            +    --image-type=UBUNTU_CONTAINERD \
            +    --no-enable-autoupgrade \
            +    --no-enable-autorepair \
            +    --enable-ip-alias \
            +    --network=scylladb \
            +    --subnetwork=scylladb-us-east1 \
            +    --cluster-secondary-range-name=cluster \
            +    --services-secondary-range-name=services
            +
            +
            +

            Refer to Creating a GKE cluster section of ScyllaDB Operator documentation for more information regarding the configuration and deployment of additional node pools, including the one dedicated for ScyllaDB nodes.

            +

            You will need to get the cluster’s context for future operations. To do so, use the below command:

            +
            kubectl config current-context
            +
            +
            +

            For any kubectl commands that you will want to run against this cluster, use the --context flag with the value returned by the above command.

            +
            +

            Deploy ScyllaDB Operator

            +

            Once the cluster is ready, refer to Deploying Scylla on a Kubernetes Cluster to deploy the ScyllaDB Operator and its prerequisites.

            +
            +
            +

            Prepare nodes for running ScyllaDB

            +

            Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in Deploying Scylla on GKE page of the documentation.

            +
            +
            +
            +

            Create the second GKE cluster

            +

            Run the following command to create the second GKE cluster in the us-west1 region:

            +
            gcloud container clusters create scylladb-us-west1 \
            +    --location=us-west1-b \
            +    --node-locations='us-west1-b,us-west1-c' \
            +    --machine-type=n1-standard-8 \
            +    --num-nodes=1 \
            +    --disk-type=pd-ssd \
            +    --disk-size=20 \
            +    --image-type=UBUNTU_CONTAINERD \
            +    --no-enable-autoupgrade \
            +    --no-enable-autorepair \
            +    --enable-ip-alias \
            +    --network=scylladb \
            +    --subnetwork=scylladb-us-west1 \
            +    --cluster-secondary-range-name=cluster \
            +    --services-secondary-range-name=services
            +
            +
            +

            Follow analogous steps to create the second GKE cluster and prepare it for running ScyllaDB.

            +
            +
            +
            +

            Configure the firewall rules

            +

            When creating a cluster, GKE creates several ingress firewall rules that enable the instances to communicate with each other. +To establish interconnectivity between the two created Kubernetes clusters, you will now add the allocated IPv4 address ranges to their corresponding source address ranges.

            +

            First, retrieve the name of the firewall rule associated with the first cluster, which permits traffic between all Pods on a cluster, as required by the Kubernetes networking model. +The rule name is in the following format: gke-[cluster-name]-[cluster-hash]-all.

            +

            To retrieve it, run the below command:

            +
            gcloud compute firewall-rules list --filter='name~gke-scylladb-us-east1-.*-all'
            +
            +
            +

            The output should resemble the following:

            +
            NAME                                NETWORK   DIRECTION  PRIORITY  ALLOW                     DENY  DISABLED
            +gke-scylladb-us-east1-f17db261-all  scylladb  INGRESS    1000      udp,icmp,esp,ah,sctp,tcp        False
            +
            +
            +

            Modify the rule by updating the rule’s source ranges with the allocated Pod IPv4 address ranges of both clusters:

            +
            gcloud compute firewall-rules update gke-scylladb-us-east1-f17db261-all --source-ranges='10.1.0.0/16,172.17.0.0/16'
            +
            +
            +

            Follow the analogous steps for the other cluster. In this example, its corresponding firewall rule name is gke-scylladb-us-west1-0bb60902-all. To update it, you would run:

            +
            gcloud compute firewall-rules update gke-scylladb-us-west1-0bb60902-all --source-ranges='10.1.0.0/16,172.17.0.0/16'
            +
            +
            +

            Refer to Automatically created firewall rules in GKE documentation for more information.

            +
            +

            Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters in ScyllaDB Operator documentation for guidance.

            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/multidc/index.html b/v1.12/multidc/index.html new file mode 100644 index 00000000000..a9284d0fe63 --- /dev/null +++ b/v1.12/multidc/index.html @@ -0,0 +1,611 @@ + + + + + + + + + + + + + Deploying multi-datacenter ScyllaDB clusters in Kubernetes | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Deploying multi-datacenter ScyllaDB clusters in Kubernetes

            +

            Prepare a platform for a multi datacenter ScyllaDB cluster deployment:

            + +

            Deploy a multi-datacenter ScyllaDB cluster in Kubernetes:

            + +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/multidc/multidc.html b/v1.12/multidc/multidc.html new file mode 100644 index 00000000000..7a9be9e629d --- /dev/null +++ b/v1.12/multidc/multidc.html @@ -0,0 +1,1201 @@ + + + + + + + + + + + + + Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters

            +

            This document describes the process of deploying a Multi Datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters.

            +

            This guide will walk you through the example procedure of deploying two datacenters in distinct regions of a selected cloud provider.

            +
            +

            Note

            +

            This guide is dedicated to deploying multi-datacenter ScyllaDB clusters and does not discuss unrelated configuration options. +For details of ScyllaDB cluster deployments and their configuration, refer to Deploying Scylla on a Kubernetes Cluster in ScyllaDB Operator documentation.

            +
            +
            +

            Prerequisites

            +

            As this document describes the procedure of deploying a Multi Datacenter ScyllaDB cluster, you are expected to have the required infrastructure prepared. +Let’s assume two interconnected Kubernetes clusters, capable of communicating with each other over PodIPs, with each cluster meeting the following requirements:

            +
              +
            • a node pool dedicated to ScyllaDB nodes composed of at least 3 nodes running in different zones (with unique topology.kubernetes.io/zone label), configured to run ScyllaDB, each labeled with scylla.scylladb.com/node-type: scylla

            • +
            • running ScyllaDB Operator and its prerequisites

            • +
            • running a storage provisioner capable of provisioning XFS volumes of StorageClass scylladb-local-xfs in each of the nodes dedicated to ScyllaDB instances

            • +
            +

            You can refer to one of our guides describing the process of preparing such infrastructure:

            + +

            Additionally, to follow the below guide, you need to install and configure the following tools that you will need to manage Kubernetes resources:

            +
              +
            • kubectl – A command line tool for working with Kubernetes clusters.

            • +
            +

            See Install Tools in Kubernetes documentation for reference.

            +
            +
            +

            Multi Datacenter ScyllaDB Cluster

            +

            In v1.11, ScyllaDB Operator introduced support for manual multi-datacenter ScyllaDB cluster deployments.

            +
            +

            Warning

            +

            ScyllaDB Operator only supports manual configuration of multi-datacenter ScyllaDB clusters. +In other words, although ScyllaCluster API exposes the machinery necessary for setting up multi-datacenter ScylaDB clusters, the ScyllaDB Operator only automates operations for a single datacenter.

            +

            Operations related to multiple datacenters may require manual intervention of a human operator. +Most notably, destroying one of the Kubernetes clusters or ScyllaDB datacenters is going to leave DN nodes behind in other datacenters, and their removal has to be carried out manually.

            +
            +

            The main mechanism used to set up a manual multi-datacenter ScyllaDB cluster is a field in ScyllaCluster’s specification - externalSeeds.

            +
            +

            External seeds

            +

            The externalSeeds field in ScyllaCluster’s specification enables control over external seeds that are propagated to ScyllaDB binary as --seed-provider-parameters seeds=<external-seeds>. +In this context, external should be understood as “external to the datacenter being specified by the API”. +The provided seeds are used by the nodes as initial points of contact, which allows them to discover the cluster ring topology when joining it.

            +

            Refer to Scylla Seed Nodes in ScyllaDB documentation for more information regarding the function of seed nodes in ScyllaDB. +For more details regarding the function and implementation of external seeds, refer to the original enhancement proposal.

            +
            +
            +

            Networking

            +

            Since this guide assumes interconnectivity over PodIPs of the Kubernetes clusters, you are going to configure the ScyllaDB cluster’s nodes to communicate over PodIPs. +This is enabled by a subset of exposeOptions specified in ScyllaCluster API, introduced in v1.11.

            +

            For this particular setup, define the ScyllaClusers as follows:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +spec:
            +  exposeOptions:
            +    nodeService:
            +      type: Headless
            +    broadcastOptions:
            +      clients:
            +        type: PodIP
            +      nodes:
            +        type: PodIP
            +
            +
            +

            However, other configuration options allow for the manual deployment of multi-datacenter ScyllaDB clusters in different network setups. For details, refer to Exposing ScyllaClusters in ScyllaDB Operator documentation.

            +
            +

            Deploy a multi-datacenter ScyllaDB Cluster

            +
            +
            +

            Using context

            +

            Let’s specify contexts for kubectl commands used throughout the guide. +To retrieve the context of your current cluster, run:

            +
            kubectl config current-context
            +
            +
            +

            Save the contexts of the two clusters, which you are going to deploy the datacenters in, as CONTEXT_DC1 and CONTEXT_DC2 environment variables correspondingly.

            +
            +
            +

            Deploy the first datacenter

            +

            First, run the below command to create a dedicated ‘scylla’ namespace:

            +
            kubectl --context="${CONTEXT_DC1}" create ns scylla
            +
            +
            +

            For this guide, let’s assume that your cluster is running in us-east-1 region and the nodes dedicated to running ScyllaDB nodes are running in zones us-east-1a, us-east-1b and us-east-1c correspondingly. If that is not the case, adjust the manifest accordingly.

            +
            +

            Caution

            +

            The .spec.name field of the ScyllaCluster objects represents the ScyllaDB cluster name and has to be consistent across all datacenters of this ScyllaDB cluster. +The names of the datacenters, specified in .spec.datacenter.name, have to be unique across the entire multi-datacenter cluster.

            +

            For more information see Create a ScyllaDB Cluster - Multi Data Centers (DC) in ScyllaDB documentation.

            +
            +

            Save the ScyllaCluster manifest in dc1.yaml:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +metadata:
            +  name: scylla-cluster
            +  namespace: scylla
            +spec:
            +  agentVersion: 3.2.5
            +  version: 5.4.0
            +  cpuset: true
            +  sysctls:
            +  - "fs.aio-max-nr=2097152"
            +  automaticOrphanedNodeCleanup: true
            +  exposeOptions:
            +    broadcastOptions:
            +      clients:
            +        type: PodIP
            +      nodes:
            +        type: PodIP
            +    nodeService:
            +      type: Headless
            +  datacenter:
            +    name: us-east-1
            +    racks:
            +    - name: a
            +      members: 1
            +      storage:
            +        storageClassName: scylladb-local-xfs
            +        capacity: 1800G
            +      agentResources:
            +        requests:
            +          cpu: 100m
            +          memory: 250M
            +        limits:
            +          cpu: 100m
            +          memory: 250M
            +      resources:
            +        requests:
            +          cpu: 7
            +          memory: 56G
            +        limits:
            +          cpu: 7
            +          memory: 56G
            +      placement:
            +        podAntiAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +          - topologyKey: kubernetes.io/hostname
            +            labelSelector:
            +              matchLabels:
            +                app.kubernetes.io/name: scylla
            +                scylla/cluster: scylla-cluster
            +        nodeAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +            nodeSelectorTerms:
            +            - matchExpressions:
            +              - key: topology.kubernetes.io/zone
            +                operator: In
            +                values:
            +                - us-east-1a
            +              - key: scylla.scylladb.com/node-type
            +                operator: In
            +                values:
            +                - scylla
            +        tolerations:
            +        - key: role
            +          operator: Equal
            +          value: scylla-clusters
            +          effect: NoSchedule
            +    - name: b
            +      members: 1
            +      storage:
            +        storageClassName: scylladb-local-xfs
            +        capacity: 1800G
            +      agentResources:
            +        requests:
            +          cpu: 100m
            +          memory: 250M
            +        limits:
            +          cpu: 100m
            +          memory: 250M
            +      resources:
            +        requests:
            +          cpu: 7
            +          memory: 56G
            +        limits:
            +          cpu: 7
            +          memory: 56G
            +      placement:
            +        podAntiAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +          - topologyKey: kubernetes.io/hostname
            +            labelSelector:
            +              matchLabels:
            +                app.kubernetes.io/name: scylla
            +                scylla/cluster: scylla-cluster
            +        nodeAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +            nodeSelectorTerms:
            +            - matchExpressions:
            +              - key: topology.kubernetes.io/zone
            +                operator: In
            +                values:
            +                - us-east-1b
            +              - key: scylla.scylladb.com/node-type
            +                operator: In
            +                values:
            +                - scylla
            +        tolerations:
            +        - key: role
            +          operator: Equal
            +          value: scylla-clusters
            +          effect: NoSchedule
            +    - name: c
            +      members: 1
            +      storage:
            +        storageClassName: scylladb-local-xfs
            +        capacity: 1800G
            +      agentResources:
            +        requests:
            +          cpu: 100m
            +          memory: 250M
            +        limits:
            +          cpu: 100m
            +          memory: 250M
            +      resources:
            +        requests:
            +          cpu: 7
            +          memory: 56G
            +        limits:
            +          cpu: 7
            +          memory: 56G
            +      placement:
            +        podAntiAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +          - topologyKey: kubernetes.io/hostname
            +            labelSelector:
            +              matchLabels:
            +                app.kubernetes.io/name: scylla
            +                scylla/cluster: scylla-cluster
            +        nodeAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +            nodeSelectorTerms:
            +            - matchExpressions:
            +              - key: topology.kubernetes.io/zone
            +                operator: In
            +                values:
            +                - us-east-1c
            +              - key: scylla.scylladb.com/node-type
            +                operator: In
            +                values:
            +                - scylla
            +        tolerations:
            +        - key: role
            +          operator: Equal
            +          value: scylla-clusters
            +          effect: NoSchedule
            +
            +
            +

            Apply the manifest:

            +
            kubectl --context="${CONTEXT_DC1}" apply --server-side -f=dc1.yaml
            +
            +
            +

            Wait for the cluster to be fully rolled out:

            +
            kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
            +
            +
            +
            scyllacluster.scylla.scylladb.com/scylla-cluster condition met
            +
            +
            +
            kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
            +
            +
            +
            scyllacluster.scylla.scylladb.com/scylla-cluster condition met
            +
            +
            +
            kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster
            +
            +
            +
            scyllacluster.scylla.scylladb.com/scylla-cluster condition met
            +
            +
            +

            You can now verify that all the nodes of your cluster are in UN state:

            +
            kubectl --context="${CONTEXT_DC1}" -n=scylla exec -it pod/scylla-cluster-us-east-1-a-0 -c=scylla -- nodetool status
            +
            +
            +

            The expected output should look similar to the below:

            +
            Datacenter: us-east-1
            +=====================
            +Status=Up/Down
            +|/ State=Normal/Leaving/Joining/Moving
            +--  Address      Load       Tokens       Owns    Host ID                               Rack
            +UN  10.0.70.195  290 KB     256          ?       494277b9-121c-4af9-bd63-3d0a7b9305f7  c
            +UN  10.0.59.24   559 KB     256          ?       a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37  b
            +UN  10.0.19.237  107 KB     256          ?       64b6292a-327f-4128-852a-6004039f402e  a
            +
            +
            +
            +
            Retrieve PodIPs of ScyllaDB nodes for use as external seeds
            +
            +

            Warning

            +

            Due to the ephemeral nature of PodIPs, it is ill-advised to use them as seeds in production environments. +This is because there is a high likelihood that the Pods of your ScyllaDB clusters will change their IPs during the cluster’s lifecycle, and so the provided seeds will no longer point to the ScyllaDB nodes. +It is undesired, as the seeds provided on node’s startup may serve as fallback contact points when all of the node’s peers are unreachable. +In production environments, it is recommended that you use domain names or non-ephemeral IP addresses as external seeds. +PodIPs are being used in this example for the sheer simplicity of this setup.

            +
            +

            Use the below commands and their expected outputs as a reference for retrieving the PodIPs used by the cluster for inter-node communication.

            +
            kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-a-0 --template='{{ .status.podIP }}'
            +
            +
            +
            10.0.19.237
            +
            +
            +
            kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-b-0 --template='{{ .status.podIP }}'
            +
            +
            +
            10.0.59.24
            +
            +
            +
            kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-c-0 --template='{{ .status.podIP }}'
            +
            +
            +
            10.0.70.195
            +
            +
            +

            You are going to utilize the retrieved addresses as seeds for the other datacenter.

            +
            +
            +
            +

            Deploy the second datacenter

            +

            To deploy the second datacenter, you will follow similar steps.

            +

            First, create a dedicated ‘scylla’ namespace:

            +
            kubectl --context="${CONTEXT_DC2}" create ns scylla
            +
            +
            +

            Replace the values in .spec.externalSeeds of the below manifest with the Pod IP addresses that you retrieved earlier. +The provided values are going to serve as initial contact points for the joining nodes of the second datacenter.

            +

            For this guide, let’s assume that the second cluster is running in us-east-2 region and the nodes dedicated for running ScyllaDB nodes are running in zones us-east-2a, us-east-2b and us-east-2c correspondingly. If that is not the case, adjust the manifest accordingly. +Having configured it, save the manifest as dc2.yaml:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +metadata:
            +  name: scylla-cluster
            +  namespace: scylla
            +spec:
            +  agentVersion: 3.2.5
            +  version: 5.4.0
            +  cpuset: true
            +  sysctls:
            +  - "fs.aio-max-nr=2097152"
            +  automaticOrphanedNodeCleanup: true
            +  exposeOptions:
            +    broadcastOptions:
            +      clients:
            +        type: PodIP
            +      nodes:
            +        type: PodIP
            +    nodeService:
            +      type: Headless
            +  externalSeeds:
            +  - 10.0.19.237
            +  - 10.0.59.24
            +  - 10.0.70.195
            +  datacenter:
            +    name: us-east-2
            +    racks:
            +    - name: a
            +      members: 1
            +      storage:
            +        storageClassName: scylladb-local-xfs
            +        capacity: 1800G
            +      agentResources:
            +        requests:
            +          cpu: 100m
            +          memory: 250M
            +        limits:
            +          cpu: 100m
            +          memory: 250M
            +      resources:
            +        requests:
            +          cpu: 7
            +          memory: 56G
            +        limits:
            +          cpu: 7
            +          memory: 56G
            +      placement:
            +        podAntiAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +          - topologyKey: kubernetes.io/hostname
            +            labelSelector:
            +              matchLabels:
            +                app.kubernetes.io/name: scylla
            +                scylla/cluster: scylla-cluster
            +        nodeAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +            nodeSelectorTerms:
            +            - matchExpressions:
            +              - key: topology.kubernetes.io/zone
            +                operator: In
            +                values:
            +                - us-east-2a
            +              - key: scylla.scylladb.com/node-type
            +                operator: In
            +                values:
            +                - scylla
            +        tolerations:
            +        - key: role
            +          operator: Equal
            +          value: scylla-clusters
            +          effect: NoSchedule
            +    - name: b
            +      members: 1
            +      storage:
            +        storageClassName: scylladb-local-xfs
            +        capacity: 1800G
            +      agentResources:
            +        requests:
            +          cpu: 100m
            +          memory: 250M
            +        limits:
            +          cpu: 100m
            +          memory: 250M
            +      resources:
            +        requests:
            +          cpu: 7
            +          memory: 56G
            +        limits:
            +          cpu: 7
            +          memory: 56G
            +      placement:
            +        podAntiAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +          - topologyKey: kubernetes.io/hostname
            +            labelSelector:
            +              matchLabels:
            +                app.kubernetes.io/name: scylla
            +                scylla/cluster: scylla-cluster
            +        nodeAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +            nodeSelectorTerms:
            +            - matchExpressions:
            +              - key: topology.kubernetes.io/zone
            +                operator: In
            +                values:
            +                - us-east-2b
            +              - key: scylla.scylladb.com/node-type
            +                operator: In
            +                values:
            +                - scylla
            +        tolerations:
            +        - key: role
            +          operator: Equal
            +          value: scylla-clusters
            +          effect: NoSchedule
            +    - name: c
            +      members: 1
            +      storage:
            +        storageClassName: scylladb-local-xfs
            +        capacity: 1800G
            +      agentResources:
            +        requests:
            +          cpu: 100m
            +          memory: 250M
            +        limits:
            +          cpu: 100m
            +          memory: 250M
            +      resources:
            +        requests:
            +          cpu: 7
            +          memory: 56G
            +        limits:
            +          cpu: 7
            +          memory: 56G
            +      placement:
            +        podAntiAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +          - topologyKey: kubernetes.io/hostname
            +            labelSelector:
            +              matchLabels:
            +                app.kubernetes.io/name: scylla
            +                scylla/cluster: scylla-cluster
            +        nodeAffinity:
            +          requiredDuringSchedulingIgnoredDuringExecution:
            +            nodeSelectorTerms:
            +            - matchExpressions:
            +              - key: topology.kubernetes.io/zone
            +                operator: In
            +                values:
            +                - us-east-2c
            +              - key: scylla.scylladb.com/node-type
            +                operator: In
            +                values:
            +                - scylla
            +        tolerations:
            +        - key: role
            +          operator: Equal
            +          value: scylla-clusters
            +          effect: NoSchedule
            +
            +
            +

            To apply the manifest, run:

            +
            kubectl --context="${CONTEXT_DC2}" -n=scylla apply --server-side -f=dc2.yaml
            +
            +
            +

            Wait for the second datacenter to roll out:

            +
            kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
            +
            +
            +
            scyllacluster.scylla.scylladb.com/scylla-cluster condition met
            +
            +
            +
            kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
            +
            +
            +
            scyllacluster.scylla.scylladb.com/scylla-cluster condition met
            +
            +
            +
            kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster
            +
            +
            +
            scyllacluster.scylla.scylladb.com/scylla-cluster condition met
            +
            +
            +

            You can verify that the nodes have joined the existing cluster and that you are now running a multi-datacenter ScyllaDB cluster by running nodetool status with the below command:

            +
            kubectl --context="${CONTEXT_DC2}" -n=scylla exec -it pod/scylla-cluster-us-east-2-a-0 -c=scylla -- nodetool status
            +
            +
            +
            Datacenter: us-east-1
            +=====================
            +Status=Up/Down
            +|/ State=Normal/Leaving/Joining/Moving
            +--  Address        Load       Tokens       Owns    Host ID                               Rack
            +UN  10.0.70.195    705 KB     256          ?       494277b9-121c-4af9-bd63-3d0a7b9305f7  c
            +UN  10.0.59.24     764 KB     256          ?       a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37  b
            +UN  10.0.19.237    634 KB     256          ?       64b6292a-327f-4128-852a-6004039f402e  a
            +Datacenter: us-east-2
            +=====================
            +Status=Up/Down
            +|/ State=Normal/Leaving/Joining/Moving
            +--  Address        Load       Tokens       Owns    Host ID                               Rack
            +UN  172.16.39.209  336 KB     256          ?       7c30ea55-7a4f-4d93-86f7-c881772ebe62  b
            +UN  172.16.25.18   759 KB     256          ?       665dde7e-e420-4db3-8c54-ca71efd39b2e  a
            +UN  172.16.87.27   503 KB     256          ?       c19c89cb-e24c-4062-9df4-2aa90ab29a99  c
            +
            +
            +
            +
            +
            +
            +

            Scylla Manager

            +

            To integrate a multi-datacenter ScyllaDB cluster with Scylla Manager, you must deploy the Scylla Manager in only one datacenter.

            +

            In this example, let’s choose the Kubernetes cluster deployed in the first datacenter to host it. +To deploy Scylla Manager, follow the steps described in Deploying Scylla Manager on a Kubernetes Cluster +in ScyllaDB Operator documentation.

            +

            In order to define the Scylla Manager tasks, add them to the ScyllaCluster object deployed in the same Kubernetes cluster +in which your Scylla Manager is running.

            +

            Every datacenter (represented by ScyllaCluster CR) is, by default, provisioned with a new, random Scylla Manager Agent auth token. +To use Scylla Manager with multiple datacenter (represented by ScyllaClusters), you have to make sure they all use the same token.

            +

            Extract it from the first datacenter with the below command:

            +
            kubectl --context="${CONTEXT_DC1}" -n=scylla get secrets/scylla-cluster-auth-token --template='{{ index .data "auth-token.yaml" }}' | base64 -d
            +
            +
            +
            auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf
            +
            +
            +

            Save the output, replace the token with your own, and patch the secret in the second datacenter with the below command:

            +
            kubectl --context="${CONTEXT_DC2}" -n=scylla patch secret/scylla-cluster-auth-token--type='json' -p='[{"op": "add", "path": "/stringData", "value": {"auth-token.yaml": "auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf"}}]'
            +
            +
            +

            Execute a rolling restart of the nodes in DC2 to make sure they pick up the new token:

            +
            kubectl --context="${CONTEXT_DC2}" -n=scylla patch scyllacluster/scylla-cluster --type='merge' -p='{"spec": {"forceRedeploymentReason": "sync scylla-manager-agent token ('"$( date )"')"}}'
            +
            +
            +
            +
            +

            ScyllaDBMonitoring

            +

            To monitor your cluster, deploy ScyllaDBMonitoring in every datacenter independently. +To deploy ScyllaDB Monitoring, follow the steps described in Deploy managed monitoring in ScyllaDB Operator documentation.

            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/nodeoperations/automatic-cleanup.html b/v1.12/nodeoperations/automatic-cleanup.html new file mode 100644 index 00000000000..c338fa5d580 --- /dev/null +++ b/v1.12/nodeoperations/automatic-cleanup.html @@ -0,0 +1,608 @@ + + + + + + + + + + + + + Automatic cleanup and replacement in case when k8s node is lost | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Automatic cleanup and replacement in case when k8s node is lost

            +

            In case when your k8s cluster loses one of the nodes due to incident or explicit removal, Scylla Pods may become unschedulable due to PVC node affinity.

            +

            When automaticOrphanedNodeCleanup flag is enabled in your ScyllaCluster, Scylla Operator will perform automatic +node replacement of a Pod which lost his bound resources.

            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/nodeoperations/index.html b/v1.12/nodeoperations/index.html new file mode 100644 index 00000000000..19bb5e0d7d2 --- /dev/null +++ b/v1.12/nodeoperations/index.html @@ -0,0 +1,607 @@ + + + + + + + + + + + + + Node operations using Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Node operations using Scylla Operator

            + +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/nodeoperations/maintenance-mode.html b/v1.12/nodeoperations/maintenance-mode.html new file mode 100644 index 00000000000..4d9bea911e3 --- /dev/null +++ b/v1.12/nodeoperations/maintenance-mode.html @@ -0,0 +1,617 @@ + + + + + + + + + + + + + Maintenance mode | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + + + +
            +

            Maintenance mode

            +

            When maintenance mode is enabled, readiness probe of Scylla Pod will always return failure and liveness probe will always succeed. This causes that Pod under maintenance +is being removed from K8s Load Balancer and DNS registry but Pod itself stays alive.

            +

            This allows the Scylla Operator to interact with Scylla and Scylla dependencies inside the Pod. +For example user may turn off Scylla process, do something with the filesystem and bring the process back again.

            +

            To enable maintenance mode add scylla/node-maintenance label to service in front of Scylla Pod.

            +
            kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance=""
            +
            +
            +

            To disable, simply remove this label from service.

            +
            kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance-
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/nodeoperations/replace-node.html b/v1.12/nodeoperations/replace-node.html new file mode 100644 index 00000000000..06adca43538 --- /dev/null +++ b/v1.12/nodeoperations/replace-node.html @@ -0,0 +1,691 @@ + + + + + + + + + + + + + Replacing a Scylla node | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + + + +
            +

            Replacing a Scylla node

            +
            +

            Replacing a dead node

            +

            In the case of a host failure, it may not be possible to bring back the node to life.

            +

            Replace dead node operation will cause the other nodes in the cluster to stream data to the node that was replaced. +This operation can take some time (depending on the data size and network bandwidth).

            +

            This procedure is for replacing one dead node. To replace more than one dead node, run the full procedure to completion one node at a time

            +

            Procedure

            +
              +
            1. Verify the status of the node using nodetool status command, the node with status DN is down and need to be replaced

              +
              kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status
              +Datacenter: us-east-1
              +=====================
              +Status=Up/Down
              +|/ State=Normal/Leaving/Joining/Moving
              +--  Address        Load       Tokens       Owns    Host ID                               Rack
              +UN  10.43.125.110  74.63 KB   256          ?       8ebd6114-969c-44af-a978-87a4a6c65c3e  us-east-1a
              +UN  10.43.231.189  91.03 KB   256          ?       35d0cb19-35ef-482b-92a4-b63eee4527e5  us-east-1a
              +DN  10.43.43.51    74.77 KB   256          ?       1ffa7a82-c41c-4706-8f5f-4d45a39c7003  us-east-1a
              +
              +
              +
            2. +
            3. Identify service which is bound to down node by checking IP address

              +
              kubectl -n scylla get svc
              +NAME                                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                           AGE
              +simple-cluster-client                   ClusterIP   None            <none>        9180/TCP                                                          3h12m
              +simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.231.189   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h12m
              +simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.125.110   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h11m
              +simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.43.51     <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h5m
              +
              +
              +
            4. +
            5. Drain node which we would like to replace using. This command may delete your data from local disks attached to given node!

              +
              kubectl drain gke-scylla-demo-default-pool-b4b390a1-6j12 --ignore-daemonsets --delete-local-data
              +
              +
              +

              Pod which will be replaced should enter the Pending state

              +
              kubectl -n scylla get pods
              +NAME                                    READY   STATUS    RESTARTS   AGE
              +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          3h21m
              +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          3h19m
              +simple-cluster-us-east-1-us-east-1a-2   0/2     Pending   0          8m14s
              +
              +
              +
            6. +
            7. To being node replacing, add scylla/replace="" label to service bound to pod we are replacing.

              +
              kubectl -n scylla label svc simple-cluster-us-east-1-us-east-1a-2 scylla/replace=""
              +
              +
              +

              Your failed Pod should be recreated on available k8s node

              +
              kubectl -n scylla get pods
              +NAME                                    READY   STATUS    RESTARTS   AGE
              +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          3h27m
              +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          3h25m
              +simple-cluster-us-east-1-us-east-1a-2   1/2     Running   0          9s
              +
              +
              +

              Because other nodes in cluster must stream data to new node this operation might take some time depending on how much data your cluster stores. +After bootstraping is over, your new Pod should be ready to go. +Old one shouldn’t be no longer visible in nodetool status

              +
              kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status
              +Datacenter: us-east-1
              +=====================
              +Status=Up/Down
              +|/ State=Normal/Leaving/Joining/Moving
              +--  Address        Load       Tokens       Owns    Host ID                               Rack
              +UN  10.43.125.110  74.62 KB   256          ?       8ebd6114-969c-44af-a978-87a4a6c65c3e  us-east-1a
              +UN  10.43.231.189  91.03 KB   256          ?       35d0cb19-35ef-482b-92a4-b63eee4527e5  us-east-1a
              +UN  10.43.191.172  74.77 KB   256          ?       1ffa7a82-c41c-4706-8f5f-4d45a39c7003  us-east-1a
              +
              +
              +
            8. +
            9. Run the repair on the cluster to make sure that the data is synced with the other nodes in the cluster. +You can use Scylla Manager to run the repair.

            10. +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/nodeoperations/restore.html b/v1.12/nodeoperations/restore.html new file mode 100644 index 00000000000..83d6848d581 --- /dev/null +++ b/v1.12/nodeoperations/restore.html @@ -0,0 +1,842 @@ + + + + + + + + + + + + + Restore from backup | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + + + +
            +

            Restore from backup

            +

            This procedure will describe how to restore from backup taken using Scylla Manager to a fresh empty cluster of any size.

            +
            +

            Warning

            +

            Restoring schema with ScyllaDB OS 5.4.X or ScyllaDB Enterprise 2024.1.X and consistent_cluster_management isn’t supported.

            +

            When creating the target ScyllaDB cluster, configure it with consistent_cluster_management: false. +Refer to API Reference to learn how to customize ScyllaDB configuration files.

            +

            When following the steps for schema restore, ensure you follow the additional steps dedicated to affected ScyllaDB versions.

            +
            +

            In the following example, the ScyllaCluster, which was used to take the backup, is called source. Backup will be restored into the ScyllaCluster named target.

            +
            + +
            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +metadata:
            +  name: source
            +spec:
            +  agentVersion: 3.2.5
            +  version: 5.4.1
            +  developerMode: true
            +  backups:
            +  - name: foo
            +    location:
            +    - s3:source-backup
            +    keyspace:
            +    - '*'
            +  datacenter:
            +    name: us-east-1
            +    racks:
            +    - name: us-east-1a
            +      members: 1
            +      storage:
            +        capacity: 1Gi
            +      resources:
            +        limits:
            +          cpu: 1
            +          memory: 1Gi
            +
            +
            +
            + +
            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +metadata:
            +  name: target
            +spec:
            +  agentVersion: 3.2.5
            +  version: 5.4.1
            +  developerMode: true
            +  datacenter:
            +    name: us-east-1
            +    racks:
            +    - name: us-east-1a
            +      members: 1
            +      storage:
            +        capacity: 1Gi
            +      resources:
            +        limits:
            +          cpu: 1
            +          memory: 1Gi
            +
            +
            +
            +
            +

            Make sure your target cluster is already registered in Scylla Manager. To get a list of all registered clusters, execute the following command:

            +
            $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool cluster list
            ++--------------------------------------+---------------------------------------+---------+-----------------+
            +| ID                                   | Name                                  | Port    | CQL credentials |
            ++--------------------------------------+---------------------------------------+---------+-----------------+
            +| af1dd5cd-0406-4974-949f-dc9842980080 | scylla/target                        | default | set             |
            +| ebd82268-efb7-407e-a540-3619ae053778 | scylla/source                        | default | set             |
            ++--------------------------------------+---------------------------------------+---------+-----------------+
            +
            +
            +

            Identify the tag of a snapshot which you want to restore. To get a list of all available snapshots, execute following command:

            +
            kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c <CLUSTER_ID> --all-clusters -L <BACKUP_LOCATION>
            +
            +
            +

            Where:

            +
              +
            • CLUSTER_ID - the name or ID of a registered cluster with access to BACKUP_LOCATION.

            • +
            • BACKUP_LOCATION - the location in which the backup is stored.

            • +
            +

            In this example, BACKUP_LOCATION is s3:source-backup. Use the name of cluster which has access to the backup location for CLUSTER_ID. +In this example, it’s scylla/target.

            +
            $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c scylla/target --all-clusters -L s3:source-backup
            +backup/ff36d7e0-af2e-458c-afe6-868e0f3396b2
            +Snapshots:
            +  - sm_20240105115931UTC (409MiB, 1 nodes)
            +Keyspaces:
            +  - system_schema (15 tables)
            +  - users (9 tables)
            +
            +
            +
            +

            Restore schema

            +

            In the below commands, we are restoring the sm_20240105115931UTC snapshot. Replace it with a tag of a snapshot that you want to restore. +Restoring consist of two steps. First, you’ll restore the schema, and then the data. +To restore schema, create a restore task manually on target ScyllaCluster by executing following command:

            +
            kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager --  sctool restore -c <CLUSTER_ID> -L <BACKUP_LOCATION> -T <SNAPSHOT_TAG> --restore-schema
            +
            +
            +

            Where:

            +
              +
            • CLUSTER_ID - a name or ID of a cluster you want to restore into.

            • +
            • BACKUP_LOCATION - the location in which the backup is stored.

            • +
            • SNAPSHOT_TAG - a tag of a snapshot that you want to restore.

            • +
            +

            When the task is created, the command will output the ID of a restore task.

            +
            $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-schema
            +restore/57228c52-7cf6-4271-8c8d-d446ff160747
            +
            +
            +

            Use the following command to check progress of the restore task:

            +
            $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/57228c52-7cf6-4271-8c8d-d446ff160747
            +Restore progress
            +Run:            0dd20cdf-abc4-11ee-951c-6e7993cf42ed
            +Status:         DONE - restart required (see restore docs)
            +Start time:     05 Jan 24 12:15:02 UTC
            +End time:       05 Jan 24 12:15:09 UTC
            +Duration:       6s
            +Progress:       100% | 100%
            +Snapshot Tag:   sm_20240105115931UTC
            +
            ++---------------+-------------+----------+----------+------------+--------+
            +| Keyspace      |    Progress |     Size |  Success | Downloaded | Failed |
            ++---------------+-------------+----------+----------+------------+--------+
            +| system_schema | 100% | 100% | 214.150k | 214.150k |   214.150k |      0 |
            ++---------------+-------------+----------+----------+------------+--------+
            +
            +
            +

            As suggested in the progress output, you will need to execute a rolling restart of the ScyllaCluster.

            +
            kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "schema restored"}}'
            +
            +
            +

            Use the following commands to wait until restart is finished:

            +
            $ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target
            +scyllacluster.scylla.scylladb.com/target condition met
            +
            +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target
            +scyllacluster.scylla.scylladb.com/target condition met
            +
            +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target
            +scyllacluster.scylla.scylladb.com/target condition met
            +
            +
            +
            +

            Caution

            +

            Restoring schema with ScyllaDB OS 5.4.X or ScyllaDB Enterprise 2024.1.X and consistent_cluster_management

            +

            After you’ve followed the above steps with a ScyllaDB target cluster with consistent_cluster_management disabled, you’ll need to enable Raft by configuring the target cluster with consistent_cluster_management: true. +Refer to API Reference to learn how to customize ScyllaDB configuration files.

            +

            You will then need to execute a rolling restart of the ScyllaCluster for the change to take effect.

            +
            kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "raft enabled"}}'
            +
            +
            +

            Use the following commands to wait until restart is finished:

            +
            $ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target
            +scyllacluster.scylla.scylladb.com/target condition met
            +
            +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target
            +scyllacluster.scylla.scylladb.com/target condition met
            +
            +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target
            +scyllacluster.scylla.scylladb.com/target condition met
            +
            +
            +
            +
            +
            +

            Restore tables

            +

            To restore the tables content, create a restore task manually on target ScyllaCluster by executing the following command:

            +
            kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c <CLUSTER_ID> -L <BACKUP_LOCATION> -T <SNAPSHOT_TAG> --restore-tables
            +
            +
            +

            Where:

            +
              +
            • CLUSTER_ID - a name or ID of a cluster you want to restore into.

            • +
            • BACKUP_LOCATION - the location in which the backup is stored.

            • +
            • SNAPSHOT_TAG - a tag of a snapshot that you want to restore.

            • +
            +

            When the task is created, the command will output the ID of a restore task.

            +
            $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-tables
            +restore/63642069-bed5-4def-ba0f-68c49e47ace1
            +
            +
            +

            Use the following command to check progress of the restore task:

            +
            $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/63642069-bed5-4def-ba0f-68c49e47ace1
            +Restore progress
            +Run:            ab015cef-abc8-11ee-9521-6e7993cf42ed
            +Status:         DONE
            +Start time:     05 Jan 24 12:48:04 UTC
            +End time:       05 Jan 24 12:48:15 UTC
            +Duration:       11s
            +Progress:       100% | 100%
            +Snapshot Tag:   sm_20240105115931UTC
            +
            ++-------------+-------------+--------+---------+------------+--------+
            +| Keyspace    |    Progress |   Size | Success | Downloaded | Failed |
            ++-------------+-------------+--------+---------+------------+--------+
            +| users       | 100% | 100% | 409MiB |  409MiB |     409MiB |      0 |
            ++-------------+-------------+--------+---------+------------+--------+
            +
            +Post-restore repair progress
            +Run:            ab015cef-abc8-11ee-9521-6e7993cf42ed
            +Status:         DONE
            +Start time:     05 Jan 24 12:48:04 UTC
            +End time:       05 Jan 24 12:48:15 UTC
            +Duration:       11s
            +Progress:       100%
            +Intensity:      1
            +Parallel:       0
            +Datacenters:
            +  - us-east-1
            +
            ++-------------+--------------+----------+----------+
            +| Keyspace    |        Table | Progress | Duration |
            ++-------------+--------------+----------+----------+
            +| users       | users        | 100%     | 0s       |
            ++-------------+--------------+----------+----------+
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/nodeoperations/scylla-upgrade.html b/v1.12/nodeoperations/scylla-upgrade.html new file mode 100644 index 00000000000..b59341bc40f --- /dev/null +++ b/v1.12/nodeoperations/scylla-upgrade.html @@ -0,0 +1,690 @@ + + + + + + + + + + + + + Upgrading version of Scylla | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Upgrading version of Scylla

            +

            To upgrade Scylla version using Operator user have to modify existing ScyllaCluster definition.

            +

            In this example cluster will be upgraded to version 4.4.5.

            +
            kubectl -n scylla patch ScyllaCluster simple-cluster  -p '{"spec":{"version": "4.4.5"}}' --type=merge
            +
            +
            +

            Operator supports two types of version upgrades:

            +
              +
            1. Patch upgrade

            2. +
            3. Generic upgrade

            4. +
            +

            Patch upgrade

            +

            Patch upgrade is executed when only patch version change is detected according to semantic versioning format. +Procedure simply rolls out a restart of whole cluster and upgrades Scylla container image for each node one by one.

            +

            Example: 4.0.0 -> 4.0.1

            +

            Generic upgrade

            +

            Generic upgrades are executed for the non patch version changes.

            +

            Example: 4.0.0 -> 2020.1.0 or 4.0.0 -> 4.1.0 or even 4.0.0 -> nightly

            +

            User can observe current state of upgrade in ScyllaCluster status.

            +
            kubectl -n scylla describe ScyllaCluster simple-cluster
            +[...]
            +Status:
            +  Racks:
            +    us-east-1a:
            +      Members:        3
            +      Ready Members:  3
            +      Version:        4.1.9
            +  Upgrade:
            +    Current Node:         simple-cluster-us-east-1-us-east-1a-2
            +    Current Rack:         us-east-1a
            +    Data Snapshot Tag:    so_data_20201228135002UTC
            +    From Version:         4.1.9
            +    State:                validate_upgrade
            +    System Snapshot Tag:  so_system_20201228135002UTC
            +    To Version:           4.2.2
            +
            +
            +

            Each upgrade begins with taking a snapshot of system and system_schema keyspaces on all nodes in parallel. +Name of this snapshot tag is saved in upgrade status under System Snapshot Tag.

            +

            Before nodes in rack are upgraded, underlying StatefulSet is changed to use OnDelete UpgradeStrategy. +This allows Operator have a full control over when Pod image is changed.

            +

            When a node is being upgraded, maintenance mode is enabled, then the node is drained and snapshot of all data keyspaces is taken. +Snapshot tag is saved under Data Snapshot Tag and is the same for all nodes during the procedure. +Once everything is set up, maintenance mode is disabled and Scylla Pod is deleted. Underlying StatefulSet will bring up a new +Pod with upgraded version. +Once Pod will become ready, data snapshot from this particular node is removed, and Operator moves to next node.

            +

            Once every rack is upgraded, system snapshot is removed from all nodes in parallel and previous StatefulSet UpgradeStrategy is restored. +At this point, all your nodes should be already in desired version.

            +

            Current state of upgrade can be traced using Current Node, Current Rack and State status fields.

            +
              +
            • Current Node shows which node is being upgraded.

            • +
            • Current Rack displays which rack is being upgraded.

            • +
            • State contain information at which stage upgrade is.

            • +
            +

            State can have following values:

            +
              +
            • begin_upgrade - upgrade is starting

            • +
            • check_schema_agreement - Operator waits until all nodes reach schema agreement. It waits for it for 1 minute, prints an error log message and check is retried.

            • +
            • create_system_backup - system keyspaces snapshot is being taken

            • +
            • find_next_rack - Operator finds out which rack must be upgraded next, decision is saved in Current Rack

            • +
            • upgrade_image_in_pod_spec - Image and UpgradeStrategy is upgraded in underlying StatefulSet

            • +
            • find_next_node - Operator finds out which node must be upgraded next, decision is saved in Current Node

            • +
            • enable_maintenance_mode - maintenance mode is being enabled

            • +
            • drain_node - node is being drained

            • +
            • backup_data - snapshot of data keyspaces is being taken

            • +
            • disable_maintenance_mode - maintenance mode is being disabled

            • +
            • delete_pod - Scylla Pod is being deleted

            • +
            • validate_upgrade - Operator validates if new pod enters Ready state and if Scylla version is upgraded

            • +
            • clear_data_backup - snapshot of data keyspaces is being removed

            • +
            • clear_system_backup - snapshot of system keyspaces is being removed

            • +
            • restore_upgrade_strategy - restore UpgradeStrategy in underlying StatefulSet

            • +
            • finish_upgrade - upgrade cleanup

            • +
            +

            Recovering from upgrade failure

            +

            Upgrade may get stuck on validate_upgrade stage. This happens when Scylla Pod refuses to properly boot up.

            +

            To continue with upgrade, first turn off operator by scaling Operator replicas to zero:

            +
            kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=0
            +
            +
            +

            Then user have to manually resolve issue with Scylla by checking what is the root cause of a failure in Scylla container logs. +If needed data and system keyspaces SSTable snapshots are available on the node. You can check ScyllaCluster status for their names.

            +

            Once issue is resolved and Scylla Pod is up and running (Pod is in Ready state), scale Operator back to two replicas:

            +
            kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=2
            +
            +
            +

            Operator should continue upgrade process from where it left off.

            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/objects.inv b/v1.12/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..383fdb04d9e293c5e782ea725a0a39b715c1422c GIT binary patch literal 6766 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 QXrCMue<*eSAE3w3KrTJ+00000 literal 0 HcmV?d00001 diff --git a/v1.12/performance.html b/v1.12/performance.html new file mode 100644 index 00000000000..77a5895d1bc --- /dev/null +++ b/v1.12/performance.html @@ -0,0 +1,694 @@ + + + + + + + + + + + + + Performance tuning | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Performance tuning

            +

            Scylla Operator 1.6 introduces a new experimental feature allowing users to optimize Kubernetes nodes.

            +
            +

            Node tuning

            +

            Starting from Operator 1.6, a new CRD called NodeConfig is available, allowing users to target Nodes which should be tuned. +When a Node is supposed to be optimized, the Scylla Operator creates a DaemonSet covering these Nodes. +Nodes matching the provided placement conditions will be subject to tuning.

            +

            Below example NodeConfig tunes nodes having scylla.scylladb.com/node-type=scylla label:

            +
            apiVersion: scylla.scylladb.com/v1alpha1
            +kind: NodeConfig
            +metadata:
            + name: cluster
            +spec:
            + placement:
            +   nodeSelector:
            +     scylla.scylladb.com/node-type: scylla
            +
            +
            +

            For more details about new CRD use:

            +
            kubectl explain nodeconfigs.scylla.scylladb.com/v1alpha1
            +
            +
            +

            For all optimizations we use a Python script available in the Scylla image called perftune. +Perftune executes the performance optmizations like tuning the kernel, network, disk devices, spreading IRQs across CPUs and more.

            +

            Tuning consists of two separate optimizations: common node tuning, and tuning based on Scylla Pods and their resource assignment. +Node tuning is executed immediately. Pod tuning is executed when Scylla Pod lands on the same Node.

            +

            Scylla works most efficently when it’s pinned to CPU and not interrupted. +One of the most common causes of context-switching are network interrupts. Packets coming to a node need to be processed, +and this requires CPU shares.

            +

            On K8s we always have at least a couple of processes running on the node: kubelet, kubernetes provider applications, daemons etc. +These processes require CPU shares, so we cannot dedicate entire node processing power to Scylla, we need to leave space for others.
            +We take advantage of it, and we pin IRQs to CPUs not used by any Scylla Pods exclusively.

            +

            Tuning resources are created in a special namespace called scylla-operator-node-tuning.

            +

            The tuning is applied only to pods with Guaranteed QoS class. Please double check your ScyllaCluster resource specification +to see if it meets all conditions.

            +
            +
            +

            Kubernetes tuning

            +

            By default, the kubelet uses the CFS quota to enforce pod CPU limits.
            +When the node runs many CPU-bound pods, the workload can move around different CPU cores depending on whether the pod +is throttled and which CPU cores are available. +However, kubelet may be configured to assign CPUs exclusively, by setting the CPU manager policy to static.

            +

            Setting up kubelet configuration is provider specific. Please check the docs for your distribution or talk to your +provider.

            +

            Only pods within the Guaranteed QoS class) can take advantage of this option. +When such pod lands on a Node, kubelet will pin them to specific CPUs, and those won’t be part of the shared pool.

            +

            In our case there are two requirements each ScyllaCluster must fulfill to receive a Guaranteed QoS class:

            +
              +
            • resource request and limits must be equal or only limits have to be provided

            • +
            • agentResources must be provided and their requests and limits must be equal, or only limits have to be provided

            • +
            +

            An example of such a ScyllaCluster that receives a Guaranteed QoS class is below:

            +
            apiVersion: scylla.scylladb.com/v1
            +kind: ScyllaCluster
            +metadata:
            +  name: guaranteed-cluster
            +  namespace: scylla
            +spec:
            +  agentVersion: 3.2.5
            +  version: 5.4.0
            +  datacenter:
            +    name: us-east-1
            +    racks:
            +    - name: us-east-1a
            +      members: 3
            +      storage:
            +        capacity: 500Gi
            +      agentResources:
            +        requests:
            +          cpu: 1
            +          memory: 1G
            +        limits:
            +          cpu: 1
            +          memory: 1G
            +      resources:
            +        requests:
            +          cpu: 4
            +          memory: 16G
            +        limits:
            +          cpu: 4
            +          memory: 16G
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/releases.html b/v1.12/releases.html new file mode 100644 index 00000000000..6b5261d42fe --- /dev/null +++ b/v1.12/releases.html @@ -0,0 +1,906 @@ + + + + + + + + + + + + + Releases | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Releases

            +
            +

            Schedule

            +

            We are aiming to ship a new release approximately every 6 weeks. The following release schedule is only advisory, there are no commitments made to hitting these dates.

            + + + + + + + + + + + + + +

            Release

            Code freeze

            General availability

            1.12

            2023-12-18

            2024-01-08

            +
            +
            +

            Supported releases

            +

            We support the latest 2 releases of the operator to give everyone time to upgrade.

            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Release

            General availability

            Support ends

            1.11

            2023-11-09

            Release of 1.13

            1.10

            2023-08-25

            Release of 1.12

            1.9

            2023-07-04

            2023-11-09

            1.8

            2023-01-25

            2023-08-25

            1.7

            2022-01-27

            2023-07-04

            1.6

            2021-12-03

            2023-01-25

            1.5

            2021-09-16

            2022-01-27

            1.4

            2021-08-10

            2021-12-03

            1.3

            2021-06-17

            2021-09-16

            1.2

            2021-05-06

            2021-08-10

            1.1

            2021-03-22

            2021-06-17

            1.0

            2021-01-21

            2021-05-06

            +
            +

            Backport policy

            +

            Usually, only important bug fixes are eligible for being backported. +This may depend on the situation and assessment of the maintainers.

            +
            +
            +
            +

            CI/CD

            +

            We use GitHub actions for our CI/CD. Every merge to a supported branch, or a creation of a tag will automatically trigger a job to build, test and publish the container image and other artifacts like helm charts. Before we publish any image, it must pass the e2e suite.

            +
            +

            Automated promotions

            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            Git reference

            Type

            Container image

            master

            branch

            docker.io/scylladb/scylla-operator:latest

            vX.Y

            branch

            docker.io/scylladb/scylla-operator:X.Y

            vX.Y.Z

            tag

            docker.io/scylladb/scylla-operator:X.Y.Z

            vX.Y.Z-alpha.N

            tag

            docker.io/scylladb/scylla-operator:X.Y.Z-alpha.N

            vX.Y.Z-beta.N

            tag

            docker.io/scylladb/scylla-operator:X.Y.Z-beta.N

            vX.Y.Z-rc.N

            tag

            docker.io/scylladb/scylla-operator:X.Y.Z-rc.N

            +
            +
            +

            Generally available

            +

            GA images aren’t build from scratch but rather promoted from an existing release candidates. When we decide a release candidate has the acceptable quality and QA sings it off, the release candidate is promoted to become the GA release. This makes sure the image has exactly the same content and SHA as the tested release candidate.

            +
            +
            +
            +

            Support matrix

            +

            Support matrix table shows the version requirements for a particular scylla-operator version. Be sure to match these requirements, otherwise some functionality will not work.

            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

            v1.11

            v1.10

            v1.9

            v1.8

            v1.7

            v1.6

            v1.5

            v1.4

            v1.3

            v1.2

            v1.1

            v1.0

            Kubernetes

            >=1.21

            >=1.21

            >=1.21

            >=1.21

            >=1.20 && <1.25

            >=1.19.10 && <1.25

            >=1.19.10

            >=1.19.10

            >=1.19

            >=1.19

            >=1.11

            >=1.11

            CRI API

            v1

            v1

            v1

            v1alpha2

            v1alpha2

            v1alpha2

            Scylla OS

            >=5.0

            >=5.0

            >=5.0

            >=5.0

            >=4.3

            >=4.3

            >=4.3

            >=4.3

            >=4.2

            >=4.2

            >=4.0

            >=4.0

            Scylla Enterprise

            >=2021.1

            >=2021.1

            >=2021.1

            >=2021.1

            >=2021.1

            >=2021.1

            >=2021.1

            >=2021.1

            >=2020.1

            >=2020.1

            >=2020.1

            >=2020.1

            Scylla Manager

            >=3.2

            >=2.6

            >=2.6

            >=2.6

            >=2.2

            >=2.2

            >=2.2

            >=2.2

            >=2.2

            >=2.2

            >=2.2

            >=2.2

            Scylla Monitoring

            4.4.5

            >=4.0

            >=4.0

            >=4.0

            >=3.0

            >=3.0

            >=1.0

            >=1.0

            >=1.0

            >=1.0

            >=1.0

            >=1.0

            +
            +

            Supported Kubernetes platforms

            +

            We officially test and recommend to use the following platforms:

            + + + + + + + + + + + + + + +

            Platform

            OS Image

            GKE

            Ubuntu

            EKS

            Amazon Linux

            +

            While our APIs generally work on any Kubernetes conformant cluster, +performance tuning and other pieces that need to interact with the host OS, kubelet, CRI, kernel, etc. might hit some incompatibilities.

            +
            +

            Warning

            +

            The following platforms are known not to work correctly at this time.

            + + + + + + + + + + + + + + + + + +

            Platform

            OS Image

            Details

            GKE

            Container OS

            EKS

            Bottlerocket

            Suspected kernel/cgroups issue that breaks available memory detection for ScyllaDB

            +
            +
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/search.html b/v1.12/search.html new file mode 100644 index 00000000000..5eeb2516dd9 --- /dev/null +++ b/v1.12/search.html @@ -0,0 +1,585 @@ + + + + + + + + + + + + + Search | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + + + +
            + + + + + +
            + + +
            + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/searchindex.js b/v1.12/searchindex.js new file mode 100644 index 00000000000..05556798e6d --- /dev/null +++ b/v1.12/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {".metadata": [[1, "metadata"], [2, "metadata"], [3, "metadata"], [4, "metadata"]], ".spec": [[1, "spec"], [2, "spec"], [3, "spec"], [4, "spec"]], ".spec.alternator": [[2, "spec-alternator"]], ".spec.alternator.servingCertificate": [[2, "spec-alternator-servingcertificate"]], ".spec.alternator.servingCertificate.operatorManagedOptions": [[2, "spec-alternator-servingcertificate-operatormanagedoptions"]], ".spec.alternator.servingCertificate.userManagedOptions": [[2, "spec-alternator-servingcertificate-usermanagedoptions"]], ".spec.backups[]": [[2, "spec-backups"]], ".spec.components": [[3, "spec-components"]], ".spec.components.grafana": [[3, "spec-components-grafana"]], ".spec.components.grafana.authentication": [[3, "spec-components-grafana-authentication"]], ".spec.components.grafana.exposeOptions": [[3, "spec-components-grafana-exposeoptions"]], ".spec.components.grafana.exposeOptions.webInterface": [[3, "spec-components-grafana-exposeoptions-webinterface"]], ".spec.components.grafana.exposeOptions.webInterface.ingress": [[3, "spec-components-grafana-exposeoptions-webinterface-ingress"]], ".spec.components.grafana.exposeOptions.webInterface.ingress.annotations": [[3, "spec-components-grafana-exposeoptions-webinterface-ingress-annotations"]], ".spec.components.grafana.placement": [[3, "spec-components-grafana-placement"]], ".spec.components.grafana.placement.nodeAffinity": [[3, "spec-components-grafana-placement-nodeaffinity"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.components.grafana.placement.podAffinity": [[3, "spec-components-grafana-placement-podaffinity"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity": [[3, "spec-components-grafana-placement-podantiaffinity"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.tolerations[]": [[3, "spec-components-grafana-placement-tolerations"]], ".spec.components.grafana.resources": [[3, "spec-components-grafana-resources"]], ".spec.components.grafana.resources.claims[]": [[3, "spec-components-grafana-resources-claims"]], ".spec.components.grafana.resources.limits": [[3, "spec-components-grafana-resources-limits"]], ".spec.components.grafana.resources.requests": [[3, "spec-components-grafana-resources-requests"]], ".spec.components.prometheus": [[3, "spec-components-prometheus"]], ".spec.components.prometheus.exposeOptions": [[3, "spec-components-prometheus-exposeoptions"]], ".spec.components.prometheus.exposeOptions.webInterface": [[3, "spec-components-prometheus-exposeoptions-webinterface"]], ".spec.components.prometheus.exposeOptions.webInterface.ingress": [[3, "spec-components-prometheus-exposeoptions-webinterface-ingress"]], ".spec.components.prometheus.exposeOptions.webInterface.ingress.annotations": [[3, "spec-components-prometheus-exposeoptions-webinterface-ingress-annotations"]], ".spec.components.prometheus.placement": [[3, "spec-components-prometheus-placement"]], ".spec.components.prometheus.placement.nodeAffinity": [[3, "spec-components-prometheus-placement-nodeaffinity"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.components.prometheus.placement.podAffinity": [[3, "spec-components-prometheus-placement-podaffinity"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity": [[3, "spec-components-prometheus-placement-podantiaffinity"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.tolerations[]": [[3, "spec-components-prometheus-placement-tolerations"]], ".spec.components.prometheus.resources": [[3, "spec-components-prometheus-resources"]], ".spec.components.prometheus.resources.claims[]": [[3, "spec-components-prometheus-resources-claims"]], ".spec.components.prometheus.resources.limits": [[3, "spec-components-prometheus-resources-limits"]], ".spec.components.prometheus.resources.requests": [[3, "spec-components-prometheus-resources-requests"]], ".spec.components.prometheus.storage": [[3, "spec-components-prometheus-storage"]], ".spec.components.prometheus.storage.annotations": [[3, "spec-components-prometheus-storage-annotations"]], ".spec.components.prometheus.storage.labels": [[3, "spec-components-prometheus-storage-labels"]], ".spec.components.prometheus.storage.volumeClaimTemplate": [[3, "spec-components-prometheus-storage-volumeclaimtemplate"]], ".spec.components.prometheus.storage.volumeClaimTemplate.metadata": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-metadata"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-datasource"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-datasourceref"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources-limits"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources-requests"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.datacenter": [[2, "spec-datacenter"]], ".spec.datacenter.racks[]": [[2, "spec-datacenter-racks"]], ".spec.datacenter.racks[].agentResources": [[2, "spec-datacenter-racks-agentresources"]], ".spec.datacenter.racks[].agentResources.claims[]": [[2, "spec-datacenter-racks-agentresources-claims"]], ".spec.datacenter.racks[].agentResources.limits": [[2, "spec-datacenter-racks-agentresources-limits"]], ".spec.datacenter.racks[].agentResources.requests": [[2, "spec-datacenter-racks-agentresources-requests"]], ".spec.datacenter.racks[].agentVolumeMounts[]": [[2, "spec-datacenter-racks-agentvolumemounts"]], ".spec.datacenter.racks[].placement": [[2, "spec-datacenter-racks-placement"]], ".spec.datacenter.racks[].placement.nodeAffinity": [[2, "spec-datacenter-racks-placement-nodeaffinity"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.datacenter.racks[].placement.podAffinity": [[2, "spec-datacenter-racks-placement-podaffinity"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity": [[2, "spec-datacenter-racks-placement-podantiaffinity"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.tolerations[]": [[2, "spec-datacenter-racks-placement-tolerations"]], ".spec.datacenter.racks[].resources": [[2, "spec-datacenter-racks-resources"]], ".spec.datacenter.racks[].resources.claims[]": [[2, "spec-datacenter-racks-resources-claims"]], ".spec.datacenter.racks[].resources.limits": [[2, "spec-datacenter-racks-resources-limits"]], ".spec.datacenter.racks[].resources.requests": [[2, "spec-datacenter-racks-resources-requests"]], ".spec.datacenter.racks[].storage": [[2, "spec-datacenter-racks-storage"]], ".spec.datacenter.racks[].storage.metadata": [[2, "spec-datacenter-racks-storage-metadata"]], ".spec.datacenter.racks[].storage.metadata.annotations": [[2, "spec-datacenter-racks-storage-metadata-annotations"]], ".spec.datacenter.racks[].storage.metadata.labels": [[2, "spec-datacenter-racks-storage-metadata-labels"]], ".spec.datacenter.racks[].volumeMounts[]": [[2, "spec-datacenter-racks-volumemounts"]], ".spec.datacenter.racks[].volumes[]": [[2, "spec-datacenter-racks-volumes"]], ".spec.datacenter.racks[].volumes[].awsElasticBlockStore": [[2, "spec-datacenter-racks-volumes-awselasticblockstore"]], ".spec.datacenter.racks[].volumes[].azureDisk": [[2, "spec-datacenter-racks-volumes-azuredisk"]], ".spec.datacenter.racks[].volumes[].azureFile": [[2, "spec-datacenter-racks-volumes-azurefile"]], ".spec.datacenter.racks[].volumes[].cephfs": [[2, "spec-datacenter-racks-volumes-cephfs"]], ".spec.datacenter.racks[].volumes[].cephfs.secretRef": [[2, "spec-datacenter-racks-volumes-cephfs-secretref"]], ".spec.datacenter.racks[].volumes[].cinder": [[2, "spec-datacenter-racks-volumes-cinder"]], ".spec.datacenter.racks[].volumes[].cinder.secretRef": [[2, "spec-datacenter-racks-volumes-cinder-secretref"]], ".spec.datacenter.racks[].volumes[].configMap": [[2, "spec-datacenter-racks-volumes-configmap"]], ".spec.datacenter.racks[].volumes[].configMap.items[]": [[2, "spec-datacenter-racks-volumes-configmap-items"]], ".spec.datacenter.racks[].volumes[].csi": [[2, "spec-datacenter-racks-volumes-csi"]], ".spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef": [[2, "spec-datacenter-racks-volumes-csi-nodepublishsecretref"]], ".spec.datacenter.racks[].volumes[].csi.volumeAttributes": [[2, "spec-datacenter-racks-volumes-csi-volumeattributes"]], ".spec.datacenter.racks[].volumes[].downwardAPI": [[2, "spec-datacenter-racks-volumes-downwardapi"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[]": [[2, "spec-datacenter-racks-volumes-downwardapi-items"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef": [[2, "spec-datacenter-racks-volumes-downwardapi-items-fieldref"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef": [[2, "spec-datacenter-racks-volumes-downwardapi-items-resourcefieldref"]], ".spec.datacenter.racks[].volumes[].emptyDir": [[2, "spec-datacenter-racks-volumes-emptydir"]], ".spec.datacenter.racks[].volumes[].ephemeral": [[2, "spec-datacenter-racks-volumes-ephemeral"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-metadata"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-datasource"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-datasourceref"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources-limits"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources-requests"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.datacenter.racks[].volumes[].fc": [[2, "spec-datacenter-racks-volumes-fc"]], ".spec.datacenter.racks[].volumes[].flexVolume": [[2, "spec-datacenter-racks-volumes-flexvolume"]], ".spec.datacenter.racks[].volumes[].flexVolume.options": [[2, "spec-datacenter-racks-volumes-flexvolume-options"]], ".spec.datacenter.racks[].volumes[].flexVolume.secretRef": [[2, "spec-datacenter-racks-volumes-flexvolume-secretref"]], ".spec.datacenter.racks[].volumes[].flocker": [[2, "spec-datacenter-racks-volumes-flocker"]], ".spec.datacenter.racks[].volumes[].gcePersistentDisk": [[2, "spec-datacenter-racks-volumes-gcepersistentdisk"]], ".spec.datacenter.racks[].volumes[].gitRepo": [[2, "spec-datacenter-racks-volumes-gitrepo"]], ".spec.datacenter.racks[].volumes[].glusterfs": [[2, "spec-datacenter-racks-volumes-glusterfs"]], ".spec.datacenter.racks[].volumes[].hostPath": [[2, "spec-datacenter-racks-volumes-hostpath"]], ".spec.datacenter.racks[].volumes[].iscsi": [[2, "spec-datacenter-racks-volumes-iscsi"]], ".spec.datacenter.racks[].volumes[].iscsi.secretRef": [[2, "spec-datacenter-racks-volumes-iscsi-secretref"]], ".spec.datacenter.racks[].volumes[].nfs": [[2, "spec-datacenter-racks-volumes-nfs"]], ".spec.datacenter.racks[].volumes[].persistentVolumeClaim": [[2, "spec-datacenter-racks-volumes-persistentvolumeclaim"]], ".spec.datacenter.racks[].volumes[].photonPersistentDisk": [[2, "spec-datacenter-racks-volumes-photonpersistentdisk"]], ".spec.datacenter.racks[].volumes[].portworxVolume": [[2, "spec-datacenter-racks-volumes-portworxvolume"]], ".spec.datacenter.racks[].volumes[].projected": [[2, "spec-datacenter-racks-volumes-projected"]], ".spec.datacenter.racks[].volumes[].projected.sources[]": [[2, "spec-datacenter-racks-volumes-projected-sources"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector-matchexpressions"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector-matchlabels"]], ".spec.datacenter.racks[].volumes[].projected.sources[].configMap": [[2, "spec-datacenter-racks-volumes-projected-sources-configmap"]], ".spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-configmap-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items-fieldref"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items-resourcefieldref"]], ".spec.datacenter.racks[].volumes[].projected.sources[].secret": [[2, "spec-datacenter-racks-volumes-projected-sources-secret"]], ".spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-secret-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken": [[2, "spec-datacenter-racks-volumes-projected-sources-serviceaccounttoken"]], ".spec.datacenter.racks[].volumes[].quobyte": [[2, "spec-datacenter-racks-volumes-quobyte"]], ".spec.datacenter.racks[].volumes[].rbd": [[2, "spec-datacenter-racks-volumes-rbd"]], ".spec.datacenter.racks[].volumes[].rbd.secretRef": [[2, "spec-datacenter-racks-volumes-rbd-secretref"]], ".spec.datacenter.racks[].volumes[].scaleIO": [[2, "spec-datacenter-racks-volumes-scaleio"]], ".spec.datacenter.racks[].volumes[].scaleIO.secretRef": [[2, "spec-datacenter-racks-volumes-scaleio-secretref"]], ".spec.datacenter.racks[].volumes[].secret": [[2, "spec-datacenter-racks-volumes-secret"]], ".spec.datacenter.racks[].volumes[].secret.items[]": [[2, "spec-datacenter-racks-volumes-secret-items"]], ".spec.datacenter.racks[].volumes[].storageos": [[2, "spec-datacenter-racks-volumes-storageos"]], ".spec.datacenter.racks[].volumes[].storageos.secretRef": [[2, "spec-datacenter-racks-volumes-storageos-secretref"]], ".spec.datacenter.racks[].volumes[].vsphereVolume": [[2, "spec-datacenter-racks-volumes-vspherevolume"]], ".spec.endpointsSelector": [[3, "spec-endpointsselector"]], ".spec.endpointsSelector.matchExpressions[]": [[3, "spec-endpointsselector-matchexpressions"]], ".spec.endpointsSelector.matchLabels": [[3, "spec-endpointsselector-matchlabels"]], ".spec.exposeOptions": [[2, "spec-exposeoptions"]], ".spec.exposeOptions.broadcastOptions": [[2, "spec-exposeoptions-broadcastoptions"]], ".spec.exposeOptions.broadcastOptions.clients": [[2, "spec-exposeoptions-broadcastoptions-clients"]], ".spec.exposeOptions.broadcastOptions.clients.podIP": [[2, "spec-exposeoptions-broadcastoptions-clients-podip"]], ".spec.exposeOptions.broadcastOptions.nodes": [[2, "spec-exposeoptions-broadcastoptions-nodes"]], ".spec.exposeOptions.broadcastOptions.nodes.podIP": [[2, "spec-exposeoptions-broadcastoptions-nodes-podip"]], ".spec.exposeOptions.cql": [[2, "spec-exposeoptions-cql"]], ".spec.exposeOptions.cql.ingress": [[2, "spec-exposeoptions-cql-ingress"]], ".spec.exposeOptions.cql.ingress.annotations": [[2, "spec-exposeoptions-cql-ingress-annotations"]], ".spec.exposeOptions.cql.ingress.labels": [[2, "spec-exposeoptions-cql-ingress-labels"]], ".spec.exposeOptions.nodeService": [[2, "spec-exposeoptions-nodeservice"]], ".spec.exposeOptions.nodeService.annotations": [[2, "spec-exposeoptions-nodeservice-annotations"]], ".spec.exposeOptions.nodeService.labels": [[2, "spec-exposeoptions-nodeservice-labels"]], ".spec.genericUpgrade": [[2, "spec-genericupgrade"]], ".spec.imagePullSecrets[]": [[2, "spec-imagepullsecrets"]], ".spec.localDiskSetup": [[1, "spec-localdisksetup"]], ".spec.localDiskSetup.filesystems[]": [[1, "spec-localdisksetup-filesystems"]], ".spec.localDiskSetup.loopDevices[]": [[1, "spec-localdisksetup-loopdevices"]], ".spec.localDiskSetup.mounts[]": [[1, "spec-localdisksetup-mounts"]], ".spec.localDiskSetup.raids[]": [[1, "spec-localdisksetup-raids"]], ".spec.localDiskSetup.raids[].RAID0": [[1, "spec-localdisksetup-raids-raid0"]], ".spec.localDiskSetup.raids[].RAID0.devices": [[1, "spec-localdisksetup-raids-raid0-devices"]], ".spec.network": [[2, "spec-network"]], ".spec.placement": [[1, "spec-placement"]], ".spec.placement.affinity": [[1, "spec-placement-affinity"]], ".spec.placement.affinity.nodeAffinity": [[1, "spec-placement-affinity-nodeaffinity"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.placement.affinity.podAffinity": [[1, "spec-placement-affinity-podaffinity"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity": [[1, "spec-placement-affinity-podantiaffinity"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.placement.nodeSelector": [[1, "spec-placement-nodeselector"]], ".spec.placement.tolerations[]": [[1, "spec-placement-tolerations"]], ".spec.podMetadata": [[2, "spec-podmetadata"]], ".spec.podMetadata.annotations": [[2, "spec-podmetadata-annotations"]], ".spec.podMetadata.labels": [[2, "spec-podmetadata-labels"]], ".spec.readinessGates[]": [[2, "spec-readinessgates"]], ".spec.repairs[]": [[2, "spec-repairs"]], ".status": [[1, "status"], [2, "status"], [3, "status"], [4, "status"]], ".status.backups[]": [[2, "status-backups"]], ".status.conditions[]": [[1, "status-conditions"], [2, "status-conditions"], [3, "status-conditions"]], ".status.nodeStatuses[]": [[1, "status-nodestatuses"]], ".status.racks": [[2, "status-racks"]], ".status.repairs[]": [[2, "status-repairs"]], ".status.upgrade": [[2, "status-upgrade"]], "API Groups and Kinds": [[5, "api-groups-and-kinds"]], "API Reference": [[5, null]], "AWS CLI": [[6, "aws-cli"]], "Accessing Grafana": [[19, "accessing-grafana"]], "Accessing the Database": [[13, "accessing-the-database"]], "Accessing the database": [[11, "accessing-the-database"], [14, "accessing-the-database"]], "Add Upstream Remote": [[10, "add-upstream-remote"]], "Architecture": [[17, "architecture"]], "Authentication and Authorization": [[7, "authentication-and-authorization"]], "Automated promotions": [[31, "automated-promotions"]], "Automatic cleanup and replacement in case when k8s node is lost": [[24, null]], "Backport policy": [[31, "backport-policy"]], "Benchmark with cassandra-stress": [[13, "benchmark-with-cassandra-stress"]], "Broadcast Options": [[12, "broadcast-options"]], "Build multiple Amazon EKS clusters with inter-Kubernetes networking": [[20, null]], "Build multiple GKE clusters with inter-Kubernetes networking": [[21, null]], "Building the project": [[10, "building-the-project"]], "CI/CD": [[31, "ci-cd"]], "Clean Up": [[13, "clean-up"], [17, "clean-up"]], "Cleanup": [[15, "cleanup"]], "Clone Your Fork": [[10, "clone-your-fork"]], "Cluster registration": [[17, "cluster-registration"]], "ClusterIP Type": [[12, "clusterip-type"]], "Collecting every resource in the cluster": [[34, "collecting-every-resource-in-the-cluster"]], "Commit History": [[10, "commit-history"]], "Commit messages": [[10, "commit-messages"]], "Configure Scylla": [[13, "configure-scylla"]], "Configure Scylla Manager Agent": [[13, "configure-scylla-manager-agent"]], "Configure container kernel parameters": [[13, "configure-container-kernel-parameters"]], "Configure environment variables": [[11, "configure-environment-variables"], [14, "configure-environment-variables"]], "Configure host networking": [[13, "configure-host-networking"]], "Configure the firewall rules": [[21, "configure-the-firewall-rules"]], "Configure the network": [[20, "configure-the-network"]], "Connecting through Ingress using a resolvable domain": [[19, "connecting-through-ingress-using-a-resolvable-domain"]], "Connecting through Ingress using an unresolvable domain": [[19, "connecting-through-ingress-using-an-unresolvable-domain"]], "Connection": [[19, "connection"]], "Contributing to Scylla Operator": [[10, null]], "Create EKS clusters": [[20, "create-eks-clusters"]], "Create GKE clusters": [[21, "create-gke-clusters"]], "Create VPC network subnets": [[21, "create-vpc-network-subnets"]], "Create VPC peering": [[20, "create-vpc-peering"]], "Create a Branch": [[10, "create-a-branch"]], "Create a Fork": [[10, "create-a-fork"]], "Create and Initialize a Scylla Cluster": [[13, "create-and-initialize-a-scylla-cluster"]], "Create and configure a VPC network": [[21, "create-and-configure-a-vpc-network"]], "Create the VPC network": [[21, "create-the-vpc-network"]], "Create the first EKS cluster": [[20, "create-the-first-eks-cluster"]], "Create the first GKE cluster": [[21, "create-the-first-gke-cluster"]], "Create the second EKS cluster": [[20, "create-the-second-eks-cluster"]], "Create the second GKE cluster": [[21, "create-the-second-gke-cluster"]], "Creating a GKE cluster": [[14, "creating-a-gke-cluster"]], "Creating an EKS cluster": [[11, "creating-an-eks-cluster"]], "Credentials": [[6, "credentials"]], "Custom CNI": [[37, "custom-cni"]], "Customization": [[15, "customization"], [15, "id1"], [15, "id3"]], "Deleting a GKE cluster": [[14, "deleting-a-gke-cluster"]], "Deleting an EKS cluster": [[11, "deleting-an-eks-cluster"]], "Deploy Cert Manager": [[13, "deploy-cert-manager"], [15, "deploy-cert-manager"]], "Deploy HAProxy Ingress": [[19, "deploy-haproxy-ingress"]], "Deploy Prometheus Operator": [[19, "deploy-prometheus-operator"]], "Deploy Scylla Manager": [[17, "deploy-scylla-manager"]], "Deploy Scylla Operator": [[13, "deploy-scylla-operator"]], "Deploy Scylla cluster": [[14, "deploy-scylla-cluster"]], "Deploy ScyllaDB Operator": [[20, "deploy-scylladb-operator"], [21, "deploy-scylladb-operator"]], "Deploy ScyllaDBMonitoring": [[19, "deploy-scylladbmonitoring"]], "Deploy a multi-datacenter ScyllaDB Cluster": [[23, "deploy-a-multi-datacenter-scylladb-cluster"]], "Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters": [[23, null]], "Deploy managed monitoring": [[19, "deploy-managed-monitoring"]], "Deploy the first datacenter": [[23, "deploy-the-first-datacenter"]], "Deploy the second datacenter": [[23, "deploy-the-second-datacenter"]], "Deploying Alternator": [[13, "deploying-alternator"]], "Deploying Local Volume Provisioner": [[11, "deploying-local-volume-provisioner"], [14, "deploying-local-volume-provisioner"]], "Deploying Scylla Manager on a Kubernetes Cluster": [[17, null]], "Deploying Scylla on EKS": [[11, null]], "Deploying Scylla on GKE": [[14, null]], "Deploying Scylla on a Kubernetes Cluster": [[13, null]], "Deploying Scylla stack using Helm Charts": [[15, null]], "Deploying ScyllaDB": [[11, "deploying-scylladb"], [14, "deploying-scylladb"]], "Deploying ScyllaDB Operator": [[11, "deploying-scylladb-operator"], [14, "deploying-scylladb-operator"]], "Deploying multi-datacenter ScyllaDB clusters in Kubernetes": [[22, null]], "Deployment Examples": [[12, "deployment-examples"]], "Description": [[1, "description"], [1, "id1"], [1, "id2"], [1, "id4"], [1, "id6"], [1, "id8"], [1, "id10"], [1, "id12"], [1, "id14"], [1, "id16"], [1, "id18"], [1, "id20"], [1, "id22"], [1, "id24"], [1, "id26"], [1, "id28"], [1, "id30"], [1, "id32"], [1, "id34"], [1, "id36"], [1, "id38"], [1, "id40"], [1, "id42"], [1, "id44"], [1, "id46"], [1, "id48"], [1, "id50"], [1, "id52"], [1, "id54"], [1, "id56"], [1, "id58"], [1, "id60"], [1, "id62"], [1, "id64"], [1, "id66"], [1, "id68"], [1, "id70"], [1, "id72"], [1, "id74"], [1, "id76"], [1, "id78"], [1, "id80"], [1, "id82"], [1, "id84"], [1, "id86"], [1, "id88"], [1, "id90"], [1, "id92"], [1, "id94"], [1, "id96"], [1, "id98"], [1, "id100"], [1, "id102"], [1, "id104"], [1, "id106"], [1, "id108"], [1, "id110"], [1, "id112"], [2, "description"], [2, "id1"], [2, "id2"], [2, "id4"], [2, "id6"], [2, "id8"], [2, "id10"], [2, "id12"], [2, "id14"], [2, "id16"], [2, "id18"], [2, "id20"], [2, "id22"], [2, "id24"], [2, "id26"], [2, "id28"], [2, "id30"], [2, "id32"], [2, "id34"], [2, "id36"], [2, "id38"], [2, "id40"], [2, "id42"], [2, "id44"], [2, "id46"], [2, "id48"], [2, "id50"], [2, "id52"], [2, "id54"], [2, "id56"], [2, "id58"], [2, "id60"], [2, "id62"], [2, "id64"], [2, "id66"], [2, "id68"], [2, "id70"], [2, "id72"], [2, "id74"], [2, "id76"], [2, "id78"], [2, "id80"], [2, "id82"], [2, "id84"], [2, "id86"], [2, "id88"], [2, "id90"], [2, "id92"], [2, "id94"], [2, "id96"], [2, "id98"], [2, "id100"], [2, "id102"], [2, "id104"], [2, "id106"], [2, "id108"], [2, "id110"], [2, "id112"], [2, "id114"], [2, "id116"], [2, "id118"], [2, "id120"], [2, "id122"], [2, "id124"], [2, "id126"], [2, "id128"], [2, "id130"], [2, "id132"], [2, "id134"], [2, "id136"], [2, "id138"], [2, "id140"], [2, "id142"], [2, "id144"], [2, "id146"], [2, "id148"], [2, "id150"], [2, "id152"], [2, "id154"], [2, "id156"], [2, "id158"], [2, "id160"], [2, "id162"], [2, "id164"], [2, "id166"], [2, "id168"], [2, "id170"], [2, "id172"], [2, "id174"], [2, "id176"], [2, "id178"], [2, "id180"], [2, "id182"], [2, "id184"], [2, "id186"], [2, "id188"], [2, "id190"], [2, "id192"], [2, "id194"], [2, "id196"], [2, "id198"], [2, "id200"], [2, "id202"], [2, "id204"], [2, "id206"], [2, "id208"], [2, "id210"], [2, "id212"], [2, "id214"], [2, "id216"], [2, "id218"], [2, "id220"], [2, "id222"], [2, "id224"], [2, "id226"], [2, "id228"], [2, "id230"], [2, "id232"], [2, "id234"], [2, "id236"], [2, "id238"], [2, "id240"], [2, "id242"], [2, "id244"], [2, "id246"], [2, "id248"], [2, "id250"], [2, "id252"], [2, "id254"], [2, "id256"], [2, "id258"], [2, "id260"], [2, "id262"], [2, "id264"], [2, "id266"], [2, "id268"], [2, "id270"], [2, "id272"], [2, "id274"], [2, "id276"], [2, "id278"], [2, "id280"], [2, "id282"], [2, "id284"], [2, "id286"], [2, "id288"], [2, "id290"], [2, "id292"], [2, "id294"], [2, "id296"], [2, "id298"], [2, "id300"], [2, "id302"], [2, "id304"], [2, "id306"], [2, "id308"], [2, "id310"], [2, "id312"], [2, "id314"], [2, "id316"], [2, "id318"], [2, "id320"], [2, "id322"], [2, "id324"], [3, "description"], [3, "id1"], [3, "id2"], [3, "id4"], [3, "id6"], [3, "id8"], [3, "id10"], [3, "id12"], [3, "id14"], [3, "id16"], [3, "id18"], [3, "id20"], [3, "id22"], [3, "id24"], [3, "id26"], [3, "id28"], [3, "id30"], [3, "id32"], [3, "id34"], [3, "id36"], [3, "id38"], [3, "id40"], [3, "id42"], [3, "id44"], [3, "id46"], [3, "id48"], [3, "id50"], [3, "id52"], [3, "id54"], [3, "id56"], [3, "id58"], [3, "id60"], [3, "id62"], [3, "id64"], [3, "id66"], [3, "id68"], [3, "id70"], [3, "id72"], [3, "id74"], [3, "id76"], [3, "id78"], [3, "id80"], [3, "id82"], [3, "id84"], [3, "id86"], [3, "id88"], [3, "id90"], [3, "id92"], [3, "id94"], [3, "id96"], [3, "id98"], [3, "id100"], [3, "id102"], [3, "id104"], [3, "id106"], [3, "id108"], [3, "id110"], [3, "id112"], [3, "id114"], [3, "id116"], [3, "id118"], [3, "id120"], [3, "id122"], [3, "id124"], [3, "id126"], [3, "id128"], [3, "id130"], [3, "id132"], [3, "id134"], [3, "id136"], [3, "id138"], [3, "id140"], [3, "id142"], [3, "id144"], [3, "id146"], [3, "id148"], [3, "id150"], [3, "id152"], [3, "id154"], [3, "id156"], [3, "id158"], [3, "id160"], [3, "id162"], [3, "id164"], [3, "id166"], [3, "id168"], [3, "id170"], [3, "id172"], [3, "id174"], [3, "id176"], [3, "id178"], [3, "id180"], [3, "id182"], [3, "id184"], [3, "id186"], [3, "id188"], [3, "id190"], [3, "id192"], [3, "id194"], [3, "id196"], [3, "id198"], [3, "id200"], [3, "id202"], [3, "id204"], [3, "id206"], [3, "id208"], [3, "id210"], [3, "id212"], [3, "id214"], [3, "id216"], [3, "id218"], [3, "id220"], [3, "id222"], [3, "id224"], [3, "id226"], [3, "id228"], [3, "id230"], [3, "id232"], [3, "id234"], [3, "id236"], [3, "id238"], [3, "id240"], [3, "id242"], [3, "id244"], [3, "id246"], [3, "id248"], [3, "id250"], [3, "id252"], [4, "description"], [4, "id1"], [4, "id2"], [4, "id4"]], "Development": [[10, "development"]], "Discovering ScyllaDB Nodes": [[8, null]], "Docker": [[34, "docker"]], "Download Scylla Operator": [[13, "download-scylla-operator"]], "EKS": [[37, "eks"]], "EKS Setup": [[11, "eks-setup"]], "Embedded cqlsh (aka localhost)": [[7, "embedded-cqlsh-aka-localhost"]], "Expose Options": [[12, "expose-options"]], "Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary": [[8, "exposing-discovery-endpoint-behind-kubernetes-cluster-boundary"]], "Exposing ScyllaCluster": [[12, null]], "External seeds": [[23, "external-seeds"]], "GKE": [[37, "gke"]], "Gather data about your cluster": [[35, "gather-data-about-your-cluster"]], "Gathering data with must-gather": [[34, null]], "Generally available": [[31, "generally-available"]], "Get support": [[35, "get-support"]], "Google Kubernetes Engine Setup": [[14, "google-kubernetes-engine-setup"]], "Headless Type": [[12, "headless-type"]], "Helm Chart repository": [[15, "helm-chart-repository"]], "In-cluster node-to-node, VPC clients-to-nodes": [[12, "in-cluster-node-to-node-vpc-clients-to-nodes"]], "In-cluster only": [[12, "in-cluster-only"]], "Ingress ExternalIP": [[19, "ingress-externalip"]], "Ingress NodePort": [[19, "ingress-nodeport"]], "Initial Setup": [[10, "initial-setup"]], "Installation": [[15, "installation"], [15, "id2"], [15, "id4"]], "Installing script third party dependencies": [[11, "installing-script-third-party-dependencies"]], "Internet": [[12, "internet"]], "Known issues": [[33, null]], "Kubernetes tuning": [[30, "kubernetes-tuning"]], "Limiting must-gather to a particular namespace": [[34, "limiting-must-gather-to-a-particular-namespace"]], "LoadBalancer Type": [[12, "loadbalancer-type"]], "Maintenance mode": [[26, null]], "Monitoring": [[15, "monitoring"], [19, null]], "Multi Datacenter ScyllaDB Cluster": [[23, "multi-datacenter-scylladb-cluster"]], "Multi VPC": [[12, "multi-vpc"]], "Networking": [[23, "networking"]], "Node Service Template": [[12, "node-service-template"]], "Node operations using Scylla Operator": [[25, null]], "Node tuning": [[30, "node-tuning"]], "NodeConfig (scylla.scylladb.com/v1alpha1)": [[1, null]], "Performance tuning": [[30, null]], "PodIP Type": [[12, "podip-type"]], "Podman": [[34, "podman"]], "Preface": [[8, "preface"]], "Prepare nodes for running ScyllaDB": [[20, "prepare-nodes-for-running-scylladb"], [21, "prepare-nodes-for-running-scylladb"]], "Prerequisites": [[10, "prerequisites"], [11, "prerequisites"], [13, "prerequisites"], [14, "prerequisites"], [15, "prerequisites"], [17, "prerequisites"], [19, "prerequisites"], [20, "prerequisites"], [21, "prerequisites"], [23, "prerequisites"], [34, "prerequisites"]], "Private clusters": [[37, "private-clusters"]], "Procedure": [[18, "procedure"]], "Releases": [[31, null]], "Remote cqlsh": [[7, "remote-cqlsh"]], "Replacing a Scylla node": [[27, null]], "Replacing a dead node": [[27, "replacing-a-dead-node"]], "Requirements": [[19, "requirements"]], "Restore from backup": [[28, null]], "Restore schema": [[28, "restore-schema"]], "Restore tables": [[28, "restore-tables"]], "Results": [[15, "results"]], "Retrieve PodIPs of ScyllaDB nodes for use as external seeds": [[23, "retrieve-podips-of-scylladb-nodes-for-use-as-external-seeds"]], "Running locally": [[13, "running-locally"]], "Running must-gather": [[34, "running-must-gather"]], "Scale a ScyllaCluster": [[13, "scale-a-scyllacluster"]], "Schedule": [[31, "schedule"]], "Scylla": [[15, "scylla"]], "Scylla Helm Chart": [[15, "scylla-helm-chart"]], "Scylla Manager": [[15, "scylla-manager"], [23, "scylla-manager"]], "Scylla Manager Agent auth token": [[13, "scylla-manager-agent-auth-token"]], "Scylla Manager Controller": [[15, "scylla-manager-controller"]], "Scylla Manager Helm Chart": [[15, "scylla-manager-helm-chart"]], "Scylla Manager does not boot up on Minikube": [[33, "scylla-manager-does-not-boot-up-on-minikube"]], "Scylla Operator Chart": [[15, "scylla-operator-chart"]], "Scylla Operator Documentation": [[16, null]], "ScyllaCluster (scylla.scylladb.com/v1)": [[2, null]], "ScyllaDB Discovery Endpoint": [[8, "scylladb-discovery-endpoint"]], "ScyllaDBMonitoring": [[23, "scylladbmonitoring"]], "ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)": [[3, null]], "ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)": [[4, null]], "ServiceClusterIP Type": [[12, "serviceclusterip-type"]], "ServiceLoadBalancerIngress Type": [[12, "serviceloadbalanceringress-type"]], "Set up monitoring": [[13, "set-up-monitoring"]], "Setting Yourself as cluster-admin": [[14, "setting-yourself-as-cluster-admin"]], "Setting up nodes for ScyllaDB": [[11, "setting-up-nodes-for-scylladb"], [14, "setting-up-nodes-for-scylladb"]], "Specification": [[1, "specification"], [2, "specification"], [3, "specification"], [4, "specification"]], "Submitting": [[10, "submitting"]], "Submitting a Pull Request": [[10, "submitting-a-pull-request"]], "Support": [[32, null]], "Support matrix": [[31, "support-matrix"]], "Support overview": [[35, null]], "Supported Kubernetes platforms": [[31, "supported-kubernetes-platforms"]], "Supported releases": [[31, "supported-releases"]], "TL;DR": [[15, "tl-dr"]], "TL;DR;": [[11, "tl-dr"], [14, "tl-dr"]], "TRUNCATE queries does not work on Minikube": [[33, "truncate-queries-does-not-work-on-minikube"]], "Task scheduling": [[17, "task-scheduling"]], "Troubleshooting": [[13, "troubleshooting"], [17, "troubleshooting"], [36, null]], "Troubleshooting installation issues": [[37, null]], "Troubleshooting issues": [[35, "troubleshooting-issues"]], "Type": [[1, "type"], [1, "id3"], [1, "id5"], [1, "id7"], [1, "id9"], [1, "id11"], [1, "id13"], [1, "id15"], [1, "id17"], [1, "id19"], [1, "id21"], [1, "id23"], [1, "id25"], [1, "id27"], [1, "id29"], [1, "id31"], [1, "id33"], [1, "id35"], [1, "id37"], [1, "id39"], [1, "id41"], [1, "id43"], [1, "id45"], [1, "id47"], [1, "id49"], [1, "id51"], [1, "id53"], [1, "id55"], [1, "id57"], [1, "id59"], [1, "id61"], [1, "id63"], [1, "id65"], [1, "id67"], [1, "id69"], [1, "id71"], [1, "id73"], [1, "id75"], [1, "id77"], [1, "id79"], [1, "id81"], [1, "id83"], [1, "id85"], [1, "id87"], [1, "id89"], [1, "id91"], [1, "id93"], [1, "id95"], [1, "id97"], [1, "id99"], [1, "id101"], [1, "id103"], [1, "id105"], [1, "id107"], [1, "id109"], [1, "id111"], [1, "id113"], [2, "type"], [2, "id3"], [2, "id5"], [2, "id7"], [2, "id9"], [2, "id11"], [2, "id13"], [2, "id15"], [2, "id17"], [2, "id19"], [2, "id21"], [2, "id23"], [2, "id25"], [2, "id27"], [2, "id29"], [2, "id31"], [2, "id33"], [2, "id35"], [2, "id37"], [2, "id39"], [2, "id41"], [2, "id43"], [2, "id45"], [2, "id47"], [2, "id49"], [2, "id51"], [2, "id53"], [2, "id55"], [2, "id57"], [2, "id59"], [2, "id61"], [2, "id63"], [2, "id65"], [2, "id67"], [2, "id69"], [2, "id71"], [2, "id73"], [2, "id75"], [2, "id77"], [2, "id79"], [2, "id81"], [2, "id83"], [2, "id85"], [2, "id87"], [2, "id89"], [2, "id91"], [2, "id93"], [2, "id95"], [2, "id97"], [2, "id99"], [2, "id101"], [2, "id103"], [2, "id105"], [2, "id107"], [2, "id109"], [2, "id111"], [2, "id113"], [2, "id115"], [2, "id117"], [2, "id119"], [2, "id121"], [2, "id123"], [2, "id125"], [2, "id127"], [2, "id129"], [2, "id131"], [2, "id133"], [2, "id135"], [2, "id137"], [2, "id139"], [2, "id141"], [2, "id143"], [2, "id145"], [2, "id147"], [2, "id149"], [2, "id151"], [2, "id153"], [2, "id155"], [2, "id157"], [2, "id159"], [2, "id161"], [2, "id163"], [2, "id165"], [2, "id167"], [2, "id169"], [2, "id171"], [2, "id173"], [2, "id175"], [2, "id177"], [2, "id179"], [2, "id181"], [2, "id183"], [2, "id185"], [2, "id187"], [2, "id189"], [2, "id191"], [2, "id193"], [2, "id195"], [2, "id197"], [2, "id199"], [2, "id201"], [2, "id203"], [2, "id205"], [2, "id207"], [2, "id209"], [2, "id211"], [2, "id213"], [2, "id215"], [2, "id217"], [2, "id219"], [2, "id221"], [2, "id223"], [2, "id225"], [2, "id227"], [2, "id229"], [2, "id231"], [2, "id233"], [2, "id235"], [2, "id237"], [2, "id239"], [2, "id241"], [2, "id243"], [2, "id245"], [2, "id247"], [2, "id249"], [2, "id251"], [2, "id253"], [2, "id255"], [2, "id257"], [2, "id259"], [2, "id261"], [2, "id263"], [2, "id265"], [2, "id267"], [2, "id269"], [2, "id271"], [2, "id273"], [2, "id275"], [2, "id277"], [2, "id279"], [2, "id281"], [2, "id283"], [2, "id285"], [2, "id287"], [2, "id289"], [2, "id291"], [2, "id293"], [2, "id295"], [2, "id297"], [2, "id299"], [2, "id301"], [2, "id303"], [2, "id305"], [2, "id307"], [2, "id309"], [2, "id311"], [2, "id313"], [2, "id315"], [2, "id317"], [2, "id319"], [2, "id321"], [2, "id323"], [2, "id325"], [3, "type"], [3, "id3"], [3, "id5"], [3, "id7"], [3, "id9"], [3, "id11"], [3, "id13"], [3, "id15"], [3, "id17"], [3, "id19"], [3, "id21"], [3, "id23"], [3, "id25"], [3, "id27"], [3, "id29"], [3, "id31"], [3, "id33"], [3, "id35"], [3, "id37"], [3, "id39"], [3, "id41"], [3, "id43"], [3, "id45"], [3, "id47"], [3, "id49"], [3, "id51"], [3, "id53"], [3, "id55"], [3, "id57"], [3, "id59"], [3, "id61"], [3, "id63"], [3, "id65"], [3, "id67"], [3, "id69"], [3, "id71"], [3, "id73"], [3, "id75"], [3, "id77"], [3, "id79"], [3, "id81"], [3, "id83"], [3, "id85"], [3, "id87"], [3, "id89"], [3, "id91"], [3, "id93"], [3, "id95"], [3, "id97"], [3, "id99"], [3, "id101"], [3, "id103"], [3, "id105"], [3, "id107"], [3, "id109"], [3, "id111"], [3, "id113"], [3, "id115"], [3, "id117"], [3, "id119"], [3, "id121"], [3, "id123"], [3, "id125"], [3, "id127"], [3, "id129"], [3, "id131"], [3, "id133"], [3, "id135"], [3, "id137"], [3, "id139"], [3, "id141"], [3, "id143"], [3, "id145"], [3, "id147"], [3, "id149"], [3, "id151"], [3, "id153"], [3, "id155"], [3, "id157"], [3, "id159"], [3, "id161"], [3, "id163"], [3, "id165"], [3, "id167"], [3, "id169"], [3, "id171"], [3, "id173"], [3, "id175"], [3, "id177"], [3, "id179"], [3, "id181"], [3, "id183"], [3, "id185"], [3, "id187"], [3, "id189"], [3, "id191"], [3, "id193"], [3, "id195"], [3, "id197"], [3, "id199"], [3, "id201"], [3, "id203"], [3, "id205"], [3, "id207"], [3, "id209"], [3, "id211"], [3, "id213"], [3, "id215"], [3, "id217"], [3, "id219"], [3, "id221"], [3, "id223"], [3, "id225"], [3, "id227"], [3, "id229"], [3, "id231"], [3, "id233"], [3, "id235"], [3, "id237"], [3, "id239"], [3, "id241"], [3, "id243"], [3, "id245"], [3, "id247"], [3, "id249"], [3, "id251"], [3, "id253"], [4, "type"], [4, "id3"], [4, "id5"]], "Update route tables": [[20, "update-route-tables"]], "Update security groups": [[20, "update-security-groups"]], "Updating Your Fork": [[10, "updating-your-fork"]], "Upgrade of Scylla Operator": [[38, null]], "Upgrade via Helm": [[38, "upgrade-via-helm"]], "Upgrade via kubectl": [[38, "upgrade-via-kubectl"]], "Upgrading version of Scylla": [[29, null]], "Using Alternator (DynamoDB)": [[6, null]], "Using CQL": [[7, null]], "Using ScyllaDB APIs": [[9, null]], "Using context": [[23, "using-context"]], "Variants": [[19, "variants"]], "Version migrations": [[18, null]], "Wait for Grafana to roll out": [[19, "wait-for-grafana-to-roll-out"]], "Wait for HAProxy Ingress to roll out": [[19, "wait-for-haproxy-ingress-to-roll-out"]], "Wait for Prometheus Operator to roll out": [[19, "wait-for-prometheus-operator-to-roll-out"]], "Wait for Prometheus to roll out": [[19, "wait-for-prometheus-to-roll-out"]], "Wait for ScyllaDBMonitoring to roll out": [[19, "wait-for-scylladbmonitoring-to-roll-out"]], "Walkthrough": [[11, "walkthrough"], [14, "walkthrough"]], "Webhooks": [[37, "webhooks"]], "image": [[15, "image"]], "resources": [[15, "resources"]], "scylla.scylladb.com": [[0, null]], "v0.3.0 -> v1.0.0": [[38, "v0-3-0-v1-0-0"]], "v0.3.0 -> v1.0.0 migration": [[18, "v0-3-0-v1-0-0-migration"]], "v1.0.0 -> v1.1.0": [[38, "v1-0-0-v1-1-0"]], "v1.1.0 -> v1.2.0": [[38, "v1-1-0-v1-2-0"]], "v1.2.0 -> v1.3.0": [[38, "v1-2-0-v1-3-0"]], "webhook": [[15, "webhook"]]}, "docnames": ["api-reference/groups/scylla.scylladb.com", "api-reference/groups/scylla.scylladb.com/nodeconfigs", "api-reference/groups/scylla.scylladb.com/scyllaclusters", "api-reference/groups/scylla.scylladb.com/scylladbmonitorings", "api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs", "api-reference/index", "clients/alternator", "clients/cql", "clients/discovery", "clients/index", "contributing", "eks", "exposing", "generic", "gke", "helm", "index", "manager", "migration", "monitoring", "multidc/eks", "multidc/gke", "multidc/index", "multidc/multidc", "nodeoperations/automatic-cleanup", "nodeoperations/index", "nodeoperations/maintenance-mode", "nodeoperations/replace-node", "nodeoperations/restore", "nodeoperations/scylla-upgrade", "performance", "releases", "support/index", "support/known-issues", "support/must-gather", "support/overview", "support/troubleshooting/index", "support/troubleshooting/installation", "upgrade"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2}, "filenames": ["api-reference/groups/scylla.scylladb.com.rst", "api-reference/groups/scylla.scylladb.com/nodeconfigs.rst", "api-reference/groups/scylla.scylladb.com/scyllaclusters.rst", "api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst", "api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst", "api-reference/index.rst", "clients/alternator.md", "clients/cql.md", "clients/discovery.md", "clients/index.rst", "contributing.md", "eks.md", "exposing.md", "generic.md", "gke.md", "helm.md", "index.rst", "manager.md", "migration.md", "monitoring.md", "multidc/eks.md", "multidc/gke.md", "multidc/index.rst", "multidc/multidc.md", "nodeoperations/automatic-cleanup.md", "nodeoperations/index.rst", "nodeoperations/maintenance-mode.md", "nodeoperations/replace-node.md", "nodeoperations/restore.md", "nodeoperations/scylla-upgrade.md", "performance.md", "releases.md", "support/index.rst", "support/known-issues.md", "support/must-gather.md", "support/overview.md", "support/troubleshooting/index.rst", "support/troubleshooting/installation.md", "upgrade.md"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [1, 2, 3, 6, 8, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 30, 34, 37, 38], "0": [1, 2, 3, 7, 8, 10, 12, 13, 14, 15, 17, 19, 20, 21, 23, 27, 28, 29, 30, 31, 34], "00": [6, 17], "000": 13, "0000": [2, 17], "00000000": 17, "000000000000": 17, "008_": 33, "01": [6, 31], "01t16": 6, "02": 28, "03": [6, 27, 31], "04": [28, 31], "0406": 28, "05": [28, 31], "06": [17, 31], "0644": 2, "07": 31, "0777": 2, "08": 31, "08077dcc008fbbab6": 20, "09": [17, 28, 31], "0bb60902": 21, "0dd20cdf": 28, "0dfd": 23, "1": [1, 2, 3, 7, 8, 10, 11, 12, 13, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31], "10": [2, 8, 13, 15, 17, 18, 20, 21, 23, 27, 31], "100": [1, 2, 3, 17, 28], "1000": 21, "10000000": 13, "10001": [8, 15, 18, 27], "100m": [15, 23], "102": 8, "104m": 18, "105": 15, "106m": 18, "107": [17, 23], "107m": 18, "108m": 18, "109": 17, "109m": 18, "10d": 8, "11": [23, 28, 31], "110": 27, "110m": 18, "11ee": [6, 28], "12": [1, 2, 3, 10, 17, 28, 31], "121c": 23, "1234": 10, "123913": 6, "125": 27, "127": [7, 17], "128mi": 15, "12a3678d": 18, "13": [10, 17, 31], "130": 15, "14": 17, "149": 15, "15": [17, 28], "150k": 28, "16": [15, 17, 20, 21, 23, 31], "16g": 30, "17": [21, 31], "172": [20, 21, 23, 27], "18": [21, 23, 31], "1800g": 23, "189": 27, "19": [23, 31], "19042": 8, "191": 27, "19142": 8, "193": 17, "195": 23, "197": 17, "1a": [11, 13, 17, 18, 20, 23, 27, 28, 29, 30], "1b": [11, 15, 20, 23], "1c": [11, 20, 23], "1d": 17, "1ffa7a82": 27, "1fr9ydlu0ve7m": 20, "1g": 30, "1gi": [15, 19, 28], "1h": 34, "1m": 17, "2": [2, 7, 12, 13, 14, 15, 17, 18, 20, 21, 23, 26, 27, 28, 29, 30, 31], "20": [14, 17, 21, 31], "200": 19, "200000000": 17, "2020": [17, 29, 31], "20200816": 17, "2021": 31, "2022": 31, "2023": [12, 31], "20231205": 7, "2024": [6, 28, 31], "207": 15, "209": 23, "2097152": [13, 23], "20g": 13, "20mi": 15, "21": 31, "214": 28, "22": [18, 31], "226716": 14, "23": [17, 18], "231": [15, 27], "232323": 2, "236a0e10575b": 17, "237": 23, "238z": 17, "23t11": 17, "24": [2, 23, 28], "246": 18, "25": [17, 18, 23, 31], "250000000": 17, "250m": 23, "25126532803b": 17, "256": [23, 27], "26": 17, "27": [17, 23, 31], "275aae7f": 17, "28": 17, "28169610": 17, "28m": 17, "29": 17, "290": 23, "2a": [20, 23], "2aa90ab29a99": 23, "2b": [20, 23], "2b9dbe8c": 17, "2c": [20, 23], "2g": 13, "2xlarg": 11, "3": [2, 7, 10, 11, 13, 15, 17, 23, 28, 29, 30, 31], "30": 13, "300": 13, "30000": 13, "30000000000": 17, "300000000000": 17, "30m": [18, 38], "30mi": 15, "32": 14, "3260": 2, "327f": 23, "32mi": 15, "33": 17, "336": 23, "35": 6, "35d0cb19": 27, "35ef": 27, "3619ae053778": 28, "37m": 17, "38": 17, "39": 23, "3d0a7b9305f7": 23, "3d2h10m": 2, "3h11m": 27, "3h12m": 27, "3h19m": 27, "3h21m": 27, "3h25m": 27, "3h27m": 27, "3h5m": 27, "4": [2, 7, 11, 13, 14, 15, 17, 23, 28, 29, 30, 31], "400b2723": 17, "4062": 23, "407e": 28, "409mib": 28, "41": 6, "4128": 23, "42": 17, "422a": 17, "4271": 28, "43": [8, 15, 18, 27], "43200000000000": 17, "435z": 17, "44": 8, "443": [15, 19], "44af": 27, "458c": 28, "4703": 17, "4706": 27, "479e65fb8372": 17, "48": 28, "482b": 27, "49": 15, "494277b9": 23, "4974": 28, "49f2": 17, "4a25": 23, "4af9": 23, "4bb4": 17, "4c20": 17, "4c97": 17, "4c9c": 18, "4d45a39c7003": 27, "4d93": 23, "4db3": 23, "4def": 28, "4fc8": 17, "4m29": 15, "4q": 6, "5": [2, 6, 7, 10, 12, 13, 17, 23, 28, 29, 30, 31], "50": 13, "50000000": 13, "5000000000": 17, "500gi": 30, "500m": 15, "500mi": 15, "503": 23, "5080": 17, "5090": [8, 15], "51": [15, 27], "511": 2, "519z": 17, "53": [15, 17], "54": 17, "559": 23, "56090": 17, "56112": 17, "56g": 23, "57": 17, "57228c52": 28, "58": 17, "5871": 38, "58a89e7a4231": 7, "59": 23, "5c8aae70": 6, "5dbcb54f5c": 15, "5g": 15, "5m": 19, "5m58": 15, "5m59": 15, "6": [2, 7, 13, 28, 30, 31], "60": [15, 17], "600": [7, 18], "600000000": 17, "6004039f402e": 23, "619ada495c2a": 17, "62": [17, 27], "63": 27, "634": 23, "63642069": 28, "64b6292a": 23, "65b89d55bb": 19, "66": 18, "665dde7e": 23, "669db64dd": 15, "68c49e47ace1": 28, "69": 17, "6e7993cf42": 28, "6f31aaf1d6d3": 6, "6j12": 27, "6m46": 13, "7": [17, 23, 31], "70": 23, "7000": [8, 15, 18, 27], "7001": [8, 15, 18, 27], "705": 23, "7199": [8, 15, 18, 27], "74": 27, "750000000": 17, "759": 23, "764": 23, "76cc4dcc": 17, "77": 27, "7735": 38, "7a4f": 23, "7bd9f968b9": 17, "7c30ea55": 23, "7cf6": 28, "7d": 17, "7m43": 13, "8": [2, 14, 17, 19, 21, 31], "80": [2, 15], "8000": 13, "8043": [6, 8], "8080": 38, "844ccc56c4": 15, "84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf": 23, "8511": 18, "852a": 23, "860": 2, "868e0f3396b2": 28, "86f7": 23, "87": 23, "87a4a6c65c3": 27, "882z": 17, "89": 15, "8a48": 18, "8b9d": 17, "8c54": 23, "8c8d": 28, "8ebd6114": 27, "8f5f": 27, "8m14": 27, "8th": 33, "9": [1, 2, 3, 27, 28, 29, 31, 38], "9042": [7, 8, 15, 18, 27], "91": 27, "9100": 8, "9142": [7, 8, 15, 18, 27], "9160": [8, 15, 18, 27], "9180": [8, 15, 18, 27], "92": 15, "9263": 17, "92a4": 27, "949f": 28, "951c": 28, "9521": 28, "95m": 38, "96": 18, "969c": 27, "9d11": 17, "9daa": 17, "9df4": 23, "9m49": 13, "A": [1, 2, 3, 11, 12, 13, 14, 15, 19, 20, 21, 23, 38], "ANDed": [1, 2, 3], "And": [10, 15], "As": [2, 10, 11, 14, 17, 20, 23, 28, 34], "At": [2, 6, 7, 14, 18, 29], "Be": 31, "By": [1, 2, 3, 12, 14, 15, 30, 34], "For": [1, 2, 3, 7, 8, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 23, 26, 30], "If": [1, 2, 3, 6, 7, 10, 11, 13, 14, 15, 17, 18, 19, 23, 29, 33, 34, 37], "In": [1, 2, 3, 4, 7, 8, 10, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 27, 28, 29, 30, 34, 38], "It": [2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 15, 20, 21, 23, 29], "NOT": 2, "No": [2, 3], "ORed": [1, 2, 3], "On": [12, 30, 33], "One": 30, "Such": 12, "TO": 15, "That": 34, "The": [1, 2, 3, 6, 8, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 23, 30, 31, 33, 34], "Then": [13, 14, 15, 20, 21, 29], "There": [2, 3, 34, 37, 38], "These": [2, 11, 12, 14, 30, 38], "To": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 33, 35, 37, 38], "WITH": 13, "Will": 2, "With": [17, 21], "_trace_id": 17, "a3a98e08": 23, "a540": 28, "a66d": 17, "a969": 17, "a96a": 23, "a978": 27, "a99": 6, "ab015cef": 28, "ab7568b8a1bd": 17, "abc4": 28, "abc8": 28, "abil": [2, 3], "abl": [15, 20, 37], "about": [1, 2, 3, 7, 8, 10, 11, 12, 13, 14, 15, 21, 30], "abov": [8, 11, 13, 14, 15, 17, 19, 20, 21, 28, 38], "absolut": 2, "accept": [2, 3, 11, 31], "access": [2, 3, 5, 6, 7, 10, 12, 17, 28], "accessmod": [2, 3], "accord": [11, 13, 14, 18, 20, 29], "accordingli": 23, "account": [2, 10, 14], "across": [2, 3, 23, 30], "act": 2, "action": 31, "activ": 6, "actual": 1, "ad": [1, 2, 3, 6, 10, 13, 16, 20], "add": [2, 13, 15, 17, 18, 21, 23, 26, 27, 38], "addit": [3, 6, 8, 12, 15, 17, 18, 21, 28, 38], "addition": [12, 23], "additionaldnsnam": 2, "additionalipaddress": 2, "address": [2, 6, 8, 12, 19, 21, 23, 27], "adher": 5, "adhoc": 17, "adjust": [2, 6, 7, 13, 19, 20, 21, 23, 34], "admin": [2, 7, 19, 34], "administr": 35, "advantag": 30, "advis": [23, 34, 37], "advisori": 31, "af1dd5cd": 28, "af2": 28, "afe6": 28, "affect": [2, 28, 34], "affin": [2, 3, 24], "after": [2, 3, 10, 11, 13, 14, 15, 17, 27, 28], "afterward": [11, 14], "ag": [8, 13, 15, 17, 18, 27, 38], "again": [10, 18, 19, 26], "against": [13, 20, 21], "agemax": 17, "agent": [2, 15, 17, 23], "agentimag": 15, "agentrepositori": 2, "agentresourc": [23, 30], "agentvers": [2, 13, 23, 28, 30], "aggress": 2, "agreement": [17, 29], "ah": 21, "aim": 31, "aio": [2, 13, 23], "alia": 21, "aliv": 26, "all": [1, 2, 3, 5, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 28, 29, 30, 34], "alloc": [12, 15, 21], "allocateloadbalancernodeport": [2, 12], "allow": [1, 2, 3, 8, 11, 13, 15, 19, 20, 21, 23, 26, 29, 30, 37], "alon": 2, "along": [2, 13], "alpha": [1, 2, 3, 11, 14, 31], "alphanumer": 2, "alreadi": [1, 2, 17, 19, 28, 29], "also": [1, 2, 3, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 34], "alter": 13, "altern": [9, 17, 19], "although": [10, 15, 18, 19, 20, 21, 23], "alwai": [6, 7, 8, 10, 13, 26, 30, 34], "amazon": [2, 11, 22, 23, 31], "amend": 18, "amount": [2, 3], "an": [1, 2, 3, 4, 7, 8, 10, 12, 13, 15, 16, 20, 21, 29, 30, 31, 34, 35, 37, 38], "analog": [20, 21], "ani": [1, 2, 3, 7, 10, 12, 14, 15, 18, 20, 21, 28, 30, 31], "annot": [8, 12, 19], "anoth": [1, 2, 3, 12, 18, 37], "anti": [1, 2, 3], "anymor": 2, "anyth": 13, "anyvolumedatasourc": [2, 3], "api": [1, 2, 3, 4, 6, 7, 10, 13, 16, 17, 19, 23, 28, 31, 34, 37], "apiaddress": 17, "apigroup": [2, 3, 18], "apiserv": [2, 37], "apivers": [1, 2, 3, 4, 7, 12, 18, 19, 20, 23, 28, 30, 38], "app": [13, 15, 19, 23, 28, 29, 38], "appear": 17, "append": [2, 13], "appli": [1, 2, 3, 10, 11, 13, 14, 15, 17, 18, 19, 23, 30, 33, 34, 38], "applic": [2, 15, 30], "approach": 2, "appropri": [8, 19], "approxim": 31, "apropri": 10, "ar": [1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31, 34, 35, 37, 38], "arbitrari": [2, 3], "architectur": [1, 2, 3, 4], "archiv": [34, 35], "aren": [2, 31], "argument": [13, 17, 34], "aris": 35, "around": [2, 30], "arrai": [1, 2, 3, 11, 14], "arrikto": 14, "artifact": 31, "artist": 6, "ask": 15, "aspect": [2, 3], "assess": 31, "assign": [12, 30], "associ": [1, 2, 3, 10, 13, 17, 18, 20, 21], "assum": [12, 19, 23, 34], "assumpt": 12, "asynchron": 13, "attach": [1, 2, 3, 13, 14, 18, 27, 34, 35], "attempt": [2, 17], "attribut": [2, 3, 6], "attributedefinit": 6, "attributenam": 6, "attributetyp": 6, "audienc": 2, "auth": 23, "auth_token": 23, "authent": [2, 6, 13, 34], "authn": 5, "author": [2, 6], "authz": 5, "auto": [2, 13], "autogener": 15, "autoh": 16, "autom": [15, 16, 17, 23, 38], "automat": [1, 2, 3, 8, 10, 13, 14, 17, 21, 25, 31, 38], "automaticorphanednodecleanup": [2, 23, 24], "autorepair": [14, 21], "autoupgrad": [14, 21], "avail": [1, 2, 3, 6, 7, 8, 12, 13, 14, 15, 17, 19, 23, 27, 28, 29, 30, 34, 38], "availabilityzon": 20, "availablememb": 2, "avoid": [1, 2, 6, 7, 10, 34, 37], "aw": [2, 8, 11, 12, 20], "awar": 13, "aws_access_key_id": 6, "aws_ca_bundl": 6, "aws_endpoint_url_dynamodb": 6, "aws_secret_access_kei": 6, "azur": 2, "b": [2, 10, 14, 21, 23, 26], "b4b390a1": 27, "b63eee4527e5": 27, "b7f3": 17, "ba0f": 28, "back": [1, 2, 3, 8, 12, 26, 27, 29], "backend": [2, 8, 12], "backup": [13, 16, 17, 25, 38], "backup_data": 29, "backup_loc": 28, "backward": [2, 3, 18, 38], "balanc": [2, 8, 12, 26], "bandwidth": 27, "bare": [17, 19], "base": [1, 2, 3, 6, 8, 10, 15, 30], "base64": [7, 19, 23], "bash": 7, "bcec": 17, "bcm4v": 15, "bd63": 23, "becaus": [2, 3, 6, 8, 12, 13, 17, 23, 27, 34], "becom": [24, 29, 31], "bed5": 28, "been": [2, 12, 13], "befor": [2, 10, 18, 19, 29, 31, 34, 37, 38], "begin": [16, 29], "begin_upgrad": 29, "behav": 2, "behavior": 2, "behaviour": [2, 10], "behind": 23, "being": [2, 3, 12, 13, 17, 23, 26, 27, 29, 31], "bellow": [6, 7], "below": [2, 13, 17, 18, 19, 20, 21, 23, 28, 30], "benchmark": [11, 14], "best": 13, "beta": [2, 3, 8, 12, 31], "better": [10, 14], "between": [2, 3, 13, 20, 21], "beyond": [19, 37], "binari": [2, 23, 34], "bind": [2, 3, 14], "bit": [2, 13, 15], "blank": 10, "blob": 2, "block": [2, 14, 37], "boolean": [1, 2, 3], "boot": [18, 29], "bootstrap": [15, 27], "both": [1, 2, 3, 12, 13, 15, 20, 21], "bottlerocket": 31, "bound": [18, 24, 27, 30], "box": 18, "branch": [31, 38], "break": [31, 37], "breez": 13, "bring": [26, 27, 29, 38], "broadcast": 2, "broadcast_address": 2, "broadcast_rpc_address": 2, "broadcastopt": [12, 23], "broken": 2, "brought": 38, "brows": 13, "browser": 10, "bucket": [2, 17], "bug": [10, 31, 35], "build": [22, 23, 31], "build_dat": 17, "built": [10, 12, 20, 21], "built_bi": 17, "bump": 18, "bundl": [2, 6, 7], "button": 10, "byte": [2, 3], "c": [2, 6, 7, 13, 21, 23, 27, 28], "c19c89cb": 23, "c29d": 17, "c29f63a917c8": 17, "c4": 11, "c41c": 27, "c436": 17, "c5ab2f47eb37": 23, "c881772ebe62": 23, "ca": [3, 6, 7, 15, 19], "ca71efd39b2": 23, "cacert": 19, "cach": 2, "cachingmod": 2, "calcul": 2, "call": [2, 8, 13, 14, 28, 30, 35, 37, 38], "caller": 19, "camelcas": [1, 2, 3, 4], "can": [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 29, 30, 34, 35, 37], "candid": 31, "cannot": [1, 2, 3, 4, 17, 30], "capabl": [11, 12, 13, 14, 23], "capac": [2, 3, 11, 14, 15, 23, 28, 30], "care": [11, 12, 14], "carri": [10, 23], "case": [1, 2, 3, 8, 12, 13, 18, 20, 23, 25, 27, 30, 34, 37, 38], "cass": 13, "cassandra": [2, 6, 7, 11, 14], "cassandraauthor": 7, "cat": [7, 38], "categor": 3, "categori": [1, 2, 3], "caus": [18, 26, 27, 29, 30], "cd": [10, 11, 13, 14], "ceas": [1, 2, 3], "censor": 34, "center": 23, "central": 2, "ceph": 2, "cert": [2, 3, 18], "certain": [2, 13], "certfil": [7, 17], "certif": [2, 7, 13, 15, 19], "certificatesecretnam": 15, "cest": 17, "cf": 30, "cgroup": 31, "chang": [1, 2, 3, 8, 10, 13, 14, 15, 17, 18, 19, 23, 28, 29, 38], "changelog": 10, "channel": [2, 18, 20], "chap": 2, "chapauthdiscoveri": 2, "chapauthsess": 2, "charact": 2, "chart": [16, 19, 31, 38], "check": [2, 12, 13, 16, 17, 18, 27, 28, 29, 30, 34, 38], "check_schema_agr": 29, "checkout": [10, 18, 38], "chmod": 7, "choic": 7, "choos": [1, 2, 3, 13, 16, 23], "cidr": [20, 21], "citizen": 13, "claimnam": 2, "class": [2, 3, 12, 13, 30], "clean": 10, "cleanup": [2, 25, 29], "clear_data_backup": 29, "clear_system_backup": 29, "cli": [13, 15, 17, 21], "click": 10, "client": [1, 3, 4, 6, 7, 8, 10, 13, 15, 18, 19, 23, 27], "clone": [2, 13], "close": [10, 15], "cloud": [11, 12, 13, 14, 17, 19, 21, 23], "cluster": [1, 2, 3, 4, 6, 7, 15, 16, 18, 19, 24, 26, 27, 28, 29, 30, 31, 38], "cluster_id": 28, "cluster_ip": 7, "cluster_nam": [11, 13, 14], "cluster_vers": 14, "clusterconfig": 20, "clusterip": [6, 7, 8, 15, 18, 27], "clusterrol": [14, 18, 34], "clusterrolebind": [14, 34], "clustersharednodesecuritygroup": 20, "clustertrustbundleproject": 2, "cname": 19, "co": [1, 2, 3], "code": [31, 38], "collabor": 10, "collect": [2, 18, 19, 35], "colon": 10, "color": 6, "column": 18, "com": [5, 6, 8, 10, 11, 12, 13, 14, 15, 18, 19, 23, 28, 30, 34, 38], "combin": [1, 2, 3], "come": [11, 13, 14, 17, 30], "comma": 2, "command": [2, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 33, 34], "comment": 2, "commit": [2, 17, 31], "common": [11, 13, 14, 15, 18, 30, 34, 37, 38], "commonli": 10, "commun": [1, 2, 3, 4, 12, 20, 21, 23], "compar": [10, 18], "compat": [2, 3, 6], "complet": [2, 10, 13, 19, 27], "complex": [7, 12], "compon": [15, 17, 19], "compos": [15, 23], "compromis": 2, "comput": [1, 2, 3, 14, 21], "concaten": 2, "concept": [2, 3, 6], "condit": [13, 15, 18, 19, 23, 28, 30, 38], "conditiontyp": 2, "config": [2, 3, 7, 13, 14, 17, 20, 21, 23, 34], "config_fil": 17, "configmap": [6, 7, 13], "configur": [1, 2, 3, 4, 6, 7, 8, 12, 17, 23, 28, 30, 37, 38], "conflict": [2, 10], "conform": [31, 37], "connect": [2, 6, 7, 8, 12, 13, 17, 20], "connections_per_host": 13, "consequ": 12, "consid": [2, 3, 18], "consider": [1, 2, 3], "consist": [2, 3, 15, 17, 23, 28, 30], "consistent_cluster_manag": 28, "consol": 10, "constitut": 1, "consult": [2, 17], "consum": [2, 3], "contact": [8, 23], "contain": [1, 2, 3, 12, 14, 15, 18, 21, 29, 31, 34, 35, 38], "containernam": 2, "content": [2, 3, 13, 14, 15, 28, 31], "context": [20, 21, 30, 34], "context_dc1": 23, "context_dc2": 23, "continu": [8, 10, 29], "contrari": 6, "contribut": 16, "contributor": [1, 2, 3, 4, 10], "control": [1, 2, 3, 8, 12, 14, 17, 18, 19, 23, 29, 37, 38], "controllerimag": 15, "controllerresourc": 15, "conveni": 19, "convent": [1, 2, 3, 4, 13], "convert": [1, 2, 3, 4], "copi": [2, 3, 6, 13, 34], "core": [2, 3, 13, 14, 30], "corev1": 2, "correct": [2, 17, 19], "correctli": [15, 31], "correspond": [1, 2, 3, 20, 21], "correspondingli": 23, "cost": 12, "could": 15, "count": [13, 14, 17], "coupl": 30, "cours": 15, "cover": [12, 30], "cpu": [2, 11, 13, 14, 15, 23, 28, 30], "cpumanagerpolici": [11, 14], "cpuset": [2, 13, 23], "cql": [6, 9, 13, 17, 28], "cql_user": 6, "cqlsh": [6, 13], "cqlshlib": 7, "cqlshrc": 7, "cr": 23, "crd": [5, 10, 13, 15, 17, 18, 30, 38], "creat": [1, 2, 3, 6, 7, 12, 15, 17, 18, 19, 23, 28, 30, 34, 38], "create_system_backup": 29, "createselfsignedcertif": 15, "creation": [2, 3, 11, 14, 17, 31], "credenti": [2, 7, 14, 17, 19, 28], "cri": 31, "crossnamespacevolumedatasourc": [2, 3], "crt": [6, 7, 17, 19], "csi": [3, 11, 14], "curl": 19, "current": [1, 2, 3, 13, 15, 16, 19, 20, 21, 23, 29, 34, 37], "currentnod": 2, "currentrack": 2, "custom": [2, 3, 12, 17, 19, 20, 21, 28], "customiz": 15, "customresourcedefinit": [18, 38], "customzi": 15, "d": [2, 6, 7, 19, 23, 38], "d1d532cd": 17, "d446ff160747": 28, "d4946360": 17, "d7e1": 6, "daemon": 30, "daemonset": [27, 30], "daili": 17, "dash": [2, 10], "data": [2, 3, 6, 7, 13, 14, 17, 19, 23, 27, 28, 29, 32, 38], "databas": [15, 17], "datacent": [3, 7, 13, 15, 16, 17, 20, 21, 27, 28, 30, 34], "datacenter_nam": 13, "dataset": 2, "datasetnam": 2, "datasetuuid": 2, "datasnapshottag": 2, "date": [1, 2, 3, 10, 15, 17, 23, 31, 38], "daunt": 13, "dc": [2, 17, 23], "dc1": [2, 23], "dc2": 23, "dc9842980080": 28, "dc_suffix": 13, "dead": 16, "debug": [17, 34], "decid": [15, 31], "decim": 2, "decis": 29, "decod": 13, "deconflict": [2, 3], "dedic": [2, 8, 12, 15, 17, 20, 21, 23, 28, 30, 34, 35], "dedupl": 2, "default": [1, 2, 3, 6, 7, 8, 12, 13, 14, 15, 17, 23, 27, 28, 30, 33, 34], "defaultmod": 2, "defin": [1, 2, 3, 4, 5, 12, 13, 15, 17, 23], "definit": [6, 12, 13, 14, 15, 17, 18, 29, 38], "degrad": [2, 3, 8, 19, 23, 28], "delet": [2, 13, 17, 18, 27, 29, 38], "delete_pod": 29, "demo": [11, 14, 27], "deni": [13, 21], "dep": 10, "depend": [2, 8, 10, 12, 18, 26, 27, 30, 31, 34], "deploi": [12, 16, 18, 38], "deploy": [13, 15, 17, 19, 21, 22, 23, 28, 29, 38], "deprec": 2, "describ": [1, 2, 3, 4, 11, 13, 14, 17, 18, 20, 21, 23, 28, 29, 38], "descript": [10, 15], "design": 2, "desir": [1, 2, 3, 4, 13, 15, 17, 29], "desiredcapac": 11, "destin": 20, "destroi": [13, 17, 23], "detach": 18, "detail": [1, 2, 3, 6, 13, 17, 19, 23, 30, 31], "detect": [29, 31], "determin": [2, 3, 10, 34], "dev": [1, 2, 19], "devel": [1, 2, 3, 4], "develop": [2, 11, 14, 17, 19], "developermod": [2, 13, 28], "deviat": 34, "devic": [2, 11, 14, 30], "did": 10, "differ": [2, 3, 6, 7, 8, 11, 12, 13, 15, 17, 20, 21, 23, 30], "direct": [2, 3, 12, 13, 19, 21], "directli": [2, 6, 12, 21], "directori": [2, 10, 34, 38], "disabl": [2, 3, 7, 14, 15, 21, 26, 28, 29, 33], "disable_maintenance_mod": 29, "disableoptim": 1, "disadvantag": 8, "disallow": [2, 3], "disambigu": [18, 38], "discov": [6, 9, 12, 23], "discoveri": [2, 7], "discuss": 23, "disk": [1, 2, 11, 13, 14, 21, 27, 30], "disknam": 2, "diskspacefreeminperc": 17, "diskuri": 2, "displai": 29, "distinct": [12, 20, 21, 23], "distribut": 30, "divisor": 2, "dn": [2, 3, 8, 10, 12, 13, 19, 23, 26, 27], "dns1123subdomainfmt": [2, 3], "dns_label": 2, "dnsdomain": [2, 3, 19], "dnspolici": 2, "do": [1, 2, 3, 10, 13, 17, 19, 20, 21, 26, 35, 37, 38], "doc": [2, 3, 5, 11, 13, 28, 30, 37], "docker": [7, 10, 13, 15, 31, 38], "docker0": 33, "document": [2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 23], "doe": [1, 2, 3, 10, 13, 15, 17, 23], "doesn": [12, 13, 14, 37, 38], "doesnotexist": [1, 2, 3], "domain": [2, 3, 23], "don": [1, 2, 3, 6, 10, 11, 12, 14, 15, 34], "done": [7, 10, 11, 13, 14, 17, 28, 34], "dot": 2, "doubl": 30, "down": [1, 8, 13, 16, 23, 27], "download": [15, 28], "downscal": 16, "downtim": 18, "downward": 2, "downwardapivolum": 2, "downwardapivolumefil": 2, "drain": [2, 27, 29], "drain_nod": 29, "drbth": 15, "driver": [2, 3, 8, 11, 12, 13, 14], "drop": [2, 3], "dry": 13, "due": [1, 2, 3, 17, 23, 24], "durat": [2, 17, 28, 34], "dure": [1, 2, 3, 10, 23, 29, 38], "dynam": [2, 3, 11, 14], "dynamicresourcealloc": [2, 3], "dynamodb": 9, "e": [1, 2, 3, 6, 13, 34, 38], "e2": 31, "e24c": 23, "e420": 23, "each": [1, 2, 3, 12, 13, 14, 15, 17, 18, 20, 21, 23, 29, 30, 38], "earlier": [11, 14, 20, 23], "easi": 13, "easier": [13, 18, 19, 38], "easiest": 14, "easili": [20, 21], "east": [11, 13, 15, 17, 18, 20, 23, 27, 28, 29, 30], "east1": [21, 26], "eb": 2, "ebd82268": 28, "echo": [6, 19], "ecosystem": 8, "edit": [10, 11, 13, 14, 17], "editor": 7, "eec5": 17, "efb7": 28, "effect": [1, 2, 3, 23, 28], "effic": 30, "eg": 13, "either": [2, 3, 13, 15, 17], "ek": [8, 12, 16, 22, 23, 31], "eks_region": 11, "eks_zon": 11, "eksctl": [11, 20], "element": [1, 2, 3], "elig": 31, "els": [10, 19], "embed": [2, 34, 35], "emploi": 13, "empti": [1, 2, 3, 7, 13, 28], "enabl": [1, 2, 3, 6, 7, 12, 13, 14, 17, 20, 21, 23, 24, 26, 28, 29, 33], "enable_maintenance_mod": 29, "encod": 2, "encrypt": 7, "end": [10, 18, 19, 28, 31], "endpoint": [1, 2, 3, 4, 7, 13], "endpointsselector": 19, "enforc": 30, "enhanc": 23, "enough": [2, 6, 34], "ensur": [2, 10, 13, 18, 28], "enter": [10, 15, 27, 29], "enterpris": [12, 16, 17, 28, 31], "entir": [2, 3, 12, 13, 23, 30], "entri": [2, 3, 13], "entrypoint": 7, "env": [2, 13, 34], "environ": [2, 7, 10, 12, 13, 15, 18, 23, 34], "eof": 7, "ephemer": [8, 23], "ephemeralvolumesourc": 2, "eq": 19, "equal": [1, 2, 3, 13, 23, 30], "equival": [1, 2, 3, 12], "error": [2, 3, 6, 13, 14, 17, 29, 34], "errorbackoff": 17, "esoter": 2, "esp": 21, "especi": 8, "establish": [12, 13, 20, 21, 38], "etc": [1, 2, 3, 17, 19, 30, 31], "eval": 13, "evalu": 2, "even": [10, 29], "event": 13, "eventu": [1, 2, 3], "everi": [2, 3, 6, 7, 8, 12, 13, 23, 29, 31], "everyon": 31, "everyth": [2, 10, 11, 13, 14, 15, 29], "evict": [1, 2, 3], "ex": [2, 14], "exactli": [15, 31], "examin": [13, 17], "exampl": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 28, 29, 30, 34, 38], "exce": [2, 3], "except": [11, 14], "exclud": 2, "exclus": [2, 12, 30], "exec": [2, 6, 7, 13, 17, 23, 27, 28, 34], "execut": [1, 2, 3, 15, 17, 18, 23, 28, 29, 30, 33], "exemplari": [20, 21], "exist": [1, 2, 3, 13, 17, 18, 23, 29, 31, 34, 38], "exit": 13, "expand": 2, "expect": [2, 3, 23, 38], "experi": [11, 14], "experiment": [2, 16, 19, 30, 38], "expir": 2, "expirationsecond": 2, "explain": [12, 19, 20, 21, 30], "explicit": 24, "explicitli": [2, 3, 7], "export": [2, 6, 11, 14, 34], "expos": [2, 3, 6, 16, 23], "exposeopt": [12, 19, 23], "exposur": 8, "express": [1, 2, 3, 15], "ext4": 2, "extend": [13, 37], "extern": [2, 3, 8, 12, 15, 18, 19, 27, 34], "external_ip": 19, "externalse": [2, 23], "externaltrafficpolici": [2, 12], "extra": [2, 13, 34], "extract": [18, 23], "f": [2, 11, 13, 14, 15, 17, 18, 19, 20, 23, 38], "f17db261": 21, "fa78d3992694": 18, "facilit": 12, "factor": [2, 13, 34], "factori": 7, "fail": [2, 13, 17, 19, 27, 28, 33], "failfast": 2, "failur": [2, 26, 27, 29], "failurestrategi": 2, "fallback": 23, "fals": [1, 2, 3, 15, 17, 19, 21, 23, 28], "fast": 13, "faster": 2, "featur": [1, 2, 3, 10, 30], "feel": [13, 34], "fetch": 10, "few": 34, "ff36d7e0": 28, "fibr": 2, "field": [1, 2, 3, 12, 13, 15, 19, 23, 29, 34], "fieldpath": 2, "file": [1, 2, 6, 7, 10, 13, 14, 15, 18, 20, 28, 34, 37, 38], "filesystem": [2, 3, 11, 14, 26], "filesystemconfigur": 1, "filter": [1, 21], "find": [1, 2, 3, 5, 6, 7, 13, 15, 19, 29, 37, 38], "find_next_nod": 29, "find_next_rack": 29, "finish": [2, 3, 13, 28], "finish_upgrad": 29, "firewal": 37, "first": [2, 10, 11, 13, 14, 15, 17, 18, 19, 28, 29, 38], "fit": [1, 10, 12], "fix": [2, 8, 10, 31, 33], "flag": [2, 20, 21, 24, 34, 38], "flow": 20, "focus": [11, 14], "folder": [7, 11, 14, 34], "follow": [2, 7, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 23, 28, 29, 31, 33, 38], "follw": 15, "foo": [2, 3, 28], "foostatu": [2, 3], "forbid_rmw": 13, "forbidden": [1, 2, 3], "forc": [2, 14], "forceredeploymentreason": [2, 23, 28], "forev": [1, 2, 3], "forgotten": 10, "form": [11, 14, 34], "format": [2, 14, 17, 21, 29], "formula": 2, "fortun": 13, "forward": 2, "found": [11, 13, 14], "free": [13, 14, 34], "freez": 31, "fresh": [28, 38], "from": [1, 2, 3, 4, 6, 8, 10, 11, 12, 13, 14, 15, 18, 19, 20, 23, 25, 26, 27, 29, 30, 31, 34, 38], "fromvers": 2, "front": [2, 26], "frontend": 17, "fsgroup": 2, "fstype": [1, 2], "fulfil": 30, "full": [2, 11, 13, 14, 17, 18, 27, 29], "fullfil": 15, "fulli": [17, 23], "function": [2, 3, 23, 31, 37], "further": 12, "futur": [2, 7, 19, 20, 21], "g": [1, 2, 3, 6, 14, 18, 38], "ga": 31, "garbag": 18, "gate": [1, 2, 3], "gatewai": [2, 3], "gather": 32, "gb": 13, "gc": 2, "gce": 2, "gcloud": [14, 21], "gcp": [14, 21], "gcp_project": 14, "gcp_region": 14, "gcp_user": 14, "gcp_zone": 14, "gen": 13, "gener": [1, 2, 3, 10, 11, 12, 13, 14, 17, 18, 19, 29, 38], "get": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 34, 38], "gib": [2, 15], "git": [1, 2, 3, 4, 10, 13, 18, 31, 38], "github": [6, 10, 13, 16, 19, 31, 34], "give": [2, 10, 13, 14, 17, 31], "given": [1, 2, 3, 20, 27, 34], "gke": [8, 12, 13, 16, 22, 23, 27, 31], "glob": 2, "global": 2, "go": [1, 2, 10, 13, 15, 18, 23, 27, 38], "go_vers": 17, "goe": 34, "good": [10, 12, 15], "googl": 21, "googleapi": [15, 38], "gopath": 10, "gracefulli": 2, "grafana": [13, 16], "grafana_password": 19, "grafana_serving_cert": 19, "grafana_us": 19, "grant": 18, "granular": 2, "greatest": [1, 2, 3], "group": [1, 2, 3], "gt": [1, 2, 3], "guarante": [2, 3, 14, 30], "guid": [3, 11, 13, 14, 15, 17, 18, 20, 21, 23, 38], "guidanc": [20, 21], "h": [2, 13], "ha": [1, 2, 3, 7, 8, 10, 12, 13, 14, 20, 23, 28, 31], "hack": 13, "hacki": 18, "hairpin": 33, "handl": [2, 14], "happen": [2, 13, 29], "hard": 14, "hardwar": 15, "hash": [2, 6, 21], "have": [1, 2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 29, 30, 34, 37, 38], "head": 10, "header": 2, "headless": 23, "healhcheck": 17, "healthcheck": 17, "healthcheck_rest": 17, "healthz": 38, "helm": [13, 16, 19, 31], "help": [7, 12, 13, 16, 34, 35], "here": [2, 3, 6, 7, 8, 10, 13, 34, 38], "hi": 24, "high": 23, "higher": [2, 3], "highest": [1, 2, 3], "highli": [11, 13, 14], "histori": 7, "hit": [31, 34], "hold": [1, 2, 3], "home": 10, "hop": 8, "host": [1, 2, 10, 17, 19, 23, 27, 31], "hostnam": [2, 7, 8, 12, 23], "hostnetwork": [2, 13, 37], "hour": 2, "how": [2, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 19, 27, 28, 34, 37], "howev": [23, 30], "html": 11, "http": [1, 2, 3, 4, 5, 6, 10, 11, 13, 15, 17, 19, 34, 38], "http_code": 19, "httpget": 38, "hub": 15, "human": [1, 2, 3, 23], "i": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 27, 28, 29, 30, 31, 33, 34, 37, 38], "i3": 11, "iam": 14, "icmp": 21, "id": [2, 17, 20, 23, 27, 28], "ideal": 13, "identif": 2, "identifi": [2, 3, 27, 28], "ie": 13, "ifnotpres": 15, "ignor": [1, 2, 3, 27], "ill": 23, "imag": [1, 2, 4, 10, 14, 18, 21, 29, 30, 31, 38], "imagepath": 1, "imagin": 10, "img": 10, "immedi": [1, 2, 3, 30], "immut": [2, 3], "impact": 2, "implement": [1, 2, 3, 10, 23], "impli": [2, 3, 12], "implicit": [1, 2, 3], "implicitli": 2, "import": [2, 3, 8, 13, 14, 31], "improv": 11, "inbound": 20, "incid": 24, "includ": [2, 3, 10, 15, 21, 35, 37], "incom": [1, 2, 3], "incompat": [18, 31, 38], "inconsequenti": 13, "incorpor": 12, "increas": [2, 13], "independ": [12, 23, 37], "index": [6, 7, 19, 23], "indic": [1, 2, 3], "individu": [2, 11, 14], "infer": [1, 2, 3, 4], "infinit": 17, "info": [1, 2, 3, 4, 17, 34], "inform": [2, 13, 19, 20, 21, 23, 29, 35, 37], "infrastructur": [2, 20, 21, 23], "ingress": [6, 8, 12, 21, 37], "ingress_ip": 19, "ingress_port": 19, "ingressclassnam": [2, 3, 19], "initcontain": [2, 18], "initi": [2, 8, 18, 23], "initiatornam": 2, "inject": 14, "insecur": 2, "insecuredisableauthor": 2, "insecureenableanonymousaccess": 3, "insecureenablehttp": 2, "insid": [2, 3, 11, 13, 14, 26], "inspect": 10, "instal": [2, 3, 10, 13, 16, 17, 18, 19, 20, 21, 23, 34, 36, 38], "instanc": [1, 2, 3, 13, 14, 15, 17, 18, 19, 20, 21, 23], "instance_numb": 13, "instancetyp": 11, "instead": [2, 7, 13, 37], "instruct": [11, 13, 14, 15, 18, 20], "integ": [1, 2, 3], "integr": [2, 7, 10, 16, 23], "intend": [2, 3], "intens": [2, 28], "inter": [2, 12, 22, 23], "interact": [13, 26, 31], "interconnect": [12, 20, 21, 22], "interest": 15, "interfac": [2, 3, 14, 21], "intern": [1, 2, 3, 4, 8, 12, 15, 17], "internal_ip": 19, "internalip": 19, "internaltrafficpolici": [2, 12], "interpret": [1, 2, 3], "interrupt": 30, "intersect": [1, 2, 3], "interv": [2, 17], "intervent": 23, "introduc": [13, 19, 23, 30], "involv": 18, "io": [1, 2, 3, 4, 5, 7, 8, 11, 12, 13, 19, 20, 23, 31, 34, 38], "ip": [2, 6, 8, 12, 13, 15, 18, 19, 21, 23, 27, 33], "ip_addr": 2, "ipaddress": 12, "ipv4": [20, 21], "iqn": 2, "irq": 30, "iscsiinterfac": 2, "isn": [1, 2, 3, 15, 28], "isol": [2, 13], "issu": [6, 8, 10, 16, 17, 18, 29, 31, 32, 34, 36, 38], "issuer": 13, "item": 19, "iter": [1, 2, 3], "its": [1, 2, 3, 8, 11, 13, 14, 17, 18, 20, 21, 23], "itself": [2, 10, 15, 17, 26], "jan": 28, "job": [2, 13, 31], "join": [23, 27], "jonesdl": 2, "json": [2, 3, 18, 23], "jsonpath": [6, 7, 8], "just": [1, 2, 3, 8, 10, 11, 13, 14], "k8": [1, 2, 3, 4, 15, 16, 17, 18, 25, 26, 27, 30], "kb": [23, 27], "keep": [10, 11, 14], "kei": [1, 2, 3, 6, 7, 12, 13, 17, 23, 34], "kept": 13, "kernel": [30, 31], "keyr": 2, "keyschema": 6, "keyspac": [2, 13, 17, 28, 29], "keytyp": 6, "kind": [1, 2, 3, 4, 7, 12, 18, 19, 20, 23, 28, 30, 38], "know": 12, "known": [2, 3, 20, 31, 32], "kube": 34, "kubebuild": 10, "kubeconfig": 34, "kubectl": [6, 7, 8, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 30, 34], "kubelet": [2, 11, 14, 30, 31], "kubeletconfig": 14, "kubeletextraconfig": 11, "kubernet": [2, 3, 5, 6, 7, 11, 12, 15, 16, 18, 19, 34, 37], "kustom": 10, "l": [13, 15, 17, 18, 19, 28, 34], "label": [1, 11, 13, 14, 19, 23, 26, 27, 30], "labelselector": 23, "lack": 17, "land": [15, 30], "larg": [11, 34], "last": [1, 2, 3, 10], "lasttransitiontim": [1, 2, 3], "latenc": 12, "later": [11, 14], "latest": [1, 2, 3, 4, 10, 11, 16, 31, 34], "latter": 8, "launch": [11, 14], "lb": 12, "leak": 7, "learn": [2, 7, 8, 12, 20, 28, 35], "least": [2, 10, 14, 15, 23, 30, 34], "leav": [2, 23, 27, 30], "left": 29, "less": [10, 18, 19, 38], "lesson": 16, "let": [2, 11, 14, 15, 17, 23, 34], "level": [2, 13, 17], "lib": 17, "licens": 17, "life": [13, 27], "lifecycl": [2, 10, 23], "lifetim": 2, "light": 2, "like": [2, 3, 6, 8, 10, 13, 16, 17, 18, 19, 27, 30, 31, 34], "likelihood": 23, "limit": [13, 15, 17, 23, 28, 30], "line": [10, 20, 21, 23], "link": [2, 10, 33], "linux": [13, 31], "list": [1, 2, 3, 6, 10, 13, 14, 17, 18, 21, 28, 38], "listkind": [1, 2, 3, 4], "listmapkei": [2, 3], "listtyp": [2, 3], "littl": 13, "live": [2, 26], "livenessprob": 38, "ll": [11, 14, 28, 34], "load": [2, 8, 12, 23, 26, 27], "loadbalanc": [8, 19], "loadbalancerclass": [2, 12], "local": [1, 2, 3, 6, 7, 8, 10, 19, 20, 23, 27], "localdc": 17, "localobjectrefer": 2, "locat": [1, 2, 3, 17, 21, 28, 34], "log": [2, 10, 13, 17, 29], "logger": 17, "logic": [2, 10, 12], "login": 2, "loglevel": 17, "long": [2, 8], "longer": [2, 10, 13, 14, 23, 27], "look": [2, 3, 8, 10, 13, 15, 18, 23, 34], "lookup": [1, 2, 3, 18], "loop": [1, 10], "loopdeviceconfigur": 1, "lose": [10, 24], "lost": 25, "lot": 38, "lower": [2, 3, 18], "lqejv3kdr5gx9m3xq2ynnq": 17, "lsetxattr": 34, "lt": [1, 2, 3], "lun": 2, "m": [2, 17], "ma": 15, "machin": [2, 11, 13, 14, 19, 21, 34], "machineri": 23, "made": [2, 10, 12, 31], "mai": [1, 2, 3, 4, 7, 8, 12, 19, 23, 24, 26, 27, 29, 30, 31, 34, 38], "main": [13, 15, 17, 23], "maintain": [10, 31], "mainten": [25, 29], "make": [2, 3, 6, 7, 8, 10, 13, 14, 15, 17, 18, 19, 23, 27, 28, 31, 34, 37, 38], "makefil": 10, "manag": [2, 3, 12, 14, 16, 18, 20, 21, 27, 28, 30, 31, 34, 38], "managerid": 2, "mang": 2, "mani": [2, 3, 15, 19, 30, 34], "manifest": [13, 23, 38], "manual": [2, 3, 6, 7, 13, 14, 18, 19, 21, 23, 28, 29, 34, 37, 38], "map": [1, 2, 3, 17], "mark": 2, "master": [2, 10, 31], "match": [1, 2, 3, 14, 19, 30, 31], "matchexpress": 23, "matchlabel": [19, 23], "matchlabelkei": [1, 2, 3], "matchlabelkeysinpodaffin": [1, 2, 3], "matter": 19, "max": [2, 13, 23], "max_repair_ranges_in_parallel": 2, "maximum": [2, 3, 11, 14], "md": [1, 2, 3, 4], "mean": [1, 2, 3, 13, 18], "meant": 2, "mechan": 23, "medium": 2, "meet": [1, 2, 3, 23, 30], "megabyt": 2, "member": [2, 3, 8, 13, 15, 17, 18, 19, 23, 28, 29, 30], "memori": [2, 13, 15, 23, 28, 30, 31], "mention": [8, 34], "merg": [1, 2, 3, 6, 10, 12, 23, 28, 29, 31], "messag": [1, 2, 3, 13, 17, 29], "met": [1, 2, 3, 19, 23, 28], "metadata": [7, 8, 18, 19, 20, 23, 28, 30], "metal": [17, 19], "metav1": [2, 3], "metric": [12, 13, 15], "mib": 2, "might": [2, 12, 18, 27, 31], "migrat": [33, 38], "migratedir": 17, "migratemaxwaitschemaagr": 17, "migratetimeout": 17, "mikefarah": 34, "mini": 13, "minifi": 34, "minikub": [13, 15], "minim": [10, 15], "minimum": [2, 3], "minor": 38, "minreadysecond": 2, "minterminationgraceperiodsecond": 2, "minut": [2, 29], "mirror": 2, "mismatchlabelkei": [1, 2, 3], "mission": 17, "mistak": 2, "mitig": 8, "mkdir": 10, "mktemp": [6, 7, 34, 38], "mnt": 17, "mode": [2, 3, 11, 14, 17, 21, 25, 29, 34], "model": [1, 21], "modelregex": 1, "modif": 6, "modifi": [3, 10, 13, 14, 21, 29, 37], "modifyvolumestatu": [2, 3], "moment": 2, "monitor": [2, 3, 11, 14, 16, 23, 31], "month": 10, "more": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 19, 20, 21, 23, 27, 30, 34, 35, 37], "most": [1, 2, 3, 10, 11, 13, 14, 15, 19, 23, 30], "mount": [2, 11, 13, 14, 34], "mountconfigur": 1, "mountpath": 2, "mountpoint": 1, "mountpropag": 2, "mountpropagationnon": 2, "move": [23, 27, 29, 30], "much": [15, 27], "multi": [16, 20, 21, 34], "multipl": [1, 2, 3, 10, 12, 13, 17, 18, 22], "musiccollect": 6, "must": [1, 2, 3, 10, 12, 13, 17, 23, 27, 29, 30, 31, 32, 35, 38], "must_gather_token": 34, "mutat": [2, 3, 38], "mutatingwebhookconfigur": 38, "mutual": 2, "my": [2, 12, 17], "mydomain": 19, "mysql": 2, "n": [2, 11, 13, 14, 15, 17, 18, 19, 23, 26, 27, 28, 29, 31, 34, 38], "n1": [14, 21], "name": [1, 2, 3, 6, 7, 8, 10, 11, 13, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 34, 38], "nameregex": 1, "namespac": [1, 2, 3, 8, 13, 15, 17, 18, 23, 30, 38], "namespace_with_broken_scyllaclust": 34, "nativ": [7, 13, 21], "natur": 23, "navig": 10, "necessari": [2, 11, 13, 14, 19, 20, 21, 23, 34], "need": [2, 6, 7, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31, 34, 37, 38], "neg": [1, 2, 3], "network": [3, 6, 7, 8, 10, 12, 16, 22, 27, 30, 37], "networktopologystrategi": 13, "never": [10, 38], "new": [2, 3, 10, 13, 14, 16, 17, 18, 19, 20, 23, 27, 29, 30, 31, 38], "new_replication_factor": 13, "newli": [2, 18], "next": [17, 29], "nightli": 29, "nil": 2, "node": [1, 3, 6, 7, 9, 13, 15, 16, 17, 18, 19, 26, 28, 29], "nodeaffin": 23, "nodeconfig": [0, 5, 11, 14, 30], "nodeconfiglist": 1, "nodegroup": [11, 20], "nodepool": 14, "nodepublishvolum": 2, "nodeselector": [13, 30], "nodeselectorterm": 23, "nodeservic": [12, 23], "nodetool": [23, 27], "nodeunpublishvolum": 2, "noexecut": [1, 2, 3], "non": [1, 2, 3, 20, 23, 29], "none": [2, 8, 15, 18, 27], "nor": 6, "normal": [2, 23, 27], "noschedul": [1, 2, 3, 11, 14, 23], "notabl": 23, "note": [2, 3, 7, 13, 17, 19, 38], "noth": [2, 18], "notic": [2, 15, 19], "notin": [1, 2, 3], "now": [2, 6, 10, 11, 13, 14, 17, 18, 20, 21, 23], "nr": [2, 13, 23], "ntf": 2, "null": [1, 2, 3, 19], "num": [13, 14, 17, 21], "num_job": 13, "number": [2, 10, 13, 38], "numretri": 2, "nutshel": 10, "nvme": [11, 14], "o": [6, 7, 8, 13, 18, 19, 28, 31, 34], "object": [1, 2, 3, 4, 12, 13, 19, 23, 38], "observ": [1, 2, 3, 4, 15, 29], "observedgener": [1, 2, 3], "obtain": [2, 14], "obviou": 10, "octal": 2, "off": [1, 10, 13, 26, 29, 31, 38], "offici": [18, 31], "often": [2, 19, 37], "ok": 13, "old": [18, 27, 38], "older": 2, "omit": [2, 3, 20], "omitempti": [2, 3], "onc": [2, 3, 10, 11, 13, 14, 15, 17, 20, 21, 29, 38], "ondelet": 29, "one": [1, 2, 3, 8, 10, 12, 13, 15, 17, 18, 21, 23, 24, 27, 29, 34, 38], "ones": [1, 2, 3, 12, 20, 38], "ongo": 2, "onli": [1, 2, 3, 6, 8, 11, 13, 18, 20, 21, 23, 29, 30, 31, 34, 38], "only_rmw_uses_lwt": 13, "onto": [1, 2, 3], "op": [1, 2, 3, 13, 18, 23], "open": [10, 12, 13, 16, 17], "openstack": 2, "oper": [1, 2, 3, 4, 5, 6, 7, 8, 12, 17, 18, 23, 24, 26, 27, 29, 30, 31, 34, 35, 37], "opt": 7, "optim": [1, 2, 11, 14, 30], "option": [1, 3, 6, 7, 11, 13, 14, 15, 17, 23, 30, 34], "optmiz": 30, "order": [2, 10, 12, 13, 14, 17, 23, 38], "organ": 3, "origin": [10, 23], "orphan": 2, "other": [1, 2, 3, 6, 8, 10, 12, 14, 15, 16, 17, 19, 20, 21, 23, 27, 30, 31, 34], "otherdc": 2, "otherwis": [1, 2, 3, 10, 19, 20, 31], "our": [6, 8, 13, 18, 23, 30, 31, 34, 35, 38], "out": [1, 2, 3, 5, 6, 13, 16, 18, 23, 29, 38], "output": [2, 6, 10, 13, 17, 18, 21, 23, 28], "outsid": [8, 12, 19], "over": [1, 2, 3, 7, 11, 14, 23, 27, 29], "overal": 2, "overlap": [20, 21], "overrid": [2, 13], "overview": [2, 32], "overwrit": 15, "own": [2, 11, 14, 15, 23, 27], "owner": [2, 3], "ownerrefer": 18, "p": [8, 10, 13, 14, 18, 23, 28, 29, 38], "packet": [19, 30], "page": [7, 8, 12, 21, 38], "paid": 35, "pair": [1, 2, 3, 12, 13], "paragraph": [6, 7], "parallel": [2, 28, 29], "paramet": [2, 23], "part": [2, 8, 30], "parti": [2, 3, 19], "particular": [1, 2, 3, 8, 12, 13, 15, 23, 29, 31], "partit": 2, "pass": [1, 2, 10, 12, 14, 31, 37], "passthrough": 19, "password": [6, 7, 13, 17, 19], "passwordauthent": [7, 13], "patch": [1, 2, 3, 8, 18, 23, 28, 29, 38], "patchmergekei": [2, 3], "patchstrategi": [2, 3], "path": [1, 2, 3, 10, 13, 18, 23, 34, 38], "pattern": [2, 13, 15, 34], "pcx": 20, "pd": [2, 14, 21], "pdb": 14, "pdid": 2, "pdname": 2, "peer": 23, "pem": 2, "pend": [2, 3, 27], "per": [1, 2, 3, 8, 13], "percent": 2, "perform": [2, 11, 13, 14, 16, 24, 31], "perftun": 30, "period": [1, 2, 3, 18], "perman": 7, "permiss": [2, 14, 17, 18], "permit": 21, "persist": [2, 3, 14, 17], "persistentvolum": [2, 3, 11, 13, 14], "persistentvolumeclaim": 3, "persistentvolumeclaimvolumesourc": 2, "photon": 2, "photoncontrol": 2, "pick": [13, 23], "pid": 17, "piec": 31, "pin": [2, 30, 38], "placement": [23, 30], "plain": 13, "plaintextauthprovid": 7, "plane": [37, 38], "platform": [3, 12, 13, 19, 20, 21, 22], "pleas": [2, 6, 7, 10, 15, 30, 34, 37, 38], "plugin": [2, 34], "pluralnam": [1, 2, 3, 4], "pod": [1, 2, 3, 7, 8, 11, 12, 13, 14, 15, 17, 18, 19, 21, 23, 24, 26, 27, 29, 30, 34, 37], "podantiaffin": 23, "podman": 7, "podreadinessg": 2, "podspec": [2, 3], "point": [1, 2, 3, 7, 8, 12, 14, 18, 19, 23, 29, 34], "polici": [2, 10, 11, 12, 14, 15, 30], "poll": 2, "pollinterv": [2, 17], "pool": [2, 11, 14, 21, 23, 27, 30], "popul": [2, 3, 13], "port": [2, 7, 8, 13, 15, 18, 19, 20, 27, 28, 38], "portal": 2, "portworx": 2, "possibl": [2, 27], "post": 28, "potenti": 2, "power": [10, 30], "pr": 10, "pre": 2, "preconfigur": 20, "predefin": [20, 21, 34], "predict": 17, "prefer": [11, 14, 20, 21], "prefer_loc": 13, "prefernoschedul": [1, 2, 3], "prefix": 10, "prepar": [10, 22, 23], "present": [2, 6, 17, 20], "preserv": [2, 3, 38], "press": 8, "prevent": 2, "previou": [2, 3, 18, 29], "print": [13, 29], "printf": 38, "prior": 17, "prioriti": 21, "privat": 20, "privileg": 2, "proactiv": 2, "probe": [26, 38], "procedur": [2, 16, 23, 27, 28, 29, 38], "process": [13, 14, 20, 21, 23, 26, 29, 30, 38], "prod": 17, "produc": [2, 3], "product": [13, 17, 18, 19, 23], "profil": 2, "programmat": [2, 3], "progress": [2, 3, 8, 17, 19, 23, 28], "project": [14, 16], "prometh": 15, "prometheu": [13, 15, 16, 17], "prometheusscrapeinterv": 17, "promisc": 33, "prompt": 10, "prone": 13, "propag": [2, 12, 13, 18, 23], "proper": 13, "properli": [19, 29, 37, 38], "properti": [1, 2, 3, 4, 10, 12, 13], "propos": 23, "proprietari": 17, "protect": 2, "protectiondomain": 2, "protobuf": [2, 3], "protocol": [6, 7, 8, 12, 20], "provid": [2, 5, 6, 8, 11, 12, 13, 14, 15, 19, 20, 23, 30, 35, 37], "provis": [2, 6, 11, 12, 13, 14, 15, 23], "provision": [2, 3, 20, 21, 23], "provisionedthroughput": 6, "public": 12, "publicroutet": 20, "publish": [2, 31], "pull": [2, 15, 34, 38], "pullpolici": 15, "pure": 13, "purpos": [2, 3, 14, 34], "push": 10, "put": [1, 10], "pvc": [2, 3, 24], "pwd": 34, "py": 13, "python": [13, 30], "qa": 31, "qo": 30, "qualifi": 2, "qualifiednamefmt": [2, 3], "qualiti": 31, "queri": [1, 2, 3], "queryabl": 3, "question": 18, "quick": 6, "quickli": 10, "quota": 30, "r": [6, 11], "rack": [8, 13, 15, 16, 17, 23, 27, 28, 29, 30], "rack_nam": 13, "rackcount": 2, "rackdc": [2, 13], "rackspec": 2, "rado": 2, "raft": 28, "raid": [11, 14], "raid0": [11, 14], "raidconfigur": 1, "random": 23, "rang": [1, 2, 3, 6, 19, 20, 21], "rate": [2, 13], "ratelimit": 2, "rather": [2, 31], "raw": [14, 34], "rbac": 14, "rbduser": 2, "rc": 31, "re": [8, 10, 18, 38], "reach": [8, 12, 17, 19, 29, 37], "reachabl": [2, 3, 12, 19], "read": [2, 10, 11, 13, 14, 15, 18], "readabl": [1, 2, 3, 20], "readcapacityunit": 6, "readi": [2, 8, 10, 13, 15, 17, 18, 20, 21, 26, 27, 29, 38], "readinessprob": 38, "readm": 2, "readonli": 2, "readymemb": 2, "readyz": 38, "real": [2, 19], "reason": [1, 2, 3, 7, 15], "rebas": 10, "receiv": 30, "recent": [1, 2, 3, 10], "recipi": 2, "recogn": [1, 2, 3, 4], "recommend": [7, 13, 19, 23, 31, 38], "reconcil": [2, 10, 19], "reconfigur": 37, "reconstruct": 2, "record": [2, 3, 8, 12, 19], "recov": 29, "recovervolumeexpansionfailur": [2, 3], "recreat": [27, 38], "recur": 17, "refer": [2, 3, 6, 7, 11, 13, 14, 15, 16, 18, 19, 20, 21, 23, 28, 31, 38], "referenc": [2, 3], "referencegr": [2, 3], "reflect": [2, 3], "refus": 29, "regard": [12, 18, 21, 23], "regex": [2, 3], "region": [14, 20, 21, 23], "regist": [2, 17, 18, 28], "registri": [2, 26], "regular": [1, 2, 3, 13, 17], "reject": [1, 2, 3, 4], "rel": [1, 2, 3], "relat": [1, 2, 3, 12, 16, 23, 34], "relationship": [1, 2, 3], "releas": [7, 16, 38], "release_nam": 38, "relev": 10, "reli": 2, "reliabl": 12, "rememb": [10, 13], "remot": [3, 6], "remov": [2, 10, 13, 15, 18, 23, 24, 26, 29, 34, 38], "reorder": 10, "rep": [2, 3], "repair": [14, 16, 17, 27, 28], "replac": [1, 2, 3, 8, 13, 16, 18, 19, 23, 25, 28, 34, 38], "replic": [2, 3, 13], "replica": [2, 29], "replicaset": 15, "replication_factor": 13, "replicationfactor": 17, "repo": [2, 10, 15, 18, 38], "report": [16, 35], "repositori": [2, 10, 13, 38], "repres": [1, 2, 3, 4, 13, 23], "represent": [1, 2, 3, 4], "request": [1, 4, 15, 18, 19, 23, 30, 34, 35], "requir": [1, 2, 3, 10, 11, 12, 13, 14, 20, 21, 23, 28, 30, 31, 33, 35, 37, 38], "requiredduringschedul": [1, 2, 3], "requiredduringschedulingignoredduringexecut": 23, "resembl": [13, 21], "reset": [2, 3], "resid": [12, 21], "resolv": [12, 17, 29], "resourc": [1, 4, 13, 17, 18, 19, 20, 21, 23, 24, 28, 30, 37, 38], "resourceclaim": [2, 3], "respect": [1, 2, 3, 14], "rest": [1, 2, 3, 4, 5, 13, 17, 34], "restart": [13, 15, 17, 18, 23, 27, 28, 29, 38], "restor": [2, 25, 29, 38], "restore_upgrade_strategi": 29, "restrict": [2, 3], "result": [2, 13, 18], "resum": 2, "retainkei": 38, "retent": [2, 17], "retri": [2, 17, 29], "retriev": [3, 13, 21, 34], "return": [20, 21, 26], "revert": 1, "review": 34, "revis": [2, 19], "rewrit": 15, "rf": 2, "rfc3339": 2, "rhwqx": 15, "ring": [2, 23], "risk": 10, "rm": [7, 34], "ro": [7, 34], "role": [6, 11, 13, 14, 18, 23], "roll": [2, 13, 15, 16, 18, 23, 28, 29, 38], "rollout": [2, 3, 13, 18, 19, 38], "root": [2, 7, 29], "rotat": 2, "rout": [12, 19], "routabl": 12, "row": 2, "rule": [1, 2, 3, 18, 20, 37], "run": [1, 2, 3, 4, 6, 7, 10, 11, 14, 15, 16, 17, 18, 19, 23, 27, 28, 29, 30, 38], "runtim": 34, "s3": [2, 17, 28], "sai": 10, "said": 34, "salted_hash": 6, "same": [1, 2, 3, 8, 11, 12, 13, 14, 15, 17, 18, 23, 29, 30, 31], "satisfi": [1, 2, 3], "save": [10, 13, 18, 20, 23, 29, 34, 38], "sc": [6, 7, 8], "scale": [16, 29, 34], "scenario": 12, "schedul": [1, 2, 3], "schema": [1, 2, 3, 4, 6, 29], "scheme": [8, 12, 38], "scope": [1, 2, 3, 4], "scrape": [3, 15], "scratch": [31, 38], "script": [2, 6, 13, 14, 30], "sctool": [17, 28], "sctp": 21, "scyladb": 23, "scylla": [5, 6, 7, 8, 12, 18, 19, 20, 21, 24, 26, 28, 30, 31, 34, 35, 37], "scylla_manag": 17, "scylla_vers": 13, "scyllaagentconfig": 2, "scyllaarg": 2, "scyllaclus": 23, "scyllaclust": [0, 5, 6, 8, 15, 16, 17, 18, 19, 23, 24, 28, 29, 30, 34, 38], "scyllacluster_nam": 6, "scyllaclusterlist": 2, "scyllaconfig": 2, "scylladb": [5, 6, 7, 10, 12, 13, 15, 16, 18, 19, 28, 30, 31, 34, 35, 38], "scylladb_config": 7, "scylladb_discovery_ep": 7, "scylladb_ep": 6, "scylladbmonitor": [0, 5], "scylladbmonitoringlist": 3, "scyllaimag": 15, "scyllaoperatorconfig": [0, 5], "scyllaoperatorconfiglist": 4, "scyllautilsimag": 4, "sda": 2, "sda1": 2, "sdd": [11, 14], "sdn": [2, 37], "search": 15, "sec": 13, "second": [2, 13], "secondari": 21, "secret": [3, 7, 13, 15, 19, 23, 34], "secretfil": 2, "secretnam": 2, "section": [6, 11, 12, 13, 14, 20, 21, 34, 35], "secur": [2, 7, 12, 13], "sed": [6, 14, 18, 38], "see": [2, 3, 6, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 28, 30], "seed": 2, "segmentsperrepair": 17, "select": [1, 2, 3, 6, 8, 10, 12, 13, 23], "selector": [1, 12, 13, 38], "self": [3, 13, 15], "selinux": 34, "semant": [2, 29], "send": [20, 34], "sensit": [2, 34], "sent": 2, "sep": 17, "separ": [2, 10, 11, 12, 14, 18, 20, 30], "sequenti": 18, "serivceaccount": 2, "serv": [1, 2, 3, 4, 6, 7, 12, 13, 15, 19, 20, 21, 23, 37], "server": [1, 2, 3, 4, 11, 13, 14, 17, 19, 23, 38], "servic": [2, 3, 6, 7, 8, 13, 15, 18, 19, 21, 26, 27, 37], "serviceaccount": 34, "servicemonitor": 15, "servingcertsecretnam": 3, "session": [2, 13], "set": [1, 2, 3, 6, 7, 8, 10, 12, 15, 16, 17, 19, 23, 28, 29, 30, 33, 34], "setup": [1, 2, 3, 12, 13, 19, 20, 21, 23, 37], "sever": [8, 11, 12, 20, 21, 37], "sh": [10, 11, 14], "sha": 31, "shard": 2, "shardfailedsegmentsmax": 17, "shardingignoremsbbit": 17, "shardparallelmax": 17, "share": [2, 20, 21, 30], "sharenam": 2, "sheer": 23, "shell": [7, 13, 18], "ship": 31, "short": [10, 18], "shortli": 17, "should": [1, 2, 3, 4, 7, 10, 12, 13, 15, 17, 18, 19, 20, 21, 23, 27, 29, 30], "shouldn": [2, 18, 27], "show": [6, 7, 10, 13, 29, 31], "side": [11, 14, 19, 23, 38], "sidecar": [10, 13, 15, 18, 38], "sig": [1, 2, 3, 4], "sign": [2, 3, 13, 15, 18], "signer": 2, "signernam": 2, "similar": [19, 20, 23, 34], "similarli": [2, 15, 34], "simpl": [10, 12, 13, 15, 17, 18, 26, 27, 29, 38], "simpli": [10, 13, 15, 18, 26, 29], "simplic": [20, 21, 23], "simplifi": 7, "simultan": 2, "sinc": [12, 23], "sing": 31, "singl": [1, 2, 3, 10, 13, 15, 17, 23], "singularnam": [1, 2, 3, 4], "situat": 31, "size": [1, 2, 14, 21, 27, 28], "sizelimit": 2, "skip": [19, 34], "slack": 18, "slight": 34, "slightli": [2, 19], "sm_20240105115931utc": 28, "small": [2, 13, 17], "smalltablethreshold": 2, "snapshot": [2, 3, 28, 29], "snapshot_tag": 28, "snapshotparallel": 2, "sni": 19, "so": [1, 2, 3, 7, 8, 10, 12, 13, 14, 15, 19, 20, 21, 23, 30, 38], "so_data_20201228135002utc": 29, "so_system_20201228135002utc": 29, "softwar": 17, "solv": [8, 18, 38], "some": [1, 2, 3, 8, 10, 12, 13, 15, 17, 27, 31, 34, 37], "someth": [13, 17, 26, 34], "sometim": [10, 13, 34], "somewher": 18, "songtitl": 6, "sourc": [3, 12, 15, 16, 17, 20, 21, 28, 38], "sourcetyp": 2, "space": 30, "spawn": 17, "spbm": 2, "spec": [6, 7, 8, 12, 13, 15, 17, 18, 19, 23, 28, 29, 30, 38], "special": 30, "specif": [7, 8, 12, 13, 15, 20, 21, 23, 30, 37, 38], "specifi": [1, 2, 3, 12, 13, 15, 20, 23], "speed": 10, "spent": 2, "spin": [15, 17], "spot": 17, "spread": 30, "squash": 10, "squeez": 13, "src": 10, "ssd": [14, 21], "ssh": [11, 17, 33], "ssl": [2, 7, 17, 19], "ssl_transport_factori": 7, "sslenabl": 2, "ssltimeout": 17, "sstabl": 29, "st": [18, 38], "stabl": [8, 13, 15, 38], "stack": [11, 14, 16, 19], "stackdriv": 14, "stage": [18, 29], "stai": 26, "stand": 2, "standard": [2, 5, 6, 14, 21, 37], "start": [2, 8, 10, 11, 13, 17, 20, 28, 29, 30], "startdat": 2, "startup": [2, 23], "stash": 10, "state": [1, 2, 3, 4, 13, 15, 17, 19, 23, 27, 29, 34], "statefulset": [13, 15, 18, 19, 29, 38], "static": [1, 2, 3, 8, 11, 14, 18, 30], "statu": [8, 12, 13, 15, 16, 17, 18, 19, 20, 23, 27, 28, 29, 38], "stderr": 17, "stdout": 13, "step": [11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 28, 34, 38], "still": [2, 3, 34], "stop": 2, "storag": [1, 4, 11, 13, 14, 15, 19, 23, 28, 30, 38], "storageclass": [2, 3, 23], "storageclass_xf": [11, 14], "storageclassnam": [2, 3, 23], "storagemod": 2, "storagepolicyid": 2, "storagepolicynam": 2, "storagepool": 2, "store": [2, 3, 7, 27, 28], "strateg": [1, 2, 3], "stream": 27, "stress": [11, 14], "string": [1, 2, 3, 4], "stringdata": 23, "strip": 2, "strongli": 7, "struct": [2, 3], "stuck": 29, "style": 5, "subdirectori": 2, "subject": [10, 30], "submit": [1, 2, 3, 4], "subnet": [12, 20], "subnetwork": 21, "subpath": 2, "subpathexpr": 2, "subset": [1, 2, 3, 8, 23, 34], "succe": [2, 3, 26], "success": 28, "successfulli": [13, 19], "sudo": 33, "suffici": 12, "suggest": 28, "suit": [31, 37], "sum": [1, 2, 3], "summari": 10, "superset": 12, "suppli": [2, 34], "support": [1, 2, 3, 10, 12, 13, 15, 16, 17, 23, 28, 29, 34, 37, 38], "suppos": 30, "sure": [2, 6, 8, 10, 13, 14, 15, 17, 18, 23, 27, 28, 31, 34, 37, 38], "suspect": 31, "svc": [8, 13, 17, 18, 19, 26, 27], "switch": 30, "symlink": [1, 2, 38], "sync": [23, 27], "synchron": 17, "sysctl": [2, 13, 23], "system": [1, 2, 3, 14, 18, 29, 38], "system_auth": [6, 13, 17], "system_distribut": 17, "system_schema": [28, 29], "system_trac": 17, "systemconfig": 14, "systemsnapshottag": 2, "t": [1, 2, 3, 6, 10, 11, 12, 13, 14, 15, 17, 18, 27, 28, 30, 31, 34, 37, 38], "tab": 10, "tabl": [2, 6, 31], "table_prefix_": 2, "tabledescript": 6, "tablenam": 6, "tag": [2, 15, 18, 28, 29, 31, 38], "tailor": [20, 21], "taint": [1, 2, 3, 11, 14], "take": [2, 11, 13, 14, 27, 28, 29, 30, 34], "taken": [1, 2, 3, 12, 28, 29], "talk": [8, 12, 17, 30, 34], "target": [2, 17, 20, 28, 30, 38], "targetport": 2, "targetwwn": 2, "task": [2, 11, 13, 16, 23, 28], "tcp": [2, 8, 12, 15, 18, 21, 27], "td05v9evu3b8": 20, "team": 10, "tell": 10, "templat": [2, 3, 6, 13, 18, 19, 23, 38], "temporari": 2, "temporarili": 10, "tenant": 2, "term": [1, 2, 3], "termin": [2, 6], "test": [10, 17, 19, 31, 37], "text": 7, "than": [2, 3, 10, 12, 13, 18, 27, 34], "thei": [2, 3, 12, 13, 17, 23, 34], "them": [1, 2, 3, 7, 8, 10, 11, 12, 13, 14, 15, 18, 19, 20, 23, 30, 34, 38], "thi": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 30, 31, 33, 34, 37, 38], "thickprovis": 2, "thing": [2, 13], "thinprovis": 2, "third": [2, 3, 19], "those": [1, 2, 3, 11, 13, 14, 30], "thread": 13, "three": [2, 3, 10, 15, 17], "threshold": 2, "throttl": [13, 30], "through": [1, 2, 3, 8, 12, 13, 15, 20, 21, 23], "throughout": [20, 21, 23], "throughput": [6, 13], "ti": [2, 17, 27, 28], "tib": 2, "tier": 11, "tighter": 2, "time": [1, 2, 3, 6, 8, 10, 15, 17, 18, 27, 28, 31], "timeout": [14, 15, 17, 18, 19], "tip": 2, "tl": [2, 7, 19], "tlscafil": 17, "tlscertfil": 17, "tlskeyfil": 17, "tmp": 13, "tmpdir": 38, "todo": 2, "togeth": [2, 11, 14], "token": [2, 6, 23, 27, 34], "tokenawar": 17, "toler": [11, 23], "tolerationsecond": [1, 2, 3], "too": 2, "tool": [3, 10, 11, 19, 20, 21, 23, 34, 35], "top": 10, "topic": 16, "topologi": [2, 23], "topologykei": [1, 2, 3, 23], "topologyselectorterm": [1, 2, 3], "total": [2, 13], "tovers": 2, "trace": 29, "track": [2, 10, 13, 17], "traffic": [2, 12, 20, 21, 37], "transit": [1, 2, 3], "transport": 2, "treat": [1, 2, 3], "tree": 2, "tri": [11, 14], "trick": 11, "trigger": 31, "tripl": [1, 2, 3], "troubleshoot": 32, "true": [1, 2, 3, 4, 7, 8, 11, 13, 15, 17, 19, 23, 28, 38], "trustbundl": 2, "try": [1, 2, 3, 34], "tune": [1, 11, 14, 16, 31], "tunedcontain": 1, "tunednod": 1, "turn": [1, 6, 26, 29, 38], "tutori": 17, "tweak": [12, 13], "two": [2, 3, 10, 12, 15, 17, 18, 20, 21, 23, 28, 29, 30, 38], "type": [8, 11, 14, 15, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31], "typic": 2, "u": [7, 10, 11, 13, 14, 15, 17, 18, 20, 21, 23, 26, 27, 28, 29, 30, 35], "ubuntu": 31, "ubuntu_containerd": [14, 21], "udp": 21, "ui": 3, "uid": [2, 18], "un": [23, 27], "unbound": [2, 3], "unchang": [2, 3], "undefin": 2, "under": [1, 2, 15, 17, 26, 29], "underli": [2, 3, 29], "understand": [10, 18, 35], "understood": 23, "undesir": 23, "unencrypt": 7, "unfortun": 37, "unifi": 2, "uninstal": 15, "union": [1, 2, 3], "uniqu": [2, 13, 23], "unit": [2, 10], "univers": 16, "unknown": [1, 2, 3], "unless": [2, 7, 19, 34], "unlist": 2, "unmodifi": 8, "unnecessari": [7, 10], "unreach": 23, "unrecogn": [1, 2, 3, 4], "unrel": [2, 23], "unschedul": [17, 24], "unset": 2, "unspecifi": [2, 3], "unstructur": 3, "unsupport": 1, "unsupportedopt": 1, "untar": 38, "untardir": 38, "until": [2, 3, 13, 15, 18, 28, 29, 38], "unwind": 10, "up": [2, 6, 7, 8, 10, 12, 15, 16, 18, 19, 23, 27, 29, 30, 38], "updat": [1, 2, 3, 4, 8, 13, 15, 17, 19, 21, 38], "upgrad": [14, 15, 16, 18, 25, 31], "upgrade_image_in_pod_spec": 29, "upgradestrategi": 29, "upload": [2, 10], "uploadparallel": 2, "upon": [1, 2, 3, 12, 20, 21], "upsteam": [13, 15], "upstream": 2, "uri": 2, "url": [2, 15], "us": [1, 2, 3, 4, 5, 8, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 27, 28, 29, 30, 31, 34, 37, 38], "usag": [2, 13], "user": [2, 3, 6, 7, 10, 13, 14, 16, 17, 18, 19, 26, 28, 29, 30, 34, 37, 38], "user_nam": 34, "usercert": 7, "usercertfil": 17, "userguid": 11, "userkei": 7, "userkeyfil": 17, "usernam": [7, 13, 19], "usual": [8, 11, 12, 14, 19, 31], "utc": [17, 28], "utf": 2, "util": [4, 23], "uuid": [2, 18], "v": [7, 10, 34], "v1": [0, 5, 7, 12, 15, 17, 19, 23, 28, 30, 31], "v1alpha1": [0, 5, 18, 19, 30, 38], "v1alpha2": 31, "v1alpha5": 20, "v2": 10, "v3": 10, "v4": 7, "valid": [1, 2, 3, 7, 15, 17, 19, 29, 38], "validate_upgrad": 29, "validatingwebhookconfigur": 38, "validmastervers": 14, "valu": [1, 2, 3, 4, 12, 13, 14, 15, 18, 20, 21, 23, 29], "var": [2, 17], "var_nam": 2, "variabl": [2, 6, 7, 10, 23, 34], "variou": [12, 13], "ve": [10, 28], "vendor": 2, "verb": 18, "veri": [10, 15, 18, 34, 38], "verifi": [10, 13, 23, 27], "version": [1, 2, 3, 4, 12, 13, 14, 15, 16, 17, 19, 23, 25, 28, 30, 31, 38], "via": [12, 13, 15], "view": 34, "violat": [1, 2, 3], "virtual": [8, 21], "visibl": 27, "visit": [8, 35], "vjm4m": 15, "vmdk": 2, "volum": [3, 20, 21, 23, 34], "volumeattributesclass": [2, 3], "volumeattributesclassnam": [2, 3], "volumeclaimtempl": 19, "volumeid": 2, "volumemod": [2, 3], "volumenam": [2, 3], "volumenamespac": 2, "volumepath": 2, "volumesnapshot": [2, 3], "vsphere": 2, "vx": 31, "w": 19, "w25jw": 17, "wa": [1, 2, 3, 10, 13, 15, 17, 18, 20, 27, 28, 38], "wai": [2, 8, 13, 14, 17, 18, 19, 34], "wait": [2, 8, 10, 13, 15, 18, 23, 28, 29, 38], "walk": [13, 20, 21, 23], "want": [2, 10, 11, 12, 13, 14, 15, 17, 20, 21, 28, 38], "wasn": 17, "watch": 17, "we": [1, 2, 6, 10, 11, 12, 13, 14, 15, 17, 18, 19, 27, 28, 30, 31, 34, 37, 38], "web": [3, 14], "webhook": [13, 36, 38], "webinterfac": 19, "websit": 18, "week": 31, "weekli": 17, "weight": [1, 2, 3], "weightedpodaffinityterm": [1, 2, 3], "welcom": 18, "well": [2, 3, 10, 11, 13, 14, 17, 18, 19], "were": [3, 15], "west1": [14, 21], "wfjbw": 15, "what": [2, 3, 10, 12, 13, 15, 17, 18, 19, 29, 34, 35], "when": [1, 2, 3, 8, 10, 11, 12, 13, 14, 17, 18, 19, 21, 23, 25, 26, 28, 29, 30, 31, 34, 35, 37], "whenev": 10, "where": [1, 2, 3, 6, 10, 11, 14, 18, 28, 29, 37], "whether": [2, 3, 12, 15, 30, 34], "which": [1, 2, 3, 8, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24, 27, 28, 29, 30, 38], "whichev": 13, "while": [2, 3, 6, 13, 31], "who": 2, "whole": [18, 29], "whose": [1, 2, 3, 13], "why": 10, "wide": [2, 17], "wildcard": [1, 2, 3, 19], "window": 10, "within": [2, 12, 30, 34], "without": [3, 6, 10, 12, 14, 15, 19, 34], "won": [1, 11, 12, 30, 34], "word": [10, 23], "work": [2, 5, 7, 10, 11, 14, 15, 18, 20, 21, 23, 30, 31], "workaround": 37, "workdir": 34, "workload": [20, 21, 30], "workspac": 34, "world": 2, "worldwid": 2, "worth": 10, "would": [2, 10, 13, 17, 21, 27], "wouldn": 34, "write": [2, 6, 10, 13], "writecapacityunit": 6, "writeisol": [2, 13], "written": 2, "wrong": 34, "wwid": 2, "wwn": 2, "x": [1, 2, 3, 28, 31], "xarg": 38, "xf": [2, 11, 14, 23], "xqhkj0our8e6imdepm62hg": 17, "y": 31, "yaml": [2, 7, 11, 13, 14, 15, 17, 18, 19, 20, 23, 34, 38], "yanniszark": 14, "you": [2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 34, 37, 38], "your": [2, 6, 7, 8, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 27, 28, 29, 30, 33, 34, 37, 38], "your_password": 7, "your_usernam": 7, "yourself": 10, "yq": 34, "z": [7, 11, 14, 31, 34], "zero": [1, 2, 3, 13, 29], "zone": [1, 14, 16, 23]}, "titles": ["scylla.scylladb.com", "NodeConfig (scylla.scylladb.com/v1alpha1)", "ScyllaCluster (scylla.scylladb.com/v1)", "ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)", "ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)", "API Reference", "Using Alternator (DynamoDB)", "Using CQL", "Discovering ScyllaDB Nodes", "Using ScyllaDB APIs", "Contributing to Scylla Operator", "Deploying Scylla on EKS", "Exposing ScyllaCluster", "Deploying Scylla on a Kubernetes Cluster", "Deploying Scylla on GKE", "Deploying Scylla stack using Helm Charts", "Scylla Operator Documentation", "Deploying Scylla Manager on a Kubernetes Cluster", "Version migrations", "Monitoring", "Build multiple Amazon EKS clusters with inter-Kubernetes networking", "Build multiple GKE clusters with inter-Kubernetes networking", "Deploying multi-datacenter ScyllaDB clusters in Kubernetes", "Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters", "Automatic cleanup and replacement in case when k8s node is lost", "Node operations using Scylla Operator", "Maintenance mode", "Replacing a Scylla node", "Restore from backup", "Upgrading version of Scylla", "Performance tuning", "Releases", "Support", "Known issues", "Gathering data with must-gather", "Support overview", "Troubleshooting", "Troubleshooting installation issues", "Upgrade of Scylla Operator"], "titleterms": {"0": [18, 38], "1": 38, "2": 38, "3": [18, 38], "In": 12, "about": 35, "access": [11, 13, 14, 19], "add": 10, "admin": 14, "affin": 1, "agent": 13, "agentresourc": 2, "agentvolumemount": 2, "aka": 7, "altern": [2, 6, 13], "amazon": 20, "an": [11, 19], "annot": [2, 3], "api": [5, 9], "architectur": 17, "auth": 13, "authent": [3, 7], "author": 7, "autom": 31, "automat": 24, "avail": 31, "aw": 6, "awselasticblockstor": 2, "azuredisk": 2, "azurefil": 2, "backport": 31, "backup": [2, 28], "behind": 8, "benchmark": 13, "boot": 33, "boundari": 8, "branch": 10, "broadcast": 12, "broadcastopt": 2, "build": [10, 20, 21], "case": 24, "cassandra": 13, "cd": 31, "cephf": 2, "cert": [13, 15], "chart": 15, "ci": 31, "cinder": 2, "claim": [2, 3], "clean": [13, 17], "cleanup": [15, 24], "cli": 6, "client": [2, 12], "clone": 10, "cluster": [8, 11, 12, 13, 14, 17, 20, 21, 22, 23, 34, 35, 37], "clusterip": 12, "clustertrustbundl": 2, "cni": 37, "collect": 34, "com": [0, 1, 2, 3, 4], "commit": 10, "compon": 3, "condit": [1, 2, 3], "configmap": 2, "configur": [11, 13, 14, 20, 21], "connect": 19, "contain": 13, "context": 23, "contribut": 10, "control": 15, "cql": [2, 7], "cqlsh": 7, "creat": [10, 11, 13, 14, 20, 21], "credenti": 6, "csi": 2, "custom": [15, 37], "data": [34, 35], "databas": [11, 13, 14], "datacent": [2, 22, 23], "datasourc": [2, 3], "datasourceref": [2, 3], "dead": 27, "delet": [11, 14], "depend": 11, "deploi": [11, 13, 14, 15, 17, 19, 20, 21, 22, 23], "deploy": 12, "descript": [1, 2, 3, 4], "develop": 10, "devic": 1, "discov": 8, "discoveri": 8, "docker": 34, "document": 16, "doe": 33, "domain": 19, "download": 13, "downwardapi": 2, "dr": [11, 14, 15], "dynamodb": 6, "ek": [11, 20, 37], "embed": 7, "emptydir": 2, "endpoint": 8, "endpointsselector": 3, "engin": 14, "environ": [11, 14], "ephemer": 2, "everi": 34, "exampl": 12, "expos": [8, 12], "exposeopt": [2, 3], "extern": 23, "externalip": 19, "fc": 2, "fieldref": 2, "filesystem": 1, "firewal": 21, "first": [20, 21, 23], "flexvolum": 2, "flocker": 2, "fork": 10, "from": 28, "gather": [34, 35], "gcepersistentdisk": 2, "gener": 31, "genericupgrad": 2, "get": 35, "gitrepo": 2, "gke": [14, 21, 37], "glusterf": 2, "googl": 14, "grafana": [3, 19], "group": [5, 20], "haproxi": 19, "headless": 12, "helm": [15, 38], "histori": 10, "host": 13, "hostpath": 2, "i": 24, "imag": 15, "imagepullsecret": 2, "ingress": [2, 3, 19], "initi": [10, 13], "instal": [11, 15, 37], "inter": [20, 21], "interconnect": 23, "internet": 12, "iscsi": 2, "issu": [33, 35, 37], "item": 2, "k8": 24, "kernel": 13, "kind": 5, "known": 33, "kubectl": 38, "kubernet": [8, 13, 14, 17, 20, 21, 22, 23, 30, 31], "label": [2, 3], "labelselector": [1, 2, 3], "limit": [2, 3, 34], "loadbalanc": 12, "local": [11, 13, 14], "localdisksetup": 1, "localhost": 7, "loopdevic": 1, "lost": 24, "mainten": 26, "manag": [13, 15, 17, 19, 23, 33], "matchexpress": [1, 2, 3], "matchfield": [1, 2, 3], "matchlabel": [1, 2, 3], "matrix": 31, "messag": 10, "metadata": [1, 2, 3, 4], "migrat": 18, "minikub": 33, "mode": 26, "monitor": [13, 15, 19], "mount": 1, "multi": [12, 22, 23], "multipl": [20, 21, 23], "must": 34, "namespac": 34, "namespaceselector": [1, 2, 3], "network": [2, 13, 20, 21, 23], "nf": 2, "node": [2, 8, 11, 12, 14, 20, 21, 23, 24, 25, 27, 30], "nodeaffin": [1, 2, 3], "nodeconfig": 1, "nodeport": 19, "nodepublishsecretref": 2, "nodeselector": 1, "nodeselectorterm": [1, 2, 3], "nodeservic": 2, "nodestatus": 1, "onli": 12, "oper": [10, 11, 13, 14, 15, 16, 19, 20, 21, 25, 38], "operatormanagedopt": 2, "option": [2, 12], "out": 19, "overview": 35, "paramet": 13, "parti": 11, "particular": 34, "peer": 20, "perform": 30, "persistentvolumeclaim": 2, "photonpersistentdisk": 2, "placement": [1, 2, 3], "platform": 31, "podaffin": [1, 2, 3], "podaffinityterm": [1, 2, 3], "podantiaffin": [1, 2, 3], "podip": [2, 12, 23], "podman": 34, "podmetadata": 2, "polici": 31, "portworxvolum": 2, "prefac": 8, "prefer": [1, 2, 3], "preferredduringschedulingignoredduringexecut": [1, 2, 3], "prepar": [20, 21], "prerequisit": [10, 11, 13, 14, 15, 17, 19, 20, 21, 23, 34], "privat": 37, "procedur": 18, "project": [2, 10], "prometheu": [3, 19], "promot": 31, "provision": [11, 14], "pull": 10, "queri": 33, "quobyt": 2, "rack": 2, "raid": 1, "raid0": 1, "rbd": 2, "readinessg": 2, "refer": 5, "registr": 17, "releas": 31, "remot": [7, 10], "repair": 2, "replac": [24, 27], "repositori": 15, "request": [2, 3, 10], "requir": 19, "requiredduringschedulingignoredduringexecut": [1, 2, 3], "resolv": 19, "resourc": [2, 3, 15, 34], "resourcefieldref": 2, "restor": 28, "result": 15, "retriev": 23, "roll": 19, "rout": 20, "rule": 21, "run": [13, 20, 21, 34], "scale": 13, "scaleio": 2, "schedul": [17, 31], "schema": 28, "script": 11, "scylla": [0, 1, 2, 3, 4, 10, 11, 13, 14, 15, 16, 17, 23, 25, 27, 29, 33, 38], "scyllaclust": [2, 12, 13], "scylladb": [0, 1, 2, 3, 4, 8, 9, 11, 14, 20, 21, 22, 23], "scylladbmonitor": [3, 19, 23], "scyllaoperatorconfig": 4, "second": [20, 21, 23], "secret": 2, "secretref": 2, "secur": 20, "seed": 23, "selector": [2, 3], "servic": 12, "serviceaccounttoken": 2, "serviceclusterip": 12, "serviceloadbalanceringress": 12, "servingcertif": 2, "set": [11, 13, 14], "setup": [10, 11, 14], "sourc": 2, "spec": [1, 2, 3, 4], "specif": [1, 2, 3, 4], "stack": 15, "statu": [1, 2, 3, 4], "storag": [2, 3], "storageo": 2, "stress": 13, "submit": 10, "subnet": 21, "support": [31, 32, 35], "tabl": [20, 28], "task": 17, "templat": 12, "third": 11, "through": 19, "tl": [11, 14, 15], "token": 13, "toler": [1, 2, 3], "troubleshoot": [13, 17, 35, 36, 37], "truncat": 33, "tune": 30, "type": [1, 2, 3, 4, 12], "unresolv": 19, "up": [11, 13, 14, 17, 33], "updat": [10, 20], "upgrad": [2, 29, 38], "upstream": 10, "us": [6, 7, 9, 15, 19, 23, 25], "usermanagedopt": 2, "v0": [18, 38], "v1": [2, 18, 38], "v1alpha1": [1, 3, 4], "variabl": [11, 14], "variant": 19, "version": [18, 29], "via": 38, "volum": [2, 11, 14], "volumeattribut": 2, "volumeclaimtempl": [2, 3], "volumemount": 2, "vpc": [12, 20, 21], "vspherevolum": 2, "wait": 19, "walkthrough": [11, 14], "webhook": [15, 37], "webinterfac": 3, "when": 24, "work": 33, "your": [10, 35], "yourself": 14}}) \ No newline at end of file diff --git a/v1.12/sitemap.xml b/v1.12/sitemap.xml new file mode 100644 index 00000000000..84813850026 --- /dev/null +++ b/v1.12/sitemap.xml @@ -0,0 +1,2 @@ + +https://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/nodeconfigs.htmlhttps://operator.docs.scylladb.com/stable/exposing.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scyllaclusters.htmlhttps://operator.docs.scylladb.com/stable/generic.htmlhttps://operator.docs.scylladb.com/stable/multidc/multidc.htmlhttps://operator.docs.scylladb.com/stable/gke.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/automatic-cleanup.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/index.htmlhttps://operator.docs.scylladb.com/stable/helm.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/maintenance-mode.htmlhttps://operator.docs.scylladb.com/stable/index.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/replace-node.htmlhttps://operator.docs.scylladb.com/stable/api-reference/index.htmlhttps://operator.docs.scylladb.com/stable/clients/alternator.htmlhttps://operator.docs.scylladb.com/stable/manager.htmlhttps://operator.docs.scylladb.com/stable/clients/cql.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/restore.htmlhttps://operator.docs.scylladb.com/stable/migration.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/scylla-upgrade.htmlhttps://operator.docs.scylladb.com/stable/clients/discovery.htmlhttps://operator.docs.scylladb.com/stable/monitoring.htmlhttps://operator.docs.scylladb.com/stable/clients/index.htmlhttps://operator.docs.scylladb.com/stable/multidc/eks.htmlhttps://operator.docs.scylladb.com/stable/performance.htmlhttps://operator.docs.scylladb.com/stable/multidc/gke.htmlhttps://operator.docs.scylladb.com/stable/releases.htmlhttps://operator.docs.scylladb.com/stable/support/index.htmlhttps://operator.docs.scylladb.com/stable/contributing.htmlhttps://operator.docs.scylladb.com/stable/multidc/index.htmlhttps://operator.docs.scylladb.com/stable/eks.htmlhttps://operator.docs.scylladb.com/stable/support/known-issues.htmlhttps://operator.docs.scylladb.com/stable/support/must-gather.htmlhttps://operator.docs.scylladb.com/stable/support/overview.htmlhttps://operator.docs.scylladb.com/stable/support/troubleshooting/index.htmlhttps://operator.docs.scylladb.com/stable/support/troubleshooting/installation.htmlhttps://operator.docs.scylladb.com/stable/upgrade.htmlhttps://operator.docs.scylladb.com/stable/genindex.htmlhttps://operator.docs.scylladb.com/stable/404.htmlhttps://operator.docs.scylladb.com/stable/search.html \ No newline at end of file diff --git a/v1.12/support/index.html b/v1.12/support/index.html new file mode 100644 index 00000000000..be477a5e9f6 --- /dev/null +++ b/v1.12/support/index.html @@ -0,0 +1,606 @@ + + + + + + + + + + + + + Support | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Support

            + +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/support/known-issues.html b/v1.12/support/known-issues.html new file mode 100644 index 00000000000..2be9201b6fe --- /dev/null +++ b/v1.12/support/known-issues.html @@ -0,0 +1,629 @@ + + + + + + + + + + + + + Known issues | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Known issues

            +
            +

            Scylla Manager does not boot up on Minikube

            +

            If your Scylla Manager is failing to apply 8th migration (008_*), then apply fix for TRUNCATE queries.

            +
            +
            +

            TRUNCATE queries does not work on Minikube

            +

            The TRUNCATE queries requires hairpinning to be enabled. On minikube this is disabled by default.

            +

            To fix it execute the following command:

            +
            minikube ssh sudo ip link set docker0 promisc on
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/support/must-gather.html b/v1.12/support/must-gather.html new file mode 100644 index 00000000000..e3228eaed89 --- /dev/null +++ b/v1.12/support/must-gather.html @@ -0,0 +1,716 @@ + + + + + + + + + + + + + Gathering data with must-gather | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Gathering data with must-gather

            +

            must-gather is an embedded tool in Scylla Operator that helps collecting all the necessary info when something goes wrong.

            +

            The tool talks to the Kubernetes API, retrieves a predefined set of resources and saves them into a folder in your current directory. +By default, all collected Secrets are censored to avoid sending sensitive data. +That said, you can always review the archive before you attach it to an issue or your support request.

            +

            Given it needs to talk to the Kubernetes API, at the very least, you need to supply the --kubeconfig flag with a path to the kubeconfig file for your Kubernetes cluster, or set the KUBECONFIG environment variable.

            +
            +

            Running must-gather

            +

            There is more than one way to run must-gather. +Here are some examples of how you can run the tool.

            +
            +

            Prerequisites

            +

            All examples assume you have exported KUBECONFIG environment variable that points to a kubeconfig file on your machine. +If not, you can run this command to export the common default location. +Please make sure such a file exists.

            +
            export KUBECONFIG=~/.kube/config
            +ls -l "${KUBECONFIG}"
            +
            +
            +
            +

            Note

            +

            There can be slight deviations in the arguments for your container tool, depending on the container runtime, whether you use SELinux or similar factors.

            +

            As an example, the need for the Z option on volume mounts depends on whether you use SELinux and what context is applied on your file or directory. +If you get an error mentioning Error: lsetxattr <path>: operation not supported, try it without the Z option.

            +
            +

            Let’s also check whether your kubeconfig uses external authentication plugin. +You can determine that by running

            +
            kubectl config view --minify
            +
            +
            +

            and checking whether it uses an external exec plugin by looking for this pattern (containing the exec key)

            +
            users:
            +- name: <user_name>
            +  user:
            +    exec:
            +
            +
            +

            If not, you can skip the rest of this section.

            +

            In case your kubeconfig depends on external binaries, you have to take a few extra steps because the external binary won’t be available within our container to authenticate the requests.

            +

            Similarly to how Pods are run within Kubernetes, we’ll create a dedicated ServiceAccount for must-gather and use it to run the tool. +(When you are done using it, feel free to remove the Kubernetes resources created for that purpose.)

            +
            kubectl create namespace must-gather
            +kubectl -n must-gather create serviceaccount must-gather
            +kubectl create clusterrolebinding must-gather --clusterrole=cluster-admin --serviceaccount=must-gather:must-gather
            +export MUST_GATHER_TOKEN
            +MUST_GATHER_TOKEN=$( kubectl -n must-gather create token must-gather --duration=1h )
            +kubeconfig=$( mktemp )
            +# Create a copy of the existing kubeconfig and
            +# replace user authentication using yq, or by adjusting the fields manually.
            +kubectl config view --minify --raw -o yaml | yq -e '.users[0].user = {"token": env(MUST_GATHER_TOKEN)}' > "${kubeconfig}"
            +KUBECONFIG="${kubeconfig}"
            +
            +
            +
            +

            Note

            +

            If you don’t have yq installed, you can get it at https://github.com/mikefarah/yq/#install or you can replace the user authentication settings manually.

            +
            +
            +
            +

            Podman

            +
            podman run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro,Z" -v="$( pwd ):/workspace:Z" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig
            +
            +
            +
            +
            +

            Docker

            +
            docker run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro" -v="$( pwd ):/workspace" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig
            +
            +
            +
            +
            +
            +

            Limiting must-gather to a particular namespace

            +

            If you are running a large Kubernetes cluster with many ScyllaClusters, it may be useful to limit the collection of ScyllaClusters to a particular namespace. +Unless you hit scale issues, we advise not to use this mode, as sometimes the ScyllaClusters affect other collected resources, like the manager or they form a multi-datacenter.

            +
            scylla-operator must-gather --namespace="<namespace_with_broken_scyllacluster>"
            +
            +
            +
            +

            Note

            +

            The --namespace flag affects only ScyllaClusters. +Other resources related to the operator installation or cluster state will still be collected from other namespaces.

            +
            +
            +

            Collecting every resource in the cluster

            +

            By default, must-gather collects only a predefined subset of resources. +You can also request collecting every resource in the Kubernetes API, if the default set wouldn’t be enough to debug an issue.

            +
            scylla-operator must-gather --all-resources
            +
            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/support/overview.html b/v1.12/support/overview.html new file mode 100644 index 00000000000..bcd0b78044b --- /dev/null +++ b/v1.12/support/overview.html @@ -0,0 +1,631 @@ + + + + + + + + + + + + + Support overview | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Support overview

            +
            +

            Get support

            +

            ScyllaDB provides administrators with paid support, including Scylla Operator.

            +
            +
            +

            Troubleshooting issues

            +

            To learn more about what to do when issues arise, visit our dedicated troubleshooting section.

            +
            +
            +

            Gather data about your cluster

            +

            Scylla Operator contains an embedded tool called must-gather that can collect the required information for requesting support or reporting issues. +Support requests and bug reports are required to attach the must-gather archive to help us understand the issue.

            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/support/troubleshooting/index.html b/v1.12/support/troubleshooting/index.html new file mode 100644 index 00000000000..091d7472e18 --- /dev/null +++ b/v1.12/support/troubleshooting/index.html @@ -0,0 +1,612 @@ + + + + + + + + + + + + + Troubleshooting | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Troubleshooting

            + +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/support/troubleshooting/installation.html b/v1.12/support/troubleshooting/installation.html new file mode 100644 index 00000000000..5b705d70902 --- /dev/null +++ b/v1.12/support/troubleshooting/installation.html @@ -0,0 +1,667 @@ + + + + + + + + + + + + + Troubleshooting installation issues | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Troubleshooting installation issues

            +
            +

            Webhooks

            +

            Scylla Operator provides several custom API resources that use webhooks to function properly.

            +

            Unfortunately, it is often the case that user’s clusters have modified SDN, that doesn’t extend to the control plane, and Kubernetes apiserver is not able to reach the pods that serve the webhook traffic. +Another common case are firewall rules that block the webhook traffic.

            +
            +

            Note

            +

            To be called a Kubernetes cluster, clusters are required to pass Kubernetes conformance test suite. +This suite includes tests that require Kubernetes apiserver to be able to reach webhook services.

            +
            +
            +

            Note

            +

            Before filing an issue, please make sure your cluster webhook traffic can reach your webhook services, independently of Scylla Operator resources.

            +
            +
            +

            EKS

            +
            +

            Custom CNI

            +

            EKS is currently breaking Kubernetes webhooks when used with custom CNI networking.

            +
            +

            Note

            +

            We advise you to avoid using such setups and use a conformant Kubernetes cluster that supports webhooks.

            +
            +

            There are some workarounds where you can reconfigure the webhook to use Ingress or hostNetwork instead, but it’s beyond a standard configuration that we support and not specific to the Scylla Operator.

            +
            +
            +
            +

            GKE

            +
            +

            Private clusters

            +

            If you use GKE private clusters you need to manually configure the firewall to allow webhook traffic. +You can find more information on how to do that in GKE private clusters docs.

            +
            +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.12/upgrade.html b/v1.12/upgrade.html new file mode 100644 index 00000000000..e11995a187d --- /dev/null +++ b/v1.12/upgrade.html @@ -0,0 +1,820 @@ + + + + + + + + + + + + + Upgrade of Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + +
            + +
            + +
            +
            +
            +
            +
            + + +
            +

            Caution

            +

            + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

            +
            + + + +
            + +
            + +
            +

            Upgrade of Scylla Operator

            +

            This page describes Scylla Operator upgrade procedures.
            +There are two generic update procedures - via Helm and via kubectl. Before upgrading, please check this page to find out +if your target version requires additional upgrade steps.

            +
            +

            Upgrade via Helm

            +

            Helm doesn’t support managing CustomResourceDefinition resources (#5871, #7735)
            +These are only created on first install and never updated. In order to update them, users have to do it manually.

            +

            Replace <release_name> with the name of your Helm release for Scylla Operator and replace <version> with the version number you want to install:

            +
              +
            1. Make sure Helm chart repository is up-to-date:

              +
              helm repo add scylla-operator https://storage.googleapis.com/scylla-operator-charts/stable
              +helm repo update
              +
              +
              +
            2. +
            3. Update CRD resources. We recommend using --server-side flag for kubectl apply, if your version supports it.

              +
              tmpdir=$( mktemp -d ) \
              +  && helm pull scylla-operator/scylla-operator --version <version> --untar --untardir "${tmpdir}" \
              +  && find "${tmpdir}"/scylla-operator/crds/ -name '*.yaml' -printf '-f=%p ' \
              +  | xargs kubectl apply
              +
              +
              +
            4. +
            5. Update Scylla Operator

              +
              helm upgrade --version <version> <release_name> scylla-operator/scylla-operator
              +
              +
              +
            6. +
            +
            +
            +

            Upgrade via kubectl

            +

            Replace <version> with the version number you want to install:

            +
              +
            1. Checkout source code of version you want to use:

              +
              git checkout <version>
              +
              +
              +
            2. +
            3. Manifests use rolling minor version tag, you may want to pin it to specific version:

              +
              find deploy/operator -name "*.yaml" | xargs sed --follow-symlinks -i -E "s^docker.io/scylladb/scylla-operator:[0-9]+\.[0-9]+^docker.io/scylladb/scylla-operator:<version>^g"
              +
              +
              +
            4. +
            5. Update Scylla Operator. We recommend using --server-side flag for kubectl apply, if your version supports it.

              +
              kubectl apply -f deploy/operator
              +
              +
              +
            6. +
            +
            +
            +
            +

            v1.2.0 -> v1.3.0

            +

            Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure.

            +
              +
            1. Checkout source code of v1.3.0:

              +
              git checkout v1.3.0
              +
              +
              +
            2. +
            3. Update Scylla Operator from deploy directory:

              +
              kubectl -n scylla-operator apply -f deploy/operator
              +
              +
              +
            4. +
            5. Wait until Scylla Operator is up and running:

              +
              kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
              +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
              +
              +
              +
            6. +
            +
            +
            +

            v1.1.0 -> v1.2.0

            +

            1.2.0 release brought a lot of changes to the Scylla Operator deployment process. +To properly update Scylla Operator one must delete old objects and install updated ones.

            +

            Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure.

            +
              +
            1. Checkout source code of v1.2.0:

              +
              git checkout v1.2.0
              +
              +
              +
            2. +
            3. Remove old scylla operator namespace - in our case it’s called scylla-operator-system:

              +
              kubectl delete namespace scylla-operator-system --wait=true
              +
              +
              +
            4. +
            5. Remove old webhooks:

              +
              kubectl delete MutatingWebhookConfiguration scylla-operator-mutating-webhook-configuration
              +kubectl delete ValidatingWebhookConfiguration scylla-operator-validating-webhook-configuration
              +
              +
              +
            6. +
            7. Install Scylla Operator from deploy directory:

              +
              kubectl -n scylla-operator apply -f deploy/operator
              +
              +
              +
            8. +
            9. Wait until Scylla Operator is up and running:

              +
              kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
              +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
              +
              +
              +
            10. +
            +
            +
            +

            v1.0.0 -> v1.1.0

            +

            During this update we will change probes and image for Scylla Operator. +A new version brings an automation for upgrade of sidecar image, so a rolling restart of managed Scylla clusters is expected.

            +
              +
            1. Get name of StatefulSet managing Scylla Operator

              +
              kubectl --namespace scylla-operator-system get sts --selector="control-plane=controller-manager"
              +
              +NAME                                 READY   AGE
              +scylla-operator-controller-manager   1/1     95m
              +
              +
              +
            2. +
            3. Change probes and used container image by applying following patch:

              +
              spec:
              +  template:
              +    spec:
              +      containers:
              +      - name: manager
              +        image: docker.io/scylladb/scylla-operator:1.1.0
              +        livenessProbe:
              +          httpGet:
              +            path: /healthz
              +            port: 8080
              +            scheme: HTTP
              +        readinessProbe:
              +          $retainKeys:
              +          - httpGet
              +          httpGet:
              +            path: /readyz
              +            port: 8080
              +            scheme: HTTP
              +
              +
              +

              To apply above patch save it to file (operator-patch.yaml for example) and apply to Operator StatefulSet:

              +
              kubectl -n scylla-operator-system patch sts scylla-operator-controller-manager --patch "$(cat operator-patch.yaml)"
              +
              +
              +
            4. +
            +
            +
            +

            v0.3.0 -> v1.0.0

            +

            Note: There’s an experimental migration procedure available here.

            +

            v0.3.0 used a very common name as a CRD kind (Cluster). In v1.0.0 this issue was solved by using less common +kind which is easier to disambiguate. (ScyllaCluster). +This change is backward incompatible, so Scylla cluster must be turned off and recreated from scratch. +In case you need to preserve your data, refer to backup and restore guide.

            +
              +
            1. Get list of existing Scylla clusters

              +
              kubectl -n scylla get cluster.scylla.scylladb.com
              +
              +NAME             AGE
              +simple-cluster   30m
              +
              +
              +
            2. +
            3. Delete each one of them

              +
              kubectl -n scylla delete cluster.scylla.scylladb.com simple-cluster
              +
              +
              +
            4. +
            5. Make sure you’re on v0.3.0 branch

              +
              git checkout v0.3.0
              +
              +
              +
            6. +
            7. Delete existing CRD and Operator

              +
              kubectl delete -f examples/generic/operator.yaml
              +
              +
              +
            8. +
            9. Checkout v1.0.0 version

              +
              git checkout v1.0.0
              +
              +
              +
            10. +
            11. Install new CRD and Scylla Operator

              +
              kubectl apply -f deploy/operator.yaml
              +
              +
              +
            12. +
            13. Migrate your existing Scylla Cluster definition. Change apiVersion and kind from:

              +
              apiVersion: scylla.scylladb.com/v1alpha1
              +kind: Cluster
              +
              +
              +

              to:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +
              +
              +
            14. +
            15. Once your cluster definition is ready, use kubectl apply to install fresh Scylla cluster.

            16. +
            +
            +
            + + +
            + + + + + + + +
            + +
            + + + + +
            + + + + + + + \ No newline at end of file diff --git a/v1.13/.buildinfo b/v1.13/.buildinfo new file mode 100644 index 00000000000..22020b60257 --- /dev/null +++ b/v1.13/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 7275d4a791ffaad14d5f3fe79609d742 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/v1.13/.doctrees/api-reference/groups/scylla.scylladb.com.doctree b/v1.13/.doctrees/api-reference/groups/scylla.scylladb.com.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3f99cc874b27aa9bedd247208cef3ec63a18e84d GIT binary patch literal 4004 zcmb_f-)|hZ5wd)@# zg7JJlCTW_>lxk;tsZ7d@=Ei;J-uuSAaQAIrk>^^LDxuC^fkwi(NEOZ9m(C8oy5T~P z>-n3SCWgzroz6O}%QnAs_gUX|3^#%<4cS{dxe$Vk!%rHI6PY=$4(;oo)4AWq>y^HB zVRzkvU@yk8J=>4k&9e>Lt@nItuM3`2cUs28ZV_V?k4uBI`m=5DRQq#mCW2@UA>KPV z$--MNEsMoROp-H2r(UPDn}*E%kYl^-4jZt$Y=iAvH8EM?A05xAc=YgSLJs5UqiIY& z{FodaQ<@$pA0&qljt}X>M-LtzP3aLyKR){CqvHv-t|wv36H@RIR-!mqLMJmN%K~FR zL~5)w4*tuh*UA`p^?+R=%RF5IIAG7NV81dkiY|j+kNpZbu(yHuukpNt=UqJS;kje) zUv?t^5I#`6g6;mPJ-qD1i4U7Z=2Je??w{_|9$k87z#|c*HdKYlkALFiG|ptsjZ{3Z zmw)mTEy#i@0t1U9P&?o`c9qg87Xc6UJNA3_NA@YTy^PFLS{UY@UPa82qM`~SbS7l% z{$;z2rzx2A((cqoT0t)_vltPPx~Es{Rz)N&b8!LPEf918f60E!97<`v`Rxs@~p`T8?d$%-uBb~r};PS$mDFy`*Xmg z3jl{STPUijI;YM%&{}?3L9D*1fj9)3TghM%^SY|7iHsevP314)yPo8i?Gx#Ha|nB52!sA4_J!7AgI>D|^v z_P%|?D3WVIDnb`Z&Jc2;E_RGGM1)jR>r|Pi^Z;D7!=zNc>PBsi9W;_qYi&$P`*g7^Rtxjz^l~{qE{uM3s^% zVkA!mQas#_vn9wiy8-DXE1k-Uv-@i!YbMx#>@XNzY@nHXcXeQGroG`0fI!o%E)34@ z2$IiAGNXVyMZUX+vS)88Gy^I{aVZccSjKl0r?wl)tA~T95fbB+&mHU9At{ZF79x9% zBer(ZGAp7s{(x#F;0QgH6X6Z+R+1|Ez3&&ILenyp5%Ms!ZqRulHI0^MRw0s@=$vcc zICxu8$~B3FKZx&RAlhtr0gerD7*x%?A{oYZYPG0o5A2)%4T~V#S45<_x0b@++o&7x zQ}{%D?s;+{Z1NeRQ1FZ!_oo~0+F?P9sO=a1VFq3j6YSkH!~TL9Q|Ob)1Y$idE)0|T zSgP5?+1p;T+5j{oLo?KEQ2p18qT0YBG+uo}$O9)mm z4LR+l-JtoozpU6^$R!{zLXqbw2RTe+h?-I4CRF*o^@gm<-Rvv&1#_rO_U6iXxXAcR z54r>PmAwiI;Ua@orp=J;dTQZD^a2gN7lwECJ$t2X-wVt|ft|l_?E9CRy^Y^jY@qGV zvJ

            I|)Z9_&yO9gT!;S(F@yOmIOT<3Qo^rDcZQGRNq(=w%Yv_i~VNRYSPUW`^dS< z_#}UO-Bvw1zO hBHnJrl`FUF&K{vN^IqKY7a&|Bun?*r?vZ6Y{x42F6jT5J literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/nodeconfigs.doctree b/v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/nodeconfigs.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2f582b1c5794a2bec8e5810c40c6d5206a6527ab GIT binary patch literal 398773 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 z zdbM*;b0*Mf-+{ps{nTcI6-!Xam8mm)t8Qq_+XyxD)gU7cI8PsLpQ~3JKBZE4Qq;

            s!9#Cy%U2zIp)#VA| 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 z zAoq|AIh+Zsj@*P1g6$tC2@A;4J2`R<;}42@yG*LoFaj@8rleh|4A(=aLpd`yWS{LbZRKxvh@XHX>FysawE` z-pR3Q3YSgSL2d^bayXA%9l2Q|ayZ3YK#tzYk!ui_&DO!{AQ@ITv0WXjeMPKr&bxpW zy^~|r6fR5YAZN&s!)f;F$hC>c;S78MIeI5Yu0dROvJO@!%CN$D|LRzMS;Pvr1PEBs zJ2_TO;j(Y(Aooofa<~gY9l29PM(BiA4-ht%KEM8CJNdMjfk% zM67VXjer%slVjBsE}Nx;+)NpAxWz{uxm6-^xcf&yj^4?UYY>+mse{!*8CJOGNFA#u zMXYc;l7JPxlVjBsE-UCDmzN=jJD}8&`;&+qZjKU=qjz%T8pLJi=wNl03@hA{rH<9> zB38ItOTdcW$+2n*m))R)+_f^~aD$jSawA3xR$1ITCLl-eR}mHxMNKn ztMx^!a5I~L6}^*V)f6s!SqHfnWysh^8u%dTzteV1QQ*@BqN`@Tn{8mTqK@mCJ6fPh~@8rle zh|BiU!Di9jiw~tZ5(ssSe;dk6}^*V)f6uKu?})Sk|FnTB;-C8k$aP}3jLGb$&qUim%XBc z)o)~2y^@T=W$TU-{3IinRAEK$irvcDxgGCeB2-ZA~w$-{$>(vvDjAJWrp7P6V#(nQH9beg5a6r(%ST1@t2vxf60 zwWKwf?`qBEQ)V)s>&SE#TbIo+vfXK8Mr)T@GEzp#n3Bj86S;gTQ7}8qf|*O2spq){%uG9rXJG|iG320N1vJ!1S=!6<}x$eKWBJl zM2Tqcx6Y@kRz?-`t@qFE|;hXZq&Ixv^S1x%X;FopPmY3;~l&0G&Z6QZ}FOPMOOxNmBySGwL8c85c<3&;Y4x5ICtTU(S^z_`IQx&uekvbC(7_ z*+IakU}RDfct$K!9;=4ar(rs!@>unp20Viyh!~z$ggb=`qRHwYZ5|g$?`wc`{9y5r z4N|L;K-yg$tX*RQ>+p@e`^X}wKSmsAb!UyF*=6QR;T$wy9h5J|1c zWOA8OPdGYRb#yXup>wDXI?D$K9iD8cLG?9ts7{Lus*Da)*EayF)^47E70gtsT*%}) zi^;T^D$|6hGt-&NdymZ(X0lw$H@_g@wPibobe>`zy$UB%a!LWBk9vP<}8Q*M+ez^haR%5Y81_^nJncCC9@#2 z!Aw!ddaJmw-o(4dB7!!*YE8g8qR^hD4*txzz~4y+{2#A5;H!x4#p<{(hzs{G>fpX? zkZ|wLr_`n+-Rekn#f4N(2dTjtYwXC-3T>3qExAYI-+Fx zjXL(fjtl$0>R>-uo@3EY6A$(((&c@1*x!u{_6@yr^CHYlV_E&?t>^NVF0nB&SIVdv z#K-k0&m}jaPh*)&Zl;6QO@kt0C+iwcC}s|&goxK$NuQJus>c0`@ytH4I1_lHIEhQjZu!PF}|VG7=vk( z8sx@MQAI9PZ-?{ZYKOaY+Tn>cL;SbasN~^7>1K8OZ;T87M|JRjX-&mnT`*nr*YU&n zzm?c>`j~plJQ`QayrR=G&#&1nqavk#tKJqb#nl!c>9oa-4Qh*MbJcJW^lx=={}~s! z8+zxFM3{{ZrmagHilc!WMFrjDc;%_=c=|M!sq8K~P&Z2b9|+Xyf}Q30bam`^hzt99 zI@k}Utt&1zx3O0d-G`{deqda%=XGGeZ%B&nsQTm*b-3H(f_tS7+>O%bBTASW^*y4L zIZ++|p1AP8L-g+m&}$^W_vc@NvE1sHoyU7wj}7Ei(});OQ!#SS|JRv literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaclusters.doctree b/v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaclusters.doctree new file mode 100644 index 0000000000000000000000000000000000000000..157af51b9f5ab04834884726f7d0a2bc8fa6eaa8 GIT binary patch literal 1217460 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

            f9Cnk5$A1r4!5ETT=0dfSvGSDQRN<-;J=h~9& zAc*^g!%)T#t}=;=MBpKS&Rv*8RjsDd!(fkN2AH=IfB}OG2(kLW=KqDU^FA0NZXT*L4m(l*{MnW+?Z=uIrS+ zb-I=aXB5i4hS4}K77=;d?^ah}eFXLki34j9%Kfe@=tBtlgSMb6wIw2yd$qx=Je12h zGpSJS4nvhSV5ifk?nGyg*u=g9K#6k zPB7XqCSwNhz!XSxW<(ZY-JxvWuZ%%2ff26?w8w**%F#m+Ug$934Z`sZ8QG2RRBEMC zv5eJ&2gfKFKxZn82%y)U&DRGpvp#R8zqxu4cihzOk5{Oxz52^Y~bZxrw3$UBSk1-8~zPc5&uNWP+oRx+Ni;urjOcl`?<1k z7FqZ;wk&KUqW-|Pr^^MS?eevP5HR#_h3V0*nC1}EMdp|;pjTt1%Z}LsM6Ud@09XF3 zKz_3;$Qu#llM@GdU!X2ZmX#&!JCVxI_m(X5swoJ(RXzMwp*8|loCHFKZ!2_buIT0w z-LfsZo#sX8Jdnz)gsUooAnJj_`3hH@M-b=B&2fGgy&BJzgT-RrPsvTRqxe~Y{ApK^ z3kdQj5(l{|=-kMfi~ONfEe}Z@aPSPJ@^JmA2Vd+TEoZC#tUhQX%~r=7h7Q%S$f$+E}B zLzWV>VuPwo)LsiOv}$_;Qv^}h5s6B0K+N_AYgG>$oeV;s6u3q^0_RSu;1_F^{Fpo` zwoc#_H=gRcm^EC?Q*0O0V(&%2%F~9Jv!eB@VQE8~LtF-tX+y$A8J;$DO7da0yuX>L z9Y*1{Rf&b$;Ja+&=wY`}TxdmtkmR1j45~{9eBGxgU$dmAezyQ0|FZY&H z>5b42k#w+1FT`+iJHhH{5j4YKPJN{!QUbv+03AXv_73SfA zHu%sq5t2#yq0toZDwT_yz}r+T_?dng{Hl@r3GOlaoBgymn8FxWDPP-=ElAnly$|9V zUNLzRIKJRNRs;B3k{kvE)V-8v<9-*!Yz}Xk*S-xf$60F2JBPP^WrGxP#glRbamBe! zToD`IdQQ$@Nyzh%kmCDY3U5uhzy0u*>l}J`i_g)`@Yeo-x^a|VXZVY8oqC9HM&Ye} z8I9WtZyn_d>?H{75s3q95#Bn<74&x?=xc33SL#7Tcx$G?tUSEMIWw{FR;HYVDzD<~ z-GTq84%PEq$yG;kz109Q9^QHjy&7xo#fG=8b_MuS1o+Ct0X~$GRK&IlsS&uS!tSf^ z-+-&H297=~s#_ffM>RXgx%EY5Z?#Q@qK_H5hqMzx%Stt0AGdx|1xoaZ`~>)vTGpYiZ_1M1HKu*V%Er>3_Pi$h(n6{%*@6o!-MmR#mY`QMrUGDk@8< zkIx@kEYW)aRIa9CiQ*{~OWcu<)(R!=i(?Y%!aWn_igNu%6iV!ep|*t*PfgZ`AiXVu z#=#nhmm}Zp8G~b>1|p5w-CzvY8g`>s3|6W+{71F9j)!?#FKa}L?e`#(%M%B9 zA?Lits0OJAtQO&LF%J?D(l*N2DSKoDJ-l+v5ah2aA8sOZDN=24CDk~RDq~BkPRk(` z-{#tcdZ2K=&=uz^5a;vFaXyz`jpb(<;N~#PpB2a-bOrfJ1o{1mgWMwKtoL>AdceEG zA6JX1Je4?|xvk0QRQ890XZTgfe?N@DGH`~|nC}~m z;b-`F=+#)67whTV@tclk_|=Hy6c`<)j3JU%01xa2{%pyBjR$$dV<0;u^FZ4`O!~n~ zChWH!Q&Qk`FH}?60wuBf(15234jahq0e1nECIzoPjw+=plrn^)nHQg%LsSwTdosufRK6W-BkK5ef)QR)pLmxK0BlHsGoZdkN|yLM{^fH!D;+oh5jiP9z&W}A^S^Is++PmAbw#E4o{VET0GpA+iSHr^GlS2&F$S}7ERfLDR zGaU?b3j@d~-2Emc!`mx-fkrM9-@U?2MH$6wT3mw*uSgOW_BLp}7l?tKt72ekF?;Gg z(YH+%pyRnKAsVHHzfEJk4A1fUIz_xB!r+pEvElGDWH>wnn<-ZZG-Nm&abi!R!{G;; zT=SIvEWuR5W_28`WJumdhEVV^D@Rc9@!I6V<7dg44T6#c%NcS6!SdmzKxiUXE;pwV znM+ar9TIi}Z1vFIb-0NI=FPEe^L}=LmHe>U$Ih|r>ur#tCHx;bf|l^3O-mT7;oTx< zuq5QikdWg0!9oK=oje+tMg%sJ(cy54l5dF}4h#aJ+wW2;+9{L1WwBHAqyAtHZs_r(NmC1+4V%Lx1r)3JWq2!3GC*8MEPrYH+a?o9=-F8*HMraP0|P-LpNI zDKp!vWiv+*J$oR?vv(}GTJYzW0b1wwe9@#yv(6pIr1S0TE0RS_EP2w?D%SaJ0G-y7 zlp;}3fO`AoS;dMrC2e!`KZE7<_NsYw-qMdW$C^>?xi+huEF07R^8(1A= z>8zF`2$uVsESoTy%w}`B z$H`uvfmhO@<^x(v;w)%*rX=#KzHMk|19B;0?)Xu~9`m(#25ThDV{0sb)p+?P1O zXKJ*@q%Yk%<-dXkKwwK}ycDET`PCFY^?Kh(^=a@<3m)s@O}rE)j`+%Ou?Ah}A&m>_%m zFdufs{4vDbH^+RCp%W+Oh0}>E>f%QQ@LOF0{s{v7mc#*G%QpbhRa~8hWuI1Y+zFo zEPs?E2$o+p*|FbjB3z?eOv>vzY_tnD@j8?8aXy0qpEf+TWNOfIn@+9yx-x;nPjqFxH)Pn4H02 z>+4qFGe}7B{Vutaj-|EE4Z?LB5y>0gfi&H{Fs!#Xv_abk{_G2X_JcpO){p1%@b0qd z$S*1Q7l7vplvL5^j{7S*8@Y19EhED0j6ICIWFq_38SU(Dyj-M>p zV2RIy>3i5xNgNDIAX>qH)t~V<^;a^fxwAbyo6zHw9b%oC6ig5RnK>6aFRjjwWb>(V zevEyTPodt!D2SL4L76#crq=_{aON~zLxzmH>h5hNz7hbw^@di`<96gMB|Q*-3+eF>WX_vuOzV$n(u3`$PD>9} zU5#%?^*~9GUl?vB1`Hc8y# z0i6+Q0++ktC7<-?#@?{OvQlPBRZ${NNnf)g2nTvVTlBvs52~|}y6M;4ge&DJG8lJy z06QM7sThO$Ld(hs%7^mm#rZptWJDz>rvr1#K@^(qE3GzrvPu<$Q$!jXbyWO9SokG6Fs_lPV+FDU*eL z3%J}0mqmM`Jd*jYLfaFCcAUA;j;2>*!GKse@eEgjUx5UlmNda@#=z1cMNOF;a0uAt zu%3F(ayg5KtL#!(zA$=_WvRluHRiia>F=M??|G0Vn$kZ7yTamud{$(Oc;ZHNN*9#F zh81){gxAA7Ea+t^Jgtmmt9~z@NX#-s!LFzSK}&Nl2yf!k>hN0qqu^z+cQ^P&+Eyd| zo$<-ZV$0@h`uo9&VDiA<;Ftd>nW#B-p6if(B@Wr5?T|GxOmnGMr=;@)<;e@vqCZl6 zzulGZS0UeTHRt;Z#!TG87i(KS>PqllNbrq`6Z~=|X<=DbEk8vFy~SUZ{J-YP&fdt* zS8Uno^tb~on}vx&0P2C_`B7J%_d%W?Hs|>vdbR!a>>sWK?~4TgHF1Jx3n_~chxgw= z_&$`X4)I&`U`3#U16WQ}=q{Av++OK$(hnVd(EU&(6QH%B56X0CF>a$@<&Y|K*~hg8o@es@6kmSTzDwPgS5`duQFO6Q9*#RS(sy1P}(R8l1i! zKmm4ED1cI3>~1b_yU<3D=1v0zYGA4%JVv9HCg}qIdrNV ziz%uD^4kN;7tUL-cwv8mZFk24-Pg)Lwm}%-fuW>n(BSK&jF?m#Gl(-piJ2`Ez=Km; zHS{hH5Y`%wQQ5&aLK`hRh`i~bWf*9nRqISa8z;t$-j0Et=7-Y<=D@+q%sKCw`jD|S zfPWhN@0TrT@E_7N_+$4>-70%9m~c8Sbtno_e7{Rz=Ut@h_V!G<_MwBFypL{zolm;z z=`hsO6C}9Svr9{dZ(%Zyi}@l^`xjh^oq@zYmpHK&VCS9>I{L^nk@P*FwV{v9=))%JtK)vg53 zLV{N$PVf~{svM6&iRw|eBrFEOybx96{8xi3op1xEcxH_b1 z^iNI}G*sIsN^?dE0ogY?BgZ*7BhBOk_3d}0#`kc5`?Vbfi6 zQ)c5h%Tb%wAJeQhn;1scWES=6giwwxr)opO60l#CkgkJ%jcYJ;Pht-8daXIH?_vzZ ztx&P3%=3P`?`l)|{(uDk1E%s10wlMdU1};n zh^kgo8M(HY%5!nFe1qDw{+KqE+3@c4R8|Gd5f#nP8Vd{Q*UZoq!E54*i;unG(?Ge}Iu02$0-*-YX+B9fzJWGRU=skvSSi@2jaz z>yK$hhK*heBNP29N9bAf(fZXeg#M0@;3g8G7nnmhLVrf$2t5LV%V1?T0_c||1<>PH z$=gDu@$2u7MI|ft!|-{7>+b@<)gcPFQi|)TPl+je7U1bU5}HMzOKghc6)BlaX3r9adFr5B?|c+FOAlym(?Akx^mCTQ>?*@B?K zP~{f$r|tuFOe)wAqudU$o6U-T<*75FB+#U(@O*y<+8%N0C0 zObyTv{3yHSrCiBw04mmDcks1!SlNta*Kk}3v@eaY&s2R@J%l{LE#^cQI`8nC{CX9Z zces3f$H-Ckq5gle z1sUo^K|>v1JpYL7!C-OFL&lR(kmCDY$|wDi24j2qB-cLld=l@YoB5=d|JcHz(DigG z>glD>+AvPum0pbv?IZI^y{^PAM`EWYPOL>fX}&AzE0FZ#Y)Ox{TRfjM(V$nJPvRpp zseDo-fSh*~)k+jq)_^H~{@x(H8apIo0pv?u30{Q+Z%&-xTL{P%XU&Uk3gU7G^w;{a z2p)^f1>~FZs+$V=Y;iqQvtzY9IHZFm^keBQ`~#lNhb_Rh%Tu$&d{mies&t=j&Hs8& zK#Ps|QhTlw$5z|xM0qJ63Xp2zf8Bt?OyNq%t?s78xHqeDq`sTlwEh@&-!Qd|tWcVI zb<0EHfs(?x9ZSC`A$<$_H4c^amF+a-^*(c6?_mtIorikNmEbi<@FR&6T%zMT@$|A2 z!DKAMq}1wCei+X3(J|-Alaq>7r5%`U^kF#D3y<{D0%dJ7|1%)Vt#~rO5FoYn{8GWx zc0XyD%*d_9WIi3o%inCri^XJ)ewBm7%%y1kY8XiTJ95+;B@_t~i$EeABt9*1kT_dS zSF=V4@nQvdwpYSUpVZ5@&qVbq#>3!YgUd<-ap)oyhbooz)DMn^htb!-MSV0^0L^LW zuqpgWjq9tFtP%i+B~ft|+{a67_!O9LxiqjKv0>zgJ&DGKdknB)ra|r_m^V;M-AW+O zc&VcR|5Vw60{qt|hYI_$XM@0>Xjv;;5G|=Du;G&=pawh`j+j_6f5oD1UboRIg-XPQ zlyzU22-Q^AjU!gT$1eA2RHcN&pv3_JE!uDh$endNHDF&KAgIxz>z5s!{=Q4(D6CmM>p}g$6fVQKt26}1lM|YX%XAcnT+G2m`Hr?8CPP9 zNbKJeC)NU=+x4dwOQ=2{N=W)dXl;mtGC3`YAkYRP$#z3mE`k~x?t&CC_ftUG9_;WZ^Q861f-hh zS1P3n>^)-pvNaJ7R!Rk^qbk60l~50jg<&XTUS=iGqk*z}*1rSVxHX1;Hd{Tu`2d_H{$}-w!Ya1grqQ!Z^*5X8W z&!dJm+@DEVIJY&MfrNxGyF4^={W`=&@6jLbGvE5l@pzrQs~0Y+*QG zOBMana24+;D*7Y5Z`jYv-#LmOs8=pkYN`A&bC2Si&G1;gV^}!=Y)4_cLs?lYT3RS! zEy59q5NC)J>gxYR9I0`hb{#ga$6<4>?Xc>Tn89XTcM_XdVms8^5n~^l4X?-+(ONV#{); zN8>Jy=1K@A_*n7(eOLZ3ME<{H&i@1SYWrjKNmqh5Bf(E3PVhO65*Nc&tp+$k!Ig&X z46q*nOaJ+LQLChiRa_z(cO6avfGPz`%oMMumM%|~Ye72U@4z9Y{7ZOLDgTxl7caPq z`63kabGBmc^t{+UKdh`Y{;W9N|7VRJe6$ax`CS(yr~5!_L#+B$^lI!3kk?D{6t?_b zkvz+li{>$Lr|T*m1c_s!~a9@_KNSQ*qr?xwHfxD+b=^%D`pF zz(t8Oa4na)G|`0k^HI8te0A>>*b@hrc7Qw1UdDI*EV$q;{JNp@Sw9%_z?TZMzq8$g*x~U8a1l$I?3_Y1aSfCE{tVa89UB!4git*RBV(j#2FV3y_gLBWV z`hY&bO+SN2C0YweE^5E*{Frk|MY)f@MBTcS+xh3$vroJ=$KWv81XVcl*=$q-!BdJPp z^v$^ku>Dyb6ES`ralM<6uYIX@=?WZmJH;>Cu7bM~1-H~z zaGkbE6PZAn2PTYq<3q)J#g+HBBJU-0-t+Wo{3vJcupnDxRTaT+aV7X|NbqHe6MVHU zZ5-$g!5UKn^MKjU-SvRCQtFgCKj5m)t5BWS+p5!I?nS@Kw~4UIw$`tPZ4>!?Na0-M zHW5+JDi-V9ueVnYKt0u&Z6eC;FxoJ3np%|;*f7$^mJYEX^OJ?%fht$R2-!L^efnrh zFIlX!ZFec|u?$Us4gw|8zABMcYV4^W7`=6bJhRc<(V$9g--!9{i28CRuLL%YFmmE{ zjJ#Iv82L5Ko7@Z_UhWt{PS}&^9V3UC?if+yN7!^GrbFu}|a!pf7e3G6G2Rf7NQt4sR!;W6&wK#i)9Gdqy92S_lJ7@fAx{@tZ zp=iSd4(Rn7HG!S?I2>%l6e;vT*@6^$U6Vp%-SwHW2ZKSR*C$+$f)wBH(jJF}KrDP} zEmSLs`+kRZq;aQeUAlbDKeUAh0qnmpi@~(Qi z0riw6!8L~0x|p;&l0hcpxDwjPJr0++5_=;OyE$=UE%rFP$CdPtAnEV6C0#A{!I6t9 z;nhlMgI@U_2R<^J_c%C}dXL507O`-$Uz7>H$5m1{p``9K;E5v>U!_;ukJ*0aO7KUK z;GZN;@Qsv1=H;!3HdUaK)B3~^+yHeKlq%~Xh0}-iO?{=cIjB0S4xj?70|(MS zbb#1gZ(b(D6B>}Y9vp^4OtOAH16VBhf~)-s9+}(gK~I@pZ#bJdmeh}@+a3^0u7>RW zIUwuC0?H*O1(fEDi4mG~w`#0E8(^okB~_)C|Hc6WlXzc-PohMq)N+=i9uze};YJ$~ z4PyHk4&*-)A+0&k)&e&3qPyod>PrT_@@SRWsMfuPMXSe$bRQY53eO}wT3wZRv|2R0 zmF{E}akUqr!Uy#O4L*UYRZNFPr85G)ZAeraaB8npPOVZ`Prc6|D%E1=+)p6v(Bf0u z2n^%z4&&`{G3(VbW3kYl`V*tPd9}!Zvx@yS3P|d_4F_auJ!EF{I!RejN6Lc|KUpP z9Z2k76DQUpcAxYMiv>`h4_`ylCqV0{0)i$vE0-wDZgIc(#|8r7u{$4`&9QrrTkuZj zLUC^*cmdTcS5e)GqMBhYs%i9U`@#ESSAy?Cf=^1E;Poh7RsfF0gm7wpr3M=p)^4K0 zL3B*25SK%BtiHUrvuLBoG1KLvnop4l2yv_PDe?gVTU$NlQxs9RD$Yh8b>ARtZfZWo z-8ei_)TZ^vw5iX=v(eP=qh6inu2K2oJE4DLe_uCu_aM(#ne%)lV6iBtOxRFVLk4}VR;9&Y5g(Hda#+)Y3s2gTY3bNAbwS$+tbE^ zLfSQJc^~ro2XlU(qF38r{l`7(XzIR!1doN*hMt`v!LMTy78Qkf_8>y+xQ}2FoG%3X z2;giSk3;(%at7unK!Y~B_X~)4tDD^i2MBCE;neKzLCve#jXYY+?r-AY*_+z5{+Kqq z+2FC5-O;adxSWLrtzQj;%Rd(qbwtAD0t^U;%hx3im&5gpRoIjR2`{!EV17Q8Ef|$} zot+ebu1H`T`O`>(4yoUd>Q{mZgVYZXKu#f$dH`$soWh!vN_*-DL__N60_2VarD`y` zDL`D;?%7MA$O}n{gUfG`aCsGGPi{I8F5zqrb!u#|9?;RU|lshon6ix7_>5}Ol_dN?*Wm^?N&RH~JV%VbOs_ZzG?g66a{5!$P5 zEfWPQ~&&qGexlV})kwh4?EGV+A;>fBx#n>j$d z@uEU8`r)z##pu6H4#Zm|dp3yOiI&&M7DUVMoA81%n>LLTw-L8nMgpE+D%L7+b1fWy zrN)DYlgvxiYN_-P6tdts7zI3}2YxOUJ4CJUg3V%Qw zB4nyNRSZlrzl=UGMt-l%h%=Z}wqc3}M?tor!SQs{;D`m2-XMFh6y%>#kmCDY0+Zeb z#J0N;)U^*COyYfX6HL0@RZq{Lo^B(-8ASuPG8xBt#*tvsw_S;S7Kyz-abhjNq+hv` z{x2l`aa+=r%MljTaWLs-gI+n9#7AaQU{dTwD3i8WtgX5o{x^zi0<<>7ILFbe?ZZf~ zb|v^ZB=~^D3I1I4Ehvy@qvaToAUOISi_ua|H>L1PuT&W-E!HJifKD!7m`erNjw74y7y5U-*g61M^(5YwdRn&9vW< z(&}4Wg*0Xo2Ab1 zqWr|hqEJ}+plm^5=?;^k`Lb}&pOiftgsVi$6S4)-G9GBj^>3$65~`n$dwA6BY(!4P z-*`gK4Jhg07nGL%A^9|rjP8l=gl0fUsR4TAfY!%P$}I#rpS)eP@*@MuU4Lm2 zUXZ#c$`+*ViB0N`MMUn4BI4SIj)?F+x`~Laa@EtzP*2NA za7Kv8QYPa#_cd}L=Us_?ITD*qoLCE!dx>>68uUe_|C)${_Nn2m7B^9mB&~hqg`%_=d~j|LC8oa zfDv~<Qd{3^v#9{woU~Nq7AAMv`}d)`k$QA<64x0Sdn~2MXLutfs{4!M_cRRI)XH zYQHBdQo=U1%0ITcL`1|kUHhJz89lBd-v>p0kgdo&J~J3Lppe4x@`2*{L|2~oMV=R$ z^L#wL+WxwBjw`|YA;D)QPH?{vDj@0E^M-xI+7(s^yJ>hB%0o>tyltB)jcsrh!2T$J zs;vMlMrrh`90_EOTkBWDkibJj3~(e8D8jYyBC9i#M*=G)JfYLi7=eJND%`3~5Kw$p z$NvsMH7fyx;D3i1oM<12`X{QWU#YIA-W!AeHG-76I|0nlkUtyvisPL1GnMR;!2B8s zj6?f&n3Owh?3ghZjOM-q(NdC$*4AGn!|9 z(0xF^Q`Ee6u5WtIhAC3)v$6##_RuE9#-e!>o^bSzdr^?$`&~lw_6B0xMe|(y(9t~J zM>o;D<6ZSM1NC$)3C;-3JBrCTF7S#(^G4zif1zXaU4-kRo z9bwQbNAvi|ObX3|y~1>_>*7*IZkKC#rY!Qcu7aC|f_s+%iyYT`C%qaQ|Hzx9`N}VU zS0vx+O7d(Z`R1faUh@@52WbNLQgD}zPC0DWyWwcJry27%#St7g=`hirH3PR ziXJS>DXdB+91suO<2`AWQLvV$YpJ}qA(bD74*lAQ?-#vk@E@(<(`L_}jYsvQplLc= zXnv92I(+){e(&^oi%;=V>9k)4qSnGaz`SR21oXz>9GtXb=@M`t&Ku5x7tz=?^D`uS za5p@>ldhF2SRH}~_JjLDoB!}oL6k8%es?%V*aEo?1PjQW`EZ=LU%Y>hXr-G#s!D zWoGQ|V@Wy^A*#N%>G3~ZkIF=R!_`F0K@;(HTN7cl99%`cI$^wJej_e(=99e-SB4P% zJXSdK?9e-Le~Th*x)WDCg$;G%czdnv@Q;ydu)7iWcQHz#ZKmNj;ywdSZEwUqH`zE_ z#A!;%1X*ae;vRt`?>8|_;`UZ;ODwhdl|dW620u=(#;(D;q$-uvCa;HGyE0XTg~7*a zy1nYxj?u_mWO`3%ZHUzyGB8zyy|A$08jy#>x$yit2BLU;$m0?$c(Z7s*q-Lf_L0bT zpDo)KRwnvYjzlu2v-PWCNaQO+23sT&DMHO~B+~C35~*gI5hi)Mn(ql=l6}G+;-uxb zZ61w^S0V|+CJpX231Aq9Dhxv@v!^~K2AdQn32r$DI6{LZ?ZCFWR??XSA}Ps=10!E8 z!N?6TlX4#hCL|b%9I+?SVB{uVKrQvD--et8xum<(d%Uk!j6th4xoIS?AZXE zBUTsj?IDqn)V92hik-&}3`;MN+;BBY&8u0y4R z>m?TkeCx~a0-Vi42F;+P`3)Wcoz7Pi+8LC*-G(Vr=54YCDf5ITWyXS%Uza^t3i3o0 zr1*Z9K*=8gvF(DAu6^jBB=4h}pyYF|dRj`$7YWV?l>7&iaa*9|9=~z)Etes&yFqJ1 z-_np+3sCY9SJF>K(x=#xt``3YQ1Y(^+T)-kADKykl5b@}Y&s7+{`|_y3jA~Ya50nj zJ08#WH-9rU#9f8@Y6@}1QwVWi+T4*A?Vb^-Zo6prv>4?_M7tSiY8&lVmG_&Z52rjP zp@JH!eJ!ay7yvKFLBAq~??3=dZI&6d;Q{bsdNnoxj$P?4g?^0B-q2l!70BepNf5kl zvfAvyu8q#+wMT1;FBvmte$!k7e=A=a!9#D$C4!_84Ti(rF-ks{Im4tPHZ#vJ!A4@wmEP#KZab(xt-MY!Rpe7ZmuYX4e&=5glrW zuy@MKr{FLU-bJa>KjCEXEAod#&$gTjuo_(F{4&}CN;bMfW z@%V3mzo7^aegdIDbs+u~<*bT)`#o=AwFLGro2GW0VL-!&(}0y%v7KM(TbnPX*F&d; z0z0A@2xX6kpwJMGG9pyHT7#?H%YFv>obOj~b7mUE#{QP^GsC#|86}ShJ09i_4RPNz z2qCS%t^xK0rUPb@szBPJlB#TCFuITkI`8SBRB;{4Z%~gOUTo{tvITy!R!^>?jl%kc zAv)~l5Tr;Ak5BHmBSbUn9}dj*+~BTi=GFHInKdFj+`VZ+Y2AJz&~3Cs<-<3@av&`b z(e7D4roEY|(Gg@X+KV_3lsmL91qiFrl)aw_%3ZAKoEsy3GuoOzLW*pgG5DV|219#p z)BOM5GN6!^`>br7me^Q@w&fnOEzx%IBD6=s3`Lu+^#Rj$ok915tov&XUTyF&qbcF% z-<(9fIwb_p=dlzO^DR!5yAVQ&PlZNK{{mK;BPa0`)~lUZ-64>wEj=$_t9^#H7rB8( zRoewj&&8-HB4FC-N&A2)*ZF`+6lwM5GPTazZUQN&GHj(7?dX=kkm z%_a>+s>aSH`7w%$ut^nYY764zJ8qMN$lyakt8^xg%v21+0jor9UTe^XTctDU)%LB@ zJE0#Zt8^AJc~#;BA1&kxGpB`J(%)!dncD0{S*MS?isx(;&rP=C>9lp)z>BA72Sn!$ z6WeJKYLosS3bx56iKk$b;BHIYrlFam??>vw&K!LwMl%uS=;zSX)*P+txH;m|LaU+` zQoR;O;r%hZ1}qV^`G!FoZi&85ueNWAo`ZgzEYUg0Dl*-5+Ui^-tWIS^Hto+#r}6aZm8JE5u^T3+>7$|c=x`KylRXko z!5-~_m$C-P*NoHLNR`mK(cKFe;MOT8)BH4XGA@C0s+= zmu8vVVEUYwmHIe5l;Fb3N)7Jz4OF3>psLW6%6sYqhGnI){57`@hJaRH>RL2e?|eyq zT*>KivgGt`n2WiyfiYQfid?cM(Iuyg+)7SE#-xCx66{f#s{3tB71a-ZL$;vw;81df zsXv!J8`KpNEkBhlh?ezO%NSQMQF_U?f(a~G*j6ynt%8XOtUBSpu43Y8Is4drO{ikx znLxLV>7rmVfmci*EeTgl1ld!oV_4m#Rxwe+W%~C-(6)*Rs>a$@J{2gR+Ey{~zgRe@ z+^#*IatyNzXj^uJ)^R8pub5zFDB5&s6%%B-eoLk++U)X*iAD!(N%Q6y^Xu&ce&u=< zmN;*YImSlH=qbXHxi>Hwx3xLuy{^Q*9*Mmsabhht$9%?>^z)JQPuY?lZRvPL z*6R&=<(p&p$V_T;%)42-fNIfKP&Iq0()mOIN0l_3tG|JQ(5%5DsJN!Afp`j8gGmj2 zX!(LIkt(;#7d#rHs)&5S@1dz}zTl#c=L?zX9?74qN=_u4RgV^g2M5!H)3NNA@s?mmG(FQVJ$ z{8}$$EnwG28B+hShXs0_%)SlBCc#lk>);|gd=(FmS_@@rexY20jTzxheAtb#iMJB? z;2*YfZsFAS27b3}zTSjm*-Y__Ej4@dYS&?RAr89(Y=@oE67vH#r7qR3>R}rudSa*9 zSR6J&sq7aOI4p4Gbu;oh&z#p|=+#(aV{g4X)0N_{t-4;W=h2=uolrCMcm$4 zt)(ip;WDm*2oaLSY3m70XTNEhocG`m5ocGE=FzXAQTHR^SKr4+(eRm|!& zlLM04viaI}Wkp^5mq|;_&O2R)`lUG3ziKz)m-~6xvjL7YirE{ilnP{X_*p@f60-$#6$|}=oi!k4 zXWhBI(%~+@cMN9Uj3U_?S{nv4OoyEwuM?D+6r)yur1AD=kEHwzEbFzRHA;jU&(D7lgn_xub3*x`?nZB?9#(7X!cF}?5x9Gw7{w!o#% z5Oso^+Hh!q7!3bmRIBlNmaF=&K=q$)tA2}l8vQCSwqpQe>sP~y?al~+b|Q=IL|P%d z*zU3yso1U&gfuF>d!54PI$wI%NAVn+UL2U?g?Lxu&{0ASE5w^Un$pVz>SOVIJ9x(S zKn_iS4gwjkipqGY;m}h*-m(xctcEam8>IBK+PpSP$@KEX`ipX=P+SGykgVYQ5KQpg z$AEoV!H2S7PogXMPD`wUuW_IYi`%jOm2LdEjcud^=uNT(B|xuAuDb8bvS)+DDADo- z*@9?!XHznE8@{VfS9|f%YzfqIJUcOb_giut7>pb}r9O&gT8yIR+Jrd)6Af2qRMT+Q z5}qN|XsH9U;+@J;JJ%*`v0;j)!=thVO^0_kO^4Xy%$}A#SPJqQ6r}immueHX`vXQ$ z?bRl@_Mz7%@IJa(o6rNSJ8i;wKkDfq5}Z+O!el1nwrUfObtU!#NbFIG6KheMu-cXM z4xOId91VI6qPZCY|bD3G|z;0=)qR zdatcOjSTMw>ecC(t`BOK^AtR0w7RtzO-4;RUVl_x0=jO}%uZ-UX0K%2ulV-aJwHq5q9vWv6$8 zJwW;yuf~H8;DBDtKI3`Bc^@q&_8zpuz23-Bsp@<1QGReMbTAoyn@p)`uLOq;r{DrT z?052_B0NPr9+T-rBA&>LH!|TV!>KG?90>Jilj(0z9fsh4wCP^6Gi0T89x#0lRBkPz z0EhsD0l+}BIN(o8>O8CLFQ-wj44*FdV?sB?NLJxp%@C(-I49V%l0_p)tT1t#1XD*>OpSt7Ot) z1k6S5Eg%}1bU-<=C(%iVT!)elA=5^<``!Gcvd0(N*ki&!&zCI-|NLZfsfnv(&jz?C z(Q>71L9~3T35(r0FHlXcuiVT-5s5`u|KYA%x#lxZ06YWqBA9~!PKWdy=;aDl$G{Z; z=sBRTflDT9Cxf^bj{v3P_em)k$W;gKZ$+ahWZVSY&zKf4h^>M9z?k`zvWw2Z{pW3% zqQUZ6*@6bkZB2tE*4@5W_FyT<&!Qm3_qzn#{}_mE7r1xrLkI48AKe7*|IbxVUq(Is ziv(u`-2aowxGmuRWq)#v;l6^z?hdVk&Smgy1|D=85^Dk6AL>f_SCRA{Thf&e6#?A; z%|Lq`xaT7?Dd2v4SOUaiPCqLPywX)rcc7q7H5b$pdNm$cz{_lk>jbr;E>#h{-j(35 zA;Ck56MPshuMkD!N=vW}t+%uY<0H9-r^;{*53a~1xdOX1Rf4$KRStQZ*gw4)1hFETI|S{u3`h73H#Bu?=eTy;la zEKCqaxSS`rK?-cY9PY3@EP@EFA|?v{k$1$pD8OZiScF|H75ivgZ$EDI4fet37xbe~ zFNTzccE`I~iCdT1hu{a8`1us>$;u4VHE=1U9)iVna1&j@ufUydu%jY9Bxmja63c4f z?dLl1?!$q%x9z~QuoTg+ax|DZkgZ=0LxX=9;-5yM!6Ix7M}yz76`{c_M`;8DU-n|d zz*_E)Bf#IpA*F;Jf&kB$9soQ-5a0mPahpOq)G+C(r;?CVLVM9H%=99J3iFJdv(^OBw6Djj<-gEh}3P z;`TstQ1Jz_X9FaTXnCD%L9~3Q3H{rayQcc9ZMkc_R~Tb1UX7(Dz!h=`84NldNB=G^ zEn)yR!PkJmUKlUWrV>!;%V-XWU zxFhX%q)hGOK)i9OFIlBu$QERk9!k#F_>1h>z*-S4f08YTmWP`xWE3mvWeZZ*V@>LcUC^e;9t?(v zF387GkmCDYN(|2dV%tp&yY`_chIt>|Obnmns;4JWPiK+fj1t4AGa1KaHpZ^R-ROKu zvtQKg+~7*=Z;{w);>21chOcxb{V62?)u(w;8nI1s=E3tH$XecD7&86r3RoY1TeU)X+`?IJuQlJPYuGaX5P?52@AW zgY(3kkq7ngd&nVyBX3CHhhD*fvDgtDS;;mT;F)=%Gy$s=Ffof>#|>S1b@Ulx)&y z#k^AO5x&mf z6;hfn1i|xNrTj2(2WR2Jd4qI@kzc7mW(>X!+fuzOaac%I)&mpbXvltV8JrbX^+dLf z<-6esF%(PzwpHL~d6^|?W=enm6k-f>cXYTRJGK{}i~QJ{r?=@G#P?sL^DUdN>FTOz<-^_9)_)kdijKm4Pkq#JbwDNFN>EaTAx_DvfTyLmWD_7?Z46KLPwNiw0z^nb) z(m0EDK z28AnV+I zaF5>9i$*UP?HSskz9d=3L}Ze5x5~9x6=0`za78X5)KZM*PQw8MmyquZoWuA*i2%a2 zXML8V9uze};YOQ*K3I|vVjbFV@zXevPa;BEbAU8+PmRsI=?A{d43(e8f$F~PHTR*E6IOBl1CFK`FP>_a3^aMc!oY10`&2uONH)D z7II7E?FsKF;}2$wen!l+B)U?%y~R~fe?>uk!d6fg<2m|OUS7k(@Yb(}mDd~|veZYG z*9h<}yu48S8 zZr4c3a&JkEWtQSOob!U0=5&ww<$?j-{98?X=XB3Z8>UDp(`5@%$_q_OiB0z$FMF^Q z7I|elD-p?exohv%0-As_nc?YD^K_Ek(pGwCt@Gq_gw`w0R{CP1D1Gz`2f8d z8*IfwJ5Rb2yfYH~MB)VRg)1aL*BDsw#gco0a&?S)MXiM|xH2{o8GFu_F{2^-P3qMR zP%M-(Dv?aTC|>vfn}y$^=Wiw@IWUJF^;{ZbTV-&Ki8utYcZw=#19UTD$!Ox*kM`7vO_z)5+mCVOtv&MhOE&^E0!)1=U-F%8$hV!+>C=hwG z1xNtT#sX#w*>yvdhyv#oBeHxpU1KR729Gkh1Sc^ZxRGL4I^u+;q#DxD3yHDy@O$-y zN@=*v(p~rhY^8+HdTEd!q`6pUl4g{>Faq23^`D|IHRTsuPx-6IjDcwh|8W#{SDgDN z+0Olro93t+stVRjb6$5tUUTNWuA^6DO>?Y6@J3gHcSnLRN}S*i(8W~TBao?PddL$% zWL3a41BRoy4PcCUDjF;a*pt-SD&)Fr?4m36M=)P_1Ryn}PQ|H%l$@4*XjyBtQ#_j2 z6WH~SzDR`1Y-$X#@;xot^j=qGzZ8{yjjggRW@7ZK96x4$ed|}l@Z)76o?Rq*&#Y;aRg06uy_!ADBT zJ@sRqQDcsF=biuvQNxbg!!^O~NT9U-VpO8VVad-(EctPmvALfE^Abx&Nw6o;Sn~0X zSh5%{FmgpSkVIF?tN5*r2_ty$*Rln{gRj^nnsW=7Lj?}GghB&Y&q{E4IW9)}8<he>B^mmK$u@^&?`rn`N(WWn4Q4Bi`hK~l$!7S4F}r#A^e!oiwy2W6*cWB5KqH) z6xqn2KZjju^%RRa?~N%LZ+D zBH;`4YAkLbj+_#k2YA6*@Uij~o`!y%_7og~O#dNq2Bt2;-8l&FrsM@K3shLOniaw$ zmLQxaix!IQasO~+`%q+iEVMR+;+fuz?AYfFgvldnX2)9h8WvF>9nyVdL@m6R@Q8X- zwA8?-cQ_izec~AXF+xS{DWuv(tKuDv- z*6l`nh%?mlO6r}r#<8_ouh=Db+SoB;E*Q-%hWVQNCNM1HY2=I^K!?pzot#s}KN=G%xrGZ@ZU~(o}6(OUhsC=gR`R@Up z&rpWNx$f&q8>UFvm&+EU?AcAqj*ZISD|@gMF_?MCIUedtj+@1vVh z`43(7bS&!Wdn7ocsQlYZ#%)FAPq`9%91{DR#EG?t%D4Ncqc=MbNq^p!bmfFZMCJDz z^va`hJ~Er5@*bzK{H-i3r#;5Y{lOO{GVd2(4-L_KQD03Vx_Am9`gqY?O9D=hRI*)^ z-Vc361uzj&`jODoHcG#sn|`72x0nhl{$Ma%KOP7DAu$pNgzMC1ia{G5uD_aIjSbgh zSGu#HAE)qqJ~DZF;smFbTtPSs=yw6Q8`ra!k3h1R&^Eg0u*!ER?J2Q^Z@GB z$pVhWVl3g=vR@Rh?{wvLA@X{aIj>hT2I3ZFS#`*O;JJ0m8A4RUdBC6P_Bf6<3L>DSnsh6h8r{_#L)WyyF%atIVVYre74V zkGt}EBJ%nRb6$T=uf}^JtWHjlD{2oF!Oyr7ya);Yd*TFtLwO;~K+c#gAXKNZ?vPxK zK=C0I88T!DYNV+O9E+>5@=%l=LiM#?YbejeQAOj!wZXnQo?lGE8cUVdSTJ3I8!a#o zD7>IXN@$Zgm2uZn6<&gkJqw9{w`=@}>O$Jsm^e?OcP(n!^%+M8_9PrS6QOlfoPu6D z_qf?u@ASNWAB!!a0KPO_N&BzCbF5yp7&AykXskIM70?uGil-23?iTDu)84E|?b*eg zGh%cZ5px~~O>JY&OJ9_jQ^=Cy_mJ50WE|B4F_H+xp46t-pbei1Q|Z-stIu-8!Ul;@ zR9XEL^y3tJo`OuiHgSUAry@=vW?^o*$@VKe^b~)uLJqlr`+{&A4&D{-|uYp zJd8VB@P+<@Uno`Jep&Gn{;{DIe`6|ztLfoN1x`YMAh$Vi-P*}i3f}0d;KiumVOs@T z*yiY0c@mt#hOJ)>OM-ta1eJ_Tf{SE9coO{L7b^)a@kOI-xK<_8@oacsgX!akl`O>p zqeK~!7N2Qwr%xbzHCtt`)F9}o&ub$sE(*_&fnlO0$J``5iE?b2C8zGFgt&U{9ixAVc zvS)+rCeiYsY(ccFYRaf~0ZirST^GKjwDyGL+dxu!LVY#bBO$fsgu3}fFo999N|_|* zg!=O~Op*HkEnATKPj6Dc@a?#c#IH(_6Q6Z-_0B*+itl$Rp}sE=+ipVLwGTa^&im+Q zLVba&o>Hi%c_cWag!(Z|#&OtvqG9&MG6z2*eZJ54g^Y!|P(BEX7#M%&DZA;6+gxwM6b-!h$QCs4hMNYS0BVF+$1`?Hke`q} zSPF6j3Q~N(OSsKffY^3%8`nN`+=lnjP2A>}u6nuv_4F7C&Iq@8gvmHAT!_SN{^d&S z8<5z4CQhscZnOKp9iyBJk@Q`lwV^xD9nSe_2`uLOX5sp>#RqDw>N?G`_89j3&Z#>eUIA8JEd!$W}}0q+0R2;`q(3 z9AAPQUuw?r#f*(+6Fam&UjB5z*`r~`fCHB;8#f*&wQvQ$OOc(h3`a` z{>E|%PrDVqKO8K}D}5OPIDN7hQ;XW~4Uj(s{0|Y+q@FeonJY?U z?x^Pghg$$5lE@s&i#>@(=8kqm=J*if(R!P`C_A?R7%{HHC17EmY(c=nmC2!Nt7Ojx zfCJI8T(%%uu4)1~W-zg}I5m_1vBiOzPHmNB(~>p=Zgd>#?Pxj#XU#a2`9(|tO4)tCjwp|>`wGSPK;(c@zhq~KU zPuHQIzD9yG!lAyxWZWDiHO4uSIMhR~#9oiY{y1@BEpVu(T}gi*lKux<(v_zX7JBjv zY``{x}dA)WU>`Q6h4RUiQ4=BU`1`(6D6L89g*o_i+zT+7k+f(B(U2E zwJ-D)1v5r$ggOM8+HQm@DWAGS_2!Kd4<5JiejL)Tis3o1<%!ztY0!qlDtpkYvGH>7 z7)n#I$x1^#_pY6O(3O%@#O#fR3B>vV-1m5rc{> z!~<}Xxt~f8;Z0n98&dgUygefemmIVEG8W)r;}kUr=m<8Z`LKT}4d~Gd3eM#1LGmhB zXbkl@Sa`;8OE1Mv`hY{%Muq@)Vh4Hf`#$gnFx+8iRt044*n#OTJiaFOCs@2NXxdQ|1AyTar{hD9x&z1%y3Lo=n2-Q z;cVtuQhyJ)RtLnAt0ft34ahpT-%GShH8i+cdN$w7Xs`wdXc(2K|bJcB|Dn? z5)K$R=3rmo9L5hy1kkHJ>$4p7pr{E7H`)wn&dm)tkZ&eJT63Ts&A?_}boV?+X~W8l z7mKmbqk5ot{-v=70v_p&$n#_7JU>FO#(JdV)|N_nKUEYo%ik5r|8gbyBS`W;6DN6r zkTdrwnTNFr+(Mts0Xlfxs|4Q$H{YXsC_E!bQD%#NM(~?VXG&PRKkw+U--N>21zJZ% zX4;r$`n4F-(XaBH5DUCpzZ#Ykx+Wy9kIV@PxJ|^exnFOu8P!@Bb3!6WH_8nSsyH_3 z%54_FHlODHF&q?1Twxg^gWJ*q81JaUc$K1i>a%bj^&!rkh9JhT^i@*n_0>LJHPR=; zqds=>Otp^@J(}wS{cBmEHq#FEbxO<~g$rVjZ@*Gza!!M3nL7~Jl$jjlnLUZl%dp3aZiI#$FL9~3TDQ(cZI8{c}fM3Ij z%K%^sDHa8xe+d9ZisK7%TaR5MCCfKRY7FStb2+!-Bp19i=W@)iJPYXNQ)-?&=W^a{ z!xSlHRJI_c+}5O&*j&zyvIk2+eij8OzTc%>&h0>KySW_KKJ;7;@1vW!oJU;s^kvl3 z&q#1a?)y)ejN=05$Xw3fT#5Y(68q=GiM7b(?EHeGOZinKeLS=_bSasfl}`|n%X!d1 zAUv1DM`lvFobADii}jFxRu*`stDx>cK}|OoR6o5M8(YO9IVZak{52%_#KZ~S3s*=D zQisKoyM1zXjCw_BVy!D7!Qlf32z$TOgbaqPJsYpu=_-FB>Xr;oMXrY}7)`5$q-^{uW` z{vMq2H``A6j$7oic0k5h`bC+y@452&b>#Ki=DgldueR?8{Kl2wdy(K@B~I`MP@uvQ zkf~&PC=bklJUqAuaHl;@1r}O^4d$t4Jkc8O9Sx~{VGR@nLFS5)i8wk zwvcEc5+N2rd^kefotrHZ0E%>*LXnixd+JBIp~d2S(-UDtXqa(Az-GPcrDk!v0X``))tWqlbm72u=)B`o(?|0SH&rna_Ai)`- z(qCsXj)P+&QR&BBiTybe`-{YhwLqnxaV7m>B>nHUq$}Se0+qhYpjVDc^O2bpDm^|m zoXKKAvshu(12r@c*v?{o)NS!2D6;*awIPtdH@zA=pJMUpIj#i%0tr4maf1ITq%2}n zs1f&za0`+r|G?u@@{Rkwd2l#EI$H+K)UZGi4l+fbnbiViGw?J!2!MADPJJANN^6LD zA!y~#vrt&5YPWeMd+29aSvZviwVRtx0BU_<6N}*(}RLsb8 zSVI1yq)>8|!ec0fytx#zjJ3E$PUaX|=Nv9`CHZkA`I4kbUUMZlAWgy-c7TD%(#HjVP~c=Q1r z`Qde7W@tMKwW(z{_;A5b1@Ev0uni$F21x`zh;~JEM$H*=R;z4+I%-7ev@RG`uz3gj zMluw{2pR^UF#W;_Cm1FcQxM}@r7)Jkr zkk}~_qZg1yI7WYZ;#J(|4VTt#s`*A3{L-W_c>YlxW&aJTSTP@hvL9}6l~@23`+-8m zl-hdg^X*ag<_tmZa8RuVwzmoXHe?^VaG4l)dKx|(2fIHYVfX1T0oeUe5P*c;Q5x(? zH0*weLFu*_9()P0X`+nH5kR6HY(7i2AT;x-oy ze?dWt?{^6;s7tYXO%(;Y#|yk@PLLq$?*P0xrMBpjQr;^O2bpT)xA)N@=(( ztU3Qp4a!}%w^$K%EBqV^YiDR}2$YYfSKAN04ss><|B&Fxi4#1X%oafbykvIb?H*gCmR&4NABv)NY9Kym zf0M1yyD&G_!68Z&eQxjvisz5J^86Cy`6hFoZ=hG(x8rxY61+VUd`IF0-&gUOP#c4% zD&YD6lK~cA0FXUfhM&bOSuPszuvtHVicZktWwh`!Mq6{sr3xT$cvx4D>es@5A|8CCjU+C5LXY{UP9bL&Ck>H8Y z+R&9WB={00VXrh&q~sjToOO^_E6NGXmpNW=a6FvB02L12D!gcc7Q4(QI0Px1PUUgA ztCZkY3RvynkHP@(^BQ_FTM6gzfr|$R$$4vG=R16gv-gKzB#YQ(W~vxqqAKJ-U$glBXNR{Lg~f@IOO`ld)WuUP%2Bg^~C@0Alls|gu zuF)J=;OGa)o(=L!l*`&rwjf$w4zx7h0Z<3wG{)D` z^*5#p5UN-E*UzEzPr0W)0G}UNzHr`x#S8ljOiOr7X(}PA8Zw;?bZL812c(RcR2z>u z?GwkGnsWdQShiBbZFYc|*6Ag6Na+#KMmwYw`O%ZGVM!3}JkdSTmWgqqx2x}v%^Y^P z`K`WzasTpNa|fPWhBD`g8B@ULnb@Uh8TU-n=y$@KioUMNWM z{VpYMHvqBiCU0H)(37{kk8UP!uXokc0jQ_z^o ztGHf`;`*}zWBk^QKhmr1hle}wXyM@K_U<4gcs#T=1PRRuUNZtJW56ew%~Hfg}Y(Bvh9|Fs5cc(-yLz?HbD1-KQr*Mpxy z6XHkI2K*eQ57jtICz^{mIWR{WUBuar+7m&Eb9-fV4haz0dSO#;V=qo!b+$e72(H?m z^`%LVDn({cj?u025NE zk^iQ+U1h8kq+H{63Ua&LoZF@JYWqt;-j(1UBsiNm!9K}XECUq^OxYuX{=#nAFpAO+ z1cTXEEA;^!4rj6mt5-k7{BxRZxFjI7M%!?tunn$+!Gvt94>cUG2oTzOA}JejCF)e! z2;@}{5yMLowEmbjYuPyN^sF5R=XF(J=TBE5U~%!S^Lj@Y}hJ#oVPGP~Z&VQE4c9EOGLdAHQG~B&1}q623g(*U|%U zDbCOU?;+Gpa-B?wEv@bhX_`fNETD|7)*?I^Ahh))RTkkX94pEqAg>k{p%;hSBh;q# z$25z;=0~S3!uUd|m<8`z*6OGS$|meO&M{8vL!Ku>Yr{BcCwev3CWw0zSxwVaVaW{IBdKCR91qXWX+ zYUlXE0HLj?oton(psv*%M_w)F_y7)nWz@^9`tPHJ_1Ji}`#Q4w-jTo7NxG<}(}Pou1F*McurZ)9Qhm z*WWT0R$yMwK%Vb2=lLFbHFjPb>`!>imE@U7@*|0pe2tKE=>CM|e3J;)SrS?bh~sKF z_PF3LMie%5BSO+)``I0(P_q&L45((SwGl4_2yH!Wm5tbLe1nZZUM+0I;W+sIW;^&g zZ6oq?p`>i?x$LgC<^JGNiI%zGQYO0&z3ILOWQv6+xtq0%Q*+`e#G*UN_S!J(!&V91 zc7F(Jb#09P;V#k;`U&! z`{%Ve{r>_&-D>Cbg8@QYPc!A&{TOww<}~tZF{h8jVe>6&)B0oDoMz+PVopcD%B$E} z6;JC|!>ZV;A+i7Ee!8|Wo+zao zRvX_|VFKTg(N-U75HAZ5+Ip>03*&NVqb-cctHr{&04=2$eR?}qH$N+2C3l7>DP75y zF~QYnECaJ?zA~21hn|&uMZnntlf?i*we22)qhp`56Hze{!VZzEmj z);1M=4egH?bsTW^sJ_JE(gp{I!)AsFI9^il6Nt>U54~=l_tDL|`P*Ifv=sGp8wsxU z>_Yjxg~{huCgZm1=D+Pq>@p5tozt{ki2$VHX#TF09WdgXQV zd}KD)%{!eYH5S7`;jFMws8tH4o&-fUFxs^CihLCPrw|-Kw!ZKfq3FORD^og*aeT0FM%(LhV_OdQj8^g&S=| zw7Q3tIFRQMA+0%Rnt9RPa~n0*pjVCxFdNmn*DzF|9%2F`Q32%{aToa45GjjF@p|${ zeOKXl8-LMKBRn9nqrT~**^<7;eKo3BF&~Bm%ntatAxJ>LxjjKSw@Ph2^+RKk01d6k zy%bcaVFGrsFXA2bPUflNaDw9`PB021JvSbhkvIWz#-2pu1SXsN`8X0L&8CSm5Z3{T zcG$qRvIPYarzeLE+$?)G2rww9`M7LBw4Bux)U4q`YTN<8g3UlYP_YWf{Na8ozSk^O ztKoGvaOD;pOC^qBgo4GBA^xireYnX5&J=|}Po7HBxeq8EeVKE4^-JJzcl=M_m(iA4 zv*u^xR2RZ(4rS*Arg`g7HlX~o)NFSSWgnC}G}Zd|Wed{!xlLM+4Q02;9t^&zJESQT zr1*Z9LfO9pvF&aFckM$DWqBXn3}yG)*}^*MdLrxa3TSN@IJ}HrjSU zMFYm(!Vs4A^lI#|6iH-3Fi$Zng5T^)a2^T1G;xC86}|r(_7TzA3lZ)x+?fF!lu;y4*@~poqjonq zbD_p|I4xi`mfRpW|3S%M(nLoW=RB0b1ZZvO;*6tL+h0pw?MiS32|gfkf=>@hT?}YM zGJ^wonbeTSR79nZSlI;E(++0W!C4|1II@z?;gBP}gI`eN;7C`oR#B{TY{lB?xu7;{ z@HwC!D4x%B<++ADuQBI&6}=ie_6>G#R9s0OMv_a3le|vujo>bVx)8$a!M_cRRI)XH zYQHCUa)ez&A^+HFn}6uaP=$-|Rcc}uR(0vP^K#?}> zTM$oM?OV7tQV~75FW?S??W?uSXnh>~e;*>Tez5rclUU)uckbpGwNP>-eBZ*CpsDS? zh1VupEk;7lmbj2bft|K@VFX9s$6{E-?1_faQJaq#wBfPghw0T=n-+_O{T%u+Mu2sK zHzJciO`PC2s|^4=(+L+l;W=BlN^AQSgl|gq!3fu~Ol8$CR4>kn^0+gvQ=8A zZQ_J#HNUW!TATOfLB9GU#rI1mIS$s>A>X?~YeR2&BE1?ry9_*rsjeiy9!Wkpagt9_ zvi4q+Pp$LdQWOyUKqgzof4vnePQmlz3d2RQNr-Od;Nf4dm+=Qva4(NXmrjW}l5D3+ z-^aNM?|c;A(YC_t^f=#{hZc(=ha^PT@Jw-jt}EvkAm?YBbAATB8avWs@r@Bzg5Q7y z*AgfAB2Ct?7G!WV!$LALOXZ*k>(Gjje3bIw0X zueLviFs*~tSY4#9TL0yW1nqn)c zPLJdXtlS36M8#;U**-W ztgNB+t6|lzPgAi_V_{fi^{Xgm5;bMHhU(XJ;(KDNtoBX;lty*1rz`xfy?wFt`D{t6 zHboeY?~T12)vg2*RuOwdpj0lTA~sMXcdn|DQ>u);^@-Ctn!6Mfs@1|8S9wCMZ^E}e z36kRKUr(3yuXn%<%Do;KkoB*~4SNz@|2orPpKQ}e5=)6&V`Vn(voRY~X?BlnK^2Kt zCRY>t6WOytr6SStplm_3T-8(^x%J?gJTa@SGux1$XaI%q1joi#0B zKU$aC2FBD?%8WRd+CFc?6b+_-%N8`4MwWS6nWY zhx3r`VkJfl3$;F-fhQQ`?SJgsglXWJ3MVE-i?(ZIkrV(ES>qx)*W~Dh2&#eTcDhib z?9>36t(O+HIIe&;+Tw_u>cM!JGpwy+A4fAMhKJscj((bTSir=!4&npD{bS0~IS29Q z8A}8Br*U4CEohwI+%(Q(gZK+&4+e8fM?-EwL5lBpDTu#{blu+3Pp*CFK|JrHn?d~N zUG?-i)YE54aII&T=D2;D$+)c`{yVP3-j2jRkT|gxLHrZ0q<C@qA=92k~zEWx@PWNnk@&oBm9h@?Cbfa2Rw$@&y#!&d}O0;Xj^Ujg9HYWs5a` zonH~D1Nplm`5;%4zlbDHPMYL3KZI~g6E3D?m(rnwsr+2nHkhBZ4TWUjF%$w?zHW;P!XN3rSjf}RDKvb^lKx&U-YKIe{?d& zwAr&~dr%FRf~IM>RI}+tdh77%)BC;C=Pf?POQqq)KOkx?)M)dbv0}TSakbYwX~ohd za8k#4!&z{*0)M3A9+Q=lHLIkn{wbo*u zbfom{HZh$Wql<`5Oa*9ayNT&ch3h16hwX$%MB5XeL z;jk&ZGPjSdv*lE_0;TG-q%26)@X!l5Z&B=Fmb;-c-U^06&|W22PoTCI&v1lg4cr;F zQHmF2L75^uIs@w7OI26{aZfZXbhswrRlT?h!$L<#VDZO93T>Fu2*vmFcvMyfo8kJJ z&*MrK@@3h|!<83Sb^OL~v8gpK$J7HMEA+t>(S)nA5D}1_1rfm`wrh*t6(V9%=p|-E z0h(VME;H)j;u`Q!;KO*HL6%C_3aQF^;DD{-DY(048B*vK_#q<|A3z-3IffJ$Qk&?T zC>^L)rjJbN@1H_kq3=_zr7GMxz~^!Se`=ey|2wq3W%D)t{aZF)8>VsbH~kEj8(q!L zSJCWz$kyz1dR-qcriqA+)B|N|?{($*4&?c6bDqCOug0zw2K(_Ib|v|1Nb*C8le|#K znOl2i`!+RfRO0p?tPX~DWPydzg4iuvRNE#K>P>0*udd>{6UFtkt++ZpswXhFr=jv( zd!+c@>3Xs_v?p4W@lW}mUN(1Cn zPl|+rl3G}B500;6s7>pSY1lHG5Eh0Y`c+;Oz%b9&uZ9%`Tp0qXMivE#OhaWJd zvM&RnQW~v0$Lei~L7(dw?Fbx&Vt*cYTEtS7I@D>`hZ2kre>%f@zc6 z3CNcf0LTk_5?ui>-M9ik3?Jd=IkZ&E=KFwP|yLT}og7 z9f)nW2Hmv}J$=pl=w|wQpFJ#$hd$tcf_i!tv^Mm)_oP>2eeTE_^ck+i{uGIwmN>B% z>FbkRNq-1QKf#uCwPJ^PiadS2he5AAea%N^Qt9jMA)Xd%AN{N>aMe{%KSM#44Orq( zc!6Gx9gwj>;N`9a{~QT^Q{n{gg&?zrH^XAdA!E5ZM!ljm@j+L{9!AFAXUmw;kj+uA zPD!(|nEVxkj{Tx|y~~x?N08S$%z6DXV<4`IM;1l!Qc?N4BKfDTB>w_Q{!!8-uekw0 zc*?KC*js8>9RY;{RXT0_KdKx8GE0~tk%^OrtcYGNA~H8vAF}mSJ#5pLp2gaV^`)l# zpIoQ>qd4V%Z#(5XZjmutDJ?SnqIli)WsZ*NW60}7Xl>}2?nJM)?*|<0O7P=I@PUaF z`~eiGa0FzYl^*h==Bb1V+=D`@EVI+K64+p#hlNxz6i=nrR!jL|sIW_MomOAzG zegUs_qRg!9Lrd8b1kHkYJ$qaK=!-E8o+Q=c8Sfy#YKKHg=$s;2t#BK z4?sd8h-?50`mVx)l59O8e@uSxSd>NCUh~(1o|RTUF8MN$gbsWC4kxydN;A%DenWjg%TKAf?Tqu@ zW5X1w_fFY@)ceOK^~U17-}JG#^V zKt1gUtqtAj?djE6cRCX1^<0VlClb4F;>23uyt7?Ne+EgPX-m5D10rzVF$TSIoR^Qx zq;Otwj~`z{#jnZ^pX(~FXHi^d8!*Pv-ZSXc*kKuq_Kvs`{4XT9mN>zm>+ZdIll_gg znUi}xy1WnmDb@z7lcA8fP=rSTwyyrjHdr-)TNC}SiR zJ6{WjW&5e3K$c{Isv`MbSCan^NxnOAlGPPY9EYSmc68lChp&|C@b{F+A9fY_^CJ67)@&BqJ{*&iPiot_XlN?jBSJBg~;F`KuU~u8JE`LjvuV=LX>!g1P|~Q zRMcBT<@+Vb_gZtl&!Jc2=N7-eTLdai*Lk1sO7Qkb@TSBGE;CpSH&uun z&(LroRfHP=QyIEcO0WD^6N)v1d9)gmI?xv1g6c}xt6wUD_YOBuod>56$g)cMGj0!% zlc@V2R-@*fu1Xk-O1R2a37wuTyDA;h77St8o1QBP+~z8Q9Z&+dnoHnjdbRy|bH6LW zJ0ii~NSfd^w?LIjKFSxB`wMVKaRRS_)WkQ$^Th%YQCyfKVOoWTZt`ETe1vq11*f+$zxzd!B39WHSHL zWDI;am4?Y&;37O+MdGB5kY|8M!umb@EDdgC5Ki#Ol*G2;K7S+ZZf@p9h=?DVA`H)( z&vspNfxSqAFjmI%AEG-zEx7i!Y`*@*(VwzjkGmR!acB&FVQUO5?0595JZsLt(blhq zWz8R@l!HaqT%<(8v*v#1vgRt(G|HcAS>S~7=iwKG?1ZXULJ7;H&yLTe2eNH{RM|GA z&Yt>|m`u6|7e{k7P^*?kw@VJ!S9d0gjosw*8<{+x@(M_m=YR>BJV%b$lj!96ESu!H z8dJizac!=Q$N-RTx812%wxBHM#NDDfw8-`xCwn%?ep1HuXxV~j*%fHX^~1_G^`g-W zMtg>KsBbkvDi4LW8hX?SSR!R;Aay-?zZ=>Tp@HV){hWXuX}w7+Frs$dEw>PKc=C49 z11mD;xz2_u8cG@2f`-x_O+!f_L?Wo=_>mIiu_R^8RL5J?)Kp`Zx)$(FF;DfgFjviOD!F!xA}=zwS!xK1l3ci4$vK&VTMo`o2i| zPi;w8u17@j{sx0ydGel*%;x01Q|>SFqL8t#v{;076TBZvYCC8hl{Ci71qj)@OMumo8X3*PEAtGtmGgg45Ef{@`$) z9Yh5A4Tua@`xQJlw$}s3;lR4#Z01<4@;oTqXd|K}c|07*14Kw`4w`0OboYEC>AwwZ z6px{qjcVO%SPXqhNcWMI=fX1ykD<>=Jciy-ErTk32DBMP&#P1f*k1I^Kh1DTy#jqQ zs#^&nEN(WqSTo@0?x7rArNW;2bi=q=i|})=1f^;bv`buw>DqedGs1Bt=@WO$oi=vN zm|yLU5a#{0%F^ZbY1(Skuma zptB&V+B?##Tihs8T>hlSC!KZkmCf~a<_vW(oa66`+Mv}l2FikqG* zkLq?;3Cu+a+-5F;TNzt%P-^T<{s z9EB=)+*Spho;ABSXb^=g=1s_7loZD9<>;CnjZ)YSS{u4%&y&E~Ujz4cCHNR5_?3wh zytqm3j&lcbPdP6V?p5jgFjw&%i{cxw6pC}h?P&9u{n(&T1W z!5oi*xxiL179%+NRSuQ2AgA@KVNm&R2s&uQ_amWl0d0gs<;S}~<^IMp+{ zpPHYC8S(pC`(CTIwrZvBwzjq|ZLM3?T5)M@-Dh zl1$!vH_6!k{^g_R-TUUIQOfI_fK-wcLy#{ zNe$*fg~e3`Z1y*ZsSVo@WLwaq(^}h2&RZ<18CG14CvyLtime!KulvnD+^?|L{f8(TcCY*Vum+#STia+*y!G12H?Q5V zU+cCqL>x&mz21i;t_Sk0A(ArJ1Sn%qXIv?t`n$M(JKLW_J%Lv$co9B|ME<7c2siCl z)DL){H9qT1dN|y4=(Qo zO(x(TXI$f}?!Tk#sCRW)d^B17PFNNPQg`2!TD7JI4z~1F^!Q|zDhf4})k;IRDW{d3 zx6n%cQPQJ`hV%PvTKhYWcF!R=oFW>Ax+(=zD=4CEQ8cU~+P6AIL_ScDcy!M(l$jwu zR21nRDKj`g8C&-ZluxVIJ=0N7?+sUMJ9(7lQWCjW%@IBw{Pg&UmeTLxD$YFgpva;{ z2Su83GgrJFN6y#DHT)02MCq@?beri|Hq*ke%~WswwbasI92yo`E`F7I%u`cYeYTSP zE3vYix6o(ndus6LwUa9HJ)B04eY4!T;X4Ipl-;N`ZH`E;ALp^flgr_o`H^yp@EaweydcEBxV0Fb3QJF!O z5E-v_?-?FrU9L4%hnkiCc~F;)2HE)Iuxt#We=2|a3N|hR0n1(N{nK)j4I|4KeHAAg zoFI{71DS94_w0OKRP|(o@_B6cG|*an+%K50ryau2K8$yLPp_M0-^&?g(<-9NO-BT{ zm$N9oIA6sVRdY2IHkRp#9xh_+;VRi@K!ZbyH7$4p#?>Bd_zdLuZ&bF8- zxE(0Da|guFdQ*AsV8=3Z2PKW|OeO^TSoPc?Kr65Ulwj*%w}g1oEw!6n*w(E%KoC}N z*~%>;xFkvfzjgN^?NyU?{~gt0V_lj9aLF4EFxep;j+MszgWu9wBmoK4C$(e#v%(N1 zO~0>OLYls9$iR+v!|k zT+e_*vEOPNm1kKzt}5n#tuC@Fi0oB0M>a&v|3|v0uO#YshechD-xXs1rw6Fjj``b? z`KsqUk=B7!&w9(^TkIH`6_l*f|8(sn+caymW1VH4(Kpx*CC;ex7S8Cpc4?0z`X`pD zQGo3&AD&lmL_b2&u#RZx^MHDodCCy7O)`hI#a`(u3hC=Uq!oFkQs(yo%Ge6zW%;yv zuXOl!m0Gh{dwHU6T_kcCN>>VylE`of-(d@!C-P=<8ygFg;(}r$0}rot!}~n$4yOXT zf{!H@^ird#wl*BI3AYuSyyf^iH|%enDJSbMl;_Jjk8>+&N_Rw??4LN!I`S4L{;4Sk zT+7yySZ2Ar4d^H*f2DYPy62dp1~pqY^!R?8_d=m#({Eaq0iNo2DXPBmXcxzCLrjR1 zY|G!O0wg}!fFIxTW>@q6fZxC-*A;wItmAk~o%BuEb z*-#~_-FXX%9Ux^rO&hJ)wBaI*$N4lu1;yTmqG1*L;;LNhQpIkuhT6+BnQ|hf>lh!x ziqyK4IWj;QTT31;pH{EdzlM5xAEYa&^^-{C`87xQyTZ}BD0R==u6^lmWyKyssh|24 zW9{jjHx@N$PqjYWqt+ez9F@M2Qt9@eJk{P_RBa%2PFzB$^J3I1>syaHKbf+4U07MH zTzwC9UiniyVrv=uy?&I;s$-cKtD160;JubFDbCzR1W&uhpGmX7e}jvE2M0@0o#Wd zm?ZkPwp&7?Z)eml2)vnFbAYIv;4<7TA-J4f5()gD`=aA^c?P5%T@G7q(sP`v+I<;U zRDGcFjyQ!F?}|xKx~E+9$ur)aLnY{lSZUNe_?@RkUFK}12eqT-hlF9A^p%6$64F=l zC4I#=YQEI1Awd81PCuMSMmoRWM^W>35fZbx#6fJ`o(B$(SlV6O`eqW}&RdV8pn()n z)~&-EHMi^N%c%LKy6tok+v#FqT;+~vdq)>qJoa8{>BnDikpAv!}SW`l`l{`inON6)({tnc~|SQKWFGVcT^ zV=I!k<%!o)9wMLmOQ+vmYDry$ zFDJr@nj_pG=TKo;q0jV96R##EjGJiNV&*UfO~I>Jg&U* zxKvX*M;QdewA*|i5gktisz=17w+NKO=oCegyxgbV65{1vRlDfa8n@;E-ml>Dnp;9} zxwgdP4m-}%z=bIrwwU7Qhb~3|Xz+UQ*RfYR^pu7|g5Mxh)IQg$j;S3A89X9{(I*Wv z&@CYib7M)v_=Z9@cWVgA$eYMW=lA<46w&}>t6e~-TZcCkV%Kq6iNmS2({a!OYimT8 zqiWO(CGdynw$tr03<=``g+k_9JgzDf(xQv(9Yi)-b7Vt=LQd92{Z68OLRi$*AYL5A zqa$jELgoah^;9bqVoPReC`3y#2WD`KXw>yvoUD?{n{>JLJ#y>%0Cd@Y^)>Qo^`6TE zx(I)t2(PX=!ecBBFXlPAoISJ-R)vZE=e_JyruvHBi!+*)_g;>ygZCoKKmvI!i&Uhn278>wt93}WxAH?avtmFw zZzaHOBSl8hjmjueP3PP;(!(t%nJ0JV@@>D$Tn&TIKk_Sb7Zb^9ht30!fp8;D03Ydl4-rE?8uA>=PX94=r6XD;KI9(3?`A3LDyx;c)b=5hVHhWUB;l5j zKJs8mAMy1ePjG7p&@a8t_(No*^ZR||L!K`}Qr&dAZXI49(yrsQKJ+2)(ru^5*-m!~ z<0^MV+gksw#p9}c$R~7>{TY#cyynP;@FD-8i~7%r`m144udKIhAM(}!wc0+UEt#c0 zq~3ITYaOT4#lW$mh-D|!*WUrwOUY!q^S0b%`Y@KL(Pa7tsH@U6Y=z16txz=VWP0fH zg?m`wrGa^uxusL-Pf$Ol`drl1}I}Ik^b_jzsv7;^xR&kr}q{uvS7WV(=SNm z9yLceY|y*vSouO-2Kk3>;-ydR~Nv`z0^TO5la~A{(NgY{-kW}e3`mfmJiWy}BQ+ous5unJ^dQf>< zsu>#!qXTT^XIG(L-05C7?({Z#khvBJaN|y-#(GmZ z?qpwk5L}X+Ij!&omAZI8jJgn?_AhP;@oAr}T@32qZp{IFUBTsZw}jyGe2IVE=LW$B zJ8D`)FR(8<^pplZf}glw)IQIv?x-F3*f|VQ(l9%?C8S|~SJE)PfsZL}4FQC~Yg)cc zMmoRWM}d#oK(^Y+bKN?;fe*Wmz6^XMb=zr;3_ilRK!J}Ii^qOeVa0s}XX+yR29Z6j z=E#N!e0)hVF6!+q0}0@o0cr?ZAgEnWcdbEkDJXEw}AtC##0F$8@>% z7P<9s0J>~X`T_aW-;?%R_WL_sgx@B@FVr02Ff-wHD}*VcTI#R5g#VF*zaN(HKytl0 zK&`gFV##&ywU+Z&_A66;MSsN^&C2^LbE=;_$En$Y+>#kpxh2k7=k~PtJ8VEjS~>3{ zzyY8|=FabwxuY7Tp)et^_u)*6zW~$H9t59qejzt~Qz zg>iv=pnEMISLFl!Ru|dNiR`ayj%)}Y=r6jce?ip$6c%-5KveL7ei)!u+Xu2GvqnD9 zk=EQVZoTA%NmXv9#<1RK*Hm`0ce9-_ke5vMI&U%AyRKc@vwUf5mZ{Nn?-r;_bGmmY z6b(DwTjk{!9&Q$Il>U;ExQP!nMYFq7W}^UQY@c+feCqF$`pxdnK|Q@UV1?P;f0M|W zHAna)TgG^BsL>voYe_y21I4MHooVaLP{%f}*S$VpEfUJeTB_SP{We1592K^40_no_ z1Jr8!&6Y0gz1DJm^Ce|eZAHJ?v4G0^>#GH#=%GkpFx@wf^&XN6k`2*nafdY*0mN zIX^nUF>FO9^WT)otQx7Iuvr;Dnl7Q)fVT0t%RPKUr%Up~LJjUq^K*XRb)DbqA&};F zK+Sc2iKq3Zvh%xrFV3&i+>R6M`tnX}Pa z^VX^?LKSCE-UvgK2+bed5+XE1N`%JO1^%mBLr6w$Kt?*h-$yR++M}v>fpzQfy1;fF zedz*^2I*S1;wEgTorQ6MT;Lrn9#`c8&(KA7QzAR9=E#On+(+o5z8O(p92Rvo_E&I$ zBLQl)U0_=>OI={S_0I{*2R7Q0zdTK4}6Q9ARDDjD%xA2MA_tfC=i_fjt zgyD{CKg);p6_!C?grZ^nV$Yev8n>Y}di-K9cZ+@G%_*v<`A}BmBTJc+1C+6SV4$9P>+`0+k!;iS#yMs@W`C_$&qMhCYx%DERT2D_c*i}9XQMh_irqVAKagY^Nu5S-K@z`gmBD22yb=rBhp^IJWj-o1X99jKX^G%}g_Mw@%kN9i9F z4|dn(!M5bVl;Av=B%k_^etxT#=IbK79TA>abA(SR=DO$L4>w%Q7KyZ@N$S>FziKp; zM8$O*XnQtLbJzx|cdu%)?ER$C98cEL)VC@uYvrFy4whK?&Rbad1Fgay1HVv_>ER6g zyiXHUFz_!!(Xa;o0u`XH*1)&fLe1;Bk10aAI@^b+BHLcdoDramt>I6VPyMx<-~89T zs7K4TA3-92SaXCAwpd!NS#QZqE|P@BGwQc3Fo*rSnt4&v-3r z@iD5`YA?}T9EK=q>OE5c!SSm5F_qPQj}gfnfJXGF{vKMdjOy>9 zDGPOqiTe!+que1O5A4l^CIXZD{MIpr0!>b5WSyAwBYIZVBm; zyVhvCHk)f)t7?t!x%33!fLH17$&TxAqeSWN8T?ST zqSoC*^<8bH|3ny~q*)(#OGvZsUDB++O8*77hLDV$Mn*cnU##?NupW(PAS{ZfS0tkG zK-#{#^=NY9g7s@&tA2);$g*mF&j6=N6p6~-N>sdRekUI_Z!0kK1hkk(!}ri+4zbT9@yLc_-ur&1bjQFkVNLq}ZVBmT zGi#^GH+O3e(EX&#Z{n5^T;`N?`9nS2QS(O~*5UDqIPPU?iP#-05{t(YQ6uY20U6O& zdj@D`5>u`5v^5dr@VE{&t5(^`r7Hj@yc&If_ECo`r5Zi>X%j`QJV$j?ZH+!X3{ld& zd$}c~c@HdUUSExVkXu7YM$RK6o!{@HWoAo(EPkrlv-+}ipcoIqZ>`j=!@JDPuA?uP znVqHEP7B#irwii(Ei*gC;_-PUJnp&Zwc>ioZ|Neth{#@Eb7Vs-GrLO{^~FT}&akMf zA-%#fvl9c$rM%oK`A4)pOG}$qw(~7*jfux>1@W)^gdrHt^Kkt za}OhPUkt#8Jj52CJ}000PK3CNJ8TEU%`22Y(na}jqWnS4QNF)oi>MKNg^}!xbMVes zcBmkp9 zl*Ml>(LcLHe>eDchng=c_1Ko)&{5gx=CR~u$#k>xw)aJ)6DzhsxH;$XJ}pvV&Uq?| zhMjY+GJr$3DHvNRQzrS;ZPo5okc(`+}Ai_=C+OCq`;l}tq4OU`=v ztK!DRy4*OL+_*3}HwyBpe~<86Xm+bE!p9Kdn`(~mcgynM&+aH+sL$+;|1PAJv_7oc z_)FRN4}@*}y7%2gd!@cx{;!G~f6(Q|vE;_9!MX7}`Lz1J`>8I%O+@(Pnj`$(vK;p7 zyX6b@UEeML`#Ad`n@%M&_STMKN2h$D`XjBRb?7)vQ|34}{`x2#&^NH8wcdTVmJ3k5 zZh;L zvajB{XQQMi`Y8KKoXBIDzbGzzLzfFNa-lmo7cP=d{iWW|*1tm+;W!b#t>y^dP{MaV zTcNZ-{fAt;GyQiUtEBU%x{ck!#(p$xW7oTnR=hyxEnQldk=8ZAX?;yTt-dFIu8VLh z5&mb*5#BM&yPOe6$No%jDBg*|^UrQ{J=n)e5{Kg!O0B^*L1KrYbU;hhYMl_0Sou?X zyMi_4)%&OAwksS}W?rV^b_HjmyKdVRyf(2Xm>Xy@Q+3-FJeFgR#i29>?e(k6+0cpw zW!A6m8Q{R`q7@SdsudHe@yc&k@SxajelWVnil!b*d7KqZ-U5Xxw<~z-@>|0+(_O=K zB)Wz97EpE9FcEL-P31LAJr?1XS;OR=Npb9;P-RrlH^TIMS#WZ!TS69`wAXHJQ`)UL zz(N$kCFPb7T#heU{8G2*df!FwPjhJuz!mR=NSa;N;ZW&1r{E__7q$5Ds@H0-bGjl7 zQPR|xxh15jJ4>3{cV_8kw}z06TtP-UzhAs^wFcW2s9x-0ywP&p1L^$gwkvpa+IUa2 zz*hHNUXshNV-0YwVv*oefI zt@MZD%*=2iw!T|Jn)S?*X7yG2+qgA^WaL?7r1Sg5N`I!#9<^oh_INrGJ*;C{+K2_) zqcAPxjx_rxI<24ZZcI4WOHO%(9$>q1kx-negu<)P%WX{X=uT(2F&~1EdvtjZomEbk z+bXWwjR_u9?BTZCPlKQ2YVetmC-ZI~?rLySVZEuW!8fti-}RIN$9gaSN2Q(Tg%M-X zhzGbOr0bklJMDaoTXTReCAb{vmJnPnDCx$tdvYbhMT#pC>PRu#Ch%tp;`-eYw@(3Eg(O zg6;IUFfPzmgU2i$pI5R}HN;kfKj=0xy_I}g{j|dF zx(HuMgs0RT;dBwtJ%`4vY)xP%fDEmicZjcwM?1OmZ)Iz|-5q)D;*nOPqa)s)!CryR zbQ)U$l3kHhJHWzt7N^*!JOAl|5f7+S_$$znZi!4^DflMUbC*ALutNezq>c*AU?|YL4))yxjJ5 znby=wn5S7!|FF6bKgT}W_DBYMWa8*NF+9*&=C<=h)eKH<#IzndiM3@X)0*l`#?bRt zazkxr8@Aoh=uO9u?~G?~Y;gwti?%VGLoWW0r^iK_vEwF@jkFnE5v+-hN3)R>-ouQJ zWD{+1Vu&KK&NP3?HkunFvt}$mcW-PBb$?2Hb+ zE1H9yKw0!NeqoIB+%U!(NV7QxNV#DQVrado9LCtf3S*SEsx#>H{(e-6_X#rOQ9 zTS9!#n`#%%_?KIA0H0KF`G;FVaJjX_56&Ef9kaGbD zs-+)a$#1Kc9XwIfApZ{gsKeRfP|4(p!Oz(#l9XFjH`NZ6j0{7Rh{*PC2@#RoOGLys zR5H=6A%IwVLnU{RktvSLs^3DS5+=4i~E*ZbGjgf+{)dQixudMSG#Vn zH+erBOOa9PO-`N|;EcZ_Gxc_5rm6;LC~PX;WQlKUJ_{Gb<4<~hE{_j<^wRFaev05= zK4tNbp%Op8@+Q}>oHGet~^`^34xq;uFd`R z0Qh=ci^nMW4(_EsTJV$eirV5)CH&ex+Bso}l14bwEg_BYcu6Dp`e@y54Ivr%GcwZo z{XX*1ZUnN``e?d!czraxj=uEKp44rpr`b+V2;%~c%a2<;uF6MyLl@a+i0mI~j%)}Y z?K54}e?`wldM~e9@K9ZbJWGbm56h51V!xHtsuf%q+M3E_=UX;4tPRJB zD}Jr$KVFyq-;)0J;PfxIi1Jgf?ir4@5$Wa?$~j$>pCig=*Bs@md-5EDjG6p4k!4)u znTd8KlLo^AmMO@OA=!?NC_x071i+Dv*(@zYnN7CV&_;|EsRV4uWhv_qX_}PFA2pCuj{4i| z`n`_%i)=JSPC3Usz#i2i-{f)So2Z6pC=3zD+?MNZb9Zpvj;j5L|v=;`|-#;fFf&BGYQ5u>{VMz6fS;xmca1hPoZO*~s7<=ugqY6ckr~ z*0@&H8bc;)T9L1@(>UBH_34A}5-n=o->ZJ3?bGiRhA3&)k!}fT)-@%~>g&@_c54VA zN?vpP4KmXC{XX*PX93x2eR|zGygt2MM_>B%%XQo7&uphwVO$`eK5p^Y&*-c;?|OzV zvVS46r`82;Tl0{B(w6FF(aF^qhhH z9>wudA6kmezLPQ!1t?=r%iS-Z`bSv&&c6E?^#q>W@Qy+6lgPi;9O3^1r)aD{MU$l; zkfnoAI$)H|l7T>K>^@6ebk6BNw5rSCy(-AsR9ja2j3>`Zw2$+)?CG1kRAh5F#WTT& z=@k^u-Y6PY@r0fz1s7e#<2gaYqjNr_?2Ppxqe$mSnT7ymY@M@{d|JKES&DkJbk1K% z$56iv~`la%xcBIKNlY0NOT%>8=GUH6eNR#6nm5($XRAr>e zJNO5RI?Yj*M%buRZ>OYv%*Iq?mWx0II5wxqlU}1dY1Kdtg<%qb@+hHh^LYd{JW(hW zzH#(acVRC@bg)R2_Xqr$(YTJ@%l(%7>$du1lDlYP9 zn0_fCgooS`5<>X2c2TNl-I@c076g}Hxg`Xb&q~4>{|79y*IgO|aK&rv{)?T>;ZSMh zD)>=1MJ@iB>TlYStIxs^B~AUQTSA)p%aW${ja&`dRdWRYHyP>tKEg>ou4C8Q^HpkK z2GYp;D&-VfBYP|``wX+SH};TK?#P?T69XK1QzRT;D&g=d<86wSagPzgybX=(QOrtv zIf}W5jw{s62li9gpSlWr0))rB7HGN(n>brPS2b29)}`w~;@O=Xea%rci<#@nsy z=-%G`tTgX;@k4?Ae(4ssx+SDr46mK$eZZ|bKz9*bR=Xtxm(5DL=+p(N*g~)9t8KX4 zMCYE3)NY%p&ZBMS zz8QunX|UJb64GE>l{A>IPW{NOAtWQWCL^8ShfZBmdg#>Bl2;AkuNvQy5k14&ebaxp z>L+M*>+nv{+I95h1nn4*9$2w>1%4#kX_PQ7&;;#{7LTi%pxsv&*&T@N^qM0Z!dzXV zi~5d4{jjj8tAVz{1nr0bwb~Q3wq%x0&}yw+-N4n}i*X-@qrr>bDy4k7F7I|C?@kFo zr5&X|Q9kvL()%5Rbh$3VI}_ncYmV@una*fQep|z-oZD%raTI%I<-iIIu2@X!Hc%v) z$YilHJKKt5i?Y#HS)J;=#N@DWb<6V40JW>uzf+f)qsYwfhGk};p0g@It#-`b>N&mF zS}tbauT1q7WA@H?Sw3bzUC$HgFcRsYE=br7o9VdJ?)5!Jv$+%@Wuo$v0&LhUGM~0m z=96jy=lCDj9Jl-+^HSI>9>1g5DwnUgS#yR8fCY=r_xzy%TQ!HfKF22z1@n9$=K37O z(t1DxH4Ww>#)(Mcc0wd&^n+HV!Rx> zdstM~cS{H=6M%{`ObP=MvB{HyZ+$GHYl0FZZ7Y0~i(deXSeUz`TS6$B9Nr4w)vY1G zZ+fk}DeR2S@Ar`vJ_pF+r3UAYG zr@h!trZ7$kdoi2HAKSuNX7RWxEBq{7WcMbrr`H_W5L)G1x~NYh>X(N_T@5+qn#4Z( zAr_!k+X}ZOv(yUL+xoapG_B$%Rz{5lKhb5?bh7G^07Tg$`JjASz0v)$F2ef|;TLO; z@YUq5=hRUKva&{IId*Qf#$%nyc*MwH`=fk?O)yEWN0E;3_fJic5KF`UiJ7j21HdtzB@7D*ganwEEQ z9CgzbS#osiNo^-(mb#lA{^RjfGWn5i6VG51e-O5b19jgYORZXN@Y=DcW0Wze=-haZ z5XO&p*xr|PZiv!e+ozoFvHRW-`P8@X4K>nfoLSpo`MskZq>EoG0!Hf+upbH7x#k3% z6pQk7Ys2zpaY`>Yy+v`_E{<_pmP|EAI*csR?U`|rc;m9h$f#I!(x`EfQ6uD}r&x5% zC~oVFG5pL~i$qJ8_{y_piWhBlNt{KMMsH>Bj7M71skTV75nbNd;dZpMLL#x|w9A18 z9OiKmBwbYSq8emWBhAolq?v4_X<-|w-o0rM4>_M>WU`KUsuzmp<8*1BMVgler}-%P z)VF83o1S~$1iexh<=I3zTXU3WIDE!X6ie_F)Jz1spACeS=xIjmbFs0HKa)-2xOv%Q z*Md+&HWE*#Q)#z9R9}&5*RSa^X%3lmepn{eTb9@125v`=t&F1e4qaOJC#|;yr}Y;3 z)K`Xm&xQY~F2V;8;YVwZ@P6d3$1*c;5(QpBxmzL(8>}S~Z|lgylH#^e{uP4<&K0!& z?ztVI7FDU1eMOg1bIGWe!ZNDfQam_;0TxFgXWctOJZ}`$pX*Y6AgTUmaH{_^>bP6(aJnurOjxEt&&=f%MQ{;`!eY2h7K4#+#wws ztwbKBpuu^?0sN9h) zMd~ty9zRS2EM|6QcsmKcr9aeWtV*pj2vzx6EW*{2CKVHloK<^nq@edGctV|kv;%^5jY^1IAp9dXW)C0 zGE@jt4#8TQda&bwX&MK88!@RSlcYn1%TiikW8e=KV!TVG6^yk`?cm9yw#Y{kZ8+=$ zdc$VpGEmT&G}7n|94^VX_PE6f{ydH{O~6|tQ(7$qnY3=25Ki$}Q=Xs59qU$s#>gC4 zoHh$=bb0cKk&TRrrNBnlk&L8ME5|3{|0Qi~#*FhI8ikjM(b_-@M{%qmkKoC|p=^&d zOdK}}Y@N%AAygU#U)au;1)P8=L6T@h^AJ`MDErs#3N6AxBKYby8nAaQg*Jz@6$OwKeej}lz$+2BpCrxY{ z$FUsNNoRY)_9ZZQwT_G64=^ESu{OHWv8j=cBn=RTc&ykkE)&UOX{75mf2BAmSvpU* zX%1o2oEx@j>fV2r$GhZ;7Dr1Da$hK#zoSd@0@8eQaGGzBPksAOaRAm1A{D<@1U#Zk zz@a4I!I~3rp~K{!(OKv1ge)i<}UYPL@ zU0N5B)=z@d`jLF<+xdLMUK>u;3==FS!b4CxV3;5v!XtSCrN?`tb0n|ezFA|KJH`b0 zR7v5^x`ZA^LU#yDXuYLyJ;X0~Au2pvXE5--QgqMJrTcKwJu^7nGvrfWiCmYK2O=E~ z)^1**yi^zEBZ%@*HAi`|;x)nq&UAuuw{a~d4J>EM9DyUwpgRWze5`so?obZQ9 zH%tH_4&zF3eJWSX%<3|837L6(SZ3B+?gu$R8b^NA3q^CcF3m@h=8J;U{5AQs7BYXE zF3Lv{+++bKZNzB$UPCDDbjnRy{A*6@cp0Pa6_?*N)QEMCLLQ?I{WCwqUG2~^56$lBo zrP@$?Q9M}1ad9+pCIOSpjrS!oZ6uMC=Z%rYz}E`Ip{^dE#NxR67H4xxbkMPy9F)1s z3w=A9MYOYF;hfPDiju+0y>yqvz>VS$@U}+8Ss7u*?T%3-aZMwlmW)2b*uxdSsg;?j zo(p@WY-B=Y;T%lnd6vX>5DPoP9~05Vvn4$5c(b zt*o<7OEyLpb#`>5(wup-0#HZqH!gB;0$_iF#fkmYdcgk_bd-b*+e_1tI+hK#0ZIpS zq$~-mcV8Qf>*dqgSs0g`9_D$YsGg`xbrY!`ADrqj@@e(`YJXjXk0ZjfYL0Nu<#UnK zYlUms2wVpUo5WguYt2;Buvj=}=H$tf_Y_+K<`24Bdurv;V`H6Z>3mD=Rf2dqHb{8a zY3BbNgp`yWtJ`P>8|~<@jaKizHHfD039w!ro~sv%=2LWOZYIqq2B&$Id|G|ax>Oh8 zC=tH6<_I@BTrTcdHuJe4K-RUlB;rXma}l(9okBd zikZ@Fcz0|R)<TM*ACzu>Mwf*rl7&wOAl4SuC*)IK3*ViIbGG?7Gj$5(w{=lI zi73BObCeeq^W7O`i>D}N?T3rDq-D6!m-{8s*!O17R&epITai2T)}?O6$}eOhZ6tyDDf`>@e2dGyk<_eX3$4R%?{{SnSv+#j*7UEZ^J zaz~cgrnSH0YxGp>;VzIEfx0Ti=PFzv(TJj9FOUdzw0aT$#BuT59B~TeWm_NodHRB9 zDW#OzDnJ=q!)z{}`f3r*%y{chGWVZxl}PXcis%+yqE92y(Xd3pVLeraM@3vvk=5Z;#Cbl9ub?8nfudnm#Pl$JzojA+3vjvEg@yj3{b|_5~s$l#EUahOv}EteGm`#M(W zw8iPp__zh>)G|zya>LxTIYu%QA2%zG9bP!6!^*l^>c0nJr6r%yZS*tQ=ud`i^m=Q_ z!Po<7U|HN;cShUuMp6BNF4bp|>UV=v{f>O<+gE+(u?J4q?3-s3;r=LH$?T#+vXx6f zgy*?@R;M@5orMYK82Z`D)&v$EIh!h1Vku5Kz6?i8VzrWN5VV&&9c(p~+kI+Ur)ukM zby;@~S+`YK*410W*R>rm$2E5IisEUy6rW3qrv|5Zclp#;x&wH`i*-@X5#>W`j`HrV zn`^Dv3+M>DvaDTRwc>JJmgLEj*03z8x7===YR+KOT0FLYyghEstve!I?oWyj=j-y} zJn|tIoDXNqr?rsg>vT~*pD15lbCiEj%6limBP&3$AC2osm$@wyaSDh%Br_{L%q%&% zESka;Or`_J4Wo}(d;EKRgrkL3jpOW5feS=CxDrE-ifQYFxyB`*I0}G^G4@?BH?oLQ zqE3#v+d)OiO&{PcM;BLvy^`PibcLZnVYnx(Fx0yr4`#$~W~#H@J+sF1Mp6BeF4Y&1 z>gR(~{j7Xii(dPoF3Mjc%J0=2<*6>G9f2=13R&@21Y@O>7SDTDQ-x~Fb@$OUJ})F= z)ImQ2>myN*R)pjt5_x#d z5#Cui>O@gJK~%^0lE1q~Y0%GA&+pJB_+k>=7M9?8_xvF|oV}}PZn5V}Mf=xvX}^TD zUl5%3^W;-s=?vgS-K>jpH&MQ!<|xne^1H$y<~mzt=M<$9SBPs`r)up7by;^QS@+|x ztgE-A+w+L_`Zt|X&bqXrmwAFekXt1qo%5FSh|bD8#o@OqayZ;rx5kIx6~?*`P&DjV zr!kLc(_cD6a2e(0_dfU+jdxP!u@$Nb3Cpye!2zLg$N)bSjGT_|tLMoX{(* zw8PhRnei<$+PAQW@>YZGTNv*wgkq<&uP?unO{Rz`w|`;Rq6OXSWO?abrIp+rY9+U7hK2%W z1ZBOy`34s0dv-3k3;zp~6iNO&7Ocwrb}A&?oeIxGFwK|n)9y|M;$gk1yi;K#d#8eG zAScXU<}a!r{XR@TlEvsRyCq~X`ZZ;CFX(Mv_`t0=z#4TyQLE&v>!@}s z5{%wg`WMl4y^;^@mHvbF4WY4xq5*CRq3GuDEB!ZfYY4za@0zn)*vp*X@1vFeqkwF+ zEB$rr@UHZ?>o^U{*||uqb)XnjXP3Nc@EyqqVdV;r?Nvu|s~4){&DU+GJK0Y2gmFsP z%PlLn&5r{t9#^%}Kdy`H_lRtB&5;eU(*Gn~)W1*EyTYQb#*%VPVz2a{9iY}zEknVU z%vZ~Zp^j))ypHNdT~^&iR$Ui>C|e}2mQQ{Ak?-o9`*jii0TI5h<_Pa98*<&nwVYY) zd2A_`jPQ|TBuGEIQz-gR&Wl}9}Z#q*8 z59 z!d)iJq@wdeT{?eEIt#(+%*&_M%ivAA2;WbHudg}6yW;qBSCc1VSY4KA;r(G;>!nt) z&@l1D>0PPREUnt_0bO=HKz6JS%Z_@>sXE`Ez97Qr>V=~DRb84NB+b7IPV)=$Y4tMu zu`a?75#hhq9O1Fvrl#TbFi9VT(g6)GtF7uTpUyF!&Y)iI zK>e}0G(SR`8-mlklYHtcpP{Yg{d5Uwu-vK!9W+g zzBp6=NZlrVj7@rY*e0!eKTM{qG1l#e?hB=Rx^!v&329ytoaT&tTKj(ZbzK5}N&+sZ zIRUtX%(iSi<3fSu2 zf4ZDboS8het!sR9XLNZy>y9{m^lM69Zq{Y@<7D>@VcA{pK2q`CiJ$4x`ZLn{li;*I zBA@#94d2M)?{yLWIT3!j<_M3FOD5cYKuPcA+KB*PDjEDlm&_+f=0{=4thWq$ub8lh zOYbX1_olNn?ZjV@?u}78pq;p(eCjKY0oI_7(?$80M0s@0QC$zP%A*%>wi6CaPO`x=rROH|?gftl zBcDxot&~3fO(i=Q>9YPAvi@sfSzrGi6UPn1au}pNObo^~IQAPw_4jqD{uQadBRJK! z$)~u>{}b%s5!xJo&Lt4chV#8+RD zYS-6vne-bn>6Nfds<$)`%d{IExNRc4z`oVn@ls3wpm^|aT^>A39(*302mh2$ePuiJ zXt3FAO%v|7Bw#p72Q=XV60o$m6_miMLBaW^$HhJNNKoE^Ezcc=xV`9uXM#ZTYJjLY7kP^@J|@FO&So!;)Wb86Dc$kxUt}V(X;%wW9wW zUHV@k{ci`S{|))nS6)NgCjI7U+9t1(fG=uJz>z&$K&fVBnOI+F+a-1U1tk}o>$3It zWa}m<9nj>nwx*U(akuK57aad!<7H|tI1T|=8VyM`2hv31(E70Uln z^|yGK{wCX7n%xqzz2%KEdxtb{K3U<`9AMjv;F57m2rh4PtIe{JB^yAJo>xl_Tf1Ms znF!G(WI+{pmNgRXJQWqsByT=V%dM^kmz~NqByC&ol_|12QjQGbky{JnnN(*wigQ!P zj~|blRdGlc))051C{kP%gJT_IQfn-Mv%<2xvcj>TCE9v$ zJiRPFFWxmxs&QX0$}&K@tZP~u|1O_%)^{=Jn$~7?xGxSiI^4o;qh%sTFKt6}t(es4 zzKa}ZW>W1_N1{Egmd%VyA@~|^>&SMEBwM4c&Tmc~DL-nzbr767k{IG;I+aZ|ceYF& zDUscAlg43{-8fFfO;dG`JZ?RZl7eKUBhql0$jR$TmuoQ79$_myq!2{u|2|1`)JT2k zSaVu;AN3f|`qcAXoe@CGn8%|vTelVM@(u^8b5R;f<_u3G+q=vfJ==ShbR#1Y|G!T9 zAJs{%KH9q3k`YxmkQ{TUrAODC_H9>_t~u?>aS^=mXj6GbeTvtPM#a0YK&N_o&9{qs zjoGrH8fFWrKGwdDS~^*jKA59avr_xySx?1}H=_F8zqraDZ`fVs56%F9Oobr;fAz5E zh9dS<-qjfg@1RS_Q5p_FetI5eCivlT8DPBqXVss^5}NcMfMXSJGth_ zhS=wQurBIvYF@AI}LvsU}OH%=Pxh|)%TMqJg!xHQ;l^KySu z60ky-jh~W@nE(XaTT?saQ(tlQo#DDb7vX;p;qz*a@LQ#vcTQmBUm~0okd?@;*%5(1 zYqt}<{dB5Lf(TZ)iK`uqcJUT*yNW~zT2r04lm$y5aKDPRs9COmNOtkWB~@#*)o5Ra z6%vuiTwc4l$nu&%cfHa7 zC)BF`af7b7{gdK$ZCG&&q-NTrR;@kuxWyuq!No0(a&YsC;-BbJ{23{JBsj$nT4ea` zw)fQtFY6-wFCzS6%@Ib&5*|wzinMm(3Kz_<7%_GvT z=_&|Y2ecvf2L*tNBuK>|9!k2svJZbz$;n5$Z2z2W{~#>e>)kWTU5;VL#moIk@nPcw zG!4El$cGJ4I-tQfL_YN$K?AG`9IcD;mqdBzTBE#VYnV@EuAe|K)f=B~WE>Y)S{RM$ z!U$`iW1mq2AumG8#Ix8El)?DgiHkEDB_fW7S5pUWEH)~>C)S8IOts(oZh44Q(qnAJ7%xc zMR+YDoUJv&OK^~LKa0ugo;8E>J2<_!4eRd{(TH=p0;X{iYVc-9wF`1Ku!knX+?nM9 zc!qPtZeyKMT)E9&Zk<+xx|Q-`WHA%rcpr=7%EUM~1VB+hk*zS2o%j=jy=`%$9pk?> z0V%VKV!K;2YtAie;OI~w-Kxxw!IA_G7}S7 z$(hiij=f$0EfBD@X}ezfKY?`lU9Y%{{uE#oB2fVXnnYQ(x? zHF8+H#0Q-2ThJ`6+V2%zb_^gpUJA>OddsV|e#rI&tc;@db6r{olGc9)r}gjhY4x%? ze6FUmvMv!GhSC9@m0$=jffs1aeM2l=LFL|kHTGasMIK908to-5jnP!w1o!XOS{mGO z+7-bc>;)Z-GM`>N`r&3&+`ebv(8dg}O10MFV2n;I$BlT-UBs5r-yDw`viK(5oItoP z-KDUDj{rX$!yf+L(wU4jWa9BiV|ywVFZB{eTfTtNoJc0JxO$JbB?HNpWWrwa)7Ftn z!zsyHLolvyjjxI%vKard1_gsXT!)5OduGz4T_!K;Y>uVcu>5FFTXw?eeHxDMG?F;$ zDIS}TQ5x@@>*;I4QZBamA4^AjCRWGjcAP=%IHSULoDf>A@~8G%Q){}R_fN~MHT^^; z@p{e%S6plAOfr^VYr41IT2r}NE6^g--PA$t0T-F7i_+|q=htInDKg5fFWs|f;^T+=ZsZ(0WsOq3H&WGPHPXkDoicG z1($Q&5`xPx;9`20col-)2xqe?=;w-m-*7PqfV206*^Mai4*n&}EOwb#B<;N~vnXnh zVZ%*qTj)1$t;)?(ad!H9VTh83xZN!w4Y5f{L-=00@}OHoNJef-MmoQb_J6y-XU&u5 z-5b`KjhTRp?8D!^Vb||nVZVi!3@&CYm5E73GEqhY774>9N*KHvaEPq|EfrxJV7*8A z73qqC_C=U}>TZMK<`L`k>vwXu`4%uRj{tDh9dWYWRF-3RGl1JERBSmtixmJo_YhF2duxitjfqE`>^z<%faejlyU+6~C!r>a_|rCW!0m6lycU#`+x zs@qOu*iJ_Y6f|) zHxl8W*BoKZ`!sBuTeGwp%h%|#V*=UnT3B`j67}1pR;`snz23&L_Ph|os&|N+NIL%= zoX*cJdYbBoeS0N_!2Ra*D?8XaNa0L+cidQL*TxQR5<`s=JWGGFRQ; z|9M)dSQm0&ijKQeE_V^a3&u!e410#Sm%~9x^{k1y4Yms#Y<$=Tt9Q@xxtC*sF13?M z?ZLsRJy1TaejHe)i|`a89IH9Pf$rL{wSJ&)l_Z{`OX{v9^~A8G)>{$>wO||b9IR4y zoK^Kg(R`II&AXB2Zw06Ma{1I(9@lM7rIJ_x;o$7%70P$(qP#m%zN_Xa&v5wctQ_Ig z4mVg^y3Vuc0;k+{bU6y0q>|THgsy>)Z0FuMGRHkLrJrrja$32=_zjfHq1%gtsSmA+9Y+EJng2B;0z$ zy$vZ_f?Wai{Z6&XR=OnaMG`j;OJcp{uh%<{rs~qUH|g9xIGt1E)9PjKP+f$l5#jkY zM_BWgBFC@OyCF%*X{#qPM1Bv%c8H9xMT=N{e0*q4p*gRqTJ?>?ih z0kf5gdZB23UYF+mNb|G7Y5tXbT78dsPZ!~tMEK7&M>y0SUv@);Dx=zJor5*at63y{ zEtC#uURiBbclmVgfO1rNxqHEO)TMbgX&w=r=I!KDU-=9jx7$mXfH@>!kD3$kzk9*P zctd=N_Gq#*h6B%d_L!A)#1b17xXZaTvbRvTN%v=y9ul@m>)j74-g%VPrS$;PnhH*9 zQa<(Vf4)9wUKioHMEIPVBOKr+BYRW`@TD3HuF)m)K$3Z7STgG^gWd~{Y<75GDY_rl zrF$OfejqsAtL0N)c?_^`^#xs&4n-(z zI*RVPP%jkCL+5K+ee+54`Y0XH>Ki1V)D0dVjfwsxD{JvT2o2)3iq;qQ=B+PmlKDQ z6GsN;#NqO(Z!hz;b27RJFC@YpHAnb_GQ3ya&Dq{7AK@Mi9x9URz$rtC6Rd0BWg9YI zXRzT9dyEq&;Bv9lN^Dz32W*clORSJngzQGeo?&bbj<>Tw%9dau;vKQ!LoAeCLh&nI7t1++&S~2 zF2fEd!=4MvuzJh2x?;vQUDXTKm;a$l^AV)^li)OeB%f9<)f*n7X)G=w!b4Cxps^Sb z;gGk-*i8|#lxnY?b;&=H+N^!?7)#Dv3Q^zkKuRx*tL6i{2a{&Q>2vJ@iVz-8%LQPKSldDMymZAsu9$k8df9_ z8y=s>9um)^R>;+E4IvrXLPk2j-$#3yehFl&-OHp~hj%ZNT}NN;W%@|B zo!Zz=9|+?D?PYq`;<4X?{EB;-1~1SwtJ;a|K$H$>Rs}>h#9pR|F6t?wzHM04)wo%1 zi-EnD>74+rXYXaQC9_t0nbx-tDz9`BS!o~z5a4l-^|aK_D)Pph~6kJCl? zcp|*C<_M4V@EV7%VUkr&fOZDa#>lMM3l`3vx$olHv)m9)s4}XpR_cZiJ-caro+!;)TaDcz8#+AgwhZC`9Gb0oFoz2d-Ix*S+R4y*~zf!E~I z>UHYpx(Kf%!vCx}!n+mmoC_!!C3LT3&l=0@GkcAQyO70Iue!xm3l2Y2(-K-mh73dL zfR>Qeg7uc+^|{37a2#x!PzTlac&8|ztV?+pDW4de^6~O%^|E`QF2W}e;r(ll@BtoP zD<50dSgmYLL|Y>(tah;14bMz=;^;dZqnE+4bspzi&G*!C1HyKA8w#T62VVvO+}e79;1ZZzoVBe|FVx zz^_&N+^I|MDJ1v1VactxG;WmXLYHnUV>6Wbi{ipFx?DJwTzE1#7oLz$tC!NZbrC*| z2)|Ktgr}D9y*InT`ml`UP)!x8CBM*R%;{vzXJHvrZ+RY^O%>S=o;Ql>Z5L|VOlOel ztx!6k&9u3ETD|;E(M9-7B0Q<)2+wl)tn3Et;?%PmYEzkN-FdpqI*ZIYAS|;&$aLjT z?Kwv)z}EYx<>nlJUM7B5an8{Rt2=X!t%D1jXF8iR*+jOJmy|cjwE=PoT=ym2&XH4v zBQP0x(u$MN=p9KT8lO5fGBs_i9N(I4OHMs*??fbuv-LC6Mkd;mxN~590>_0$T5$ij zF&@VdN0*PpBB6vazBLhx#oMQi#Fgdok<<5{keGg)We*K5^ha&p-NhJ))ko1j z!xsW_8U!TcIiikX)xsc$4Vc~WTt`_Lh-Fkbg}J-14tdmF7`zIc%5;EtC?nU>q*ugc z8ub)P?Y4y>dtqC;9>wC%x1Nh!|H)(rEl>sMS?+LD6F-rQY*2jY9-b0t)mZjEt)PYGiP2jPZ(G8 zgsL(%XYR}{n@gcHJagtH)69iE!=DfARPJ|H=CSU4`D5hiBB0{VmlH4RO^?ab4V+s} zWO-t@ap~B8IME6JoN0|h@fV(s(Yjvi)~!RVBQiOUIS&`-D&`b+%*e)A>^7o4VyPT{zI2Q(5$I5rNjw@^;7dXQU=NAUy zf-7Dgm+3BS6iY>+`jeSP1OT|_IM!Vlc(_~^<7(u>K-@sp(V6X@-@4)a!eIOUtW+8` z4d$g(aIV@qkXhgQ!6y95a%9)Dvz_TAavNk*(WYj^b@^AU-QX!#g^h7Ae-`(^#65qR zw-%Zd=R~x3wl%Gy9__}Pp}e!MqX}pCw_$;I2K8-iy@@B|@}`LwV>QV@6z88eunTZx zk{3fTc;U4Creu6Y9K2h*uwJW?bh85r8^u>8vQ6|8J2TEl0}2CT@#fBDsBh>>Bh6cL z@C7dHX~Ubr;C(bsin?=!p^0`ds43naO~vpPG=68cW&9rFGYO=(>G{VdIhCae%V}fD zcpB^`s!*M}0muYL5-|uWE*@Id z-8!%^)acBnn$)WT&$uXT5bJE~XmaHbjFlJM?w)Qpl5DyS<&8)-n_s=^$izEisV0o2 z_-YugHcDmUP2Q3sCDCltiUfAfi+pa_6iZ~dIvIr6Sgz~z3-qxeAO^-yyQN$pHTGvs zEeWiE?uHWIj4Av`CY}}p$zJP>CSM<8KblIGK2tXye323scn0#SarmH<`tZHgaENe~Te;PYUtk3B#48h`ZbhP6; z(XTUL6j%JGvsSh#nTi@VYq!N^vA_onZ}m5DSy+g#mv?q_=OG%YC@fR(-_iqlNKY!7 zXm5cGIErCostTB}Mc*abD7?v(VfDs!L?uCH+M44rbm1D|t@gti?@zwICI4;LX zHW{%PR<=`Nhuot7{3kGHSr#)a~*{6w9g|3VabqZc|ywh2pzm&Ku; zAUGQp+ts4G&C5CP(Xcb`A`s)DuyK!X+p(*~QuMI%qyS9``M#6C+v0psz*TN7iI`RK zM>sKjX}9@DJPdO-PNYU=FFXwMmJK9x6&{A!G)yvw;bE9(Y%G~oco^o0O(e599)_9T zR5Go280ONgB(n$)!`yru$!vg!VNMz$nNfHc=0iJ3=59O;bJ$Lj8Hk5rc3YYAB(ufN z@|U4_80H5Jl6eac!@O*)WD0l~=JN59G4L?VohC?TYdj3|vx$=V5D&xr<1UhU6%WJw z?G(xU0uRHSv72Oe!^1E)-9s|#<6)R!NV{wIZ85lJPh+sOC|GrJPh-JCdvE&55xS9A(?CNFwE_nC9^3WhWT++GJnRy zFkg>L<^?*;RWhsbFw9-QE19u)pqJb(nP1=m-0qaj zt#}yb@!yxsGCU0P#2-lJcsvaA(Yqz{BRs%^dn7X+4>Zq9k zJc@^5KK-y{eu9T#E__5X2jF3t&s&)%C3D+j@|SDzFwDz;Dw(h0VVD~{E}8y#pv(MR zG6g&g^RQn^W*#1f`3o!auw)valE3VT2l~&`l6edd!#v{Gk~tU;!<_Z3WTxT)8GTMN zQ9KND+6$7IjE7;q@Umo{!ox84dQ~!$@G#8SYmzw%59ra?C9^pmhWYRs$=rj7Vc!0x zWUj}VVJ{*NoFt}hI#JB zk~tX+`-mN5aJ06Dl$u^St3m%5~{&tdi6A!~& z9g)oU@G#8vM@nWbJkX3gNaiU#phI?&%yxKSnA%w~=iy?)bf@IXhmGUrR??cL-rui#;rZ|o(Rm+&ympUsfW19+f;=SYS(@ECGG2AYxgQ{YDd zk>P@M4Dax~k)bzkbQad7b>SEl&n<+F@*99ckM+v)F&N0BE(CJ25qqV8#dl8ZYKPOzlnZ^bP=%n0kt-Ul44+ z697#ab33NCCb*t}7L9ow!PNw#b_SqfWA4n<4g_B|0MNcMzhLS!f*Z#I(9AJ!VCq_e z6UGD3+A+JBT0t;n0sxI3b23vC2?kFBpzUK0Vrl@v-**9^31oi4)JFtwOaY)JWUgWA zHG)HS1E4`<&Sz>K!H#?v~#rZy#b{{R4*Rpxt4{h8op7*S$fnZIM|1%d_h0BB^HhcI;z!Hx3)Xlt1_Fm)}# z2@3#da+zIBtsq#o5P+7K*}_zm;1vQIVCKsNFA{uzF#zo_^LtF)PH@%X05r$UE1CKx z!SEvhXqA~8GqoYXpOyg7I5Ypq)SCp?9R)xe&AgVWs|Y?_3P4lM{5w;BBY3h2fEJti zOQwEKaGwD{!_E8=Q+E?IHUoTzsqsvWA?P0ipc!Yb&D6i603XHyXw8`)F!e4$yaj+p zof%`wAXuFMplxT~$J9Lp7cK{&iD!O|sq+a=Y6GC9XP(H^DuTZf(BLyaBzTYD@e}~< zKJ%wcJxcI{;{j;?nRhXDCqY9RfL5S6im4q5zMlo4F=&2|soM#5UkN~)(A+T~Dyh;{ddd&8?Z*g5buV1JFn| zZ(!Osyg~=mh{8*XBH?4j_2@WdPdP=37jyAvo|= z0Git7T&Cs_WL^WH#cigUN)b$a9e{?nIf1Eh1kbDi7{S!jO#PDJ{x<<=hMPZT>PG}C z-UgsGZgw)2CV2E602<}yBTPL=aNWBAw9UgM= z)M|pIp8?ROH;-ZJNP@jT2cT(h?#0v|1V?-cKnveIoT)_wv--h!qoHrkWNHS%B$)ML z@0$~u8c#52007N?b6uv^As8_jfY!emVQO1~ZrJ+b1eljF^>u;=Ve*SFU_QXqYJ!ol z{KX|OM=-S=!DSl*&@(VEW$I#rGvNn_gJ7P))Tsoc;0}nNVD8M+4g}}JD-d_VJdde! z2_A=YAYOy{Q>GpzSZ7-RIuB-lruq?l0arnM2=jBM{z>pe1c0uD`E#azO0d;P0D2VW zmP~C%@HYGhaV*TYm|8=yJKPBIFU;MTnoMy0&H!{X%`% zFmnWF6MRWP-^2WZ;4^|F;arFdVlH9oFoLHE=!uw55&VK+W+MO{5_3PM_90jU_rs)L zV!qDQ?+NC>3laCkoXymJ1aIvEKrh97ld0DUR!;$-vtr)I)I9_f;EjmSVm2~0mf!{g zx-RDR1lJIJ0!KwW81rMM{z~u>{1uaqjQLll-Y0l|1_1pT^Esw|L$GuX0Non%7^aRS zkc&m-F45FnWRnDP`<`65_a?Ki%OBvFMOf%gKp{lQ;h)@9Ep*#IMPVPm>dWCNI8BPW+g>_%J!~U-II+2Qgy!a?N@lW#No8-hV$%{{t6MrNxzDQ2|ki7UHIq^U8;(O%8@5qbK zkrRI-FTO@j{EWQ#7&-AT^5R?M#IMMUPmvRUA}_u~PW*_x_z*eqAM)Zm1f#{tcUh_UTpK6*yVY#$#Y_l=fxJ!i5;F78$2iWcV2AooY>uYvAJ_%Z|B9< z&WW9!7aKb#_H|xt>zvrtd9kT;Vo&GAmd=SCofjKAC-!q*Z0DTV&3Unzb7C*&#a7OV zoeUbY#Gm$YUTou>*u{CViF0BP=fxJzi5;958#pKSZ(eNQoY=j2v3YZ1@1pHaW}UQi z^J3%X#J&Z+r}O=Iz`WSBIk9K+V$0^ljzyi_{D$^xUToK#*sXc7S#x5q=EYXciJh7k z8#O2PX0U5+G#h7N%)$LMCrzns#Ph zY|Nb4myq+@`JQ$q@PX+Fd;s%eOXkFm%!>_~6Zf}F3XEemJ@p{FSb}t>@eszm|DXHFrfJvY#iq%LJ(Cw(CMR}GUTm10*e}r4Fjk%P%=0p4CFUuqpEG+i!H$~%Jk6BEL3d?V;-HdR#_Sw|&P@T@ zn3CA&Im}9IR8rqz_8SDpZ3XZ>rX*f^JhKunmDKgjo;$xKPi_)pAA%ve%e?TYL_`EKTJ01;*-j=Wg1dmt;RbC``2Y{7R0rX;pJ znpuf0OX_H5rxFa93SclL@#f8#m3XtH4q$c^!ACGK&G}4847&f`NJ$J@QoAy{3Bk{% z0qn(;#HC+kR^rlj|FU58xL}N&Nbc%u4)P zQd`bM_8)wA+bn?XnU$FK{me>CTT<^c`xL?Da{xYOit7fJ?^xOwhgnU=33eUq6*u ziLXoQ`^VRvO1xfD&oTQ$f_0Aoc$q1Q;cvmL#PB6`AhV+h zUReULfGLUVzsIb^^(D3ak;s0@cb6RnuoJTq>%W;5VVZUaD4{f|Rx4d30)cY~Sz4pR>j$UK3hK4kV8f|1Pt ze`iYO4kj}za|e=&Gdqjm(0Pz))VPmt79X164GGY&9=DVbyVgjtzmkkqIa zWCs!)Nid#3<{eC?WZpqi-)8nif;$ob*D)n?5f3pda}kpIE3>~MICD9`r%av3R5yXl zPe|%y!$vlRn8rqRvmtb`Ypphw= z+xR83GPfbAFPMFW;O652`gZ`xe8-QNmH7@y{h8S(2)0QBe8|+6OpPayIS@%TF*}{$ z#wqNEC37WvGb?i?l4@u6V1koY0c4rt3LEnR0+~ON z)YHsfMbNJc;I~Z4oXSSb%AAU%7BV}M;4FeA1TxQZDN{1fBB`G-dlNz7M1ZH5lDU^F znU%R0Nj<~t9R$Y70M9Wc^D${=Wj;nyH!yo9!Se*)A&@zmKQbkAG?Lo#6lDLwck`Iq zoU@Y8nbN#Bl)hIsqLAXOdxYPl8Q4si(u-70Lz(@`JH*p%KVO`3d|lu zaQ8(37c(VuK94gib3TeU5_6uJSvWJ>0Nu4Go`fh6?|vv&}5T?X(RQ!+Pn9D&y>b(v*@(SH6QQYsL$!z028U`7N%e-|umd*pCP6b2 zdum^41rF7|lIs0|!)@5qc@COV&qAa2nwsNq%w%X(F9nC~uz3)FmVv#|*c*?H+J92L zmk&9GTA4VrG)!xOVIH)5mqxKyvg zbQtczpS7L=O;sGKeXkpFsP?^7Zx{}HV6$N+G$XO6_QJl!q1p>my&AJ%_$&Tw&TMGv z;!y36Ey1DMA5*<@ufcF5{w(%7G*xhjCxK;-#zyU#sooA8j>G2eH=+3kduku;F&wIW zG}UYQ77U-qpMCr`G?(E}?X9iHq1szhy>fG4_znK74fd*FqxRc6U{CG0soroL_QGcB zTxdpNPwm0Ii$k>sr+RyF_z5=o^P$;?J+&|Q5)ReATtN?qbFf+c0W{mNho`A!eu>Q{ z+@VvwdJCYpAAhzMf7SqptFX5do8BK4_UdErApY!j>@~us3pQ!ks69Q^n~K9h*lfaP zCN}G_*^7Q6oG)XvAdw&aXsP_I;Z$A##U^DS!Xbxjf?FY`lq1q2r zy)SV1J~mYsL$eEeYLBoU4%Hr^>UG88Mc9mA3eBC^Q~QR~aj5nURc|W}=V8-*IW#-5 zr}h$qI8=Lysy7jbL$O(j&17uU{^A$dQ~QgmS9Jvpf5M-&SP4ya9I8FXf8$W?IjUX^ zhh4E*vkID_*i-wEJ8-D>AyqGFH4G2n&w8wdrXdd1-ei9qs=Z0on}ox=u(|#-Xr^FK z?N@fkq1vxhz415m*q1sRV2#0DvRrLL4-XdnI8 zBiMA`2hCg9Q+u{S9I8EA)tiXJq1dd%W->NvANLFFseN44tGXYCKjF{5JpfI09ICzD zUva4Rc2%#*K^RuRX5G)ww7}k{*xQZGjlUH3&OQXa!}zmy__NwLRC~Z(aH#fxRqs9= z`muTA2s964PwfjY!lBw1R=q^pdup#Z1&3;{SoQL87{#XfF=!@WPwgMK z!=c(gR=p?=yI|Ad4`_y9Pwgr9!lBwzR=r1Yn2k;AV(>j&KKAgu(##vNQTxoQHw=e8 zusI)hoJV3$?LA+LL$&v;dKoyp9-Cvh3mw9q+K;YW8hUC!TJ<{Nur@Ylm51gw?BR*3 znHONA_NY}a9fz&3c@Vzb&CJFgp2M0s9vii9t$NFGI31fesz9?Adw6fD>Z*4+4r^eu zA9vW>VNdO~m#70hwb!nC?QwV}Ht*Mk=4R}v{r6QkRQvC$SF9ckx8u*MBtcUKhj_AY zW*uzQp1kV$ao8N2&A3k=#2%gpocSF#YM);9&OHx?$M9!O&WENx4%OcM6*yFT_o^4d zVMlD9x&WFO_SAmzj9`Kq@Whwouit`Rg}Vo&YypMyiS$FF)FaM&1|;n;M>M(z7Q ziaoXOuX-Qi@HuP_V6zw-JRLc+WMgR5xd5tn2@b1a(-F@AxEy;oVXqH1%TDyhU@wf# zLTtuiqs|%l414OF0o5zr6o$L-XRWYT5gT4aZ?GY&Km4%_!`ta}f68P@RLIdbL`@ z@F@Ol*2T~y;SkTI&Rl?vIxj)>_Tz93HuYgMBJ(iz)VT^5<4~Qepn7RIybhbEvB|;) z&%n-{hK)LZLG`xaa4t4`@Jxms*i+{;{DwnyPJ`;zZUw`N*zCr$8_vU?I?v%S4%K-M zs@LcW7?#6kSzBnDVNad=umy+e+y~YB6Nlep)44q~rQ1QH&WA|Bp*kNz_154picRW` z(5%Ov4|}=T>^RYzioN@>*@VqZY}5_R@y6^0=S`?ym78FA6o1z57HIIk@9OmNOuQIf zol8;Bn}Wl8v3aKpG7nk(P-iC6whCLyqfc@zyEg~ufR3e za7n8_oQoH%=I2%PhqLgZ_VE7!E~YMf&GDZ<0srqZD|anktmAdXqoeb?z;&AN=qtG5 z6Rzxw!j*~mzuXXRzEP#%K0k#&K5@l$M(K<)cpvyocmw@)^M;$bHp=b;?5D1njXJnLPNMmL8aS_ zZ<7blHeLy6q^oE&aJ{!=b93FiGTZdVgG+_xldS8KR6 z;G&a+Cr$kowIgh>L`Hq98q^9;e-pZ4dy&#c$j+4Vvg!SdZRPG9xO5~u%%ej=Y_a#c7N`c@686<+R2tf0nQd6KeP61j6= zQry))Uev2E*PhDZrNBfEYP_6FDQhLMx|p-V%bxYEZlYE@omNoetvpFt7m3_0oE%;f zt}mBDTS>Z+V`c`Sw3NN)MR#4-uJW1Ju61mZw9NthsU+!)y zhqoaha!}*tTuRv#iPiI*72a||-|Aj!g*R#-R#4-uJW1IH61jPt9NvyXUv2`G!<$$T zIjHe+E~RXf#A-cfg*WWbw|bUZ;cY&M71VeuPg3@?L~cJPhc`3PmwS)O;Vn>z9MpI@ zmr{0Gcfsnv5=@G_hQ-^x=v%!{t?(u>#0qM>l_x1{ERk!#$>FVV^yM~EIlO@mk%Jm9 z=Tge9lUV(mv%;GN>0523R(OjcVg)tc%9E7!lgRbv&50=F|#rjz_GZ##?!kvJ!U+RK1B+w^k%pP~)vUNm*-&+$EeG-at}cE}hEZZ6}Ew)Ob0UQr1;sbt`9ux7gIT z>QAlk#+<|oYP^*vDGN#D`g3x4`%!(lQB)3ZT1w=g#>=^svWFyA_j6WwgI0a32dEX^ z)|FU6jkoe7WiLwPCUbIl^ICnmSE(G{@|MU!jhAyNWeX%$^EoTLy|2F2Y-)u!1twNd z<7|Do-Bb>5w@u`r#>=^svL+I%hMX1NT3p|1FSWuOk`pVa@m8Ls zti43;8cq&xyRI+yGnK=ewG%n0@p3Mu%qOwx!&%{t>GiFSP%FHhJ+XosZ{8_;f*Nn-Ny^@k$j#>D z@R1Mta?Pk5J}837L5-JlDP=1qR?9dmd?<##RZD7xkJ2DkP~)vUN!hm&xvx1nd|-&a z+?7-gA2UMapvKF&l(LdN1#8%1Fe&aD79XjiZ`F=k;e%L+71VeuPf}J}B3F}>!^h3& z%LS+$KBR`oL5-JlDP@;QtS;rO@PRz~RzYfokMSW^P~)vUN!e`@xz3y%KCDPzZX}h% zM;sA3sPS?xr7SG5%Hpi>aZdVHqp1}>1d3Qejkoe7We-c_9^mBgQCIqM&r>;kKo*gM z8ZYNk%3hLKy}()F!@%^dUZhs|2r*&>HQvgTlzk|Xd!LiT2c_xD&7yMncr_viHD1o8 zlx>k%ZRD)*QF8iLZ%`|I03ES{8gJ!E%6^f^9pvQjF?;%Q%cvYaoR7#sjhAyNWvBNN ztp2OOq`0epd=R0&)hcR*k1r%vP~)vUN!f)Gxkj8EKBQ4!ZV#2iM>`TZsPS?xrR;i% z)wP@zKE_ht>IZ6t55FWJW zLs0dtj#4XpbSkle8gJ!E%AS_UJ;}-817h{%&MZy7`^U%15;>^xaxSIpO^MZOoE1Jo zSKsPi)CwQGORS*ATX~YQRT8=7oE$!0SYNIgmBWV;6FI2yaxSH8kHl&>XN3=7*0*X& zt?;qU#0qM>l_x1H)myNlEe@07u4wV$)cSIFP&s_0HIaiFFXvLq>PW0=aaQ>FZhfns z)CwQ^O{}2CTX~YQHWIm3oLtF%CUQ|KhYv(2a!}*tTuRyP600tp)l8p>)gWqB9+-(0 z)OagTQkEl;%jV?v8Oe>Ma;sq~k%Jm9=Tgf4Be8mrvr0-aN!d7R^^4OAYP^*vDSKHW zH-(c67|A_P<*tRPBxO+J{mfbI3Yb`ZNUhpBt)RwRd6Kd-`UqD4r@^GStN#XRCURS- zTp5^3QU*0%&ZU$kORO4mR(Bd%ZKqbrPAjPKR-UBn28rBtoZK@;a(k%UFsB^UcsZ9+ z=9gIYPWwcq>m* z)=eVUm6QA3NNymN+X_=j%Am%}xsmvbp)_eiYn;;f1d zF-ch&YW2C(3TnKSCn=jCk$Z}h>tZBVmC7Z-RFX2N@p3Mu>}`qF8=TdBMpo6RRd=Tq z)OagTQnp4Sw~~`vVkB3a%DwEAgBmaAQp&!QSbfV`Pf6>b5_3LCMj!2t=2iMpvGHylCmo#a+h&( zFB-|+N##btRFX2N@p3Mu><)?5ZJgD5BdgxjYP!=3YP^*vDT_$t!kpYWcbmLF)2ZAM zrySIHIhRuQh{Wn)&Z>ivRex$#2d0vDB-D5-Pg3@ZMD8U{?olJTTq>9Cl!F>C=TgcR zNvuBPtdd5Wyd#HDt9+*w)OagTQuc*JZVM+DFp`@@<*tRP*??E2!~So}{c=ieUABI!ubY`p+|xJG~tFzN{BaB`Jd%FXvLqnn|oK=^svWXI_r#Y)3<4jW4ms+iJT0xDs@+4(* zByw+Za`TPkhElnSFqNbXYP_6FDO)SCTE$t-8E=xZyQ$SerxnzAD^F7Py+m#gCs%HQ ziQEfRZX=+RltGP`b17wI{em@YDVP*@4clm$^Am*+QC$kGN|!#E~RXm z#Oh_v>cPn-Df^9DWjL*%##?!kvj0ltKH}t-8_Atro_t?69j20$L5-JlDP`LwR$Do% z+$kn0t3|EWI<26_TX~YQ-z0K}Ik|U@<k)M~iX z3TnKSCn-yl$oV=^svUem_Z*f*jrkSMd0czFFX$3Xj%9E6RDv?{w$yJzc zBKI7X+XLt%Wl-bgTuRvw605zORqGihR#T`|RbVDoP~)vkQ}$&2V#SN$zcR}9&d;cx zchR-EIaxu!FBYg9%*I|YRyXF0qz7VkL%!@lo4PwkJd+xT`Xj-dSTG#gIbu@N{L%R% z^M~g*%&3`JE+AOimWD}jm$t)<2tT5PJzy#!gc?uiQrzlGtm<-B8)lls?PF>+(rE=X z-pVv?R#JAAMDB7Sasv9=FB#++Ci=A0yD9K8gJ!E z%3>0^0i0a9*G%M&QMrwPPUN7*%ej=Y$0SyHoK@^~6RTns$d`;&fSFi9jkoe7Wz!{c zQ#rXEMsjCUxp6R+$U%*lb17vXORN@hR(HQ?lCrwg>KmsO)OagTQud`pZW|}p@+}j& z)>Q6!Kqo1K8ZYNk%8p8`j&N2Vzinc5HMP17n28nCcq>m*Ry|Fy`acsU#a;cEn`0t( z2bKE<(1{$>csZ9+)eRe`C*3TnKSCn>vGB6lMvH{3`rK;?Ql<)FsP zxsVIS+caX{*1au+?HD1o8lwB>cx`MO1-N@=NwQ2-Yi51j% zD^F6^Ln3zvCpXndu6RZAP2(V^9MpI@mr|B1v5Ih3n~bbVQ>&RyE2!~So}_GyMD7tz zuGT`6W7%m`?x<4^YP_6FDSK67^$KS-Ymtf7nbax?n8~pWYP^*vDO)U&Tg1ujHTz$#pf7>rUk^f~h2BP~+uX zN?AvV)lHn$_@yQ(>qV{ZbXq};xAG)q84|ewC%4r|Za9^j2UAJPpvKF&l(JD0s}Y=4 z_vI!j8%eEpI<26_TX~YQXC-nIIk|~OaxYN1p)i%C3~IcbODTI#Vl{`eT4`kUGPRoQ zw1OIM0TC6m&dW%|B2WIk)gc@(< zNy;h&1uNRJFe&beHfALE36<*#Q;8hZcsZ9+cD}?aiL+X>$|Pkgsnt-Y71VeuPg2%a zB6lSxm$ceM?rSP{0MJRwpvKF&l(L=@tL~gtkF_RNd#F`IU?x^j=^svd1M>k8)Pme`b=hiqvX~(+X<5l_x2iA(5NL$&ELXyMW3C zVJb-()Ob0UQno~5^m*c6O#<^?w#jio5zBYb58Raw#yCqzr1joJ%Qd zDY0tKS#928lCl7`dfI6PHQvgTly#EGb>QUA-D)EDG?hCB=p%YE>VYi51j%D^F5(pG0mXCpX4O?sY2H52g}1sPS?xrR+J0)iaz``gW6)y-lsg zIjx|^TX~YQxe~c|IJx(X0q>lzmRE7C5b-##?!k zvV9V{A2_*mBf0OXTzi;GQU*0%&ZU%9>@QfumV-%g*RYFrnxt$WwaRu{L5;WaBxM&! zy zFqNbXYP_6FDVr&=n$B6x*<+Hj>#5b7PAjPKR-UA6sYLE$PVSPuCUX6$+(tkrDT5j> z=TgePl30DoS&jSN#419qE(c~}1vTEvla&1-kvq!CZ8DO3g37%MQ;8hZcsZ9+c21UH z^C-_vNx&KTTUye@m8LsEK?$v&dE(Ql3PXPhQd^mGN|!#E~RX=#OhwoYNe6Yr_^e) z(+X<5l_x2CULrS%ldHPl_(+X<5l_x2ylr31% zmWN4kSF~pzGLfrMg?uY}7|=<|pvKF&l(GgAtMfRkcE6Zd)uvXpftgrAjkoe7W&f7Q zUCqheXC&8>%K2d`k%Jm9=TgdgORRcuR&N|JNm(mu^{~?lYP^*vDH|-2%jM(_8OhyF zIf&VFsGm=|H<$AzWk}|0AaxSH;zr-qovpT4hLPM4RPK71N>TT=Tge9kyy3mtlp?%lCpl(YOT`>YP^*vDeEJV>&eL- zGLjoZGCwj&g$VaOj0(JT7{feP~)vUN!c=q+!9W1rIFlnDmMeBl9WM>mvbp) zUrVfZa#n+?nWStrwff9y1vTEvlav+9DSS~4Rmvbp)4@j);3))G|p~Cu&u)ro#$q zyp<;@+bEG+$H`rOu8CZb%GH3WBxO+Jm*_L@X)CMS39c_wn}soXI@ zCnUqxUfRWV|)M~NQ z3TnKSCn@_tA~%ndyQHznUxD^it{O}w$1rrB>sdR#4-u zJV{w&iChCtu5?qA_vbxSZkJOIYP_6FDZ5T$^>5Cqm66pbYE==Yl6NH3cq>m*)=whW zo0A)AB=-oFyVEHLHD1o8lns+u4d$%YH#2!hK2EJhIIW<@TX~YQaT2*FIJtA0o5)S0 zaz_B2yg#AF%ej=Y*Ckf7IIA`-Osr;7t2)3;tf0nQd6Kdf61h(}x#31~3#nW$m`dcJ z#>=^svTr0-yEv;&7n!7NF|``yw1OIM(9xh8OfD9gX}O}2UAJPpvKF&l(L5;R`+vO zPa9cPqE=Z>E2!~So}}zWiQHsPZi|szbt*U4DF-!P&ZU$skXX&Om`aXiP~+uXO4%Wa)d9|G_vI#5EveOcPAjPKR-UA+ zYHs0+YOwmR43pxnXd7K&B9}$w%E45UGN|!#E~TuA#Ht}@wXCg)RSvak=CpzuZ{fGKWWmBnD>2?k)sPR^wr0gz<+z?J~ zjgj1LDi?*RBxO+Janws(FeY_|XHM;X=gy59iz=#Ic0x%=0R`6B6oSluLFPB1y@ACi^j zJN_T3DarnD_VIx~D>oVoM54(9TO?-(V!l*g%$HO*7_A!$$LdA`X@N)}Z@CH|m{_f7;;G9K4lfSB6jb=HeZi6#l*B z^HiV%6t@+HBAOHM$7jgVXUMk2aG8LiZ&4YNeOVBYkS`XF#20y3U*rK>B2NiKA{IrG zqk+i4U?|-mh{S?vLBB5+h>!H5KGI}cNb?0q4j8wKS1P8g)a84{34n^bJ zeV}hQ&z9X5f!*i?+vP&&Ox!l=yREb3c39xntH^FCK7aq*941Bw^f`XA#L=;8ae+tC z58e3J+#d+R@jL!ItI{Ctzv<=SSK}?bb^oS!>?k1#6geV)kt9bTElgG}(1)pS3nnOm ziCKq9hU0Q576}wQ>4kA>tM7EBEvM%tPQw!Il0 z^^1fmY@aG83swi&aFma~I#{Srw7?co?Gl0o(_IN9N)Cln1HQDhU?> zy(GTxoUFdbUl06hFFtkE!P*}TD#Nc@`Cu?uLcR19pia*A#US{D;mr_@@?Uo}*0*n9 z%RXOXzvz^)PYVXJQkli(wfgMsY_Y#7VSm*%c3gA@PaLI-cJS__&)d@$@23*p_fJw@ zwGfF0vI2hi`V_v|;XZ2))(6kE1^%4`eAOufZg?OctN#i-X6qFwTT-xo{^S&U1#}MQ zGxYJN*}}g-f}enIrcQjmOU?V0-utk1Q`7T0wWu7v*eBV2Yrx_qh6yUiA_Pr^Gd zk%xjJ@X{pXAHVn?Uw+f)K5UD7xP&{QM_!BE$yvUXKvv=EBR+n$A=;lEPlsQ%^4akv z3I66&B5ZBpyA-<(Lu|bw6-o&{AZVPX z;|W_YMkC3KG2N{f!{*mtuj%W~w58ihqWkX2sq0(=#s5pYOy7EmE$hA#Yu8r)W=VEh z8y?el>ErLPg+EM!|KC#~=mq#Xhwnf1-H+OGpCECcf0DWzt|reOs{JYVEcjI`pK@Q3 zc)PZoH$2Gv!`tvcbCLcF(9G5g@L$ObkkBn^`W=s*7eMD=bF;qvjkfH+lGxvq=z~ot z7S#KKJx!m?Z;Ncdglx8pWOlz~AE8e?+!k@=(t?kZ3r=EUvoG2w=#xKXi@cG9JmG%@ z$$`K$)qf{$BZea{xuvgm|dm+(k!?2 z(qv0snuLG5mEe~~XT|cZ{)_RotrsIt@?xw#h5j}q|6>gw|6o;OnD%F;KW)7T6C^Lf z&QtnD&_7_Q<5VsESLGb|RV$xl=SW_aZT}Bm6`f<%rTQ;OOIt6`$%%gqFSR|2jG*Sy_FU45c+Z4oV$5Dm2djy^%8b*GOu`ckcINqu$FN$K3=<2HS%&bFkE zNu&lRGE?}cnZLhBNZ+czEvpJ;1)rm`?OR3RvPZZzQTz|~59$Mrwgq&y1SkOqsN+DI zxAS~KU+OtqQmrIX_a-b#C!~^nA-L_S&KhC9zS?`X)VfO45^zVNzvt`t7eMjfkn8oq zKC=bplYkZd?x26a!(6id&4~8tEB#>C8vx%i^7pg$!m40kYuzlY3U!}Ijj>e*7OSWd89NWksDPN)sdg*#XTqy6I_ zr>@ecy4)63^2tb*7R+K&)m@+Jc3V`pOQ;fXZ_L6}`2#r_Y0NPzqVE*8LutYEY+p|NH{oV|stvZN_DQG`@Db<4VXKfTIT#CYH(L5xA8fxZ zurtaFR#^iQc$|+0^qEw!*jZAjwsmKq)u8sv+l!jpjFzd3v9 zW8G;BYq$g}0hjX>9`Xs6&Ov{mK3UWj*?0-rgRbPOfGkH2B9*|UKYUvO_j`}{ zvf}?8_(Gp*i!G`%DhO7x|4G~%^90rL1&4a92Yd*Cdn$6z_&TD`cgPmsMH0SzkN8e( zxW$j*8TV*^RyYlQ)yiju&JxE2{(XoW!({$3g%|1@HnL^dS7JEPt1O~nGVa+GJm@HX zB-`tAUSo@MjD+*qlZ2C91oqPx?QKhRwnTJ-r=o?cLgwS{P<_oowlvpDG$)@Nn#nq6 zrseCSK5h&32MOwwlLS@oB(_=ltgqT)Jt|=x?w$~(mh|I`_f4fRsBm7j_JexY76#S32aW{VAGf< zjaMI`{W0iF_*E+(gStqJ5^!R4;afW`D=@gAAAfz`T;D3$menAM)rbV<>4X(LWn1HV zmz(s>uD50OjKnN~8%uxXOZQBIRDCs{Ew$+qwcJD|4bDI0PExsBA8ME_s6`T}1a2y& z!+BzXNHiFY!NWHBlMtWQCwtNs*>(w80<)DKg!9C5!toFHZ|FnKwgpwZl3>-F!0+_a zvvMI;5$-I+75Y@4*rKW{p-SLJQARi#%kjlB;)iOtzSLK?q^_1oMH6>q4@Tisi}*~% zMrtohf49ZdQ^J(M^TQOA?uwy?KG?tDSFNn$$4bBwcz#%jJ4{`ykJQ2z(yJ1rQHgu= z{k2pm_{gKS9^=0mJL$7^u*J4a!j`}_d`?C<77qP|$FH+8^wk2k)OJhM67XR2!cW#Y z@DR~K;fU6!>wERR?y==nqVmbL+{%fBGvU#zfz1gvYIz@vz<;FVhEln!vexJ;uC%2XkSIRyt)j_o z>-OrKeq+n@5sB&RCzGk+9!sfvwLec3hhMd_Jf0>&o^kRa>)d{>w!UvoTfR#rz7M(T zTX=;}{6FWd_3pc7U3ZYVFFJo{l|(ZnOtrVKY>~Ld_h}$ z)v5^A-jBPPK*Fb!!Ta?QN7+J5mLMkZWV5&#G`fD{d40`Ewlr^%XujZSB$Erz-P60G zW3ImHJGNB&OH>nhh2%doT5yqM{6pmD`f_V+$vrHQ%X2f21#&t^#~=0mzO&^wP2%^2 zyMB>@L4UyK_lI*su~@i&AQV4_QVC-McW(#ehEs-c*U2R5L)Ebb z^^F87fg2)`6y}S>EA){rvxRipX@YfM0&d=0_#HJM>29)h)931Hi|a}WR|4OBQNJ%M z5M)lB$kB(&wguHq0+qlosEnvIlIDJuD$h;BAR?)?qK|J59FbG)3YxG;!+) z{Z-co`dagBX?-lwO5iz6$8RYbW_E}+>Qk+=MYT&pH8O$0D!Bb|II4TpI-rmClP$FJ zRZp%3#K0(A8WIWUoIzgcKJC?edH7W;tM?=cS4xpH78slpjs~>O5x+oRrM@kdYb7d0 zKPS$ilAIC=`%?XIw^c2sw)#w0+G6rcn2NqwkIw|#)K(C50t7S}xzuA(2$ z^|XTP-K>1Hau%9CpRmr;0sOW@BdhRn8$3vOp(C! zDl$wcfR{}$PZOD;?=j7m$9#!Lzao3UC)eyi%!fBpi~px;vA)S7TP7PNCRsL3^#3@0 zsqeGRme0=;pLDA}I)9FS)2BIXi>AaGf{zzP|8o=x_)>!*_`sD8w;N@Sy4CL2ULKzg zziMT9TvftS^rJ4^62KRXFdj|yJ(}3^Xe9CIR-|_jJg6|2k+?x$;yPOrX%dM(MVClU z@%j7b<}e~D`XYU8iA<7+_$-LPlU`DT8g~G?OCM#3EtD@MC`CJfs5eY<1Y*L3WSqXo z6Sh1moGJJ_W8-b3bx3_pUu32&k+Z!L(fSOyOkZS)Es>r?B#>7z7V(9mY2gUm(LKLY oUd3Ptt`$uU^vw#V=l9OftB@M-!;_Nn?VsN%qgF=A+?1yO0~K_tGynhq literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree b/v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree new file mode 100644 index 0000000000000000000000000000000000000000..02d4c4880991e92674216edcb707e0104cb62b41 GIT binary patch literal 889762 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 Zs7tmfiWQ<#&!1AaZ*kA!=CuU_{|8RG0fqno literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.doctree b/v1.13/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.doctree new file mode 100644 index 0000000000000000000000000000000000000000..31c5308e13b3564258afae87197df5ef1e98a8d0 GIT binary patch literal 21532 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 Njx5rNDg0Tl^DpY^V)Ot2 literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/clients/alternator.doctree b/v1.13/.doctrees/clients/alternator.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6bb43e8374d6d1a82f2b2bc7a1a0f8b65ca90eef GIT binary patch literal 16848 zcmeHP*>BuPdiN#UY8^gi#=9Gjof^#{Id*qjBcEE!SXt^B3$kTLEst%?OlUS)EwaTX zdwAGVJX%bE?BN9iWV2i(8|*&iB|u*DkOlIV1Of7#e;~69pn$9`e;?`V<*QjMMXbjZ@*rRlnV#U$3#ut*aL=SJexR=GA6H z9lxYrzQVbFMLVxuc>l@;e(~!27cV#YWmUg)d1B&96<~YS7~HC6nb?k3RZ|pI+InQ1 zGzN_~jr~Cb2|bqLlU_$9X+GR>xyRkdT)iYG1SMz zg;G?(n2!DF*fq6dmOa6ZmH0osQ32y7ZCb*8<;UaY3gNJlA@KSc)`TL_xsO%7O3H|} zm$HK#&pq6VA&Vbh-)!eSC)*PacDPMarK|#1IhKjFDWv|OX$w6j^)zU7Yy%=CA8qm_ zAKlC}79J4mhX>kgo*(fdzuVxIm3TOK{`CAFDAnHF*pIE~PFpqYXaQ!0H+|Jz z=6)1TK0mdi@SvDgi^Ag@btN=8Ewk2vV*WfFz%yU%Sf*zB(f3JSO~Blr$g7~3&@4mU z43uH2i>TXc0y%T0st?$XpErOHj_=*GXU4I8S9RA&9%g>~7E88qE^ii-Hi(Hm>N6YG zgL-R@ZNuKuBY(^>gVf)Q%rVnV7hkQlb9jY7n4adK7fETMSP6OE-j(It&=$rHbS*L0I=F|AlWoI=@e7rY^1H)fofT6BkYOk8_Xg7 z0O0*6j=Mq@1Mq9S<9p09S2&xqmlF_TwoR4KD=hWK5}DW^?vjJP{Ng8HF%RVw+t2da zrD(Q`AHVz3c<;+Eek!@|%P)SmTmH*Lz6-+bMSdtzCO_Fq5t8QlV`*g*t2+qIGa#+4 zbeWIJhHzlUKOCbI^4FeFF)SZQHiWLgG(}Dj& z?s@DEdU@5P2EO6A=I;v2P41x1n`&VB6;`@Q?tpMUKMPE41v)})ci=@hO=dVxNNqv= z3zgwJE8G@pSJgD=A<_;xUVve%l$IRUG@*8!z!(0-Ifl8qyorxf{g)eC@GK19?|75d zssjTX``8uox4XQIs^^otl5@JN(rGr~%dJ%mziqwUwed5VqjBv;kd~92f5;QEC^^NC zw_hr*cL{~C{lvj1!jbK%)N^u#GGw6moUulDN7&1HNOZcG5bVY+)>axbVURV)=IXgrqbr|`~8hCEr|1TqdlNrv~< z0Vu*eufY30l!SD7HXXLjS`!CpiA&_Fs>G`h#dHvyj z-|XaBX737fET`Jp2a9)ZGY|O? z-d0F*Dz0O3kKMmnTdXm9W>ai5n`m?-P3QeOgBUZiak8}vMDIAMh@^lK8TX9`6i&zt z;#-nVAV``G3J0`Y2&2mEX|Xv;riKSRD_90U=LgXmrCi7&^D0}!O^2rM*V)XiIVrU1 zdnUI(CdSI8mU~MgtxqA-dx;qQQ8Kd2{xy~;4W6dtnTJTnli?0|I*)Li!gO)Up*J2; zwub^Cm$#7`g431D>1^iqQY0icLmH87w^mNg{aIm~tsyj|!ZVl$N+PSfF~itj6sFn| zW72yWOOPhv5c=c7b8SC^L{27;1u}M%{8h}(OE7Y@`;!z4|0M7!qf`*fWA!ALm7I4V zQwCz?XasLKOQt10ZiUS?MRLqgA9Ly~ecfE@OXkLPvne7TO4F6#OjGha5aBPKs*tm; zT02OYQSO}r?Kq2vbcaQwV)wd%l)T=e;~G6?ot$a^f3jl|mT&*>5;rG`e_xOv0GB_^ zYHjkp@jt*CnOGG8*j}v8Cer;k*xC+KUo9zqV%X{V--0&yl@!AVKfol@NnXfoi*(Tw z7qTGF7-dF>Jt~;|M~rKR1F4nas>e(l@=8LA6S%esVXBnoe37*#v3TsrlTVo}WNu*F zv{G?y|B=XfYffh^1_W>geh0ZIv4o1;6fA$0Jyu;aKI^){5pF}_$Ku>I-=jDo`KXLp zV@<%?9A_bjqJ22zDh1kzfVt~}?(s6-Irap~M5X*c%?kgH)hy)`=wyxV5|ps4C20WN-BEHz`6KRz^U(A8H=N|E!A-j$RcNN zZ&oGy{2~^%R0oF(Ux|)K>XYWpfqc7wSK}AbN{5%8&%#K?dfwp~&F>Xp>#e?we|v6d zDdwZp{6wPm2q8l49pA)KX0R3Uwmqrk0x_w#?vEs5(Sxc0s4N#!t;vEAVA9#7Otih$+rt+J4@GqD; z-p}j}rFM5}tUEJ5M)mdp*hdjIgpZHQMqV8+YG~si*O+p(J3NySqNh z&Wx0hEKq6-vv=>zEi5Vb7H=uD4}rQnvp1$jB(uvk1Ssp1SI%FU7%9=+2iIpkhvQ5H zGf&UV)arF*zV=X=o5e1kN{T4lk1_HtQM!DVGy$WnbiHTv`^Ty&kUvWl+yDjU(%awD*H+=J6xe}t`r z>8>;I0bwYG1dxIHJyMt<=PyNoJD*H0c-Xtivi`I%Rd4qOK8lPt<`XwX!XaFh zlOoI7V^f*WBFF4JnJQP4*_o4FmXKLE@P0v4Z3m?KzmBn>>4|!Xzmwm&fYtob?TI8xeqvGB* zt`FVAe!QuR=k6n^#S4w8@_&WC=R;qrLjLlFRmkmb6_UEw55~aSOVc-Q)n;q;nZ>!g zOLKP?Sn~7!`S&lB&rg)kk1vg1nw+>ed13tQ`SHo~=acUjwJWO1FP|^#m-%>ke4O*L zdi5$VUusT_t7>yxzobu4*P={J&n(S-R4Yv{EiKO7xVMC*KbTvXqm}E_J!V

            OFg; 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 Pkwxd7i4W5xsq6m-g4wb= literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/clients/discovery.doctree b/v1.13/.doctrees/clients/discovery.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e9058629ee4865d7d58345a59ede767502ee01d6 GIT binary patch literal 16073 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 literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/clients/index.doctree b/v1.13/.doctrees/clients/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..662ee687da024e7f6fa65f84960c2090e9092ce7 GIT binary patch literal 3759 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 E0a9>f+5i9m literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/eks.doctree b/v1.13/.doctrees/eks.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f0801717401cef145b1a94006b83f0de75608623 GIT binary patch literal 23049 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 Y55*4C?7hykjV6C^sNl_hf*sTU0k$%tYXATM literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/environment.pickle b/v1.13/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..fe968815400057d3d6cd2fd9399afa534d543265 GIT binary patch literal 747149 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 XKa@NVu)+P}yvFoS)MM>dt6cm)GXXY^ literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/generic.doctree b/v1.13/.doctrees/generic.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5f506365a7e145b5e0584d48a4bc2befb3405901 GIT binary patch literal 65835 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 M-M4qzxY6MM13-o=?*IS* literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/gke.doctree b/v1.13/.doctrees/gke.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5745e4702c3514343b52cf85cb27d5e417874b1e GIT binary patch literal 30395 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 By21be literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/helm.doctree b/v1.13/.doctrees/helm.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4f5a1ebf2f8c7df072a53182924ecde1e1bf108a GIT binary patch literal 44205 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 literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/index.doctree b/v1.13/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..30e8cc5c6044bae3f7aa2d501accf5a211b1fef6 GIT binary patch literal 17713 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 literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/migration.doctree b/v1.13/.doctrees/migration.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d7a58bb1fb015571d168ec8c983cda710e6ee476 GIT binary patch literal 33862 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 literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/monitoring.doctree b/v1.13/.doctrees/monitoring.doctree new file mode 100644 index 0000000000000000000000000000000000000000..aa338e54a98063b09bc83ae2b4cb7c37bb6c5930 GIT binary patch literal 29911 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%0A1G|hzg?*iRAAHai5^KKP$kOG(eR)oLnt})bu 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 literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/multidc/gke.doctree b/v1.13/.doctrees/multidc/gke.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b788377ec00e6c0c5ede04b435c12694dcc3a8f8 GIT binary patch literal 29444 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 literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/multidc/index.doctree b/v1.13/.doctrees/multidc/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..176fcc08d5893ca776fe31ef72c528268391139f GIT binary patch literal 4530 zcmb_fU2hx56_qTL5+zZxoY*a3D`i|HagdPAhaJg+?E*=V7a>HD262@_Nq#@SYFmoj(@Ca6n%gDJ2pJcV zqB6gm+buWUaG`tU`>UFUh9|Oqoi$jKt=`SAvX*TaZUmhfvIlR{R3yh-jyrKC4DUw7 zkPypL)%kUJEChM;^-d@<4TJ7***VOHR7q;ESLYQ@&%Q^eZnrBc$zee`|dkTZ@hASZ$$S<^xEF5ukQD;b=~({?iavDVV}#0PJ2q@bWa_wWJ6%r!g0x1 zk(A8_<*j!VbvSfLCl$nu5*2sw2akoT&SPTKiHdkS0v-4OU9>-yyD~-qsP6$9u%}!Y z*e`%Rdm3c;B|gvK^Bg|U16TF}>#|+;BF@{Wa4pWg7AA3;WHOpLwx=muLNJohC_2m2 za_mtHu}ii+hcYMt1Qag&^)3eF8oXE9riA@YcZJu zQp57YWzdSGMQ(wFW04H=6We4wijayYwp}`?4Qn!skt;OH50~tEk$F0i;uv$+kR33>?dm)w8QxfUel$7Q+iY+bLEo-eQ2s~Y340G*{e-ah50}}U0sGAf z`{0Cqc*1^rxWs;U!tQz&SK)E$U>3u}kOB*=e@Hl5_Gda9YVZJhoyfpZP4We)ws(5H z&c{a|cOU=)I(%@@IRIC>%*5j0qnjL33}L%3Ry@ zx?)sDuiU=b=eIwq#CiqZW^&HH^;5dPXb*n)7IRM&0Q^8NXo_8{FqkL4Z8~WrCbwrD zK)G#A0h3Mv9Li*>sHWB>KKn*A5lXv!gq3Dg?9WK6 ze=n$*t@!7IHvIuXGaRMq+k*DjdY$hYtncLZTY~j?AE&|k?_#jn-{-QSjuHC@`zQOC z(>lbW0J91Bzj!$O(}%S-#g74%ZRmm6x_I*vm zB!&oIN6I-xS;-un%XTZwl)E(nUCFt`|gKhJDA~KY{ zy5(#pnMpH~57_p=w#HOaMNFcgp)E8YR2vefu8R5v1FSN^<9hj+DS@XpidNvdEH{dU z8?NFV=l1+4NsLSkof$-NZM()5B{P`1q;}x_u{v0-=Ulmj(GOs1P#Go>W3GwSYlHOKeM^Me6ZDp3I=G7_lY2s_ReLb@??TO>0{aB8w=IJni0vN#QD{sGm( zz}*!?65$+f7nXwkF7~IURMRX<0;oD>oukt<(KMKSv!F<5f+McE=jV11aZQH89i-gl zYLyqru}vHXHCPr&2B+nd+D)ZiR>k6+|TU=H?!CP zW(J1FuKzEJ8BM#-ymSqCZmChY;NDqI-9KBoch>~R*9lcUPR*!T1KHnq#S)9P3>hMY zBG=rm*wMQDX{iLeH?X*xnV|%|2(Ju`f~Q?D@HIe-U+;R`eR|bGwWb z`Z9B?jH)5qbg6|K?R{KloY8-0U$d{YZ8?KEPO*dd&szLE911~?hl!|pQA~Yu!C233&3SB9s}?VvpYspRRmO?@g+*WG z2(C;}k`Q-9&?UDUVIl+o#~DycR^KS?4{-QT^LLRIxGy8W&`xRaz%N(}%A9$lHW#7X XD6egx&e%n9J#v~?%7d%o*|7J2W~0$8 literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/multidc/multidc.doctree b/v1.13/.doctrees/multidc/multidc.doctree new file mode 100644 index 0000000000000000000000000000000000000000..747be7cb8b4502c7da768b551d2b9f3ec32e8112 GIT binary patch literal 69887 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 aHWB4ke-l)`vRM*)`2RD&dmRW!`F{Z^PV8y` literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/performance.doctree b/v1.13/.doctrees/performance.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0a2f765bbe68c31ae99eba9332e97a8e4dae21a2 GIT binary patch literal 15268 zcmeHO?{6H(c@`~`)Ey;CRBWY*EOi{mwPf>-k}X*@9VLyG#5I`EvgJB*6XP_uJICGQ z-tKC5mK56th}#B^fI$)@n*<3E)M>x;WB!Bu1O3|11rihpkpH3R^Umz-?j7%rq$A5N z5CfENXXoepKJ(7=zVq&PXMg&OmyhWG)X6mV{P13zyKWe{BF)t?H*&Ip2xb10{Nj80 zck&CWk?@@~$`VK9>IiB$o*%f02=jMywMf;aAEfP~{d_7M=|^GN+?)00y!m(Y3tmIb zN?!(|_DY?;DUx2440z}WCbQ5FH*>0u%8$M!?$Ip9*7;s;<~A2|%tYqil4^9yse4D& zTruMf^=ROSBHzfmTs66riQmm6R!S>7>boheV%`aOnxYWDXG1a7(yi0LowZi?WgtJhZem2U5)UYB2fkzZRC!d-PPIai)v zy&|r@^!(LpJ#me@FJ61$h1C^IJ6$o;U5P7kvj^HiL@*u%(GDcevQ#7~ zlM#zz=@0zB7i>N2iX;>e6w``r8?BsC4{NwW!4SX-3BWtI;hiTPdVdMUc~1f%PvP%r z{5^xei%^R9oY#UfP}N(m$!)=)xPsv+Tc8#;fcYWRof$5xCh^w?p9CRdwwT2ALV0aF z=I!>(kt4SxPbA5`mqddh#Vr@=y7A^$m;?0)m(d(=L}Ab0WInXH&HaFP1A&@*w1;jt zh14xlw&VGZ$5JoK0+)65GKJf2e$x{n2GJ`=e`yxSQHo)pd{nafcbA#;1RI5xlK?py zQ(xg?5QVoeniFjUSy&7jq{0l|Zc_g#8*m9@VcxMgiMD+gL&X7i1VIsPL)Ry3f$91| zKr=|QZXXte=3~r(LEZ)LjQWRVti|eNN4#Nf#!J4*cgsbJl3{jJGFa(5#nh$&l8ywWF^XCsTBWqg^R=E=Lc6|cV zEu)0O7YZTkd28j*TTxVf4lQbb#o0csp=+oUg%mp7Aab_qviLQR{kL(@V85@iadO$d z%!AnDmz!ID=&sc)UvnTNce&(iO-9G=8gqgyg|M4xEF2V;CI!ElKCy0z0A?ggbO9SX zTnP+2o2FI7|AUztjp3a8Q99*NRL24yZf1NF)NS4sJ)Q+JSB-mvU@eVdg~8_H1ZF$g z7Wx4FfriNW_2cN+s&KOIu(rjtq$L1l$ib7;w(u{7ehGFl-)5&{^gG2|bib`ON{9;{B`l zf%j{oE>`lN9xM6(CduQ#w+A#Y4oyKa$8mmhS9(zhlqY^HE0O>nSU<=80f1n61u;!B zp>5W@S^R{|1lT;RDjoh*!7_930?@)@)WF}etVvhgBBmHD0|s&@O174n>!(|Q$hHsu zxy(`^jJsr>UwiWnK*mX;G-Wq#{w;oouEtY!#((Q0TxiX7|F#ad(KCGX+ zu`VYXi3+!jKXNm2je>zCKVh&k+J$6rwEWGG=$~PUwmryb0Y8`dgMn~;%purqGjuer z&JGdTYAl>&AqK?wgxwT}gg!qiWWD#XFSmxj|C)xs(U%TUv~ePMkYcI;HZ=VH06RYs zV81W4Lq-9ymw1U_AK^FVF@BZQ-%dG+BkJErM`f~SUlhPq) zT=PH9O&4zk%b~^Y56dSf!Sc2P5B&9zt*^rAq!`E!-%ZJZz;DR{!2weaaAf3e0CE-z z(0>+Ee9GDw!ps^Yx)BJutbY^{lfu)*i5BU^3vu%l&P#+ogN; z-p4NN3Z4B1ls{!ljeGwup9D=!TS7w}MTEBQY0ZD3o3NEHmi|onTyCfS*%3iZb|2N8 zrh)Jq9`)oP$P32W{|xnTwk9#VtNWkDo05$cY`-xw%4Cd^2Sp){i$=D6 zJ3k%em}yU$`TqJU`W)jAe*nu+<7L{~YYq&019KS@0|p)O*qv81P-+kq;of0yM7I#W z01XBeq2mVLbd({Y%N$QQTWl9JxiG3XOpv4E&RY9mQ2In^Vu(}-=99f<13{dITtqOT zBB)xa{lY(H3c9i`c6P zd#^O*eq^b33uL@JtL-sws&)VJP)eukl6Il=pBF8m^wLkg{dXvQWf$~EN3YDqM8Ud< zh?ro-jj!Eece6-x+IS+wi3QV$4XEitfzZ(%1xO5-O$(tcP#)T} zW(;y$f{44szu(OBPNc8t2^zd7*E=;vKsSRCT5lj zsc)EQ3N#E>32v8QIv}LlI;9d;#HmcgS09LsYy0azMqn^Z3rb3&Z+p+E^0~s%Z$>(p zY&=Se(tnoPn2?$!DAha;O;CROA!e|4kQu<1Wcp_4VPkQMen!Gz{Yq};>J{%-4hiHB zHJa5D#@l+B8=(T;=*lZQYz?oqwD!{Z(i8)x{t?%tdNXFRbr;K>tWR>f*e!iVd&ZaS zz|aB$3MC3?_f2yIL|IKT1MX88d^+6hZ;|z*mrdJUwZD^xKZ~0B|1h$XM!`1beWO}K zrJB)t`>W>a6xH1RI;Qn{2)b5swIX8vt%~7P+~eH~o|JLAwz5L!k8$?feq<6jBu}@} zmC{1D&|`~&Qn-T<$;#b~<6dmHMOQ6|fYIBPrwp@iaa~t>T()q1pSFx$7cO4hjnbCp zimj;E!aYtwA}?OlhtgihT~eHiF7cxfAqH(>(hO+;bPAOLQgi!X9WMIno&0=YY(NOI z5Y$IY5#;rdCBSx~@EJ)55hBFW#^ZD(j1JBysL=NKSgF*c*hvY{5b z88VP$C%{2d+mTf|UxVIskn}Lv^Sa{i>gzU~p=B&6yb7LeI62c|g+W2^6HyI{Op-M& zUh1GMWK9OANFK5q|G{=ziSCs{i|z}B=)P36+$Tq^f8Fe8+ib0D*8d`Y+AxX{a!ra6 z=zA#NEN;=@wh$g`g3&?+r1e$X-3($jw{PR*ynF~jKlE`cUA$9>#@eIF#@oX9dZCNA zOQB9}V|8JhRl1mLXVje86}g&uR$J&*8teSJ)#q5d^TwA$#Kuhq6T<8INaiC3hR%O$ zRiL`DW`&3%t{bAA(!P8IJy#0I4y}MM?X@FiYR2vJ=x+ZMpd$Ha$okgve~JX4iVT4u znOqJMMcYu9-=ao0;G3OnSAs@`}y`NO5tOhY^1C0EA1ChKsiQqKPig5A(L#B zr7gM^YF$PR#uD5grY5bZRZOO=z;z9VXxsn;7k?{23_)z9%BZSSj2;{WGk}ht9V8GCHU%c4hU|Qsv>biqK~jb*;VJ z6MOCd6pqcf=5$6;{I!U6+PwbSn5SzQS9=Goznw5@y^8I?4vTLT5Lh{jOnUt}!Q^wX z{BpuuR*y+IoGEVH;7@iy!8TzV%$F0h60z1GUq7OnwvKS|n9+DMYSGCOija27uP~0= z67w~NI#xs|@yW?j`3(v3;bD72H&=6S^8gmFoe*EeaaGM zgU&s=0L@XdND-H~L&+y-nxf0IrUWSfx}-zbJstZs2}Ud$6rY!DsN;!INujK>UuNMdjaDi+%_h zb>Kor6pKctXC`~C)fO_Ya`nXU%MP+@qNL-2j0Ylt#A&JyZh21{N!NOr)xG5E+{l}e zF8cq8t*91FzttRU>nDa^j5JoKXbr$x>On;Gg+Pu};v#t!5_j?Z2);Q|pMvKVC2q$= z+%b#~m~5yy6L}$t_%5(2dOmK6=hPz4WYnpO)FVFNb;8XCai@eJ1gi^l&QZt%>hPp4 z(cmWaS4D9uGB@fVhZeO?A)H7-^7ICMHuh3$SQwb&Qb!c;_zpzmc6sPT2=aaUhWOF4~k5f%O0o3fk+k<+f zP8}9;>*-5ZAkW35=ZthuB~|x-WxFSaMUX|(XxkUEr^kQ+SfShk4Azjmi(TYOFJC{V z&Ho55 z2Gi-UG&8bFzzoQti!Hp1DR{WI#UPJ6sI}D*1Ef`V@HHM8T0QNh;(I!PHRu_$c3&M8 z;WmBIrj8kNg8d69B559ZK>(il4oCxM36lb}B)-vu3CA6pG2bU~x#c3qDU>bxmD2Zi zpB}C1hx*%`(gq_Kcl65D=dBB_f0xH_^XT|vSnV0Ayr#ra(LaV}bTVNrOVyl^n5Vzd z>o@S)y2NUx92&pMfj>KG;4%G87&=p@ht{s$2>pTJp2_#;G2Gaxeg-cxQb^A>S94^A zAl&aD`JM{R?+g78U?=;(qJMr2ve5q_{qu8r%<)gA8dR4)Skb!DweRbi_jRrNnfD~V zfzus$$8~G(x^AkeOr}oM_lq9=1UwCMh+{^kgv_F?XOL1ap}nk2vA+i0C@8m}E_`gH zu&mt}>ak%*)s0RM^^X%Sk#wX!KH69D2E+nJTSJsirv)cMEJ}Y_ii3Op20<6)KY?t& zm%j-Egordu8Qi}VK9m`-wB19+3uUq1H4A3+HTwH`mUY|z2bZKCQvd(} literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/releases.doctree b/v1.13/.doctrees/releases.doctree new file mode 100644 index 0000000000000000000000000000000000000000..39f9452bcbb6c90df3fa87b462b20d7302250b38 GIT binary patch literal 40351 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 O*mGV@559{R;pBghg|-F& literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/support/known-issues.doctree b/v1.13/.doctrees/support/known-issues.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1a236abd082be7336ea317be42cb665d09fe62b5 GIT binary patch literal 5378 zcmcIo+io1k5fw!($>p80qy(^}jA1w?CG9S4NhYO-TwnyS!-xhPIuA0Gaqmp;c5~;Z zzKG<50q4Q68T3N{kKghg`GO!{VIY721Nnoz=Jd?;%yLNzlz|9ZVy601)m7(I)$~`b z@Be%4Qt{8M$c*viuuH-)Nkb}gGZ&_Tj%lLu@A8emUOtlDTZZ2U)z<3l2 zn&i)Nvuvj;9?5RCepb>z@ieKIvlg3Sv(NH%);2B0RYb>z%;HXx9wZ)@QbW6)hiO;# z=%Lj=G5U30+B1_8XjeH~Gi|>%mra|Q%F11HCE^LqcXgkbd7_lyeXX#+JDIwFUT;n1c387%tzoxz*=_4t_6xX^y@d_m#_t{c-o&ViWeA09GJ%$90x8y(Qipz(+izAt&8b414yi_fa!-!}7gPJ(`eyM8mH4NdnTBDGXFcUcmp5%VN~) zA9*1i5FM$8vsbKTW61kz{K%l#Y{V56BpN5!oI8jkRwHP9_t)`_&L@=h-M0vTyYgM3 zzaYfb(_T8)&W~$PFN`_TnRi0gSorsgS!ia!b1isoHZB~On&+pFwf&Pr)>wWbNDbQ^ zeH|aIZ*6*TMx4gw`d;eUGQgEb4=MT+Y6}FaLKLM3wwwfMj2sX?cCNhmg2vi^T+GkT z+Jy-gwarq6LBAiR!Dt+b@6}+Jl6g{xsmC+V=4Ve*g|rZisMz!}k;YsGNDTAtAU|Pc zc_NhQf5}(WbTb!`WT??$pmVC|mYeor96gp9v7O;u2F6qIf)*(GXK~!yJB!%33eZ?Y zpEfzUE;BVR>ITMTJ?D)kCA0Xo%acvUE|XQsxG~5qj`v<;6{D29_Ovbu(0_7;jk48% zuCQo%rY$&L)g#rtD!XT{DM1n$6)laApbp{4vR7@XR3S<2Tr%@+4h`|Dt-dL<9B5%X zVZZKs7oDW+f6W~5qJVfb_G@*gJ`ic5Xo4C)^CuG7zT34KW+v4t(<`Xsi}g4gIcJ6x4RqenekT zxbL!=XC$g$TV{F`sT@jiN$8so&i{s3@(Za;x0L6!{Z@{d>LPM<_$rERD^y=Gav}E%brAg5O<>tDbSr~wszM?V0ql&yrv(7u458%&bF$gBMw~}W2 zU%KrOQ4eeJ}3iMjmnzANbV(N*aEPr&@M zinKYUsIF8f6#GxG%+@8GWUa9XRkgSi+26%*-Dpm2I?Z^h75nEYK4ZUgRBLnf#L3G` z7JDIc%J}_1K;4<9{uu+>hGXEC7j3M)(fJa6i4~U5>+DDNlI^o0`++^xrfo;mQHEIC zJBuHW+5R#6;aIb`?CVQhvkY-d@sy?7EREBk*mf!4Ad?L&^p+Bv?cBT)0OOK!9$*35 z#Qij?nN>`^HX*EMw@>WYc3O)?S5NGZ!X=cgl-DQssz%T+AQu_oa+csjdH8zQQdsqGbaYS6>wE-%lWX1Y{trKD_5}a{ literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/support/must-gather.doctree b/v1.13/.doctrees/support/must-gather.doctree new file mode 100644 index 0000000000000000000000000000000000000000..12f692aee1970550f84ee238f9ceaf74c0fd8993 GIT binary patch literal 19890 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 AHUIzs literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/support/overview.doctree b/v1.13/.doctrees/support/overview.doctree new file mode 100644 index 0000000000000000000000000000000000000000..96896f2b75a02699d927c03ea4be0beac6eab869 GIT binary patch literal 6097 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 A%K!iX literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/support/troubleshooting/index.doctree b/v1.13/.doctrees/support/troubleshooting/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..db6ab994b5698b343c580245395c0c8eb5c8f417 GIT binary patch literal 3747 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 literal 0 HcmV?d00001 diff --git a/v1.13/.doctrees/upgrade.doctree b/v1.13/.doctrees/upgrade.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f9e85c31b24c155a30e1386df98c3edb143ac554 GIT binary patch literal 30400 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 literal 0 HcmV?d00001 diff --git a/v1.13/.nojekyll b/v1.13/.nojekyll new file mode 100644 index 00000000000..e69de29bb2d diff --git a/v1.13/404.html b/v1.13/404.html new file mode 100644 index 00000000000..fa7ae55164f --- /dev/null +++ b/v1.13/404.html @@ -0,0 +1,31 @@ + + + + + + + + + ScyllaDB + + + + + + + + + + + +

            + + + \ No newline at end of file diff --git a/v1.13/CNAME b/v1.13/CNAME new file mode 100644 index 00000000000..12aae904168 --- /dev/null +++ b/v1.13/CNAME @@ -0,0 +1 @@ +operator.docs.scylladb.com \ No newline at end of file diff --git a/v1.13/_images/clusterip.svg b/v1.13/_images/clusterip.svg new file mode 100644 index 00000000000..1c74e5e69ba --- /dev/null +++ b/v1.13/_images/clusterip.svg @@ -0,0 +1,3 @@ + + +
            Service
            ClusterIP
            10.0.0.1
            Servi...
            Service
            ClusterIP
            10.0.0.2
            Servi...
            Service
            ClusterIP
            10.0.0.3
            Servi...
            Pod
            Client
            Pod...
            Kubernetes cluster
            Kubernetes cluster
            Text is not SVG - cannot display
            \ No newline at end of file diff --git a/v1.13/_images/loadbalancer.svg b/v1.13/_images/loadbalancer.svg new file mode 100644 index 00000000000..c86a9a2a46b --- /dev/null +++ b/v1.13/_images/loadbalancer.svg @@ -0,0 +1,3 @@ + + +
            Service
            LoadBalancer
            Servi...
            Service
            LoadBalancer
            Servi...
            Service
            LoadBalancer
            Servi...
            Kubernetes cluster
            Kubernetes cluster
            VPC
            VPC
            Cloud Load
            Balancing
            Cloud...
            Cloud Load
            Balancing
            Cloud...
            Cloud Load
            Balancing
            Cloud...
            Client
            Client
            Internet
            Internet
            Text is not SVG - cannot display
            \ No newline at end of file diff --git a/v1.13/_images/logo.png b/v1.13/_images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbfedad2ac875f6fa53f8f100e926c473364409 GIT binary patch literal 35103 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 + +
            Kubernetes cluster
            Kubernetes cluster
            Virtual Machine
            Client
            10.0.0.4
            Virtu...
            VPC A
            VPC A
            Pod
            Client
            20.0.0.5
            Pod...
            Kubernetes cluster
            Kubernetes cluster
            Virtual Machine
            Client
            20.0.0.4
            Virtu...
            VPC B
            VPC B
            Pod
            Client
            10.0.0.5
            Pod...
            VPC Peering
            VPC Peering


            Service
            Headless
            Service...


            Service
            Headless
            Service...


            Service
            Headless
            Service...


            Service
            Headless
            Service...


            Service
            Headless
            Service...


            Service
            Headless
            Service...
            PodIP: 10.0.0.3
            PodIP: 10.0.0...
            PodIP: 10.0.0.2
            PodIP: 10.0.0...
            PodIP: 10.0.0.1
            PodIP: 10.0.0...
            PodIP: 20.0.0.1
            PodIP: 20.0.0...
            PodIP: 20.0.0.2
            PodIP: 20.0.0...
            PodIP: 20.0.0.1
            PodIP: 20.0.0...
            Text is not SVG - cannot display
            \ No newline at end of file diff --git a/v1.13/_images/podips.svg b/v1.13/_images/podips.svg new file mode 100644 index 00000000000..03f1a44c7d6 --- /dev/null +++ b/v1.13/_images/podips.svg @@ -0,0 +1,3 @@ + + +
            Service
            ClusterIP
            10.0.0.1
            Servi...
            Service
            ClusterIP
            10.0.0.2
            Servi...
            Service
            ClusterIP
            10.0.0.3
            Servi...
            Pod
            Client
            20.0.0.5
            Pod...
            Kubernetes cluster
            Kubernetes cluster
            Virtual Machine
            Client
            20.0.0.4
            Virtu...
            PodIP: 20.0.0.1
            PodIP: 20.0.0...
            PodIP: 20.0.0.2
            PodIP: 20.0.0...
            PodIP: 20.0.0.3
            PodIP: 20.0.0...
            VPC
            VPC
            Text is not SVG - cannot display
            \ No newline at end of file diff --git a/v1.13/_sources/api-reference/groups/scylla.scylladb.com.rst.txt b/v1.13/_sources/api-reference/groups/scylla.scylladb.com.rst.txt new file mode 100644 index 00000000000..235ba241a48 --- /dev/null +++ b/v1.13/_sources/api-reference/groups/scylla.scylladb.com.rst.txt @@ -0,0 +1,8 @@ +scylla.scylladb.com +=================== + +.. toctree:: + :glob: + :maxdepth: 1 + + scylla.scylladb.com/* diff --git a/v1.13/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt b/v1.13/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt new file mode 100644 index 00000000000..e2499e4aa0a --- /dev/null +++ b/v1.13/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt @@ -0,0 +1,1629 @@ +NodeConfig (scylla.scylladb.com/v1alpha1) +========================================= + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: NodeConfig +| **PluralName**: nodeconfigs +| **SingularName**: nodeconfig +| **Scope**: Cluster +| **ListKind**: NodeConfigList +| **Served**: true +| **Storage**: true + +Description +----------- + + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - + * - :ref:`status` + - object + - + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - disableOptimizations + - boolean + - disableOptimizations controls if nodes matching placement requirements are going to be optimized. Turning off optimizations on already optimized Nodes does not revert changes. + * - :ref:`localDiskSetup` + - object + - localDiskSetup contains options of automatic local disk setup. + * - :ref:`placement` + - object + - placement contains scheduling rules for NodeConfig Pods. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup: + +.spec.localDiskSetup +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +localDiskSetup contains options of automatic local disk setup. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`filesystems` + - array (object) + - filesystems is a list of filesystem configurations. + * - :ref:`loopDevices` + - array (object) + - loops is a list of loop device configurations. + * - :ref:`mounts` + - array (object) + - mounts is a list of mount configuration. + * - :ref:`raids` + - array (object) + - raids is a list of raid configurations. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.filesystems[]: + +.spec.localDiskSetup.filesystems[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +FilesystemConfiguration specifies filesystem configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - device + - string + - device is a path to the device where the desired filesystem should be created. + * - type + - string + - type is a desired filesystem type. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.loopDevices[]: + +.spec.localDiskSetup.loopDevices[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +LoopDeviceConfiguration specifies loop device configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - imagePath + - string + - imagePath specifies path on host where backing image file for loop device should be located. + * - name + - string + - name specifies the name of the symlink that will point to actual loop device, created under `/dev/loops/`. + * - size + - + - size specifies the size of the loop device. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.mounts[]: + +.spec.localDiskSetup.mounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +MountConfiguration specifies mount configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - device + - string + - device is path to a device that should be mounted. + * - fsType + - string + - fsType specifies the filesystem on the device. + * - mountPoint + - string + - mountPoint is a path where the device should be mounted at. + * - unsupportedOptions + - array (string) + - unsupportedOptions is a list of mount options used during device mounting. unsupported in this field name means that we won't support all the available options passed down using this field. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[]: + +.spec.localDiskSetup.raids[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RAIDConfiguration is a configuration of a raid array. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`RAID0` + - object + - RAID0 specifies RAID0 options. + * - name + - string + - name specifies the name of the raid device to be created under in `/dev/md/`. + * - type + - string + - type is a type of raid array. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[].RAID0: + +.spec.localDiskSetup.raids[].RAID0 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RAID0 specifies RAID0 options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`devices` + - object + - devices defines which devices constitute the raid array. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[].RAID0.devices: + +.spec.localDiskSetup.raids[].RAID0.devices +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +devices defines which devices constitute the raid array. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - modelRegex + - string + - modelRegex is a regular expression filtering devices by their model name. + * - nameRegex + - string + - nameRegex is a regular expression filtering devices by their name. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement: + +.spec.placement +^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement contains scheduling rules for NodeConfig Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`affinity` + - object + - affinity is a group of affinity scheduling rules for NodeConfig Pods. + * - :ref:`nodeSelector` + - object + - nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. + * - :ref:`tolerations` + - array (object) + - tolerations is a group of tolerations NodeConfig Pods are going to have. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity: + +.spec.placement.affinity +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +affinity is a group of affinity scheduling rules for NodeConfig Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - Describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + * - :ref:`podAntiAffinity` + - object + - Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity: + +.spec.placement.affinity.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity: + +.spec.placement.affinity.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity: + +.spec.placement.affinity.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.nodeSelector: + +.spec.placement.nodeSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.tolerations[]: + +.spec.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`conditions` + - array (object) + - conditions represents the latest available observations of current state. + * - :ref:`nodeStatuses` + - array (object) + - nodeStatuses hold the status for each tuned node. + * - observedGeneration + - integer + - observedGeneration indicates the most recent generation observed by the controller. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is last time the condition transitioned from one status to another. + * - message + - string + - message is a human-readable message indicating details about the transition. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason is the reason for condition's last transition. + * - status + - string + - status represents the state of the condition, one of True, False, or Unknown. + * - type + - string + - type is the type of the NodeConfig condition. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status.nodeStatuses[]: + +.status.nodeStatuses[] +^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - + * - tunedContainers + - array (string) + - + * - tunedNode + - boolean + - diff --git a/v1.13/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt b/v1.13/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt new file mode 100644 index 00000000000..ba04f9cbb23 --- /dev/null +++ b/v1.13/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt @@ -0,0 +1,4996 @@ +ScyllaCluster (scylla.scylladb.com/v1) +====================================== + +| **APIVersion**: scylla.scylladb.com/v1 +| **Kind**: ScyllaCluster +| **PluralName**: scyllaclusters +| **SingularName**: scyllacluster +| **Scope**: Namespaced +| **ListKind**: ScyllaClusterList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaCluster defines a Scylla cluster. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of this scylla cluster. + * - :ref:`status` + - object + - status is the current status of this scylla cluster. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of this scylla cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - agentRepository + - string + - agentRepository is the repository to pull the agent image from. + * - agentVersion + - string + - agentVersion indicates the version of Scylla Manager Agent to use. + * - :ref:`alternator` + - object + - alternator designates this cluster an Alternator cluster. + * - automaticOrphanedNodeCleanup + - boolean + - automaticOrphanedNodeCleanup controls if automatic orphan node cleanup should be performed. + * - :ref:`backups` + - array (object) + - backups specifies backup tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored. + * - cpuset + - boolean + - cpuset determines if the cluster will use cpu-pinning for max performance. + * - :ref:`datacenter` + - object + - datacenter holds a specification of a datacenter. + * - developerMode + - boolean + - developerMode determines if the cluster runs in developer-mode. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this cluster is reachable by. These domains are used when setting up the infrastructure, like certificates. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - externalSeeds + - array (string) + - externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as "seeds" parameter of seed-provider. + * - forceRedeploymentReason + - string + - forceRedeploymentReason can be used to force a rolling update of all racks by providing a unique string. + * - :ref:`genericUpgrade` + - object + - genericUpgrade allows to configure behavior of generic upgrade logic. + * - :ref:`imagePullSecrets` + - array (object) + - imagePullSecrets is an optional list of references to secrets in the same namespace used for pulling Scylla and Agent images. + * - minReadySeconds + - integer + - minReadySeconds is the minimum number of seconds for which a newly created ScyllaDB node should be ready for it to be considered available. When used to control load balanced traffic, this can give the load balancer in front of a node enough time to notice that the node is ready and start forwarding traffic in time. Because it all depends on timing, the order is not guaranteed and, if possible, you should use readinessGates instead. If not provided, Operator will determine this value. + * - minTerminationGracePeriodSeconds + - integer + - minTerminationGracePeriodSeconds specifies minimum duration in seconds to wait before every drained node is terminated. This gives time to potential load balancer in front of a node to notice that node is not ready anymore and stop forwarding new requests. This applies only when node is terminated gracefully. If not provided, Operator will determine this value. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`network` + - object + - network holds the networking config. + * - :ref:`podMetadata` + - object + - podMetadata controls shared metadata for all pods created based on this spec. + * - :ref:`readinessGates` + - array (object) + - readinessGates specifies custom readiness gates that will be evaluated for every ScyllaDB Pod readiness. It's projected into every ScyllaDB Pod as its readinessGate. Refer to upstream documentation to learn more about readiness gates. + * - :ref:`repairs` + - array (object) + - repairs specify repair tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored. + * - repository + - string + - repository is the image repository to pull the Scylla image from. + * - scyllaArgs + - string + - scyllaArgs will be appended to Scylla binary during startup. This is supported from 4.2.0 Scylla version. + * - sysctls + - array (string) + - sysctls holds the sysctl properties to be applied during initialization given as a list of key=value pairs. Example: fs.aio-max-nr=232323 + * - version + - string + - version is a version tag of Scylla to use. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator: + +.spec.alternator +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +alternator designates this cluster an Alternator cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - insecureDisableAuthorization + - boolean + - insecureDisableAuthorization disables Alternator authorization. If not specified, the authorization is enabled. For backwards compatibility the authorization is disabled when this field is not specified and a manual port is used. + * - insecureEnableHTTP + - boolean + - insecureEnableHTTP enables serving Alternator traffic also on insecure HTTP port. + * - port + - integer + - port is the port number used to bind the Alternator API. Deprecated: `port` is deprecated and may be ignored in the future. Please make sure to avoid using hostNetworking and work with standard Kubernetes concepts like Services. + * - :ref:`servingCertificate` + - object + - servingCertificate references a TLS certificate for serving secure traffic. + * - writeIsolation + - string + - writeIsolation indicates the isolation level. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate: + +.spec.alternator.servingCertificate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +servingCertificate references a TLS certificate for serving secure traffic. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`operatorManagedOptions` + - object + - operatorManagedOptions specifies options for certificates manged by the operator. + * - type + - string + - type determines the source of this certificate. + * - :ref:`userManagedOptions` + - object + - userManagedOptions specifies options for certificates manged by users. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate.operatorManagedOptions: + +.spec.alternator.servingCertificate.operatorManagedOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +operatorManagedOptions specifies options for certificates manged by the operator. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - additionalDNSNames + - array (string) + - additionalDNSNames represents external DNS names that the certificates should be signed for. + * - additionalIPAddresses + - array (string) + - additionalIPAddresses represents external IP addresses that the certificates should be signed for. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate.userManagedOptions: + +.spec.alternator.servingCertificate.userManagedOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +userManagedOptions specifies options for certificates manged by users. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - secretName + - string + - secretName references a kubernetes.io/tls type secret containing the TLS cert and key. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.backups[]: + +.spec.backups[] +^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]. + * - dc + - array (string) + - dc is a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup. + * - interval + - string + - interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead. + * - keyspace + - array (string) + - keyspace is a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - location + - array (string) + - location is a list of backup locations in the format [:]: ex. s3:my-bucket. The : part is optional and is only needed when different datacenters are being used to upload data to different locations. must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden. The only supported storage at the moment are s3 and gcs. + * - name + - string + - name specifies the name of a task. + * - numRetries + - integer + - numRetries indicates how many times a scheduled task will be retried before failing. + * - rateLimit + - array (string) + - rateLimit is a list of megabytes (MiB) per second rate limits expressed in the format [:]. The : part is optional and only needed when different datacenters need different upload limits. Set to 0 for no limit (default 100). + * - retention + - integer + - retention is the number of backups which are to be stored. + * - snapshotParallel + - array (string) + - snapshotParallel is a list of snapshot parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set, the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. + * - startDate + - string + - startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. + * - timezone + - string + - timezone specifies the timezone of cron field. + * - uploadParallel + - array (string) + - uploadParallel is a list of upload parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter: + +.spec.datacenter +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +datacenter holds a specification of a datacenter. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - name is the name of the scylla datacenter. Used in the cassandra-rackdc.properties file. + * - :ref:`racks` + - array (object) + - racks specify the racks in the datacenter. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[]: + +.spec.datacenter.racks[] +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RackSpec is the desired state for a Scylla Rack. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`agentResources` + - object + - agentResources specify the resources for the Agent container. + * - :ref:`agentVolumeMounts` + - array (object) + - AgentVolumeMounts to be added to Agent container. + * - members + - integer + - members is the number of Scylla instances in this rack. + * - name + - string + - name is the name of the Scylla Rack. Used in the cassandra-rackdc.properties file. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Scylla is scheduled on. + * - :ref:`resources` + - object + - resources the Scylla container will use. + * - scyllaAgentConfig + - string + - Scylla config map name to customize scylla manager agent + * - scyllaConfig + - string + - Scylla config map name to customize scylla.yaml + * - :ref:`storage` + - object + - storage describes the underlying storage that Scylla will consume. + * - :ref:`volumeMounts` + - array (object) + - VolumeMounts to be added to Scylla container. + * - :ref:`volumes` + - array (object) + - Volumes added to Scylla Pod. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources: + +.spec.datacenter.racks[].agentResources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +agentResources specify the resources for the Agent container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.claims[]: + +.spec.datacenter.racks[].agentResources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.limits: + +.spec.datacenter.racks[].agentResources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.requests: + +.spec.datacenter.racks[].agentResources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentVolumeMounts[]: + +.spec.datacenter.racks[].agentVolumeMounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +VolumeMount describes a mounting of a Volume within a container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - mountPath + - string + - Path within the container at which the volume should be mounted. Must not contain ':'. + * - mountPropagation + - string + - mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + * - name + - string + - This must match the Name of a Volume. + * - readOnly + - boolean + - Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + * - subPath + - string + - Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + * - subPathExpr + - string + - Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement: + +.spec.datacenter.racks[].placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Scylla is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity: + +.spec.datacenter.racks[].placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity: + +.spec.datacenter.racks[].placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity: + +.spec.datacenter.racks[].placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.tolerations[]: + +.spec.datacenter.racks[].placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources: + +.spec.datacenter.racks[].resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Scylla container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.claims[]: + +.spec.datacenter.racks[].resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.limits: + +.spec.datacenter.racks[].resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.requests: + +.spec.datacenter.racks[].resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage: + +.spec.datacenter.racks[].storage +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storage describes the underlying storage that Scylla will consume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - capacity + - string + - capacity describes the requested size of each persistent volume. + * - :ref:`metadata` + - object + - metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn't be relied on in any way. + * - storageClassName + - string + - storageClassName is the name of a storageClass to request. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata: + +.spec.datacenter.racks[].storage.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn't be relied on in any way. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata.annotations: + +.spec.datacenter.racks[].storage.metadata.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata.labels: + +.spec.datacenter.racks[].storage.metadata.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumeMounts[]: + +.spec.datacenter.racks[].volumeMounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +VolumeMount describes a mounting of a Volume within a container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - mountPath + - string + - Path within the container at which the volume should be mounted. Must not contain ':'. + * - mountPropagation + - string + - mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + * - name + - string + - This must match the Name of a Volume. + * - readOnly + - boolean + - Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + * - subPath + - string + - Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + * - subPathExpr + - string + - Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[]: + +.spec.datacenter.racks[].volumes[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Volume represents a named volume in a pod that may be accessed by any container in the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`awsElasticBlockStore` + - object + - awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + * - :ref:`azureDisk` + - object + - azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + * - :ref:`azureFile` + - object + - azureFile represents an Azure File Service mount on the host and bind mount to the pod. + * - :ref:`cephfs` + - object + - cephFS represents a Ceph FS mount on the host that shares a pod's lifetime + * - :ref:`cinder` + - object + - cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - :ref:`configMap` + - object + - configMap represents a configMap that should populate this volume + * - :ref:`csi` + - object + - csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). + * - :ref:`downwardAPI` + - object + - downwardAPI represents downward API about the pod that should populate this volume + * - :ref:`emptyDir` + - object + - emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + * - :ref:`ephemeral` + - object + - ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. + Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). + Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. + Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. + A pod can use both types of ephemeral volumes and persistent volumes at the same time. + * - :ref:`fc` + - object + - fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + * - :ref:`flexVolume` + - object + - flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + * - :ref:`flocker` + - object + - flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + * - :ref:`gcePersistentDisk` + - object + - gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - :ref:`gitRepo` + - object + - gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. + * - :ref:`glusterfs` + - object + - glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md + * - :ref:`hostPath` + - object + - hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. + * - :ref:`iscsi` + - object + - iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md + * - name + - string + - name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + * - :ref:`nfs` + - object + - nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - :ref:`persistentVolumeClaim` + - object + - persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + * - :ref:`photonPersistentDisk` + - object + - photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + * - :ref:`portworxVolume` + - object + - portworxVolume represents a portworx volume attached and mounted on kubelets host machine + * - :ref:`projected` + - object + - projected items for all in one resources secrets, configmaps, and downward API + * - :ref:`quobyte` + - object + - quobyte represents a Quobyte mount on the host that shares a pod's lifetime + * - :ref:`rbd` + - object + - rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md + * - :ref:`scaleIO` + - object + - scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + * - :ref:`secret` + - object + - secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + * - :ref:`storageos` + - object + - storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + * - :ref:`vsphereVolume` + - object + - vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].awsElasticBlockStore: + +.spec.datacenter.racks[].volumes[].awsElasticBlockStore +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine + * - partition + - integer + - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + * - readOnly + - boolean + - readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + * - volumeID + - string + - volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].azureDisk: + +.spec.datacenter.racks[].volumes[].azureDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cachingMode + - string + - cachingMode is the Host Caching mode: None, Read Only, Read Write. + * - diskName + - string + - diskName is the Name of the data disk in the blob storage + * - diskURI + - string + - diskURI is the URI of data disk in the blob storage + * - fsType + - string + - fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - kind + - string + - kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared + * - readOnly + - boolean + - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].azureFile: + +.spec.datacenter.racks[].volumes[].azureFile +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +azureFile represents an Azure File Service mount on the host and bind mount to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - secretName + - string + - secretName is the name of secret that contains Azure Storage Account Name and Key + * - shareName + - string + - shareName is the azure share Name + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cephfs: + +.spec.datacenter.racks[].volumes[].cephfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cephFS represents a Ceph FS mount on the host that shares a pod's lifetime + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - monitors + - array (string) + - monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - path + - string + - path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / + * - readOnly + - boolean + - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - secretFile + - string + - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - :ref:`secretRef` + - object + - secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - user + - string + - user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cephfs.secretRef: + +.spec.datacenter.racks[].volumes[].cephfs.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cinder: + +.spec.datacenter.racks[].volumes[].cinder +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - :ref:`secretRef` + - object + - secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. + * - volumeID + - string + - volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cinder.secretRef: + +.spec.datacenter.racks[].volumes[].cinder.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].configMap: + +.spec.datacenter.racks[].volumes[].configMap +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +configMap represents a configMap that should populate this volume + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional specify whether the ConfigMap or its keys must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].configMap.items[]: + +.spec.datacenter.racks[].volumes[].configMap.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi: + +.spec.datacenter.racks[].volumes[].csi +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - driver + - string + - driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. + * - fsType + - string + - fsType to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. + * - :ref:`nodePublishSecretRef` + - object + - nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + * - readOnly + - boolean + - readOnly specifies a read-only configuration for the volume. Defaults to false (read/write). + * - :ref:`volumeAttributes` + - object + - volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef: + +.spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi.volumeAttributes: + +.spec.datacenter.racks[].volumes[].csi.volumeAttributes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI: + +.spec.datacenter.racks[].volumes[].downwardAPI +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +downwardAPI represents downward API about the pod that should populate this volume + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - Items is a list of downward API volume file + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[]: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +DownwardAPIVolumeFile represents information to create the file containing the pod field + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`fieldRef` + - object + - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + * - mode + - integer + - Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + * - :ref:`resourceFieldRef` + - object + - Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - Version of the schema the FieldPath is written in terms of, defaults to "v1". + * - fieldPath + - string + - Path of the field to select in the specified API version. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - containerName + - string + - Container name: required for volumes, optional for env vars + * - divisor + - + - Specifies the output format of the exposed resources, defaults to "1" + * - resource + - string + - Required: resource to select + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].emptyDir: + +.spec.datacenter.racks[].volumes[].emptyDir +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - medium + - string + - medium represents what type of storage medium should back this directory. The default is "" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + * - sizeLimit + - + - sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral: + +.spec.datacenter.racks[].volumes[].ephemeral +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. + Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). + Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. + Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. + A pod can use both types of ephemeral volumes and persistent volumes at the same time. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`volumeClaimTemplate` + - object + - Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). + An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. + This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. + Required, must not be nil. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). + An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. + This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. + Required, must not be nil. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`metadata` + - object + - May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + * - :ref:`spec` + - object + - The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - accessModes + - array (string) + - accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + * - :ref:`dataSource` + - object + - dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + * - :ref:`dataSourceRef` + - object + - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + * - :ref:`resources` + - object + - resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + * - :ref:`selector` + - object + - selector is a label query over volumes to consider for binding. + * - storageClassName + - string + - storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + * - volumeAttributesClassName + - string + - volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. + * - volumeMode + - string + - volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + * - volumeName + - string + - volumeName is the binding reference to the PersistentVolume backing this claim. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + * - namespace + - string + - Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +selector is a label query over volumes to consider for binding. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].fc: + +.spec.datacenter.racks[].volumes[].fc +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine + * - lun + - integer + - lun is Optional: FC target lun number + * - readOnly + - boolean + - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - targetWWNs + - array (string) + - targetWWNs is Optional: FC target worldwide names (WWNs) + * - wwids + - array (string) + - wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume: + +.spec.datacenter.racks[].volumes[].flexVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - driver + - string + - driver is the name of the driver to use for this volume. + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + * - :ref:`options` + - object + - options is Optional: this field holds extra command options if any. + * - readOnly + - boolean + - readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume.options: + +.spec.datacenter.racks[].volumes[].flexVolume.options +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +options is Optional: this field holds extra command options if any. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume.secretRef: + +.spec.datacenter.racks[].volumes[].flexVolume.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flocker: + +.spec.datacenter.racks[].volumes[].flocker +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - datasetName + - string + - datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated + * - datasetUUID + - string + - datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].gcePersistentDisk: + +.spec.datacenter.racks[].volumes[].gcePersistentDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine + * - partition + - integer + - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - pdName + - string + - pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].gitRepo: + +.spec.datacenter.racks[].volumes[].gitRepo +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - directory + - string + - directory is the target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. + * - repository + - string + - repository is the URL + * - revision + - string + - revision is the commit hash for the specified revision. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].glusterfs: + +.spec.datacenter.racks[].volumes[].glusterfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - endpoints + - string + - endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + * - path + - string + - path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + * - readOnly + - boolean + - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].hostPath: + +.spec.datacenter.racks[].volumes[].hostPath +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - path + - string + - path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + * - type + - string + - type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].iscsi: + +.spec.datacenter.racks[].volumes[].iscsi +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - chapAuthDiscovery + - boolean + - chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication + * - chapAuthSession + - boolean + - chapAuthSession defines whether support iSCSI Session CHAP authentication + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine + * - initiatorName + - string + - initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. + * - iqn + - string + - iqn is the target iSCSI Qualified Name. + * - iscsiInterface + - string + - iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). + * - lun + - integer + - lun represents iSCSI Target Lun number. + * - portals + - array (string) + - portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. + * - :ref:`secretRef` + - object + - secretRef is the CHAP Secret for iSCSI target and initiator authentication + * - targetPortal + - string + - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].iscsi.secretRef: + +.spec.datacenter.racks[].volumes[].iscsi.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is the CHAP Secret for iSCSI target and initiator authentication + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].nfs: + +.spec.datacenter.racks[].volumes[].nfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - path + - string + - path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - readOnly + - boolean + - readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - server + - string + - server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].persistentVolumeClaim: + +.spec.datacenter.racks[].volumes[].persistentVolumeClaim +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - claimName + - string + - claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + * - readOnly + - boolean + - readOnly Will force the ReadOnly setting in VolumeMounts. Default false. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].photonPersistentDisk: + +.spec.datacenter.racks[].volumes[].photonPersistentDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - pdID + - string + - pdID is the ID that identifies Photon Controller persistent disk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].portworxVolume: + +.spec.datacenter.racks[].volumes[].portworxVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +portworxVolume represents a portworx volume attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - volumeID + - string + - volumeID uniquely identifies a Portworx volume + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected: + +.spec.datacenter.racks[].volumes[].projected +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +projected items for all in one resources secrets, configmaps, and downward API + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`sources` + - array (object) + - sources is the list of volume projections + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[]: + +.spec.datacenter.racks[].volumes[].projected.sources[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Projection that may be projected along with other supported volume types + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`clusterTrustBundle` + - object + - ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. + Alpha, gated by the ClusterTrustBundleProjection feature gate. + ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. + Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. + * - :ref:`configMap` + - object + - configMap information about the configMap data to project + * - :ref:`downwardAPI` + - object + - downwardAPI information about the downwardAPI data to project + * - :ref:`secret` + - object + - secret information about the secret data to project + * - :ref:`serviceAccountToken` + - object + - serviceAccountToken is information about the serviceAccountToken data to project + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. + Alpha, gated by the ClusterTrustBundleProjection feature gate. + ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. + Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". + * - name + - string + - Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector. + * - optional + - boolean + - If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles. + * - path + - string + - Relative path from the volume root to write the bundle. + * - signerName + - string + - Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].configMap: + +.spec.datacenter.racks[].volumes[].projected.sources[].configMap +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +configMap information about the configMap data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional specify whether the ConfigMap or its keys must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +downwardAPI information about the downwardAPI data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - Items is a list of DownwardAPIVolume file + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +DownwardAPIVolumeFile represents information to create the file containing the pod field + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`fieldRef` + - object + - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + * - mode + - integer + - Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + * - :ref:`resourceFieldRef` + - object + - Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - Version of the schema the FieldPath is written in terms of, defaults to "v1". + * - fieldPath + - string + - Path of the field to select in the specified API version. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - containerName + - string + - Container name: required for volumes, optional for env vars + * - divisor + - + - Specifies the output format of the exposed resources, defaults to "1" + * - resource + - string + - Required: resource to select + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].secret: + +.spec.datacenter.racks[].volumes[].projected.sources[].secret +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secret information about the secret data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional field specify whether the Secret or its key must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].secret.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken: + +.spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +serviceAccountToken is information about the serviceAccountToken data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - audience + - string + - audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. + * - expirationSeconds + - integer + - expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. + * - path + - string + - path is the path relative to the mount point of the file to project the token into. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].quobyte: + +.spec.datacenter.racks[].volumes[].quobyte +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +quobyte represents a Quobyte mount on the host that shares a pod's lifetime + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - group + - string + - group to map volume access to Default is no group + * - readOnly + - boolean + - readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. + * - registry + - string + - registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes + * - tenant + - string + - tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin + * - user + - string + - user to map volume access to Defaults to serivceaccount user + * - volume + - string + - volume is a string that references an already created Quobyte volume by name. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].rbd: + +.spec.datacenter.racks[].volumes[].rbd +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine + * - image + - string + - image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - keyring + - string + - keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - monitors + - array (string) + - monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - pool + - string + - pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - :ref:`secretRef` + - object + - secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - user + - string + - user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].rbd.secretRef: + +.spec.datacenter.racks[].volumes[].rbd.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].scaleIO: + +.spec.datacenter.racks[].volumes[].scaleIO +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". + * - gateway + - string + - gateway is the host address of the ScaleIO API Gateway. + * - protectionDomain + - string + - protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. + * - readOnly + - boolean + - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + * - sslEnabled + - boolean + - sslEnabled Flag enable/disable SSL communication with Gateway, default false + * - storageMode + - string + - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. + * - storagePool + - string + - storagePool is the ScaleIO Storage Pool associated with the protection domain. + * - system + - string + - system is the name of the storage system as configured in ScaleIO. + * - volumeName + - string + - volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].scaleIO.secretRef: + +.spec.datacenter.racks[].volumes[].scaleIO.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].secret: + +.spec.datacenter.racks[].volumes[].secret +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - optional + - boolean + - optional field specify whether the Secret or its keys must be defined + * - secretName + - string + - secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].secret.items[]: + +.spec.datacenter.racks[].volumes[].secret.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].storageos: + +.spec.datacenter.racks[].volumes[].storageos +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + * - volumeName + - string + - volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. + * - volumeNamespace + - string + - volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].storageos.secretRef: + +.spec.datacenter.racks[].volumes[].storageos.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].vsphereVolume: + +.spec.datacenter.racks[].volumes[].vsphereVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - storagePolicyID + - string + - storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + * - storagePolicyName + - string + - storagePolicyName is the storage Policy Based Management (SPBM) profile name. + * - volumePath + - string + - volumePath is the path that identifies vSphere volume vmdk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions: + +.spec.exposeOptions +^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`broadcastOptions` + - object + - BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients. + * - :ref:`cql` + - object + - cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`nodeService` + - object + - nodeService controls properties of Service dedicated for each ScyllaCluster node. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions: + +.spec.exposeOptions.broadcastOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`clients` + - object + - clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config. + * - :ref:`nodes` + - object + - nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.clients: + +.spec.exposeOptions.broadcastOptions.clients +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podIP` + - object + - podIP holds options related to Pod IP address. + * - type + - string + - type of the address that is broadcasted. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.clients.podIP: + +.spec.exposeOptions.broadcastOptions.clients.podIP +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podIP holds options related to Pod IP address. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - source + - string + - sourceType specifies source of the Pod IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.nodes: + +.spec.exposeOptions.broadcastOptions.nodes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podIP` + - object + - podIP holds options related to Pod IP address. + * - type + - string + - type of the address that is broadcasted. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.nodes.podIP: + +.spec.exposeOptions.broadcastOptions.nodes.podIP +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podIP holds options related to Pod IP address. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - source + - string + - sourceType specifies source of the Pod IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql: + +.spec.exposeOptions.cql +^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress: + +.spec.exposeOptions.cql.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. Unless disabled, there is an Ingress objects created for every Scylla node. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress.annotations: + +.spec.exposeOptions.cql.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress.labels: + +.spec.exposeOptions.cql.ingress.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService: + +.spec.exposeOptions.nodeService +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeService controls properties of Service dedicated for each ScyllaCluster node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - allocateLoadBalancerNodePorts + - boolean + - allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - externalTrafficPolicy + - string + - externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - internalTrafficPolicy + - string + - internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + * - loadBalancerClass + - string + - loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - type + - string + - type is the Kubernetes Service type. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService.annotations: + +.spec.exposeOptions.nodeService.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService.labels: + +.spec.exposeOptions.nodeService.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.genericUpgrade: + +.spec.genericUpgrade +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +genericUpgrade allows to configure behavior of generic upgrade logic. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - failureStrategy + - string + - failureStrategy specifies which logic is executed when upgrade failure happens. Currently only Retry is supported. + * - pollInterval + - string + - pollInterval specifies how often upgrade logic polls on state updates. Increasing this value should lower number of requests sent to apiserver, but it may affect overall time spent during upgrade. DEPRECATED. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.imagePullSecrets[]: + +.spec.imagePullSecrets[] +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.network: + +.spec.network +^^^^^^^^^^^^^ + +Description +""""""""""" +network holds the networking config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - dnsPolicy + - string + - dnsPolicy defines how a pod's DNS will be configured. + * - hostNetworking + - boolean + - hostNetworking determines if scylla uses the host's network namespace. Setting this option avoids going through Kubernetes SDN and exposes scylla on node's IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata: + +.spec.podMetadata +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podMetadata controls shared metadata for all pods created based on this spec. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata.annotations: + +.spec.podMetadata.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata.labels: + +.spec.podMetadata.labels +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.readinessGates[]: + +.spec.readinessGates[] +^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +PodReadinessGate contains the reference to a pod condition + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - conditionType + - string + - ConditionType refers to a condition in the pod's condition list with matching type. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.repairs[]: + +.spec.repairs[] +^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]. + * - dc + - array (string) + - dc is a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from backup. + * - failFast + - boolean + - failFast indicates if a repair should be stopped on first error. + * - host + - string + - host specifies a host to repair. If empty, all hosts are repaired. + * - intensity + - string + - intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs). Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs. Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume. For Scylla clusters that *do not support row-level repair*, intensity can be a decimal between (0,1). In that case it specifies percent of shards that can be repaired in parallel on a repair master node. For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1. + * - interval + - string + - interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead. + * - keyspace + - array (string) + - keyspace is a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - name + - string + - name specifies the name of a task. + * - numRetries + - integer + - numRetries indicates how many times a scheduled task will be retried before failing. + * - parallel + - integer + - parallel is the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used. The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes. The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2. + * - smallTableThreshold + - string + - smallTableThreshold enable small table optimization for tables of size lower than given threshold. Supported units [B, MiB, GiB, TiB]. + * - startDate + - string + - startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. + * - timezone + - string + - timezone specifies the timezone of cron field. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status is the current status of this scylla cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - availableMembers + - integer + - availableMembers is the number of ScyllaDB members in all racks that are available. + * - :ref:`backups` + - array (object) + - backups reflects status of backup tasks. + * - :ref:`conditions` + - array (object) + - conditions hold conditions describing ScyllaCluster state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False. + * - managerId + - string + - managerId contains ID under which cluster was registered in Scylla Manager. + * - members + - integer + - members is the number of ScyllaDB members in all racks. + * - observedGeneration + - integer + - observedGeneration is the most recent generation observed for this ScyllaCluster. It corresponds to the ScyllaCluster's generation, which is updated on mutation by the API Server. + * - rackCount + - integer + - rackCount is the number of ScyllaDB racks in this cluster. + * - :ref:`racks` + - object + - racks reflect status of cluster racks. + * - readyMembers + - integer + - readyMembers is the number of ScyllaDB members in all racks that are ready. + * - :ref:`repairs` + - array (object) + - repairs reflects status of repair tasks. + * - :ref:`upgrade` + - object + - upgrade reflects state of ongoing upgrade procedure. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.backups[]: + +.status.backups[] +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron reflects the task schedule as a cron expression. + * - dc + - array (string) + - dc reflects a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup. + * - error + - string + - error holds the task error, if any. + * - id + - string + - id reflects identification number of the repair task. + * - interval + - string + - interval reflects a task schedule interval. + * - keyspace + - array (string) + - keyspace reflects a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - location + - array (string) + - location reflects a list of backup locations in the format [:]: ex. s3:my-bucket. + * - name + - string + - name reflects the name of a task. + * - numRetries + - integer + - numRetries reflects how many times a scheduled task will be retried before failing. + * - rateLimit + - array (string) + - rateLimit reflects a list of megabytes (MiB) per second rate limits expressed in the format [:]. + * - retention + - integer + - retention reflects the number of backups which are to be stored. + * - snapshotParallel + - array (string) + - snapshotParallel reflects a list of snapshot parallelism limits in the format [:]. + * - startDate + - string + - startDate reflects the task start date expressed in the RFC3339 format + * - timezone + - string + - timezone reflects the timezone of cron field. + * - uploadParallel + - array (string) + - uploadParallel reflects a list of upload parallelism limits in the format [:]. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + // other fields } + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + * - message + - string + - message is a human readable message indicating details about the transition. This may be an empty string. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + * - status + - string + - status of the condition, one of True, False, Unknown. + * - type + - string + - type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.racks: + +.status.racks +^^^^^^^^^^^^^ + +Description +""""""""""" +racks reflect status of cluster racks. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.repairs[]: + +.status.repairs[] +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron reflects the task schedule as a cron expression. + * - dc + - array (string) + - dc reflects a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from repair. + * - error + - string + - error holds the task error, if any. + * - failFast + - boolean + - failFast indicates if a repair should be stopped on first error. + * - host + - string + - host reflects a host to repair. + * - id + - string + - id reflects identification number of the repair task. + * - intensity + - string + - intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. + * - interval + - string + - interval reflects a task schedule interval. + * - keyspace + - array (string) + - keyspace reflects a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - name + - string + - name reflects the name of a task. + * - numRetries + - integer + - numRetries reflects how many times a scheduled task will be retried before failing. + * - parallel + - integer + - parallel reflects the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). + * - smallTableThreshold + - string + - smallTableThreshold reflects whether small table optimization for tables, of size lower than given threshold, are enabled. + * - startDate + - string + - startDate reflects the task start date expressed in the RFC3339 format + * - timezone + - string + - timezone reflects the timezone of cron field. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.upgrade: + +.status.upgrade +^^^^^^^^^^^^^^^ + +Description +""""""""""" +upgrade reflects state of ongoing upgrade procedure. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - currentNode + - string + - currentNode node under upgrade. DEPRECATED. + * - currentRack + - string + - currentRack rack under upgrade. DEPRECATED. + * - dataSnapshotTag + - string + - dataSnapshotTag is the snapshot tag of data keyspaces. + * - fromVersion + - string + - fromVersion reflects from which version ScyllaCluster is being upgraded. + * - state + - string + - state reflects current upgrade state. + * - systemSnapshotTag + - string + - systemSnapshotTag is the snapshot tag of system keyspaces. + * - toVersion + - string + - toVersion reflects to which version ScyllaCluster is being upgraded. diff --git a/v1.13/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt b/v1.13/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt new file mode 100644 index 00000000000..8116bbb2bf7 --- /dev/null +++ b/v1.13/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt @@ -0,0 +1,3441 @@ +ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1) +================================================= + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: ScyllaDBMonitoring +| **PluralName**: scylladbmonitorings +| **SingularName**: scylladbmonitoring +| **Scope**: Namespaced +| **ListKind**: ScyllaDBMonitoringList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaDBMonitoring defines a monitoring instance for ScyllaDB clusters. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of this ScyllaDBMonitoring. + * - :ref:`status` + - object + - status is the current status of this ScyllaDBMonitoring. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of this ScyllaDBMonitoring. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`components` + - object + - components hold additional config for the monitoring components in use. + * - :ref:`endpointsSelector` + - object + - endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors. + * - type + - string + - type determines the platform type of the monitoring setup. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components: + +.spec.components +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +components hold additional config for the monitoring components in use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`grafana` + - object + - grafana holds configuration for the grafana instance, if any. + * - :ref:`prometheus` + - object + - prometheus holds configuration for the prometheus instance, if any. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana: + +.spec.components.grafana +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +grafana holds configuration for the grafana instance, if any. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`authentication` + - object + - authentication hold the authentication options for accessing Grafana. + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing Grafana UI. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Grafana is scheduled on. + * - :ref:`resources` + - object + - resources the Grafana container will use. + * - servingCertSecretName + - string + - servingCertSecretName is the name of the secret holding a serving cert-key pair. If not specified, the operator will create a self-signed CA that creates the default serving cert-key pair. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.authentication: + +.spec.components.grafana.authentication +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +authentication hold the authentication options for accessing Grafana. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - insecureEnableAnonymousAccess + - boolean + - insecureEnableAnonymousAccess allows access to Grafana without authentication. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions: + +.spec.components.grafana.exposeOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing Grafana UI. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`webInterface` + - object + - webInterface specifies expose options for the user web interface. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface: + +.spec.components.grafana.exposeOptions.webInterface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +webInterface specifies expose options for the user web interface. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface.ingress: + +.spec.components.grafana.exposeOptions.webInterface.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations specifies custom annotations merged into every Ingress object. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this ingress is reachable by. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface.ingress.annotations: + +.spec.components.grafana.exposeOptions.webInterface.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations specifies custom annotations merged into every Ingress object. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement: + +.spec.components.grafana.placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Grafana is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity: + +.spec.components.grafana.placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity: + +.spec.components.grafana.placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity: + +.spec.components.grafana.placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.tolerations[]: + +.spec.components.grafana.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources: + +.spec.components.grafana.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Grafana container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.claims[]: + +.spec.components.grafana.resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.limits: + +.spec.components.grafana.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.requests: + +.spec.components.grafana.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus: + +.spec.components.prometheus +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +prometheus holds configuration for the prometheus instance, if any. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing Prometheus UI. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Prometheus is scheduled on. + * - :ref:`resources` + - object + - resources the Prometheus container will use. + * - :ref:`storage` + - object + - storage describes the underlying storage that Prometheus will consume. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions: + +.spec.components.prometheus.exposeOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing Prometheus UI. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`webInterface` + - object + - webInterface specifies expose options for the user web interface. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface: + +.spec.components.prometheus.exposeOptions.webInterface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +webInterface specifies expose options for the user web interface. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface.ingress: + +.spec.components.prometheus.exposeOptions.webInterface.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations specifies custom annotations merged into every Ingress object. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this ingress is reachable by. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface.ingress.annotations: + +.spec.components.prometheus.exposeOptions.webInterface.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations specifies custom annotations merged into every Ingress object. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement: + +.spec.components.prometheus.placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Prometheus is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity: + +.spec.components.prometheus.placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity: + +.spec.components.prometheus.placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity: + +.spec.components.prometheus.placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.tolerations[]: + +.spec.components.prometheus.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources: + +.spec.components.prometheus.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Prometheus container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.claims[]: + +.spec.components.prometheus.resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.limits: + +.spec.components.prometheus.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.requests: + +.spec.components.prometheus.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage: + +.spec.components.prometheus.storage +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storage describes the underlying storage that Prometheus will consume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations + * - :ref:`labels` + - object + - Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels + * - :ref:`volumeClaimTemplate` + - object + - volumeClaimTemplates is a PVC template defining storage to be used by Prometheus. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.annotations: + +.spec.components.prometheus.storage.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.labels: + +.spec.components.prometheus.storage.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate: + +.spec.components.prometheus.storage.volumeClaimTemplate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +volumeClaimTemplates is a PVC template defining storage to be used by Prometheus. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`metadata` + - object + - May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + * - :ref:`spec` + - object + - The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.metadata: + +.spec.components.prometheus.storage.volumeClaimTemplate.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - accessModes + - array (string) + - accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + * - :ref:`dataSource` + - object + - dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + * - :ref:`dataSourceRef` + - object + - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + * - :ref:`resources` + - object + - resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + * - :ref:`selector` + - object + - selector is a label query over volumes to consider for binding. + * - storageClassName + - string + - storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + * - volumeAttributesClassName + - string + - volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. + * - volumeMode + - string + - volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + * - volumeName + - string + - volumeName is the binding reference to the PersistentVolume backing this claim. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + * - namespace + - string + - Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +selector is a label query over volumes to consider for binding. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector: + +.spec.endpointsSelector +^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector.matchExpressions[]: + +.spec.endpointsSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector.matchLabels: + +.spec.endpointsSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status is the current status of this ScyllaDBMonitoring. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`conditions` + - array (object) + - conditions hold conditions describing ScyllaDBMonitoring state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False. + * - observedGeneration + - integer + - observedGeneration is the most recent generation observed for this ScyllaDBMonitoring. It corresponds to the ScyllaDBMonitoring's generation, which is updated on mutation by the API Server. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + // other fields } + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + * - message + - string + - message is a human readable message indicating details about the transition. This may be an empty string. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + * - status + - string + - status of the condition, one of True, False, Unknown. + * - type + - string + - type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) diff --git a/v1.13/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt b/v1.13/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt new file mode 100644 index 00000000000..682affc865e --- /dev/null +++ b/v1.13/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt @@ -0,0 +1,94 @@ +ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1) +=================================================== + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: ScyllaOperatorConfig +| **PluralName**: scyllaoperatorconfigs +| **SingularName**: scyllaoperatorconfig +| **Scope**: Cluster +| **ListKind**: ScyllaOperatorConfigList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaOperatorConfig describes the Scylla Operator configuration. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of the operator. + * - :ref:`status` + - object + - status defines the observed state of the operator. + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of the operator. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - scyllaUtilsImage + - string + - scyllaUtilsImage is a Scylla image used for running scylla utilities. + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status defines the observed state of the operator. + +Type +"""" +object + diff --git a/v1.13/_sources/api-reference/index.rst.txt b/v1.13/_sources/api-reference/index.rst.txt new file mode 100644 index 00000000000..85f7201ce76 --- /dev/null +++ b/v1.13/_sources/api-reference/index.rst.txt @@ -0,0 +1,13 @@ +API Reference +============= + +All APIs provided by Scylla Operator are defined using CRDs and adhere to Kubernetes API standards. You can find out how Kubernetes style REST APIs work on ``_ and ``_. + +API Groups and Kinds +-------------------- + +.. toctree:: + :maxdepth: 2 + :glob: + + groups/* diff --git a/v1.13/_sources/clients/alternator.md.txt b/v1.13/_sources/clients/alternator.md.txt new file mode 100644 index 00000000000..e6651c4c26f --- /dev/null +++ b/v1.13/_sources/clients/alternator.md.txt @@ -0,0 +1,94 @@ +# Using Alternator (DynamoDB) + +Alternator is a DynamoDB compatible API provided by ScyllaDB. +You can enable it on your ScyllaClusters by adding this section: +```yaml +spec: + alternator: {} +``` +While this is enough to turn it on, there are more options available. +Please refer to our [API documentation]() for details. + +:::{note} +Contrary to CQL clients, Alternator clients don't need to connect to every ScyllaDB node directly, nor discover the ScyllaDB node IP addresses. +Alternator protocol is based on HTTP and you can also expose the service "manually" with other networking concepts like Ingresses. +::: + +## Credentials + +Scylla Operator enables Alternator authorization by default. +Here is a quick example of how to get the token for accessing Alternator API. +To find out more, please refer to [ScyllaDB Alternator documentation](https://opensource.docs.scylladb.com/stable/alternator/compatibility.html#authorization). + +:::{caution} +The `salted_hash` is only present if password authentication for CQL is set up. + +Always make sure your clusters are configured to use Authentication and Authorization. +::: + +:::{tip} +You can find a quick example that enables Authentication and Authorization [here](./cql.md#authentication-and-authorization). +::: + +```bash +kubectl exec -it service/-client -c scylla -- cqlsh --user \ +-e "SELECT salted_hash FROM system_auth.roles WHERE role = ''" +``` + +## AWS CLI + +This paragraph shows how to use `aws dynamodb` cli to remotely connect to ScyllaDB Alternator API. + +:::{note} +This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured networking options differently, +or are using additional networking concepts like Ingresses, this address will need to be adjusted. +::: +:::{caution} +At the time of writing this document `kubectl exec -i` echoes passwords into the terminal. +It can be avoided by manually running `kubectl exec -it` and copying the output into a file / variable. +Because using `kubectl exec` with `-t` option merges standard and error outputs, we can't use it in the scripts bellow. + +See for more details. +::: + +```bash +SCYLLACLUSTER_NAME=scylladb +CQL_USER=cassandra +``` +```bash +SCYLLADB_EP="$( kubectl get "service/${SCYLLACLUSTER_NAME}-client" -o='jsonpath={.spec.clusterIP}' )" +AWS_ENDPOINT_URL_DYNAMODB="https://${SCYLLADB_EP}:8043" +export AWS_ENDPOINT_URL_DYNAMODB + +AWS_ACCESS_KEY_ID="${CQL_USER}" +export AWS_ACCESS_KEY_ID +AWS_SECRET_ACCESS_KEY="$( kubectl exec -i "service/${SCYLLACLUSTER_NAME}-client" -c scylla -- cqlsh --user ${CQL_USER} --no-color \ +-e "SELECT salted_hash from system_auth.roles WHERE role = '${AWS_ACCESS_KEY_ID}';" \ +| sed -e 's/\r//g' | sed -e '4q;d' | sed -E -e 's/^\s+//' )" +export AWS_SECRET_ACCESS_KEY + +AWS_CA_BUNDLE="$( mktemp )" +export AWS_CA_BUNDLE +kubectl get "configmap/${SCYLLACLUSTER_NAME}-alternator-local-serving-ca" --template='{{ index .data "ca-bundle.crt" }}' > "${AWS_CA_BUNDLE}" +``` + +Now we can use `aws dynamodb` cli without modifications. + +```bash +aws dynamodb create-table --table-name MusicCollection --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 +``` +```text +TABLEDESCRIPTION 2024-03-01T16:35:41+01:00 5c8aae70-d7e1-11ee-a99e-6f31aaf1d6d3 MusicCollection ACTIVE +ATTRIBUTEDEFINITIONS Artist S +ATTRIBUTEDEFINITIONS SongTitle S +KEYSCHEMA Artist HASH +KEYSCHEMA SongTitle RANGE +PROVISIONEDTHROUGHPUT 5 5 +``` + +```bash +aws dynamodb list-tables +``` +```text +TABLENAMES MusicCollection +``` diff --git a/v1.13/_sources/clients/cql.md.txt b/v1.13/_sources/clients/cql.md.txt new file mode 100644 index 00000000000..bd7e05dff93 --- /dev/null +++ b/v1.13/_sources/clients/cql.md.txt @@ -0,0 +1,129 @@ +# Using CQL + +`cqlsh` is the CQL shell for ScyllaDB. You can learn more about it in [ScyllaDB documentation](https://opensource.docs.scylladb.com/stable/cql/cqlsh.html). + +## Authentication and Authorization + +For security reasons, you should always enable Authentication and Authorization. +At this point, this needs to be done manually in ScyllaDB Config. +You can find an example configuration bellow: + +:::{code-block} yaml + :emphasize-lines: 7-8 + +apiVersion: v1 +kind: ConfigMap +metadata: + name: scylla-config +data: + scylla.yaml: | + authenticator: PasswordAuthenticator + authorizer: CassandraAuthorizer +::: + +## Embedded cqlsh (aka localhost) + +Every ScyllaDB node has an integrated `cqlsh` available. Here is an example of how it can be used: + +::::{tab-set} +:::{tab-item} Any ScyllaDB Node +```bash +kubectl exec -it service/-client -c scylla -- cqlsh -u +``` +::: +:::{tab-item} Specific ScyllaDB Node +```bash +kubectl exec -it pod/-- -c scylla -- cqlsh -u +``` +::: +:::: +```text +Password: +Connected to scylla at 127.0.0.1:9042 +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4] +Use HELP for help. +@cqlsh> +``` + +## Remote cqlsh + +This paragraph shows how to use `cqlsh` to remotely connect to a ScyllaDB node. +It is strongly recommended to access CQL over TLS connections on port `9142` instead of unencrypted `9042`. +Note that Scylla Operator sets up TLS certificates by default and makes them accessible in the Kubernetes API, +so the encrypted port `9142` works by default. + +:::{caution} +In future releases the unencrypted port `9042` will be disabled by default, unless explicitly opted-in. +::: + +:::{caution} +To avoid unnecessary complexity, the following example simplifies how the credentials file is created. +Please create the credentials file with your text editor and avoid your password leaking into your bash history or environment variables. +To store the configuration permanently, please adjust `SCYLLADB_CONFIG` variable to an empty folder of your choice. +::: + +:::{note} +This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured the networking options differently, +you may need to adjust this endpoint. Please refer to [discovery documentation page](./discovery.md). +::: + +```bash +SCYLLADB_CONFIG="$( mktemp -d )" + +cat < "${SCYLLADB_CONFIG}/credentials" +[PlainTextAuthProvider] +username = +password = +EOF +chmod 600 "${SCYLLADB_CONFIG}/credentials" + +SCYLLADB_DISCOVERY_EP="$( kubectl get service/-client -o='jsonpath={.spec.clusterIP}' )" +kubectl get configmap/-local-serving-ca -o='jsonpath={.data.ca-bundle\.crt}' > "${SCYLLADB_CONFIG}/serving-ca-bundle.crt" +kubectl get secret/-local-user-admin -o='jsonpath={.data.tls\.crt}' | base64 -d > "${SCYLLADB_CONFIG}/admin.crt" +kubectl get secret/-local-user-admin -o='jsonpath={.data.tls\.key}' | base64 -d > "${SCYLLADB_CONFIG}/admin.key" + +cat < "${SCYLLADB_CONFIG}/cqlshrc" +[authentication] +credentials = ${SCYLLADB_CONFIG}/credentials +[connection] +hostname = ${SCYLLADB_DISCOVERY_EP} +port = 9142 +ssl=true +factory = cqlshlib.ssl.ssl_transport_factory +[ssl] +validate=true +certfile=${SCYLLADB_CONFIG}/serving-ca-bundle.crt +usercert=${SCYLLADB_CONFIG}/admin.crt +userkey=${SCYLLADB_CONFIG}/admin.key +EOF +``` + +::::{tab-set} +:::{tab-item} Native +```bash +cqlsh --cqlshrc="${SCYLLADB_CONFIG}/cqlshrc" +``` +::: +:::{tab-item} Podman +```bash +podman run -it --rm --entrypoint=cqlsh \ +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro,Z" \ +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro,Z" \ +docker.io/scylladb/scylla:5.4.3 +``` +::: +:::{tab-item} Docker +```bash +docker run -it --rm --entrypoint=cqlsh \ +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro" \ +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro" \ +docker.io/scylladb/scylla:5.4.3 +``` +::: +:::: +```text +Connected to scylla at :9142 +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4] +Use HELP for help. +@cqlsh> +``` diff --git a/v1.13/_sources/clients/discovery.md.txt b/v1.13/_sources/clients/discovery.md.txt new file mode 100644 index 00000000000..b823a01cd04 --- /dev/null +++ b/v1.13/_sources/clients/discovery.md.txt @@ -0,0 +1,72 @@ +# Discovering ScyllaDB Nodes + +## Preface + +Outside the Kubernetes ecosystem, ScyllaDB nodes are usually set up on static IP addresses +and a fixed subset of them is configured as the initial contact points for ScyllaDB clients. +This has several disadvantages because this particular subset of nodes can be down at the time the client is (re)started, +or the nodes can be replaced and change their IP addresses. +The latter can be mitigated by using DNS and updating the records. + +Scylla Operator allows setting up ScyllaDB in several network configurations, some of which are based on ephemeral IPs. +This makes solving the above-mentioned issues more pressing. + +## ScyllaDB Discovery Endpoint + +For every ScyllaCluster, the operator will set up a Kubernetes Service (an internal load balancer) selecting all ScyllaDB nodes +and the internal Kubernetes controllers make sure to continuously update its endpoints with a subset of ScyllaDB nodes that are ready. +Because of that, you can always talk to ScyllaDB through this endpoint, as long as there are nodes to back it. +In case you are in the same Kubernetes cluster you can also use internal DNS for this service. + +Clients can use this endpoint for the initial connection to reach one of the ScyllaDB nodes that are ready +and from there the drivers will automatically discover the per-node IP address for every ScyllaDB node that's part of this cluster. + +This service is called `-client` and in its default configuration it uses ClusterIP which is virtual and local to the Kubernetes cluster. +It can be configured to be backed by an external load balancer, be exposed through an Ingress, an additional hop or in other ways. +Depending on how you have configured the networking, use the appropriate IP address or DNS name for your client. + +Here is an example of how the unmodified service looks like: + +```bash +kubectl get scyllacluster/scylla service/scylla-client +``` +``` +NAME READY MEMBERS RACKS AVAILABLE PROGRESSING DEGRADED AGE +scyllacluster.scylla.scylladb.com/scylla 1 1 1 True True True 10d + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-client ClusterIP 10.102.44.43 7000/TCP,7001/TCP,9042/TCP,9142/TCP,19042/TCP,19142/TCP,7199/TCP,10001/TCP,9180/TCP,5090/TCP,9100/TCP,9160/TCP,8043/TCP 10d +``` + +You can get only the ClusterIP using +```bash +kubectl get service/scylla-client -o='jsonpath={.spec.clusterIP}' +``` +or use its DNS name (`scylla-client..svc`). + +### Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary + +In case you are connecting from outside the Kubernetes cluster and using Pod IPs as your exposure type, you can expose just the `-client` service using an internal load balancer. +Having a stable contact point is especially important when using ephemeral Pod IPs. +Services configure internal load balancer using provider-specific annotations, so this may differ with your provider. + +:::{tip} +To learn more about exposing ScyllaClusters, visit our dedicated documentation [page](../exposing.md). +::: + +::::{tab-set} +:::{tab-item} GKE +```bash +kubectl patch service/-client -p '{"metadata": {"annotations": {"networking.gke.io/load-balancer-type": "Internal"}}, "spec": {"type": "LoadBalancer"}}' +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/-client +kubectl get service/-client -o='jsonpath={.status.loadBalancer.ingress[0].ip}' +``` +::: +:::{tab-item} EKS +```bash +kubectl patch service/-client -p '{"metadata": {"annotations": {"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal", "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "tcp"}}, "spec": {"type": "LoadBalancer"}}' +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/-client +kubectl get service/-client -o='jsonpath={.status.loadBalancer.ingress[0].hostname}' +``` +::: +:::: diff --git a/v1.13/_sources/clients/index.rst.txt b/v1.13/_sources/clients/index.rst.txt new file mode 100644 index 00000000000..0c8c4697608 --- /dev/null +++ b/v1.13/_sources/clients/index.rst.txt @@ -0,0 +1,12 @@ +========================================================== +Using ScyllaDB APIs +========================================================== + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + + discovery + cql + alternator diff --git a/v1.13/_sources/contributing.md.txt b/v1.13/_sources/contributing.md.txt new file mode 100644 index 00000000000..da5fc078732 --- /dev/null +++ b/v1.13/_sources/contributing.md.txt @@ -0,0 +1,155 @@ +# Contributing to Scylla Operator + +## Prerequisites + +To develop on scylla-operator, your environment must have the following: + +1. [Go 1.13](https://golang.org/dl/) + * Make sure [GOPATH](https://github.com/golang/go/wiki/SettingGOPATH) is set to `GOPATH=$HOME/go`. +2. [Kustomize v3.1.0](https://github.com/kubernetes-sigs/kustomize/releases/tag/v3.1.0) +3. [kubebuilder v2.3.1](https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v2.3.1) +4. [Docker](https://docs.docker.com/install/) +5. Git client installed +6. Github account + +To install all dependencies (Go, kustomize, kubebuilder, dep), simply run: +```bash +./install-dependencies.sh +``` + +## Initial Setup + +### Create a Fork + +From your browser navigate to [http://github.com/scylladb/scylla-operator](http://github.com/scylladb/scylla-operator) and click the "Fork" button. + +### Clone Your Fork + +Open a console window and do the following: + +```bash +# Create the scylla operator repo path +mkdir -p $GOPATH/src/github.com/scylladb + +# Navigate to the local repo path and clone your fork +cd $GOPATH/src/github.com/scylladb + +# Clone your fork, where is your GitHub account name +git clone https://github.com//scylla-operator.git +``` + +### Add Upstream Remote + +First you will need to add the upstream remote to your local git: +```bash +# Add 'upstream' to the list of remotes +git remote add upstream https://github.com/scylladb/scylla-operator.git + +# Verify the remote was added +git remote -v +``` +Now you should have at least `origin` and `upstream` remotes. You can also add other remotes to collaborate with other contributors. + +## Development + +To add a feature or to make a bug fix, you will need to create a branch in your fork and then submit a pull request (PR) from the branch. + +### Building the project + +You can build the project using the Makefile commands: +* Open the Makefile and change the `IMG` environment variable to a repository you have access to. +* Run `make docker-push` and wait for the image to be built and uploaded in your repo. + +### Create a Branch + +From a console, create a new branch based on your fork and start working on it: + +```bash +# Ensure all your remotes are up to date with the latest +git fetch --all + +# Create a new branch that is based off upstream master. Give it a simple, but descriptive name. +# Generally it will be two to three words separated by dashes and without numbers. +git checkout -b feature-name upstream/master +``` + +Now you are ready to make the changes and commit to your branch. + +### Updating Your Fork + +During the development lifecycle, you will need to keep up-to-date with the latest upstream master. As others on the team push changes, you will need to `rebase` your commits on top of the latest. This avoids unnecessary merge commits and keeps the commit history clean. + +Whenever you need to update your local repository, you never want to merge. You **always** will rebase. Otherwise you will end up with merge commits in the git history. If you have any modified files, you will first have to stash them (`git stash save -u ""`). + +```bash +git fetch --all +git rebase upstream/master +``` + +Rebasing is a very powerful feature of Git. You need to understand how it works or else you will risk losing your work. Read about it in the [Git documentation](https://git-scm.com/docs/git-rebase), it will be well worth it. In a nutshell, rebasing does the following: +- "Unwinds" your local commits. Your local commits are removed temporarily from the history. +- The latest changes from upstream are added to the history +- Your local commits are re-applied one by one +- If there are merge conflicts, you will be prompted to fix them before continuing. Read the output closely. It will tell you how to complete the rebase. +- When done rebasing, you will see all of your commits in the history. + +## Submitting a Pull Request + +Once you have implemented the feature or bug fix in your branch, you will open a PR to the upstream repo. Before opening the PR ensure you have added unit tests, are passing the integration tests, cleaned your commit history, and have rebased on the latest upstream. + +In order to open a pull request (PR) it is required to be up to date with the latest changes upstream. If other commits are pushed upstream before your PR is merged, you will also need to rebase again before it will be merged. + +### Commit History + +To prepare your branch to open a PR, you will need to have the minimal number of logical commits so we can maintain +a clean commit history. Most commonly a PR will include a single commit where all changes are squashed, although +sometimes there will be multiple logical commits. + +```bash +# Inspect your commit history to determine if you need to squash commits +git log + +# Rebase the commits and edit, squash, or even reorder them as you determine will keep the history clean. +# In this example, the last 5 commits will be opened in the git rebase tool. +git rebase -i HEAD~5 +``` + +Once your commit history is clean, ensure you have based on the [latest upstream](#updating-your-fork) before you open the PR. + +### Commit messages + +Please make the first line of your commit message a summary of the change that a user (not a developer) of Operator would like to read, +and prefix it with the most relevant directory of the change followed by a colon. +The changelog gets made by looking at just these first lines so make it good! + +If you have more to say about the commit, then enter a blank line and carry on the description. +Remember to say why the change was needed - the commit itself shows what was changed. + +Writing more is better than less. Comparing the behaviour before the change to that after the change is very useful. +Imagine you are writing to yourself in 12 months time when you've forgotten everything about what you just did, and you need to get up to speed quickly. + +If the change fixes an issue then write Fixes #1234 in the commit message. +This can be on the subject line if it will fit. If you don't want to close the associated issue just put #1234 and the change will get linked into the issue. + +Here is an example of a short commit message: + +``` +sidecar: log on reconcile loop - fixes #1234 +``` + +And here is an example of a longer one: +``` + +api: now supports host networking (#1234) + +The operator CRD now has a "network" property that can be used to +select host networking as well as setting the apropriate DNS policy. + +Fixes #1234 +``` + +### Submitting + +Go to the [Scylla Operator github](https://www.github.com/scylladb/scylla-operator) to open the PR. If you have pushed recently, you should see an obvious link to open the PR. If you have not pushed recently, go to the Pull Request tab and select your fork and branch for the PR. + +After the PR is open, you can make changes simply by pushing new commits. Your PR will track the changes in your fork and update automatically. diff --git a/v1.13/_sources/eks.md.txt b/v1.13/_sources/eks.md.txt new file mode 100644 index 00000000000..94abd21b15e --- /dev/null +++ b/v1.13/_sources/eks.md.txt @@ -0,0 +1,128 @@ +# Deploying Scylla on EKS + +This guide is focused on deploying Scylla on EKS with improved performance. +Performance tricks used by the script won't work with different machine tiers. +It sets up the kubelets on EKS nodes to run with [static cpu policy](https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/) and uses [local sdd disks](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html) in RAID0 for maximum performance. + +Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the [general guide](generic.md). + +## TL;DR; + +If you don't want to run the commands step-by-step, you can just run a script that will set everything up for you: +```bash +# Edit according to your preference +EKS_REGION=us-east-1 +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c + +# From inside the examples/eks folder +cd examples/eks +./eks.sh -z "$EKS_ZONES" -r "$EKS_REGION" +``` + +After you deploy, see how you can [benchmark your cluster with cassandra-stress](generic.md#benchmark-with-cassandra-stress). + +## Walkthrough + +### EKS Setup + +#### Configure environment variables + +First of all, we export all the configuration options as environment variables. +Edit according to your own environment. + +``` +EKS_REGION=us-east-1 +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c +CLUSTER_NAME=scylla-demo +``` + +#### Creating an EKS cluster + +For this guide, we'll create an EKS cluster with the following: + +* A NodeGroup of 3 `i3-2xlarge` Nodes, where the Scylla Pods will be deployed. These nodes will only accept pods having `scylla-clusters` toleration. + +``` + - name: scylla-pool + instanceType: i3.2xlarge + desiredCapacity: 3 + labels: + scylla.scylladb.com/node-type: scylla + taints: + role: "scylla-clusters:NoSchedule" + ssh: + allow: true + kubeletExtraConfig: + cpuManagerPolicy: static +``` + +* A NodeGroup of 4 `c4.2xlarge` Nodes to deploy `cassandra-stress` later on. These nodes will only accept pods having `cassandra-stress` toleration. + +``` + - name: cassandra-stress-pool + instanceType: c4.2xlarge + desiredCapacity: 4 + labels: + pool: "cassandra-stress-pool" + taints: + role: "cassandra-stress:NoSchedule" + ssh: + allow: true +``` + +* A NodeGroup of 1 `i3.large` Node, where the monitoring stack and operator will be deployed. +``` + - name: monitoring-pool + instanceType: i3.large + desiredCapacity: 1 + labels: + pool: "monitoring-pool" + ssh: + allow: true +``` + +### Prerequisites + +#### Installing script third party dependencies + +Script requires several dependencies: +- eksctl - See: https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html +- kubectl - See: https://kubernetes.io/docs/tasks/tools/install-kubectl/ + +### Deploying ScyllaDB Operator + +Refer to [Deploying Scylla on a Kubernetes Cluster](generic.md) in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites. + +#### Setting up nodes for ScyllaDB + +ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you'll first need to form a RAID array from those disks. +`NodeConfig` performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in [Performance tuning](performance.md) section of ScyllaDB Operator's documentation. + +Deploy `NodeConfig` to let it take care of the above operations: +``` +kubectl apply --server-side -f examples/eks/nodeconfig-alpha.yaml +``` + +#### Deploying Local Volume Provisioner + +Afterwards, deploy ScyllaDB's [Local Volume Provisioner](https://github.com/scylladb/k8s-local-volume-provisioner), capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays. +``` +kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/ +``` + +### Deploying ScyllaDB + +Now you can follow the steps described in [Deploying Scylla on a Kubernetes Cluster](generic.md) to launch your ScyllaDB cluster in a highly performant environment. + +#### Accessing the database + +Instructions on how to access the database can also be found in the [generic guide](generic.md). + +### Deleting an EKS cluster + +Once you are done with your experiments delete your cluster using the following command: + +``` +eksctl delete cluster "${CLUSTER_NAME}" +``` diff --git a/v1.13/_sources/exposing.md.txt b/v1.13/_sources/exposing.md.txt new file mode 100644 index 00000000000..348bc4c233d --- /dev/null +++ b/v1.13/_sources/exposing.md.txt @@ -0,0 +1,300 @@ +# Exposing ScyllaCluster + +This document explains how ScyllaDB Operator exposes ScyllaClusters in different network setups. +A ScyllaCluster can be exposed in various network configurations, independently to clients and nodes. + +:::{note} +ScyllaClusters can be only exposed when the ScyllaDB version used version is `>=2023.1` ScyllaDB Enterprise or `>=5.2` ScyllaDB Open Source. +::: + +## Expose Options + +`exposeOptions` specifies configuration options for exposing ScyllaCluster's. +A ScyllaCluster created without any `exposeOptions` is equivalent to the following: + +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: ServiceClusterIP + nodes: + type: ServiceClusterIP +``` + +The following sections cover what every field controls and what the configuration options are. + +### Node Service Template + +`nodeService` serves as a template for a node-dedicated Service managed by the Scylla Operator for each node within a ScyllaCluster. +The properties of the Services depend on the selected type. +Additionally, there's an option to define custom annotations, incorporated into each node's Service, +which might be useful for further tweaking the Service properties or related objects. + +#### Headless Type + +For `Headless` type, Scylla Operator creates a Headless Service with a selector pointing to the particular node in the ScyllaCluster. +Such Service doesn't provide any additional IP addresses, and the internal DNS record resolves to the PodIP of a node. + +This type of Service is useful when ScyllaCluster nodes broadcast PodIPs to clients and other nodes. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless +``` + +#### ClusterIP Type + +For `ClusterIP` type, Scylla Operator creates a ClusterIP Service backed by a specific node in the ScyllaCluster. + +These IP addresses are only routable within the same Kubernetes cluster, so it's a good fit, if you don't want to expose them to other networks. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP +``` + +#### LoadBalancer Type + +For the `LoadBalancer` type, Scylla Operator generates a LoadBalancer Service that directs traffic to a specific node within the ScyllaCluster. +On platforms with support for external load balancers, this Service provisions one. +The accessibility of this load balancer's address depends on the platform and any customizations made; in some cases it may be reachable from the internal network or public Internet. + +Customizations are usually managed via Service annotations, key-value pairs provided in `annotations` field are merged into each Service object. +LoadBalancer Services should be configured to pass through entire traffic. +For example, to expose LoadBalancer only to internal network use the following annotations: + +::::{tab-set} +:::{tab-item} EKS +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + annotations: + service.beta.kubernetes.io/aws-load-balancer-scheme: internal + service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp +``` +::: +:::{tab-item} GKE +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + annotations: + networking.gke.io/load-balancer-type: Internal +``` +::: +:::: + +Check platform-specific documentation regarding LoadBalancer configuration to learn more about available options. + +LoadBalancer Service is a superset of ClusterIP Service, implying that each LoadBalancer Service also contains an allocated ClusterIP. +They can be configured using the following fields, which propagate to every node Service: +* externalTrafficPolicy +* internalTrafficPolicy +* loadBalancerClass +* allocateLoadBalancerNodePorts + +Check [Kubernetes Service documentation](https://kubernetes.io/docs/concepts/services-networking/service) to learn more about these options. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + loadBalancerClass: my-custom-load-balancer-class +``` + +--- + +### Broadcast Options + +Broadcast options control what is the source of the address being broadcasted to clients and nodes. +It's configured independently for clients and nodes because you may want to expose these two types of traffic on different networks. +Using different networks can help manage costs, reliability, latency, security policies or other metrics you care about. + +#### PodIP Type + +Address broadcasted to clients/nodes is taken from Pod. +By default, the address is taken from Pod's `status.PodIP` field. +Because a Pod can use multiple address, you may want to provide source options by specifying `podIP.source`. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: PodIP + podIP: + source: Status +``` + +#### ServiceClusterIP Type + +Address broadcasted to clients or nodes is taken from `spec.ClusterIP` field of a node's dedicated Service. + +In order to configure it, the `nodeService` template must specify a Service having a ClusterIP assigned. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: ServiceClusterIP +``` + +#### ServiceLoadBalancerIngress Type + +Address broadcasted to clients/nodes is taken from the node dedicated Service, from `status.ingress[0].ipAddress` or `status.ingress[0].hostname` field. + +In order to configure it, the `nodeService` template must specify the LoadBalancer Service. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: ServiceLoadBalancerIngress + podIP: + source: Status +``` + +## Deployment Examples + +The following section contains several specific examples of various network scenarios and explains how nodes and clients communicate with one another. +### In-cluster only + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: ServiceClusterIP + nodes: + type: ServiceClusterIP +``` + +Both client and nodes are deployed within the same Kubernetes cluster. +They talk through ClusterIP addresses taken from the Service. +Because ClusterIP Services are only routable within the same Kubernetes cluster, this cluster won't be reachable from outside. + +![ClusterIPs](static/exposing/clusterip.svg) + +### In-cluster node-to-node, VPC clients-to-nodes + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: PodIP + nodes: + type: ServiceClusterIP +``` + +In this scenario, we assume that the Pod IP subnet is routable within a VPC. +Clients within the VPC network can communicate directly with ScyllaCluster nodes using PodIPs. +Nodes communicate with each other exclusively within the same Kubernetes cluster. + +![PodIPs](static/exposing/podips.svg) + +### Multi VPC + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP +``` + +In this scenario, we set up two separate Kubernetes clusters in distinct VPCs. +These VPCs are interconnected to facilitate inter-VPC connectivity. +We operate on the assumption that the Pod IP subnet is routable within each VPC. + +Both ScyllaClusters use the same `exposeOptions`, nodes broadcast their Pod IP addresses, enabling them to establish connections with one another. +****Check other documentation pages to know how to connect two ScyllaClusters into one logical cluster. + +Clients, whether deployed within the same Kubernetes cluster or within a VPC, have the capability to reach nodes using their Pod IPs. +Since there is no requirement for any address other than the Pod IP, the `Headless` service type is sufficient. + +![MultiVPC](static/exposing/multivpc.svg) + +### Internet + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + broadcastOptions: + clients: + type: ServiceLoadBalancerIngress + nodes: + type: ClusterIP +``` + +We assume that a Kubernetes cluster has been deployed in a cloud provider environment that supports external load balancers. +By specifying the LoadBalancer type in the nodeService template, the Scylla Operator generates a dedicated LB Service for each node. +The cloud provider then establishes an external load balancer with an internet-accessible address. +ScyllaDB nodes broadcast this external address to clients, enabling drivers to connect and discover other nodes. +Since all ScyllaDB nodes reside within the same Kubernetes cluster, there is no need to route traffic through the internet. +Consequently, the nodes are configured to communicate via ClusterIP, which is also accessible within LoadBalancer Services. + +![Internet](static/exposing/loadbalancer.svg) + +--- + +Other more complex scenarios can be built upon these simple ones. diff --git a/v1.13/_sources/generic.md.txt b/v1.13/_sources/generic.md.txt new file mode 100644 index 00000000000..a91774938af --- /dev/null +++ b/v1.13/_sources/generic.md.txt @@ -0,0 +1,386 @@ +# Deploying Scylla on a Kubernetes Cluster + +This is a guide to deploy a Scylla Cluster in a generic Kubernetes environment, meaning that Scylla will not be deployed with the ideal performance. +Scylla performs the best when it has fast disks and direct access to the cpu. +This requires some extra setup, which is platform-specific. +For specific configuration and setup, check for details about your particular environment: + +* [GKE](gke.md) + +## Prerequisites + +* A Kubernetes cluster +* A [Storage Class](https://kubernetes.io/docs/concepts/storage/storage-classes/) to provision [PersistentVolumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/). +* Helm 3 installed, Go to the [helm docs](https://docs.helm.sh/using_helm/#installing-helm) if you need to install it. + Make sure that you enable the [stable repository](https://github.com/helm/charts#how-do-i-enable-the-stable-repository-for-helm-3) + +## Running locally + +Running kubernetes locally is a daunting and error prone task. +Fortunately there are ways to make life easier and [Minikube](https://minikube.sigs.k8s.io/docs/) makes it a breeze. + +We need to give minikube a little bit more resources than default so start minikube like this: +```console +minikube start --cpus=6 +``` + +Then make kubectl aware of this local installation like this: +```console +eval $(minikube docker-env) +``` + +## Download Scylla Operator +In this guide you will be using the examples and manifests from [Scylla Operator repository](https://github.com/scylladb/scylla-operator), so start off by cloning it to your local machine. +```console +git clone git@github.com:scylladb/scylla-operator.git +cd scylla-operator +``` + +## Deploy Cert Manager +First deploy Cert Manager, you can either follow [upsteam instructions](https://cert-manager.io/docs/installation/kubernetes/) or use following command: + +```console +kubectl apply -f examples/common/cert-manager.yaml +``` +This will install Cert Manager to provision a self-signed certificate. + +Once it's deployed, wait until Cert Manager is ready: + +```console +kubectl wait --for condition=established crd/certificates.cert-manager.io crd/issuers.cert-manager.io +kubectl -n cert-manager rollout status deployment.apps/cert-manager-webhook +``` + +## Deploy Scylla Operator + +Deploy the Scylla Operator using the following commands: + +```console +kubectl apply -f deploy/operator.yaml +``` + +This will install the operator in namespace `scylla-operator`. +Wait until it's ready: + +```console +kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator +``` + +If you want to check the logs of the operator you can do so with: + + ```console +kubectl -n scylla-operator logs deployment.apps/scylla-operator +``` + +## Create and Initialize a Scylla Cluster + +Now that the operator is running, we can create an instance of a Scylla cluster by creating an instance of the `clusters.scylla.scylladb.com` resource. +Some of that resource's values are configurable, so feel free to browse `cluster.yaml` and tweak the settings to your liking. +Full details for all the configuration options can be found in the [Scylla Cluster CRD documentation](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). + +When you are ready to create a Scylla cluster, simply run: + +```console +kubectl create -f examples/generic/cluster.yaml +``` + +We can verify that a Kubernetes object has been created that represents our new Scylla cluster with the command below. +This is important because it shows that has successfully extended Kubernetes to make Scylla clusters a first class citizen in the Kubernetes cloud-native environment. + +```console +kubectl -n scylla get ScyllaCluster +``` + +Checking the pods that are created is as easy as: + +```console +kubectl -n scylla get pods +``` + +The output should be something like: + +```console +NAME READY STATUS RESTARTS AGE +simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 9m49s +simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 7m43s +simple-cluster-us-east-1-us-east-1a-2 2/2 Running 0 6m46s +``` + +It is important to note that the operator creates these instances according to a pattern. +This pattern is as follows: `CLUSTER_NAME-DATACENTER_NAME-RACK_NAME-INSTANCE_NUMBER` as specified in `cluster.yaml`. + +In the above example we have the following properties: + + - CLUSTER_NAME: `simple-cluster` + - DATACENTER_NAME: `us-east-1` + - RACK_NAME: `us-east-1a` + - INSTANCE_NUMBER: An automatically generated number attached to the pod name. + +We picked the names to resemble something you can find in a cloud service but this is inconsequential, they can be set to anything you want. + +To check if all the desired members are running, you should see the same number of entries from the following command as the number of members that was specified in `cluster.yaml`: + +```console +kubectl -n scylla get pod -l app=scylla +``` + +You can also track the state of a Scylla cluster from its status. To check the current status of a Cluster, run: + +```console +kubectl -n scylla describe ScyllaCluster simple-cluster +``` + +Checking the logs of the running scylla instances can be done like this: + +```console +kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 scylla +``` + +### Configure host networking + +To squeeze the most out of your deployment it is sometimes necessary to employ [host networking](https://kubernetes.io/docs/concepts/services-networking/). +To enable this the CRD allows for specifying a `network` parameter as such: + +```yaml + version: 5.4.3 + agentVersion: 3.2.8 + cpuset: true + network: + hostNetworking: true +``` + +This will result in hosts network to be used for the Scylla Stateful Set deployment. + +### Configure container kernel parameters + +Sometimes it is necessary to run the container with different kernel parameters. +In order to support this, the Scylla Operator defines a cluster property `sysctls` that is a list of the desired key-value pairs to set. + +___For example___: To increase the number events available for asynchronous IO processing in the Linux kernel to N set sysctls to`fs.aio-max-nr=N`. + +```yaml +spec: + sysctls: + - "fs.aio-max-nr=2097152" +``` + +### Deploying Alternator + +The operator is also capable of deploying [Alternator](https://www.scylladb.com/alternator/) instead of the regular Scylla. +This requires a small change in the cluster definition. +Change the `cluster.yaml` file from this: +```yaml +spec: + agentVersion: 3.2.8 + version: 5.4.3 + developerMode: true + datacenter: + name: us-east-1 +``` +to this: +```yaml +spec: + version: 5.4.3 + alternator: + port: 8000 + writeIsolation: only_rmw_uses_lwt + agentVersion: 3.2.8 + developerMode: true + datacenter: + name: us-east-1 +``` +You can specify whichever port you want. + +You must provide desired write isolation, supported values are: "always", "forbid_rmw", "only_rmw_uses_lwt". +Difference between those isolation levels can be found in Scylla Alternator documentation. + +Once this is done the regular CQL ports will no longer be available, the cluster is a pure Alternator cluster. + +## Accessing the Database + +* From kubectl: + +To get a cqlsh shell in your new Cluster: +```console +kubectl exec -n scylla -it simple-cluster-us-east-1-us-east-1a-0 -- cqlsh +> DESCRIBE KEYSPACES; +``` + + +* From inside a Pod: + +When you create a new Cluster, automatically creates a Service for the clients to use in order to access the Cluster. +The service's name follows the convention `-client`. +You can see this Service in your cluster by running: +```console +kubectl -n scylla describe service simple-cluster-client +``` +Pods running inside the Kubernetes cluster can use this Service to connect to Scylla. +Here's an example using the [Python Driver](https://github.com/datastax/python-driver): +```python +from cassandra.cluster import Cluster + +cluster = Cluster(['simple-cluster-client.scylla.svc']) +session = cluster.connect() +``` + +If you are running the Alternator you can access the API on the port you specified using plain http. + +## Configure Scylla + +The operator can take a ConfigMap and apply it to the scylla.yaml configuration file. +This is done by adding a ConfigMap to Kubernetes and refering to this in the Rack specification. +The ConfigMap is just a file called `scylla.yaml` that has the properties you want to change in it. +The operator will take the default properties for the rest of the configuration. + +* Create a ConfigMap the default name that the operator uses is `scylla-config`: +```console +kubectl create configmap scylla-config -n scylla --from-file=/path/to/scylla.yaml +``` +* Wait for the mount to propagate and then restart the cluster: +```console +kubectl rollout restart -n scylla statefulset/simple-cluster-us-east-1-us-east-1a +``` +* The new config should be applied automatically by the operator, check the logs to be sure. + +Configuring `cassandra-rackdc.properties` is done by adding the file to the same mount as `scylla.yaml`. +```console +kubectl create configmap scylla-config -n scylla --from-file=/tmp/scylla.yaml --from-file=/tmp/cassandra-rackdc.properties -o yaml --dry-run | kubectl replace -f - +``` +The operator will then apply the overridable properties `prefer_local` and `dc_suffix` if they are available in the provided mounted file. + +:::{note} +If you want to enable authentication, you first need to adjust `system_auth` keyspace replication factor to the number of nodes in the datacenter via cqlsh. It allows you to ensure that the user’s information is kept highly available for the cluster. If `system_auth` is not equal to the number of nodes and a node fails, the user whose information is on that node will be denied access. +For production environments only use `NetworkTopologyStrategy`. + +```shell +kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : };" +``` + +You can read more about enabling authentication in the [Enable authentication](https://opensource.docs.scylladb.com/stable/operating-scylla/security/authentication.html) section of ScyllaDB's documentation. +::: + +## Configure Scylla Manager Agent + +The operator creates a second container for each scylla instance that runs [Scylla Manager Agent](https://hub.docker.com/r/scylladb/scylla-manager-agent). +This container serves as a sidecar and it's the main endpoint for interacting with Scylla API. +The Scylla Manager Agent can be configured with various things such as the security token used to allow access to Scylla API and storage providers for backups. + +To configure the agent you just create a new secret called _scylla-agent-config-secret_ and populate it with the contents in the `scylla-manager-agent.yaml` file like this: +```console +kubectl create secret -n scylla generic scylla-agent-config-secret --from-file scylla-manager-agent.yaml +``` + +See [Scylla Manager Agent configuration](https://manager.docs.scylladb.com/stable/config/scylla-manager-config.html) for a complete reference of the Scylla Manager agent config file. + +### Scylla Manager Agent auth token + +Operator provisions Agent auth token by copying value from user provided config secret or auto generates it if it's empty. +To check which value is being used, decode content of `-auth-token` secret. +To change it simply remove the secret. Operator will create a new one. To pick up the change in the cluster, initiate a rolling restart. + +## Set up monitoring + +To set up monitoring using Prometheus and Grafana follow [this guide](monitoring.md). + +## Scale a ScyllaCluster + +The operator supports adding new nodes to existing racks, adding new racks to the cluster, as well as removing both single nodes and entire racks. To introduce the changes, edit the cluster with: +```console +kubectl -n scylla edit scyllaclusters.scylla.scylladb.com/simple-cluster +``` +* To modify the number of nodes in a rack, update the `members` field of the selected rack to a desired value. +* To add a new rack, append it to the `.spec.datacenter.racks` list. Remember to choose a unique rack name for the new rack. +* To remove a rack, first scale it down to zero nodes, and then remove it from `.spec.datacenter.racks` list. + +Having edited and saved the yaml, you can check your cluster's Status and Events to retrieve information about what's happening: +```console +kubectl -n scylla describe scyllaclusters.scylla.scylladb.com/simple-cluster +``` + +:::{note} +If you have configured ScyllaDB with `authenticator` set to `PasswordAuthenticator`, you need to manually configure the replication factor of the `system_auth` keyspace with every scaling operation. + +```shell +kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -u -p -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : };" +``` + +It is recommended to set `system_auth` replication factor to the number of nodes in each datacenter. +::: + +## Benchmark with cassandra-stress + +After deploying our cluster along with the monitoring, we can benchmark it using cassandra-stress and see its performance in Grafana. We have a mini cli that generates Kubernetes Jobs that run cassandra-stress against a cluster. + +> Because cassandra-stress doesn't scale well to multiple cores, we use multiple jobs with a small core count for each + +```bash + +# Run a benchmark with 10 jobs, with 6 cpus and 50.000.000 operations each. +# Each Job will throttle throughput to 30.000 ops/sec for a total of 300.000 ops/sec. +hack/cass-stress-gen.py --num-jobs=10 --cpu=6 --memory=20G --ops=50000000 --limit=30000 +kubectl apply -f scripts/cassandra-stress.yaml +``` + +Make sure you set the proper arguments in case you have altered things such as _name_ or _namespace_. + +```bash +./hack/cass-stress-gen.py -h +usage: cass-stress-gen.py [-h] [--num-jobs NUM_JOBS] [--name NAME] [--namespace NAMESPACE] [--scylla-version SCYLLA_VERSION] [--host HOST] [--cpu CPU] [--memory MEMORY] [--ops OPS] [--threads THREADS] [--limit LIMIT] + [--connections-per-host CONNECTIONS_PER_HOST] [--print-to-stdout] [--nodeselector NODESELECTOR] + +Generate cassandra-stress job templates for Kubernetes. + +optional arguments: + -h, --help show this help message and exit + --num-jobs NUM_JOBS number of Kubernetes jobs to generate - defaults to 1 + --name NAME name of the generated yaml file - defaults to cassandra-stress + --namespace NAMESPACE + namespace of the cassandra-stress jobs - defaults to "default" + --scylla-version SCYLLA_VERSION + version of scylla server to use for cassandra-stress - defaults to 4.0.0 + --host HOST ip or dns name of host to connect to - defaults to scylla-cluster-client.scylla.svc + --cpu CPU number of cpus that will be used for each job - defaults to 1 + --memory MEMORY memory that will be used for each job in GB, ie 2G - defaults to 2G * cpu + --ops OPS number of operations for each job - defaults to 10000000 + --threads THREADS number of threads used for each job - defaults to 50 * cpu + --limit LIMIT rate limit for each job - defaults to no rate-limiting + --connections-per-host CONNECTIONS_PER_HOST + number of connections per host - defaults to number of cpus + --print-to-stdout print to stdout instead of writing to a file + --nodeselector NODESELECTOR + nodeselector limits cassandra-stress pods to certain nodes. Use as a label selector, eg. --nodeselector role=scylla +``` +While the benchmark is running, open up Grafana and take a look at the monitoring metrics. + +After the Jobs finish, clean them up with: +```bash +kubectl delete -f scripts/cassandra-stress.yaml +``` + +## Clean Up + +To clean up all resources associated with this walk-through, you can run the commands below. + +**NOTE:** this will destroy your database and delete all of its associated data. + +```console +kubectl delete -f examples/generic/cluster.yaml +kubectl delete -f deploy/operator.yaml +kubectl delete -f examples/common/cert-manager.yaml +``` + +## Troubleshooting + +If the cluster does not come up, the first step would be to examine the operator's logs: + +```console +kubectl -n scylla-operator logs deployment.apps/scylla-operator +``` + +If everything looks OK in the operator logs, you can also look in the logs for one of the Scylla instances: + +```console +kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 +``` diff --git a/v1.13/_sources/gke.md.txt b/v1.13/_sources/gke.md.txt new file mode 100644 index 00000000000..3ea9e1c9de3 --- /dev/null +++ b/v1.13/_sources/gke.md.txt @@ -0,0 +1,173 @@ +# Deploying Scylla on GKE + +This guide is focused on deploying Scylla on GKE with maximum performance (without any persistence guarantees). +It sets up the kubelets on GKE nodes to run with [static cpu policy](https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/) and uses [local sdd disks](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/local-ssd) in RAID0 for maximum performance. + +Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the [general guide](generic.md). + +## TL;DR; + +If you don't want to run the commands step-by-step, you can just run a script that will set everything up for you: +```bash +# Edit according to your preference +GCP_USER=$(gcloud config list account --format "value(core.account)") +GCP_PROJECT=$(gcloud config list project --format "value(core.project)") +GCP_ZONE=us-west1-b + +# From inside the examples/gke folder +cd examples/gke +./gke.sh -u "$GCP_USER" -p "$GCP_PROJECT" -z "$GCP_ZONE" + +# Example: +# ./gke.sh -u yanniszark@arrikto.com -p gke-demo-226716 -z us-west1-b +``` + +:::{warning} +Make sure to pass a ZONE (ex.: us-west1-b) and not a REGION (ex.: us-west1) or it will deploy nodes in each ZONE available in the region. +::: + +After you deploy, see how you can [benchmark your cluster with cassandra-stress](generic.md#benchmark-with-cassandra-stress). + +## Walkthrough + +### Google Kubernetes Engine Setup + +#### Configure environment variables + +First of all, we export all the configuration options as environment variables. +Edit according to your own environment. + +``` +GCP_USER=$( gcloud config list account --format "value(core.account)" ) +GCP_PROJECT=$( gcloud config list project --format "value(core.project)" ) +GCP_REGION=us-west1 +GCP_ZONE=us-west1-b +CLUSTER_NAME=scylla-demo +CLUSTER_VERSION=$( gcloud container get-server-config --zone ${GCP_ZONE} --format "value(validMasterVersions[0])" ) +``` + +#### Creating a GKE cluster + +First we need to change kubelet CPU Manager policy to static by providing a config file. Create file called `systemconfig.yaml` with the following content: +``` +kubeletConfig: + cpuManagerPolicy: static +``` + +Then we'll create a GKE cluster with the following: + +1. A NodePool of 2 `n1-standard-8` Nodes, where the operator and the monitoring stack will be deployed. These are generic Nodes and their free capacity can be used for other purposes. + ``` + gcloud container \ + clusters create "${CLUSTER_NAME}" \ + --cluster-version "${CLUSTER_VERSION}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-8" \ + --num-nodes "2" \ + --disk-type "pd-ssd" --disk-size "20" \ + --image-type "UBUNTU_CONTAINERD" \ + --enable-stackdriver-kubernetes \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +2. A NodePool of 2 `n1-standard-32` Nodes to deploy `cassandra-stress` later on. + + ``` + gcloud container --project "${GCP_PROJECT}" \ + node-pools create "cassandra-stress-pool" \ + --cluster "${CLUSTER_NAME}" \ + --zone "${GCP_ZONE}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-32" \ + --num-nodes "2" \ + --disk-type "pd-ssd" --disk-size "20" \ + --node-taints role=cassandra-stress:NoSchedule \ + --image-type "UBUNTU_CONTAINERD" \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +3. A NodePool of 4 `n1-standard-32` Nodes, where the Scylla Pods will be deployed. Each of these Nodes has 8 local NVMe SSDs attached, which are provided as [raw block devices](https://cloud.google.com/kubernetes-engine/docs/concepts/local-ssd#block). It is important to disable `autoupgrade` and `autorepair`. Automatic cluster upgrade or node repair has a hard timeout after which it no longer respect PDBs and force deletes the Compute Engine instances, which also deletes all data on the local SSDs. At this point, it's better to handle upgrades manually, with more control over the process and error handling. + ``` + gcloud container \ + node-pools create "scylla-pool" \ + --cluster "${CLUSTER_NAME}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-32" \ + --num-nodes "4" \ + --disk-type "pd-ssd" --disk-size "20" \ + --local-nvme-ssd-block count="8" \ + --node-taints role=scylla-clusters:NoSchedule \ + --node-labels scylla.scylladb.com/node-type=scylla \ + --image-type "UBUNTU_CONTAINERD" \ + --system-config-from-file=systemconfig.yaml \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +#### Setting Yourself as `cluster-admin` +> (By default GKE doesn't give you the necessary RBAC permissions) + +Get the credentials for your new cluster +``` +gcloud container clusters get-credentials "${CLUSTER_NAME}" --zone="${GCP_ZONE}" +``` + +Create a ClusterRoleBinding for your user. +In order for this to work you need to have at least permission `container.clusterRoleBindings.create`. +The easiest way to obtain this permission is to enable the `Kubernetes Engine Admin` role for your user in the GCP IAM web interface. +``` +kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user "${GCP_USER}" +``` + + +### Prerequisites + +### Deploying ScyllaDB Operator + +Refer to [Deploying Scylla on a Kubernetes Cluster](generic.md) in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites. + +#### Setting up nodes for ScyllaDB + +ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you'll first need to form a RAID array from those disks. +`NodeConfig` performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in [Performance tuning](performance.md) section of ScyllaDB Operator's documentation. + +Deploy `NodeConfig` to let it take care of the above operations: +``` +kubectl apply --server-side -f examples/gke/nodeconfig-alpha.yaml +``` + +#### Deploying Local Volume Provisioner + +Afterwards, deploy ScyllaDB's [Local Volume Provisioner](https://github.com/scylladb/k8s-local-volume-provisioner), capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays. +``` +kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/ +kubectl apply --server-side -f examples/common/local-volume-provisioner/storageclass_xfs.yaml +``` + +### Deploy Scylla cluster +In order for the example to work you need to modify the cluster definition in the following way: + +``` +sed -i "s//${GCP_REGION}/g;s//${GCP_ZONE}/g" examples/gke/cluster.yaml +``` + +This will inject your region and zone into the cluster definition so that it matches the kubernetes cluster you just created. + +### Deploying ScyllaDB + +Now you can follow the steps described in [Deploying Scylla on a Kubernetes Cluster](generic.md) to launch your ScyllaDB cluster in a highly performant environment. + +#### Accessing the database + +Instructions on how to access the database can also be found in the [generic guide](generic.md). + +### Deleting a GKE cluster + +Once you are done with your experiments delete your cluster using the following command: + +``` +gcloud container --project "${GCP_PROJECT}" clusters delete --zone "${GCP_ZONE}" "${CLUSTER_NAME}" +``` diff --git a/v1.13/_sources/helm.md.txt b/v1.13/_sources/helm.md.txt new file mode 100644 index 00000000000..e157523c417 --- /dev/null +++ b/v1.13/_sources/helm.md.txt @@ -0,0 +1,339 @@ +# Deploying Scylla stack using Helm Charts + +In this example we will install Scylla stack on Kubernetes. This includes the following components: +- Scylla Operator +- Scylla Manager +- Scylla + +We will use Minikube K8s cluster, but this could be any K8s cluster supported by the Scylla Operator. + +## Prerequisites + +- Kubernetes 1.16+ +- Helm 3+ + +## TL;DR + +``` +helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable +helm repo update +kubectl apply -f examples/common/cert-manager.yaml +helm install scylla-operator scylla/scylla-operator --create-namespace --namespace scylla-operator +helm install scylla-manager scylla/scylla-manager --create-namespace --namespace scylla-manager +helm install scylla scylla/scylla --create-namespace --namespace scylla +``` + +## Deploy Cert Manager + +This step is optional if you want to use your own certificate. +If you don't have one, make sure to not disable autogeneration using Scylla Operator Helm Chart. + +First deploy Cert Manager, you can either follow [upsteam instructions](https://cert-manager.io/docs/installation/kubernetes/) or use following command: + +```console +kubectl apply -f examples/common/cert-manager.yaml +``` + +Once it's deployed, wait until all Cert Manager pods will enter into Running state: + +```console +kubectl wait -n cert-manager --for=condition=ready pod -l app=cert-manager --timeout=60s +``` + +## Helm Chart repository + +To install Scylla Helm Chart repository execute the following commands: +``` +helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable +helm repo update +``` + +Then you can search through repository, it should contain at least three Helm charts: +``` +helm search repo scylla +NAME CHART VERSION APP VERSION DESCRIPTION +scylla/scylla 1.0.1 v1.0.1 Scylla is a close-to-the-hardware rewrite of Ca... +scylla/scylla-manager 1.0.1 v1.0.1 Scylla Manager automates database operations. +scylla/scylla-operator 1.0.1 v1.0.1 Scylla Operator is a Kubernetes Operator for ma... +``` + +All these charts should be installable without any need of customizing (defaults are provided). +Although Helm is used for this particular reason, so lets customize them a bit. + +## Scylla Operator Chart + +This chart is very simple, most interesting customizable fields are `image`, `resources` and `webhook`. +All others can be looked up in Chart source in Scylla Operator repository. + +### image + +Image allows to define which Scylla Operator image will be used. By default it downloads the image from main +Docker Hub repository, using version defined in Helm Chart. +You can also change `pullPolicy` if default one does not +fullfill your needs. In [Kubernetes documentation](https://kubernetes.io/docs/concepts/containers/images/) you +can read more about different pull policies. + +Image URL will be composed based on these fields in follwing pattern: +`repository/scylla-operator:tag` +```yaml +image: + repository: scylladb + pullPolicy: IfNotPresent + tag: "" +``` + +### resources + +You can customize how much resources will be allocated for Operator pods via `resource` field: +```yaml +resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 100m + memory: 32Mi +``` + +To read more about resource specification, follow [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). + +### webhook + +Webhook field allows to decide whether you want to use autogenerated self-signed certificate using Cert Manager or +whether you want to provide your own certificate. + +`createSelfSignedCertificate` specifies whether a self-signed certificate should be created using Cert Manager +`certificateSecretName`: name of a secret containing custom certificate. + +```yaml +webhook: + createSelfSignedCertificate: true + certificateSecretName: "" +``` + +### Customization + +You can customize all these fields and others by providing file containing desired values. +Content of this file will overwrite default values. + +You can find an example in Scylla Operator repository under `examples/helm/values.operator.yaml` + +### Installation + +To deploy Scylla Operator using customized values file execute the following: +``` +helm install scylla-operator scylla/scylla-operator --values examples/helm/values.operator.yaml --create-namespace --namespace scylla-operator +``` + +## Scylla Helm Chart + +Scylla Chart allows to customize and deploy Scylla cluster. +By default Scylla Helm charts deploys working Scylla cluster, but of course we can customize it. + +### Customization + +Versions of images used in the cluster can be set via `scyllaImage` and `agentImage` +```yaml +scyllaImage: + repository: scylladb/scylla + tag: 4.3.0 + +agentImage: + repository: scylladb/scylla-manager-agent + tag: 2.2.1 +``` + +A minimal Scylla cluster can be expressed as: +```yaml +datacenter: us-east-1 +racks: +- name: us-east-1b + members: 2 + storage: + capacity: 5G + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 1 + memory: 1Gi +``` + +Above cluster will use 4.3.0 Scylla, 2.2.1 Scylla Manager Agent sidecar and will have a single rack having 2 nodes. +Each node will have a single CPU and 1 GiB of memory. + +For other customizable fields, please refer to [ScyllaCluster CRD](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). +CRD Rack Spec and Helm Chart Rack should have the same fields. + +### Installation + +To deploy Scylla cluster using customzied values file execute the following command: +``` +helm install scylla scylla/scylla --values examples/helm/values.cluster.yaml --create-namespace --namespace scylla +``` + +Scylla Operator will provision this cluster on your K8s environment. + +## Scylla Manager Helm Chart + +Scylla Manager Chart allows to customize and deploy Scylla Manager in K8s environment. +Scylla Manager consist of two applications (Scylla Manager itself and Scylla Manager Controller) and additional Scylla cluster. + +To read more about Scylla Manager see [Manager guide](manager.md). + +### Scylla Manager + +To set version of used Scylla Manager you can use `image` field: +```yaml +image: + repository: scylladb + pullPolicy: IfNotPresent + tag: 2.2.1 +``` +To control how many resources are allocated for Scylla Manager use `resource` field: +```yaml +resources: + limits: + cpu: 500m + memory: 500Mi + requests: + cpu: 500m + memory: 500Mi +``` + +### Scylla Manager Controller + +Similarly Scylla Manager Controller image can be customized: + +```yaml +controllerImage: + repository: scylladb + pullPolicy: IfNotPresent + tag: "" +``` + +And allocated resources: +```yaml +controllerResources: + limits: + cpu: 100m + memory: 30Mi + requests: + cpu: 100m + memory: 20Mi +``` + +### Scylla + +To customize internal Scylla instance dedicated to Scylla Manager, see guide above customizing Scylla Helm Chart. +It's definition should land as a `scylla` field. + +### Customization + +All others customizable fields can be looked up in Chart source in Scylla Operator repository. + +### Installation + +To deploy Scylla Manager using customized values file execute the following command: +``` +helm install scylla-manager scylla/scylla-manager --values examples/helm/values.manager.yaml --create-namespace --namespace scylla-manager +``` + +## Results + +Scylla need some time to bootstrap all nodes, but after some time you should be ready to roll. It was simple isn't it? +You can validate if everything was set up correctly by looking at the all resources created in used namespaces. + +Scylla Operator: +```shell +$ kubectl -n scylla-operator get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-operator-5dbcb54f5c-vjm4m 1/1 Running 0 51s +pod/scylla-operator-5dbcb54f5c-wfjbw 1/1 Running 0 51s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-operator-webhook ClusterIP 10.105.207.130 443/TCP 51s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/scylla-operator 2/2 2 2 51s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/scylla-operator-5dbcb54f5c 2 2 2 51s + +``` + +Operator is running! + +Scylla Manager: +```shell +$ kubectl -n scylla-manager get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-manager-669db64dd-bcm4v 1/1 Running 0 89s +pod/scylla-manager-controller-844ccc56c4-drbth 1/1 Running 0 89s +pod/scylla-manager-controller-844ccc56c4-rhwqx 1/1 Running 0 89s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-manager ClusterIP 10.105.231.53 80/TCP,5090/TCP 89s +service/scylla-manager-client ClusterIP None 9180/TCP,5090/TCP 89s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/scylla-manager 1/1 1 1 89s +deployment.apps/scylla-manager-controller 2/2 2 2 89s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/scylla-manager-669db64dd 1 1 1 89s +replicaset.apps/scylla-manager-controller-844ccc56c4 2 2 2 89s + + +``` + +Good to go, ready to serve! + +Scylla itself: +```shell +$ kubectl -n scylla get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-us-east-1-us-east-1b-0 2/2 Running 0 5m58s +pod/scylla-us-east-1-us-east-1b-1 2/2 Running 0 4m29s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-client ClusterIP None 9180/TCP,5090/TCP 5m59s +service/scylla-us-east-1-us-east-1b-0 ClusterIP 10.43.149.92 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 5m58s +service/scylla-us-east-1-us-east-1b-1 ClusterIP 10.43.49.0 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 4m29s + +NAME READY AGE +statefulset.apps/scylla-us-east-1-us-east-1b 2/2 5m59s +``` + +Two running nodes, exactly what we were asking for. + +## Monitoring + +To spin up a Prometheus monitoring refer to [monitoring guide](monitoring.md). + +Helm charts can create ServiceMonitors needed to observe Scylla Manager and Scylla. +Both of these Helm Charts allows to specify whether you want to create a ServiceMonitor: +```yaml +serviceMonitor: + create: false +``` + +Change `create` to `true` and update your current deployment using: +```shell +helm upgrade --install scylla --namespace scylla scylla/scylla -f examples/helm/values.cluster.yaml +``` + +Helm should notice the difference, install the ServiceMonitor, and then Prometheous will be able to scrape metrics. + +## Cleanup + +To remove these applications you can simply uninstall them using Helm CLI: +```shell +helm uninstall scylla -n scylla +helm uninstall scylla-manager -n scylla-manager +helm uninstall scylla-operator -n scylla-operator +``` diff --git a/v1.13/_sources/index.rst.txt b/v1.13/_sources/index.rst.txt new file mode 100644 index 00000000000..32bf1347c2d --- /dev/null +++ b/v1.13/_sources/index.rst.txt @@ -0,0 +1,67 @@ +============================= +Scylla Operator Documentation +============================= + +.. toctree:: + :hidden: + :maxdepth: 1 + + generic + eks + gke + helm + manager + monitoring + clients/index + migration + nodeoperations/index + exposing + multidc/index + performance + upgrade + releases + support/index + api-reference/index + contributing + +Scylla Operator is an open source project which helps users of Scylla Open Source and Scylla Enterprise run Scylla on Kubernetes (K8s) +The Scylla operator manages Scylla clusters deployed to Kubernetes and automates tasks related to operating a Scylla cluster, like installation, out and downscale, rolling upgrades. + +.. image:: logo.png + :width: 200pt + +For the latest status of the project, and reports issue, see the Github Project. Also check out the `K8s Operator lesson on Scylla University `_. + +scylla-operator is a Kubernetes Operator for managing Scylla clusters. + +Currently it supports: + +* Deploying multi-zone clusters +* Scaling up or adding new racks +* Scaling down +* Monitoring with Prometheus and Grafana +* Integration with `Scylla Manager `_ +* Dead node replacement +* Version Upgrade +* Backup +* Repairs +* Autohealing + +**Choose a topic to begin**: + +* :doc:`Deploying Scylla on a Kubernetes Cluster ` +* :doc:`Deploying Scylla on EKS ` +* :doc:`Deploying Scylla on GKE ` +* :doc:`Deploying Scylla Manager on a Kubernetes Cluster ` +* :doc:`Deploying Scylla stack using Helm Charts ` +* :doc:`Setting up Monitoring using Prometheus and Grafana ` +* :doc:`Using ScyllaDB APIs ` +* :doc:`Node operations ` +* :doc:`Exposing ScyllaCluster to other networks ` +* :doc:`Deploying multi-datacenter ScyllaDB clusters in Kubernetes ` +* :doc:`Performance tuning [Experimental] ` +* :doc:`Upgrade procedures ` +* :doc:`Releases ` +* :doc:`Support ` +* :doc:`API Reference ` +* :doc:`Contributing to the Scylla Operator Project ` diff --git a/v1.13/_sources/manager.md.txt b/v1.13/_sources/manager.md.txt new file mode 100644 index 00000000000..9a8db2fd37a --- /dev/null +++ b/v1.13/_sources/manager.md.txt @@ -0,0 +1,258 @@ +# Deploying Scylla Manager on a Kubernetes Cluster + +Scylla Manager is a product for database operations automation, +it can schedule tasks such as repairs and backups. +Scylla Manager can manage multiple Scylla clusters and run cluster-wide tasks +in a controlled and predictable way. + +Scylla Manager is available for Scylla Enterprise customers and Scylla Open Source users. +With Scylla Open Source, Scylla Manager is limited to 5 nodes. +See the Scylla Manager [Proprietary Software License Agreement](https://www.scylladb.com/scylla-manager-software-license-agreement/) for details. + +## Prerequisites + +* Kubernetes cluster +* Scylla Operator - see [generic guide](generic.md) + +## Architecture + +Scylla Manager in K8s consist of: +- Dedicated Scylla Cluster + + Scylla Manager persists its state to a Scylla cluster. +Additional small single node cluster is spawned in the Manager namespace. + +- Scylla Manager Controller + + Main mission of Controller is to watch changes of Scylla Clusters, and synchronize three states. + 1. What user wants - task definition in CRD. + 2. What Controller registered - Task name to Task ID mapping - CRD status. + 3. Scylla Manager task listing - internal state of Scylla Manager. + + When Scylla Cluster CRD is being deployed Controller will register it in Scylla Manager once cluster reaches desired node count. +Once Cluster is fully up and running it will schedule all tasks defined in Cluster CRD. +Controller also supports task updates and unscheduling. + +- Scylla Manager + + Regular Scylla Manager, the same used in cloud and bare metal deployments. + + + +## Deploy Scylla Manager + +Deploy the Scylla Manager using the following commands: + +```console +kubectl apply -f deploy/manager-prod.yaml +``` + +This will install the Scylla Manager in the `scylla-manager` namespace. +You can check if the Scylla Manager is up and running with: + +```console +kubectl -n scylla-manager get pods +NAME READY STATUS RESTARTS AGE +scylla-manager-cluster-manager-dc-manager-rack-0 2/2 Running 0 37m +scylla-manager-controller-0 1/1 Running 0 28m +scylla-manager-scylla-manager-7bd9f968b9-w25jw 1/1 Running 0 37m +``` + +As you can see there are three pods: +* `scylla-manager-cluster-manager-dc-manager-rack-0` - is a single node Scylla cluster. +* `scylla-manager-controller-0` - Scylla Manager Controller. +* `scylla-manager-scylla-manager-7bd9f968b9-w25jw` - Scylla Manager. + +To see if Scylla Manager is fully up and running we can check their logs. +To do this, execute following command: + + ```console +kubectl -n scylla-manager logs scylla-manager-controller-0 +``` + +The output should be something like: +```console +{"L":"INFO","T":"2020-09-23T11:25:27.882Z","M":"Scylla Manager Controller started","version":"","build_date":"","commit":"","built_by":"","go_version":"","options":{"Name":"scylla-manager-controller-0","Namespace":"scylla-manager","LogLevel":"debug","ApiAddress":"http://127.0.0.1:5080/api/v1"},"_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"} +{"L":"INFO","T":"2020-09-23T11:25:28.435Z","M":"Registering Components.","_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"} +``` + +To check logs of Scylla Manager itself, use following command: +```console +kubectl -n scylla-manager logs scylla-manager-scylla-manager-7bd9f968b9-w25jw +``` + +The output should be something like: + +```console +{"L":"INFO","T":"2020-09-23T11:26:53.238Z","M":"Scylla Manager Server","version":"2.1.2-0.20200816.76cc4dcc","pid":1,"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Using config","config":{"HTTP":"127.0.0.1:5080","HTTPS":"","TLSCertFile":"/var/lib/scylla-manager/scylla_manager.crt","TLSKeyFile":"/var/lib/scylla-manager/scylla_manager.key","TLSCAFile":"","Prometheus":":56090","PrometheusScrapeInterval":5000000000,"debug":"127.0.0.1:56112","Logger":{"Mode":"stderr","Level":"info","Development":false},"Database":{"Hosts":["scylla-manager-cluster-manager-dc-manager-rack-0.scylla-manager.svc"],"SSL":false,"User":"","Password":"","LocalDC":"","Keyspace":"scylla_manager","MigrateDir":"/etc/scylla-manager/cql","MigrateTimeout":30000000000,"MigrateMaxWaitSchemaAgreement":300000000000,"ReplicationFactor":1,"Timeout":600000000,"TokenAware":true},"SSL":{"CertFile":"","Validate":true,"UserCertFile":"","UserKeyFile":""},"Healthcheck":{"Timeout":250000000,"SSLTimeout":750000000},"Backup":{"DiskSpaceFreeMinPercent":10,"AgeMax":43200000000000},"Repair":{"SegmentsPerRepair":1,"ShardParallelMax":0,"ShardFailedSegmentsMax":100,"PollInterval":200000000,"ErrorBackoff":300000000000,"AgeMax":0,"ShardingIgnoreMsbBits":12}},"config_files":["/mnt/etc/scylla-manager/scylla-manager.yaml"],"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Checking database connectivity...","_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +``` + +If there are no errors in the logs, let's spin a Scylla Cluster. + +## Cluster registration + + +When the Scylla Manager is fully up and running, lets create a regular instance of Scylla cluster. + +See [generic tutorial](generic.md) to spawn your cluster. + +Note: If you already have some Scylla Clusters, after installing Manager they should be +automatically registered in Scylla Manager. + +Once cluster reaches desired node count, cluster status will be updated with ID under which it was registered in Manager. + + ```console +kubectl -n scylla describe Cluster + +[...] +Status: + Manager Id: d1d532cd-49f2-4c97-9263-25126532803b + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.0.0 +``` +You can use this ID to talk to Scylla Manager using `sctool` CLI installed in Scylla Manager Pod. +You can also use Cluster name in `namespace/cluster-name` format. + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list + +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b) +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮ +│ Task │ Arguments │ Next run │ Status │ +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤ +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b │ │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE │ +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd │ │ 23 Sep 20 14:29:57 CEST (+1m) │ NEW │ +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯ + +``` + +Scylla Manager by default registers recurring healhcheck tasks for Agent and for each of the enabled frontends (CQL, Alternator). + +In this task listing we can see CQL and REST healthchecks. + +## Task scheduling + +You can either define tasks prior Cluster creation, or for existing Cluster. +Let's edit already running cluster definition to add repair and backup task. +```console +kubectl -n scylla edit Cluster simple-cluster +``` + +Add following task definition to Cluster spec: +``` + repairs: + - name: "users repair" + keyspace: ["users"] + interval: "1d" + backups: + - name: "weekly backup" + location: ["s3:cluster-backups"] + retention: 3 + interval: "7d" + - name: "daily backup" + location: ["s3:cluster-backups"] + retention: 7 + interval: "1d" +``` + +For full task definition configuration consult [ScyllaCluster CRD](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). + +**Note**: Scylla Manager Agent must have access to above bucket prior the update in order to schedule backup task. +Consult Scylla Manager documentation for details on how to set it up. + +Scylla Manager Controller will spot this change and will schedule tasks in Scylla Manager. + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list + +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b) +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮ +│ Task │ Arguments │ Next run │ Status │ +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤ +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b │ │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE │ +│ backup/275aae7f-c436-4fc8-bcec-479e65fb8372 │ -L s3:cluster-backups --retention 3 │ 23 Sep 20 14:28:58 CEST (+7d) │ NEW │ +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd │ │ 23 Sep 20 14:29:57 CEST (+1m) │ NEW │ +│ repair/d4946360-c29d-4bb4-8b9d-619ada495c2a │ │ 23 Sep 20 14:38:42 CEST │ NEW │ +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯ + +``` + +As you can see, we have two new tasks, weekly recurring backup, and one repair which should start shortly. + +To check progress of run you can use following command: + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task progress --cluster d1d532cd-49f2-4c97-9263-25126532803b repair/d4946360-c29d-4bb4-8b9d-619ada495c2a +Status: RUNNING +Start time: 23 Sep 20 14:38:42 UTC +Duration: 13s +Progress: 2.69% +Datacenters: + - us-east-1 ++--------------------+-------+ +| system_auth | 8.06% | +| system_distributed | 0.00% | +| system_traces | 0.00% | ++--------------------+-------+ + +``` +Other tasks can be also tracked using the same command, but using different task ID. +Task IDs are present in Cluster Status as well as in task listing. + +## Clean Up + +To clean up all resources associated with Scylla Manager, you can run the commands below. + +**NOTE:** this will destroy your Scylla Manager database and delete all of its associated data. + +```console +kubectl delete -f deploy/manager-prod.yaml +``` + +## Troubleshooting + +**Manager is not running** + +If the Scylla Manager does not come up, the first step would be to examine the Manager and Controller logs: + +```console +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-controller +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-scylla-manager-7bd9f968b9-w25jw +``` + + +**My task wasn't scheduled** + +If your task wasn't scheduled, Cluster status will be updated with error messages for each failed task. +You can also consult Scylla Manager logs. + +Example: + +Following status describes error when backup task cannot be scheduled, due to lack of access to bucket: +```console +Status: + Backups: + Error: create backup target: location is not accessible: 10.100.16.62: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.100.16.62 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.107.193.33: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.107.193.33 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.109.197.60: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.109.197.60 and run "scylla-manager-agent check-location -L s3:manager-test --debug" + Id: 00000000-0000-0000-0000-000000000000 + Interval: 0 + Location: + s3:manager-test + Name: adhoc backup + Num Retries: 3 + Retention: 3 + Start Date: now + Manager Id: 2b9dbe8c-9daa-4703-a66d-c29f63a917c8 + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.0.0 +``` + +Because Controller is infinitely retrying to schedule each defined task, once permission issues will be resolved, +task should appear in task listing and Cluster status. diff --git a/v1.13/_sources/migration.md.txt b/v1.13/_sources/migration.md.txt new file mode 100644 index 00000000000..6b450637a22 --- /dev/null +++ b/v1.13/_sources/migration.md.txt @@ -0,0 +1,146 @@ +# Version migrations + + +## `v0.3.0` -> `v1.0.0` migration + +`v0.3.0` used a very common name as a CRD kind (`Cluster`). In `v1.0.0` this issue was solved by using less common kind +which is easier to disambiguate (`ScyllaCluster`). +***This change is backward incompatible, which means manual migration is needed.*** + +This procedure involves having two CRDs registered at the same time. We will detach Scylla Pods +from Scylla Operator for a short period to ensure that nothing is garbage collected when Scylla Operator is upgraded. +Compared to the [upgrade guide](upgrade.md) where full deletion is requested, this procedure shouldn't cause downtimes. +Although detaching resources from their controller is considered hacky. This means that you shouldn't run procedure +out of the box on production. Make sure this procedure works well multiple times on your staging environment first. + +***Read the whole procedure and make sure you understand what is going on before executing any of the commands!*** + +In case of any issues or questions regarding this procedure, you're welcomed on our [Scylla Users Slack](http://slack.scylladb.com/) +on #kubernetes channel. + +## Procedure + +1. Execute this whole procedure for each cluster sequentially. To get a list of existing clusters execute the following + ``` + kubectl -n scylla get cluster.scylla.scylladb.com + + NAME AGE + simple-cluster 30m + ``` + All below commands will use `scylla` namespace and `simple-cluster` as a cluster name. +1. Make sure you're using v1.0.0 tag: + ``` + git checkout v1.0.0 + ``` +1. Upgrade your `cert-manager` to `v1.0.0`. If you installed it from a static file from this repo, simply execute the following: + ``` + kubectl apply -f examples/common/cert-manager.yaml + ``` + If your `cert-manager` was installed in another way, follow official instructions on `cert-manager` website. +1. `deploy/operator.yaml` file contains multiple resources. Extract **only** `CustomResourceDefinition` to separate file. +1. Install v1.0.0 CRD definition from file created in the previous step: + ``` + kubectl apply -f examples/common/crd.yaml + ``` +1. Save your existing `simple-cluster` Cluster definition to a file: + ``` + kubectl -n scylla get cluster.scylla.scylladb.com simple-cluster -o yaml > existing-cluster.yaml + ``` +1. Migrate `Kind` and `ApiVersion` to new values using: + ``` + sed -i 's/scylla.scylladb.com\/v1alpha1/scylla.scylladb.com\/v1/g' existing-cluster.yaml + sed -i 's/kind: Cluster/kind: ScyllaCluster/g' existing-cluster.yaml + ``` +1. Install migrated CRD instance + ``` + kubectl apply -f existing-cluster.yaml + ``` + At this point, we should have two CRDs describing your Scylla cluster, although the new one is not controlled by the Operator. +1. Get UUID of newly created ScyllaCluster resource: + ``` + kubectl -n scylla get ScyllaCluster simple-cluster --template="{{ .metadata.uid }}" + + 12a3678d-8511-4c9c-8a48-fa78d3992694 + ``` + Save output UUID somewhere, it will be referred as `` in commands below. + + ***Depending on your shell, you might get additional '%' sign at the end of UUID, make sure to remove it!*** + +1. Upgrade ClusterRole attached to each of the Scylla nodes to grant them permission to lookup Scylla clusters: + ``` + kubectl patch ClusterRole simple-cluster-member --type "json" -p '[{"op":"add","path":"/rules/-","value":{"apiGroups":["scylla.scylladb.com"],"resources":["scyllaclusters"],"verbs":["get"]}}]' + ``` + Amend role name according to your cluster name, it should look like `-member`. +1. Get a list of all Services associated with your cluster. First get list of all services: + ``` + kubectl -n scylla get svc -l "scylla/cluster=simple-cluster" + + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 109m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.23.96 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 109m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.66.22 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 108m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.246.25 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 106m + + ``` +1. For each service, change its `ownerReference` to point to new CRD instance: + ``` + kubectl -n scylla patch svc --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":""}]' + ``` + Replace `` with Service name, and `` with saved UUID from one of the previous steps. +1. Get a list of all Services again to see if none was deleted. Check also "Age" column, it shouldn't be lower than previous result. + ``` + kubectl -n scylla get svc -l "scylla/cluster=simple-cluster" + + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 110m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.23.96 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 110m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.66.22 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 109m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.246.25 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 107m + + ``` +1. Get a list of StatefulSets associated with your cluster: + ``` + kubectl -n scylla get sts -l "scylla/cluster=simple-cluster" + + NAME READY AGE + simple-cluster-us-east-1-us-east-1a 3/3 104m + ``` +1. For each StatefulSet from previous step, change its `ownerReference` to point to new CRD instance. + + ``` + kubectl -n scylla patch sts --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":""}]' + ``` + Replace `` with StatefulSet name, and `` with saved UUID from one of the previous steps. + +1. Now when all k8s resources bound to Scylla are attached to new CRD, we can remove 0.3.0 Operator and old CRD definition. + Checkout `v0.3.0` version, and remove Scylla Operator, and old CRD: + ``` + git checkout v0.3.0 + kubectl delete -f examples/generic/operator.yaml + ``` +1. Checkout `v1.0.0`, and install upgraded Scylla Operator: + ``` + git checkout v1.0.0 + kubectl apply -f deploy/operator.yaml + ``` +1. Wait until Scylla Operator boots up: + ``` + kubectl -n scylla-operator-system wait --for=condition=ready pod --all --timeout=600s + ``` +1. Get a list of StatefulSets associated with your cluster: + ``` + kubectl -n scylla get sts -l "scylla/cluster=simple-cluster" + + NAME READY AGE + simple-cluster-us-east-1-us-east-1a 3/3 104m +1. For each StatefulSet from previous step, change its sidecar container image to `v1.0.0`, and wait until change will be propagated. This step will initiate a rolling restart of pods one by one. + ``` + kubectl -n scylla patch sts --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/initContainers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]' + kubectl -n scylla rollout status sts + ``` + Replace `` with StatefulSet name. +1. If you're using Scylla Manager, bump Scylla Manager Controller image to `v1.0.0` + ``` + kubectl -n scylla-manager-system patch sts scylla-manager-controller --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]' + ``` +1. Your Scylla cluster is now migrated to `v1.0.0`. diff --git a/v1.13/_sources/monitoring.md.txt b/v1.13/_sources/monitoring.md.txt new file mode 100644 index 00000000000..72c40f7de33 --- /dev/null +++ b/v1.13/_sources/monitoring.md.txt @@ -0,0 +1,180 @@ +# Monitoring + +Scylla Operator 1.8 introduced a new API resource `ScyllaDBMonitoring`, allowing users to deploy a managed monitoring +setup for their Scylla Clusters. + +```yaml +apiVersion: scylla.scylladb.com/v1alpha1 +kind: ScyllaDBMonitoring +metadata: + name: example +spec: + type: Platform + endpointsSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla-operator.scylladb.com/scylla-service-type: member + scylla/cluster: replace-with-your-scyllacluster-name + components: + prometheus: + storage: + volumeClaimTemplate: + spec: + resources: + requests: + storage: 1Gi + grafana: + exposeOptions: + webInterface: + ingress: + ingressClassName: haproxy + dnsDomains: + - test-grafana.test.svc.cluster.local + annotations: + haproxy-ingress.github.io/ssl-passthrough: "true" +``` + +For details, refer to the below command: +```console +$ kubectl explain scylladbmonitorings.scylla.scylladb.com/v1alpha1 +``` + +## Deploy managed monitoring + +**Note**: as of v1.8, ScyllaDBMonitoring is experimental. The API is currently in version v1alpha1 and may change in future versions. + +### Requirements + +Before you can set up your ScyllaDB monitoring, you need Scylla Operator already installed in your Kubernetes cluster. +For more information on how to deploy Scylla Operator, see: +* [Deploying Scylla on a Kubernetes Cluster](generic.md) +* [Deploying Scylla stack using Helm Charts](helm.md) + +The above example of the monitoring setup also makes use of HAProxy Ingress and Prometheus Operator. +You can deploy them in your Kubernetes cluster using the provided third party examples. If you already have them deployed +in your cluster, you can skip the below steps. + +#### Deploy Prometheus Operator +Deploy Prometheus Operator using kubectl: +```console +$ kubectl -n prometheus-operator apply --server-side -f ./examples/third-party/prometheus-operator +``` + +##### Wait for Prometheus Operator to roll out +```console +$ kubectl -n prometheus-operator rollout status --timeout=5m deployments.apps/prometheus-operator +deployment "prometheus-operator" successfully rolled out +``` + +#### Deploy HAProxy Ingress +Deploy HAProxy Ingress using kubectl: +```console +$ kubectl -n haproxy-ingress apply --server-side -f ./examples/third-party/haproxy-ingress +``` + +##### Wait for HAProxy Ingress to roll out +```console +$ kubectl -n haproxy-ingress rollout status --timeout=5m deployments.apps/haproxy-ingress +deployment "haproxy-ingress" successfully rolled out +``` + +### Deploy ScyllaDBMonitoring + +First, update the `endpointsSelector` in `examples/monitoring/v1alpha1/scylladbmonitoring.yaml` with a label +matching your ScyllaCluster instance name. + +Deploy the monitoring setup using kubectl: +```console +$ kubectl -n scylla apply --server-side -f ./examples/monitoring/v1alpha1/scylladbmonitoring.yaml +``` + +Scylla Operator will notice the new ScyllaDBMonitoring object, and it will reconcile all necessary resources. + +#### Wait for ScyllaDBMonitoring to roll out +```console +$ kubectl wait --for='condition=Progressing=False' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met + +$ kubectl wait --for='condition=Degraded=False' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met + +$ kubectl wait --for='condition=Available=True' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met +``` + +#### Wait for Prometheus to roll out +```console +$ kubectl rollout status --timeout=5m statefulset.apps/prometheus-example +statefulset rolling update complete 1 pods at revision prometheus-example-65b89d55bb... +``` + +#### Wait for Grafana to roll out +```console +$ kubectl rollout status --timeout=5m deployments.apps/example-grafana +deployment "example-grafana" successfully rolled out +``` + +### Accessing Grafana + +For accessing Grafana service from outside the Kubernetes cluster we recommend using an Ingress, although there are many other ways to do so. +When using Ingress, what matters is to direct your packets to the ingress controller Service/Pods and have the correct TLS SNI field set by the caller when reaching out to the service, so it is routed properly, and your client can successfully validate the grafana serving certificate. +This is easier when you are using a real DNS domain that resolves to your Ingress controller's IP address but most clients and tools allow setting the SNI field manually. + +### Prerequisites + +To access Grafana, you first need to collect the serving CA and the credentials. + +```console +$ GRAFANA_SERVING_CERT="$( kubectl -n scylla get secret/example-grafana-serving-ca --template '{{ index .data "tls.crt" }}' | base64 -d )" +$ GRAFANA_USER="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "username" }}' | base64 -d )" +$ GRAFANA_PASSWORD="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "password" }}' | base64 -d )" +``` + +### Connecting through Ingress using a resolvable domain + +In production clusters, the Ingress controller and appropriate DNS records should be set up already. Often there is already a generic wildcard record like `*.app.mydomain` pointing to the Ingress controller's external IP. For custom service domains, it is usually a CNAME pointing to the Ingress controller's A record. + +Note: The ScyllaDBMonitoring example creates an Ingress object with `test-grafana.test.svc.cluster.local` DNS domain that you should adjust to your domain. Below examples use `example-grafana.apps.mydomain`. + +Note: To test a resolvable domain from your machine without creating DNS records, you can adjust `/etc/hosts` or similar. + +```console +$ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://example-grafana.apps.mydomain" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}" +200 +``` + +### Connecting through Ingress using an unresolvable domain + +To connect to an Ingress without a resolvable domain you first need to find out your Ingress controller's IP that can be resolved externally. Again, there are many ways to do so beyond the below examples. + +Unless stated otherwise, we assume your Ingress is running on port 443. + +```console +$ INGRESS_PORT=443 +``` + +#### Variants + +##### Ingress ExternalIP + +When you are running in a real cluster there is usually a cloud LoadBalancer or a bare metal alternative providing you with an externally reachable IP address. + +```console +$ INGRESS_IP="$( kubectl -n=haproxy-ingress get service/haproxy-ingress --template='{{ ( index .status.loadBalancer.ingress 0 ).ip }}' )" +``` + +##### Ingress NodePort + +NodePort is slightly less convenient, but it's available in development clusters as well. + +```console +$ INGRESS_IP="$( kubectl get nodes --template='{{ $internal_ip := "" }}{{ $external_ip := "" }}{{ range ( index .items 0 ).status.addresses }}{{ if eq .type "InternalIP" }}{{ $internal_ip = .address }}{{ else if eq .type "ExternalIP" }}{{ $external_ip = .address }}{{ end }}{{ end }}{{ if $external_ip }}{{ $external_ip }}{{ else }}{{ $internal_ip }}{{ end }}' )" +$ INGRESS_PORT="$( kubectl -n=haproxy-ingress get services/haproxy-ingress --template='{{ range .spec.ports }}{{ if eq .port 443 }}{{ .nodePort }}{{ end }}{{ end }}' )" +``` + +##### Connection + +```console +$ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://test-grafana.test.svc.cluster.local:${INGRESS_PORT}" --resolve "test-grafana.test.svc.cluster.local:${INGRESS_PORT}:${INGRESS_IP}" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}" +200 +``` diff --git a/v1.13/_sources/multidc/eks.md.txt b/v1.13/_sources/multidc/eks.md.txt new file mode 100644 index 00000000000..266dd7d3a4d --- /dev/null +++ b/v1.13/_sources/multidc/eks.md.txt @@ -0,0 +1,168 @@ +# Build multiple Amazon EKS clusters with inter-Kubernetes networking + +This document describes the process of creating multiple Amazon EKS clusters in different regions, using separate VPCs, and explains the steps necessary for configuring inter-Kubernetes networking between the clusters. +The interconnected clusters can serve as a platform for [deploying a multi-datacenter ScyllaDB cluster](multidc.md). + +This guide will walk you through the process of creating and configuring EKS clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference. + +## Prerequisites + +To follow the below guide, you first need to install and configure the tools that you will need to create and manage AWS and Kubernetes resources: +- eksctl – A command line tool for working with EKS clusters. +- kubectl – A command line tool for working with Kubernetes clusters. + +For more information see [Getting started with Amazon EKS – eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) in AWS documentation. + +## Create EKS clusters + +### Create the first EKS cluster + +Below is the required specification for the first cluster. + +```yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: scylladb-us-east-1 + region: us-east-1 + +availabilityZones: +- us-east-1a +- us-east-1b +- us-east-1c + +vpc: + cidr: 10.0.0.0/16 + +nodeGroups: + ... +``` + +Specify the first cluster's configuration file and save it as `cluster-us-east-1.yaml`. +Refer to [Creating an EKS cluster](../eks.md#creating-an-eks-cluster) section of ScyllaDB Operator documentation for the reference of the configuration of node groups. + +To deploy the first cluster, use the below command: +```shell +eksctl create cluster -f=cluster-us-east-1.yaml +``` + +Run the following command to learn the status and VPC ID of the cluster: +```shell +eksctl get cluster --name=scylladb-us-east-1 --region=us-east-1 +``` + +You will need to get the cluster's context for future operations. To do so, use the below command: +```shell +kubectl config current-context +``` + +For any `kubectl` commands that you will want to run against this cluster, use the `--context` flag with the value returned by the above command. + +#### Deploy ScyllaDB Operator + +Once the cluster is ready, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) to deploy the ScyllaDB Operator and its prerequisites. + +#### Prepare nodes for running ScyllaDB + +Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in [Deploying Scylla on EKS](../eks.md#prerequisites) in ScyllaDB Operator documentation. + +### Create the second EKS cluster + +Below is the required specification for the second cluster. As was the case with the first cluster, the provided values are only exemplary and can be adjusted according to your needs. + +:::{caution} +It is required that the VPCs of the two EKS clusters have non-overlapping IPv4 network ranges. +::: + +```yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: scylladb-us-east-2 + region: us-east-2 + +availabilityZones: +- us-east-2a +- us-east-2b +- us-east-2c + +vpc: + cidr: 172.16.0.0/16 + +nodeGroups: + ... +``` + +Follow analogous steps to create the second EKS cluster and prepare it for running ScyllaDB. + +## Configure the network + +The prepared Kubernetes clusters each have a dedicated VPC network. +To be able to route the traffic between the two VPC networks, you need to create a networking connection between them, otherwise known as [VPC peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). + +### Create VPC peering + +Refer to [Create a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html#create-vpc-peering-connection-local) in AWS documentation for instructions on creating a VPC peering connection between the two earlier created VPCs. + +In this example, the ID of the created VPC peering connection is `pcx-08077dcc008fbbab6`. + +### Update route tables + +To enable private IPv4 traffic between the instances in the VPC peered network, you need to establish a communication channel by adding a route to the route tables associated with all the subnets associated with the instances for both VPCs. +The destination of the new route in a given route table is the CIDR of the VPC of the other cluster and the target is the ID of the VPC peering connection. + +The following is an example of the route tables that enable communication of instances in two peered VPCs. Each table has a local route and the added route which sends traffic targeted at the other VPC to the peered network connection. The other preconfigured routes are omitted for readability. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            Route tableDestinationTarget
            eksctl-scylladb-us-east-1-cluster/PublicRouteTable10.0.0.0/16local
            172.16.0.0/16pcx-08077dcc008fbbab6
            eksctl-scylladb-us-east-2-cluster/PublicRouteTable172.16.0.0/16local
            10.0.0.0/16pcx-08077dcc008fbbab6
            + + +Refer to [Update your route tables for a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html) in AWS documentation for more information. + +### Update security groups + +To allow traffic to flow to and from instances associated with security groups in the peered VPC, you need to update the inbound rules of the VPCs' shared security groups. + +Below is an example of the inbound rules that to be added to the corresponding security groups of the two VPCs. + +| Security group name | Type | Protocol | Port range | Source | +|--------------------------------------------------------------------------------|-------------|----------|------------|----------------------| +| eksctl-scylladb-us-east-1-cluster-ClusterSharedNodeSecurityGroup-TD05V9EVU3B8 | All traffic | All | All | Custom 172.16.0.0/16 | +| eksctl-scylladb-us-east-2-cluster-ClusterSharedNodeSecurityGroup-1FR9YDLU0VE7M | All traffic | All | All | Custom 10.0.0.0/16 | + +The names of the shared security groups of your VPCs should be similar to the ones presented in the example. + +--- + +Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to [Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters](multidc.md) in ScyllaDB Operator documentation for guidance. diff --git a/v1.13/_sources/multidc/gke.md.txt b/v1.13/_sources/multidc/gke.md.txt new file mode 100644 index 00000000000..b119d9e9b3b --- /dev/null +++ b/v1.13/_sources/multidc/gke.md.txt @@ -0,0 +1,156 @@ +# Build multiple GKE clusters with inter-Kubernetes networking + +This document describes the process of creating multiple GKE clusters in a shared VPC and explains the steps necessary for configuring inter-Kubernetes networking between clusters in different regions. +The interconnected clusters can serve as a platform for [deploying a Multi Datacenter ScyllaDB cluster](multidc.md). + +This guide will walk you through the process of creating and configuring GKE clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference. + +## Prerequisites + +To follow the below guide, you first need to install and configure the following tools that you will need to create and manage GCP and Kubernetes resources: +- gcloud CLI - Google Cloud Command Line Interface, a command line tool for working with Google Cloud resources and services directly. +- kubectl – A command line tool for working with Kubernetes clusters. + +See [Install the Google Cloud CLI](https://cloud.google.com/sdk/docs/install-sdk) in GCP documentation and [Install Tools](https://kubernetes.io/docs/tasks/tools/) in Kubernetes documentation for reference. + +## Create and configure a VPC network + +For the clusters to have inter-Kubernetes networking, you will create a virtual network shared between all the instances, with dedicated subnets for each of the clusters. +To create the subnets manually, create the network in custom subnet mode. + +### Create the VPC network + +Run the below command to create the network: +```shell +gcloud compute networks create scylladb --subnet-mode=custom +``` + +With the VPC network created, create a dedicated subnet with secondary CIDR ranges for their Pod and Service pools in each region which the clusters will reside in. + +### Create VPC network subnets + +To create a subnet for the first cluster in region `us-east1`, run the below command: +```shell +gcloud compute networks subnets create scylladb-us-east1 \ + --region=us-east1 \ + --network=scylladb \ + --range=10.0.0.0/20 \ + --secondary-range='cluster=10.1.0.0/16,services=10.2.0.0/20' +``` + +To create a subnet for the second cluster in region `us-west1`, run the below command: +```shell +gcloud compute networks subnets create scylladb-us-west1 \ + --region=us-west1 \ + --network=scylladb \ + --range=172.16.0.0/20 \ + --secondary-range='cluster=172.17.0.0/16,services=172.18.0.0/20' +``` + +:::{caution} +It is required that the IPv4 address ranges of the subnets allocated for the GKE clusters do not overlap. +::: + +Refer to [Create a VPC-native cluster](https://cloud.google.com/kubernetes-engine/docs/how-to/alias-ips) and [Alias IP ranges](https://cloud.google.com/vpc/docs/alias-ip) in GKE documentation for more information about VPC native clusters and alias IP ranges. + +## Create GKE clusters + +With the VPC network created, you will now create two VPC native GKE clusters in dedicated regions. + +### Create the first GKE cluster + +Run the following command to create the first GKE cluster in the `us-east1` region: +```shell +gcloud container clusters create scylladb-us-east1 \ + --location=us-east1-b \ + --node-locations='us-east1-b,us-east1-c' \ + --machine-type=n1-standard-8 \ + --num-nodes=1 \ + --disk-type=pd-ssd \ + --disk-size=20 \ + --image-type=UBUNTU_CONTAINERD \ + --no-enable-autoupgrade \ + --no-enable-autorepair \ + --enable-ip-alias \ + --network=scylladb \ + --subnetwork=scylladb-us-east1 \ + --cluster-secondary-range-name=cluster \ + --services-secondary-range-name=services +``` + +Refer to [Creating a GKE cluster](../gke.md#creating-a-gke-cluster) section of ScyllaDB Operator documentation for more information regarding the configuration and deployment of additional node pools, including the one dedicated for ScyllaDB nodes. + +You will need to get the cluster's context for future operations. To do so, use the below command: +```shell +kubectl config current-context +``` + +For any `kubectl` commands that you will want to run against this cluster, use the `--context` flag with the value returned by the above command. + +#### Deploy ScyllaDB Operator + +Once the cluster is ready, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) to deploy the ScyllaDB Operator and its prerequisites. + +#### Prepare nodes for running ScyllaDB + +Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in [Deploying Scylla on GKE](../gke.md) page of the documentation. + +### Create the second GKE cluster + +Run the following command to create the second GKE cluster in the `us-west1` region: +```shell +gcloud container clusters create scylladb-us-west1 \ + --location=us-west1-b \ + --node-locations='us-west1-b,us-west1-c' \ + --machine-type=n1-standard-8 \ + --num-nodes=1 \ + --disk-type=pd-ssd \ + --disk-size=20 \ + --image-type=UBUNTU_CONTAINERD \ + --no-enable-autoupgrade \ + --no-enable-autorepair \ + --enable-ip-alias \ + --network=scylladb \ + --subnetwork=scylladb-us-west1 \ + --cluster-secondary-range-name=cluster \ + --services-secondary-range-name=services +``` + +Follow analogous steps to create the second GKE cluster and prepare it for running ScyllaDB. + +## Configure the firewall rules + +When creating a cluster, GKE creates several ingress firewall rules that enable the instances to communicate with each other. +To establish interconnectivity between the two created Kubernetes clusters, you will now add the allocated IPv4 address ranges to their corresponding source address ranges. + +First, retrieve the name of the firewall rule associated with the first cluster, which permits traffic between all Pods on a cluster, as required by the Kubernetes networking model. +The rule name is in the following format: `gke-[cluster-name]-[cluster-hash]-all`. + +To retrieve it, run the below command: +```shell +gcloud compute firewall-rules list --filter='name~gke-scylladb-us-east1-.*-all' +``` + +The output should resemble the following: +```console +NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED +gke-scylladb-us-east1-f17db261-all scylladb INGRESS 1000 udp,icmp,esp,ah,sctp,tcp False +``` + +Modify the rule by updating the rule's source ranges with the allocated Pod IPv4 address ranges of both clusters: +```shell +gcloud compute firewall-rules update gke-scylladb-us-east1-f17db261-all --source-ranges='10.1.0.0/16,172.17.0.0/16' +``` + +Follow the analogous steps for the other cluster. In this example, its corresponding firewall rule name is `gke-scylladb-us-west1-0bb60902-all`. To update it, you would run: +```shell +gcloud compute firewall-rules update gke-scylladb-us-west1-0bb60902-all --source-ranges='10.1.0.0/16,172.17.0.0/16' +``` + +Refer to [Automatically created firewall rules](https://cloud.google.com/kubernetes-engine/docs/concepts/firewall-rules) in GKE documentation for more information. + +--- + +Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to [Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters](multidc.md) in ScyllaDB Operator documentation for guidance. diff --git a/v1.13/_sources/multidc/index.rst.txt b/v1.13/_sources/multidc/index.rst.txt new file mode 100644 index 00000000000..a2f1eae7709 --- /dev/null +++ b/v1.13/_sources/multidc/index.rst.txt @@ -0,0 +1,18 @@ +========================================================== +Deploying multi-datacenter ScyllaDB clusters in Kubernetes +========================================================== + +Prepare a platform for a multi datacenter ScyllaDB cluster deployment: + +.. toctree:: + :maxdepth: 1 + + eks + gke + +Deploy a multi-datacenter ScyllaDB cluster in Kubernetes: + +.. toctree:: + :maxdepth: 1 + + multidc diff --git a/v1.13/_sources/multidc/multidc.md.txt b/v1.13/_sources/multidc/multidc.md.txt new file mode 100644 index 00000000000..9d90fce796b --- /dev/null +++ b/v1.13/_sources/multidc/multidc.md.txt @@ -0,0 +1,601 @@ +# Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters + +This document describes the process of deploying a Multi Datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters. + +This guide will walk you through the example procedure of deploying two datacenters in distinct regions of a selected cloud provider. + +:::{note} +This guide is dedicated to deploying multi-datacenter ScyllaDB clusters and does not discuss unrelated configuration options. +For details of ScyllaDB cluster deployments and their configuration, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) in ScyllaDB Operator documentation. +::: + +## Prerequisites + +As this document describes the procedure of deploying a Multi Datacenter ScyllaDB cluster, you are expected to have the required infrastructure prepared. +Let's assume two interconnected Kubernetes clusters, capable of communicating with each other over PodIPs, with each cluster meeting the following requirements: +- a node pool dedicated to ScyllaDB nodes composed of at least 3 nodes running in different zones (with unique `topology.kubernetes.io/zone` label), configured to run ScyllaDB, each labeled with `scylla.scylladb.com/node-type: scylla` +- running ScyllaDB Operator and its prerequisites +- running a storage provisioner capable of provisioning XFS volumes of StorageClass `scylladb-local-xfs` in each of the nodes dedicated to ScyllaDB instances + +You can refer to one of our guides describing the process of preparing such infrastructure: +- [Build multiple Amazon EKS clusters with Inter-Kubernetes networking](eks.md) +- [Build multiple GKE clusters with Inter-Kubernetes networking](gke.md) + +Additionally, to follow the below guide, you need to install and configure the following tools that you will need to manage Kubernetes resources: +- kubectl – A command line tool for working with Kubernetes clusters. + +See [Install Tools](https://kubernetes.io/docs/tasks/tools/) in Kubernetes documentation for reference. + +## Multi Datacenter ScyllaDB Cluster + +In v1.11, ScyllaDB Operator introduced support for manual multi-datacenter ScyllaDB cluster deployments. + +:::{warning} +ScyllaDB Operator only supports *manual configuration* of multi-datacenter ScyllaDB clusters. +In other words, although ScyllaCluster API exposes the machinery necessary for setting up multi-datacenter ScylaDB clusters, the ScyllaDB Operator only automates operations for a single datacenter. + +Operations related to multiple datacenters may require manual intervention of a human operator. +Most notably, destroying one of the Kubernetes clusters or ScyllaDB datacenters is going to leave DN nodes behind in other datacenters, and their removal has to be carried out manually. +::: + +The main mechanism used to set up a manual multi-datacenter ScyllaDB cluster is a field in ScyllaCluster's specification - `externalSeeds`. + +### External seeds + +The `externalSeeds` field in ScyllaCluster's specification enables control over external seeds that are propagated to ScyllaDB binary as `--seed-provider-parameters seeds=`. +In this context, external should be understood as "external to the datacenter being specified by the API". +The provided seeds are used by the nodes as initial points of contact, which allows them to discover the cluster ring topology when joining it. + +Refer to [Scylla Seed Nodes](https://opensource.docs.scylladb.com/stable/kb/seed-nodes.html) in ScyllaDB documentation for more information regarding the function of seed nodes in ScyllaDB. +For more details regarding the function and implementation of external seeds, refer to [the original enhancement proposal](https://github.com/scylladb/scylla-operator/tree/v1.11/enhancements/proposals/1304-external-seeds). + +### Networking + +Since this guide assumes interconnectivity over PodIPs of the Kubernetes clusters, you are going to configure the ScyllaDB cluster's nodes to communicate over PodIPs. +This is enabled by a subset of `exposeOptions` specified in ScyllaCluster API, introduced in v1.11. + +For this particular setup, define the ScyllaClusers as follows: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP +``` + +However, other configuration options allow for the manual deployment of multi-datacenter ScyllaDB clusters in different network setups. For details, refer to [Exposing ScyllaClusters](../exposing.md) in ScyllaDB Operator documentation. + +#### Deploy a multi-datacenter ScyllaDB Cluster + +#### Using context + +Let's specify contexts for `kubectl` commands used throughout the guide. +To retrieve the context of your current cluster, run: +```shell +kubectl config current-context +``` + +Save the contexts of the two clusters, which you are going to deploy the datacenters in, as `CONTEXT_DC1` and `CONTEXT_DC2` environment variables correspondingly. + +#### Deploy the first datacenter + +First, run the below command to create a dedicated 'scylla' namespace: +```shell +kubectl --context="${CONTEXT_DC1}" create ns scylla +``` + +For this guide, let's assume that your cluster is running in `us-east-1` region and the nodes dedicated to running ScyllaDB nodes are running in zones `us-east-1a`, `us-east-1b` and `us-east-1c` correspondingly. If that is not the case, adjust the manifest accordingly. + +:::{caution} +The `.spec.name` field of the ScyllaCluster objects represents the ScyllaDB cluster name and has to be consistent across all datacenters of this ScyllaDB cluster. +The names of the datacenters, specified in `.spec.datacenter.name`, have to be unique across the entire multi-datacenter cluster. + +For more information see [Create a ScyllaDB Cluster - Multi Data Centers (DC)](https://opensource.docs.scylladb.com/stable/operating-scylla/procedures/cluster-management/create-cluster-multidc.html) in ScyllaDB documentation. +::: + +Save the ScyllaCluster manifest in `dc1.yaml`: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: scylla-cluster + namespace: scylla +spec: + agentVersion: 3.2.8 + version: 5.4.3 + cpuset: true + sysctls: + - "fs.aio-max-nr=2097152" + automaticOrphanedNodeCleanup: true + exposeOptions: + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP + nodeService: + type: Headless + datacenter: + name: us-east-1 + racks: + - name: a + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1a + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: b + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1b + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: c + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1c + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule +``` + +Apply the manifest: +```shell +kubectl --context="${CONTEXT_DC1}" apply --server-side -f=dc1.yaml +``` + +Wait for the cluster to be fully rolled out: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +You can now verify that all the nodes of your cluster are in UN state: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla exec -it pod/scylla-cluster-us-east-1-a-0 -c=scylla -- nodetool status +``` + +The expected output should look similar to the below: +```console +Datacenter: us-east-1 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 10.0.70.195 290 KB 256 ? 494277b9-121c-4af9-bd63-3d0a7b9305f7 c +UN 10.0.59.24 559 KB 256 ? a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37 b +UN 10.0.19.237 107 KB 256 ? 64b6292a-327f-4128-852a-6004039f402e a +``` + +##### Retrieve PodIPs of ScyllaDB nodes for use as external seeds + +:::{warning} +Due to the ephemeral nature of PodIPs, it is ill-advised to use them as seeds in production environments. +This is because there is a high likelihood that the Pods of your ScyllaDB clusters will change their IPs during the cluster's lifecycle, and so the provided seeds will no longer point to the ScyllaDB nodes. +It is undesired, as the seeds provided on node's startup may serve as fallback contact points when all of the node's peers are unreachable. +In production environments, it is recommended that you use domain names or non-ephemeral IP addresses as external seeds. +PodIPs are being used in this example for the sheer simplicity of this setup. +::: + +Use the below commands and their expected outputs as a reference for retrieving the PodIPs used by the cluster for inter-node communication. +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-a-0 --template='{{ .status.podIP }}' +``` +```console +10.0.19.237 +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-b-0 --template='{{ .status.podIP }}' +``` +```console +10.0.59.24 +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-c-0 --template='{{ .status.podIP }}' +``` +```console +10.0.70.195 +``` + +You are going to utilize the retrieved addresses as seeds for the other datacenter. + +#### Deploy the second datacenter + +To deploy the second datacenter, you will follow similar steps. + +First, create a dedicated 'scylla' namespace: +```shell +kubectl --context="${CONTEXT_DC2}" create ns scylla +``` + +Replace the values in `.spec.externalSeeds` of the below manifest with the Pod IP addresses that you retrieved earlier. +The provided values are going to serve as initial contact points for the joining nodes of the second datacenter. + +For this guide, let's assume that the second cluster is running in `us-east-2` region and the nodes dedicated for running ScyllaDB nodes are running in zones `us-east-2a`, `us-east-2b` and `us-east-2c` correspondingly. If that is not the case, adjust the manifest accordingly. +Having configured it, save the manifest as `dc2.yaml`: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: scylla-cluster + namespace: scylla +spec: + agentVersion: 3.2.8 + version: 5.4.3 + cpuset: true + sysctls: + - "fs.aio-max-nr=2097152" + automaticOrphanedNodeCleanup: true + exposeOptions: + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP + nodeService: + type: Headless + externalSeeds: + - 10.0.19.237 + - 10.0.59.24 + - 10.0.70.195 + datacenter: + name: us-east-2 + racks: + - name: a + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2a + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: b + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2b + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: c + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2c + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule +``` + +To apply the manifest, run: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla apply --server-side -f=dc2.yaml +``` + +Wait for the second datacenter to roll out: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +You can verify that the nodes have joined the existing cluster and that you are now running a multi-datacenter ScyllaDB cluster by running `nodetool status` with the below command: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla exec -it pod/scylla-cluster-us-east-2-a-0 -c=scylla -- nodetool status +``` +```console +Datacenter: us-east-1 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 10.0.70.195 705 KB 256 ? 494277b9-121c-4af9-bd63-3d0a7b9305f7 c +UN 10.0.59.24 764 KB 256 ? a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37 b +UN 10.0.19.237 634 KB 256 ? 64b6292a-327f-4128-852a-6004039f402e a +Datacenter: us-east-2 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 172.16.39.209 336 KB 256 ? 7c30ea55-7a4f-4d93-86f7-c881772ebe62 b +UN 172.16.25.18 759 KB 256 ? 665dde7e-e420-4db3-8c54-ca71efd39b2e a +UN 172.16.87.27 503 KB 256 ? c19c89cb-e24c-4062-9df4-2aa90ab29a99 c +``` + +## Scylla Manager + +To integrate a multi-datacenter ScyllaDB cluster with Scylla Manager, you must deploy the Scylla Manager in only one datacenter. + +In this example, let's choose the Kubernetes cluster deployed in the first datacenter to host it. +To deploy Scylla Manager, follow the steps described in [Deploying Scylla Manager on a Kubernetes Cluster](../manager.md) +in ScyllaDB Operator documentation. + +In order to define the Scylla Manager tasks, add them to the ScyllaCluster object deployed in the same Kubernetes cluster +in which your Scylla Manager is running. + +Every datacenter (represented by ScyllaCluster CR) is, by default, provisioned with a new, random Scylla Manager Agent auth token. +To use Scylla Manager with multiple datacenter (represented by ScyllaClusters), you have to make sure they all use the same token. + +Extract it from the first datacenter with the below command: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get secrets/scylla-cluster-auth-token --template='{{ index .data "auth-token.yaml" }}' | base64 -d +``` +```console +auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf +``` + +Save the output, replace the token with your own, and patch the secret in the second datacenter with the below command: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla patch secret/scylla-cluster-auth-token--type='json' -p='[{"op": "add", "path": "/stringData", "value": {"auth-token.yaml": "auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf"}}]' +``` + +Execute a rolling restart of the nodes in DC2 to make sure they pick up the new token: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla patch scyllacluster/scylla-cluster --type='merge' -p='{"spec": {"forceRedeploymentReason": "sync scylla-manager-agent token ('"$( date )"')"}}' +``` + + +## ScyllaDBMonitoring + +To monitor your cluster, deploy ScyllaDBMonitoring in every datacenter independently. +To deploy ScyllaDB Monitoring, follow the steps described in [Deploy managed monitoring](../monitoring.md#deploy-managed-monitoring) in ScyllaDB Operator documentation. diff --git a/v1.13/_sources/nodeoperations/automatic-cleanup.md.txt b/v1.13/_sources/nodeoperations/automatic-cleanup.md.txt new file mode 100644 index 00000000000..5e0535cca97 --- /dev/null +++ b/v1.13/_sources/nodeoperations/automatic-cleanup.md.txt @@ -0,0 +1,6 @@ +# Automatic cleanup and replacement in case when k8s node is lost + +In case when your k8s cluster loses one of the nodes due to incident or explicit removal, Scylla Pods may become unschedulable due to PVC node affinity. + +When `automaticOrphanedNodeCleanup` flag is enabled in your ScyllaCluster, Scylla Operator will perform automatic +node replacement of a Pod which lost his bound resources. diff --git a/v1.13/_sources/nodeoperations/index.rst.txt b/v1.13/_sources/nodeoperations/index.rst.txt new file mode 100644 index 00000000000..bf481452d7c --- /dev/null +++ b/v1.13/_sources/nodeoperations/index.rst.txt @@ -0,0 +1,12 @@ +====================================== +Node operations using Scylla Operator +====================================== + +.. toctree:: + :maxdepth: 1 + + scylla-upgrade + replace-node + automatic-cleanup + maintenance-mode + restore diff --git a/v1.13/_sources/nodeoperations/maintenance-mode.md.txt b/v1.13/_sources/nodeoperations/maintenance-mode.md.txt new file mode 100644 index 00000000000..c976ecc2b87 --- /dev/null +++ b/v1.13/_sources/nodeoperations/maintenance-mode.md.txt @@ -0,0 +1,19 @@ +# Maintenance mode + +When maintenance mode is enabled, readiness probe of Scylla Pod will always return failure and liveness probe will always succeed. This causes that Pod under maintenance +is being removed from K8s Load Balancer and DNS registry but Pod itself stays alive. + +This allows the Scylla Operator to interact with Scylla and Scylla dependencies inside the Pod. +For example user may turn off Scylla process, do something with the filesystem and bring the process back again. + +To enable maintenance mode add `scylla/node-maintenance` label to service in front of Scylla Pod. + +```bash +kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance="" +``` + +To disable, simply remove this label from service. + +```bash +kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance- +``` diff --git a/v1.13/_sources/nodeoperations/replace-node.md.txt b/v1.13/_sources/nodeoperations/replace-node.md.txt new file mode 100644 index 00000000000..3e6a8c7f024 --- /dev/null +++ b/v1.13/_sources/nodeoperations/replace-node.md.txt @@ -0,0 +1,74 @@ +# Replacing a Scylla node + +## Replacing a dead node +In the case of a host failure, it may not be possible to bring back the node to life. + +Replace dead node operation will cause the other nodes in the cluster to stream data to the node that was replaced. +This operation can take some time (depending on the data size and network bandwidth). + +_This procedure is for replacing one dead node. To replace more than one dead node, run the full procedure to completion one node at a time_ + +**Procedure** + +1. Verify the status of the node using `nodetool status` command, the node with status DN is down and need to be replaced + ```bash + kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status + Datacenter: us-east-1 + ===================== + Status=Up/Down + |/ State=Normal/Leaving/Joining/Moving + -- Address Load Tokens Owns Host ID Rack + UN 10.43.125.110 74.63 KB 256 ? 8ebd6114-969c-44af-a978-87a4a6c65c3e us-east-1a + UN 10.43.231.189 91.03 KB 256 ? 35d0cb19-35ef-482b-92a4-b63eee4527e5 us-east-1a + DN 10.43.43.51 74.77 KB 256 ? 1ffa7a82-c41c-4706-8f5f-4d45a39c7003 us-east-1a + ``` +1. Identify service which is bound to down node by checking IP address + ```bash + kubectl -n scylla get svc + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 3h12m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.231.189 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h12m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.125.110 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h11m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.43.51 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h5m + ``` +1. Drain node which we would like to replace using. **This command may delete your data from local disks attached to given node!** + ```bash + kubectl drain gke-scylla-demo-default-pool-b4b390a1-6j12 --ignore-daemonsets --delete-local-data + ``` + + Pod which will be replaced should enter the `Pending` state + ```bash + kubectl -n scylla get pods + NAME READY STATUS RESTARTS AGE + simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 3h21m + simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 3h19m + simple-cluster-us-east-1-us-east-1a-2 0/2 Pending 0 8m14s + ``` +1. To being node replacing, add `scylla/replace=""` label to service bound to pod we are replacing. + ```bash + kubectl -n scylla label svc simple-cluster-us-east-1-us-east-1a-2 scylla/replace="" + ``` + Your failed Pod should be recreated on available k8s node + ```bash + kubectl -n scylla get pods + NAME READY STATUS RESTARTS AGE + simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 3h27m + simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 3h25m + simple-cluster-us-east-1-us-east-1a-2 1/2 Running 0 9s + ``` + Because other nodes in cluster must stream data to new node this operation might take some time depending on how much data your cluster stores. + After bootstraping is over, your new Pod should be ready to go. + Old one shouldn't be no longer visible in `nodetool status` + ```bash + kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status + Datacenter: us-east-1 + ===================== + Status=Up/Down + |/ State=Normal/Leaving/Joining/Moving + -- Address Load Tokens Owns Host ID Rack + UN 10.43.125.110 74.62 KB 256 ? 8ebd6114-969c-44af-a978-87a4a6c65c3e us-east-1a + UN 10.43.231.189 91.03 KB 256 ? 35d0cb19-35ef-482b-92a4-b63eee4527e5 us-east-1a + UN 10.43.191.172 74.77 KB 256 ? 1ffa7a82-c41c-4706-8f5f-4d45a39c7003 us-east-1a + ``` +1. Run the repair on the cluster to make sure that the data is synced with the other nodes in the cluster. + You can use [Scylla Manager](../manager.md) to run the repair. diff --git a/v1.13/_sources/nodeoperations/restore.md.txt b/v1.13/_sources/nodeoperations/restore.md.txt new file mode 100644 index 00000000000..93240d5f207 --- /dev/null +++ b/v1.13/_sources/nodeoperations/restore.md.txt @@ -0,0 +1,239 @@ +# Restore from backup + +This procedure will describe how to restore from backup taken using [Scylla Manager](../manager.md) to a fresh **empty** cluster of any size. + +:::{warning} +Restoring schema with **ScyllaDB OS 5.4.X** or **ScyllaDB Enterprise 2024.1.X** and `consistent_cluster_management` isn’t supported. + +When creating the `target` ScyllaDB cluster, configure it with `consistent_cluster_management: false`. +Refer to [API Reference](../api-reference/index.rst) to learn how to customize ScyllaDB configuration files. + +When following the steps for schema restore, ensure you follow the additional steps dedicated to affected ScyllaDB versions. +::: + +In the following example, the ScyllaCluster, which was used to take the backup, is called `source`. Backup will be restored into the ScyllaCluster named `target`. + +::::{tab-set} +:::{tab-item} Source ScyllaCluster +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: source +spec: + agentVersion: 3.2.8 + version: 5.4.1 + developerMode: true + backups: + - name: foo + location: + - s3:source-backup + keyspace: + - '*' + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 1 + storage: + capacity: 1Gi + resources: + limits: + cpu: 1 + memory: 1Gi +``` +::: +:::{tab-item} Target ScyllaCluster +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: target +spec: + agentVersion: 3.2.8 + version: 5.4.1 + developerMode: true + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 1 + storage: + capacity: 1Gi + resources: + limits: + cpu: 1 + memory: 1Gi +``` +::: +:::: + +Make sure your target cluster is already registered in Scylla Manager. To get a list of all registered clusters, execute the following command: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool cluster list ++--------------------------------------+---------------------------------------+---------+-----------------+ +| ID | Name | Port | CQL credentials | ++--------------------------------------+---------------------------------------+---------+-----------------+ +| af1dd5cd-0406-4974-949f-dc9842980080 | scylla/target | default | set | +| ebd82268-efb7-407e-a540-3619ae053778 | scylla/source | default | set | ++--------------------------------------+---------------------------------------+---------+-----------------+ +``` + +Identify the tag of a snapshot which you want to restore. To get a list of all available snapshots, execute following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c --all-clusters -L +``` + +Where: +* `CLUSTER_ID` - the name or ID of a registered cluster with access to `BACKUP_LOCATION`. +* `BACKUP_LOCATION` - the location in which the backup is stored. + +In this example, `BACKUP_LOCATION` is `s3:source-backup`. Use the name of cluster which has access to the backup location for `CLUSTER_ID`. +In this example, it's `scylla/target`. + +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c scylla/target --all-clusters -L s3:source-backup +backup/ff36d7e0-af2e-458c-afe6-868e0f3396b2 +Snapshots: + - sm_20240105115931UTC (409MiB, 1 nodes) +Keyspaces: + - system_schema (15 tables) + - users (9 tables) + +``` + +## Restore schema + +In the below commands, we are restoring the `sm_20240105115931UTC` snapshot. Replace it with a tag of a snapshot that you want to restore. +Restoring consist of two steps. First, you'll restore the schema, and then the data. +To restore schema, create a restore task manually on target ScyllaCluster by executing following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c -L -T --restore-schema +``` + +Where: +* `CLUSTER_ID` - a name or ID of a cluster you want to restore into. +* `BACKUP_LOCATION` - the location in which the backup is stored. +* `SNAPSHOT_TAG` - a tag of a snapshot that you want to restore. + +When the task is created, the command will output the ID of a restore task. +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-schema +restore/57228c52-7cf6-4271-8c8d-d446ff160747 +``` + +Use the following command to check progress of the restore task: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/57228c52-7cf6-4271-8c8d-d446ff160747 +Restore progress +Run: 0dd20cdf-abc4-11ee-951c-6e7993cf42ed +Status: DONE - restart required (see restore docs) +Start time: 05 Jan 24 12:15:02 UTC +End time: 05 Jan 24 12:15:09 UTC +Duration: 6s +Progress: 100% | 100% +Snapshot Tag: sm_20240105115931UTC + ++---------------+-------------+----------+----------+------------+--------+ +| Keyspace | Progress | Size | Success | Downloaded | Failed | ++---------------+-------------+----------+----------+------------+--------+ +| system_schema | 100% | 100% | 214.150k | 214.150k | 214.150k | 0 | ++---------------+-------------+----------+----------+------------+--------+ +``` + +As suggested in the progress output, you will need to execute a rolling restart of the ScyllaCluster. +```console +kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "schema restored"}}' +``` + +Use the following commands to wait until restart is finished: +```console +$ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met +``` + +:::{caution} +### Restoring schema with **ScyllaDB OS 5.4.X** or **ScyllaDB Enterprise 2024.1.X** and `consistent_cluster_management` + +After you've followed the above steps with a ScyllaDB target cluster with `consistent_cluster_management` disabled, you'll need to enable Raft by configuring the target cluster with `consistent_cluster_management: true`. +Refer to [API Reference](../api-reference/index.rst) to learn how to customize ScyllaDB configuration files. + +You will then need to execute a rolling restart of the ScyllaCluster for the change to take effect. +```console +kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "raft enabled"}}' +``` + +Use the following commands to wait until restart is finished: +```console +$ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met +``` +::: + +## Restore tables + +To restore the tables content, create a restore task manually on target ScyllaCluster by executing the following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c -L -T --restore-tables +``` + +Where: +* `CLUSTER_ID` - a name or ID of a cluster you want to restore into. +* `BACKUP_LOCATION` - the location in which the backup is stored. +* `SNAPSHOT_TAG` - a tag of a snapshot that you want to restore. + +When the task is created, the command will output the ID of a restore task. +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-tables +restore/63642069-bed5-4def-ba0f-68c49e47ace1 +``` + +Use the following command to check progress of the restore task: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/63642069-bed5-4def-ba0f-68c49e47ace1 +Restore progress +Run: ab015cef-abc8-11ee-9521-6e7993cf42ed +Status: DONE +Start time: 05 Jan 24 12:48:04 UTC +End time: 05 Jan 24 12:48:15 UTC +Duration: 11s +Progress: 100% | 100% +Snapshot Tag: sm_20240105115931UTC + ++-------------+-------------+--------+---------+------------+--------+ +| Keyspace | Progress | Size | Success | Downloaded | Failed | ++-------------+-------------+--------+---------+------------+--------+ +| users | 100% | 100% | 409MiB | 409MiB | 409MiB | 0 | ++-------------+-------------+--------+---------+------------+--------+ + +Post-restore repair progress +Run: ab015cef-abc8-11ee-9521-6e7993cf42ed +Status: DONE +Start time: 05 Jan 24 12:48:04 UTC +End time: 05 Jan 24 12:48:15 UTC +Duration: 11s +Progress: 100% +Intensity: 1 +Parallel: 0 +Datacenters: + - us-east-1 + ++-------------+--------------+----------+----------+ +| Keyspace | Table | Progress | Duration | ++-------------+--------------+----------+----------+ +| users | users | 100% | 0s | ++-------------+--------------+----------+----------+ + +``` diff --git a/v1.13/_sources/nodeoperations/scylla-upgrade.md.txt b/v1.13/_sources/nodeoperations/scylla-upgrade.md.txt new file mode 100644 index 00000000000..d39c9666c5e --- /dev/null +++ b/v1.13/_sources/nodeoperations/scylla-upgrade.md.txt @@ -0,0 +1,102 @@ +# Upgrading version of Scylla + +To upgrade Scylla version using Operator user have to modify existing ScyllaCluster definition. + +In this example cluster will be upgraded to version `4.4.5`. +```bash +kubectl -n scylla patch ScyllaCluster simple-cluster -p '{"spec":{"version": "4.4.5"}}' --type=merge +``` + +Operator supports two types of version upgrades: +1. Patch upgrade +1. Generic upgrade + + +**Patch upgrade** + +Patch upgrade is executed when only patch version change is detected according to [semantic versioning format](https://semver.org/). +Procedure simply rolls out a restart of whole cluster and upgrades Scylla container image for each node one by one. + +Example: `4.0.0 -> 4.0.1` + +**Generic upgrade** + +Generic upgrades are executed for the non patch version changes. + +Example: `4.0.0 -> 2020.1.0` or `4.0.0 -> 4.1.0` or even `4.0.0 -> nightly` + +User can observe current state of upgrade in ScyllaCluster status. +```bash +kubectl -n scylla describe ScyllaCluster simple-cluster +[...] +Status: + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.1.9 + Upgrade: + Current Node: simple-cluster-us-east-1-us-east-1a-2 + Current Rack: us-east-1a + Data Snapshot Tag: so_data_20201228135002UTC + From Version: 4.1.9 + State: validate_upgrade + System Snapshot Tag: so_system_20201228135002UTC + To Version: 4.2.2 +``` + +Each upgrade begins with taking a snapshot of `system` and `system_schema` keyspaces on all nodes in parallel. +Name of this snapshot tag is saved in upgrade status under `System Snapshot Tag`. + +Before nodes in rack are upgraded, underlying StatefulSet is changed to use `OnDelete` UpgradeStrategy. +This allows Operator have a full control over when Pod image is changed. + +When a node is being upgraded, [maintenance mode](#maintenance-mode) is enabled, then the node is drained and snapshot of all data keyspaces is taken. +Snapshot tag is saved under `Data Snapshot Tag` and is the same for all nodes during the procedure. +Once everything is set up, maintenance mode is disabled and Scylla Pod is deleted. Underlying StatefulSet will bring up a new +Pod with upgraded version. +Once Pod will become ready, data snapshot from this particular node is removed, and Operator moves to next node. + +Once every rack is upgraded, system snapshot is removed from all nodes in parallel and previous StatefulSet UpgradeStrategy is restored. +At this point, all your nodes should be already in desired version. + +Current state of upgrade can be traced using `Current Node`, `Current Rack` and `State` status fields. +* `Current Node` shows which node is being upgraded. +* `Current Rack` displays which rack is being upgraded. +* `State` contain information at which stage upgrade is. + +`State` can have following values: +* `begin_upgrade` - upgrade is starting +* `check_schema_agreement` - Operator waits until all nodes reach schema agreement. It waits for it for 1 minute, prints an error log message and check is retried. +* `create_system_backup` - system keyspaces snapshot is being taken +* `find_next_rack` - Operator finds out which rack must be upgraded next, decision is saved in `Current Rack` +* `upgrade_image_in_pod_spec` - Image and UpgradeStrategy is upgraded in underlying StatefulSet +* `find_next_node` - Operator finds out which node must be upgraded next, decision is saved in `Current Node` +* `enable_maintenance_mode` - maintenance mode is being enabled +* `drain_node` - node is being drained +* `backup_data` - snapshot of data keyspaces is being taken +* `disable_maintenance_mode` - maintenance mode is being disabled +* `delete_pod` - Scylla Pod is being deleted +* `validate_upgrade` - Operator validates if new pod enters Ready state and if Scylla version is upgraded +* `clear_data_backup` - snapshot of data keyspaces is being removed +* `clear_system_backup` - snapshot of system keyspaces is being removed +* `restore_upgrade_strategy` - restore UpgradeStrategy in underlying StatefulSet +* `finish_upgrade` - upgrade cleanup + +**Recovering from upgrade failure** + +Upgrade may get stuck on `validate_upgrade` stage. This happens when Scylla Pod refuses to properly boot up. + +To continue with upgrade, first turn off operator by scaling Operator replicas to zero: +```bash +kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=0 +``` +Then user have to manually resolve issue with Scylla by checking what is the root cause of a failure in Scylla container logs. +If needed data and system keyspaces SSTable snapshots are available on the node. You can check ScyllaCluster status for their names. + +Once issue is resolved and Scylla Pod is up and running (Pod is in Ready state), scale Operator back to two replicas: +```bash +kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=2 +``` + +Operator should continue upgrade process from where it left off. diff --git a/v1.13/_sources/performance.md.txt b/v1.13/_sources/performance.md.txt new file mode 100644 index 00000000000..3bc972ab583 --- /dev/null +++ b/v1.13/_sources/performance.md.txt @@ -0,0 +1,95 @@ +# Performance tuning + +Scylla Operator 1.6 introduces a new experimental feature allowing users to optimize Kubernetes nodes. + +## Node tuning + +Starting from Operator 1.6, a new CRD called NodeConfig is available, allowing users to target Nodes which should be tuned. +When a Node is supposed to be optimized, the Scylla Operator creates a DaemonSet covering these Nodes. +Nodes matching the provided placement conditions will be subject to tuning. + +Below example NodeConfig tunes nodes having `scylla.scylladb.com/node-type=scylla` label: +``` +apiVersion: scylla.scylladb.com/v1alpha1 +kind: NodeConfig +metadata: + name: cluster +spec: + placement: + nodeSelector: + scylla.scylladb.com/node-type: scylla +``` +For more details about new CRD use: +``` +kubectl explain nodeconfigs.scylla.scylladb.com/v1alpha1 +``` + +For all optimizations we use a Python script available in the Scylla image called perftune. +Perftune executes the performance optmizations like tuning the kernel, network, disk devices, spreading IRQs across CPUs and more. + +Tuning consists of two separate optimizations: common node tuning, and tuning based on Scylla Pods and their resource assignment. +Node tuning is executed immediately. Pod tuning is executed when Scylla Pod lands on the same Node. + +Scylla works most efficently when it's pinned to CPU and not interrupted. +One of the most common causes of context-switching are network interrupts. Packets coming to a node need to be processed, +and this requires CPU shares. + +On K8s we always have at least a couple of processes running on the node: kubelet, kubernetes provider applications, daemons etc. +These processes require CPU shares, so we cannot dedicate entire node processing power to Scylla, we need to leave space for others. +We take advantage of it, and we pin IRQs to CPUs not used by any Scylla Pods exclusively. + +Tuning resources are created in a special namespace called `scylla-operator-node-tuning`. + +The tuning is applied only to pods with `Guaranteed` QoS class. Please double check your ScyllaCluster resource specification +to see if it meets all conditions. + +## Kubernetes tuning + +By default, the kubelet uses the CFS quota to enforce pod CPU limits. +When the node runs many CPU-bound pods, the workload can move around different CPU cores depending on whether the pod +is throttled and which CPU cores are available. +However, kubelet may be configured to assign CPUs exclusively, by setting the CPU manager policy to static. + +Setting up kubelet configuration is provider specific. Please check the docs for your distribution or talk to your +provider. + +Only pods within the [Guaranteed QoS class](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/#create-a-pod-that-gets-assigned-a-qos-class-of-guaranteed)) can take advantage of this option. +When such pod lands on a Node, kubelet will pin them to specific CPUs, and those won't be part of the shared pool. + +In our case there are two requirements each ScyllaCluster must fulfill to receive a Guaranteed QoS class: +* resource request and limits must be equal or only limits have to be provided +* agentResources must be provided and their requests and limits must be equal, or only limits have to be provided + +An example of such a ScyllaCluster that receives a Guaranteed QoS class is below: + +``` +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: guaranteed-cluster + namespace: scylla +spec: + agentVersion: 3.2.8 + version: 5.4.3 + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 3 + storage: + capacity: 500Gi + agentResources: + requests: + cpu: 1 + memory: 1G + limits: + cpu: 1 + memory: 1G + resources: + requests: + cpu: 4 + memory: 16G + limits: + cpu: 4 + memory: 16G +``` diff --git a/v1.13/_sources/releases.md.txt b/v1.13/_sources/releases.md.txt new file mode 100644 index 00000000000..ac7f3b65274 --- /dev/null +++ b/v1.13/_sources/releases.md.txt @@ -0,0 +1,95 @@ +# Releases + +## Schedule +We are aiming to ship a new release approximately every 6 weeks. The following release schedule is only advisory, there are no commitments made to hitting these dates. + +:::{table} +| Release | Code freeze | General availability | +|:-------:|:-----------:|:--------------------:| +| 1.13 | 2024-04-25 | 2024-05-09 | +::: + +## Supported releases +We support the latest 2 releases of the operator to give everyone time to upgrade. + +:::{table} +| Release | General availability | Support ends | +|:-------:|:--------------------:|:---------------:| +| 1.12 | 2024-03-28 | Release of 1.14 | +| 1.11 | 2023-11-09 | Release of 1.13 | +| 1.10 | 2023-08-25 | 2024-03-28 | +| 1.9 | 2023-07-04 | 2023-11-09 | +| 1.8 | 2023-01-25 | 2023-08-25 | +| 1.7 | 2022-01-27 | 2023-07-04 | +| 1.6 | 2021-12-03 | 2023-01-25 | +| 1.5 | 2021-09-16 | 2022-01-27 | +| 1.4 | 2021-08-10 | 2021-12-03 | +| 1.3 | 2021-06-17 | 2021-09-16 | +| 1.2 | 2021-05-06 | 2021-08-10 | +| 1.1 | 2021-03-22 | 2021-06-17 | +| 1.0 | 2021-01-21 | 2021-05-06 | +::: + +### Backport policy +Usually, only important bug fixes are eligible for being backported. +This may depend on the situation and assessment of the maintainers. + +## CI/CD +We use [GitHub actions](https://github.com/scylladb/scylla-operator/actions/workflows/go.yaml?query=branch%3Amaster+event%3Apush) for our CI/CD. Every merge to a supported branch, or a creation of a tag will automatically trigger a job to build, test and publish the container image and other artifacts like helm charts. Before we publish any image, it must pass the e2e suite. + +### Automated promotions + +:::{table} +| Git reference | Type | Container image | +| :----------------: | :----: | :--------------------------------------------------: | +| **master** | branch | docker.io/scylladb/scylla-operator:**latest** | +| **vX.Y** | branch | docker.io/scylladb/scylla-operator:**X.Y** | +| **vX.Y.Z** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z** | +| **vX.Y.Z-alpha.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-alpha.N** | +| **vX.Y.Z-beta.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-beta.N** | +| **vX.Y.Z-rc.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-rc.N** | +::: + +### Generally available +GA images aren't build from scratch but rather promoted from an existing release candidates. When we decide a release candidate has the acceptable quality and QA sings it off, the release candidate is promoted to become the GA release. This makes sure the image has exactly the same content and SHA as the tested release candidate. + +## Support matrix + +Support matrix table shows the version requirements for a particular **scylla-operator** version. Be sure to match these requirements, otherwise some functionality will not work. + +:::{table} +| Component | v1.13 | v1.12 | v1.11 | v1.10 | +|:-----------------:|:----------:|:----------:|:----------:|:----------:| +| Kubernetes | `>=1.21` | `>=1.21` | `>=1.21` | `>=1.21` | +| CRI API | `v1` | `v1` | `v1` | `v1` | +| Scylla OS | `>=5.4` | `>=5.0` | `>=5.0` | `>=5.0` | +| Scylla Enterprise | `>=2023.1` | `>=2021.1` | `>=2021.1` | `>=2021.1` | +| Scylla Manager | `>=3.2.8` | `>=3.2.6` | `>=3.2` | `>=2.6` | +| Scylla Monitoring | `(CRD)` | `(CRD)` | `(CRD)` | `>=4.0` | +::: + +### Supported Kubernetes platforms + +We officially test and recommend to use the following platforms: + +:::{table} +| Platform | OS Image | +|:-----------------|:-------------| +| GKE | Ubuntu | +| EKS | Amazon Linux | +::: + +While our APIs generally work on any Kubernetes conformant cluster, +performance tuning and other pieces that need to interact with the host OS, kubelet, CRI, kernel, etc. might hit some incompatibilities. + + +:::{warning} +The following platforms are known **not to work correctly** at this time. + +:::{table} +| Platform | OS Image | Details | +|:-----------------|:-------------| :------ | +| GKE | Container OS | | +| EKS | Bottlerocket | Suspected kernel/cgroups issue that breaks available memory detection for ScyllaDB | +::: +::: diff --git a/v1.13/_sources/support/index.rst.txt b/v1.13/_sources/support/index.rst.txt new file mode 100644 index 00000000000..9c623218acb --- /dev/null +++ b/v1.13/_sources/support/index.rst.txt @@ -0,0 +1,12 @@ +========================================================== +Support +========================================================== + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + overview + known-issues + troubleshooting/index + must-gather diff --git a/v1.13/_sources/support/known-issues.md.txt b/v1.13/_sources/support/known-issues.md.txt new file mode 100644 index 00000000000..c00d84bef58 --- /dev/null +++ b/v1.13/_sources/support/known-issues.md.txt @@ -0,0 +1,14 @@ +# Known issues + +## Scylla Manager does not boot up on Minikube + +If your Scylla Manager is failing to apply 8th migration (008_*), then apply fix for [TRUNCATE queries](#truncate-queries-does-not-work-on-minikube). + +## TRUNCATE queries does not work on Minikube + +The `TRUNCATE` queries requires [hairpinning](https://en.wikipedia.org/wiki/Hairpinning) to be enabled. On minikube this is disabled by default. + +To fix it execute the following command: +``` +minikube ssh sudo ip link set docker0 promisc on +``` diff --git a/v1.13/_sources/support/must-gather.md.txt b/v1.13/_sources/support/must-gather.md.txt new file mode 100644 index 00000000000..7e0089084da --- /dev/null +++ b/v1.13/_sources/support/must-gather.md.txt @@ -0,0 +1,101 @@ +# Gathering data with must-gather + +`must-gather` is an embedded tool in Scylla Operator that helps collecting all the necessary info when something goes wrong. + +The tool talks to the Kubernetes API, retrieves a predefined set of resources and saves them into a folder in your current directory. +By default, all collected Secrets are censored to avoid sending sensitive data. +That said, you can always review the archive before you attach it to an issue or your support request. + +Given it needs to talk to the Kubernetes API, at the very least, you need to supply the `--kubeconfig` flag with a path to the kubeconfig file for your Kubernetes cluster, or set the `KUBECONFIG` environment variable. + +## Running must-gather + +There is more than one way to run `must-gather`. +Here are some examples of how you can run the tool. + +### Prerequisites + +All examples assume you have exported `KUBECONFIG` environment variable that points to a kubeconfig file on your machine. +If not, you can run this command to export the common default location. +Please make sure such a file exists. + +```bash +export KUBECONFIG=~/.kube/config +ls -l "${KUBECONFIG}" +``` + +:::{note} + There can be slight deviations in the arguments for your container tool, depending on the container runtime, whether you use SELinux or similar factors. + + As an example, the need for the `Z` option on volume mounts depends on whether you use SELinux and what context is applied on your file or directory. + If you get an error mentioning `Error: lsetxattr : operation not supported`, try it without the `Z` option. +::: + +Let's also check whether your kubeconfig uses [external authentication plugin](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#client-go-credential-plugins). +You can determine that by running +```bash +kubectl config view --minify +``` +and checking whether it uses an external exec plugin by looking for this pattern (containing the `exec` key) +```yaml +users: +- name: + user: + exec: +``` +If not, you can skip the rest of this section. + +In case your kubeconfig depends on external binaries, you have to take a few extra steps because the external binary won't be available within our container to authenticate the requests. + +Similarly to how Pods are run within Kubernetes, we'll create a dedicated ServiceAccount for must-gather and use it to run the tool. +(When you are done using it, feel free to remove the Kubernetes resources created for that purpose.) + +```bash +kubectl create namespace must-gather +kubectl -n must-gather create serviceaccount must-gather +kubectl create clusterrolebinding must-gather --clusterrole=cluster-admin --serviceaccount=must-gather:must-gather +export MUST_GATHER_TOKEN +MUST_GATHER_TOKEN=$( kubectl -n must-gather create token must-gather --duration=1h ) +kubeconfig=$( mktemp ) +# Create a copy of the existing kubeconfig and +# replace user authentication using yq, or by adjusting the fields manually. +kubectl config view --minify --raw -o yaml | yq -e '.users[0].user = {"token": env(MUST_GATHER_TOKEN)}' > "${kubeconfig}" +KUBECONFIG="${kubeconfig}" +``` + +:::{note} + If you don't have `yq` installed, you can get it at https://github.com/mikefarah/yq/#install or you can replace the user authentication settings manually. +::: + +### Podman +```bash +podman run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro,Z" -v="$( pwd ):/workspace:Z" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig +``` + +### Docker +```bash +docker run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro" -v="$( pwd ):/workspace" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig +``` + +## Limiting must-gather to a particular namespace + +If you are running a large Kubernetes cluster with many ScyllaClusters, it may be useful to limit the collection of ScyllaClusters to a particular namespace. +Unless you hit scale issues, we advise not to use this mode, as sometimes the ScyllaClusters affect other collected resources, like the manager or they form a multi-datacenter. + +```bash +scylla-operator must-gather --namespace="" +``` + +:::{note} + The `--namespace` flag affects only `ScyllaClusters`. + Other resources related to the operator installation or cluster state will still be collected from other namespaces. +::: + +### Collecting every resource in the cluster + +By default, `must-gather` collects only a predefined subset of resources. +You can also request collecting every resource in the Kubernetes API, if the default set wouldn't be enough to debug an issue. + +```bash +scylla-operator must-gather --all-resources +``` diff --git a/v1.13/_sources/support/overview.md.txt b/v1.13/_sources/support/overview.md.txt new file mode 100644 index 00000000000..7097438589c --- /dev/null +++ b/v1.13/_sources/support/overview.md.txt @@ -0,0 +1,14 @@ +# Support overview + +## Get support + +ScyllaDB provides administrators with [paid support](https://www.scylladb.com/product/support/#enterprise-support), including Scylla Operator. + +## Troubleshooting issues + +To learn more about what to do when issues arise, visit our dedicated [troubleshooting section](troubleshooting/index). + +## Gather data about your cluster + +Scylla Operator contains an embedded tool called [must-gather](must-gather.md) that can collect the required information for requesting support or reporting issues. +Support requests and bug reports are required to attach the must-gather archive to help us understand the issue. diff --git a/v1.13/_sources/support/troubleshooting/index.rst.txt b/v1.13/_sources/support/troubleshooting/index.rst.txt new file mode 100644 index 00000000000..b83118e6b18 --- /dev/null +++ b/v1.13/_sources/support/troubleshooting/index.rst.txt @@ -0,0 +1,8 @@ +========================================================== +Troubleshooting +========================================================== + +.. toctree:: + :maxdepth: 2 + + installation diff --git a/v1.13/_sources/support/troubleshooting/installation.md.txt b/v1.13/_sources/support/troubleshooting/installation.md.txt new file mode 100644 index 00000000000..b93fcce7b51 --- /dev/null +++ b/v1.13/_sources/support/troubleshooting/installation.md.txt @@ -0,0 +1,34 @@ +# Troubleshooting installation issues + +## Webhooks +Scylla Operator provides several custom API resources that use webhooks to function properly. + +Unfortunately, it is often the case that user's clusters have modified SDN, that doesn't extend to the control plane, and Kubernetes apiserver is not able to reach the pods that serve the webhook traffic. +Another common case are firewall rules that block the webhook traffic. + +:::{note} + To be called a Kubernetes cluster, clusters are required to pass Kubernetes conformance test suite. + This suite includes tests that require Kubernetes apiserver to be able to reach webhook services. +::: + +:::{note} + Before filing an issue, please make sure your cluster webhook traffic can reach your webhook services, independently of Scylla Operator resources. +::: + +### EKS + +#### Custom CNI +EKS is currently breaking Kubernetes webhooks [when used with custom CNI networking](https://github.com/aws/containers-roadmap/issues/1215). + +:::{note} + We advise you to avoid using such setups and use a conformant Kubernetes cluster that supports webhooks. +::: + +There are some workarounds where you can reconfigure the webhook to use Ingress or hostNetwork instead, but it's beyond a standard configuration that we support and not specific to the Scylla Operator. + +### GKE + +#### Private clusters + +If you use GKE private clusters you need to manually configure the firewall to allow webhook traffic. +You can find more information on how to do that in [GKE private clusters docs](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules). diff --git a/v1.13/_sources/upgrade.md.txt b/v1.13/_sources/upgrade.md.txt new file mode 100644 index 00000000000..bc458be7c3d --- /dev/null +++ b/v1.13/_sources/upgrade.md.txt @@ -0,0 +1,184 @@ +# Upgrade of Scylla Operator + +This page describes Scylla Operator upgrade procedures. +There are two generic update procedures - via Helm and via kubectl. Before upgrading, please check this page to find out +if your target version requires additional upgrade steps. + +## Upgrade via Helm + +Helm doesn't support managing CustomResourceDefinition resources ([#5871](https://github.com/helm/helm/issues/5871), [#7735](https://github.com/helm/helm/issues/7735)) +These are only created on first install and never updated. In order to update them, users have to do it manually. + +Replace `` with the name of your Helm release for Scylla Operator and replace `` with the version number you want to install: +1. Make sure Helm chart repository is up-to-date: + ``` + helm repo add scylla-operator https://storage.googleapis.com/scylla-operator-charts/stable + helm repo update + ``` +2. Update CRD resources. We recommend using `--server-side` flag for `kubectl apply`, if your version supports it. + ``` + tmpdir=$( mktemp -d ) \ + && helm pull scylla-operator/scylla-operator --version --untar --untardir "${tmpdir}" \ + && find "${tmpdir}"/scylla-operator/crds/ -name '*.yaml' -printf '-f=%p ' \ + | xargs kubectl apply + ``` +3. Update Scylla Operator + ``` + helm upgrade --version scylla-operator/scylla-operator + ``` + +## Upgrade via kubectl + +Replace `` with the version number you want to install: + +1. Checkout source code of version you want to use: + ``` + git checkout + ``` +2. Manifests use rolling minor version tag, you may want to pin it to specific version: + ``` + find deploy/operator -name "*.yaml" | xargs sed --follow-symlinks -i -E "s^docker.io/scylladb/scylla-operator:[0-9]+\.[0-9]+^docker.io/scylladb/scylla-operator:^g" + ``` +3. Update Scylla Operator. We recommend using `--server-side` flag for `kubectl apply`, if your version supports it. + ``` + kubectl apply -f deploy/operator + ``` + +--- + +## `v1.2.0` -> `v1.3.0` + +Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure. + +1. Checkout source code of v1.3.0: + ``` + git checkout v1.3.0 + ``` +1. Update Scylla Operator from deploy directory: + ``` + kubectl -n scylla-operator apply -f deploy/operator + ``` +1. Wait until Scylla Operator is up and running: + ``` + kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com + kubectl -n scylla-operator rollout status deployment.apps/scylla-operator + ``` + +## `v1.1.0` -> `v1.2.0` + +1.2.0 release brought a lot of changes to the Scylla Operator deployment process. +To properly update Scylla Operator one must delete old objects and install updated ones. + +Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure. + +1. Checkout source code of v1.2.0: + ``` + git checkout v1.2.0 + ``` +1. Remove old scylla operator namespace - in our case it's called `scylla-operator-system`: + ``` + kubectl delete namespace scylla-operator-system --wait=true + ``` +1. Remove old webhooks: + ``` + kubectl delete MutatingWebhookConfiguration scylla-operator-mutating-webhook-configuration + kubectl delete ValidatingWebhookConfiguration scylla-operator-validating-webhook-configuration + ``` +1. Install Scylla Operator from deploy directory: + ``` + kubectl -n scylla-operator apply -f deploy/operator + ``` +1. Wait until Scylla Operator is up and running: + ``` + kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com + kubectl -n scylla-operator rollout status deployment.apps/scylla-operator + ``` + +## `v1.0.0` -> `v1.1.0` + +During this update we will change probes and image for Scylla Operator. +A new version brings an automation for upgrade of sidecar image, so a rolling restart of managed Scylla clusters is expected. + +1. Get name of StatefulSet managing Scylla Operator + ```shell + kubectl --namespace scylla-operator-system get sts --selector="control-plane=controller-manager" + + NAME READY AGE + scylla-operator-controller-manager 1/1 95m + ``` + +1. Change probes and used container image by applying following patch: + ```yaml + spec: + template: + spec: + containers: + - name: manager + image: docker.io/scylladb/scylla-operator:1.1.0 + livenessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP + readinessProbe: + $retainKeys: + - httpGet + httpGet: + path: /readyz + port: 8080 + scheme: HTTP + ``` + To apply above patch save it to file (`operator-patch.yaml` for example) and apply to Operator StatefulSet: + ```shell + kubectl -n scylla-operator-system patch sts scylla-operator-controller-manager --patch "$(cat operator-patch.yaml)" + ``` + + +## `v0.3.0` -> `v1.0.0` + +***Note:*** There's an experimental migration procedure available [here](migration.md). + +`v0.3.0` used a very common name as a CRD kind (`Cluster`). In `v1.0.0` this issue was solved by using less common +kind which is easier to disambiguate. (`ScyllaCluster`). +This change is backward incompatible, so Scylla cluster must be turned off and recreated from scratch. +In case you need to preserve your data, refer to backup and restore guide. + +1. Get list of existing Scylla clusters + ``` + kubectl -n scylla get cluster.scylla.scylladb.com + + NAME AGE + simple-cluster 30m + ``` +1. Delete each one of them + + ``` + kubectl -n scylla delete cluster.scylla.scylladb.com simple-cluster + ``` +1. Make sure you're on `v0.3.0` branch + ``` + git checkout v0.3.0 + ``` +1. Delete existing CRD and Operator + ``` + kubectl delete -f examples/generic/operator.yaml + ``` +1. Checkout `v1.0.0` version + ``` + git checkout v1.0.0 + ``` +1. Install new CRD and Scylla Operator + ``` + kubectl apply -f deploy/operator.yaml + ``` +1. Migrate your existing Scylla Cluster definition. Change `apiVersion` and `kind` from: + ``` + apiVersion: scylla.scylladb.com/v1alpha1 + kind: Cluster + ``` + to: + ``` + apiVersion: scylla.scylladb.com/v1 + kind: ScyllaCluster + ``` +1. Once your cluster definition is ready, use `kubectl apply` to install fresh Scylla cluster. diff --git a/v1.13/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css b/v1.13/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css new file mode 100644 index 00000000000..eb19f698afc --- /dev/null +++ b/v1.13/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/v1.13/_sphinx_design_static/design-tabs.js b/v1.13/_sphinx_design_static/design-tabs.js new file mode 100644 index 00000000000..36b38cf0d91 --- /dev/null +++ b/v1.13/_sphinx_design_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/v1.13/_static/basic.css b/v1.13/_static/basic.css new file mode 100644 index 00000000000..f316efcb47b --- /dev/null +++ b/v1.13/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/v1.13/_static/check-solid.svg b/v1.13/_static/check-solid.svg new file mode 100644 index 00000000000..92fad4b5c0b --- /dev/null +++ b/v1.13/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/v1.13/_static/clipboard.min.js b/v1.13/_static/clipboard.min.js new file mode 100644 index 00000000000..54b3c463811 --- /dev/null +++ b/v1.13/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/v1.13/_static/copybutton.css b/v1.13/_static/copybutton.css new file mode 100644 index 00000000000..f1916ec7d1b --- /dev/null +++ b/v1.13/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

            Short

            + */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/v1.13/_static/copybutton.js b/v1.13/_static/copybutton.js new file mode 100644 index 00000000000..2ea7ff3e217 --- /dev/null +++ b/v1.13/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/v1.13/_static/copybutton_funcs.js b/v1.13/_static/copybutton_funcs.js new file mode 100644 index 00000000000..dbe1aaad79c --- /dev/null +++ b/v1.13/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/v1.13/_static/css/main.css b/v1.13/_static/css/main.css new file mode 100644 index 00000000000..2682ad8a319 --- /dev/null +++ b/v1.13/_static/css/main.css @@ -0,0 +1 @@ +@media print,screen and (min-width:40em){.reveal,.reveal.large,.reveal.small,.reveal.tiny{left:auto;margin:0 auto;right:auto}}/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}[data-whatinput=mouse] *,[data-whatinput=mouse] :focus,[data-whatinput=touch] *,[data-whatinput=touch] :focus,[data-whatintent=mouse] *,[data-whatintent=mouse] :focus,[data-whatintent=touch] *,[data-whatintent=touch] :focus{outline:0}[draggable=false]{-webkit-touch-callout:none;-webkit-user-select:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{-webkit-box-sizing:border-box;font-size:100%}*,:after,:before{-webkit-box-sizing:inherit}body{background:#fefefe;color:#0a0a0a;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;height:auto;vertical-align:middle;-ms-interpolation-mode:bicubic}textarea{border-radius:0;height:auto;min-height:50px}select{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;border:0;border-radius:0;cursor:auto;line-height:1;padding:0}[data-whatinput=mouse] button{outline:0}pre{overflow:auto;-webkit-overflow-scrolling:touch}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block!important}.is-hidden{display:none!important}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;-webkit-box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);-webkit-box-sizing:border-box;box-sizing:border-box;color:#0a0a0a;display:block;font-family:inherit;font-size:1rem;font-weight:400;height:2.4375rem;line-height:1.5;margin:0 0 1rem;padding:.5rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s;width:100%}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:0;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}textarea{max-width:100%}textarea[rows]{height:auto}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type=search]{-webkit-box-sizing:border-box;box-sizing:border-box}::-webkit-input-placeholder{color:#cacaca}::-moz-placeholder{color:#cacaca}:-ms-input-placeholder{color:#cacaca}::-ms-input-placeholder{color:#cacaca}::placeholder{color:#cacaca}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-bottom:0;margin-left:.5rem;margin-right:1rem;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{color:#0a0a0a;display:block;font-size:.875rem;font-weight:400;line-height:1.8;margin:0}label.middle{line-height:1.5;margin:0 0 1rem;padding:.5625rem 0}.help-text{color:#0a0a0a;font-size:.8125rem;font-style:italic;margin-top:-.5rem}.input-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:1rem;width:100%;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.input-group>:first-child,.input-group>:first-child.input-group-button>*,.input-group>:last-child,.input-group>:last-child.input-group-button>*{border-radius:0}.input-group-button,.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label,.input-group-field,.input-group-label{margin:0;white-space:nowrap}.input-group-label{background:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 1rem;text-align:center;white-space:nowrap;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;min-width:0}.input-group-button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-bottom:0;padding-top:0;text-align:center;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;font-size:1rem;height:auto;padding-bottom:0;padding-top:0}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:.5rem;max-width:100%}.fieldset{border:1px solid #cacaca;margin:1.125rem 0;padding:1.25rem}.fieldset legend{margin:0 0 0 -.1875rem;padding:0 .1875rem}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;background-image:url('data:image/svg+xml;utf8,');background-origin:content-box;background-position:right -1rem center;background-repeat:no-repeat;background-size:9px 6px;border:1px solid #cacaca;border-radius:0;color:#0a0a0a;font-family:inherit;font-size:1rem;font-weight:400;height:2.4375rem;line-height:1.5;margin:0 0 1rem;padding:.5rem 1.5rem .5rem .5rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}@media screen and (min-width:0\0){select{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==)}}select:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:0;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{background-image:none;height:auto}select:not([multiple]){padding-bottom:0;padding-top:0}.is-invalid-input:not(:focus){background-color:#f9ecea;border-color:#cc4b37}.is-invalid-input:not(:focus)::-webkit-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-moz-placeholder{color:#cc4b37}.is-invalid-input:not(:focus):-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::placeholder{color:#cc4b37}.form-error,.is-invalid-label{color:#cc4b37}.form-error{display:none;font-size:.75rem;font-weight:700;margin-bottom:1rem;margin-top:-.5rem}.form-error.is-visible{display:block}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:inherit;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:400;text-rendering:optimizeLegibility}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}.h1,h1{font-size:1.5rem}.h1,.h2,h1,h2{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h2,h2{font-size:1.25rem}.h3,h3{font-size:1.1875rem}.h3,.h4,h3,h4{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h4,h4{font-size:1.125rem}.h5,h5{font-size:1.0625rem}.h5,.h6,h5,h6{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h6,h6{font-size:1rem}@media print,screen and (min-width:40em){.h1,h1{font-size:3rem}.h2,h2{font-size:2.5rem}.h3,h3{font-size:1.9375rem}.h4,h4{font-size:1.5625rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}}a{color:#1779ba;cursor:pointer;line-height:inherit;text-decoration:none}a:focus,a:hover{color:#1468a0}a img,hr{border:0}hr{border-bottom:1px solid #cacaca;clear:both;height:0;margin:1.25rem auto;max-width:75rem}dl,ol,ul{line-height:1.6;list-style-position:outside;margin-bottom:1rem}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-left:1.25rem}dl{margin-bottom:1rem}dl dt{font-weight:700;margin-bottom:.3rem}blockquote{border-left:1px solid #cacaca;margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem}blockquote,blockquote p{color:#8a8a8a;line-height:1.6}abbr,abbr[title]{border-bottom:1px dotted #0a0a0a;cursor:help;text-decoration:none}figure,kbd{margin:0}kbd{background-color:#e6e6e6;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;padding:.125rem .25rem 0}.subheader{color:#8a8a8a;font-weight:400;line-height:1.4;margin-bottom:.5rem;margin-top:.2rem}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}ol.no-bullet,ul.no-bullet{list-style:none;margin-left:0}.cite-block,cite{color:#8a8a8a;display:block;font-size:.8125rem}.cite-block:before,cite:before{content:"— "}.code-inline,code{display:inline;max-width:100%;word-wrap:break-word;padding:.125rem .3125rem .0625rem}.code-block,.code-inline,code{background-color:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;font-weight:400}.code-block{display:block;margin-bottom:1.5rem;overflow:auto;padding:1rem;white-space:pre}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print,screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print,screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:#000!important;-webkit-print-color-adjust:economy;print-color-adjust:economy;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.print-break-inside{page-break-inside:auto}}.grid-container{margin-left:auto;margin-right:auto;max-width:75rem;padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-container{padding-left:.9375rem;padding-right:.9375rem}}.grid-container.fluid{margin-left:auto;margin-right:auto;max-width:100%;padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-container.fluid{padding-left:.9375rem;padding-right:.9375rem}}.grid-container.full{margin-left:auto;margin-right:auto;max-width:100%;padding-left:0;padding-right:0}.grid-x{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.cell{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;min-height:0;min-width:0;width:100%}.cell.auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0}.cell.shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.auto,.grid-x>.shrink{width:auto}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-full,.grid-x>.small-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-full,.grid-x>.medium-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-full,.grid-x>.large-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.small-1{width:8.3333333333%}.grid-x>.small-2{width:16.6666666667%}.grid-x>.small-3{width:25%}.grid-x>.small-4{width:33.3333333333%}.grid-x>.small-5{width:41.6666666667%}.grid-x>.small-6{width:50%}.grid-x>.small-7{width:58.3333333333%}.grid-x>.small-8{width:66.6666666667%}.grid-x>.small-9{width:75%}.grid-x>.small-10{width:83.3333333333%}.grid-x>.small-11{width:91.6666666667%}.grid-x>.small-12{width:100%}@media print,screen and (min-width:40em){.grid-x>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.medium-shrink{width:auto}.grid-x>.medium-1{width:8.3333333333%}.grid-x>.medium-2{width:16.6666666667%}.grid-x>.medium-3{width:25%}.grid-x>.medium-4{width:33.3333333333%}.grid-x>.medium-5{width:41.6666666667%}.grid-x>.medium-6{width:50%}.grid-x>.medium-7{width:58.3333333333%}.grid-x>.medium-8{width:66.6666666667%}.grid-x>.medium-9{width:75%}.grid-x>.medium-10{width:83.3333333333%}.grid-x>.medium-11{width:91.6666666667%}.grid-x>.medium-12{width:100%}}@media print,screen and (min-width:64em){.grid-x>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.large-shrink{width:auto}.grid-x>.large-1{width:8.3333333333%}.grid-x>.large-2{width:16.6666666667%}.grid-x>.large-3{width:25%}.grid-x>.large-4{width:33.3333333333%}.grid-x>.large-5{width:41.6666666667%}.grid-x>.large-6{width:50%}.grid-x>.large-7{width:58.3333333333%}.grid-x>.large-8{width:66.6666666667%}.grid-x>.large-9{width:75%}.grid-x>.large-10{width:83.3333333333%}.grid-x>.large-11{width:91.6666666667%}.grid-x>.large-12{width:100%}}.grid-margin-x:not(.grid-x)>.cell{width:auto}.grid-margin-y:not(.grid-y)>.cell{height:auto}.grid-margin-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-margin-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-margin-x>.cell{margin-left:.625rem;margin-right:.625rem;width:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x>.cell{margin-left:.9375rem;margin-right:.9375rem;width:calc(100% - 1.875rem)}}.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.25rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.25rem)}.grid-margin-x>.small-3{width:calc(25% - 1.25rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.25rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.25rem)}.grid-margin-x>.small-6{width:calc(50% - 1.25rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.25rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.25rem)}.grid-margin-x>.small-9{width:calc(75% - 1.25rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.25rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.25rem)}.grid-margin-x>.small-12{width:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.small-3{width:calc(25% - 1.875rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.small-6{width:calc(50% - 1.875rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.small-9{width:calc(75% - 1.875rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.small-12{width:calc(100% - 1.875rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.875rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.875rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.875rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-x>.large-auto,.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.large-3{width:calc(25% - 1.875rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.large-6{width:calc(50% - 1.875rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.large-9{width:calc(75% - 1.875rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.large-12{width:calc(100% - 1.875rem)}}.grid-padding-x .grid-padding-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-padding-x .grid-padding-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-container:not(.full)>.grid-padding-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-padding-x>.cell{padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-padding-x>.cell{padding-left:.9375rem;padding-right:.9375rem}}.small-up-1>.cell{width:100%}.small-up-2>.cell{width:50%}.small-up-3>.cell{width:33.3333333333%}.small-up-4>.cell{width:25%}.small-up-5>.cell{width:20%}.small-up-6>.cell{width:16.6666666667%}.small-up-7>.cell{width:14.2857142857%}.small-up-8>.cell{width:12.5%}@media print,screen and (min-width:40em){.medium-up-1>.cell{width:100%}.medium-up-2>.cell{width:50%}.medium-up-3>.cell{width:33.3333333333%}.medium-up-4>.cell{width:25%}.medium-up-5>.cell{width:20%}.medium-up-6>.cell{width:16.6666666667%}.medium-up-7>.cell{width:14.2857142857%}.medium-up-8>.cell{width:12.5%}}@media print,screen and (min-width:64em){.large-up-1>.cell{width:100%}.large-up-2>.cell{width:50%}.large-up-3>.cell{width:33.3333333333%}.large-up-4>.cell{width:25%}.large-up-5>.cell{width:20%}.large-up-6>.cell{width:16.6666666667%}.large-up-7>.cell{width:14.2857142857%}.large-up-8>.cell{width:12.5%}}.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.25rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.25rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.25rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.25rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.25rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.25rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.25rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.875rem)}.grid-margin-x.medium-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.medium-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.medium-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.medium-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.medium-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.medium-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.medium-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.medium-up-8>.cell{width:calc(12.5% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-x.large-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.large-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.large-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.large-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.large-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.large-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.large-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.large-up-8>.cell{width:calc(12.5% - 1.875rem)}}.small-margin-collapse,.small-margin-collapse>.cell{margin-left:0;margin-right:0}.small-margin-collapse>.small-1{width:8.3333333333%}.small-margin-collapse>.small-2{width:16.6666666667%}.small-margin-collapse>.small-3{width:25%}.small-margin-collapse>.small-4{width:33.3333333333%}.small-margin-collapse>.small-5{width:41.6666666667%}.small-margin-collapse>.small-6{width:50%}.small-margin-collapse>.small-7{width:58.3333333333%}.small-margin-collapse>.small-8{width:66.6666666667%}.small-margin-collapse>.small-9{width:75%}.small-margin-collapse>.small-10{width:83.3333333333%}.small-margin-collapse>.small-11{width:91.6666666667%}.small-margin-collapse>.small-12{width:100%}@media print,screen and (min-width:40em){.small-margin-collapse>.medium-1{width:8.3333333333%}.small-margin-collapse>.medium-2{width:16.6666666667%}.small-margin-collapse>.medium-3{width:25%}.small-margin-collapse>.medium-4{width:33.3333333333%}.small-margin-collapse>.medium-5{width:41.6666666667%}.small-margin-collapse>.medium-6{width:50%}.small-margin-collapse>.medium-7{width:58.3333333333%}.small-margin-collapse>.medium-8{width:66.6666666667%}.small-margin-collapse>.medium-9{width:75%}.small-margin-collapse>.medium-10{width:83.3333333333%}.small-margin-collapse>.medium-11{width:91.6666666667%}.small-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.small-margin-collapse>.large-1{width:8.3333333333%}.small-margin-collapse>.large-2{width:16.6666666667%}.small-margin-collapse>.large-3{width:25%}.small-margin-collapse>.large-4{width:33.3333333333%}.small-margin-collapse>.large-5{width:41.6666666667%}.small-margin-collapse>.large-6{width:50%}.small-margin-collapse>.large-7{width:58.3333333333%}.small-margin-collapse>.large-8{width:66.6666666667%}.small-margin-collapse>.large-9{width:75%}.small-margin-collapse>.large-10{width:83.3333333333%}.small-margin-collapse>.large-11{width:91.6666666667%}.small-margin-collapse>.large-12{width:100%}}.small-padding-collapse{margin-left:0;margin-right:0}.small-padding-collapse>.cell{padding-left:0;padding-right:0}@media print,screen and (min-width:40em){.medium-margin-collapse,.medium-margin-collapse>.cell{margin-left:0;margin-right:0}.medium-margin-collapse>.small-1{width:8.3333333333%}.medium-margin-collapse>.small-2{width:16.6666666667%}.medium-margin-collapse>.small-3{width:25%}.medium-margin-collapse>.small-4{width:33.3333333333%}.medium-margin-collapse>.small-5{width:41.6666666667%}.medium-margin-collapse>.small-6{width:50%}.medium-margin-collapse>.small-7{width:58.3333333333%}.medium-margin-collapse>.small-8{width:66.6666666667%}.medium-margin-collapse>.small-9{width:75%}.medium-margin-collapse>.small-10{width:83.3333333333%}.medium-margin-collapse>.small-11{width:91.6666666667%}.medium-margin-collapse>.small-12{width:100%}.medium-margin-collapse>.medium-1{width:8.3333333333%}.medium-margin-collapse>.medium-2{width:16.6666666667%}.medium-margin-collapse>.medium-3{width:25%}.medium-margin-collapse>.medium-4{width:33.3333333333%}.medium-margin-collapse>.medium-5{width:41.6666666667%}.medium-margin-collapse>.medium-6{width:50%}.medium-margin-collapse>.medium-7{width:58.3333333333%}.medium-margin-collapse>.medium-8{width:66.6666666667%}.medium-margin-collapse>.medium-9{width:75%}.medium-margin-collapse>.medium-10{width:83.3333333333%}.medium-margin-collapse>.medium-11{width:91.6666666667%}.medium-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.medium-margin-collapse>.large-1{width:8.3333333333%}.medium-margin-collapse>.large-2{width:16.6666666667%}.medium-margin-collapse>.large-3{width:25%}.medium-margin-collapse>.large-4{width:33.3333333333%}.medium-margin-collapse>.large-5{width:41.6666666667%}.medium-margin-collapse>.large-6{width:50%}.medium-margin-collapse>.large-7{width:58.3333333333%}.medium-margin-collapse>.large-8{width:66.6666666667%}.medium-margin-collapse>.large-9{width:75%}.medium-margin-collapse>.large-10{width:83.3333333333%}.medium-margin-collapse>.large-11{width:91.6666666667%}.medium-margin-collapse>.large-12{width:100%}}@media print,screen and (min-width:40em){.medium-padding-collapse{margin-left:0;margin-right:0}.medium-padding-collapse>.cell{padding-left:0;padding-right:0}}@media print,screen and (min-width:64em){.large-margin-collapse,.large-margin-collapse>.cell{margin-left:0;margin-right:0}.large-margin-collapse>.small-1{width:8.3333333333%}.large-margin-collapse>.small-2{width:16.6666666667%}.large-margin-collapse>.small-3{width:25%}.large-margin-collapse>.small-4{width:33.3333333333%}.large-margin-collapse>.small-5{width:41.6666666667%}.large-margin-collapse>.small-6{width:50%}.large-margin-collapse>.small-7{width:58.3333333333%}.large-margin-collapse>.small-8{width:66.6666666667%}.large-margin-collapse>.small-9{width:75%}.large-margin-collapse>.small-10{width:83.3333333333%}.large-margin-collapse>.small-11{width:91.6666666667%}.large-margin-collapse>.small-12{width:100%}.large-margin-collapse>.medium-1{width:8.3333333333%}.large-margin-collapse>.medium-2{width:16.6666666667%}.large-margin-collapse>.medium-3{width:25%}.large-margin-collapse>.medium-4{width:33.3333333333%}.large-margin-collapse>.medium-5{width:41.6666666667%}.large-margin-collapse>.medium-6{width:50%}.large-margin-collapse>.medium-7{width:58.3333333333%}.large-margin-collapse>.medium-8{width:66.6666666667%}.large-margin-collapse>.medium-9{width:75%}.large-margin-collapse>.medium-10{width:83.3333333333%}.large-margin-collapse>.medium-11{width:91.6666666667%}.large-margin-collapse>.medium-12{width:100%}.large-margin-collapse>.large-1{width:8.3333333333%}.large-margin-collapse>.large-2{width:16.6666666667%}.large-margin-collapse>.large-3{width:25%}.large-margin-collapse>.large-4{width:33.3333333333%}.large-margin-collapse>.large-5{width:41.6666666667%}.large-margin-collapse>.large-6{width:50%}.large-margin-collapse>.large-7{width:58.3333333333%}.large-margin-collapse>.large-8{width:66.6666666667%}.large-margin-collapse>.large-9{width:75%}.large-margin-collapse>.large-10{width:83.3333333333%}.large-margin-collapse>.large-11{width:91.6666666667%}.large-margin-collapse>.large-12{width:100%}.large-padding-collapse{margin-left:0;margin-right:0}.large-padding-collapse>.cell{padding-left:0;padding-right:0}}.small-offset-0{margin-left:0}.grid-margin-x>.small-offset-0{margin-left:.625rem}.small-offset-1{margin-left:8.3333333333%}.grid-margin-x>.small-offset-1{margin-left:calc(8.33333% + .625rem)}.small-offset-2{margin-left:16.6666666667%}.grid-margin-x>.small-offset-2{margin-left:calc(16.66667% + .625rem)}.small-offset-3{margin-left:25%}.grid-margin-x>.small-offset-3{margin-left:calc(25% + .625rem)}.small-offset-4{margin-left:33.3333333333%}.grid-margin-x>.small-offset-4{margin-left:calc(33.33333% + .625rem)}.small-offset-5{margin-left:41.6666666667%}.grid-margin-x>.small-offset-5{margin-left:calc(41.66667% + .625rem)}.small-offset-6{margin-left:50%}.grid-margin-x>.small-offset-6{margin-left:calc(50% + .625rem)}.small-offset-7{margin-left:58.3333333333%}.grid-margin-x>.small-offset-7{margin-left:calc(58.33333% + .625rem)}.small-offset-8{margin-left:66.6666666667%}.grid-margin-x>.small-offset-8{margin-left:calc(66.66667% + .625rem)}.small-offset-9{margin-left:75%}.grid-margin-x>.small-offset-9{margin-left:calc(75% + .625rem)}.small-offset-10{margin-left:83.3333333333%}.grid-margin-x>.small-offset-10{margin-left:calc(83.33333% + .625rem)}.small-offset-11{margin-left:91.6666666667%}.grid-margin-x>.small-offset-11{margin-left:calc(91.66667% + .625rem)}@media print,screen and (min-width:40em){.medium-offset-0{margin-left:0}.grid-margin-x>.medium-offset-0{margin-left:.9375rem}.medium-offset-1{margin-left:8.3333333333%}.grid-margin-x>.medium-offset-1{margin-left:calc(8.33333% + .9375rem)}.medium-offset-2{margin-left:16.6666666667%}.grid-margin-x>.medium-offset-2{margin-left:calc(16.66667% + .9375rem)}.medium-offset-3{margin-left:25%}.grid-margin-x>.medium-offset-3{margin-left:calc(25% + .9375rem)}.medium-offset-4{margin-left:33.3333333333%}.grid-margin-x>.medium-offset-4{margin-left:calc(33.33333% + .9375rem)}.medium-offset-5{margin-left:41.6666666667%}.grid-margin-x>.medium-offset-5{margin-left:calc(41.66667% + .9375rem)}.medium-offset-6{margin-left:50%}.grid-margin-x>.medium-offset-6{margin-left:calc(50% + .9375rem)}.medium-offset-7{margin-left:58.3333333333%}.grid-margin-x>.medium-offset-7{margin-left:calc(58.33333% + .9375rem)}.medium-offset-8{margin-left:66.6666666667%}.grid-margin-x>.medium-offset-8{margin-left:calc(66.66667% + .9375rem)}.medium-offset-9{margin-left:75%}.grid-margin-x>.medium-offset-9{margin-left:calc(75% + .9375rem)}.medium-offset-10{margin-left:83.3333333333%}.grid-margin-x>.medium-offset-10{margin-left:calc(83.33333% + .9375rem)}.medium-offset-11{margin-left:91.6666666667%}.grid-margin-x>.medium-offset-11{margin-left:calc(91.66667% + .9375rem)}}@media print,screen and (min-width:64em){.large-offset-0{margin-left:0}.grid-margin-x>.large-offset-0{margin-left:.9375rem}.large-offset-1{margin-left:8.3333333333%}.grid-margin-x>.large-offset-1{margin-left:calc(8.33333% + .9375rem)}.large-offset-2{margin-left:16.6666666667%}.grid-margin-x>.large-offset-2{margin-left:calc(16.66667% + .9375rem)}.large-offset-3{margin-left:25%}.grid-margin-x>.large-offset-3{margin-left:calc(25% + .9375rem)}.large-offset-4{margin-left:33.3333333333%}.grid-margin-x>.large-offset-4{margin-left:calc(33.33333% + .9375rem)}.large-offset-5{margin-left:41.6666666667%}.grid-margin-x>.large-offset-5{margin-left:calc(41.66667% + .9375rem)}.large-offset-6{margin-left:50%}.grid-margin-x>.large-offset-6{margin-left:calc(50% + .9375rem)}.large-offset-7{margin-left:58.3333333333%}.grid-margin-x>.large-offset-7{margin-left:calc(58.33333% + .9375rem)}.large-offset-8{margin-left:66.6666666667%}.grid-margin-x>.large-offset-8{margin-left:calc(66.66667% + .9375rem)}.large-offset-9{margin-left:75%}.grid-margin-x>.large-offset-9{margin-left:calc(75% + .9375rem)}.large-offset-10{margin-left:83.3333333333%}.grid-margin-x>.large-offset-10{margin-left:calc(83.33333% + .9375rem)}.large-offset-11{margin-left:91.6666666667%}.grid-margin-x>.large-offset-11{margin-left:calc(91.66667% + .9375rem)}}.grid-y{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.grid-y>.cell{height:auto;max-height:none}.grid-y>.auto,.grid-y>.shrink{height:auto}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-full,.grid-y>.small-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-full,.grid-y>.medium-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-full,.grid-y>.large-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.small-1{height:8.3333333333%}.grid-y>.small-2{height:16.6666666667%}.grid-y>.small-3{height:25%}.grid-y>.small-4{height:33.3333333333%}.grid-y>.small-5{height:41.6666666667%}.grid-y>.small-6{height:50%}.grid-y>.small-7{height:58.3333333333%}.grid-y>.small-8{height:66.6666666667%}.grid-y>.small-9{height:75%}.grid-y>.small-10{height:83.3333333333%}.grid-y>.small-11{height:91.6666666667%}.grid-y>.small-12{height:100%}@media print,screen and (min-width:40em){.grid-y>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.medium-shrink{height:auto}.grid-y>.medium-1{height:8.3333333333%}.grid-y>.medium-2{height:16.6666666667%}.grid-y>.medium-3{height:25%}.grid-y>.medium-4{height:33.3333333333%}.grid-y>.medium-5{height:41.6666666667%}.grid-y>.medium-6{height:50%}.grid-y>.medium-7{height:58.3333333333%}.grid-y>.medium-8{height:66.6666666667%}.grid-y>.medium-9{height:75%}.grid-y>.medium-10{height:83.3333333333%}.grid-y>.medium-11{height:91.6666666667%}.grid-y>.medium-12{height:100%}}@media print,screen and (min-width:64em){.grid-y>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.large-shrink{height:auto}.grid-y>.large-1{height:8.3333333333%}.grid-y>.large-2{height:16.6666666667%}.grid-y>.large-3{height:25%}.grid-y>.large-4{height:33.3333333333%}.grid-y>.large-5{height:41.6666666667%}.grid-y>.large-6{height:50%}.grid-y>.large-7{height:58.3333333333%}.grid-y>.large-8{height:66.6666666667%}.grid-y>.large-9{height:75%}.grid-y>.large-10{height:83.3333333333%}.grid-y>.large-11{height:91.6666666667%}.grid-y>.large-12{height:100%}}.grid-padding-y .grid-padding-y{margin-bottom:-.625rem;margin-top:-.625rem}@media print,screen and (min-width:40em){.grid-padding-y .grid-padding-y{margin-bottom:-.9375rem;margin-top:-.9375rem}}.grid-padding-y>.cell{padding-bottom:.625rem;padding-top:.625rem}@media print,screen and (min-width:40em){.grid-padding-y>.cell{padding-bottom:.9375rem;padding-top:.9375rem}}.grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .grid-frame{width:100%}.cell-block{max-width:100%;overflow-x:auto}.cell-block,.cell-block-y{-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.cell-block-y{max-height:100%;min-height:100%;overflow-y:auto}.cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}@media print,screen and (min-width:40em){.medium-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .medium-grid-frame{width:100%}.medium-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.medium-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.medium-cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.medium-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media print,screen and (min-width:64em){.large-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .large-grid-frame{width:100%}.large-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.large-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.large-cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.large-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}.grid-y.grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}@media print,screen and (min-width:40em){.grid-y.medium-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}@media print,screen and (min-width:64em){.grid-y.large-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}.cell .grid-y.grid-frame{height:100%}@media print,screen and (min-width:40em){.cell .grid-y.medium-grid-frame{height:100%}}@media print,screen and (min-width:64em){.cell .grid-y.large-grid-frame{height:100%}}.grid-margin-y{margin-bottom:-.625rem;margin-top:-.625rem}@media print,screen and (min-width:40em){.grid-margin-y{margin-bottom:-.9375rem;margin-top:-.9375rem}}.grid-margin-y>.cell{height:calc(100% - 1.25rem);margin-bottom:.625rem;margin-top:.625rem}@media print,screen and (min-width:40em){.grid-margin-y>.cell{height:calc(100% - 1.875rem);margin-bottom:.9375rem;margin-top:.9375rem}}.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.25rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.25rem)}.grid-margin-y>.small-3{height:calc(25% - 1.25rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.25rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.25rem)}.grid-margin-y>.small-6{height:calc(50% - 1.25rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.25rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.25rem)}.grid-margin-y>.small-9{height:calc(75% - 1.25rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.25rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.25rem)}.grid-margin-y>.small-12{height:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.small-3{height:calc(25% - 1.875rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.small-6{height:calc(50% - 1.875rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.small-9{height:calc(75% - 1.875rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.small-12{height:calc(100% - 1.875rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.875rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.875rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.875rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-y>.large-auto,.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.large-3{height:calc(25% - 1.875rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.large-6{height:calc(50% - 1.875rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.large-9{height:calc(75% - 1.875rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.large-12{height:calc(100% - 1.875rem)}}.grid-frame.grid-margin-y{height:calc(100vh + 1.25rem)}@media print,screen and (min-width:40em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:64em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:40em){.grid-margin-y.medium-grid-frame{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-y.large-grid-frame{height:calc(100vh + 1.875rem)}}.button{-webkit-appearance:none;border:1px solid transparent;border-radius:0;cursor:pointer;display:inline-block;font-family:inherit;font-size:.9rem;line-height:1;margin:0 0 1rem;padding:.85em 1em;text-align:center;-webkit-transition:background-color .25s ease-out,color .25s ease-out;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle}[data-whatinput=mouse] .button{outline:0}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;margin-left:0;margin-right:0;width:100%}.button,.button.disabled,.button.disabled:focus,.button.disabled:hover,.button[disabled],.button[disabled]:focus,.button[disabled]:hover{background-color:#1779ba;color:#fefefe}.button:focus,.button:hover{background-color:#14679e;color:#fefefe}.button.primary,.button.primary.disabled,.button.primary.disabled:focus,.button.primary.disabled:hover,.button.primary[disabled],.button.primary[disabled]:focus,.button.primary[disabled]:hover{background-color:#1779ba;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#126195;color:#fefefe}.button.secondary,.button.secondary.disabled,.button.secondary.disabled:focus,.button.secondary.disabled:hover,.button.secondary[disabled],.button.secondary[disabled]:focus,.button.secondary[disabled]:hover{background-color:#767676;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5e5e5e;color:#fefefe}.button.success,.button.success.disabled,.button.success.disabled:focus,.button.success.disabled:hover,.button.success[disabled],.button.success[disabled]:focus,.button.success[disabled]:hover{background-color:#3adb76;color:#0a0a0a}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#0a0a0a}.button.warning,.button.warning.disabled,.button.warning.disabled:focus,.button.warning.disabled:hover,.button.warning[disabled],.button.warning[disabled]:focus,.button.warning[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#0a0a0a}.button.alert,.button.alert.disabled,.button.alert.disabled:focus,.button.alert.disabled:hover,.button.alert[disabled],.button.alert[disabled]:focus,.button.alert[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#a53b2a;color:#fefefe}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow:focus,.button.hollow:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{background-color:transparent}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button.hollow:focus,.button.hollow:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.primary,.button.hollow.primary.disabled,.button.hollow.primary.disabled:focus,.button.hollow.primary.disabled:hover,.button.hollow.primary[disabled],.button.hollow.primary[disabled]:focus,.button.hollow.primary[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.secondary,.button.hollow.secondary.disabled,.button.hollow.secondary.disabled:focus,.button.hollow.secondary.disabled:hover,.button.hollow.secondary[disabled],.button.hollow.secondary[disabled]:focus,.button.hollow.secondary[disabled]:hover{border:1px solid #767676;color:#767676}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3b3b3b;color:#3b3b3b}.button.hollow.success,.button.hollow.success.disabled,.button.hollow.success.disabled:focus,.button.hollow.success.disabled:hover,.button.hollow.success[disabled],.button.hollow.success[disabled]:focus,.button.hollow.success[disabled]:hover{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning,.button.hollow.warning.disabled,.button.hollow.warning.disabled:focus,.button.hollow.warning.disabled:hover,.button.hollow.warning[disabled],.button.hollow.warning[disabled]:focus,.button.hollow.warning[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert,.button.hollow.alert.disabled,.button.hollow.alert.disabled:focus,.button.hollow.alert.disabled:hover,.button.hollow.alert[disabled],.button.hollow.alert[disabled]:focus,.button.hollow.alert[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#67251a;color:#67251a}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear:focus,.button.clear:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{background-color:transparent;border-color:transparent}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{color:#1779ba}.button.clear:focus,.button.clear:hover{color:#0c3d5d}.button.clear.primary,.button.clear.primary.disabled,.button.clear.primary.disabled:focus,.button.clear.primary.disabled:hover,.button.clear.primary[disabled],.button.clear.primary[disabled]:focus,.button.clear.primary[disabled]:hover{color:#1779ba}.button.clear.primary:focus,.button.clear.primary:hover{color:#0c3d5d}.button.clear.secondary,.button.clear.secondary.disabled,.button.clear.secondary.disabled:focus,.button.clear.secondary.disabled:hover,.button.clear.secondary[disabled],.button.clear.secondary[disabled]:focus,.button.clear.secondary[disabled]:hover{color:#767676}.button.clear.secondary:focus,.button.clear.secondary:hover{color:#3b3b3b}.button.clear.success,.button.clear.success.disabled,.button.clear.success.disabled:focus,.button.clear.success.disabled:hover,.button.clear.success[disabled],.button.clear.success[disabled]:focus,.button.clear.success[disabled]:hover{color:#3adb76}.button.clear.success:focus,.button.clear.success:hover{color:#157539}.button.clear.warning,.button.clear.warning.disabled,.button.clear.warning.disabled:focus,.button.clear.warning.disabled:hover,.button.clear.warning[disabled],.button.clear.warning[disabled]:focus,.button.clear.warning[disabled]:hover{color:#ffae00}.button.clear.warning:focus,.button.clear.warning:hover{color:#805700}.button.clear.alert,.button.clear.alert.disabled,.button.clear.alert.disabled:focus,.button.clear.alert.disabled:hover,.button.clear.alert[disabled],.button.clear.alert[disabled]:focus,.button.clear.alert[disabled]:hover{color:#cc4b37}.button.clear.alert:focus,.button.clear.alert:hover{color:#67251a}.button.disabled,.button[disabled]{cursor:not-allowed;opacity:.25}.button.dropdown:after{border-color:#fefefe transparent transparent;border-style:solid;border-width:.4em .4em 0;content:"";display:block;display:inline-block;float:right;height:0;margin-left:1em;position:relative;top:.4em;width:0}.button.dropdown.clear.primary:after,.button.dropdown.clear:after,.button.dropdown.hollow.primary:after,.button.dropdown.hollow:after{border-top-color:#1779ba}.button.dropdown.clear.secondary:after,.button.dropdown.hollow.secondary:after{border-top-color:#767676}.button.dropdown.clear.success:after,.button.dropdown.hollow.success:after{border-top-color:#3adb76}.button.dropdown.clear.warning:after,.button.dropdown.hollow.warning:after{border-top-color:#ffae00}.button.dropdown.clear.alert:after,.button.dropdown.hollow.alert:after{border-top-color:#cc4b37}.button.arrow-only:after{float:none;margin-left:0;top:-.1em}a.button:focus,a.button:hover{text-decoration:none}.button-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1rem;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.button-group:after,.button-group:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.button-group:after{clear:both}.button-group:after,.button-group:before{display:none}.button-group .button{font-size:.9rem;margin:0 1px 1px 0;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.button-group.primary .button,.button-group.primary .button.disabled,.button-group.primary .button.disabled:focus,.button-group.primary .button.disabled:hover,.button-group.primary .button[disabled],.button-group.primary .button[disabled]:focus,.button-group.primary .button[disabled]:hover{background-color:#1779ba;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#126195;color:#fefefe}.button-group.secondary .button,.button-group.secondary .button.disabled,.button-group.secondary .button.disabled:focus,.button-group.secondary .button.disabled:hover,.button-group.secondary .button[disabled],.button-group.secondary .button[disabled]:focus,.button-group.secondary .button[disabled]:hover{background-color:#767676;color:#fefefe}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#5e5e5e;color:#fefefe}.button-group.success .button,.button-group.success .button.disabled,.button-group.success .button.disabled:focus,.button-group.success .button.disabled:hover,.button-group.success .button[disabled],.button-group.success .button[disabled]:focus,.button-group.success .button[disabled]:hover{background-color:#3adb76;color:#0a0a0a}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#22bb5b;color:#0a0a0a}.button-group.warning .button,.button-group.warning .button.disabled,.button-group.warning .button.disabled:focus,.button-group.warning .button.disabled:hover,.button-group.warning .button[disabled],.button-group.warning .button[disabled]:focus,.button-group.warning .button[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button,.button-group.alert .button.disabled,.button-group.alert .button.disabled:focus,.button-group.alert .button.disabled:hover,.button-group.alert .button[disabled],.button-group.alert .button[disabled]:focus,.button-group.alert .button[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#a53b2a;color:#fefefe}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button:focus,.button-group.hollow .button:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{background-color:transparent}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button-group.hollow .button:focus,.button-group.hollow .button:hover{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow .button.primary,.button-group.hollow .button.primary.disabled,.button-group.hollow .button.primary.disabled:focus,.button-group.hollow .button.primary.disabled:hover,.button-group.hollow .button.primary[disabled],.button-group.hollow .button.primary[disabled]:focus,.button-group.hollow .button.primary[disabled]:hover,.button-group.hollow.primary .button,.button-group.hollow.primary .button.disabled,.button-group.hollow.primary .button.disabled:focus,.button-group.hollow.primary .button.disabled:hover,.button-group.hollow.primary .button[disabled],.button-group.hollow.primary .button[disabled]:focus,.button-group.hollow.primary .button[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button-group.hollow .button.primary:focus,.button-group.hollow .button.primary:hover,.button-group.hollow.primary .button:focus,.button-group.hollow.primary .button:hover{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow .button.secondary,.button-group.hollow .button.secondary.disabled,.button-group.hollow .button.secondary.disabled:focus,.button-group.hollow .button.secondary.disabled:hover,.button-group.hollow .button.secondary[disabled],.button-group.hollow .button.secondary[disabled]:focus,.button-group.hollow .button.secondary[disabled]:hover,.button-group.hollow.secondary .button,.button-group.hollow.secondary .button.disabled,.button-group.hollow.secondary .button.disabled:focus,.button-group.hollow.secondary .button.disabled:hover,.button-group.hollow.secondary .button[disabled],.button-group.hollow.secondary .button[disabled]:focus,.button-group.hollow.secondary .button[disabled]:hover{border:1px solid #767676;color:#767676}.button-group.hollow .button.secondary:focus,.button-group.hollow .button.secondary:hover,.button-group.hollow.secondary .button:focus,.button-group.hollow.secondary .button:hover{border-color:#3b3b3b;color:#3b3b3b}.button-group.hollow .button.success,.button-group.hollow .button.success.disabled,.button-group.hollow .button.success.disabled:focus,.button-group.hollow .button.success.disabled:hover,.button-group.hollow .button.success[disabled],.button-group.hollow .button.success[disabled]:focus,.button-group.hollow .button.success[disabled]:hover,.button-group.hollow.success .button,.button-group.hollow.success .button.disabled,.button-group.hollow.success .button.disabled:focus,.button-group.hollow.success .button.disabled:hover,.button-group.hollow.success .button[disabled],.button-group.hollow.success .button[disabled]:focus,.button-group.hollow.success .button[disabled]:hover{border:1px solid #3adb76;color:#3adb76}.button-group.hollow .button.success:focus,.button-group.hollow .button.success:hover,.button-group.hollow.success .button:focus,.button-group.hollow.success .button:hover{border-color:#157539;color:#157539}.button-group.hollow .button.warning,.button-group.hollow .button.warning.disabled,.button-group.hollow .button.warning.disabled:focus,.button-group.hollow .button.warning.disabled:hover,.button-group.hollow .button.warning[disabled],.button-group.hollow .button.warning[disabled]:focus,.button-group.hollow .button.warning[disabled]:hover,.button-group.hollow.warning .button,.button-group.hollow.warning .button.disabled,.button-group.hollow.warning .button.disabled:focus,.button-group.hollow.warning .button.disabled:hover,.button-group.hollow.warning .button[disabled],.button-group.hollow.warning .button[disabled]:focus,.button-group.hollow.warning .button[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button-group.hollow .button.warning:focus,.button-group.hollow .button.warning:hover,.button-group.hollow.warning .button:focus,.button-group.hollow.warning .button:hover{border-color:#805700;color:#805700}.button-group.hollow .button.alert,.button-group.hollow .button.alert.disabled,.button-group.hollow .button.alert.disabled:focus,.button-group.hollow .button.alert.disabled:hover,.button-group.hollow .button.alert[disabled],.button-group.hollow .button.alert[disabled]:focus,.button-group.hollow .button.alert[disabled]:hover,.button-group.hollow.alert .button,.button-group.hollow.alert .button.disabled,.button-group.hollow.alert .button.disabled:focus,.button-group.hollow.alert .button.disabled:hover,.button-group.hollow.alert .button[disabled],.button-group.hollow.alert .button[disabled]:focus,.button-group.hollow.alert .button[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button-group.hollow .button.alert:focus,.button-group.hollow .button.alert:hover,.button-group.hollow.alert .button:focus,.button-group.hollow.alert .button:hover{border-color:#67251a;color:#67251a}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button:focus,.button-group.clear .button:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{background-color:transparent;border-color:transparent}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{color:#1779ba}.button-group.clear .button:focus,.button-group.clear .button:hover{color:#0c3d5d}.button-group.clear .button.primary,.button-group.clear .button.primary.disabled,.button-group.clear .button.primary.disabled:focus,.button-group.clear .button.primary.disabled:hover,.button-group.clear .button.primary[disabled],.button-group.clear .button.primary[disabled]:focus,.button-group.clear .button.primary[disabled]:hover,.button-group.clear.primary .button,.button-group.clear.primary .button.disabled,.button-group.clear.primary .button.disabled:focus,.button-group.clear.primary .button.disabled:hover,.button-group.clear.primary .button[disabled],.button-group.clear.primary .button[disabled]:focus,.button-group.clear.primary .button[disabled]:hover{color:#1779ba}.button-group.clear .button.primary:focus,.button-group.clear .button.primary:hover,.button-group.clear.primary .button:focus,.button-group.clear.primary .button:hover{color:#0c3d5d}.button-group.clear .button.secondary,.button-group.clear .button.secondary.disabled,.button-group.clear .button.secondary.disabled:focus,.button-group.clear .button.secondary.disabled:hover,.button-group.clear .button.secondary[disabled],.button-group.clear .button.secondary[disabled]:focus,.button-group.clear .button.secondary[disabled]:hover,.button-group.clear.secondary .button,.button-group.clear.secondary .button.disabled,.button-group.clear.secondary .button.disabled:focus,.button-group.clear.secondary .button.disabled:hover,.button-group.clear.secondary .button[disabled],.button-group.clear.secondary .button[disabled]:focus,.button-group.clear.secondary .button[disabled]:hover{color:#767676}.button-group.clear .button.secondary:focus,.button-group.clear .button.secondary:hover,.button-group.clear.secondary .button:focus,.button-group.clear.secondary .button:hover{color:#3b3b3b}.button-group.clear .button.success,.button-group.clear .button.success.disabled,.button-group.clear .button.success.disabled:focus,.button-group.clear .button.success.disabled:hover,.button-group.clear .button.success[disabled],.button-group.clear .button.success[disabled]:focus,.button-group.clear .button.success[disabled]:hover,.button-group.clear.success .button,.button-group.clear.success .button.disabled,.button-group.clear.success .button.disabled:focus,.button-group.clear.success .button.disabled:hover,.button-group.clear.success .button[disabled],.button-group.clear.success .button[disabled]:focus,.button-group.clear.success .button[disabled]:hover{color:#3adb76}.button-group.clear .button.success:focus,.button-group.clear .button.success:hover,.button-group.clear.success .button:focus,.button-group.clear.success .button:hover{color:#157539}.button-group.clear .button.warning,.button-group.clear .button.warning.disabled,.button-group.clear .button.warning.disabled:focus,.button-group.clear .button.warning.disabled:hover,.button-group.clear .button.warning[disabled],.button-group.clear .button.warning[disabled]:focus,.button-group.clear .button.warning[disabled]:hover,.button-group.clear.warning .button,.button-group.clear.warning .button.disabled,.button-group.clear.warning .button.disabled:focus,.button-group.clear.warning .button.disabled:hover,.button-group.clear.warning .button[disabled],.button-group.clear.warning .button[disabled]:focus,.button-group.clear.warning .button[disabled]:hover{color:#ffae00}.button-group.clear .button.warning:focus,.button-group.clear .button.warning:hover,.button-group.clear.warning .button:focus,.button-group.clear.warning .button:hover{color:#805700}.button-group.clear .button.alert,.button-group.clear .button.alert.disabled,.button-group.clear .button.alert.disabled:focus,.button-group.clear .button.alert.disabled:hover,.button-group.clear .button.alert[disabled],.button-group.clear .button.alert[disabled]:focus,.button-group.clear .button.alert[disabled]:hover,.button-group.clear.alert .button,.button-group.clear.alert .button.disabled,.button-group.clear.alert .button.disabled:focus,.button-group.clear.alert .button.disabled:hover,.button-group.clear.alert .button[disabled],.button-group.clear.alert .button[disabled]:focus,.button-group.clear.alert .button[disabled]:hover{color:#cc4b37}.button-group.clear .button.alert:focus,.button-group.clear .button.alert:hover,.button-group.clear.alert .button:focus,.button-group.clear.alert .button:hover{color:#67251a}.button-group.no-gaps .button{margin-right:-.0625rem}.button-group.no-gaps .button+.button{border-left-color:transparent}.button-group.stacked,.button-group.stacked-for-medium,.button-group.stacked-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.button-group.stacked .button,.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%}.button-group.stacked .button:last-child,.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child{margin-bottom:0}.button-group.stacked-for-medium.expanded .button,.button-group.stacked-for-small.expanded .button,.button-group.stacked.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}@media print,screen and (min-width:40em){.button-group.stacked-for-small .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (min-width:64em){.button-group.stacked-for-medium .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (max-width:39.99875em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}@media print,screen and (max-width:63.99875em){.button-group.stacked-for-medium.expanded{display:block}.button-group.stacked-for-medium.expanded .button{display:block;margin-right:0}}.close-button{color:#8a8a8a;cursor:pointer;position:absolute;z-index:10}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.close-button.small{font-size:1.5em;line-height:1;right:.66rem;top:.33em}.close-button,.close-button.medium{font-size:2em;line-height:1;right:1rem;top:.5rem}.label{border-radius:0;cursor:default;display:inline-block;font-size:.8rem;line-height:1;padding:.33333rem .5rem;white-space:nowrap}.label,.label.primary{background:#1779ba;color:#fefefe}.label.secondary{background:#767676;color:#fefefe}.label.success{background:#3adb76;color:#0a0a0a}.label.warning{background:#ffae00;color:#0a0a0a}.label.alert{background:#cc4b37;color:#fefefe}.progress{background-color:#cacaca;border-radius:0;height:1rem;margin-bottom:1rem}.progress.primary .progress-meter{background-color:#1779ba}.progress.secondary .progress-meter{background-color:#767676}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#cc4b37}.progress-meter{background-color:#1779ba;display:block;height:100%;position:relative;width:0}.progress-meter-text{color:#fefefe;font-size:.75rem;font-weight:700;left:50%;margin:0;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);white-space:nowrap}.slider{background-color:#e6e6e6;cursor:pointer;height:.5rem;margin-bottom:2.25rem;margin-top:1.25rem;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.slider-fill{background-color:#cacaca;display:inline-block;height:.5rem;left:0;max-width:100%;position:absolute;top:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.slider-fill.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider-handle{background-color:#1779ba;border-radius:0;cursor:-webkit-grab;cursor:grab;display:inline-block;height:1.4rem;left:0;position:absolute;top:50%;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;width:1.4rem;z-index:1}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#14679e}.slider-handle.is-dragging{cursor:-webkit-grabbing;cursor:grabbing;-webkit-transition:all 0s linear;transition:all 0s linear}.slider.disabled,.slider[disabled]{cursor:not-allowed;opacity:.25}.slider.vertical{display:inline-block;height:12.5rem;margin:0 1.25rem;-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);width:.5rem}.slider.vertical .slider-fill{max-height:100%;top:0;width:.5rem}.slider.vertical .slider-handle{height:1.4rem;left:50%;position:absolute;top:0;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:1.4rem}.switch{color:#fefefe;font-size:.875rem;font-weight:700;height:2rem;margin-bottom:1rem;outline:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-input{margin-bottom:0;opacity:0;position:absolute}.switch-paddle{background:#cacaca;border-radius:0;color:inherit;cursor:pointer;display:block;font-weight:inherit;height:2rem;position:relative;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:4rem}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;border-radius:0;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:1.5rem}input:checked~.switch-paddle{background:#1779ba}input:checked~.switch-paddle:after{left:2.25rem}input:disabled~.switch-paddle{cursor:not-allowed;opacity:.5}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{display:none;left:8%}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{font-size:.625rem;height:1.5rem;width:3rem}.switch.tiny .switch-paddle:after{height:1rem;left:.25rem;top:.25rem;width:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{font-size:.75rem;height:1.75rem;width:3.5rem}.switch.small .switch-paddle:after{height:1.25rem;left:.25rem;top:.25rem;width:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{font-size:1rem;height:2.5rem;width:5rem}.switch.large .switch-paddle:after{height:2rem;left:.25rem;top:.25rem;width:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{border-collapse:collapse;border-radius:0;margin-bottom:1rem;width:100%}tbody,tfoot,thead{background-color:#fefefe;border:1px solid #f1f1f1}caption{font-weight:700;padding:.5rem .625rem .625rem}thead{background:#f8f8f8}tfoot,thead{color:#0a0a0a}tfoot{background:#f1f1f1}tfoot tr,thead tr{background:0 0}tfoot td,tfoot th,thead td,thead th{font-weight:700;padding:.5rem .625rem .625rem;text-align:left}tbody td,tbody th{padding:.5rem .625rem .625rem}tbody tr:nth-child(2n){background-color:#f1f1f1;border-bottom:0}table.unstriped tbody{background-color:#fefefe}table.unstriped tbody tr{background-color:#fefefe;border-bottom:1px solid #f1f1f1}@media print,screen and (max-width:63.99875em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;overflow-x:auto;width:100%}table.hover thead tr:hover{background-color:#f3f3f3}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f9f9}table.hover:not(.unstriped) tr:nth-of-type(2n):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.badge{border-radius:50%;display:inline-block;font-size:.6rem;min-width:2.1em;padding:.3em;text-align:center}.badge,.badge.primary{background:#1779ba;color:#fefefe}.badge.secondary{background:#767676;color:#fefefe}.badge.success{background:#3adb76;color:#0a0a0a}.badge.warning{background:#ffae00;color:#0a0a0a}.badge.alert{background:#cc4b37;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.breadcrumbs:after{clear:both}.breadcrumbs li{color:#0a0a0a;cursor:default;float:left;font-size:.6875rem;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"/";margin:0 .75rem;opacity:1;position:relative}.breadcrumbs a{color:#1779ba}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.callout{background-color:#fff;border:1px solid hsla(0,0%,4%,.25);border-radius:0;color:#0a0a0a;margin:0 0 1rem;padding:1rem;position:relative}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#d7ecfa;color:#0a0a0a}.callout.secondary{background-color:#eaeaea;color:#0a0a0a}.callout.success{background-color:#e1faea;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding:.5rem}.callout.large{padding:3rem}.card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;background:#fefefe;border:1px solid #e6e6e6;border-radius:0;-webkit-box-shadow:none;box-shadow:none;color:#0a0a0a;flex-grow:1;margin-bottom:1rem;overflow:hidden}.card>:last-child{margin-bottom:0}.card-divider{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;background:#e6e6e6;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;padding:1rem}.card-divider>:last-child{margin-bottom:0}.card-section{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;padding:1rem}.card-section>:last-child{margin-bottom:0}.card-image{min-height:1px}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:none;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:10}.dropdown-pane.is-opening{display:block}.dropdown-pane.is-open{display:block;visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.pagination{margin-bottom:1rem;margin-left:0}.pagination:after,.pagination:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.pagination:after{clear:both}.pagination li{border-radius:0;display:none;font-size:.875rem;margin-right:.0625rem}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media print,screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{border-radius:0;color:#0a0a0a;display:block;padding:.1875rem .625rem}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{background:#1779ba;color:#fefefe;cursor:default;padding:.1875rem .625rem}.pagination .disabled{color:#cacaca;cursor:not-allowed;padding:.1875rem .625rem}.pagination .disabled:hover{background:0 0}.pagination .ellipsis:after{color:#0a0a0a;content:"…";padding:.1875rem .625rem}.pagination-previous a:before,.pagination-previous.disabled:before{content:"«";display:inline-block;margin-right:.5rem}.pagination-next a:after,.pagination-next.disabled:after{content:"»";display:inline-block;margin-left:.5rem}.has-tip{border-bottom:1px dotted #8a8a8a;cursor:help;display:inline-block;font-weight:700;position:relative}.tooltip{background-color:#0a0a0a;border-radius:0;color:#fefefe;font-size:80%;max-width:10rem;padding:.75rem;top:calc(100% + .6495rem);z-index:1200}.tooltip,.tooltip:before{position:absolute}.tooltip.bottom:before{border-color:transparent transparent #0a0a0a;border-style:solid;border-width:0 .75rem .75rem;bottom:100%;content:"";display:block;height:0;width:0}.tooltip.bottom.align-center:before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem 0;bottom:auto;content:"";display:block;height:0;top:100%;width:0}.tooltip.top.align-center:before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-style:solid;border-width:.75rem 0 .75rem .75rem;content:"";display:block;height:0;left:100%;width:0}.tooltip.left.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem .75rem 0;content:"";display:block;height:0;left:auto;right:100%;width:0}.tooltip.right.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.align-top:before{bottom:auto;top:10%}.tooltip.align-bottom:before{bottom:10%;top:auto}.tooltip.align-left:before{left:10%;right:auto}.tooltip.align-right:before{left:auto;right:10%}.accordion{background:#fefefe;list-style-type:none;margin-left:0}.accordion[disabled] .accordion-title{cursor:not-allowed}.accordion-item:first-child>:first-child,.accordion-item:last-child>:last-child{border-radius:0}.accordion-title{border:1px solid #e6e6e6;border-bottom:0;color:#1779ba;display:block;font-size:.75rem;line-height:1;padding:1.25rem 1rem;position:relative}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:"+";margin-top:-.5rem;position:absolute;right:1rem;top:50%}.is-active>.accordion-title:before{content:"–"}.accordion-content{background-color:#fefefe;border:1px solid #e6e6e6;border-bottom:0;color:#0a0a0a;display:none;padding:1rem}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.media-object{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;margin-bottom:1rem}.media-object img{max-width:none}@media print,screen and (max-width:39.99875em){.media-object.stack-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.media-object-section{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}@media print,screen and (max-width:39.99875em){.stack-for-small .media-object-section{-webkit-flex-basis:100%;padding:0 0 1rem;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.stack-for-small .media-object-section img{width:100%}}.media-object-section.main-section{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.orbit,.orbit-container{position:relative}.orbit-container{height:0;list-style:none;margin:0;overflow:hidden}.orbit-slide{position:absolute;width:100%}.orbit-slide.no-motionui.is-active{left:0;top:0}.orbit-figure{margin:0}.orbit-image{margin:0;max-width:100%;width:100%}.orbit-caption{background-color:hsla(0,0%,4%,.5);bottom:0;margin-bottom:0;width:100%}.orbit-caption,.orbit-next,.orbit-previous{color:#fefefe;padding:1rem;position:absolute}.orbit-next,.orbit-previous{top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:10}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{margin-bottom:.8rem;margin-top:.8rem;position:relative;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{background-color:#cacaca;border-radius:50%;height:1.2rem;margin:.1rem;width:1.2rem}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.flex-video,.responsive-embed{height:0;margin-bottom:1rem;overflow:hidden;padding-bottom:75%;position:relative}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video,.responsive-embed embed,.responsive-embed iframe,.responsive-embed object,.responsive-embed video{height:100%;left:0;position:absolute;top:0;width:100%}.flex-video.widescreen,.responsive-embed.widescreen{padding-bottom:56.25%}.tabs{background:#fefefe;border:1px solid #e6e6e6;list-style-type:none;margin:0}.tabs:after,.tabs:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.tabs:after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:0 0}.tabs.primary{background:#1779ba}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#1673b1}.tabs-title{float:left}.tabs-title>a{color:#1779ba;display:block;font-size:.75rem;line-height:1;padding:1.25rem 1.5rem}[data-whatinput=mouse] .tabs-title>a{outline:0}.tabs-title>a:hover{background:#fefefe;color:#1468a0}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6;color:#1779ba}.tabs-content{background:#fefefe;border:1px solid #e6e6e6;border-top:0;color:#0a0a0a;-webkit-transition:all .5s ease;transition:all .5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;border-radius:0;-webkit-box-shadow:0 0 0 1px hsla(0,0%,4%,.2);box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;margin-bottom:1rem;max-width:100%}a.thumbnail{-webkit-transition:-webkit-box-shadow .2s ease-out;transition:-webkit-box-shadow .2s ease-out;transition:box-shadow .2s ease-out;transition:box-shadow .2s ease-out,-webkit-box-shadow .2s ease-out}a.thumbnail:focus,a.thumbnail:hover{-webkit-box-shadow:0 0 6px 1px rgba(23,121,186,.5);box-shadow:0 0 6px 1px rgba(23,121,186,.5)}a.thumbnail image{-webkit-box-shadow:none;box-shadow:none}.menu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:0;padding:0;position:relative}[data-whatinput=mouse] .menu li{outline:0}.menu .button,.menu a{display:block;line-height:1;padding:.7rem 1rem;text-decoration:none}.menu a,.menu button,.menu input,.menu select{margin-bottom:0}.menu input{display:inline-block}.menu,.menu.horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.vertical.icon-bottom li a i,.menu.vertical.icon-bottom li a img,.menu.vertical.icon-bottom li a svg,.menu.vertical.icon-top li a i,.menu.vertical.icon-top li a img,.menu.vertical.icon-top li a svg{text-align:left}.menu.expanded li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.menu.expanded.icon-bottom li a i,.menu.expanded.icon-bottom li a img,.menu.expanded.icon-bottom li a svg,.menu.expanded.icon-top li a i,.menu.expanded.icon-top li a img,.menu.expanded.icon-top li a svg{text-align:left}.menu.simple{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.menu.simple li+li{margin-left:1rem}.menu.simple a{padding:0}@media print,screen and (min-width:40em){.menu.medium-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.medium-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.medium-expanded li,.menu.medium-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}@media print,screen and (min-width:64em){.menu.large-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.large-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.large-expanded li,.menu.large-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}.menu.nested{margin-left:1rem;margin-right:0}.menu.icon-bottom a,.menu.icon-left a,.menu.icon-right a,.menu.icon-top a,.menu.icons a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu.icon-left li a,.menu.nested.icon-left li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-left li a i,.menu.icon-left li a img,.menu.icon-left li a svg,.menu.nested.icon-left li a i,.menu.nested.icon-left li a img,.menu.nested.icon-left li a svg{margin-right:.25rem}.menu.icon-right li a,.menu.nested.icon-right li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-right li a i,.menu.icon-right li a img,.menu.icon-right li a svg,.menu.nested.icon-right li a i,.menu.nested.icon-right li a img,.menu.nested.icon-right li a svg{margin-left:.25rem}.menu.icon-top li a,.menu.nested.icon-top li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-top li a i,.menu.icon-top li a img,.menu.icon-top li a svg,.menu.nested.icon-top li a i,.menu.nested.icon-top li a img,.menu.nested.icon-top li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu.icon-bottom li a,.menu.nested.icon-bottom li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-bottom li a i,.menu.icon-bottom li a img,.menu.icon-bottom li a svg,.menu.nested.icon-bottom li a i,.menu.nested.icon-bottom li a img,.menu.nested.icon-bottom li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu .active>a,.menu .is-active>a{background:#1779ba;color:#fefefe}.menu.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.menu.align-right li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right.vertical li{display:block;text-align:right}.menu.align-right.icon-bottom li a i,.menu.align-right.icon-bottom li a img,.menu.align-right.icon-bottom li a svg,.menu.align-right.icon-top li a i,.menu.align-right.icon-top li a img,.menu.align-right.icon-top li a svg,.menu.align-right.vertical li .submenu li{text-align:right}.menu.align-right .nested{margin-left:0;margin-right:1rem}.menu.align-center li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu.align-center li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu .menu-text{color:inherit;font-weight:700;line-height:1;padding:.7rem 1rem}.menu-centered>.menu,.menu-centered>.menu li{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu-centered>.menu li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu-centered>.menu li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.no-js [data-responsive-menu] ul{display:none}.menu-icon{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon:after{background:#fefefe;-webkit-box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon:hover:after{background:#cacaca;-webkit-box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.menu-icon.dark{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon.dark:after{background:#0a0a0a;-webkit-box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon.dark:hover:after{background:#8a8a8a;-webkit-box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.accordion-menu li{width:100%}.accordion-menu .is-accordion-submenu a,.accordion-menu a{padding:.7rem 1rem}.accordion-menu .nested.is-accordion-submenu{margin-left:1rem;margin-right:0}.accordion-menu.align-right .nested.is-accordion-submenu{margin-left:0;margin-right:1rem}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a{position:relative}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;margin-top:-3px;position:absolute;right:1rem;top:50%;width:0}.accordion-menu.align-left .is-accordion-submenu-parent>a:after{left:auto;right:1rem}.accordion-menu.align-right .is-accordion-submenu-parent>a:after{left:1rem;right:auto}.accordion-menu .is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.is-accordion-submenu-parent{position:relative}.has-submenu-toggle>a{margin-right:40px}.submenu-toggle{cursor:pointer;height:40px;position:absolute;right:0;top:0;width:40px}.submenu-toggle:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;bottom:0;content:"";display:block;height:0;margin:auto;top:0;width:0}.submenu-toggle[aria-expanded=true]:after{-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.submenu-toggle-text{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.is-drilldown{overflow:hidden;position:relative}.is-drilldown li{display:block}.is-drilldown.animate-height{-webkit-transition:height .5s;transition:height .5s}.drilldown a{background:#fefefe;padding:.7rem 1rem}.drilldown .is-drilldown-submenu{background:#fefefe;left:100%;position:absolute;top:0;-webkit-transition:-webkit-transform .15s linear;transition:-webkit-transform .15s linear;transition:transform .15s linear;transition:transform .15s linear,-webkit-transform .15s linear;width:100%;z-index:-1}.drilldown .is-drilldown-submenu.is-active{display:block;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);z-index:1}.drilldown .is-drilldown-submenu.is-closing{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.drilldown .is-drilldown-submenu a{padding:.7rem 1rem}.drilldown .nested.is-drilldown-submenu{margin-left:0;margin-right:0}.drilldown .drilldown-submenu-cover-previous{min-height:100%}.drilldown .is-drilldown-submenu-parent>a{position:relative}.drilldown .is-drilldown-submenu-parent>a:after{margin-top:-6px;position:absolute;top:50%}.drilldown .is-drilldown-submenu-parent>a:after,.drilldown.align-left .is-drilldown-submenu-parent>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;right:1rem;width:0}.drilldown.align-left .is-drilldown-submenu-parent>a:after{left:auto}.drilldown.align-right .is-drilldown-submenu-parent>a:after{left:1rem;right:auto}.drilldown .js-drilldown-back>a:before,.drilldown.align-right .is-drilldown-submenu-parent>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;width:0}.drilldown .js-drilldown-back>a:before{display:inline-block;margin-right:.75rem;vertical-align:middle}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}[data-whatinput=mouse] .dropdown.menu a{outline:0}.dropdown.menu>li>a{padding:.7rem 1rem}.dropdown.menu>li.is-active>a{background:0 0;color:#1779ba}.no-js .dropdown.menu ul{display:none}.dropdown.menu .nested.is-dropdown-submenu{margin-left:0;margin-right:0}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.vertical>li>a:after{right:14px}.dropdown.menu.vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}@media print,screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.medium-vertical>li>a:after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}@media print,screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.large-vertical>li>a:after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{left:auto;right:0;top:100%}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{left:auto;margin-top:-6px;position:absolute;right:5px;top:50%}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{left:auto;top:100%}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{left:100%;right:auto}.is-dropdown-submenu{background:#fefefe;border:1px solid #cacaca;display:none;left:100%;min-width:200px;position:absolute;top:0;z-index:1}.dropdown .is-dropdown-submenu a{padding:.7rem 1rem}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{background:hsla(0,0%,100%,.25);height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;-webkit-transition:opacity .5s ease,visibility .5s ease;transition:opacity .5s ease,visibility .5s ease;visibility:hidden;width:100%;z-index:11}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{overflow:hidden;position:relative}.off-canvas{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:fixed;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.is-transition-push{z-index:12}.off-canvas.is-closed{visibility:hidden}.off-canvas.is-transition-overlap{z-index:13}.off-canvas.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-absolute{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:absolute;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-push{z-index:12}.off-canvas-absolute.is-closed{visibility:hidden}.off-canvas-absolute.is-transition-overlap{z-index:13}.off-canvas-absolute.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas-absolute.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.position-left{height:100%;left:0;overflow-y:auto;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-left,.position-left{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-left.has-transition-push{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.position-left.is-transition-push{-webkit-box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25)}.position-right{height:100%;overflow-y:auto;right:0;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-right,.position-right{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-right.has-transition-push{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.position-right.is-transition-push{-webkit-box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25)}.position-top{left:0;overflow-x:auto;top:0;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-top,.position-top{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-top.has-transition-push{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.position-top.is-transition-push{-webkit-box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25)}.position-bottom{bottom:0;left:0;overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-bottom,.position-bottom{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-bottom.has-transition-push{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.position-bottom.is-transition-push{-webkit-box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25)}.off-canvas-content{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-transition-overlap,.off-canvas-content.has-transition-push{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.off-canvas-content .off-canvas.is-open,.off-canvas-content.has-transition-push{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}@media print,screen and (min-width:40em){.position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-medium .close-button{display:none}.off-canvas-content .position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-medium .close-button{display:none}.off-canvas-content .position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-medium .close-button{display:none}.off-canvas-content .position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-medium~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-medium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-medium~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:64em){.position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-large .close-button{display:none}.off-canvas-content .position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-large .close-button{display:none}.off-canvas-content .position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}.position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-large .close-button{display:none}.off-canvas-content .position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-large~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-large .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-large~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:40em){.off-canvas.in-canvas-for-medium{background:0 0;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-medium.position-bottom,.off-canvas.in-canvas-for-medium.position-left,.off-canvas.in-canvas-for-medium.position-right,.off-canvas.in-canvas-for-medium.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-medium .close-button{display:none}}@media print,screen and (min-width:64em){.off-canvas.in-canvas-for-large{background:0 0;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-large.position-bottom,.off-canvas.in-canvas-for-large.position-left,.off-canvas.in-canvas-for-large.position-right,.off-canvas.in-canvas-for-large.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-large .close-button{display:none}}html.is-reveal-open{overflow-y:hidden;position:fixed;width:100%}html.is-reveal-open.zf-has-scroll{overflow-y:scroll;-webkit-overflow-scrolling:touch}html.is-reveal-open body{overflow-y:hidden}.reveal-overlay{background-color:hsla(0,0%,4%,.45);bottom:0;left:0;position:fixed;right:0;top:0;z-index:1005}.reveal,.reveal-overlay{display:none;overflow-y:auto;-webkit-overflow-scrolling:touch}.reveal{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;margin-left:auto;margin-right:auto;padding:1rem;position:relative;top:100px;z-index:1006}[data-whatinput=mouse] .reveal{outline:0}@media print,screen and (min-width:40em){.reveal{min-height:0}}.reveal .column{min-width:0}.reveal>:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.reveal{max-width:75rem;width:600px}}.reveal.collapse{padding:0}@media print,screen and (min-width:40em){.reveal.tiny{max-width:75rem;width:30%}.reveal.small{max-width:75rem;width:50%}.reveal.large{max-width:75rem;width:90%}}.reveal.full{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}@media print,screen and (max-width:39.99875em){.reveal{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}}.reveal.without-overlay{position:fixed}.sticky,.sticky-container{position:relative}.sticky{-webkit-transform:translateZ(0);transform:translateZ(0);z-index:0}.sticky.is-stuck{position:fixed;width:100%;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{left:auto;position:relative;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.title-bar{background:#0a0a0a;color:#fefefe;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left,.title-bar-right{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{display:inline-block;font-weight:700;vertical-align:middle}.top-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.5rem}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{margin-right:1rem;max-width:200px}.top-bar .input-group-field{margin-right:0;width:100%}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}@media print,screen and (min-width:40em){.top-bar{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.top-bar .top-bar-left{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:auto}.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;margin-left:auto}}@media print,screen and (max-width:63.99875em){.top-bar.stacked-for-medium{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media print,screen and (max-width:74.99875em){.top-bar.stacked-for-large{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.top-bar-title{margin:.5rem 1rem .5rem 0}.top-bar-left,.top-bar-right,.top-bar-title{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.clearfix:after{clear:both}.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.align-spaced{-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.align-left.vertical.menu>li>a{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right.vertical.menu>li>a{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center.vertical.menu>li>a{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-top{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.align-self-top{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.align-bottom{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.align-self-bottom{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.align-middle{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.align-self-middle{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.align-stretch{-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.align-self-stretch{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch}.align-center-middle{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-webkit-align-content:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.small-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.small-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.small-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.small-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.small-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.small-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}@media print,screen and (min-width:40em){.medium-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.medium-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.medium-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.medium-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.medium-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.medium-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}@media print,screen and (min-width:64em){.large-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.large-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.large-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.large-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.large-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.large-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}.flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}@media print,screen and (min-width:40em){.medium-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.medium-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.medium-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.medium-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.medium-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.medium-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.medium-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.medium-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media print,screen and (min-width:64em){.large-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.large-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.large-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.large-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.large-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.large-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.large-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.large-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.hide{display:none!important}.invisible{visibility:hidden}.visible{visibility:visible}@media print,screen and (max-width:39.99875em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media print,screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.99875em){.show-for-medium{display:none!important}}@media print,screen and (min-width:40em)and (max-width:63.99875em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.99875em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media print,screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.99875em){.show-for-large{display:none!important}}@media print,screen and (min-width:64em)and (max-width:74.99875em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.99875em),screen and (min-width:75em){.show-for-large-only{display:none!important}}.show-for-sr,.show-on-focus{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.show-on-focus:active,.show-on-focus:focus{height:auto!important;overflow:visible!important;position:static!important;width:auto!important;clip:auto!important;white-space:normal!important}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.show-for-dark-mode{display:none}.hide-for-dark-mode{display:block}@media screen and (prefers-color-scheme:dark){.show-for-dark-mode{display:block!important}.hide-for-dark-mode{display:none!important}}.show-for-ie{display:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.show-for-ie{display:block!important}.hide-for-ie{display:none!important}}.show-for-sticky{display:none}.is-stuck .show-for-sticky{display:block}.is-stuck .hide-for-sticky{display:none}@font-face{font-family:fonticon;src:url(data:font/ttf;base64,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AG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAAFcmFkaW8McmFkaW8tYWN0aXZlFmNoZWNrYm94LWluZGV0ZXJtaW5hdGUIY2hlY2tib3gPY2hlY2tib3gtYWN0aXZlBHN3YXAGdW5mb2xkB2FjY291bnQDYWRkCWFwYXJ0bWVudAphcnJvdy1sZWZ0CmFycm93LWRvd24OYXJyb3ctZHJvcGRvd24MYXJyb3ctZHJvcHVwC2Fycm93LXJpZ2h0CGFycm93LXVwBWJlYWNoB3JlZnJlc2gOY2FsZW5kYXItdG9kYXkNY2FuY2VsLWZpbGxlZBNjaGVjay1jaXJjbGUtZmlsbGVkDGNoZWNrLWNpcmNsZQVjaGVjawxjaGV2cm9uLWxlZnQNY2hldnJvbi1yaWdodAZjYW5jZWwFY2xvdWQKY29sbGVjdGlvbgRjb3B5A2N1dAVwYXN0ZQpjcmVkaXRjYXJkCGNhbGVuZGFyBmRlbGV0ZQhkb3dubG9hZAV0aXRsZQltYWlsLW9wZW4EZWRpdAVlcnJvcg1lcnJvci1vdXRsaW5lCmNoZXZyb24tdXAMY2hldnJvbi1kb3duBWhlYXJ0BHNvcnQGZm9sZGVyFUZvcm1hdEFsaWduTGVmdEZpbGxlZARob21lBWluYm94BGluZm8MaW5mby1vdXRsaW5lBmxheWVycwhsb2NhdGlvbgRsb2NrBmxvZ291dARtYWlsDG1haWwtb3V0bGluZQRtZW51B21vbml0b3IPbW9yZS1ob3Jpem9udGFsDW1vcmUtdmVydGljYWwMbm90aWZpY2F0aW9uBm5ld3RhYgV1c2VycwhhZGQtdXNlcgR1c2VyBXBob25lBXBob3RvDXBob3RvLW91dGxpbmUEcGxheQtwbGF5LWNpcmNsZQVjbG9jawZ1bmxvY2sIZGF0YWJhc2UHbmV0d29yaxBkYXNoYm9hcmQtZmlsbGVkCHNldHRpbmdzC3N0YXItZmlsbGVkDHN0YXItb3V0bGluZQttYWludGVuYW5jZQRzZW5kBG5leHQIcHJldmlvdXMPd2FybmluZy1vdXRsaW5lElZpZXdIZWFkbGluZUZpbGxlZAp1bml2ZXJzaXR5BXVzYWdlBGhlbHAHd2FybmluZwdzdXBwb3J0BnNlYXJjaARsb2dzEWRhc2hib2FyZC1vdXRsaW5lEHN0YXItaGFsZi1maWxsZWQHbW9kdWxlcwR3b3JrBnVwbG9hZAR3aWZpBXRoZW1lBXNsYWNrCWRvY3MtbWFpbA5kb2NzLWNvbW11bml0eRBkb2NzLW9wZW4tc291cmNlD2RvY3MtZW50ZXJwcmlzZQ9kb2NzLWFsdGVybmF0b3INZG9jcy1vcGVyYXRvcgxkb2NzLW1hbmFnZXIPZG9jcy1tb25pdG9yaW5nEmRvY3MtY2hldnJvbi1yaWdodAlkb2NzLWluZm8MZG9jcy13YXJuaW5nEWRvY3MtY2hldnJvbi1sZWZ0EmRvY3MtbWVudS1jb2xsYXBzZRBkb2NzLXRodW1icy1kb3duDmRvY3MtdGh1bWJzLXVwBmdpdGh1YghpbnN0YW5jZQVwYXVzZQRzdG9wBXJlc2V0A2V5ZQ5zdGFjay1vdmVyZmxvdxBkb2NzLW5zcWwtZ3VpZGVzCmRvY3MtY2xvdWQUZG9jcy1nZXR0aW5nLXN0YXJ0ZWQJZG9jcy1ibG9nD2RvY3MtY29udHJpYnV0ZQ1kb2NzLXRyYWluaW5nDWRvY3MtY29tbWFuZHMSZG9jcy1jb25maWd1cmF0aW9uEWRvY3MtZW50ZXJwcmlzZS1tAAAAAA==) format("truetype"),url(data:application/vnd.ms-fontobject;base64,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AGUAYQB0AGUAIABiAHkAIABpAGMAbwBuADIAZgBvAG4AdAAgADwAQQBiAGQAZQBsAGgAYQBrAGkAbQAgAFIAQQBGAEkASwA+AGYAbwBuAHQAaQBjAG8AbgBSAGUAZwB1AGwAYQByAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AGkAYwBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAGYAbwBuAHQAaQBjAG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAAFcmFkaW8McmFkaW8tYWN0aXZlFmNoZWNrYm94LWluZGV0ZXJtaW5hdGUIY2hlY2tib3gPY2hlY2tib3gtYWN0aXZlBHN3YXAGdW5mb2xkB2FjY291bnQDYWRkCWFwYXJ0bWVudAphcnJvdy1sZWZ0CmFycm93LWRvd24OYXJyb3ctZHJvcGRvd24MYXJyb3ctZHJvcHVwC2Fycm93LXJpZ2h0CGFycm93LXVwBWJlYWNoB3JlZnJlc2gOY2FsZW5kYXItdG9kYXkNY2FuY2VsLWZpbGxlZBNjaGVjay1jaXJjbGUtZmlsbGVkDGNoZWNrLWNpcmNsZQVjaGVjawxjaGV2cm9uLWxlZnQNY2hldnJvbi1yaWdodAZjYW5jZWwFY2xvdWQKY29sbGVjdGlvbgRjb3B5A2N1dAVwYXN0ZQpjcmVkaXRjYXJkCGNhbGVuZGFyBmRlbGV0ZQhkb3dubG9hZAV0aXRsZQltYWlsLW9wZW4EZWRpdAVlcnJvcg1lcnJvci1vdXRsaW5lCmNoZXZyb24tdXAMY2hldnJvbi1kb3duBWhlYXJ0BHNvcnQGZm9sZGVyFUZvcm1hdEFsaWduTGVmdEZpbGxlZARob21lBWluYm94BGluZm8MaW5mby1vdXRsaW5lBmxheWVycwhsb2NhdGlvbgRsb2NrBmxvZ291dARtYWlsDG1haWwtb3V0bGluZQRtZW51B21vbml0b3IPbW9yZS1ob3Jpem9udGFsDW1vcmUtdmVydGljYWwMbm90aWZpY2F0aW9uBm5ld3RhYgV1c2VycwhhZGQtdXNlcgR1c2VyBXBob25lBXBob3RvDXBob3RvLW91dGxpbmUEcGxheQtwbGF5LWNpcmNsZQVjbG9jawZ1bmxvY2sIZGF0YWJhc2UHbmV0d29yaxBkYXNoYm9hcmQtZmlsbGVkCHNldHRpbmdzC3N0YXItZmlsbGVkDHN0YXItb3V0bGluZQttYWludGVuYW5jZQRzZW5kBG5leHQIcHJldmlvdXMPd2FybmluZy1vdXRsaW5lElZpZXdIZWFkbGluZUZpbGxlZAp1bml2ZXJzaXR5BXVzYWdlBGhlbHAHd2FybmluZwdzdXBwb3J0BnNlYXJjaARsb2dzEWRhc2hib2FyZC1vdXRsaW5lEHN0YXItaGFsZi1maWxsZWQHbW9kdWxlcwR3b3JrBnVwbG9hZAR3aWZpBXRoZW1lBXNsYWNrCWRvY3MtbWFpbA5kb2NzLWNvbW11bml0eRBkb2NzLW9wZW4tc291cmNlD2RvY3MtZW50ZXJwcmlzZQ9kb2NzLWFsdGVybmF0b3INZG9jcy1vcGVyYXRvcgxkb2NzLW1hbmFnZXIPZG9jcy1tb25pdG9yaW5nEmRvY3MtY2hldnJvbi1yaWdodAlkb2NzLWluZm8MZG9jcy13YXJuaW5nEWRvY3MtY2hldnJvbi1sZWZ0EmRvY3MtbWVudS1jb2xsYXBzZRBkb2NzLXRodW1icy1kb3duDmRvY3MtdGh1bWJzLXVwBmdpdGh1YghpbnN0YW5jZQVwYXVzZQRzdG9wBXJlc2V0A2V5ZQ5zdGFjay1vdmVyZmxvdxBkb2NzLW5zcWwtZ3VpZGVzCmRvY3MtY2xvdWQUZG9jcy1nZXR0aW5nLXN0YXJ0ZWQJZG9jcy1ibG9nD2RvY3MtY29udHJpYnV0ZQ1kb2NzLXRyYWluaW5nDWRvY3MtY29tbWFuZHMSZG9jcy1jb25maWd1cmF0aW9uEWRvY3MtZW50ZXJwcmlzZS1tAAAAAA==) format("embedded-opentype"),url(data:font/woff;base64,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) format("woff")}[class*=" icon-addon-"]:before,[class^=icon-addon-]:before{clip-path:polygon(0 0,100% 0,100% 59%,95.5% 54.5%,88% 50.3%,80% 48.5%,71% 49.2%,64% 52%,58% 56%,53% 62%,50% 69%,48.8% 79%,50.5% 87%,55% 95%,60% 100%,0 100%)}.admonition-title:before,.icon,.search-box:before,.secondary-side-nav__content li a:before,.side-nav__content .scylla-icon--expand,[class*=" icon-"],[class^=icon-]{font-family:fonticon!important;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400!important;vertical-align:middle}.icon-radio:before{content:""}.icon-radio-active:before{content:""}.icon-checkbox-indeterminate:before{content:""}.icon-checkbox:before{content:""}.icon-checkbox-active:before{content:""}.icon-swap:before{content:""}.icon-unfold:before{content:""}.icon-account:before{content:""}.icon-add:before{content:""}.icon-apartment:before{content:""}.icon-arrow-left:before{content:""}.icon-arrow-down:before{content:""}.icon-arrow-dropdown:before{content:""}.icon-arrow-dropup:before{content:""}.icon-arrow-right:before{content:""}.icon-arrow-up:before{content:""}.icon-beach:before{content:""}.icon-refresh:before{content:""}.icon-calendar-today:before{content:""}.icon-cancel-filled:before{content:""}.icon-check-circle-filled:before{content:""}.icon-check-circle:before{content:""}.icon-check:before{content:""}.icon-chevron-left:before{content:""}.icon-chevron-right:before{content:""}.icon-cancel:before{content:""}.icon-cloud:before{content:""}.icon-collection:before{content:""}.icon-copy:before{content:""}.icon-cut:before{content:""}.icon-paste:before{content:""}.icon-creditcard:before{content:""}.icon-calendar:before{content:""}.icon-delete:before{content:""}.icon-download:before{content:""}.icon-title:before{content:""}.icon-mail-open:before{content:""}.icon-edit:before{content:""}.icon-error:before{content:""}.icon-error-outline:before{content:""}.icon-chevron-up:before{content:""}.icon-chevron-down:before{content:""}.icon-heart:before{content:""}.icon-sort:before{content:""}.icon-folder:before{content:""}.icon-FormatAlignLeftFilled:before{content:""}.icon-home:before{content:""}.icon-inbox:before{content:""}.icon-info:before{content:""}.icon-info-outline:before{content:""}.icon-layers:before{content:""}.icon-location:before{content:""}.icon-lock:before{content:""}.icon-logout:before{content:""}.icon-mail:before{content:""}.icon-mail-outline:before{content:""}.icon-menu:before{content:""}.icon-monitor:before{content:""}.icon-more-horizontal:before{content:""}.icon-more-vertical:before{content:""}.icon-notification:before{content:""}.icon-newtab:before{content:""}.icon-users:before{content:""}.icon-add-user:before{content:""}.icon-user:before{content:""}.icon-phone:before{content:""}.icon-photo:before{content:""}.icon-photo-outline:before{content:""}.icon-play:before{content:""}.icon-play-circle:before{content:""}.icon-clock:before{content:""}.icon-unlock:before{content:""}.icon-database:before{content:""}.icon-network:before{content:""}.icon-dashboard-filled:before{content:""}.icon-settings:before{content:""}.icon-star-filled:before{content:""}.icon-star-outline:before{content:""}.icon-maintenance:before{content:""}.icon-send:before{content:""}.icon-next:before{content:""}.icon-previous:before{content:""}.icon-warning-outline:before{content:""}.icon-ViewHeadlineFilled:before{content:""}.icon-university:before{content:""}.icon-usage:before{content:""}.icon-help:before{content:""}.icon-warning:before{content:""}.icon-support:before{content:""}.icon-search:before{content:""}.icon-logs:before{content:""}.icon-dashboard-outline:before{content:""}.icon-star-half-filled:before{content:""}.icon-modules:before{content:""}.icon-work:before{content:""}.icon-upload:before{content:""}.icon-wifi:before{content:""}.icon-theme:before{content:""}.icon-slack:before{content:""}.icon-docs-mail:before{content:""}.icon-docs-community:before{content:""}.icon-docs-open-source:before{content:""}.icon-docs-enterprise:before{content:""}.icon-docs-alternator:before{content:""}.icon-docs-operator:before{content:""}.icon-docs-manager:before{content:""}.icon-docs-monitoring:before{content:""}.icon-docs-chevron-right:before{content:""}.icon-docs-info:before{content:""}.icon-docs-warning:before{content:""}.icon-docs-chevron-left:before{content:""}.icon-docs-menu-collapse:before{content:""}.icon-docs-thumbs-down:before{content:""}.icon-docs-thumbs-up:before{content:""}.icon-github:before{content:""}.icon-instance:before{content:""}.icon-pause:before{content:""}.icon-stop:before{content:""}.icon-reset:before{content:""}.icon-eye:before{content:""}.icon-stack-overflow:before{content:""}.icon-docs-nsql-guides:before{content:""}.icon-docs-cloud:before{content:""}.icon-docs-getting-started:before{content:""}.icon-docs-blog:before{content:""}.icon-docs-contribute:before{content:""}.icon-docs-training:before{content:""}.icon-docs-commands:before{content:""}.icon-docs-configuration:before{content:""}.icon-docs-enterprise-m:before{content:""}:root{--white:#fff;--gray-50:#f7fcfc;--gray-100:#edf5f7;--gray-200:#d8e5eb;--gray-300:#c3d5de;--gray-400:#aec0cf;--gray-500:#95a7ba;--gray-600:#7b8ba2;--gray-700:#616d87;--gray-800:#4b546f;--gray-900:#383d57;--gray-950:#2f324b;--black:#23263b;--primary:#42c4e6;--secondary:#3a2d55;--success:#43a047;--info:#1976d2;--warning:#ffab00;--danger:#ce291f;--link-color:#3c4fe0;--link-color-hover:#3c4fe0;--text-color:#23263b;--code-color:#23263b;--text-emphasis:#23263b;--text-muted:#95a7ba;--border-color:#f1f1f1;--header-border:#4458a3;--bg-color:#fefefe;--well-bg:#f7f8f9;--navigation-bg:#f6f8ff;--card-bg:var(--white);--admonition:#6f7071;--scollbar-bg:#b3bac5;--tooltip-bg:#383d57;--shadow-lg:0px 4px 25px rgba(0,0,0,.15);--border-width:1px;--border-radius:5px;--border-radius-md:8px;--line-number:#5a7184;--logo-url:"../img/logo-scylla-horizontal-color.svg"}.dark{--primary:#42c4e6;--secondary:#3a2d55;--success:#43a047;--info:#1976d2;--warning:#ffab00;--danger:#ce291f;--link-color:#42c4e6;--link-color-hover:#42c4e6;--text-color:var(--gray-200);--code-color:var(--gray-200);--text-emphasis:var(--white);--text-muted:var(--gray-300);--border-color:var(--gray-800);--header-border:#4458a3;--bg-color:var(--black);--well-bg:#1e2031;--navigation-bg:#1e2031;--card-bg:var(--gray-950);--admonition:var(--gray-400);--logo-url:"../img/logo-scylla-horizontal-light.svg"}html{box-sizing:border-box;scroll-padding-top:100px}body{background-color:var(--bg-color);color:var(--text-color);font-family:Roboto,sans-serif;font-size:16px;line-height:1}*,:after,:before{box-sizing:inherit}a{color:var(--link-color)}a.reference:after{font-family:FontAwesome;font-size:12px;padding:0 4px}a.reference.external:after{content:""}a.reference.download:after{content:""}a:hover{color:var(--link-color-hover);font-weight:500}.headerlink{margin-left:5px;visibility:hidden}.toc-backref:hover{color:var(--black)}h1,h2,h3,h4,h5,h6{font-family:Roboto,sans-serif;font-size:16px;font-weight:500;letter-spacing:.2px;line-height:24px;margin-bottom:16px}h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{visibility:visible}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}h1{font-size:32px;font-weight:700;line-height:40px;margin-bottom:28px}h2{font-size:24px;line-height:32px}h3{font-size:20px}h4{font-size:18px}h5{font-size:16px}h6{font-weight:400}img{max-width:100%}button:focus{outline:0}blockquote{border:0;margin:0;padding:0}blockquote,blockquote p,cite{color:inherit}cite{display:inline;font-size:inherit}cite:before{content:""}.show{display:block!important}.centered{display:block;margin:0 auto}.break{flex-basis:100%;height:0}@media screen and (min-width:1024px){h1{font-size:36px}}.dark .highlight .c{color:#6272a4}.dark .highlight .err,.dark .highlight .g{color:#f8f8f2}.dark .highlight .k{color:#ff79c6}.dark .highlight .l,.dark .highlight .n{color:#f8f8f2}.dark .highlight .o{color:#ff79c6}.dark .highlight .p,.dark .highlight .x{color:#f8f8f2}.dark .highlight .ch,.dark .highlight .cm{color:#6272a4}.dark .highlight .cp{color:#ff79c6}.dark .highlight .c1,.dark .highlight .cpf,.dark .highlight .cs{color:#6272a4}.dark .highlight .gd{color:#8b080b}.dark .highlight .ge{color:#f8f8f2;text-decoration:underline}.dark .highlight .gr{color:#f8f8f2}.dark .highlight .gh,.dark .highlight .gi{color:#f8f8f2;font-weight:700}.dark .highlight .go{color:#dfdfe6}.dark .highlight .gp,.dark .highlight .gs{color:#f8f8f2}.dark .highlight .gu{color:#f8f8f2;font-weight:700}.dark .highlight .gt{color:#f8f8f2}.dark .highlight .kc{color:#ff79c6}.dark .highlight .kd{color:#8be9fd;font-style:italic}.dark .highlight .kn,.dark .highlight .kp,.dark .highlight .kr{color:#ff79c6}.dark .highlight .kt{color:#8be9fd}.dark .highlight .ld{color:#f8f8f2}.dark .highlight .m{color:#bd93f9}.dark .highlight .s{color:#f1fa8c}.dark .highlight .na{color:#50fa7b}.dark .highlight .nb{color:#8be9fd;font-style:italic}.dark .highlight .nc{color:#50fa7b}.dark .highlight .nd,.dark .highlight .ne,.dark .highlight .ni,.dark .highlight .no{color:#f8f8f2}.dark .highlight .nf{color:#50fa7b}.dark .highlight .nl{color:#8be9fd;font-style:italic}.dark .highlight .nn,.dark .highlight .nx,.dark .highlight .py{color:#f8f8f2}.dark .highlight .nt{color:#ff79c6}.dark .highlight .nv{color:#8be9fd;font-style:italic}.dark .highlight .ow{color:#ff79c6}.dark .highlight .w{color:#f8f8f2}.dark .highlight .mb,.dark .highlight .mf,.dark .highlight .mh,.dark .highlight .mi,.dark .highlight .mo{color:#bd93f9}.dark .highlight .dl,.dark .highlight .s1,.dark .highlight .s2,.dark .highlight .sa,.dark .highlight .sb,.dark .highlight .sc,.dark .highlight .sd,.dark .highlight .se,.dark .highlight .sh,.dark .highlight .si,.dark .highlight .sr,.dark .highlight .ss,.dark .highlight .sx{color:#f1fa8c}.dark .highlight .bp{color:#f8f8f2;font-style:italic}.dark .highlight .fm{color:#50fa7b}.dark .highlight .vc,.dark .highlight .vg,.dark .highlight .vi,.dark .highlight .vm{color:#8be9fd;font-style:italic}.dark .highlight .il{color:#bd93f9}.contents.local>ul>li .dark a:before,.dark .contents.local>ul>li a:before,.dark .scylla-icon{filter:brightness(0) saturate(100%) invert(100%) sepia(4%) saturate(10%) hue-rotate(140deg) brightness(106%) contrast(100%)}.contents.local>ul>li a:before,.scylla-icon{background-repeat:no-repeat;background-size:contain;display:inline-block;filter:brightness(0);vertical-align:middle}.scylla-icon--about-team{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMntzdHJva2UtbGluZWNhcDpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik00LjY2IDkuODEgMi42MyAxMWEyLjA4IDIuMDggMCAwIDAtMS4xMyAxLjgzdjcuODFjLjE5IDEuMTEuNSAxLjUzIDEuNSAxLjQ3TTcuMDYgOS45NGwxLjQ0Ljk0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMy41IDE4LjV2NS4zNE05LjUgMTguNXY1LjM0TTguNTQgMTguNDJ2NS4zM00xNS41IDE4LjV2NS4zNE0xNi41IDE4LjV2NS4zNE0zLjMzIDIwLjUzaDUuMDhNMTEuNDUgOC44NGwuMDYuMDZhMS42NSAxLjY1IDAgMCAwIDIuMzQgMGgwIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJNMTIuNDIgNy41YTEuODEgMS44MSAwIDAgMS0xLjkyLTEuNzdWNWExLjk0IDEuOTQgMCAwIDEgMS45Mi0yIDIuMDcgMi4wNyAwIDAgMSAyLjA4IDJ2Ljc3YTIgMiAwIDAgMS0yLjA4IDEuNzNaTTExLjQyIDguNzQgOS42MyA5LjlhMi4wNyAyLjA3IDAgMCAwLTEuMTMgMS44NXY3LjgyQTEuNDcgMS40NyAwIDAgMCAxMCAyMU0xMy43NSA5LjE4bDIgLjY1Yy43LjM1Ljc2IDEuMDYuNzYgMS44NHY3LjljMCAuNzctLjIzIDEuMjQtMSAxLjI0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNOS45MyAxOS41aDUuNCIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTE5LjQyIDkuMTJhMi4wNyAyLjA3IDAgMCAwIDIuMDgtMS45M3YtLjc3YTIuMDcgMi4wNyAwIDAgMC0yLjA4LTEuOTIgMS45MyAxLjkzIDAgMCAwLTEuOTIgMS45MnYuNzdhMS45NCAxLjk0IDAgMCAwIDEuOTIgMS45M1pNNS41OSA5LjEyYTEuOTMgMS45MyAwIDAgMCAxLjkyLTEuOTN2LS43N0ExLjkzIDEuOTMgMCAwIDAgNS41OSA0LjUgMi4wOCAyLjA4IDAgMCAwIDMuNSA2LjQydi43N2EyLjA4IDIuMDggMCAwIDAgMi4wOSAxLjkzWk0yMC40NCA5LjgxbDIgMS4xN2EyLjA2IDIuMDYgMCAwIDEgMS4xMyAxLjg1djcuODFjLS4xOCAxLjExLS40NyAxLjUzLTEuNDcgMS40N00xOC4wNCA5Ljk0bC0xLjQ0LjkzIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMjEuNiAxOC41djUuMzRNMjEuNzcgMjAuNTNoLTUuMDgiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--about-us{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6LjhweH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNi4yOCAxOS40OGMtLjEyLjA4LS4wOC4wNy0uMjMuMS0uNTguMDktMS4xMi0uMjgtMS4yNS0uODQgMCAwLTIuMy05LjE4LTIuMy0xMS4xMUMyLjUgMy42IDUuODguNDQgMTAuMzguNDRTMTcuNSAzLjQ4IDE3LjUgNy41YzAgMS45My0xLjMyIDExLjIzLTEuMzIgMTEuMjMtLjEzLjU2LS42Ny45NC0xLjI1Ljg0LS4xMi0uMDItLjEzIDAtLjIzLS4wNyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1Ljc1IDE1Ljc1Yy0uMTcgMS4xNS0uMjIgMi4zNC0uNTUgMy40Ni0uMzcuODUtMS42MyAxLjA2LTIuMjIuMzMtLjI1LS4yOC4xOS0uNjguNDQtLjQuNDMuNDYgMS4yNC4xOCAxLjMxLS40NGwuMDYtLjM0Yy4xOS0uODkuMzUtMS43OS41Ny0yLjY4LjA1LS4yNC40Mi0uMTcuMzkuMDciLz48cGF0aCBkPSJNMTEuNSA3YzAgMS45LTEuNTYgMy41LTMuNDYgMy41UzQuNSA4LjkgNC41IDdzMS42NC0zLjUgMy41NC0zLjVTMTEuNSA1LjEgMTEuNSA3IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNOC41NSA0Ljc1Yy0uNTkuMTItLjcxIDEuNDItLjM2IDEuNzguMjMuMjMuNzEuMzEuNzEuNDdzLS40OC4yNC0uNzEuNDdjLS4zNi4zNi0uMjQgMS42Ni4zNiAxLjc4LjcxLjE0IDEuNzgtLjcxIDEuNzgtMi4yNVM5LjI2IDQuNjEgOC41NSA0Ljc1TTYuNTEgMTIuMmMyLjEyLjMxIDQuMzQtLjIgNS42OC0xLjk2LjMyLS40MS45Ni4xMS42Mi41MS0uNzYuOS0xLjc4IDEuNjMtMi45MyAxLjk1LTEuMTQuMzMtMi4zMy4zMS0zLjQ2LjE2YS4zNC4zNCAwIDAgMS0uMjktLjM4Yy4wMi0uMTguMTktLjMxLjM3LS4yOVpNNy45NyAxOS41OWMtLjk5Ljk2LTIuMzYuMDgtMi4zNi0xLjE1LS4xMi0uOS0uMjctMS43OS0uMzctMi42OS0uMDEtLjExLjA3LS4yMS4xOC0uMjIuMS0uMDEuMTkuMDYuMjEuMTUuMjIuODguMzggMS43Ny41NiAyLjY2LjAxLjc4LjY4IDEuMzggMS4zNS44My4yNy0uMjcuNjkuMTYuNDIuNDNaIi8+PHBhdGggZD0iTTkuNzUgMTkuMjdjLS40Mi45LTEuOC45Ni0yLjMyLjExLS41LTEuMTMtLjMxLTIuNS0uNDctMy43MiAwLS4xMS4wOC0uMi4xOS0uMjEuMSAwIC4xOS4wNy4yMS4xNy4xNy45NS4yOCAxLjkxLjQyIDIuODcuMDEuNDUuMjMuNzQuNTcuODUuMzMuMS43MS0uMDUuODgtLjM2LjE4LS4zNC43MS0uMDUuNTIuMjlNMTQuMDMgMTUuNjZjLS4xNiAxLjIzLjAzIDIuNTctLjQ2IDMuNzItLjUyLjg2LTEuOTEuNzktMi4zMi0uMTEtLjE3LS4zNC4zNS0uNjEuNTMtLjI4LjQyLjcxIDEuNDguMzggMS40NS0uNDkuMTQtLjk2LjI1LTEuOTIuNDItMi44Ny4wNC0uMjQuNDEtLjIuNC4wNFoiLz48cGF0aCBkPSJNMTEuODUgMTUuNTRjLjAyLjc5LjAxIDEuNTguMDEgMi4zNy0uMDIuNDEuMDcuOS0uMTQgMS4yOS0uNDMgMS4wMi0yLjAxIDEuMDItMi40NSAwLS4yMS0uMzktLjEzLS44OS0uMTQtMS4yOSAwLS43OSAwLTEuNTguMDEtMi4zNyAwLS4xMS4xLS4yLjIxLS4xOS4xIDAgLjE4LjA4LjE5LjE4LjA3Ljc5LjEgMS41OC4xNSAyLjM3LjAzLjI3IDAgLjgyLjEzIDEuMDQuMTMuMjYuNC40My42OC40Mi40NiAwIC43OS0uNC43Ny0uODdsLjAzLS41OWMuMDQtLjc5LjA4LTEuNTguMTUtMi4zNy4wMi0uMjQuNC0uMjMuNC4wMSIvPjwvc3ZnPg==)}.scylla-icon--about-us-m{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNi4zOCAzMi40MyI+PHBhdGggZD0iTTYuNTUgMzEuNjRjLS4yLjEzLS40My4yMi0uNjkuMjZhMS44MSAxLjgxIDAgMCAxLTIuMDYtMS4zOVMuNDkgMTQuOTkuNDkgMTEuODJDLjUgNS4xOSA1Ljc3LjUgMTMuMTkuNXMxMi42OSA0LjY5IDEyLjY5IDExLjMyYzAgMy4xOC0zLjMxIDE4LjY5LTMuMzEgMTguNjlhMS44MSAxLjgxIDAgMCAxLTIuNjIgMS4yIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIvPjxwYXRoIGQ9Ik0yMS44NiAyNS4zNmMtLjI4IDEuOS0uMzcgMy44Ni0uOTEgNS43MS0uNjEgMS40MS0yLjY4IDEuNzUtMy42Ni41NS0uNDEtLjQ3LjMxLTEuMTEuNzMtLjY2LjcxLjc2IDIuMDQuMjkgMi4xNi0uNzMuMzItMS42Ni42NS0zLjMzIDEuMDQtNC45OC4wOS0uMzkuNy0uMjguNjUuMTFaIi8+PHBhdGggZD0iTTE0LjggMTAuNTdjMCAzLjEzLTIuNTMgNS42Ni01LjY2IDUuNjZzLTUuNDctMi41My01LjQ3LTUuNjYgMi4zNC01LjY2IDUuNDctNS42NiA1LjY2IDIuNTMgNS42NiA1LjY2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6LjlweCIvPjxwYXRoIGQ9Ik0xMC4zMSA2Ljg2Yy0uOTguMi0xLjE3IDIuMzQtLjU5IDIuOTMuMzguMzggMS4xNy41MSAxLjE3Ljc4cy0uNzkuNC0xLjE3Ljc4Yy0uNTkuNTktLjM5IDIuNzMuNTkgMi45MyAxLjE2LjIzIDIuOTMtMS4xNyAyLjkzLTMuNzFzLTEuNzYtMy45NC0yLjkzLTMuNzFNNi44MiAxOC41MWMzLjQ5Ljg5IDYuOTctLjUgOS41MS0yLjkzLjQ3LS40NCAxLjE2LjMxLjY4Ljc0LTEuMzggMS4yMy0yLjk4IDIuMjktNC43OSAyLjg3LTEuOC41OS0zLjc3LjU4LTUuNTguMTRhLjQyLjQyIDAgMCAxLS4zMS0uNWMuMDUtLjIyLjI4LS4zNi41LS4zMVoiLz48cGF0aCBkPSJNMTYuNzMgMTYuNjdjLS4xMi0uNDYtLjUxLS44My0uOTktLjgzLS43NS0uMDItLjU5LTEuMTcuMTQtLjk5LjgxLjE2IDEuNDMuODUgMS41IDEuNjYuMDguNC0uNTQuNTQtLjY1LjE1Wk05LjAzIDMxLjdjLTEuMjYgMS4zNi0zLjYyLjQ1LTMuOC0xLjM1bC0uMDktLjU1Yy0uMjEtMS40OC0uNDUtMi45NS0uNi00LjQ0LS4wMi0uMTguMTEtLjM0LjI5LS4zNi4xNy0uMDIuMzIuMDkuMzUuMjUuMzkgMS42My43MSAzLjI4IDEuMDMgNC45My4wOSAxLjAyIDEuMzggMS41NCAyLjEyLjgxLjQ1LS40NCAxLjE0LjI2LjY5LjdaIi8+PHBhdGggZD0iTTExLjk2IDMxLjE2Yy0xIDEuOTgtNC4wNCAxLjMtNC4yMS0uODgtLjE1LTEuNjktLjMtMy4zOC0uMzktNS4wNyAwLS4xOC4xMy0uMzQuMzEtLjM0LjE3IDAgLjMxLjExLjM0LjI3LjI4IDEuNjcuNSAzLjM1LjcyIDUuMDMuMDkgMS4yIDEuNzcgMS41OSAyLjM2LjUxLjMxLS41NiAxLjE2LS4wOS44Ny40N1pNMTkuMDMgMjUuMjFjLS4wOCAxLjY5LS4yNCAzLjM4LS4zOSA1LjA3LS4wNC4zNy0uMTcuNzUtLjM4IDEuMDYtLjg2IDEuNC0zLjExIDEuMzEtMy44My0uMTctLjMtLjU2LjU1LTEuMDMuODYtLjQ4LjU5IDEuMDggMi4yNy42OSAyLjM1LS41Mi4yMi0xLjY4LjQzLTMuMzYuNzItNS4wMy4wNi0uNC42OC0uMzMuNjUuMDdaIi8+PHBhdGggZD0iTTE1LjQzIDI1LjAyYy4wNCAxLjMxLjAyIDIuNjEuMDIgMy45MS0uMDMuNjcuMTEgMS40OC0uMjMgMi4xMy0uNzQgMS42OS0zLjI5IDEuNjktNC4wMyAwLS4zNC0uNjUtLjIxLTEuNDctLjI0LTIuMTMgMC0xLjMtLjAyLTIuNjEuMDItMy45MSAwLS4xOC4xNi0uMzIuMzQtLjMyLjE3IDAgLjMuMTQuMzIuMy4xMSAxLjMuMTcgMi42LjI0IDMuOTEuMDUuNDUgMCAxLjM1LjIxIDEuNzIuMjEuNDMuNjYuNzEgMS4xMi43LjQ2LjAyLjkxLS4yNyAxLjEyLS42OS4yMi0uMzYuMTYtMS4yOC4yMS0xLjcyLjA3LTEuMy4xMy0yLjYxLjI0LTMuOTEuMDItLjQuNjYtLjM4LjY2LjAyWiIvPjwvc3ZnPg==)}.scylla-icon--alternator{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMTcuNSAyLjkxYzAgMS4yOC0zLjY3IDIuNTktOCAyLjU5cy04LTEuMzEtOC0yLjU5UzUuMDkuNSA5LjQyLjVzOC4wOCAxLjEzIDguMDggMi40MU0xNy41IDcuNjZjMCAxLjI4LTMuNjMgMi44LTcuOTYgMi44UzEuNSA4LjkzIDEuNSA3LjY2TTE3LjUgMTIuNDdjMCAxLjI4LTMuNjcgMy4wMy04IDMuMDNzLTgtMS43NS04LTMuMDNNMTcuNSAxNy4yOWMwIDEuMjgtMy43NSAyLjMtOC4wOCAyLjNzLTcuOTItMS4wMy03LjkyLTIuM00xLjUgMTcuMTlWMi45MU0xNy41IDE3LjE5VjIuOTEiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--apps{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTS41IDEuNWgyMHYxNEguNXpNNy41IDE1Ljc0djIuODlNMTIuODMgMTUuNjN2Mi4zMk01LjUgMTguNWg5LjE0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMy42NCA1LjU2IDQuNTggMi45MS00LjU4IDIuOTJNOS4xIDEyLjA4aDQuMzIiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--architecture{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTIsLmNscy01e2ZpbGw6bm9uZTtzdHJva2U6Z3JheX0uY2xzLTF7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMiwuY2xzLTV7c3Ryb2tlLW1pdGVybGltaXQ6MTB9LmNscy0ye3N0cm9rZS13aWR0aDouOThweH0uY2xzLTV7c3Ryb2tlLXdpZHRoOi45OXB4fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0iTTEuOSAxMC4yN2ExMC44MyAxMC44MyAwIDAgMSA4LjczLTguMzhNMTAuNTEgMjMuMDhBMTAuNzkgMTAuNzkgMCAwIDEgMS43NyAxNE0yMy4yMyAxNGExMC44MSAxMC44MSAwIDAgMS05IDkuMTFNMTQuMjcgMS44OGExMC44MSAxMC44MSAwIDAgMSA4LjgzIDguMzciIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjEyLjI1IiBjeT0iMS43NSIgcj0iMS43NSIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iMTIuMjUiIGN5PSIyMi43NSIgcj0iMS43NSIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iNC45MiIgY3k9IjQuNzUiIHI9IjEuNzUiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOi45OXB4Ii8+PGNpcmNsZSBjeD0iMjAuMDkiIGN5PSIxOS45MSIgcj0iMS43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk5cHgiLz48Y2lyY2xlIGN4PSIxLjc1IiBjeT0iMTIuMjUiIHI9IjEuNzUiIGNsYXNzPSJjbHMtNSIvPjxjaXJjbGUgY3g9IjIzLjI1IiBjeT0iMTIuMjUiIHI9IjEuNzUiIGNsYXNzPSJjbHMtNSIvPjxjaXJjbGUgY3g9IjQuNzUiIGN5PSIxOS42NCIgcj0iMS43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk5cHgiLz48Y2lyY2xlIGN4PSIxOS45MSIgY3k9IjQuNDgiIHI9IjEuNzUiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOi45OXB4Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--benchmarks{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDozcHh9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV8yIiBkYXRhLW5hbWU9IkNhbHF1ZSAyIj48cGF0aCBkPSJNNS41MSAyNC45MXYtNS44NU0xMi41NyAyNC45MXYtOS43NE0xOS42MiAyNC45MVYxMC4xNSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibS45MSAxNC45OCA1LjEzLTcuOTQgNi4yNSA1Ljg4TDI0IDEiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1saW5lY2FwOnJvdW5kIi8+PHBhdGggZD0ibTI1IDUtNS01aDV6IiBzdHlsZT0iZmlsbDpncmF5Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTkgMTUtMi41LTEuNSA4LTEyTDE3IDN6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNi41IDEzLjUtLjUgM0w5IDE1eiIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTkuMjUgMi41aDQuMjV2MTZoLTEzdjQuMTdMNi40NiAxOC41bC00Ljk2LS4wNFYyLjVoOC4zMU0xNC41IDIuNWwxLjY3IDEuMzMiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--careers{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTEuNSAxMS41NXY4YzAgLjU2IDEuMDcgMiAyIDJoMThjLjg5IDAgMi0xLjQ0IDItMnYtOCIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTIzLjMxIDMuNUgxLjgxYy0uNDggMC0xLjMxLjU1LTEuMzEgMXY2bDEwIDJhOC40NSA4LjQ1IDAgMCAwIDQgMGwxMC0ydi02YzAtLjQ1LS43Mi0xLTEuMTktMU0xNS42MiAzLjV2LTFjMC0uNzYtLjYxLTEtMS4zOC0xaC0zLjQ1Yy0uNzYgMC0xLjM4LjI0LTEuMzggMXYxIiBjbGFzcz0iY2xzLTEiLz48cmVjdCB3aWR0aD0iNSIgaGVpZ2h0PSIzLjk5IiB4PSIxMCIgeT0iMTEiIHJ4PSIuNTUiIHJ5PSIuNTUiIHN0eWxlPSJmaWxsOmdyYXkiLz48L3N2Zz4=)}.scylla-icon--chevron-left{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTguMDkyIDE2IDEwIDE0LjExMyAzLjgxNyA4IDEwIDEuODg3IDguMDkyIDAgMCA4eiIvPjwvc3ZnPg==)}.contents.local>ul>li a:before,.scylla-icon--chevron-right{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTEuOTA4IDAgMCAxLjg4NyA2LjE4MyA4IDAgMTQuMTEzIDEuOTA4IDE2IDEwIDh6Ii8+PC9zdmc+)}.scylla-icon--circe{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzOCAzMCI+PGRlZnM+PHN0eWxlPi5jbHMtMiwuY2xzLTN7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH0uY2xzLTN7c3Ryb2tlLXdpZHRoOjEuMTFweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik0yMi4xIDEyaC02LjE2YTEuMDYgMS4wNiAwIDAgMS0uOTQtMS4wNy45My45MyAwIDAgMSAuOTQtLjkzaDYuMTZhLjkzLjkzIDAgMCAxIC45NC45M0ExLjA2IDEuMDYgMCAwIDEgMjIuMSAxMiIgc3R5bGU9ImZpbGw6IzRkNGQ0ZCIvPjxwYXRoIGQ9Ik0xMy40NCA0LjQ5SDkuNTF2MjRoMTl2LTI0SDI0LjUiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0xMyAzLjQ5SDguNWwtLjA4IDI2LjFIMjkuNVYzLjM5SDI1IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNMTIuNSAxOC4zOGgxM00xMi41IDE1LjQ5aDEzTTEyLjUgMjEuNDNoMTNNMTIuNSAyNC40N2gxM00xMy41IDIuNWgxMXYzLjk4aC0xMXoiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0yMS41LjVoLTUuMDR2MS45NWw1LjA0LjA1eiIgY2xhc3M9ImNscy0zIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--clock{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PGNpcmNsZSBjeD0iMTAuNSIgY3k9IjkuNSIgcj0iOSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTEwLjUgMy41djZsMy4wNiAzIiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNCIgaGVpZ2h0PSIzNCIgZmlsbD0ibm9uZSI+PGcgZmlsbD0iI2ZmZiIgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBkPSJNMTEuNjcgMjIuMTNhLjU2NC41NjQgMCAwIDEtLjM5OC0uOTYybDkuODk2LTkuODk2YS41NjMuNTYzIDAgMSAxIC43OTcuNzk3bC05Ljg5NiA5Ljg5NmEuNTYuNTYgMCAwIDEtLjM5OS4xNjUiLz48cGF0aCBkPSJNMjEuNTY2IDIyLjEzYS41Ni41NiAwIDAgMS0uMzk4LS4xNjVsLTkuODk2LTkuODk2YS41NjMuNTYzIDAgMSAxIC43OTctLjc5N2w5Ljg5NiA5Ljg5NWEuNTY0LjU2NCAwIDAgMS0uMzk5Ljk2MyIvPjxwYXRoIGQ9Ik0xNi42MTkgMzMuMjM3QzcuNDU1IDMzLjIzNyAwIDI1Ljc4MiAwIDE2LjYxOVM3LjQ1NSAwIDE2LjYxOSAwczE2LjYxOSA3LjQ1NSAxNi42MTkgMTYuNjE5LTcuNDU2IDE2LjYxOC0xNi42MiAxNi42MThtMC0zMi4xMWMtOC41NDIgMC0xNS40OTIgNi45NS0xNS40OTIgMTUuNDkyUzguMDc3IDMyLjExIDE2LjYxOSAzMi4xMSAzMi4xMSAyNS4xNiAzMi4xMSAxNi42MTkgMjUuMTYgMS4xMjcgMTYuNjE5IDEuMTI3Ii8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgzMy4yMzd2MzMuMjM3SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+)}.scylla-icon--cloud{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8yIiB2aWV3Qm94PSIwIDAgNDMuMDQgMzIuMDMiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMWQxZDFiO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iTGF5ZXJfMyI+PHBhdGggZD0iTTQyLjU0IDQuMDZjMCAxLjY4LTMuNjMgMi40NC05IDIuNDRzLTEwLS43My0xMC0yLjRTMjcuNjcuNSAzMy4wNC41czkuNSAxLjg5IDkuNSAzLjU2TTQyLjU0IDkuNjNjMCAxLjY4LTMuNzYgMi45MS05LjEyIDIuOTFzLTkuODQtMS4yMy05Ljg0LTIuOTFNNDIuNTQgMTUuMzRjMCAxLjY4LTMuNjggMy4yNS05LjA0IDMuMjUtNCAwLTcuNi0uOTYtOS4wOS0yLjA0TTQyLjU0IDIwLjY1YzAgMS42OC0zLjcyIDIuOTctOS4wOCAyLjk3TTIzLjU0IDE1LjQ2VjQuMU00Mi41NCAyMC43N1Y0LjEiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0yOC4xMSAyMS4wOGMtLjg3IDAtMS42Ny4yMy0yLjM5LjYxIDAtLjA3LjAxLS4xNC4wMS0uMjEgMC00Ljg1LTMuODMtOC45LTguNjgtOC45cy04Ljg4IDQuMDUtOC44OCA4LjljMCAuMTcuMDIuMzQuMDMuNTEtLjg0LS41Ny0xLjg1LS45MS0yLjk1LS45MS0yLjg4IDAtNC43NCAyLjU3LTQuNzQgNS40NnMxLjg2IDQuOTkgNC43NCA0Ljk5aDIyLjg2YzIuODggMCA1LjUyLTIuMjcgNS41Mi01LjE2cy0yLjYzLTUuMjktNS41Mi01LjI5IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--cloud-docs{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTYuNSAxMS41aDh2MWgtOHpNMTUuNjUgNi41NWEzLjQyIDMuNDIgMCAwIDAtMy4xNSAyIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTAuMDYgMi44QTUuMTcgNS4xNyAwIDAgMSAxNSA2LjM1aC4yNGE0Ljg0IDQuODQgMCAwIDEgMCA5LjY3aC0xMWEzLjQ1IDMuNDUgMCAwIDEgMC02LjlBMy4yIDMuMiAwIDAgMSA1IDkuMiA1LjMgNS4zIDAgMCAxIDQuODYgOGE1LjIgNS4yIDAgMCAxIDUuMi01LjJtMC0uOGE2IDYgMCAwIDAtNiA2di4zMWE0LjI1IDQuMjUgMCAwIDAgLjE4IDguNDloMTFhNS42MyA1LjYzIDAgMCAwIC4zLTExLjI2QTYgNiAwIDAgMCAxMC4wNiAyIiBzdHlsZT0iZmlsbDojNGQ0ZDRkIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--comparison{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTIsLmNscy00e2ZpbGw6bm9uZTtzdHJva2U6Z3JheX0uY2xzLTEsLmNscy0ye3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMiwuY2xzLTR7c3Ryb2tlLWxpbmVjYXA6cm91bmR9LmNscy00e3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik00LjUgMTMuNjN2Mi44OGg2LjA2TTIwLjUgMTMuNTR2Mi45NmwtNS41LjAxIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTIuNSAxOC41djIuNzJNNy41IDIxLjVoMTAiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjEyLjUiIGN5PSIxNi41IiByPSIyIiBzdHlsZT0ic3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7ZmlsbDpncmF5O3N0cm9rZS13aWR0aDouOTVweCIvPjxwYXRoIGQ9Ik01LjA2IDEzLjU4SDMuODhBMy4xIDMuMSAwIDAgMSAuNSAxMC41aDhhMy4xNiAzLjE2IDAgMCAxLTMuNDQgMy4wOE0yMSAxMy41OGgtMS4xN2EzLjA5IDMuMDkgMCAwIDEtMy4zNy0zLjA3aDhBMy4xNiAzLjE2IDAgMCAxIDIxIDEzLjU4TTcuNDYgNS4xMmMwIC41Ny0xLjEuNDYtMi43OS40NlMxLjU4IDUuNiAxLjU4IDUgMyA0LjQgNC42OSA0LjRzMi43Ny4xNiAyLjc3LjcyTTEuNSA5Ljg1VjUuMzFNNy41IDEwLjM1VjUuODFNMjMuNSA1LjEyYzAgLjU3LTEuMS40Ni0yLjc5LjQ2cy0zLjA5IDAtMy4wOS0uNTRTMTkgNC40IDIwLjczIDQuNHMyLjc3LjE2IDIuNzcuNzJNMTcuNTQgOS44NVY1LjMxTTIzLjU0IDEwLjM1VjUuODEiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.scylla-icon--contact-us{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDZweH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJtNi4yOTggMTAuMTggMTMuODMtNy4xOTcgNC42NzYgOC45ODYtMTMuODMgNy4xOTd6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNi4zIDEwLjE4IDguNjMgMS41NmExLjQyIDEuNDIgMCAwIDAgMS41My0uNzRsMy42Ny04TTExLjAyIDE5LjAzbDEuNzQtNU0yNC41OSAxMS45N2wtNS4wOS0xLjQ1TTcuMDkgMTcuNTggMy45IDE5LjM0TTYuMDYgMTUuNDEuNTQgMTguMzYiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--developers-blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJtNi40OCAxMC41OS0uNS4xNy41LjE2TDExIDEyLjE2VjE0bC03LTIuNDlWMTBsNy0yLjV2MS44M1pNMTQgOS4zMlY3LjVsNyAyLjV2MS41NEwxNCAxNHYtMS44M2w0LjE0LTEuMy40NC0uMTMtLjQzLS4xNFoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0xLjUgMi41aDIydjE2aC0xM3Y0LjE3TDYuNDYgMTguNWwtNC45Ni0uMDR6IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6Ljk4cHgiLz48L2c+PC9zdmc+)}.scylla-icon--docs{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNMy41IDIuNTFoMTYuOTR2MjAuOTFIMy41eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTIyLjQ1IDIxLjUuMDUtMjFoLTE3YTIuMTYgMi4xNiAwIDAgMC0yIDIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik02IDZoN3YySDZ6TTYgOWgxMXYySDZ6IiBjbGFzcz0iY2xzLTIiLz48L2c+PC9zdmc+)}.scylla-icon--enterprise{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTEsLmNscy0ye2ZpbGw6bm9uZTtzdHJva2U6IzAwMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye3N0cm9rZS13aWR0aDoxLjA3cHh9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0ibTEzLjYyIDcuNSAxLjg4LTEuMDggMiAyLjA4djdoMU0xNS41IDE1LjV2LTUiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik01LjUgMTUuNXYtMTJsNC0yIDQgMnYxMk05LjUgMTUuNVYxLjZNNy41IDUuNXYxME0xMS41IDUuNXYxMCIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTUuNSA4LjU0IDMuNDYgNy41bC0xLjk2Ljk2djcuMDRoLTFNMy41IDEwLjV2NU0uNSAxNy41aDE4IiBjbGFzcz0iY2xzLTEiLz48L3N2Zz4=)}.scylla-icon--enterprise-m{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIGlkPSJMYXllcl8yXzAwMDAwMDE2NzY4MDY2MDE5MjYzMjMyNzcwMDAwMDA1NDc1ODA5NTExODI4NjY2MDM2XyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQzIDMxIj48c3R5bGU+LnN0MHtmaWxsOm5vbmU7c3Ryb2tlOiMxZDFkMWI7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PGcgaWQ9IkxheWVyXzMiPjxwYXRoIGQ9Im0yOS42IDkuNSA0LTIgNi45IDQuMXYxNS45aDJNMzMuNiAyNy41VjcuNk0xNC42IDI3LjVWNC44TDIyLjUuNSAyOS42IDV2MjIuNU0yMi41IDI3LjVWMU0yNC41IDUuNmwzIDJNMjQuNSA5LjZsMyAyTTI0LjUgMTMuNmwzIDJNMjQuNSAxNy41bDMgMk0yNC41IDIxLjVsMyAyTTM1LjQgMTEuNmwzIDJNMzUuNCAxNS42bDMgMS45TTM1LjQgMTkuNWwzIDJNMzUuNCAyMy41bDMgMS45TTE4LjUgNS44djIxLjdNMTQuNiA5LjdsLTQuMS0yLjUtOCA0LjR2MTUuOWgtMk0xMC41IDI3LjVWNy4yTTEyLjUgMTEuNmwyIDFNMTIuNSAxNS42bDIgLjlNMTIuNSAxOS41bDIgMU0xMi41IDIzLjVsMi4xIDFNNi40IDEyLjR2MTUuMU0uNSAzMC41aDQyIiBjbGFzcz0ic3QwIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--events{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye2ZpbGw6Z3JheX08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMjIuNSAyMy41aC0yMXYtMjBoMjJ2MTUuMjEiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik00LjQyIDMuNWMwLTEuMzYgMS4wOS0yIDIuNDUtMmEyLjQ2IDIuNDYgMCAxIDEgMCA0LjkxIDIuNiAyLjYgMCAwIDEtMS0uMjFNMTAuNjcgMy41YzAtMS4zNiAxLjEtMiAyLjQ2LTJhMi40NiAyLjQ2IDAgMCAxIDAgNC45MSAyLjYgMi42IDAgMCAxLTEtLjIxTTE2LjkzIDMuNWMwLTEuMzYgMS4xLTIgMi40NS0yYTIuNDYgMi40NiAwIDEgMSAwIDQuOTEgMi41IDIuNSAwIDAgMS0xLS4yMSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTcgOWgzdjNIN3pNMTIgOWgzdjNoLTN6TTE3IDloM3YzaC0zek03IDE0aDN2M0g3ek0xMiAxNGgzdjNoLTN6TTE3IDE0aDN2M2gtM3oiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0zLjUgMy42N3YxNi42Nk0zLjUgMjAuNDNjMCAxLjI5LjQ0IDIuMzMgMS43MyAyLjMzczIuMzMtMS45IDIuMzMtMy4xOWwxNi45NC0uMDdjMCAxLjI5LS41NSAzLjEyLTEuODMgMy4xMkg2LjMiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--exclamation{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PG1hc2sgaWQ9ImEiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiIgeD0iMSIgeT0iMSIgbWFzay10eXBlPSJhbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEyIDIzQzUuOSAyMyAxIDE4LjEgMSAxMlM1LjkgMSAxMiAxczExIDQuOSAxMSAxMS00LjkgMTEtMTEgMTFtMC0yMGMtNSAwLTkgNC05IDlzNCA5IDkgOSA5LTQgOS05LTQtOS05LTkiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTIgMTNjLS42IDAtMS0uNC0xLTFWOGMwLS42LjQtMSAxLTFzMSAuNCAxIDF2NGMwIC42LS40IDEtMSAxTTEyIDE3Yy0uMyAwLS41LS4xLS43LS4zcy0uMy0uNC0uMy0uN2MwLS4xIDAtLjMuMS0uNHMuMS0uMi4yLS4zYy4zLS4zLjctLjQgMS4xLS4yLjEgMCAuMSAwIC4yLjEgMCAwIC4xLjEuMi4xLjEuMS4yLjIuMi4zdi40YzAgLjEgMCAuMy0uMS40cy0uMS4yLS4yLjNjLS4yLjItLjQuMy0uNy4zIi8+PC9tYXNrPjxnIG1hc2s9InVybCgjYSkiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoMjR2MjRIMHoiLz48L2c+PC9zdmc+)}.scylla-icon--expand{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNi4wMDEiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik01IDEzYTEgMSAwIDAgMS0uNzEtLjI5bC00LTRhMSAxIDAgMCAxIDAtMS40MWw0LTRhMSAxIDAgMCAxIDEuNDIgMS40MUwyLjQxIDhsMy4yOSAzLjI5QTEgMSAwIDAgMSA1IDEzIi8+PHBhdGggZD0iTTExIDlIMWExIDEgMCAwIDEgMC0yaDEwYTEgMSAwIDAgMSAwIDJNMTUgMTZhMSAxIDAgMCAxLTEtMVYxYTEgMSAwIDAgMSAyIDB2MTRhMSAxIDAgMCAxLTEgMSIvPjwvc3ZnPg==)}.scylla-icon--forum{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItdXNlcnMiPjxwYXRoIGQ9Ik0xNyAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyIi8+PGNpcmNsZSBjeD0iOSIgY3k9IjciIHI9IjQiLz48cGF0aCBkPSJNMjMgMjF2LTJhNCA0IDAgMCAwLTMtMy44N00xNiAzLjEzYTQgNCAwIDAgMSAwIDcuNzUiLz48L3N2Zz4=)}.scylla-icon--help{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWhlbHAtY2lyY2xlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIvPjxwYXRoIGQ9Ik05LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgM00xMiAxN2guMDEiLz48L3N2Zz4=)}.scylla-icon--home{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl81IiBkYXRhLW5hbWU9IkxheWVyIDUiPjxwYXRoIGQ9Ik0zLjUgNi4xNHYxMWExLjM4IDEuMzggMCAwIDAgMS4zNyAxLjM2aDExLjI2YTEuMzggMS4zOCAwIDAgMCAxLjM3LTEuMzd2LTExIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMTkuNSA3LjUtOC02LjI1YTEuNTkgMS41OSAwIDAgMC0xLjk0IDBMMS41IDcuNU0xMi43MyAxOC4wMnYtNy4yMUg4LjI3djcuMjEiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--getting-started{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTcgNC41IDguNTEgNS4wNUw3IDE0LjV6IiBzdHlsZT0iZmlsbDojNGQ0ZDRkIi8+PHJlY3Qgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiB4PSIxLjUiIHk9Ii41IiByeD0iMi40MyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzRkNGQ0ZDtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjwvZz48L3N2Zz4=)}.scylla-icon--glossary{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIuNSAyLjVoMTN2MTZoLTEzeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1LjU4IDE3LjIxaDEuOTJWLjVoLTEzYTIuMzQgMi4zNCAwIDAgMC0yIDIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik00LjggMTMuOTNhMSAxIDAgMCAwIC43NS0uNDMgNiA2IDAgMCAwIC41Mi0xLjA4bDIuODctNy4wN2guMzZsMi44OCA2Ljc5YTkgOSAwIDAgMCAuNzIgMS40Ny43Ni43NiAwIDAgMCAuNjguMzJ2LjMySDkuNHYtLjMyYTMuMiAzLjIgMCAwIDAgLjgzLS4xMWMuMTMtLjA2LjItLjE5LjItLjQyYTEuNiAxLjYgMCAwIDAtLjEtLjQ2YzAtLjEyLS4xLS4yNy0uMTctLjQ0bC0uMzMtLjc4aC0yLjljLS4xOS41MS0uMzEuODUtLjM2IDFhMi40IDIuNCAwIDAgMC0uMTcuNzNjMCAuMTguMTIuMzIuMzcuNGEyLjYgMi42IDAgMCAwIC42Ni4wOHYuMzJINC44Wm00Ljg0LTIuNzItMS4yNC0zaC0uMTFsLTEuMTYgM1oiIHN0eWxlPSJmaWxsOiM0ZDRkNGQiLz48L2c+PC9zdmc+)}.scylla-icon--infoworld{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTB9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNMTIgMi41SDYuNVY2YzAgMyAuNTUgNy4xNyA1IDkuNXY0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNi40IDQuNDRoLTRTMi41NiAxMSA4LjUgMTNNMTguNSA0LjVsNC0uMDZzLS4wNiA2LjU2LTYgOC41NiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTEyIDIuNWg2LjVWNmMwIDIuOTQtLjQgNy4wOC01IDkuNXY0TTkuNSAxOS41aDZ2MmgtNnoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik03LjUgMjEuNWgxMHYxaC0xMHoiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXkiLz48L2c+PC9zdmc+)}.scylla-icon--integrations{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTE0LjU2IDEyLjctMS4yNS0xLjU3LTEuMzEuNzZhNiA2IDAgMCAwLTEuNjUtMWwuMDgtMS40OS0yLS40LS41MyAxLjQ0YTUuNyA1LjcgMCAwIDAtMS44Ny4zMWwtLjg4LTEuMTktMS43NyAxTDMuOTIgMTJhNi4zIDYuMyAwIDAgMC0xLjIyIDEuNDFsLTEuNS0uMzUtLjc0IDEuODcgMS4zOC44YTYuMiA2LjIgMCAwIDAgMCAxLjgzbC0xLjQxLjcyLjY0IDEuOTEgMS41OS0uMjhhOCA4IDAgMCAwIC40OC42OCA2IDYgMCAwIDAgLjY3LjczbC0uNjIgMS40NiAxLjcyIDEgMS0xLjI0YTYuNSA2LjUgMCAwIDAgMS43OS4zNWwuNDYgMS41MiAyLS4zdi0xLjZhNi40IDYuNCAwIDAgMCAxLjYyLS44OWwxLjMuODVMMTQuNDMgMjFsLTEtMS4yYTYuMiA2LjIgMCAwIDAgLjY4LTEuNzVsMS41MS0uMTkuMDUtMi0xLjUxLS4yNmE2IDYgMCAwIDAtLjYyLTEuODFabS01LjM1IDUuNTFhMS45MyAxLjkzIDAgMSAxIC4zMS0yLjcxIDEuOTIgMS45MiAwIDAgMS0uMzEgMi43MSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTI0LjMxIDguMDUtLjEzLTEuNjUtMS4yNS0uMDlhNS4zIDUuMyAwIDAgMC0uNjctMS40NGwuNzUtMS0xLjE2LTEuMTctMSAuNzRhNS4yIDUuMiAwIDAgMC0xLjQzLS42NmwtLjA2LTEuMjQtMS42NS0uMTctLjMyIDEuMjVhNS44IDUuOCAwIDAgMC0xLjUyLjM4TDE1IDIuMWwtMS4zNy45LjU4IDEuMThhNC45IDQuOSAwIDAgMC0uODYgMS4yNWwtMS4zLS4xNi0uNDUgMS42IDEuMjIuNTVhNSA1IDAgMCAwIDAgLjY4QTQuMyA0LjMgMCAwIDAgMTMgOWwtMS4xMS43Mi42OSAxLjUxIDEuMjgtLjM3YTUgNSAwIDAgMCAxLjA3IDEuMDdsLS4zOSAxLjI2IDEuNS43MS43NC0xLjA5YTUgNSAwIDAgMCAxLjUyLjE0bC41IDEuMTkgMS42MS0uNDEtLjEzLTEuMjlhNS4xIDUuMSAwIDAgMCAxLjI3LS44OGwxLjEyLjU3IDEtMS4zNS0uOTEtLjg4YTQuOSA0LjkgMCAwIDAgLjQyLTEuNTJabS02LjIgMS40M2ExLjc0IDEuNzQgMCAxIDEgMS42LTEuODYgMS43NCAxLjc0IDAgMCAxLTEuNiAxLjg2IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--knowledge-base{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkfS5jbHMtMXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye3N0cm9rZS1taXRlcmxpbWl0OjEwfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl81IiBkYXRhLW5hbWU9IkxheWVyIDUiPjxwYXRoIGQ9Ik0xNi4yMSA2LjM4YTUuMzYgNS4zNiAwIDAgMS0xLjUxIDMuNzMgNSA1IDAgMCAwLTEuNDUgMy4zMUg4LjQ3YTUuNCA1LjQgMCAwIDAtMS4yOC0zLjExIDUuMzcgNS4zNyAwIDEgMSA5LTMuOTNaTTEzLjIzIDE1LjY3SDguNDUiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0xMy4yNCAxMy40aC00Ljh2NC4xNmEuNy43IDAgMCAwIC43MS43aDMuMzhhLjcuNyAwIDAgMCAuNzEtLjdaIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTAuODQgOC4yMWExLjY1IDEuNjUgMCAxIDEgMS42NC0xLjY1IDEuNjUgMS42NSAwIDAgMS0xLjY0IDEuNjVaTTEwLjg0IDguNjd2NC42NCIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--less{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNyIgZmlsbD0ibm9uZSI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiBmaWxsPSIjYjNiYWM1IiByeD0iMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMyA4LjVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMSAwLTJoN2ExIDEgMCAwIDEgMSAxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEzIDguNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxIDAtMmg3YTEgMSAwIDAgMSAxIDEiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTMgOC41YTEgMSAwIDAgMS0xIDFINWExIDEgMCAwIDEgMC0yaDdhMSAxIDAgMCAxIDEgMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMyA4LjVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMSAwLTJoN2ExIDEgMCAwIDEgMSAxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEzIDguNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxIDAtMmg3YTEgMSAwIDAgMSAxIDEiLz48L3N2Zz4=);filter:none}.scylla-icon--live-test{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtNntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWxpbmVjYXA6cm91bmR9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTUiIHI9IjkuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MS41cHgiLz48cGF0aCBkPSJNMTAgLjVoNXYyaC01eiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMXB4Ii8+PHBhdGggZD0iTTUuOCA4LjIgNC4xMyA2LjUzbDEuOC0xLjgxTDcuNiA2LjQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjExcHgiLz48cGF0aCBkPSJNMTIgNlYyLjUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjEuMTNweCIvPjxwYXRoIGQ9Ik0xMyA2VjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MS4wOHB4Ii8+PHBhdGggZD0iTTEyLjUgOC4wNlYxME0xMi41IDIwLjA0djEuODhNNy4xMyAxMC4wOGwxLjc5IDEuODhNMTYuMDQgMTcuMDhsMiAxLjg4TTcgMTguOTJsMS44OC0xLjg4TTE2LjEzIDExLjk2bDEuNzktMS44MyIgY2xhc3M9ImNscy02Ii8+PGVsbGlwc2UgY3g9IjEyLjUiIGN5PSIxNC4zNiIgcng9IjEuNSIgcnk9IjEuMzYiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJtMTIuNjMgMTQuNTQgMi41IDYuMzgiIGNsYXNzPSJjbHMtNiIvPjwvZz48L3N2Zz4=)}.scylla-icon--mail-list{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItbWFpbCI+PHBhdGggZD0iTTQgNGgxNmMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTIiLz48cGF0aCBkPSJtMjIgNi0xMCA3TDIgNiIvPjwvc3ZnPg==)}.scylla-icon--manager{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtM3tmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOTdweH0uY2xzLTR7ZmlsbDpncmF5fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGlkPSJDYWxxdWVfMiIgZD0iTTE4IDJoNXYyMkgzVjJoNC45MiIgZGF0YS1uYW1lPSJDYWxxdWUgMiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiLz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik04IDBoMTB2NEg4eiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDdweCIvPjxwYXRoIGQ9Ik03IDloM3YzSDd6TTcgMTZoM3YzSDd6IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNMTIuNSA5LjVoN3YyaC03ek0xMi41IDE2LjVoN3YyaC03eiIgY2xhc3M9ImNscy00Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--memory-management{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH0uY2xzLTJ7c3Ryb2tlLXdpZHRoOjEuMTNweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxyZWN0IHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgeD0iNS41IiB5PSI1LjUiIGNsYXNzPSJjbHMtMSIgcng9IjIuNzQiIHJ5PSIyLjc0Ii8+PHBhdGggZD0iTTkuNSA5LjVoN3Y3aC03eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTguNSA1LjV2LTRNMTEuNSA1LjV2LTRNMTQuNSA1LjV2LTRNMTcuNSA1LjV2LTRNOC41IDI0LjV2LTRNMTEuNSAyNC41di00TTE0LjUgMjQuNXYtNE0xNy41IDI0LjV2LTRNMjAuNSA4LjVoNE0yMC41IDExLjVoNE0yMC41IDE0LjVoNE0yMC41IDE3LjVoNE0xLjUgOC41aDRNMS41IDExLjVoNE0xLjUgMTQuNWg0TTEuNSAxNy41aDQiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--monitoring{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTUuNTUgMTAuODlhMy44MyAzLjgzIDAgMCAxLS4xNS0zLjc2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIvPjxyZWN0IHdpZHRoPSIzLjA1IiBoZWlnaHQ9IjEwLjgiIHg9IjE3LjYzIiB5PSIxNC4wMSIgcng9Ii41NyIgcnk9Ii41NyIgc3R5bGU9InN0cm9rZTpncmF5O2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk1cHg7c3Ryb2tlLW1pdGVybGltaXQ6MTAiIHRyYW5zZm9ybT0icm90YXRlKC00NSAxOS4xNTggMTkuNDA1KSIvPjxjaXJjbGUgY3g9IjguNSIgY3k9IjkiIHI9IjciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjJweCIvPjxwYXRoIGQ9Im0xNi4wNSAxNi4zOS0yLjI4LTIuMjgiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48L2c+PC9zdmc+)}.scylla-icon--networking{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTB9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTIuNSIgcj0iNCIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6Ljk0cHgiLz48Y2lyY2xlIGN4PSI1IiBjeT0iMyIgcj0iMi41IiBjbGFzcz0iY2xzLTIiLz48Y2lyY2xlIGN4PSIxOSIgY3k9IjIwIiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjIyIiBjeT0iNi42IiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjQuNSIgY3k9IjIyIiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Im02LjgzIDUuNSAzLjI1IDQuMzNNMjAuMjMgNy44NSAxNS4zMyAxMU05LjgzIDE1LjA4bC00LjA5IDUuODRNMTQuNTggMTUuMzNsMyAzLjA5IiBjbGFzcz0iY2xzLTIiLz48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTIuNSIgcj0iMS41IiBzdHlsZT0iZmlsbDpncmF5Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--news{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTMgMTUuMTcgMTYuMzEgMy44MmExLjQ4IDEuNDggMCAwIDEgMi4yMi40Nmw1LjE1IDkuNjVhMS40NiAxLjQ2IDAgMCAxLS45MyAyLjEyTDUuNjkgMTkuOVpNOC43MSAxOS4zM2wuNzYgMi4yMmExLjUxIDEuNTEgMCAwIDAgMS44NSAxbDMuNTgtMS4wNmExLjUgMS41IDAgMCAwIDEtMS44NkwxNS40NSAxOE01LjU0IDIwbC0xLjgzIDFhLjkyLjkyIDAgMCAxLTEuMjUtLjM3TC42MSAxNy40OUEuOTIuOTIgMCAwIDEgMSAxNi4yNGwxLjgzLTFNOC41IDE0bDcuMzgtNS41IiBjbGFzcz0iY2xzLTEiLz48L3N2Zz4=)}.scylla-icon--newsletter{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMntzdHJva2UtbGluZWNhcDpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik0xOS41IDkuNWgzdjEyaC0yMHYtMTJoMyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTIuNjUgOS44NCA5Ljg1IDYuODggOC42My02Ljg4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNS41IDcuNS0zIDJNMTQuMzUgMy44NmwtMS40Ni0xLjA5LTEuNDcgMS4wOU0yMS41IDkuNWwtMi0yTTE5LjUgMTEuNXYtN2gtMTR2Ny40NyIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--nsql-guides{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHJlY3Qgd2lkdGg9IjEuMTUiIGhlaWdodD0iOS43MiIgeD0iNC4zNyIgeT0iMTMuNzEiIHJ4PSIuNTQiIHJ5PSIuNTQiIHN0eWxlPSJmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOjEuMDlweDtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIgdHJhbnNmb3JtPSJyb3RhdGUoNDUgNC45NDggMTguNTcpIi8+PGNpcmNsZSBjeD0iMTIuMjUiIGN5PSIxMi4yNSIgcj0iNC43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MS41cHgiLz48cGF0aCBkPSJNOC41IDIwLjV2M2gxNXYtMjFoLTE1djIiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOm5vbmU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDZweCIvPjwvZz48L3N2Zz4=)}.scylla-icon--open-source{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNLjMxIDIxLjUxIDUgMTkuNjlhMi4zNyAyLjM3IDAgMCAxIDEuODguMTlsNS4yNCAxLjY4YTIuMjMgMi4yMyAwIDAgMCAyLS4xMmw5LjUtNC43NWMuOC0uNDQgMS42NC0xLjMxIDEuMTMtMS45MWEyLjM0IDIuMzQgMCAwIDAtMi42NC0uNDJMMTggMTYuMDkiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Im0uMjUgMTUuNjkgNC44OC0xLjIxYzEuMjUtLjMgMi4xNy0uNjMgMy40NC0uMTNhMTUuMiAxNS4yIDAgMCAwIDQgMS4xaDQuNTJjLjg1IDAgLjk1LjU0Ljk1IDEuMTNhMSAxIDAgMCAxLTEuMDggMSA2NiA2NiAwIDAgMS03LS4zMSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTguNTYgOS42OHYtLjgxYzAtLjkxLS4zOC0xLjIxLTEuMjktMS4yMUg3VjYuM2guMzFjLjkxIDAgMS4yOS0uMyAxLjI5LTEuMjF2LS44MWMwLTEuMi42Ni0xLjkyIDIuODItMi4zdjEuMTZjLTEuMjQuMzUtMS40My42OC0xLjQzIDEuNHYuODdBMS41MiAxLjUyIDAgMCAxIDguNzUgNyAxLjUyIDEuNTIgMCAwIDEgMTAgOC41NnYuODdjMCAuNzEuMTkgMSAxLjQzIDEuNFYxMmMtMi4yMS0uMzUtMi44Ny0xLjEyLTIuODctMi4zMk0xNy40MyA0LjN2LjgxYzAgLjkxLjM3IDEuMjEgMS4yOSAxLjIxSDE5djEuMzZoLS4zMWMtLjkyIDAtMS4yOS4zLTEuMjkgMS4yMXYuODFjMCAxLjItLjY1IDItMi44MSAyLjM1di0xLjJjMS4yNS0uMzYgMS40NC0uNjkgMS40NC0xLjR2LS44N0ExLjUzIDEuNTMgMCAwIDEgMTcuMjUgNyAxLjUzIDEuNTMgMCAwIDEgMTYgNS40M3YtLjg3YzAtLjcyLS4xOS0xLTEuNDQtMS40VjJjMi4yMi4zOCAyLjg3IDEuMSAyLjg3IDIuMyIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--operator{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjQuODEgMS4wMSAyOC4zMiAyNy42NCI+PHBhdGggZD0iTTMyLjUyIDE4cy0uMDkgMC0uMDktLjA1LS4wOCAwLS4xNyAwYTIuMiAyLjIgMCAwIDAtLjUxIDAgLjQ3LjQ3IDAgMCAxLS4yNi0uMDUgOS4zIDkuMyAwIDAgMS0xLjQ5LS4zMi41NC41NCAwIDAgMS0uMy0uMzFsLS4zNC0uMDhhMTEuMyAxMS4zIDAgMCAwLS4xOC0zLjc5IDExLjYgMTEuNiAwIDAgMC0xLjUtMy41MmwuMjYtLjI2YS42LjYgMCAwIDEgLjEzLS4zOSA3LjcgNy43IDAgMCAxIDEuMi0uODZsLjI2LS4xMy40Ny0uM3MuMDkgMCAuMTMtLjA4IDAtLjA1IDAtLjA5YS44NC44NCAwIDAgMCAuMTctMS4yLjc4Ljc4IDAgMCAwLS42LS4zIDEgMSAwIDAgMC0uNi4yMWMtLjA1LjA1LS4wOS4wOS0uMTMuMDlhMyAzIDAgMCAwLS4zNS4zOWMwIC4wOC0uMTMuMTMtLjE3LjE3YTUuNiA1LjYgMCAwIDEtMS4wNy45NC42LjYgMCAwIDEtLjI2LjA5LjI1LjI1IDAgMCAxLS4xNyAwaC0uMDVsLS4zNC4yMS0xLjA4LTFhMTEgMTEgMCAwIDAtNS42NS0yLjI3di0uMzRhLjYuNiAwIDAgMS0uMjItLjM0QTggOCAwIDAgMSAxOS42NiAzdi0uMjVjMC0uMDguMDUtLjM1LjA5LS41MnYtLjMxYS44Mi44MiAwIDAgMC0xLjQ2LS42Ljg2Ljg2IDAgMCAwLS4yNi42di4yMmExLjggMS44IDAgMCAwIC4wOS41MS42LjYgMCAwIDEgMCAuMjZWM2E5IDkgMCAwIDEgLjA4IDEuNDcuNi42IDAgMCAxLS4yMS4zNHYuNDNjLS40OCAwLTEgLjEzLTEuNDcuMjJhMTAuMTYgMTAuMTYgMCAwIDAtNS4yOCAzTDExIDguMjRoLS4xN2EuNy43IDAgMCAxLS4yNi0uMDkgOCA4IDAgMCAxLTEuMDctMWMwLS4wOC0uMTMtLjEzLS4xNy0uMTdzLS4yNS0uMi0uMzMtLjMzLS4wOCAwLS4xMy0uMDh2LS4wNWExIDEgMCAwIDAtLjYtLjIxLjY0LjY0IDAgMCAwLS42LjMuOTEuOTEgMCAwIDAgLjE3IDEuMnMwIC4wNSAwIC4wNS4wOS4wOC4xMy4wOGE1IDUgMCAwIDAgLjQ3LjI2bC4yNi4xM2E2LjYgNi42IDAgMCAxIDEuMjEuODYuNDcuNDcgMCAwIDEgLjEzLjM5di0uMDVsLjI1LjI2YTMgMyAwIDAgMS0uMTMuMjIgMTAuMiAxMC4yIDAgMCAwLTEuNSA3bC0uMzUuMDljMCAuMTMtLjE3LjIxLS4zLjNhOC42IDguNiAwIDAgMS0xLjQ2LjI2LjYuNiAwIDAgMC0uMjYgMGgtLjUyYy0uMTggMC0uMDguMDUtLjE3LjA1aC0uMDhhLjg0Ljg0IDAgMCAwLS42OSAxIC43OS43OSAwIDAgMCAuODYuNi40LjQgMCAwIDAgLjIxIDBoLjIyYTQgNCAwIDAgMCAuNDctLjE3LjY1LjY1IDAgMCAxIC4yNi0uMDggNy43IDcuNyAwIDAgMSAxLjQyLS4zOS41LjUgMCAwIDEgLjM1LjEzaC4zOWExMC4zIDEwLjMgMCAwIDAgMy41MyA1IDYuMyA2LjMgMCAwIDAgMS4xNi43N2wtLjIyLjNhLjUxLjUxIDAgMCAxIDAgLjQzIDYuNSA2LjUgMCAwIDEtLjY5IDEuMjR2LjA1YS44LjggMCAwIDEtLjE3LjIxYy0uMDkuMDktLjE3LjI2LS4zLjQzczAgLjA5LS4wOS4xMyAwIC4wNSAwIC4wNWEuODguODggMCAwIDAgLjM0IDEuMTYuOS45IDAgMCAwIC4zLjA4IDEgMSAwIDAgMCAuODItLjUxczAtLjA4LjA5LS4xMy4xMy0uMy4xNy0uNDdsLjA5LS4yNmE3IDcgMCAwIDEgLjU2LTEuMzMuNjIuNjIgMCAwIDEgLjM0LS4yNmwuMTctLjM1YTEwIDEwIDAgMCAwIDMuNzUuNjkgOC41IDguNSAwIDAgMCAyLjMyLS4zIDEyIDEyIDAgMCAwIDEuMzctLjM5bC4xOC4zMWEuNjIuNjIgMCAwIDEgLjM0LjI2IDcgNyAwIDAgMSAuNTYgMS4zM2wuMDkuMjZhMS4zIDEuMyAwIDAgMCAuMTcuNDdjMCAuMDUgMCAuMDkuMDkuMTNhMSAxIDAgMCAwIC44Mi41MSAxIDEgMCAwIDAgLjM0LS4wOC43Ni43NiAwIDAgMCAuMzktLjQ4IDEuMSAxLjEgMCAwIDAtLjA1LS42NC4yLjIgMCAwIDAtLjA4LS4xMyAxLjUgMS41IDAgMCAwLS4zMS0uNDMuNjUuNjUgMCAwIDAtLjE3LS4yMnYtLjA5YTUuMiA1LjIgMCAwIDEtLjY5LTEuMjQuNTEuNTEgMCAwIDEgLjA1LS40M2wtLjEzLS4zNEExMC42OCAxMC42OCAwIDAgMCAyOSAxOC44MmwuMzQuMDV2LS4wNWEuNTQuNTQgMCAwIDEgLjM1LS4xMyA4IDggMCAwIDEgMS4zOC4zOS42LjYgMCAwIDAgLjI2LjA5IDIuNCAyLjQgMCAwIDAgLjQ3LjIxcy4wOSAwIC4xNyAwaC4wOWEuNC40IDAgMCAwIC4yMSAwIC45NC45NCAwIDAgMCAuODYtLjYgMSAxIDAgMCAwLS43Ny0uOVptLTEyLjQzLTEuMzMtMS4xNi41Ni0xLjE2LS41Ni0uMy0xLjI1LjgxLTFoMS4yOWwuODIgMVptNy0yLjc5YTggOCAwIDAgMSAuMTcgMi43MWwtNC4xNS0uNzVjLS4zOC0uMDgtLjY4LS45LS43MS0xLjIyYTQgNCAwIDAgMSAuMjEtLjc0bDMuNDUtMi41NGE4LjYgOC42IDAgMCAxIDEuMDQgMi41NFptLTIuMzEtNC4xMy0zLjIyIDIuNjlhMS4yOCAxLjI4IDAgMCAxLTEuMjUtLjM3Yy0uMDktLjA5LS4zNy0uMjUtLjM3LS4zOFY3LjQzYTguMDcgOC4wNyAwIDAgMSA0Ljg2IDIuMzJaTTE3IDcuNTZsMS0uMTgtLjA2IDQuMzFjMCAuMzgtLjY0LjY4LTEgLjY4YTEuMSAxLjEgMCAwIDEtLjM1LS4wOEwxMyA5Ljc1YTguNCA4LjQgMCAwIDEgNC0yLjE5bS01LjI0IDMuNzggMy4zNyAyLjQ3LjMyLjUzYTEuMTQgMS4xNCAwIDAgMS0uMjUgMSAuNzguNzggMCAwIDEtLjM4LjMxbC00LjMxLjlhOSA5IDAgMCAxIDEuMjQtNS4yMVpNMTEgMTguNjFsNC4xLTEuMjNjLjM1IDAgLjg0LjcxLjg5IDEuMDZhLjUxLjUxIDAgMCAxLS4wNS40M2wtMS42MyAzLjk1QTguNCA4LjQgMCAwIDEgMTEgMTguNjFtOS43NiA1LjMzYTguNyA4LjcgMCAwIDEtMS44NS4yMSA5LjYgOS42IDAgMCAxLTIuNzEtLjQzbDEuNjYtNGMuMjEtLjI2IDEtLjIgMS4zMSAwYTIuNSAyLjUgMCAwIDEgLjM0LjNsMi4wNyAzLjc0YTYgNiAwIDAgMC0uOC4xOFpNMjYgMjAuMmE4LjQgOC40IDAgMCAxLTIuNTggMi41OGwtMS45Mi0zLjcyYTEuMTUgMS4xNSAwIDAgMSAuNDEtMWMuMjEtLjI1LjU5LS41OS43MS0uNTlsNC4yMiAxLjA2QTYuMyA2LjMgMCAwIDEgMjYgMjAuMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiIgc3R5bGU9ImZpbGw6IzRkNGQ0ZCIvPjwvc3ZnPg==)}.scylla-icon--overview{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIyLjYxIDMuNDVDMjIuNjEgNS4wNiAxOCA2LjUgMTIuNSA2LjVzLTEwLTEuNDQtMTAtMyA0LjUtMyAxMC0zIDEwLjExIDEuMzMgMTAuMTEgMi45NU0yMi42MSA5LjQ0YzAgMS42MS00LjY0IDMuMDYtMTAuMTEgMy4wNnMtMTAtMS40NS0xMC0zLjA2TTIyLjYxIDE1LjUxYzAgMS42Mi00LjY0IDMtMTAuMTEgM3MtMTAtMS4zNy0xMC0zTTIyLjYxIDIxLjU5YzAgMS42Mi00LjY0IDIuOTEtMTAuMTEgMi45MXMtMTAtMS4yOS0xMC0yLjkxTTIuNSAyMS40N1YzLjQ1TTIyLjUgMjEuNDdWMy40NSIgY2xhc3M9ImNscy0xIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--partners{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTE4LjUgOC4yNmgtNC43MmwtMS4yMyAxLjI3TTIuMzkgMTUuMDkuMTUgMTMuNzRsNC44Ny04LjQyIDIuMjQgMS4zNHpNMjIuNTkgMTUuMDlsMi4yNC0xLjM1LTQuODYtOC40Mi0yLjI0IDEuMzR6TTEwLjcxIDE1LjI2bC0yLjkzIDIuMjFNMTIuMTggMTYuNGwtMi45MyAyLjIxTTEzLjY4IDE3LjUzbC0yLjkzIDIuMjIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik02LjM4IDguM2gzLjc4YTIuMjcgMi4yNyAwIDAgMSAxLjM3LjQ3YzEuMjYgMSA0LjA5IDMuMTggNC40OCAzLjU2cy0xLjE0IDEuNjgtMi4yNyAxLjFhMTggMTggMCAwIDAtMi4xMS0uOTIuNTcuNTcgMCAwIDAtLjU2LjA5bC00Ljc5IDMuODlMMTIuMzMgMjFsOS40Ni03LjA5TTMuMjQgMTQuMjJsMy40IDEuODUiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--plus{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNyIgZmlsbD0ibm9uZSI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiBmaWxsPSIjYjNiYWM1IiByeD0iMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSA1YTEgMSAwIDEgMC0yIDB2Mi41SDVhMSAxIDAgMSAwIDAgMmgyLjVWMTJhMSAxIDAgMSAwIDIgMFY5LjVIMTJhMSAxIDAgMSAwIDAtMkg5LjV6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgNWExIDEgMCAxIDAtMiAwdjIuNUg1YTEgMSAwIDEgMCAwIDJoMi41VjEyYTEgMSAwIDEgMCAyIDBWOS41SDEyYTEgMSAwIDEgMCAwLTJIOS41eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS41IDVhMSAxIDAgMSAwLTIgMHYyLjVINWExIDEgMCAxIDAgMCAyaDIuNVYxMmExIDEgMCAxIDAgMiAwVjkuNUgxMmExIDEgMCAxIDAgMC0ySDkuNXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSA1YTEgMSAwIDEgMC0yIDB2Mi41SDVhMSAxIDAgMSAwIDAgMmgyLjVWMTJhMSAxIDAgMSAwIDIgMFY5LjVIMTJhMSAxIDAgMSAwIDAtMkg5LjV6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgNWExIDEgMCAxIDAtMiAwdjIuNUg1YTEgMSAwIDEgMCAwIDJoMi41VjEyYTEgMSAwIDEgMCAyIDBWOS41SDEyYTEgMSAwIDEgMCAwLTJIOS41eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+);filter:none}.scylla-icon--pricing{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0ibTIxLjczIDctMi40MS01LjEyYTIuNTIgMi41MiAwIDAgMC0yLjgyLTFsLTYuMDggMi4wNEExLjY5IDEuNjkgMCAwIDAgOS41MSA0TDMuOTMgMTkuMjlhMS4wNiAxLjA2IDAgMCAwIC42NCAxLjE3bDEwLjM0IDMuNzZhMSAxIDAgMCAwIDEuMjItLjQzbDUuNTgtMTUuMzNBMS44NyAxLjg3IDAgMCAwIDIxLjczIDciIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjE1LjczIiBjeT0iNS44OSIgcj0iMiIgY2xhc3M9ImNscy0xIi8+PHRleHQgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZpbGw6Z3JheTtmb250LWZhbWlseTpSb2JvdG8tTWVkaXVtLFJvYm90byIgdHJhbnNmb3JtPSJyb3RhdGUoMjAgLTQ4LjI0NCAzMC42NykiPiQ8L3RleHQ+PC9nPjwvc3ZnPg==)}.scylla-icon--release-note{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOTFweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzIiIGRhdGEtbmFtZT0iQ2FscXVlIDIiPjxwYXRoIGQ9Ik0yMS41IDI0LjVoLTE3VjUuN0w4Ljk1LjU0IDIxLjUuNXoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOXB4Ii8+PHBhdGggZD0iTTQuNjUgNS41SDkuNVYxTTcuNSA4LjVoMTFNNy41IDExLjVoMTFNNy41IDE0LjVoMTFNNy41IDE3LjVoMTFNNy41IDIwLjVoMTEiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--resource-center{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNNS41IDIuNWg2LjkxbC4wOSAyMGgtN3oiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik04IDRoMnYxMC45N0w4IDE1eiIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTUuMzYgMi4yOSAyLjUgMy41djE4bDIuNzkgMS4xNCIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTEyLjU3IDIxLjg2IDEuNTcuNzUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouNjhweCIvPjxwYXRoIGQ9Im0xNC4xMSAyLjUtMS41NC41NyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOi44NXB4Ii8+PGNpcmNsZSBjeD0iOSIgY3k9IjE5IiByPSIxIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJNMTQuNSAyLjVoNi45NGwuMDYgMjBoLTd6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTcgNGgydjEwLjk3TDE3IDE1eiIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOSIgcj0iMSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTEyLjYgMi43M2gxLjY3VjIyLjZIMTIuNnpNMi41OCAyMS41bDIuNzUgMS4xVjIuNzNsLTIuNjYuOTR6IiBjbGFzcz0iY2xzLTIiLz48L2c+PC9zdmc+)}.scylla-icon--roadmap{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5fS5jbHMtMXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOi45OHB4fS5jbHMtMntzdHJva2UtbWl0ZXJsaW1pdDoxMH0uY2xzLTN7ZmlsbDpncmF5fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibS41IDQuNSA4LTMgOCA0IDgtM3YxN2wtOCAzLTgtNC04IDN6TTguNSAxLjVWMThNMTYuNSA1LjVWMjIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0yLjUgMTMgNyAxNi41TTcgMTJsLTQuNSA1LjVNMTguNSA4bDQuNSAzLjVNMjMgN2wtNC41IDUuNSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTEwIDEzaDF2MWgtMXpNMTIgMTJoMXYxaC0xek0xNCAxMWgxdjFoLTF6IiBjbGFzcz0iY2xzLTMiLz48L2c+PC9zdmc+)}.scylla-icon--search{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTEwLjUgMThhNy41IDcuNSAwIDEgMCAwLTE1IDcuNSA3LjUgMCAwIDAgMCAxNU0yMSAyMWwtNS4yLTUuMiIvPjwvc3ZnPg==)}.scylla-icon--slack{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tISBGb250IEF3ZXNvbWUgUHJvIDYuMC4wIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIyIEZvbnRpY29ucywgSW5jLi0tPjxwYXRoIGQ9Ik05NC4xMiAzMTUuMWMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZTMCAzNDEgMCAzMTUuMXMyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNmg0Ny4wNnptMjMuNzIgMGMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ2MTE3Ljg0YzAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNnMtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZ6bTQ3LjA2LTE4OC45OGMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2UzEzOSAzMiAxNjQuOSAzMnM0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnY0Ny4wNnptMCAyMy43MmMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2SDQ3LjA2QzIxLjE2IDI0My45NiAwIDIyMi44IDAgMTk2LjlzMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZ6bTE4OC45OCA0Ny4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZTNDQ4IDE3MSA0NDggMTk2LjlzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2aC00Ny4wNnptLTIzLjcyIDBjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2cy00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlY3OS4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ6TTI4My4xIDM4NS44OGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZTMzA5IDQ4MCAyODMuMSA0ODBzLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2di00Ny4wNnptMC0yMy43MmMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2czIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDExNy44NGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2eiIvPjwvc3ZnPg==)}.scylla-icon--stack-overflow{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIzMSIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJtMjEuOTQ5LjExMyAyLjA0MyAxMS42Ny0yLjUxNC40MzJMMTkuNDM1LjU0NXptLTE3Ljk3MyAyNiAxMS45NDUtLjAwNS0uMDAyLTIuNTMtMTEuOTQ0LjAwNnptMTIuMjMyLTUuNzc3TDQuMzE1IDE5LjI1bC0uMjM1IDIuNTIgMTEuODk0IDEuMDg1em0tMTAuNzUtNi4zNzUgMTEuNTM1IDMuMDc0LS42NjIgMi40NDMtMTEuNTM1LTMuMDc1em0xMy4wNC4xOEw4LjIxMiA4LjEyNmwtMS4yOTcgMi4xNzggMTAuMjg5IDYuMDE3em0tNC4yMDYtMTEuNTYgNi43MyA5Ljc4Ny0yLjEwOCAxLjQyNC02LjczLTkuNzg1eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTE3Ljk1IDE3Ljc4OVYyOC4xM0gyLjI4MlYxNy43ODlILjI0M3YxMi4zMjZIMTkuOThWMTcuNzg5eiIvPjwvc3ZnPg==)}.scylla-icon--summit{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6IzRkNGQ0ZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0ibTE2LjUgMjIgMS02LjUtMTAgLjAzIDEgNi40MyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTMuNDYgMTJBNS42OSA1LjY5IDAgMCAxIDUgNy41IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MS4xcHgiLz48cGF0aCBkPSJNMTQuNjIgNWEyLjMzIDIuMzMgMCAwIDEtMi4yNSAyLjVjLTEuMzMgMC0yLTEuMTItMS45NS0yLjQ0cy43LTIuNSAyLTIuNDhBMi4yNyAyLjI3IDAgMCAxIDE0LjYyIDVNMTcuNTggMTJhMy4yMyAzLjIzIDAgMCAwLTMuNDYtMy41SDExQTMuMjYgMy4yNiAwIDAgMCA3LjUgMTIiIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjQuOTQiIGN5PSI2Ljk2IiByPSIxLjAxIiBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjFweDtmaWxsOiM0ZDRkNGQiLz48cGF0aCBkPSJNNy41NCAxOC41SDQuNWwtMi02aDIwbC0yIDZoLTMiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--support{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTE4LjE5IDcuNWExMCAxMCAwIDAgMSAuMjEgMi4wN2MwIDQuMzYtMi42MyA2LjkzLTUuOSA2Ljkzcy01Ljk0LTIuNTctNS45NC02LjkzYTEwLjUgMTAuNSAwIDAgMSAuMjItMi4xMiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTcuNjcgMi4yM0E2LjU4IDYuNTggMCAwIDEgMTIuNS41YTUuNjUgNS42NSAwIDAgMSA0LjI5IDEuN2MxLjkzIDEuOTQgMi4zNSA1LjA3IDIuNDMgNi43MmExLjUgMS41IDAgMCAwLS43OS4wNSA5IDkgMCAwIDAtLjA4LTEuMTZoMGE1LjUzIDUuNTMgMCAwIDEtMS43Ny0yLjM0TDE2LjQ5IDVsLS4zOC4yMkExOSAxOSAwIDAgMSA2LjggNy4zOGEuNTIuNTIgMCAwIDAtLjQyLjE2Yy0uMjMuMjQtLjE1LjY1LS4wNyAxLjA4IDAgLjExIDAgLjIyLjA1LjMyYTEuNCAxLjQgMCAwIDAtLjU4IDBjLS4xLTEuNDUtLjA2LTQuNjggMS44OS02LjcxTTYuMzggOWMtLjY1LS4wOC0xIC4xLTEuMTQuNzlhMi4wNiAyLjA2IDAgMCAwIDEuMzcgMi4yOU0xOC41NiA5Yy42NS0uMDggMS4wNS4xIDEuMTQuNzlhMi4wNiAyLjA2IDAgMCAxLTEuMzcgMi4yOU05LjUgMTguMjNWMTUuNU0xNS41IDE1LjV2Mi43M00yLjUgMjQuMTZjLjI0LTIgLjU5LTMuNjMgMi40My00LjQ5YTI0LjMgMjQuMyAwIDAgMSA0LjgyLTEuMzdNMjIuNSAyNC4zM2MtLjI0LTItLjQyLTMuOC0yLjI2LTQuNjZhMjQuMyAyNC4zIDAgMCAwLTQuODItMS4zNyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1LjM5IDE4LjM5YTQuMzcgNC4zNyAwIDAgMS0yLjkxIDEuMDcgNC40MiA0LjQyIDAgMCAxLTIuODktMS4wNSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTExIDEzaDN2MmgtM3oiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTguMDcgMTJhOS4yIDkuMiAwIDAgMS01LjUzIDIuMDciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48L2c+PC9zdmc+)}.scylla-icon--tech-talks{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTguMzkgNC41SDIzLjV2MTNoLTE1IiBjbGFzcz0iY2xzLTEiLz48Y2lyY2xlIGN4PSI0LjUiIGN5PSI2LjUiIHI9IjIiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNMS41IDkuNWgybC44Ljg2LjctLjg2aDUuNThhMSAxIDAgMSAxIDAgMkg2LjV2MTAuODhhMSAxIDAgMCAxLTEgMS4xMiAxIDEgMCAwIDEtMS0xIDEgMSAwIDAgMS0xIDEgLjkzLjkzIDAgMCAxLTEtMXYtNmMtLjc4IDAtMi0uNDctMi0xdi01YTEgMSAwIDAgMSAxLTEiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--testing{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTYuNSA2LjVoMTJ2MTJoLTEyeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTQuNSA0LjVoMTZ2MTZoLTE2eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTguNSAxMC41IDUgNSAxMS0xMiIgY2xhc3M9ImNscy0xIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--thumbs-up{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXRodW1icy11cCI+PHBhdGggZD0iTTE0IDlWNWEzIDMgMCAwIDAtMy0zbC00IDl2MTFoMTEuMjhhMiAyIDAgMCAwIDItMS43bDEuMzgtOWEyIDIgMCAwIDAtMi0yLjN6TTcgMjJINGEyIDIgMCAwIDEtMi0ydi03YTIgMiAwIDAgMSAyLTJoMyIvPjwvc3ZnPg==)}.scylla-icon--thumbs-down{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXRodW1icy1kb3duIj48cGF0aCBkPSJNMTAgMTV2NGEzIDMgMCAwIDAgMyAzbDQtOVYySDUuNzJhMiAyIDAgMCAwLTIgMS43bC0xLjM4IDlhMiAyIDAgMCAwIDIgMi4zem03LTEzaDIuNjdBMi4zMSAyLjMxIDAgMCAxIDIyIDR2N2EyLjMxIDIuMzEgMCAwIDEtMi4zMyAySDE3Ii8+PC9zdmc+)}.scylla-icon--tip{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEyIDI0QzUuNCAyNCAwIDE4LjYgMCAxMlM1LjQgMCAxMiAwczEyIDUuNCAxMiAxMi01LjQgMTItMTIgMTJtMC0yMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDIiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTEgMTZjLS4zIDAtLjUtLjEtLjctLjNsLTMtM2MtLjQtLjQtLjQtMSAwLTEuNHMxLS40IDEuNCAwbDMgM2MuNC40LjQgMSAwIDEuNC0uMi4yLS40LjMtLjcuMyIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMSAxNmMtLjMgMC0uNS0uMS0uNy0uMy0uNC0uNC0uNC0xIDAtMS40bDYtNmMuNC0uNCAxLS40IDEuNCAwcy40IDEgMCAxLjRsLTYgNmMtLjIuMi0uNC4zLS43LjMiLz48L3N2Zz4=)}.scylla-icon--training{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0iTTE3LjUgMTUuNUguNXYtMTNoMThNNS41IDI1bDQtNC4zIDQgNC4zIiBjbGFzcz0iY2xzLTEiLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjQiIHI9IjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjxwYXRoIGQ9Ik0yMy40MSA3LjVoLTEuNTJMMjEgOWwtLjktMS41SDEzQTEuOCAxLjggMCAwIDAgMTEuNSA5YTEuOCAxLjggMCAwIDAgMS41IDEuNWg0LjV2MTMuMjRBMS40MSAxLjQxIDAgMCAwIDE5IDI1YTEuNDIgMS40MiAwIDAgMCAxLjUtMS4yMiAxLjUzIDEuNTMgMCAwIDAgMyAwdi03LjExYTEuMTEgMS4xMSAwIDAgMCAxLjA5LTEuMThWOC42N2ExLjE4IDEuMTggMCAwIDAtMS4xOC0xLjE3TTkuNSAxNS40NHY1LjM4IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--triangle-down{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI1IiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSIjM2EyZDU1IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0wIDAgNSA1IDUtNXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==)}.scylla-icon--university{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTEuNSA4LjUgMTEtNCAxMSA0djNsLTExIDQtMTEtNHoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik01LjUgMTIuNXY1YTEyLjQ2IDEyLjQ2IDAgMCAwIDcgMiAxMS4yIDExLjIgMCAwIDAgNy0ydi01IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMTMuNSA5LjUgOCAxLjIzdjguNzdNMjIuNSAxNi41djMiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--users-blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIzLjUgMi41aC0yMnYxNmgxM3Y0LjE3bDQuMDQtNC4xNyA0Ljk2LS4wNHoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOThweCIvPjxwYXRoIGQ9Ik0xMC44NSA4QTEwLjQgMTAuNCAwIDAgMSAxMSA5LjVjMCAyLjQ3LTEuMjEgNC0zIDRzLTMuNS0yLTMuNS00LjVhNC4yIDQuMiAwIDAgMSAwLTEiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik01LjIgNS4wN2EzLjIyIDMuMjIgMCAwIDEgMi41LTEgMy4xNiAzLjE2IDAgMCAxIDIuNCAxIDYuMjIgNi4yMiAwIDAgMSAxLjMgMy44MS43NC43NCAwIDAgMC0uNDIgMGMwLS4yNCAwLS40NC0uMDUtLjY2aDBBMyAzIDAgMCAxIDEwIDYuOXYtLjI0bC0uMjEuMTJBOS42IDkuNiAwIDAgMSA0LjczIDhhLjI1LjI1IDAgMCAwLS4yMi4wOWMtLjEzLjE0LS4wOS4zNyAwIC42MXYuMThhLjkuOSAwIDAgMC0uMzIgMEE1LjM3IDUuMzcgMCAwIDEgNS4yIDUuMDdNNC41MSA4LjkzYy0uMzUgMC0uNTcuMDUtLjYxLjQ0YTEuMTcgMS4xNyAwIDAgMCAuNzMgMS4zTTExIDguOTNjLjM2IDAgLjU3LjA1LjYyLjQ0YTEuMTcgMS4xNyAwIDAgMS0uNzQgMS4zTTYuMzEgMTQuMTN2LS44NE05LjI1IDEzLjE5di45NE0yLjQyIDE4Yy4xMy0xLjE1LjU4LTIuNTIgMS41OC0zYTE1IDE1IDAgMCAxIDIuMzEtLjgyTTEzLjUgMThjLS4xMy0xLjE1LS41MS0yLjUyLTEuNS0zcy0yLjUtMS0yLjUtMSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTkuMzQgMTQuMjJhMi4yMyAyLjIzIDAgMCAxLTEuNTYuNjEgMi4zMiAyLjMyIDAgMCAxLTEuNTUtLjU5TTIxLjUgNi41aC03TTIxLjUgOS41aC03TTE4LjUgMTIuNWgtNCIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--warning{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PG1hc2sgaWQ9ImEiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMSIgeD0iMCIgeT0iMSIgbWFzay10eXBlPSJhbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZmlsbD0iIzA2MTkzOCIgZD0iTTMuNSAyMmMtLjUgMC0xLS4xLTEuNS0uNEMuNiAyMC44LjEgMTguOS45IDE3LjVMOS40IDMuM2MuMy0uNC42LS44IDEtMSAuNy0uNCAxLjUtLjUgMi4zLS4zczEuNC43IDEuOSAxLjRMMjMgMTcuNWMuMy41LjQgMSAuNCAxLjUgMCAuOC0uMyAxLjYtLjkgMi4xLS41LjYtMS4yLjktMiAuOXptNy42LTE3LjZMMi43IDE4LjVjLS4zLjUtLjEgMS4xLjQgMS40LjEuMS4zLjEuNC4xaDE2LjljLjMgMCAuNS0uMS43LS4zcy4zLS40LjMtLjdjMC0uMiAwLS4zLS4xLS41TDEyLjkgNC40Yy0uMy0uNS0uOS0uNi0xLjQtLjQtLjIuMS0uMy4yLS40LjQiLz48cGF0aCBmaWxsPSIjMDYxOTM4IiBkPSJNMTIgMTRjLS42IDAtMS0uNC0xLTFWOWMwLS42LjQtMSAxLTFzMSAuNCAxIDF2NGMwIC42LS40IDEtMSAxTTEyIDE4Yy0uMyAwLS41LS4xLS43LS4zcy0uMy0uNC0uMy0uN2MwLS4xIDAtLjMuMS0uNHMuMS0uMi4yLS4zLjItLjIuMy0uMmMuMi0uMS40LS4xLjYtLjEuMSAwIC4xIDAgLjIuMS4xIDAgLjEgMCAuMi4xIDAgMCAuMS4xLjIuMS4xLjEuMi4yLjIuM3MuMS4zLjEuNGMwIC4zLS4xLjUtLjMuNy0uMy4yLS41LjMtLjguMyIvPjwvbWFzaz48ZyBtYXNrPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjMDYxOTM4IiBkPSJNMCAwaDI0djI0SDB6Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--webinars{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTEuNSA1LjVoMjJ2MTRoLTIyeiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjxwYXRoIGQ9Ik05LjQ3IDIwLjV2MS44OE0xNS41IDIwLjV2Mk02LjUgMjIuNWgxMiIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0ibTkgOSA3LjUgMy41M0w5IDE2eiIgc3R5bGU9ImZpbGw6Z3JheSIvPjwvZz48L3N2Zz4=)}.scylla-icon--whitepapers{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTggOWg4djJIOHoiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTQuMDYgMS41IDMuNSAxLjUyVjIzLjVoMTdWN3oiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0xNC4zMiAxLjQydjMuMzdhMi4wNiAyLjA2IDAgMCAwIDIuMDggMi4xaDMuNjciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNNi41IDE5LjVoNE0xMy41IDE5LjVoNE02LjUgMTYuNWg0TTEzLjUgMTYuNWg0TTYuNSAxMy41aDRNMTMuNSAxMy41aDQiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--workshop{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkfS5jbHMtMXtzdHJva2UtbWl0ZXJsaW1pdDoxMH0uY2xzLTJ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTEuNSA1LjVoMjJ2MTRoLTIyeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTkuNSAxOS41LS4wMyAyLjg4TTE1LjUgMTkuNXYzTTYuNSAyMi41aDEyIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJtNCA4IDIgOCAuOTctMy45NUwxMSAxMnoiIHN0eWxlPSJmaWxsOiM0ZDRkNGQiLz48cGF0aCBkPSJtNi40NyAxMS4zNCAzLjM3IDQuMjgiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.button{background:transparent;border:1px solid var(--text-color);border-radius:4px;color:var(--text-color);display:inline;font-size:14px;letter-spacing:1px;line-height:21px;margin:0;padding:12px 14px}.button:focus,.button:hover{background:transparent;color:var(--link-color);text-decoration:none}.button--reverse{border:0}.button--reverse,.button--reverse:focus,.button--reverse:hover{background:var(--bg-color)}.tooltip{background-color:var(--tooltip-bg);border:0;border-radius:4px;font-size:12px;max-width:50%;padding:6px}.tooltip:before,.tooltip:empty{display:none!important}.has-tip{border:0;cursor:pointer}.content .has-tip{cursor:help;font-weight:inherit;text-decoration:underline;text-decoration-style:dotted}.scylla-dropdown{color:var(--text-color);font-size:14px;line-height:20px}.scylla-dropdown a,.scylla-dropdown a:focus,.scylla-dropdown a:hover{color:var(--text-emphasis)!important;padding:0!important}.scylla-dropdown__item{font-size:16px;padding:15px}.scylla-dropdown__title{align-items:center;color:inherit;display:flex!important;position:static!important}.scylla-dropdown__title:after{display:none!important}.scylla-dropdown__title .chevron{min-height:5px;width:10px}.scylla-dropdown__content{background:var(--white);border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);font-size:16px;list-style:none;margin-top:15px;overflow:hidden;padding:16px 0;width:max-content}.scylla-dropdown__content li{padding:7px 16px}.scylla-dropdown__content li a{align-items:center;display:flex}.scylla-dropdown__content li i{font-size:24px;margin-right:10px}.enlarge-image{cursor:zoom-in}.enlarge-image-reveal{background:transparent;border:none;cursor:zoom-out;padding:0;text-align:center;width:fit-content}.enlarge-image-reveal img{background-color:var(--white);padding:15px}.header{background-color:var(--card-bg);box-shadow:0 2px 22px rgba(0,0,0,.1);justify-content:space-between;padding:12.75px 0;position:fixed;width:100%;z-index:99}.header,.header-logo{align-items:center;display:flex}.header-logo{margin-left:20px;width:auto}.header-logo__img{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0ze2ZpbGw6IzRkOWJiNn0uY2xzLTR7ZmlsbDojM2IyZDU1fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8xIj48cGF0aCBkPSJNMTg1LjYgMTAzLjFjMi4xIDMuMSA0LjggNS41IDggNi45IDMuMyAxLjUgNi42IDIuMiAxMC4xIDIuMnMzLjktLjMgNS45LS45IDMuOC0xLjUgNS41LTIuN2MxLjYtMS4yIDMtMi43IDQtNC41czEuNi0zLjggMS42LTYuMi0xLTUuOC0zLjEtNy41LTQuNy0zLjItNy44LTQuM2MtMy4xLTEuMi02LjUtMi4zLTEwLjEtMy40LTMuNy0xLjEtNy0yLjYtMTAuMS00LjVxLTQuNjUtMi44NS03LjgtNy44Yy0yLjEtMy4zLTMuMS03LjctMy4xLTEzLjJzLjUtNS4yIDEuNi04IDIuOC01LjQgNS4xLTcuNyA1LjMtNC4zIDktNS45cTUuNTUtMi40IDEzLjItMi40YzcuNjUgMCA5LjEuNiAxMy40IDEuOXM4IDMuOSAxMS4yIDcuOWwtOS40IDguNmMtMS41LTIuMy0zLjUtNC4xLTYuMi01LjQtMi43LTEuNC01LjctMi4xLTkuMS0yLjFzLTUuOS40LTggMS4zcS0zLjE1IDEuMi01LjEgMy4zYy0xLjMgMS4zLTIuMiAyLjgtMi43IDQuM3MtLjggMi45LS44IDQuMmMwIDMuNiAxIDYuNCAzLjEgOC4zczQuNyAzLjUgNy44IDQuNyA2LjUgMi4zIDEwLjEgMy4zYzMuNyAxIDcgMi4zIDEwLjEgNHM1LjcgNC4xIDcuOCA3IDMuMSA3IDMuMSAxMi4xLS44IDcuOC0yLjQgMTEuMS0zLjcgNi4xLTYuMyA4LjNjLTIuNyAyLjMtNS44IDQtOS40IDUuMnMtNy41IDEuOC0xMS42IDEuOC0xMC43LTEtMTUuNi0yLjktOC44LTQuOS0xMS43LTguOWw5LjUtOC4yWk0yODYuMSA3OXEtMy0zLjE1LTYuMy00LjhjLTIuMi0xLjEtNC45LTEuNi03LjktMS42cy01LjYuNS03LjggMS42LTQuMSAyLjYtNS42IDQuNS0yLjYgNC4xLTMuNCA2LjVjLS44IDIuNS0xLjEgNS0xLjEgNy43cy40IDUuMiAxLjMgNy41Yy45IDIuNCAyLjEgNC40IDMuNyA2LjJzMy41IDMuMiA1LjggNC4yIDQuOCAxLjUgNy42IDEuNSA1LjctLjUgNy45LTEuNnEzLjMtMS42NSA2LTQuOGw3LjcgNy43Yy0yLjggMy4xLTYuMSA1LjQtOS44IDYuOHMtNy43IDIuMS0xMS45IDIuMS04LjUtLjctMTIuMS0yLjJjLTMuNy0xLjUtNi44LTMuNS05LjUtNi4xcy00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4xIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4zIDYzLjhoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN0gzNTZsLTI3LjIgNjkuNmMtMSAyLjUtMiA0LjgtMyA2LjgtMSAyLjEtMi4zIDMuOC0zLjcgNS4zcy0zLjIgMi42LTUuMiAzLjRxLTMgMS4yLTcuNSAxLjJjLTQuNSAwLTMuMi0uMS00LjktLjMtMS42LS4yLTMuMi0uNi00LjgtMS4zbDEuMy05LjljMi4yLjkgNC4zIDEuMyA2LjUgMS4zczMuMS0uMiA0LjMtLjdjMS4yLS40IDIuMi0xLjEgMy0xLjlxMS4yLTEuMiAyLjEtM2MuNi0xLjEgMS4xLTIuNCAxLjctMy45bDMuNS05LjEtMjMuNy01Ny42Wk0zNjQuMSAyOS43SDM3NVYxMjFoLTEwLjl6TTM4Ni43IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi44IDcwLjhjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczgtMi4xIDEyLjEtMi4xIDcuOC41IDEwLjggMS42YzMgMSA1LjUgMi41IDcuNCA0LjIgMS45IDEuOCAzLjQgMy44IDQuMyA2LjFzMS40IDQuNyAxLjQgNy4ydjI5LjJjMCAyIDAgMy45LjEgNS42IDAgMS43LjIgMy4zLjQgNC44aC05LjdjLS4yLTIuOS0uNC01LjgtLjQtOC43aC0uMmMtMi40IDMuNy01LjMgNi4zLTguNiA3LjktMy4zIDEuNS03LjEgMi4zLTExLjUgMi4zcy01LjItLjQtNy42LTEuMXEtMy42LTEuMDUtNi4zLTMuM2MtMS44LTEuNS0zLjItMy4yLTQuMy01LjQtMS0yLjEtMS42LTQuNi0xLjYtNy40cy44LTYuOCAyLjUtOS4zYzEuNi0yLjUgMy45LTQuNSA2LjgtNi4xczYuMi0yLjcgMTAtMy40IDcuOS0xIDEyLjMtMWg4di0yLjRjMC0xLjUtLjMtMi45LS44LTQuMy0uNi0xLjUtMS40LTIuOC0yLjUtMy45LTEuMS0xLjItMi41LTIuMS00LjItMi44cy0zLjctMS02LTEtMy45LjItNS41LjYtMyAuOS00LjMgMS41LTIuNSAxLjMtMy41IDIuMS0yLjEgMS42LTMgMi4zbC02LjUtNi44Wm0zMC43IDIyLjdjLTIuNiAwLTUuMi4xLTcuOS40cy01LjIuOC03LjQgMS42LTQgMS45LTUuNCAzLjQtMi4xIDMuMy0yLjEgNS42YzAgMy4zIDEuMSA1LjcgMy4zIDcuMSAyLjIgMS41IDUuMiAyLjIgOSAyLjJzNS41LS41IDcuNi0xLjVxMy4xNS0xLjUgNS4xLTMuOWMxLjMtMS42IDIuMi0zLjQgMi44LTUuNHMuOC0zLjkuOC01Ljl2LTMuNnpNNDczLjggMzUuNWgyOS44cTkgMCAxNS45IDIuMWM0LjYgMS40IDguNSAzLjIgMTEuOCA1LjVzNi4xIDQuOSA4LjMgNy45IDQgNiA1LjMgOS4yYzEuMyAzLjEgMi4yIDYuMyAyLjggOS40cy44IDYgLjggOC43cTAgOC4yNS0zIDE1LjljLTIgNS4xLTUgOS43LTguOSAxMy42LTQgNC04LjggNy4yLTE0LjcgOS42LTUuOCAyLjQtMTIuNiAzLjYtMjAuMiAzLjZoLTI3Ljl6bTExLjYgNzQuN0g1MDBjNC45IDAgOS42LS43IDE0LTJzOC4yLTMuMyAxMS41LTYgNS45LTYgNy45LTEwYzEuOS00IDIuOS04LjYgMi45LTEzLjlzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC40cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40djYzLjhaTTU2MS43IDM1LjVoMjkuN2MzLjcgMCA3LjEuNCAxMC4zIDEuM3M1LjkgMi4yIDguMiAzLjlxMy40NSAyLjU1IDUuNCA2LjZjMS4zIDIuNyAyIDUuOSAyIDkuNXMtMS40IDguOS00LjEgMTItNi4zIDUuNC0xMC42IDYuOHYuMmMyLjYuMiA1IC44IDcuMiAyIDIuMyAxLjIgNC4yIDIuNyA1LjkgNC42IDEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjRWMzUuNVpNNTczLjMgNzFoMTUuOGMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4ydjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yIDEuOC0xLjEgMy40LTIuNiA0LjctNC40IDEuMy0xLjkgMS45LTQuMyAxLjktNy40IDAtNS4xLTEuNy04LjktNS0xMS40cy03LjgtMy44LTEzLjQtMy44aC0xNy4ydjI5LjdaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNODYuMyA0LjJDNTMuNCA0LjIgMzAuNCAyNC43IDMwLjQgNTRzNC45IDM0LjggOS4xIDU1LjhjMyAxNS4xIDUuNiAyNy4zIDUuNyAyNy42LjggMy43IDQuNCA2LjEgOC4yIDUuNWguOGMwLS4xLS42LS43LS42LS43LTEuMS0xLjEtMS44LTIuNC0yLjMtMy44LS4yLS44LS4zLTEuNS0uNC0yLjEgMC0uMyAwLS42LS4xLS45bC0xLjUtOC45Yy0uNi00LTEuMy04LTEuOC0xMS44IDAtLjMuMS0uNS40LS41cy41LjEuNS40cTEuMiA1LjcgMi40IDExLjdsMS43IDguOGMwIC4zLjEuNi4yLjkuMS43LjMgMS40LjQgMiAuNSAxLjUgMS41IDIuOCAyLjggMy44LjEuMS4zLjIuNC4zLjguNCAxLjYuNyAyLjUuOS45LjEgMS44LjEgMi42IDAgLjktLjIgMS45LS42IDIuNy0xLjJsLjMtLjItLjItLjNjLS43LS45LTEuMS0xLjktMS40LTMtLjItLjgtLjMtMS41LS4zLTIuMnYtLjlsLS45LTguOWMtLjQtNC4xLS43LTguMS0xLTExLjkgMC0uMSAwLS4yLjEtLjMgMCAwIC4yLS4yLjMtLjIuMyAwIC41LjIuNS40LjUgMy44IDEuMSA3LjggMS42IDExLjhsMS4xIDguOWMwIC4zIDAgLjUuMS44IDAgLjcuMiAxLjQuMyAyIC4yLjcuNCAxLjMuOCAxLjkuNS45IDEuMiAxLjYgMiAyLjIgMCAwIDAgLjEuMS4xIDEuNCAxIDMuMyAxLjQgNSAxLjFzMy4zLTEuMiA0LjUtMi41Yy4zLS4zLjUtLjcuNy0xLjF2LS40Yy0uMS0uNC0uMi0uOC0uNC0xLjItLjEtLjYtLjItMS40LS4yLTIuM3YtNC40Yy0uMi01LjYtLjItMTEuMy0uMi0xNy42IDAtLjMuMi0uNS41LS41cy41LjIuNS40Yy40IDYuMy43IDEyIC45IDE3LjZsLjIgNC40YzAgLjggMCAxLjQuMiAyIC4xLjUuMyAxLjIuNyAxLjh2LjFjMS4yIDIuMiAzLjYgMy43IDYuMSAzLjdoLjFjMi41IDAgNS0xLjQgNi4zLTMuNy4zLS41LjUtMS4xLjctMS44LjEtLjYuMi0xLjIuMi0xLjlsLjItNC41Yy4yLTUuMy41LTExIC45LTE3LjYgMC0uMy4yLS41LjUtLjQuMiAwIC40LjIuNC41IDAgNi42IDAgMTIuMy0uMSAxNy42djQuNGMwIC42IDAgMS41LS4zIDIuMyAwIC40LS4yLjgtLjMgMS4ydi40Yy4yLjQuNS43LjcgMS4xIDEuMSAxLjQgMi43IDIuMyA0LjUgMi41IDEuNy4zIDMuNi0uMSA1LTEuMWguMWMuOC0uNiAxLjUtMS40IDItMi4yLjQtLjYuNi0xLjIuOC0xLjkuMS0uNi4yLTEuMy4zLTIgMC0uMyAwLS41LjEtLjhsMS4xLTguOWMuNS00IDEuMS04IDEuNi0xMS44IDAtLjEgMC0uMi4yLS4zLjEgMCAuMi0uMS4zIDAgLjIgMCAuNC4zLjQuNS0uMyAzLjgtLjcgNy44LTEgMTEuOWwtLjkgOC45di44YzAgLjctLjEgMS40LS4zIDIuMi0uMyAxLjEtLjcgMi4xLTEuNCAzbC0uMi4zLjMuMmMuOC42IDEuOCAxIDIuNyAxLjJzMS43LjIgMi42IDBjLjktLjEgMS43LS40IDIuNS0uOS4yIDAgLjMtLjIuNC0uMyAxLjMtLjkgMi4zLTIuMyAyLjgtMy44LjItLjUuMy0xLjMuNC0yIDAtLjMuMS0uNi4yLS44bDEuNy04LjhjLjgtNCAxLjYtOCAyLjQtMTEuNyAwLS4zLjMtLjQuNi0uNC4yIDAgLjQuMy40LjUtLjYgMy44LTEuMiA3LjgtMS44IDExLjhsLTEuNSA4LjljMCAuMy0uMS42LS4xLjktLjEuNy0uMiAxLjMtLjQgMi4yLS40IDEuNC0xLjIgMi43LTIuMyAzLjhsLS41LjUuNy4yYy40IDAgLjguMSAxLjIuMSAzLjMgMCA2LjMtMi4zIDctNS42IDAtLjMgMi44LTEyLjkgNS44LTI4LjUgNC4xLTIwLjkgOS00NyA5LTU1QzE0MiAyNSAxMTkgNC41IDg2LjEgNC41WiIgc3R5bGU9ImZpbGw6IzU3ZDFlNSIvPjxwYXRoIGQ9Ik0xMzMuMSAxMDkuN2MtMy4xIDE1LjctNS43IDI3LjUtNS43IDI3LjctLjcgMy4yLTMuNyA1LjQtNyA1LjRoLTEuNmwuMy0uNGMxLjEtMS4xIDEuOS0yLjQgMi4zLTMuOC4yLS44LjMtMS41LjQtMi4yIDAtLjQgMC0uNi4xLS45bDEuNS04LjljLjYtNCAxLjMtOCAxLjgtMTEuOCAwLS4zLS4yLS43LS41LS43aC0uNWMtLjEgMC0uMy4yLS4zLjQtLjggMy43LTEuNiA3LjctMi40IDExLjdsLTEuNyA4LjhjMCAuMiAwIC40LS4xLjZ2LjNjLS4yLjctLjMgMS40LS41IDEuOS0uNCAxLjUtMS40IDIuOC0yLjcgMy43LS4xIDAtLjMuMi0uNC4zLS43LjQtMS41LjctMi40LjhzLTEuNy4xLTIuNiAwYy0uOS0uMi0xLjgtLjYtMi42LTEuMmgtLjJjMC0uMS4xLS4zLjEtLjMuNy0xIDEuMS0yIDEuNC0zLjEuMi0uOC4zLTEuNS4zLTIuM3YtLjhsLjktOC45Yy40LTQuMS43LTguMSAxLTExLjkgMC0uMy0uMi0uNy0uNi0uNy0uMiAwLS4zIDAtLjUuMS0uMS4xLS4yLjMtLjMuNC0uNSAzLjgtMS4xIDcuNy0xLjYgMTEuOGwtMS4xIDguOWMwIC4zIDAgLjUtLjEuOCAwIC43LS4yIDEuNC0uMyAyLS4yLjYtLjQgMS4yLS44IDEuOC0uNS44LTEuMiAxLjYtMiAyLjEgMCAwIDAgLjEtLjEuMS0xLjQuOS0zLjIgMS4zLTQuOSAxLjFzLTMuMy0xLjEtNC4zLTIuNWMtLjMtLjMtLjUtLjctLjctMXYtLjJjLjEtLjQuMy0uOC40LTEuMi4yLS44LjItMS44LjItMi40di00LjRjLjItNS4yLjItMTAuOS4yLTE3LjYgMC0uMy0uMy0uNi0uNi0uNy0uNCAwLS43LjMtLjcuNi0uNCA2LjUtLjcgMTIuMy0uOSAxNy42bC0uMiA0LjVjMCAuNyAwIDEuMy0uMiAxLjktLjIuNy0uNCAxLjMtLjcgMS44LTEuMiAyLjItMy42IDMuNi02IDMuNkg4NmMtMi40IDAtNC44LTEuNC02LTMuNnYtLjFjLS4zLS42LS41LTEuMi0uNy0xLjctLjEtLjYtLjItMS4yLS4yLTJsLS4yLTQuNGMtLjItNS41LS41LTExLjMtLjktMTcuNiAwLS4zLS4zLS42LS43LS42cy0uNy4zLS43LjdjMCA2LjMgMCAxMiAuMSAxNy42djQuNHEwIDEuNS4zIDIuNGMuMS40LjIuOS40IDEuMnYuMmMtLjIuNC0uNS43LS43IDFhNy42IDcuNiAwIDAgMS00LjMgMi41Yy0xLjcuMy0zLjUtLjEtNC45LTEuMWgtLjFjLS44LS42LTEuNS0xLjMtMi0yLjItLjMtLjYtLjYtMS4yLS44LTEuOC0uMS0uNS0uMi0xLjItLjMtMiAwLS4zIDAtLjUtLjEtLjhsLTEuMS04LjljLS41LTQuMS0xLjEtOC4xLTEuNi0xMS44IDAtLjQtLjMtLjYtLjctLjYtLjIgMC0uMyAwLS40LjItLjEuMS0uMi4zLS4yLjUuMyAzLjguNyA3LjggMSAxMS45bC45IDguOXYuOWMwIC43LjEgMS40LjMgMi4yLjMgMS4xLjcgMi4xIDEuNCAzLjF2LjJjLjEgMCAwIC4xIDAgLjEtLjguNi0xLjcgMS0yLjYgMS4yLS44LjItMS43LjItMi42IDBxLTEuMzUtLjE1LTIuNC0uOWMtLjEgMC0uMy0uMi0uNC0uMy0xLjMtLjktMi4zLTIuMi0yLjctMy43LS4yLS41LS4zLTEuMi0uNC0xLjkgMC0uNC0uMS0uNy0uMi0uOWwtMS43LTguOGMtLjgtNC0xLjYtOC0yLjQtMTEuNyAwLS4zLS40LS42LS43LS41LS40IDAtLjYuNC0uNi43LjYgMy44IDEuMiA3LjggMS44IDExLjhsMS41IDguOWMwIC4zIDAgLjUuMS44LjEuOC4yIDEuNS40IDIuMy40IDEuNCAxLjIgMi43IDIuMyAzLjhsLjMuM2gtLjRjLTMuNy43LTcuMi0xLjctOC01LjMtLjMtMS4zLTMtMTMuMS01LjktMjcuNmw0LjIgMjhjMCAuMi4xLjUuMi43di4yYy4xLjIuMi4zLjMuNSAwIDAgMCAuMi4xLjMgMCAuMS4xLjIuMi40IDAgLjEuMS4yLjIuM3YuMmwuNi45Yy4xLjIuMi4zLjQuNS4xLjIuMy4zLjQuNSAxLjYgMS41IDMuNyAyLjMgNS45IDIuM3MxIDAgMS40LS4xbDMuMi0uNWMuNS4yIDEuMS40IDEuNy40IDEuMS4yIDIuMi4xIDMuMiAwIDEuMS0uMiAyLjMtLjcgMy4zLTEuNWwuOC0uNmMuMi4yLjUuNC44LjZsLjIuMmMxLjcgMS4xIDQgMS42IDYuMSAxLjNzNC4xLTEuNCA1LjQtMy4xYy4yLS4zLjUtLjYuNy0uOSAxLjUgMi41IDQuNCA0LjEgNy4zIDQuMWguMmMyLjkgMCA1LjctMS42IDcuMi00LjEuMi4zLjQuNy43LjkgMS4zIDEuNyAzLjMgMi44IDUuNCAzLjFoMS4zYzEuNyAwIDMuNC0uNSA0LjgtMS40IDAgMCAuMSAwIC4yLS4xLjMtLjIuNS0uNC44LS42bC44LjZxMS41IDEuMDUgMy4zIDEuNWMxIC4yIDIuMS4yIDMuMiAwcTEuMDUtLjE1IDIuMS0uNmwyLjcuN2guMWMuNS4xLjkuMSAxLjQuMSA0IDAgNy42LTIuOSA4LjUtNi44IDAtLjEgNC4yLTI4IDQuMi0yOFoiIGNsYXNzPSJjbHMtNCIvPjxwYXRoIGQ9Ik00Ni40IDE3LjdjLTEwLjEgOC44LTE2IDIxLjQtMTYgMzYuMnMxNC41IDgyLjggMTQuNyA4My41Yy4zIDEuNSAxLjQgMi42IDIuNCAzLjYtMy42LTE3LjQtMTUuNC03My41LTE1LjQtODYuNnM1LjItMjcuMiAxNC4zLTM2LjciIHN0eWxlPSJmaWxsOiM5M2UxZWYiLz48cGF0aCBkPSJNNzEuMyAyNS42QzU3LjkgMjUuNiA0NyAzNi41IDQ3IDQ5LjlzMTAuOSAyNC4zIDI0LjMgMjQuMyAyNC4zLTEwLjkgMjQuMy0yNC4zLTEwLjktMjQuMy0yNC4zLTI0LjMiIGNsYXNzPSJjbHMtMyIvPjxwYXRoIGQ9Ik00NC42IDQ4YzAgMTMuNCAxMC45IDI0LjMgMjQuMyAyNC4zUzkzLjIgNjEuNCA5My4yIDQ4IDgyLjMgMjMuNyA2OC45IDIzLjcgNDQuNiAzNC42IDQ0LjYgNDgiIHN0eWxlPSJmaWxsOiNmZmYiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=);background-position:50%;background-repeat:no-repeat;width:110px}.header-logo__img img{opacity:0}.dark .header-logo__img{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZn0uY2xzLTN7ZmlsbDojNGQ5YmI2fS5jbHMtNHtmaWxsOiMzYjJkNTV9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkxheWVyXzEiPjxwYXRoIGQ9Ik0xODUuNCAxMDMuMWMyLjEgMy4xIDQuOCA1LjUgOCA2LjkgMy4zIDEuNSA2LjYgMi4yIDEwLjEgMi4yczMuOS0uMyA1LjktLjkgMy44LTEuNSA1LjUtMi43YzEuNi0xLjIgMy0yLjcgNC00LjVzMS42LTMuOCAxLjYtNi4yLTEtNS44LTMuMS03LjUtNC43LTMuMi03LjgtNC4zYy0zLjEtMS4yLTYuNS0yLjMtMTAuMi0zLjRxLTUuNTUtMS42NS0xMC4yLTQuNXQtNy44LTcuOGMtMi4xLTMuMy0zLjEtNy43LTMuMS0xMy4ycy41LTUuMiAxLjYtOCAyLjgtNS40IDUuMS03LjcgNS4zLTQuMyA5LTUuOXE1LjU1LTIuNCAxMy4yLTIuNGM3LjY1IDAgOS4xLjYgMTMuNCAxLjlzOCAzLjkgMTEuMiA3LjlsLTkuNCA4LjZjLTEuNS0yLjMtMy41LTQuMS02LjItNS40LTIuNy0xLjQtNS43LTIuMS05LjEtMi4xcy01LjkuNC04IDEuM3EtMy4xNSAxLjItNS4xIDMuM2MtMS4zIDEuMy0yLjIgMi44LTIuNyA0LjNzLS44IDIuOS0uOCA0LjJjMCAzLjYgMSA2LjQgMy4xIDguM3M0LjcgMy41IDcuOCA0LjdxNC42NSAxLjggMTAuMiAzLjNjMy43IDEgNy4xIDIuMyAxMC4yIDRzNS43IDQuMSA3LjggNyAzLjEgNyAzLjEgMTIuMS0uOCA3LjgtMi40IDExLjEtMy43IDYuMS02LjMgOC4zYy0yLjcgMi4zLTUuOCA0LTkuNCA1LjJzLTcuNSAxLjgtMTEuNiAxLjgtMTAuNy0xLTE1LjYtMi45LTguOC00LjktMTEuNy04LjlsOS41LTguMlpNMjg2IDc5cS0zLTMuMTUtNi4zLTQuOGMtMi4yLTEuMS00LjktMS42LTcuOS0xLjZzLTUuNi41LTcuOCAxLjYtNC4xIDIuNi01LjYgNC41LTIuNiA0LjEtMy40IDYuNWMtLjggMi41LTEuMSA1LTEuMSA3LjdzLjQgNS4yIDEuMyA3LjVjLjkgMi40IDIuMSA0LjUgMy43IDYuMnMzLjUgMy4yIDUuOCA0LjIgNC44IDEuNSA3LjYgMS41IDUuNy0uNSA3LjktMS42cTMuMy0xLjY1IDYtNC44bDcuNyA3LjdjLTIuOCAzLjEtNi4xIDUuNC05LjkgNi44LTMuNyAxLjQtNy43IDIuMS0xMS45IDIuMXMtOC41LS43LTEyLjItMi4yLTYuOC0zLjUtOS41LTYuMS00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4yIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4yIDYzLjdoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN2gxMS42bC0yNy4yIDY5LjZjLTEgMi41LTIgNC44LTMgNi44LTEgMi4xLTIuMyAzLjgtMy43IDUuM3MtMy4yIDIuNi01LjIgMy40LTQuNiAxLjItNy41IDEuMi0zLjItLjEtNC45LS4zYy0xLjYtLjItMy4yLS42LTQuOC0xLjNsMS4zLTkuOWMyLjIuOSA0LjMgMS4zIDYuNSAxLjNzMy4xLS4yIDQuMy0uN2MxLjItLjQgMi4yLTEuMSAzLTEuOXExLjItMS4yIDIuMS0zYy42LTEuMSAxLjEtMi40IDEuNy0zLjlsMy41LTkuMS0yMy43LTU3LjZaTTM2My45IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTM4Ni42IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi43IDcwLjdjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczguMS0yLjEgMTIuMS0yLjEgNy44LjUgMTAuOCAxLjZjMyAxIDUuNSAyLjUgNy40IDQuMiAxLjkgMS44IDMuNCAzLjggNC4zIDYuMXMxLjQgNC43IDEuNCA3LjJ2MjkuMmMwIDIgMCAzLjkuMSA1LjYgMCAxLjcuMiAzLjMuNCA0LjhoLTkuN2MtLjItMi45LS40LTUuOC0uNC04LjdoLS4yYy0yLjQgMy43LTUuMyA2LjMtOC42IDcuOS0zLjMgMS41LTcuMSAyLjMtMTEuNSAyLjNzLTUuMi0uNC03LjYtMS4xcS0zLjYtMS4wNS02LjMtMy4zYy0xLjgtMS41LTMuMi0zLjItNC4zLTUuNC0xLTIuMS0xLjYtNC42LTEuNi03LjRzLjgtNi44IDIuNS05LjNjMS42LTIuNSAzLjktNC41IDYuOC02LjFzNi4yLTIuNyAxMC0zLjQgNy45LTEgMTIuMy0xaDh2LTIuNGMwLTEuNS0uMy0yLjktLjgtNC4zLS42LTEuNS0xLjQtMi44LTIuNS0zLjktMS4xLTEuMi0yLjUtMi4xLTQuMi0yLjhzLTMuNy0xLTYtMS0zLjkuMi01LjUuNi0zIC45LTQuMyAxLjUtMi41IDEuMy0zLjUgMi4xLTIuMSAxLjYtMyAyLjNsLTYuNS02LjhabTMwLjcgMjIuOGMtMi42IDAtNS4yLjEtNy45LjRzLTUuMi44LTcuNCAxLjYtNCAxLjktNS40IDMuNC0yLjEgMy4zLTIuMSA1LjZjMCAzLjMgMS4xIDUuNyAzLjMgNy4xIDIuMiAxLjUgNS4yIDIuMiA5IDIuMnM1LjUtLjUgNy42LTEuNXEzLjE1LTEuNSA1LjEtMy45YzEuMy0xLjYgMi4yLTMuNCAyLjgtNS40cy44LTMuOS44LTUuOXYtMy42ek00NzMuOCAzNS41aDI5LjlxOSAwIDE1LjkgMi4xYzQuNiAxLjQgOC41IDMuMiAxMS44IDUuNXM2LjEgNC45IDguMyA3LjkgNCA2IDUuMyA5LjJjMS4zIDMuMSAyLjIgNi4zIDIuOCA5LjRzLjggNiAuOCA4LjdxMCA4LjI1LTMgMTUuOWMtMiA1LjEtNSA5LjctOC45IDEzLjctNCA0LTguOCA3LjItMTQuNyA5LjYtNS44IDIuNC0xMi42IDMuNi0yMC4zIDMuNmgtMjcuOXptMTEuNiA3NC42SDUwMGM0LjkgMCA5LjYtLjcgMTQtMnM4LjItMy4zIDExLjUtNiA1LjktNiA3LjktMTBjMS45LTQgMi45LTguNiAyLjktMTRzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC41cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40VjExMFpNNTYxLjYgMzUuNWgyOS43YzMuNyAwIDcuMi40IDEwLjMgMS4zIDMuMi45IDUuOSAyLjIgOC4yIDMuOXEzLjQ1IDIuNTUgNS40IDYuNmMxLjMgMi43IDIgNS45IDIgOS41cy0xLjQgOC45LTQuMSAxMi02LjMgNS40LTEwLjYgNi44di4yYzIuNi4yIDUgLjggNy4zIDJzNC4yIDIuNyA1LjkgNC42YzEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjR6TTU3My4yIDcxSDU4OWMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4zdjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yczMuNC0yLjYgNC43LTQuNGMxLjMtMS45IDEuOS00LjMgMS45LTcuNCAwLTUuMS0xLjctOC45LTUtMTEuNHMtNy44LTMuOC0xMy40LTMuOGgtMTcuMnYyOS43WiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTg2LjMgNC4yQzUzLjQgNC4yIDMwLjQgMjQuNyAzMC40IDU0czQuOSAzNC44IDkuMSA1NS44YzMgMTUuMSA1LjYgMjcuMyA1LjcgMjcuNi44IDMuNyA0LjQgNi4xIDguMiA1LjVoLjhjMC0uMS0uNi0uNy0uNi0uNy0xLjEtMS4xLTEuOC0yLjQtMi4zLTMuOC0uMi0uOC0uMy0xLjUtLjQtMi4xIDAtLjMgMC0uNi0uMS0uOWwtMS41LTguOWMtLjYtNC0xLjMtOC0xLjgtMTEuOCAwLS4zLjEtLjUuNC0uNXMuNS4xLjUuNHExLjIgNS43IDIuNCAxMS43bDEuNyA4LjhjMCAuMy4xLjYuMi45LjEuNy4zIDEuNC40IDIgLjUgMS41IDEuNSAyLjggMi44IDMuOC4xLjEuMy4yLjQuMy44LjQgMS42LjcgMi41LjkuOS4xIDEuOC4xIDIuNiAwIC45LS4yIDEuOS0uNiAyLjctMS4ybC4zLS4yLS4yLS4zYy0uNy0uOS0xLjEtMS45LTEuNC0zLS4yLS44LS4zLTEuNS0uMy0yLjJ2LS45bC0uOS04LjljLS40LTQuMS0uNy04LjEtMS0xMS45IDAtLjEgMC0uMi4xLS4zIDAgMCAuMi0uMi4zLS4yLjMgMCAuNS4yLjUuNC41IDMuOCAxLjEgNy44IDEuNiAxMS44bDEuMSA4LjljMCAuMyAwIC41LjEuOCAwIC43LjIgMS40LjMgMiAuMi43LjQgMS4zLjggMS45LjUuOSAxLjIgMS42IDIgMi4yIDAgMCAwIC4xLjEuMSAxLjQgMSAzLjMgMS40IDUgMS4xczMuMy0xLjIgNC41LTIuNWMuMy0uMy41LS43LjctMS4xdi0uNGMtLjEtLjQtLjItLjgtLjQtMS4yLS4xLS42LS4yLTEuNC0uMi0yLjN2LTQuNGMtLjItNS42LS4yLTExLjMtLjItMTcuNiAwLS4zLjItLjUuNS0uNXMuNS4yLjUuNGMuNCA2LjMuNyAxMiAuOSAxNy42bC4yIDQuNGMwIC44IDAgMS40LjIgMiAuMS41LjMgMS4yLjcgMS44di4xYzEuMiAyLjIgMy42IDMuNyA2LjEgMy43aC4xYzIuNSAwIDUtMS40IDYuMy0zLjcuMy0uNS41LTEuMS43LTEuOC4xLS42LjItMS4yLjItMS45bC4yLTQuNWMuMi01LjMuNS0xMSAuOS0xNy42IDAtLjMuMi0uNS41LS40LjIgMCAuNC4yLjQuNSAwIDYuNiAwIDEyLjMtLjEgMTcuNnY0LjRjMCAuNiAwIDEuNS0uMyAyLjMgMCAuNC0uMi44LS4zIDEuMnYuNGMuMi40LjUuNy43IDEuMSAxLjEgMS40IDIuNyAyLjMgNC41IDIuNSAxLjcuMyAzLjYtLjEgNS0xLjFoLjFjLjgtLjYgMS41LTEuNCAyLTIuMi40LS42LjYtMS4yLjgtMS45LjEtLjYuMi0xLjMuMy0yIDAtLjMgMC0uNS4xLS44bDEuMS04LjljLjUtNCAxLjEtOCAxLjYtMTEuOCAwLS4xIDAtLjIuMi0uMy4xIDAgLjItLjEuMyAwIC4yIDAgLjQuMy40LjUtLjMgMy44LS43IDcuOC0xIDExLjlsLS45IDguOXYuOGMwIC43LS4xIDEuNC0uMyAyLjItLjMgMS4xLS43IDIuMS0xLjQgM2wtLjIuMy4zLjJjLjguNiAxLjggMSAyLjcgMS4yczEuNy4yIDIuNiAwYy45LS4xIDEuNy0uNCAyLjUtLjkuMiAwIC4zLS4yLjQtLjMgMS4zLS45IDIuMy0yLjMgMi44LTMuOC4yLS41LjMtMS4zLjQtMiAwLS4zLjEtLjYuMi0uOGwxLjctOC44Yy44LTQgMS42LTggMi40LTExLjcgMC0uMy4zLS40LjYtLjQuMiAwIC40LjMuNC41LS42IDMuOC0xLjIgNy44LTEuOCAxMS44bC0xLjUgOC45YzAgLjMtLjEuNi0uMS45LS4xLjctLjIgMS4zLS40IDIuMi0uNCAxLjQtMS4yIDIuNy0yLjMgMy44bC0uNS41LjcuMmMuNCAwIC44LjEgMS4yLjEgMy4zIDAgNi4zLTIuMyA3LTUuNiAwLS4zIDIuOC0xMi45IDUuOC0yOC41IDQuMS0yMC45IDktNDcgOS01NUMxNDIgMjUgMTE5IDQuNSA4Ni4xIDQuNVoiIHN0eWxlPSJmaWxsOiM1N2QxZTUiLz48cGF0aCBkPSJNMTMzLjEgMTA5LjdjLTMuMSAxNS43LTUuNyAyNy41LTUuNyAyNy43LS43IDMuMi0zLjcgNS40LTcgNS40aC0xLjZsLjMtLjRjMS4xLTEuMSAxLjktMi40IDIuMy0zLjguMi0uOC4zLTEuNS40LTIuMiAwLS40IDAtLjYuMS0uOWwxLjUtOC45Yy42LTQgMS4zLTggMS44LTExLjggMC0uMy0uMi0uNy0uNS0uN2gtLjVjLS4xIDAtLjMuMi0uMy40LS44IDMuNy0xLjYgNy43LTIuNCAxMS43bC0xLjcgOC44YzAgLjIgMCAuNC0uMS42di4zYy0uMi43LS4zIDEuNC0uNSAxLjktLjQgMS41LTEuNCAyLjgtMi43IDMuNy0uMSAwLS4zLjItLjQuMy0uNy40LTEuNS43LTIuNC44cy0xLjcuMS0yLjYgMGMtLjktLjItMS44LS42LTIuNi0xLjJoLS4yYzAtLjEuMS0uMy4xLS4zLjctMSAxLjEtMiAxLjQtMy4xLjItLjguMy0xLjUuMy0yLjN2LS44bC45LTguOWMuNC00LjEuNy04LjEgMS0xMS45IDAtLjMtLjItLjctLjYtLjctLjIgMC0uMyAwLS41LjEtLjEuMS0uMi4zLS4zLjQtLjUgMy44LTEuMSA3LjctMS42IDExLjhsLTEuMSA4LjljMCAuMyAwIC41LS4xLjggMCAuNy0uMiAxLjQtLjMgMi0uMi42LS40IDEuMi0uOCAxLjgtLjUuOC0xLjIgMS42LTIgMi4xIDAgMCAwIC4xLS4xLjEtMS40LjktMy4yIDEuMy00LjkgMS4xcy0zLjMtMS4xLTQuMy0yLjVjLS4zLS4zLS41LS43LS43LTF2LS4yYy4xLS40LjMtLjguNC0xLjIuMi0uOC4yLTEuOC4yLTIuNHYtNC40Yy4yLTUuMi4yLTEwLjkuMi0xNy42IDAtLjMtLjMtLjYtLjYtLjctLjQgMC0uNy4zLS43LjYtLjQgNi41LS43IDEyLjMtLjkgMTcuNmwtLjIgNC41YzAgLjcgMCAxLjMtLjIgMS45LS4yLjctLjQgMS4zLS43IDEuOC0xLjIgMi4yLTMuNiAzLjYtNiAzLjZIODZjLTIuNCAwLTQuOC0xLjQtNi0zLjZ2LS4xYy0uMy0uNi0uNS0xLjItLjctMS43LS4xLS42LS4yLTEuMi0uMi0ybC0uMi00LjRjLS4yLTUuNS0uNS0xMS4zLS45LTE3LjYgMC0uMy0uMy0uNi0uNy0uNnMtLjcuMy0uNy43YzAgNi4zIDAgMTIgLjEgMTcuNnY0LjRxMCAxLjUuMyAyLjRjLjEuNC4yLjkuNCAxLjJ2LjJjLS4yLjQtLjUuNy0uNyAxYTcuNiA3LjYgMCAwIDEtNC4zIDIuNWMtMS43LjMtMy41LS4xLTQuOS0xLjFoLS4xYy0uOC0uNi0xLjUtMS4zLTItMi4yLS4zLS42LS42LTEuMi0uOC0xLjgtLjEtLjUtLjItMS4yLS4zLTIgMC0uMyAwLS41LS4xLS44bC0xLjEtOC45Yy0uNS00LjEtMS4xLTguMS0xLjYtMTEuOCAwLS40LS4zLS42LS43LS42LS4yIDAtLjMgMC0uNC4yLS4xLjEtLjIuMy0uMi41LjMgMy44LjcgNy44IDEgMTEuOWwuOSA4Ljl2LjljMCAuNy4xIDEuNC4zIDIuMi4zIDEuMS43IDIuMSAxLjQgMy4xdi4yYy4xIDAgMCAuMSAwIC4xLS44LjYtMS43IDEtMi42IDEuMi0uOC4yLTEuNy4yLTIuNiAwcS0xLjM1LS4xNS0yLjQtLjljLS4xIDAtLjMtLjItLjQtLjMtMS4zLS45LTIuMy0yLjItMi43LTMuNy0uMi0uNS0uMy0xLjItLjQtMS45IDAtLjQtLjEtLjctLjItLjlsLTEuNy04LjhjLS44LTQtMS42LTgtMi40LTExLjcgMC0uMy0uNC0uNi0uNy0uNS0uNCAwLS42LjQtLjYuNy42IDMuOCAxLjIgNy44IDEuOCAxMS44bDEuNSA4LjljMCAuMyAwIC41LjEuOC4xLjguMiAxLjUuNCAyLjMuNCAxLjQgMS4yIDIuNyAyLjMgMy44bC4zLjNoLS40Yy0zLjcuNy03LjItMS43LTgtNS4zLS4zLTEuMy0zLTEzLjEtNS45LTI3LjZsNC4yIDI4YzAgLjIuMS41LjIuN3YuMmMuMS4yLjIuMy4zLjUgMCAwIDAgLjIuMS4zIDAgLjEuMS4yLjIuNCAwIC4xLjEuMi4yLjN2LjJsLjYuOWMuMS4yLjIuMy40LjUuMS4yLjMuMy40LjUgMS42IDEuNSAzLjcgMi4zIDUuOSAyLjNzMSAwIDEuNC0uMWwzLjItLjVjLjUuMiAxLjEuNCAxLjcuNCAxLjEuMiAyLjIuMSAzLjIgMCAxLjEtLjIgMi4zLS43IDMuMy0xLjVsLjgtLjZjLjIuMi41LjQuOC42bC4yLjJjMS43IDEuMSA0IDEuNiA2LjEgMS4zczQuMS0xLjQgNS40LTMuMWMuMi0uMy41LS42LjctLjkgMS41IDIuNSA0LjQgNC4xIDcuMyA0LjFoLjJjMi45IDAgNS43LTEuNiA3LjItNC4xLjIuMy40LjcuNy45IDEuMyAxLjcgMy4zIDIuOCA1LjQgMy4xaDEuM2MxLjcgMCAzLjQtLjUgNC44LTEuNCAwIDAgLjEgMCAuMi0uMS4zLS4yLjUtLjQuOC0uNmwuOC42cTEuNSAxLjA1IDMuMyAxLjVjMSAuMiAyLjEuMiAzLjIgMHExLjA1LS4xNSAyLjEtLjZsMi43LjdoLjFjLjUuMS45LjEgMS40LjEgNCAwIDcuNi0yLjkgOC41LTYuOCAwLS4xIDQuMi0yOCA0LjItMjhaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNNDYuNCAxNy43Yy0xMC4xIDguOC0xNiAyMS40LTE2IDM2LjJzMTQuNSA4Mi44IDE0LjcgODMuNWMuMyAxLjUgMS40IDIuNiAyLjQgMy42LTMuNi0xNy40LTE1LjQtNzMuNS0xNS40LTg2LjZzNS4yLTI3LjIgMTQuMy0zNi43IiBzdHlsZT0iZmlsbDojOTNlMWVmIi8+PHBhdGggZD0iTTcxLjMgMjUuNkM1Ny45IDI1LjYgNDcgMzYuNSA0NyA0OS45czEwLjkgMjQuMyAyNC4zIDI0LjMgMjQuMy0xMC45IDI0LjMtMjQuMy0xMC45LTI0LjMtMjQuMy0yNC4zIiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNDQuNiA0OGMwIDEzLjQgMTAuOSAyNC4zIDI0LjMgMjQuM1M5My4yIDYxLjQgOTMuMiA0OCA4Mi4zIDIzLjcgNjguOSAyMy43IDQ0LjYgMzQuNiA0NC42IDQ4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.header-logo__bar{background-color:var(--text-color);border-left:1px solid var(--text-color);height:11.56px;margin:0 7.5px;width:0}.header-logo__text{color:var(--text-color);font-size:10.11px;letter-spacing:.722408px;line-height:12px;text-transform:uppercase}.header-navigation{display:none}.header-button{display:none;margin-left:15px;text-transform:uppercase}.header-search-box{display:none;margin-right:20px;width:200px}.scylla-dropdown__content{background-color:var(--card-bg)}.scylla-dropdown--header .scylla-dropdown__item{font-size:14px}.scylla-dropdown--header .scylla-dropdown__title{text-transform:uppercase}.scylla-dropdown--header .scylla-dropdown__title .chevron{font-size:24px;line-height:.5em;margin-left:4px}.contents.local>ul>li .scylla-dropdown--header .scylla-dropdown__content a:before,.scylla-dropdown--header .scylla-dropdown__content .contents.local>ul>li a:before,.scylla-dropdown--header .scylla-dropdown__content .scylla-icon{min-height:20px;width:20px}@media screen and (min-width:1024px){.header{padding:18px 0}.header-logo__img{width:152px}.header-logo__bar{height:16px;margin:0 10px}.header-logo__text{font-size:14px;letter-spacing:.722408px;line-height:12px;text-transform:uppercase}.header-navigation{align-items:center;display:flex;justify-content:center}.header-search-box{align-items:center;display:flex;flex-direction:row;gap:20px}}@media screen and (min-width:1200px){.header-logo{margin-left:30px;width:357px}.header-search-box{margin-right:30px;max-width:20%;width:318px}.header-button{display:block}}.side-nav{background:var(--navigation-bg);display:none;height:100vh;left:0;line-height:24px;max-height:calc(100vh - 50px);overflow-y:auto;padding:20px 20px 0;position:fixed;top:50px;width:100%;z-index:100}.side-nav__title{font-weight:700;margin-bottom:20px}.side-nav__title a{color:var(--text-color);text-decoration:none}.side-nav__title a:hover{font-weight:700}.side-nav__content{max-width:90%;overflow-wrap:break-word}.side-nav__content label,.side-nav__content label i{align-items:center;display:flex;margin:0;padding:0}.side-nav__content label{color:inherit;font-size:22px;line-height:1;width:12px}.side-nav__content .scylla-icon--expand{height:5px;vertical-align:top;width:10px}.side-nav__content .toctree-checkbox{display:none;position:absolute;right:20px}.side-nav__content .toctree-checkbox~ul{display:none;margin-right:20px}.side-nav__content .toctree-checkbox:checked~ul{display:block}.side-nav__content ul{margin:0}.side-nav__content a:not(.current){color:var(--text-color)}.side-nav__content a:not(.current):hover{color:var(--link-color-hover);font-weight:400}.side-nav__content li{list-style:none;padding:0 0 24px}.side-nav__content li.has-children{align-items:center;display:flex;flex-wrap:wrap}.side-nav__content li.has-children>a{max-width:calc(100% - 15px)}.side-nav__content li.has-children.current{padding-bottom:20px}.side-nav__content li.has-children:hover{color:var(--link-color-hover)}.side-nav__content li.current-page{color:var(--link-color)}.side-nav__content li ul{margin-top:18px;width:100%}.side-nav__content li ul li{border-left:1px solid var(--link-color);padding:4px 0 4px 13px}.side-nav__content li ul ul{margin-left:0}.side-nav__content li .label{display:none}.side-nav__versions{max-width:90%}.side-nav__search,.side-nav__versions .dropdown{margin-bottom:20px}.collapsible-button{background:var(--white);background-color:var(--card-bg);border:0;border-radius:8px;border-radius:50%;bottom:10px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;display:none;font-size:0;left:300px;overflow:hidden;padding:13.5px;position:fixed}.collapsible-button i{display:block;font-size:20px}.side-nav--collapsed .collapsible-button{border-radius:0 30px 30px 0;left:-10px}.side-nav--collapsed .collapsible-button i{transform:rotate(180deg)}.layout--has-banner .side-nav{max-height:calc(100vh - 92.5px)}@media screen and (min-width:1024px){.side-nav{background-color:var(--navigation-bg);display:block;height:100%;left:auto;max-height:calc(100vh - 80px);padding:30px 40px;top:80px;width:286px;z-index:25}.side-nav__content{max-width:100%}.side-nav__search{display:none}.side-nav__versions{max-width:100%}.toctree-checkbox{right:40px}.layout--has-banner .side-nav{max-height:calc(100vh - 150px)}}@media screen and (min-width:1200px){.side-nav{width:357px}.side-nav--collapsed{background-color:transparent;padding-left:0;padding-right:0;width:126px}.side-nav--collapsed .side-nav-content{display:none}.collapsible-button{display:block}}.dark-theme-toggler,.side-nav-toggle{cursor:pointer;font-size:22px}.side-nav-toggle{display:flex;gap:10px;margin-right:20px;position:relative;z-index:300}@media screen and (min-width:1024px){.side-nav-toggle{display:none}}.secondary-side-nav{display:none;height:100%;line-height:24px;padding:20px;width:100%}.secondary-side-nav__content{overflow-wrap:break-word}.secondary-side-nav__content ul{list-style:none;margin:0}.secondary-side-nav__content li{border-bottom:1px solid var(--border-color);display:none;padding:10px 0;word-break:break-word}.secondary-side-nav__content li:last-child{border:0}.secondary-side-nav__content li .label{display:none}.secondary-side-nav__content li a{align-items:baseline;color:var(--text-muted);display:flex;font-size:14px}.secondary-side-nav__content li a:before{content:"";flex-shrink:0;font-size:8px;margin-right:10px;min-height:10px;opacity:.5}.secondary-side-nav__content li a.current,.secondary-side-nav__content li a:hover{color:var(--text-color);font-weight:400}.secondary-side-nav__content li a.current:before,.secondary-side-nav__content li a:hover:before{opacity:1}.secondary-side-nav__content li a.current{font-weight:700}.secondary-side-nav__content>ul>li>ul>li{display:block}.secondary-side-nav__content>ul>li{border:0;display:block}.secondary-side-nav__content>ul>li>a{display:none}@media screen and (min-width:1200px){.secondary-side-nav{display:block;max-height:100vh;max-height:calc(100vh - 80px);overflow-y:auto;padding:60px 60px 60px 20px;position:fixed;top:80px;width:286px}.layout--has-banner .secondary-side-nav{max-height:calc(100vh - 150px)}}.layout{background-color:var(--bg-color);display:flex}.pre-content{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.content{margin-top:50px;max-width:1440px;overflow-wrap:break-word;padding:20px;width:100%}.content .line-block,.content p{line-height:28px;margin-bottom:20px}.content ul{list-style:none}.content ul li:before{color:var(--text-muted);content:"•";float:left;font-family:FontAwesome;font-size:20px;font-weight:700;margin-left:-1em;margin-top:-2px;width:1em}.content ul ul{list-style:circle}.content ul ul li:before{content:""}.content ol ol{list-style:lower-latin}.content img{margin-bottom:30px}.content .inline-icon{font-size:22px}.content .inline-icon.icon-check{color:var(--primary)}.layout--full-width .content{max-width:100%;padding:0;width:100%}.layout--full-width .content .hero-wrapper,.layout--full-width .content .topics-grid{max-width:1190px}.layout--full-width .content.content--collapsed,.layout--full-width:not(.layout--sidebar) .content{margin-left:0}.landing__content{padding:0 16px}@media screen and (min-width:1024px){.content{margin-left:286px;margin-top:80px;min-height:calc(100vh - 260px);padding-bottom:100px;width:calc(100% - 286px)}}@media screen and (min-width:1200px){.content{margin-left:357px;padding:60px 40px 40px;width:calc(100% - 643px)}.content--collapsed{margin-left:126px;width:calc(100% - 412px)}.pre-content{margin-bottom:10px}.landing__content{padding:0 60px}.landing--floating .landing__content{position:relative;top:-70px}}.contents.local>ul{margin-bottom:30px;margin-left:0}.contents.local>ul>li{border-bottom:1px solid rgba(90,94,154,.1);padding:10px 0;word-break:break-word}.contents.local>ul>li:before{content:""}.contents.local>ul>li:last-child{border:0}.contents.local>ul>li ul{display:none}.contents.local>ul>li p{margin:0}.contents.local>ul>li a{font-size:14px}.contents.local>ul>li a:before{content:"";filter:invert(38%) sepia(71%) saturate(6789%) hue-rotate(231deg) brightness(90%) contrast(95%)!important;margin-right:10px;min-height:10px;opacity:.5;width:10px}.contents.local>ul>li a.current:before,.contents.local>ul>li a:hover:before{filter:brightness(0);opacity:1}.topic-title{color:var(--text-muted);font-size:10px;letter-spacing:1.5px;margin-bottom:0;text-transform:uppercase}.notice{margin-top:40px}.footer{background-color:var(--card-bg);box-shadow:0 -4px 10px rgba(0,0,0,.1);padding:30px 0;position:relative;width:100%;z-index:50}.footer-group{margin:0 auto;max-width:1030px;padding:0 20px}.footer-top{align-items:center;border-bottom:1px solid var(--border-color);display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:20px;text-align:center}.footer-logo{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0ze2ZpbGw6IzRkOWJiNn0uY2xzLTR7ZmlsbDojM2IyZDU1fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8xIj48cGF0aCBkPSJNMTg1LjYgMTAzLjFjMi4xIDMuMSA0LjggNS41IDggNi45IDMuMyAxLjUgNi42IDIuMiAxMC4xIDIuMnMzLjktLjMgNS45LS45IDMuOC0xLjUgNS41LTIuN2MxLjYtMS4yIDMtMi43IDQtNC41czEuNi0zLjggMS42LTYuMi0xLTUuOC0zLjEtNy41LTQuNy0zLjItNy44LTQuM2MtMy4xLTEuMi02LjUtMi4zLTEwLjEtMy40LTMuNy0xLjEtNy0yLjYtMTAuMS00LjVxLTQuNjUtMi44NS03LjgtNy44Yy0yLjEtMy4zLTMuMS03LjctMy4xLTEzLjJzLjUtNS4yIDEuNi04IDIuOC01LjQgNS4xLTcuNyA1LjMtNC4zIDktNS45cTUuNTUtMi40IDEzLjItMi40YzcuNjUgMCA5LjEuNiAxMy40IDEuOXM4IDMuOSAxMS4yIDcuOWwtOS40IDguNmMtMS41LTIuMy0zLjUtNC4xLTYuMi01LjQtMi43LTEuNC01LjctMi4xLTkuMS0yLjFzLTUuOS40LTggMS4zcS0zLjE1IDEuMi01LjEgMy4zYy0xLjMgMS4zLTIuMiAyLjgtMi43IDQuM3MtLjggMi45LS44IDQuMmMwIDMuNiAxIDYuNCAzLjEgOC4zczQuNyAzLjUgNy44IDQuNyA2LjUgMi4zIDEwLjEgMy4zYzMuNyAxIDcgMi4zIDEwLjEgNHM1LjcgNC4xIDcuOCA3IDMuMSA3IDMuMSAxMi4xLS44IDcuOC0yLjQgMTEuMS0zLjcgNi4xLTYuMyA4LjNjLTIuNyAyLjMtNS44IDQtOS40IDUuMnMtNy41IDEuOC0xMS42IDEuOC0xMC43LTEtMTUuNi0yLjktOC44LTQuOS0xMS43LTguOWw5LjUtOC4yWk0yODYuMSA3OXEtMy0zLjE1LTYuMy00LjhjLTIuMi0xLjEtNC45LTEuNi03LjktMS42cy01LjYuNS03LjggMS42LTQuMSAyLjYtNS42IDQuNS0yLjYgNC4xLTMuNCA2LjVjLS44IDIuNS0xLjEgNS0xLjEgNy43cy40IDUuMiAxLjMgNy41Yy45IDIuNCAyLjEgNC40IDMuNyA2LjJzMy41IDMuMiA1LjggNC4yIDQuOCAxLjUgNy42IDEuNSA1LjctLjUgNy45LTEuNnEzLjMtMS42NSA2LTQuOGw3LjcgNy43Yy0yLjggMy4xLTYuMSA1LjQtOS44IDYuOHMtNy43IDIuMS0xMS45IDIuMS04LjUtLjctMTIuMS0yLjJjLTMuNy0xLjUtNi44LTMuNS05LjUtNi4xcy00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4xIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4zIDYzLjhoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN0gzNTZsLTI3LjIgNjkuNmMtMSAyLjUtMiA0LjgtMyA2LjgtMSAyLjEtMi4zIDMuOC0zLjcgNS4zcy0zLjIgMi42LTUuMiAzLjRxLTMgMS4yLTcuNSAxLjJjLTQuNSAwLTMuMi0uMS00LjktLjMtMS42LS4yLTMuMi0uNi00LjgtMS4zbDEuMy05LjljMi4yLjkgNC4zIDEuMyA2LjUgMS4zczMuMS0uMiA0LjMtLjdjMS4yLS40IDIuMi0xLjEgMy0xLjlxMS4yLTEuMiAyLjEtM2MuNi0xLjEgMS4xLTIuNCAxLjctMy45bDMuNS05LjEtMjMuNy01Ny42Wk0zNjQuMSAyOS43SDM3NVYxMjFoLTEwLjl6TTM4Ni43IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi44IDcwLjhjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczgtMi4xIDEyLjEtMi4xIDcuOC41IDEwLjggMS42YzMgMSA1LjUgMi41IDcuNCA0LjIgMS45IDEuOCAzLjQgMy44IDQuMyA2LjFzMS40IDQuNyAxLjQgNy4ydjI5LjJjMCAyIDAgMy45LjEgNS42IDAgMS43LjIgMy4zLjQgNC44aC05LjdjLS4yLTIuOS0uNC01LjgtLjQtOC43aC0uMmMtMi40IDMuNy01LjMgNi4zLTguNiA3LjktMy4zIDEuNS03LjEgMi4zLTExLjUgMi4zcy01LjItLjQtNy42LTEuMXEtMy42LTEuMDUtNi4zLTMuM2MtMS44LTEuNS0zLjItMy4yLTQuMy01LjQtMS0yLjEtMS42LTQuNi0xLjYtNy40cy44LTYuOCAyLjUtOS4zYzEuNi0yLjUgMy45LTQuNSA2LjgtNi4xczYuMi0yLjcgMTAtMy40IDcuOS0xIDEyLjMtMWg4di0yLjRjMC0xLjUtLjMtMi45LS44LTQuMy0uNi0xLjUtMS40LTIuOC0yLjUtMy45LTEuMS0xLjItMi41LTIuMS00LjItMi44cy0zLjctMS02LTEtMy45LjItNS41LjYtMyAuOS00LjMgMS41LTIuNSAxLjMtMy41IDIuMS0yLjEgMS42LTMgMi4zbC02LjUtNi44Wm0zMC43IDIyLjdjLTIuNiAwLTUuMi4xLTcuOS40cy01LjIuOC03LjQgMS42LTQgMS45LTUuNCAzLjQtMi4xIDMuMy0yLjEgNS42YzAgMy4zIDEuMSA1LjcgMy4zIDcuMSAyLjIgMS41IDUuMiAyLjIgOSAyLjJzNS41LS41IDcuNi0xLjVxMy4xNS0xLjUgNS4xLTMuOWMxLjMtMS42IDIuMi0zLjQgMi44LTUuNHMuOC0zLjkuOC01Ljl2LTMuNnpNNDczLjggMzUuNWgyOS44cTkgMCAxNS45IDIuMWM0LjYgMS40IDguNSAzLjIgMTEuOCA1LjVzNi4xIDQuOSA4LjMgNy45IDQgNiA1LjMgOS4yYzEuMyAzLjEgMi4yIDYuMyAyLjggOS40cy44IDYgLjggOC43cTAgOC4yNS0zIDE1LjljLTIgNS4xLTUgOS43LTguOSAxMy42LTQgNC04LjggNy4yLTE0LjcgOS42LTUuOCAyLjQtMTIuNiAzLjYtMjAuMiAzLjZoLTI3Ljl6bTExLjYgNzQuN0g1MDBjNC45IDAgOS42LS43IDE0LTJzOC4yLTMuMyAxMS41LTYgNS45LTYgNy45LTEwYzEuOS00IDIuOS04LjYgMi45LTEzLjlzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC40cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40djYzLjhaTTU2MS43IDM1LjVoMjkuN2MzLjcgMCA3LjEuNCAxMC4zIDEuM3M1LjkgMi4yIDguMiAzLjlxMy40NSAyLjU1IDUuNCA2LjZjMS4zIDIuNyAyIDUuOSAyIDkuNXMtMS40IDguOS00LjEgMTItNi4zIDUuNC0xMC42IDYuOHYuMmMyLjYuMiA1IC44IDcuMiAyIDIuMyAxLjIgNC4yIDIuNyA1LjkgNC42IDEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjRWMzUuNVpNNTczLjMgNzFoMTUuOGMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4ydjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yIDEuOC0xLjEgMy40LTIuNiA0LjctNC40IDEuMy0xLjkgMS45LTQuMyAxLjktNy40IDAtNS4xLTEuNy04LjktNS0xMS40cy03LjgtMy44LTEzLjQtMy44aC0xNy4ydjI5LjdaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNODYuMyA0LjJDNTMuNCA0LjIgMzAuNCAyNC43IDMwLjQgNTRzNC45IDM0LjggOS4xIDU1LjhjMyAxNS4xIDUuNiAyNy4zIDUuNyAyNy42LjggMy43IDQuNCA2LjEgOC4yIDUuNWguOGMwLS4xLS42LS43LS42LS43LTEuMS0xLjEtMS44LTIuNC0yLjMtMy44LS4yLS44LS4zLTEuNS0uNC0yLjEgMC0uMyAwLS42LS4xLS45bC0xLjUtOC45Yy0uNi00LTEuMy04LTEuOC0xMS44IDAtLjMuMS0uNS40LS41cy41LjEuNS40cTEuMiA1LjcgMi40IDExLjdsMS43IDguOGMwIC4zLjEuNi4yLjkuMS43LjMgMS40LjQgMiAuNSAxLjUgMS41IDIuOCAyLjggMy44LjEuMS4zLjIuNC4zLjguNCAxLjYuNyAyLjUuOS45LjEgMS44LjEgMi42IDAgLjktLjIgMS45LS42IDIuNy0xLjJsLjMtLjItLjItLjNjLS43LS45LTEuMS0xLjktMS40LTMtLjItLjgtLjMtMS41LS4zLTIuMnYtLjlsLS45LTguOWMtLjQtNC4xLS43LTguMS0xLTExLjkgMC0uMSAwLS4yLjEtLjMgMCAwIC4yLS4yLjMtLjIuMyAwIC41LjIuNS40LjUgMy44IDEuMSA3LjggMS42IDExLjhsMS4xIDguOWMwIC4zIDAgLjUuMS44IDAgLjcuMiAxLjQuMyAyIC4yLjcuNCAxLjMuOCAxLjkuNS45IDEuMiAxLjYgMiAyLjIgMCAwIDAgLjEuMS4xIDEuNCAxIDMuMyAxLjQgNSAxLjFzMy4zLTEuMiA0LjUtMi41Yy4zLS4zLjUtLjcuNy0xLjF2LS40Yy0uMS0uNC0uMi0uOC0uNC0xLjItLjEtLjYtLjItMS40LS4yLTIuM3YtNC40Yy0uMi01LjYtLjItMTEuMy0uMi0xNy42IDAtLjMuMi0uNS41LS41cy41LjIuNS40Yy40IDYuMy43IDEyIC45IDE3LjZsLjIgNC40YzAgLjggMCAxLjQuMiAyIC4xLjUuMyAxLjIuNyAxLjh2LjFjMS4yIDIuMiAzLjYgMy43IDYuMSAzLjdoLjFjMi41IDAgNS0xLjQgNi4zLTMuNy4zLS41LjUtMS4xLjctMS44LjEtLjYuMi0xLjIuMi0xLjlsLjItNC41Yy4yLTUuMy41LTExIC45LTE3LjYgMC0uMy4yLS41LjUtLjQuMiAwIC40LjIuNC41IDAgNi42IDAgMTIuMy0uMSAxNy42djQuNGMwIC42IDAgMS41LS4zIDIuMyAwIC40LS4yLjgtLjMgMS4ydi40Yy4yLjQuNS43LjcgMS4xIDEuMSAxLjQgMi43IDIuMyA0LjUgMi41IDEuNy4zIDMuNi0uMSA1LTEuMWguMWMuOC0uNiAxLjUtMS40IDItMi4yLjQtLjYuNi0xLjIuOC0xLjkuMS0uNi4yLTEuMy4zLTIgMC0uMyAwLS41LjEtLjhsMS4xLTguOWMuNS00IDEuMS04IDEuNi0xMS44IDAtLjEgMC0uMi4yLS4zLjEgMCAuMi0uMS4zIDAgLjIgMCAuNC4zLjQuNS0uMyAzLjgtLjcgNy44LTEgMTEuOWwtLjkgOC45di44YzAgLjctLjEgMS40LS4zIDIuMi0uMyAxLjEtLjcgMi4xLTEuNCAzbC0uMi4zLjMuMmMuOC42IDEuOCAxIDIuNyAxLjJzMS43LjIgMi42IDBjLjktLjEgMS43LS40IDIuNS0uOS4yIDAgLjMtLjIuNC0uMyAxLjMtLjkgMi4zLTIuMyAyLjgtMy44LjItLjUuMy0xLjMuNC0yIDAtLjMuMS0uNi4yLS44bDEuNy04LjhjLjgtNCAxLjYtOCAyLjQtMTEuNyAwLS4zLjMtLjQuNi0uNC4yIDAgLjQuMy40LjUtLjYgMy44LTEuMiA3LjgtMS44IDExLjhsLTEuNSA4LjljMCAuMy0uMS42LS4xLjktLjEuNy0uMiAxLjMtLjQgMi4yLS40IDEuNC0xLjIgMi43LTIuMyAzLjhsLS41LjUuNy4yYy40IDAgLjguMSAxLjIuMSAzLjMgMCA2LjMtMi4zIDctNS42IDAtLjMgMi44LTEyLjkgNS44LTI4LjUgNC4xLTIwLjkgOS00NyA5LTU1QzE0MiAyNSAxMTkgNC41IDg2LjEgNC41WiIgc3R5bGU9ImZpbGw6IzU3ZDFlNSIvPjxwYXRoIGQ9Ik0xMzMuMSAxMDkuN2MtMy4xIDE1LjctNS43IDI3LjUtNS43IDI3LjctLjcgMy4yLTMuNyA1LjQtNyA1LjRoLTEuNmwuMy0uNGMxLjEtMS4xIDEuOS0yLjQgMi4zLTMuOC4yLS44LjMtMS41LjQtMi4yIDAtLjQgMC0uNi4xLS45bDEuNS04LjljLjYtNCAxLjMtOCAxLjgtMTEuOCAwLS4zLS4yLS43LS41LS43aC0uNWMtLjEgMC0uMy4yLS4zLjQtLjggMy43LTEuNiA3LjctMi40IDExLjdsLTEuNyA4LjhjMCAuMiAwIC40LS4xLjZ2LjNjLS4yLjctLjMgMS40LS41IDEuOS0uNCAxLjUtMS40IDIuOC0yLjcgMy43LS4xIDAtLjMuMi0uNC4zLS43LjQtMS41LjctMi40LjhzLTEuNy4xLTIuNiAwYy0uOS0uMi0xLjgtLjYtMi42LTEuMmgtLjJjMC0uMS4xLS4zLjEtLjMuNy0xIDEuMS0yIDEuNC0zLjEuMi0uOC4zLTEuNS4zLTIuM3YtLjhsLjktOC45Yy40LTQuMS43LTguMSAxLTExLjkgMC0uMy0uMi0uNy0uNi0uNy0uMiAwLS4zIDAtLjUuMS0uMS4xLS4yLjMtLjMuNC0uNSAzLjgtMS4xIDcuNy0xLjYgMTEuOGwtMS4xIDguOWMwIC4zIDAgLjUtLjEuOCAwIC43LS4yIDEuNC0uMyAyLS4yLjYtLjQgMS4yLS44IDEuOC0uNS44LTEuMiAxLjYtMiAyLjEgMCAwIDAgLjEtLjEuMS0xLjQuOS0zLjIgMS4zLTQuOSAxLjFzLTMuMy0xLjEtNC4zLTIuNWMtLjMtLjMtLjUtLjctLjctMXYtLjJjLjEtLjQuMy0uOC40LTEuMi4yLS44LjItMS44LjItMi40di00LjRjLjItNS4yLjItMTAuOS4yLTE3LjYgMC0uMy0uMy0uNi0uNi0uNy0uNCAwLS43LjMtLjcuNi0uNCA2LjUtLjcgMTIuMy0uOSAxNy42bC0uMiA0LjVjMCAuNyAwIDEuMy0uMiAxLjktLjIuNy0uNCAxLjMtLjcgMS44LTEuMiAyLjItMy42IDMuNi02IDMuNkg4NmMtMi40IDAtNC44LTEuNC02LTMuNnYtLjFjLS4zLS42LS41LTEuMi0uNy0xLjctLjEtLjYtLjItMS4yLS4yLTJsLS4yLTQuNGMtLjItNS41LS41LTExLjMtLjktMTcuNiAwLS4zLS4zLS42LS43LS42cy0uNy4zLS43LjdjMCA2LjMgMCAxMiAuMSAxNy42djQuNHEwIDEuNS4zIDIuNGMuMS40LjIuOS40IDEuMnYuMmMtLjIuNC0uNS43LS43IDFhNy42IDcuNiAwIDAgMS00LjMgMi41Yy0xLjcuMy0zLjUtLjEtNC45LTEuMWgtLjFjLS44LS42LTEuNS0xLjMtMi0yLjItLjMtLjYtLjYtMS4yLS44LTEuOC0uMS0uNS0uMi0xLjItLjMtMiAwLS4zIDAtLjUtLjEtLjhsLTEuMS04LjljLS41LTQuMS0xLjEtOC4xLTEuNi0xMS44IDAtLjQtLjMtLjYtLjctLjYtLjIgMC0uMyAwLS40LjItLjEuMS0uMi4zLS4yLjUuMyAzLjguNyA3LjggMSAxMS45bC45IDguOXYuOWMwIC43LjEgMS40LjMgMi4yLjMgMS4xLjcgMi4xIDEuNCAzLjF2LjJjLjEgMCAwIC4xIDAgLjEtLjguNi0xLjcgMS0yLjYgMS4yLS44LjItMS43LjItMi42IDBxLTEuMzUtLjE1LTIuNC0uOWMtLjEgMC0uMy0uMi0uNC0uMy0xLjMtLjktMi4zLTIuMi0yLjctMy43LS4yLS41LS4zLTEuMi0uNC0xLjkgMC0uNC0uMS0uNy0uMi0uOWwtMS43LTguOGMtLjgtNC0xLjYtOC0yLjQtMTEuNyAwLS4zLS40LS42LS43LS41LS40IDAtLjYuNC0uNi43LjYgMy44IDEuMiA3LjggMS44IDExLjhsMS41IDguOWMwIC4zIDAgLjUuMS44LjEuOC4yIDEuNS40IDIuMy40IDEuNCAxLjIgMi43IDIuMyAzLjhsLjMuM2gtLjRjLTMuNy43LTcuMi0xLjctOC01LjMtLjMtMS4zLTMtMTMuMS01LjktMjcuNmw0LjIgMjhjMCAuMi4xLjUuMi43di4yYy4xLjIuMi4zLjMuNSAwIDAgMCAuMi4xLjMgMCAuMS4xLjIuMi40IDAgLjEuMS4yLjIuM3YuMmwuNi45Yy4xLjIuMi4zLjQuNS4xLjIuMy4zLjQuNSAxLjYgMS41IDMuNyAyLjMgNS45IDIuM3MxIDAgMS40LS4xbDMuMi0uNWMuNS4yIDEuMS40IDEuNy40IDEuMS4yIDIuMi4xIDMuMiAwIDEuMS0uMiAyLjMtLjcgMy4zLTEuNWwuOC0uNmMuMi4yLjUuNC44LjZsLjIuMmMxLjcgMS4xIDQgMS42IDYuMSAxLjNzNC4xLTEuNCA1LjQtMy4xYy4yLS4zLjUtLjYuNy0uOSAxLjUgMi41IDQuNCA0LjEgNy4zIDQuMWguMmMyLjkgMCA1LjctMS42IDcuMi00LjEuMi4zLjQuNy43LjkgMS4zIDEuNyAzLjMgMi44IDUuNCAzLjFoMS4zYzEuNyAwIDMuNC0uNSA0LjgtMS40IDAgMCAuMSAwIC4yLS4xLjMtLjIuNS0uNC44LS42bC44LjZxMS41IDEuMDUgMy4zIDEuNWMxIC4yIDIuMS4yIDMuMiAwcTEuMDUtLjE1IDIuMS0uNmwyLjcuN2guMWMuNS4xLjkuMSAxLjQuMSA0IDAgNy42LTIuOSA4LjUtNi44IDAtLjEgNC4yLTI4IDQuMi0yOFoiIGNsYXNzPSJjbHMtNCIvPjxwYXRoIGQ9Ik00Ni40IDE3LjdjLTEwLjEgOC44LTE2IDIxLjQtMTYgMzYuMnMxNC41IDgyLjggMTQuNyA4My41Yy4zIDEuNSAxLjQgMi42IDIuNCAzLjYtMy42LTE3LjQtMTUuNC03My41LTE1LjQtODYuNnM1LjItMjcuMiAxNC4zLTM2LjciIHN0eWxlPSJmaWxsOiM5M2UxZWYiLz48cGF0aCBkPSJNNzEuMyAyNS42QzU3LjkgMjUuNiA0NyAzNi41IDQ3IDQ5LjlzMTAuOSAyNC4zIDI0LjMgMjQuMyAyNC4zLTEwLjkgMjQuMy0yNC4zLTEwLjktMjQuMy0yNC4zLTI0LjMiIGNsYXNzPSJjbHMtMyIvPjxwYXRoIGQ9Ik00NC42IDQ4YzAgMTMuNCAxMC45IDI0LjMgMjQuMyAyNC4zUzkzLjIgNjEuNCA5My4yIDQ4IDgyLjMgMjMuNyA2OC45IDIzLjcgNDQuNiAzNC42IDQ0LjYgNDgiIHN0eWxlPSJmaWxsOiNmZmYiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=);background-position:50%;background-repeat:no-repeat;height:36px;margin-bottom:0;width:156px!important}.dark .footer-logo{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZn0uY2xzLTN7ZmlsbDojNGQ5YmI2fS5jbHMtNHtmaWxsOiMzYjJkNTV9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkxheWVyXzEiPjxwYXRoIGQ9Ik0xODUuNCAxMDMuMWMyLjEgMy4xIDQuOCA1LjUgOCA2LjkgMy4zIDEuNSA2LjYgMi4yIDEwLjEgMi4yczMuOS0uMyA1LjktLjkgMy44LTEuNSA1LjUtMi43YzEuNi0xLjIgMy0yLjcgNC00LjVzMS42LTMuOCAxLjYtNi4yLTEtNS44LTMuMS03LjUtNC43LTMuMi03LjgtNC4zYy0zLjEtMS4yLTYuNS0yLjMtMTAuMi0zLjRxLTUuNTUtMS42NS0xMC4yLTQuNXQtNy44LTcuOGMtMi4xLTMuMy0zLjEtNy43LTMuMS0xMy4ycy41LTUuMiAxLjYtOCAyLjgtNS40IDUuMS03LjcgNS4zLTQuMyA5LTUuOXE1LjU1LTIuNCAxMy4yLTIuNGM3LjY1IDAgOS4xLjYgMTMuNCAxLjlzOCAzLjkgMTEuMiA3LjlsLTkuNCA4LjZjLTEuNS0yLjMtMy41LTQuMS02LjItNS40LTIuNy0xLjQtNS43LTIuMS05LjEtMi4xcy01LjkuNC04IDEuM3EtMy4xNSAxLjItNS4xIDMuM2MtMS4zIDEuMy0yLjIgMi44LTIuNyA0LjNzLS44IDIuOS0uOCA0LjJjMCAzLjYgMSA2LjQgMy4xIDguM3M0LjcgMy41IDcuOCA0LjdxNC42NSAxLjggMTAuMiAzLjNjMy43IDEgNy4xIDIuMyAxMC4yIDRzNS43IDQuMSA3LjggNyAzLjEgNyAzLjEgMTIuMS0uOCA3LjgtMi40IDExLjEtMy43IDYuMS02LjMgOC4zYy0yLjcgMi4zLTUuOCA0LTkuNCA1LjJzLTcuNSAxLjgtMTEuNiAxLjgtMTAuNy0xLTE1LjYtMi45LTguOC00LjktMTEuNy04LjlsOS41LTguMlpNMjg2IDc5cS0zLTMuMTUtNi4zLTQuOGMtMi4yLTEuMS00LjktMS42LTcuOS0xLjZzLTUuNi41LTcuOCAxLjYtNC4xIDIuNi01LjYgNC41LTIuNiA0LjEtMy40IDYuNWMtLjggMi41LTEuMSA1LTEuMSA3LjdzLjQgNS4yIDEuMyA3LjVjLjkgMi40IDIuMSA0LjUgMy43IDYuMnMzLjUgMy4yIDUuOCA0LjIgNC44IDEuNSA3LjYgMS41IDUuNy0uNSA3LjktMS42cTMuMy0xLjY1IDYtNC44bDcuNyA3LjdjLTIuOCAzLjEtNi4xIDUuNC05LjkgNi44LTMuNyAxLjQtNy43IDIuMS0xMS45IDIuMXMtOC41LS43LTEyLjItMi4yLTYuOC0zLjUtOS41LTYuMS00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4yIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4yIDYzLjdoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN2gxMS42bC0yNy4yIDY5LjZjLTEgMi41LTIgNC44LTMgNi44LTEgMi4xLTIuMyAzLjgtMy43IDUuM3MtMy4yIDIuNi01LjIgMy40LTQuNiAxLjItNy41IDEuMi0zLjItLjEtNC45LS4zYy0xLjYtLjItMy4yLS42LTQuOC0xLjNsMS4zLTkuOWMyLjIuOSA0LjMgMS4zIDYuNSAxLjNzMy4xLS4yIDQuMy0uN2MxLjItLjQgMi4yLTEuMSAzLTEuOXExLjItMS4yIDIuMS0zYy42LTEuMSAxLjEtMi40IDEuNy0zLjlsMy41LTkuMS0yMy43LTU3LjZaTTM2My45IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTM4Ni42IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi43IDcwLjdjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczguMS0yLjEgMTIuMS0yLjEgNy44LjUgMTAuOCAxLjZjMyAxIDUuNSAyLjUgNy40IDQuMiAxLjkgMS44IDMuNCAzLjggNC4zIDYuMXMxLjQgNC43IDEuNCA3LjJ2MjkuMmMwIDIgMCAzLjkuMSA1LjYgMCAxLjcuMiAzLjMuNCA0LjhoLTkuN2MtLjItMi45LS40LTUuOC0uNC04LjdoLS4yYy0yLjQgMy43LTUuMyA2LjMtOC42IDcuOS0zLjMgMS41LTcuMSAyLjMtMTEuNSAyLjNzLTUuMi0uNC03LjYtMS4xcS0zLjYtMS4wNS02LjMtMy4zYy0xLjgtMS41LTMuMi0zLjItNC4zLTUuNC0xLTIuMS0xLjYtNC42LTEuNi03LjRzLjgtNi44IDIuNS05LjNjMS42LTIuNSAzLjktNC41IDYuOC02LjFzNi4yLTIuNyAxMC0zLjQgNy45LTEgMTIuMy0xaDh2LTIuNGMwLTEuNS0uMy0yLjktLjgtNC4zLS42LTEuNS0xLjQtMi44LTIuNS0zLjktMS4xLTEuMi0yLjUtMi4xLTQuMi0yLjhzLTMuNy0xLTYtMS0zLjkuMi01LjUuNi0zIC45LTQuMyAxLjUtMi41IDEuMy0zLjUgMi4xLTIuMSAxLjYtMyAyLjNsLTYuNS02LjhabTMwLjcgMjIuOGMtMi42IDAtNS4yLjEtNy45LjRzLTUuMi44LTcuNCAxLjYtNCAxLjktNS40IDMuNC0yLjEgMy4zLTIuMSA1LjZjMCAzLjMgMS4xIDUuNyAzLjMgNy4xIDIuMiAxLjUgNS4yIDIuMiA5IDIuMnM1LjUtLjUgNy42LTEuNXEzLjE1LTEuNSA1LjEtMy45YzEuMy0xLjYgMi4yLTMuNCAyLjgtNS40cy44LTMuOS44LTUuOXYtMy42ek00NzMuOCAzNS41aDI5LjlxOSAwIDE1LjkgMi4xYzQuNiAxLjQgOC41IDMuMiAxMS44IDUuNXM2LjEgNC45IDguMyA3LjkgNCA2IDUuMyA5LjJjMS4zIDMuMSAyLjIgNi4zIDIuOCA5LjRzLjggNiAuOCA4LjdxMCA4LjI1LTMgMTUuOWMtMiA1LjEtNSA5LjctOC45IDEzLjctNCA0LTguOCA3LjItMTQuNyA5LjYtNS44IDIuNC0xMi42IDMuNi0yMC4zIDMuNmgtMjcuOXptMTEuNiA3NC42SDUwMGM0LjkgMCA5LjYtLjcgMTQtMnM4LjItMy4zIDExLjUtNiA1LjktNiA3LjktMTBjMS45LTQgMi45LTguNiAyLjktMTRzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC41cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40VjExMFpNNTYxLjYgMzUuNWgyOS43YzMuNyAwIDcuMi40IDEwLjMgMS4zIDMuMi45IDUuOSAyLjIgOC4yIDMuOXEzLjQ1IDIuNTUgNS40IDYuNmMxLjMgMi43IDIgNS45IDIgOS41cy0xLjQgOC45LTQuMSAxMi02LjMgNS40LTEwLjYgNi44di4yYzIuNi4yIDUgLjggNy4zIDJzNC4yIDIuNyA1LjkgNC42YzEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjR6TTU3My4yIDcxSDU4OWMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4zdjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yczMuNC0yLjYgNC43LTQuNGMxLjMtMS45IDEuOS00LjMgMS45LTcuNCAwLTUuMS0xLjctOC45LTUtMTEuNHMtNy44LTMuOC0xMy40LTMuOGgtMTcuMnYyOS43WiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTg2LjMgNC4yQzUzLjQgNC4yIDMwLjQgMjQuNyAzMC40IDU0czQuOSAzNC44IDkuMSA1NS44YzMgMTUuMSA1LjYgMjcuMyA1LjcgMjcuNi44IDMuNyA0LjQgNi4xIDguMiA1LjVoLjhjMC0uMS0uNi0uNy0uNi0uNy0xLjEtMS4xLTEuOC0yLjQtMi4zLTMuOC0uMi0uOC0uMy0xLjUtLjQtMi4xIDAtLjMgMC0uNi0uMS0uOWwtMS41LTguOWMtLjYtNC0xLjMtOC0xLjgtMTEuOCAwLS4zLjEtLjUuNC0uNXMuNS4xLjUuNHExLjIgNS43IDIuNCAxMS43bDEuNyA4LjhjMCAuMy4xLjYuMi45LjEuNy4zIDEuNC40IDIgLjUgMS41IDEuNSAyLjggMi44IDMuOC4xLjEuMy4yLjQuMy44LjQgMS42LjcgMi41LjkuOS4xIDEuOC4xIDIuNiAwIC45LS4yIDEuOS0uNiAyLjctMS4ybC4zLS4yLS4yLS4zYy0uNy0uOS0xLjEtMS45LTEuNC0zLS4yLS44LS4zLTEuNS0uMy0yLjJ2LS45bC0uOS04LjljLS40LTQuMS0uNy04LjEtMS0xMS45IDAtLjEgMC0uMi4xLS4zIDAgMCAuMi0uMi4zLS4yLjMgMCAuNS4yLjUuNC41IDMuOCAxLjEgNy44IDEuNiAxMS44bDEuMSA4LjljMCAuMyAwIC41LjEuOCAwIC43LjIgMS40LjMgMiAuMi43LjQgMS4zLjggMS45LjUuOSAxLjIgMS42IDIgMi4yIDAgMCAwIC4xLjEuMSAxLjQgMSAzLjMgMS40IDUgMS4xczMuMy0xLjIgNC41LTIuNWMuMy0uMy41LS43LjctMS4xdi0uNGMtLjEtLjQtLjItLjgtLjQtMS4yLS4xLS42LS4yLTEuNC0uMi0yLjN2LTQuNGMtLjItNS42LS4yLTExLjMtLjItMTcuNiAwLS4zLjItLjUuNS0uNXMuNS4yLjUuNGMuNCA2LjMuNyAxMiAuOSAxNy42bC4yIDQuNGMwIC44IDAgMS40LjIgMiAuMS41LjMgMS4yLjcgMS44di4xYzEuMiAyLjIgMy42IDMuNyA2LjEgMy43aC4xYzIuNSAwIDUtMS40IDYuMy0zLjcuMy0uNS41LTEuMS43LTEuOC4xLS42LjItMS4yLjItMS45bC4yLTQuNWMuMi01LjMuNS0xMSAuOS0xNy42IDAtLjMuMi0uNS41LS40LjIgMCAuNC4yLjQuNSAwIDYuNiAwIDEyLjMtLjEgMTcuNnY0LjRjMCAuNiAwIDEuNS0uMyAyLjMgMCAuNC0uMi44LS4zIDEuMnYuNGMuMi40LjUuNy43IDEuMSAxLjEgMS40IDIuNyAyLjMgNC41IDIuNSAxLjcuMyAzLjYtLjEgNS0xLjFoLjFjLjgtLjYgMS41LTEuNCAyLTIuMi40LS42LjYtMS4yLjgtMS45LjEtLjYuMi0xLjMuMy0yIDAtLjMgMC0uNS4xLS44bDEuMS04LjljLjUtNCAxLjEtOCAxLjYtMTEuOCAwLS4xIDAtLjIuMi0uMy4xIDAgLjItLjEuMyAwIC4yIDAgLjQuMy40LjUtLjMgMy44LS43IDcuOC0xIDExLjlsLS45IDguOXYuOGMwIC43LS4xIDEuNC0uMyAyLjItLjMgMS4xLS43IDIuMS0xLjQgM2wtLjIuMy4zLjJjLjguNiAxLjggMSAyLjcgMS4yczEuNy4yIDIuNiAwYy45LS4xIDEuNy0uNCAyLjUtLjkuMiAwIC4zLS4yLjQtLjMgMS4zLS45IDIuMy0yLjMgMi44LTMuOC4yLS41LjMtMS4zLjQtMiAwLS4zLjEtLjYuMi0uOGwxLjctOC44Yy44LTQgMS42LTggMi40LTExLjcgMC0uMy4zLS40LjYtLjQuMiAwIC40LjMuNC41LS42IDMuOC0xLjIgNy44LTEuOCAxMS44bC0xLjUgOC45YzAgLjMtLjEuNi0uMS45LS4xLjctLjIgMS4zLS40IDIuMi0uNCAxLjQtMS4yIDIuNy0yLjMgMy44bC0uNS41LjcuMmMuNCAwIC44LjEgMS4yLjEgMy4zIDAgNi4zLTIuMyA3LTUuNiAwLS4zIDIuOC0xMi45IDUuOC0yOC41IDQuMS0yMC45IDktNDcgOS01NUMxNDIgMjUgMTE5IDQuNSA4Ni4xIDQuNVoiIHN0eWxlPSJmaWxsOiM1N2QxZTUiLz48cGF0aCBkPSJNMTMzLjEgMTA5LjdjLTMuMSAxNS43LTUuNyAyNy41LTUuNyAyNy43LS43IDMuMi0zLjcgNS40LTcgNS40aC0xLjZsLjMtLjRjMS4xLTEuMSAxLjktMi40IDIuMy0zLjguMi0uOC4zLTEuNS40LTIuMiAwLS40IDAtLjYuMS0uOWwxLjUtOC45Yy42LTQgMS4zLTggMS44LTExLjggMC0uMy0uMi0uNy0uNS0uN2gtLjVjLS4xIDAtLjMuMi0uMy40LS44IDMuNy0xLjYgNy43LTIuNCAxMS43bC0xLjcgOC44YzAgLjIgMCAuNC0uMS42di4zYy0uMi43LS4zIDEuNC0uNSAxLjktLjQgMS41LTEuNCAyLjgtMi43IDMuNy0uMSAwLS4zLjItLjQuMy0uNy40LTEuNS43LTIuNC44cy0xLjcuMS0yLjYgMGMtLjktLjItMS44LS42LTIuNi0xLjJoLS4yYzAtLjEuMS0uMy4xLS4zLjctMSAxLjEtMiAxLjQtMy4xLjItLjguMy0xLjUuMy0yLjN2LS44bC45LTguOWMuNC00LjEuNy04LjEgMS0xMS45IDAtLjMtLjItLjctLjYtLjctLjIgMC0uMyAwLS41LjEtLjEuMS0uMi4zLS4zLjQtLjUgMy44LTEuMSA3LjctMS42IDExLjhsLTEuMSA4LjljMCAuMyAwIC41LS4xLjggMCAuNy0uMiAxLjQtLjMgMi0uMi42LS40IDEuMi0uOCAxLjgtLjUuOC0xLjIgMS42LTIgMi4xIDAgMCAwIC4xLS4xLjEtMS40LjktMy4yIDEuMy00LjkgMS4xcy0zLjMtMS4xLTQuMy0yLjVjLS4zLS4zLS41LS43LS43LTF2LS4yYy4xLS40LjMtLjguNC0xLjIuMi0uOC4yLTEuOC4yLTIuNHYtNC40Yy4yLTUuMi4yLTEwLjkuMi0xNy42IDAtLjMtLjMtLjYtLjYtLjctLjQgMC0uNy4zLS43LjYtLjQgNi41LS43IDEyLjMtLjkgMTcuNmwtLjIgNC41YzAgLjcgMCAxLjMtLjIgMS45LS4yLjctLjQgMS4zLS43IDEuOC0xLjIgMi4yLTMuNiAzLjYtNiAzLjZIODZjLTIuNCAwLTQuOC0xLjQtNi0zLjZ2LS4xYy0uMy0uNi0uNS0xLjItLjctMS43LS4xLS42LS4yLTEuMi0uMi0ybC0uMi00LjRjLS4yLTUuNS0uNS0xMS4zLS45LTE3LjYgMC0uMy0uMy0uNi0uNy0uNnMtLjcuMy0uNy43YzAgNi4zIDAgMTIgLjEgMTcuNnY0LjRxMCAxLjUuMyAyLjRjLjEuNC4yLjkuNCAxLjJ2LjJjLS4yLjQtLjUuNy0uNyAxYTcuNiA3LjYgMCAwIDEtNC4zIDIuNWMtMS43LjMtMy41LS4xLTQuOS0xLjFoLS4xYy0uOC0uNi0xLjUtMS4zLTItMi4yLS4zLS42LS42LTEuMi0uOC0xLjgtLjEtLjUtLjItMS4yLS4zLTIgMC0uMyAwLS41LS4xLS44bC0xLjEtOC45Yy0uNS00LjEtMS4xLTguMS0xLjYtMTEuOCAwLS40LS4zLS42LS43LS42LS4yIDAtLjMgMC0uNC4yLS4xLjEtLjIuMy0uMi41LjMgMy44LjcgNy44IDEgMTEuOWwuOSA4Ljl2LjljMCAuNy4xIDEuNC4zIDIuMi4zIDEuMS43IDIuMSAxLjQgMy4xdi4yYy4xIDAgMCAuMSAwIC4xLS44LjYtMS43IDEtMi42IDEuMi0uOC4yLTEuNy4yLTIuNiAwcS0xLjM1LS4xNS0yLjQtLjljLS4xIDAtLjMtLjItLjQtLjMtMS4zLS45LTIuMy0yLjItMi43LTMuNy0uMi0uNS0uMy0xLjItLjQtMS45IDAtLjQtLjEtLjctLjItLjlsLTEuNy04LjhjLS44LTQtMS42LTgtMi40LTExLjcgMC0uMy0uNC0uNi0uNy0uNS0uNCAwLS42LjQtLjYuNy42IDMuOCAxLjIgNy44IDEuOCAxMS44bDEuNSA4LjljMCAuMyAwIC41LjEuOC4xLjguMiAxLjUuNCAyLjMuNCAxLjQgMS4yIDIuNyAyLjMgMy44bC4zLjNoLS40Yy0zLjcuNy03LjItMS43LTgtNS4zLS4zLTEuMy0zLTEzLjEtNS45LTI3LjZsNC4yIDI4YzAgLjIuMS41LjIuN3YuMmMuMS4yLjIuMy4zLjUgMCAwIDAgLjIuMS4zIDAgLjEuMS4yLjIuNCAwIC4xLjEuMi4yLjN2LjJsLjYuOWMuMS4yLjIuMy40LjUuMS4yLjMuMy40LjUgMS42IDEuNSAzLjcgMi4zIDUuOSAyLjNzMSAwIDEuNC0uMWwzLjItLjVjLjUuMiAxLjEuNCAxLjcuNCAxLjEuMiAyLjIuMSAzLjIgMCAxLjEtLjIgMi4zLS43IDMuMy0xLjVsLjgtLjZjLjIuMi41LjQuOC42bC4yLjJjMS43IDEuMSA0IDEuNiA2LjEgMS4zczQuMS0xLjQgNS40LTMuMWMuMi0uMy41LS42LjctLjkgMS41IDIuNSA0LjQgNC4xIDcuMyA0LjFoLjJjMi45IDAgNS43LTEuNiA3LjItNC4xLjIuMy40LjcuNy45IDEuMyAxLjcgMy4zIDIuOCA1LjQgMy4xaDEuM2MxLjcgMCAzLjQtLjUgNC44LTEuNCAwIDAgLjEgMCAuMi0uMS4zLS4yLjUtLjQuOC0uNmwuOC42cTEuNSAxLjA1IDMuMyAxLjVjMSAuMiAyLjEuMiAzLjIgMHExLjA1LS4xNSAyLjEtLjZsMi43LjdoLjFjLjUuMS45LjEgMS40LjEgNCAwIDcuNi0yLjkgOC41LTYuOCAwLS4xIDQuMi0yOCA0LjItMjhaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNNDYuNCAxNy43Yy0xMC4xIDguOC0xNiAyMS40LTE2IDM2LjJzMTQuNSA4Mi44IDE0LjcgODMuNWMuMyAxLjUgMS40IDIuNiAyLjQgMy42LTMuNi0xNy40LTE1LjQtNzMuNS0xNS40LTg2LjZzNS4yLTI3LjIgMTQuMy0zNi43IiBzdHlsZT0iZmlsbDojOTNlMWVmIi8+PHBhdGggZD0iTTcxLjMgMjUuNkM1Ny45IDI1LjYgNDcgMzYuNSA0NyA0OS45czEwLjkgMjQuMyAyNC4zIDI0LjMgMjQuMy0xMC45IDI0LjMtMjQuMy0xMC45LTI0LjMtMjQuMy0yNC4zIiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNDQuNiA0OGMwIDEzLjQgMTAuOSAyNC4zIDI0LjMgMjQuM1M5My4yIDYxLjQgOTMuMiA0OCA4Mi4zIDIzLjcgNjguOSAyMy43IDQ0LjYgMzQuNiA0NC42IDQ4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.footer-links{margin-bottom:0!important;text-align:left}.footer-links__link{color:var(--text-color);font-size:12px;font-weight:500;letter-spacing:2.4px;margin-right:16px;text-transform:uppercase}.footer-actions{align-items:center;display:flex;gap:12px;justify-content:space-between}.footer-actions__link{color:var(--text-color);font-size:26px}.footer-bottom{color:var(--text-muted);display:flex;flex-wrap:wrap;font-size:12px;font-style:normal;font-weight:400;justify-content:center;letter-spacing:1.4px;line-height:23px;padding:20px 0 10px;text-align:center;text-transform:uppercase}@media screen and (max-width:510px){.footer-links{margin-bottom:20px}}@media screen and (min-width:1024px){.footer{padding:30px 0}.footer-group{padding:0}.footer-top{padding-bottom:30px}.footer-logo{margin:0;width:auto}.footer-links{padding:0 40px}.footer-links__link{font-size:14px;margin-right:28px}.footer-actions__link img{height:28px}.footer-bottom .footer-bottom__copyright,.footer-bottom .footer-bottom__last-updated,.footer-bottom .footer-bottom__version{padding:0 10px}.footer-bottom .footer-bottom__copyright{border-left:none}}.not-found{background-color:var(--navigation-bg);height:100%;overflow:hidden}.not-found__icon{display:block;margin:40px auto;max-width:300px}.not-found__text{text-align:center}.not-found__text h1{font-size:60px;line-height:1}.not-found__text p{margin:30px 0;width:100%}.not-found__button{text-transform:uppercase}.admonition{background-color:var(--body-bg);border-radius:4px;box-shadow:0 4px 4px rgba(0,0,0,.12);color:var(--text-muted);font-size:14px;line-height:20px;margin-bottom:30px;overflow:auto;padding:20px 20px 20px 52px;position:relative}.admonition:before{bottom:0;content:" ";left:0;position:absolute;right:0;top:0;z-index:-1}.admonition-title{color:var(--primary);display:flex;font-weight:700;left:-32px;position:relative}.admonition-title:before{background-image:none!important;content:"";font-size:24px;margin-right:8px;width:24px}.admonition p{margin-bottom:0!important}.admonition.tip{border:1px solid var(--success)}.admonition.tip:before{border-left:8px solid var(--success)}.admonition.tip .admonition-title{color:var(--success)!important}.admonition.note{border:1px solid var(--info)}.admonition.note:before{border-left:8px solid var(--info)}.admonition.note .admonition-title{color:var(--info)!important}.admonition.caution{border:1px solid var(--warning)}.admonition.caution:before{border-left:8px solid var(--warning)}.admonition.caution .admonition-title:before{content:""}.admonition.caution .admonition-title{color:var(--warning)!important}.admonition.warning{border:1px solid var(--danger)}.admonition.warning:before{border-left:8px solid var(--danger)}.admonition.warning .admonition-title:before{content:""}.admonition.warning .admonition-title{color:var(--danger)!important}.breadcrumbs{margin-bottom:0;text-transform:uppercase}.breadcrumbs .bread__item,.breadcrumbs .bread__item:not(.bread__item--last):after,.breadcrumbs a{color:var(--text-color);font-size:12px;font-weight:400;letter-spacing:1.5px;line-height:2;margin:0;padding:0}.breadcrumbs .bread__item:before{display:none}.breadcrumbs .bread__item:not(.bread__item--last):after{content:"/";margin:0 5px;opacity:1;position:relative}.breadcrumbs .bread__highlight{color:var(--link-color)}.breadcrumbs .bread__highlight:hover{font-weight:700;text-decoration:none}code{background-color:var(--well-bg);border:none;border-radius:4px;font-size:14px}code,code.download{color:var(--code-color)}code.download{background:none}.highlight{background:transparent!important}.highlight pre{background-color:var(--well-bg);border-radius:8px;color:var(--code-color);font-size:14px;line-height:26px;margin-bottom:30px;overflow:auto;padding:16px}.highlight a.copybtn{right:1em;top:1em}.highlighttable{background-color:var(--well-bg);border-radius:16px;box-shadow:none}.highlighttable tbody{background-color:transparent;border:0}.highlighttable tbody td{padding:15px!important}.highlighttable tbody tr{border-top:none}.highlighttable .linenos{background-color:var(--well-bg);color:var(--line-number);width:50px}.highlighttable .linenos span{line-height:26px}.highlighttable .highlight pre{background-color:transparent;margin:0;padding:0}.highlighttable .highlight a.copybtn{right:.2em;top:.2em}.copybtn{background-color:var(--card-bg)!important}.hide-copy-button .copybtn{display:none}.sphinx_collapse__label{color:var(--text-color);display:flex!important;flex-direction:row-reverse;font-size:medium;font-weight:700;justify-content:flex-end;margin-left:0!important}.sphinx_collapse__icon{border-top-color:var(--text-color)!important;margin-left:5px;margin-right:0}.sphinx_collapse__input:checked~.sphinx_collapse__label,.sphinx_collapse__label:hover{color:var(--link-color)}.sphinx_collapse__input:checked~.sphinx_collapse__label .sphinx_collapse__icon,.sphinx_collapse__label:hover .sphinx_collapse__icon{border-top-color:var(--link-color)!important}.sphinx_collapse__content{margin-top:10px}.contribute{margin:0 0 20px}.contribute__item{font-size:14px;list-style:none;padding-bottom:10px}.contribute__item a{align-items:center;display:flex}.contribute__item i{font-size:1.2em;line-height:1em;margin-right:5px}.content-navigation{display:flex;justify-content:space-between;margin-top:40px}.navigation{max-width:50%;word-break:break-word}.navigation,.navigation__link{display:flex}.navigation__title{color:var(--text-color);font-size:12px;font-weight:500;letter-spacing:1.5px;line-height:24px;text-transform:uppercase;word-wrap:break-word}.navigation__title .colored{color:var(--primary)}.navigation__button{background:var(--white);background-color:var(--card-bg);border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;display:none;font-size:0;height:fit-content;overflow:hidden;padding:8px}.navigation__button i{font-size:26px}.navigation--prev .navigation__title{margin-left:15px}.navigation--next .navigation__title{margin-right:15px;text-align:right}@media screen and (min-width:1200px){.navigation__title{display:inline-block}.navigation__button{display:block}.navigation--next .navigation__title{text-align:left}}.scylla-dropdown--versions .scylla-dropdown__item{background:var(--card-bg);border-radius:8px;box-shadow:0 28px 32px rgba(0,0,0,.06);width:100%}.scylla-dropdown--versions .scylla-dropdown__title{align-items:center;display:flex;justify-content:space-between}.scylla-dropdown--versions .scylla-dropdown__title .chevron{min-height:12px;transform:rotate(90deg);width:8px}@media screen and (min-width:1024px){.scylla-dropdown--versions .scylla-dropdown__item{box-shadow:none}}.feedback-container{font-size:16px;margin-top:40px;text-align:left}.feedback-container__title{font-weight:700;margin-bottom:5px!important}.feedback-container__button{background:var(--white);background-color:var(--card-bg)!important;border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;margin:4px;overflow:hidden;padding:8px}.feedback-container__button.active{border-color:var(--primary)}.feedback-container__icon{font-size:22px}.feedback-container__message{font-size:16px;margin-top:10px}.hero{background:var(--navigation-bg);margin-bottom:30px;overflow:hidden;padding:30px 16px;text-align:left}.hero__title{font-size:28px;font-weight:500;line-height:38px;margin-bottom:14px;max-width:229px}.hero__text{font-size:16px;line-height:26px;max-width:343px}.hero__text a{border-bottom:1px dotted var(--text-color);color:var(--text-color)}.hero__text p{margin-bottom:0!important}.hero__img{position:absolute;right:-18px;top:20px}.hero__img img{margin-bottom:0!important;width:124px}.hero__button{margin-top:20px;text-transform:uppercase}.hero__button--bold{border-width:2px;font-weight:700}.hero__button .admonition-title:before,.hero__button .icon,.hero__button .search-box:before,.hero__button .secondary-side-nav__content li a:before,.hero__button .side-nav__content .scylla-icon--expand,.secondary-side-nav__content li .hero__button a:before,.side-nav__content .hero__button .scylla-icon--expand{margin-right:5px}.hero__button .icon--right{margin-left:5px;margin-right:0}.hero__button .icon--link,.hero__cta{color:var(--link-color)}.hero__search-box{box-shadow:0 4px 25px rgba(0,0,0,.02);margin-top:20px}.hero-wrapper{align-items:center;display:flex;justify-content:space-between;margin:0 auto;position:relative}@media screen and (min-width:640px){.hero{padding:60px 16px}.hero__title{font-size:32px;line-height:42px;max-width:482px}.hero__text{font-size:18px;line-height:26px;max-width:482px}.hero__img{display:block;position:static}.hero__img img{height:100%;width:295px}.hero .hero-wrapper{flex-direction:row-reverse}.hero .landing--floating .hero{padding:30px 16px 100px}}@media screen and (min-width:1024px){.hero{padding:60px}}.label{background-color:var(--navigation-bg);border:0;border-radius:4px;color:var(--white);font-size:inherit}.label--default{color:var(--text-color)}.label--note{background-color:var(--info)}.label--tip{background-color:var(--success)}.label--caution{background-color:var(--warning)}.label--warning{background-color:var(--danger)}.last-updated{color:var(--link);font-size:12px;letter-spacing:1.5px;margin:10px 0;text-transform:uppercase}.last-updated__icon{font-size:14px}@media screen and (min-width:1024px){.last-updated{float:right;margin:0}}.panel{border:0;border-radius:4px;margin-bottom:30px}.promo-banner{background-color:var(--header-border);background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDQwIiBoZWlnaHQ9IjcwIiBmaWxsPSJub25lIj48bWFzayBpZD0iYSIgd2lkdGg9IjE0NDAiIGhlaWdodD0iNzAiIHg9IjAiIHk9IjAiIG1hc2stdHlwZT0iYWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9IiM0NDU4YTMiIGQ9Ik0wIDBoMTQ0MHY3MEgweiIvPjwvbWFzaz48ZyBmaWxsPSIjNTA2NGFlIiBtYXNrPSJ1cmwoI2EpIj48cGF0aCBkPSJNLTE5MyAyMDEuODg0IDEuNS0xMzUgMzU3LjQzNiA3MC41bC0xOTQuNSAzMzYuODg0ek0xMDkyLjkyLTM4LjAwOSA5NzIuODAzLTI0Ni4wNTcgNDAyLjk5NiA4Mi45MiA1MjMuMTEzIDI5MC45N3oiLz48cGF0aCBkPSJtMTAzOC0zOC4wMDkgMTIwLjExNy0yMDguMDQ5IDU2OS44MDcgMzI4Ljk3OS0xMjAuMTE3IDIwOC4wNDl6Ii8+PC9nPjwvc3ZnPg==);background-position:50%;background-repeat:no-repeat;background-size:cover;display:none;overflow:hidden;position:fixed;top:0;width:100%;z-index:900}.promo-banner__icon{margin-right:15px}.promo-banner__icon img{height:40px}.promo-banner__title{color:var(--white);font-size:12px;line-height:16px;margin-right:15px}.promo-banner__button{background:var(--white);border-radius:4px;color:var(--black);font-size:12px;min-width:max-content;padding:5px}.promo-banner__close{display:none;position:absolute;right:16px;top:16px}.promo-banner__close i{color:var(--white);font-size:34px;height:34px;width:34px}.promo-banner__close:hover{cursor:pointer;filter:opacity(.8)}.promo-banner-wrapper{align-items:center;display:flex;justify-content:center;padding:5.85px 20px}@media(min-width:1024px){.promo-banner__title{font-size:18px;line-height:23px}.promo-banner__button{font-size:14px;padding:8.5px}.promo-banner__close{display:block}.promo-banner-wrapper{flex-direction:unset;padding:16px}}.custom-scroll-bar::-webkit-scrollbar{background-color:transparent;width:5px}.custom-scroll-bar::-webkit-scrollbar-thumb{background-color:var(--scollbar-bg);-webkit-border-radius:8px;border-radius:8px}.search-box{align-items:center;background:var(--well-bg);border-radius:4px;display:flex;flex-grow:1;padding:10px 15px}.search-box--hero{background-color:var(--well-bg);padding:12px 14px}.search-box:before{background-repeat:no-repeat;background-size:contain;content:"";display:inline-block;font-size:24px;margin-right:8px;min-height:18px;min-width:18px;vertical-align:middle;width:20px}.search-box .er-dummy-search,.search-box .er-dummy-search-box,.search-box .er-search-form,.search-box ci-search,.search-box input{margin:0!important;width:100%!important}.search-box input{background:transparent!important;color:var(--text-color)!important;font-size:14px!important;padding:0!important}.search-box input::placeholder{color:var(--text-muted)!important;opacity:1!important}.search-box button{display:none!important}.er_search_suggestions{background-color:var(--card-bg)!important;border:0!important;border-radius:var(--border-radius);box-shadow:0 4px 25px rgba(0,0,0,.15)!important;color:var(--text-muted)}.er_search_suggestions strong{color:var(--text-color)}.er_search_suggestions .er-cse-suggest-query{border-bottom:1px solid var(--border-color);padding:8px 20px!important}.er_search_suggestions .er-search-result-box{border-bottom:1px solid var(--border-color)!important;padding:0!important}.er_search_suggestions .er-search-result-box .text-container{padding:0!important}.er_search_suggestions .er-search-result-box .text-container>a{display:block;padding:12px 20px}.er_search_suggestions .er-search-result-box .er_highlight{border-bottom:1px solid var(--primary)!important;color:var(--text-emphasis)!important}.er_search_suggestions .er-search-result-box .title{color:var(--text-color)!important}.er_search_suggestions .er-search-result-box .text{color:var(--text-muted)!important}.er_search_suggestions .er-search-result-box:hover{background:var(--well-bg)!important}.er_search_suggestions .er_more_result_btn{color:var(--link-color)!important;cursor:pointer}.er_search_suggestions h3{font-size:16px!important}.er-search-content{background-color:var(--bg-color)!important;padding:32px!important}.er_search_results_count{border-bottom:1px solid var(--border-color)!important;color:var(--text-color)!important}.er-cse-shimmer .er-shimmer,.er-ecom-shimmer .er-shimmer{background-color:var(--well-bg)!important;background-image:linear-gradient(to right,var(--well-bg) 0,var(--card-bg) 20%,var(--well-bg) 40%,var(--well-bg) 0)!important}#er_search_results h3.heading{color:var(--text-color)!important}#er_search_results .er-search-result-box{border-bottom:var(--border-color);color:var(--text-muted);display:block!important;margin:10px auto 0!important;width:100%!important}#er_search_results .er-search-result-box .er_highlight{border-bottom:1px solid var(--primary)!important;color:var(--text-emphasis)!important}#er_search_results .er-search-result-box .title a,#er_search_results .er-search-result-box .url a{color:var(--link-color)!important}#er_search_results .er-search-result-box .text{color:var(--text-muted)!important}#er_search_results .er-search-result-box .text,#er_search_results .er-search-result-box .title a,#er_search_results .er-search-result-box .url a{max-width:100%!important}#search-result-input-form{box-shadow:0 4px 25px rgba(0,0,0,.15)!important;max-width:800px!important}#er_search_button{background-color:var(--card-bg)!important;color:var(--primary)!important;text-align:center}#er_search_input{background-color:var(--well-bg)!important;color:var(--text-color)!important;margin:0!important}#er_search_input::placeholder{color:var(--text-muted)!important;opacity:.5!important}#er_clear_input{color:var(--text-color)!important;right:0!important;top:0!important}.er_gcs_facet_ul::-webkit-scrollbar{background-color:transparent;width:5px}.er_gcs_facet_ul::-webkit-scrollbar-thumb{background-color:var(--scollbar-bg);-webkit-border-radius:8px;border-radius:8px}.er-facet-header{background-color:transparent!important;border:0!important;color:var(--text-color)!important;padding:0 0 8px!important}.er-facet-val{padding:5px 2px!important}.er-facet-val input{display:block!important;margin:0}.er-facet-val label{color:var(--text-color)!important}#er_search_pagination{margin-top:20px!important}#er_search_pagination li.er-paginator-list{color:var(--text-color)!important}#er_search_pagination li.er-paginator-list.er-active{border-bottom:0!important;font-weight:700}.er-suggestion-sm .er_search_input_dummy{margin:0!important}.er-suggestion-sm .er_search_button_dummy{border:0!important}#er_gcs_mobile_model_container .er-facet-values .er-facet-val{align-items:baseline}@media screen and (min-width:640px){.er-facets{display:none;max-width:300px!important;min-width:auto!important;width:auto!important}}@media screen and (min-width:1024px){.er-suggestions{left:15px!important}}@media screen and (min-width:1200px){.er-facets{display:block;position:fixed!important}.er-facet-count{display:none}}.sphinx-tabs{margin-bottom:30px}.sphinx-tabs-tab{border-bottom:1px solid var(--text-muted);color:var(--text-muted);cursor:pointer;font-size:14px;font-weight:500;line-height:13px;padding:20px 25px}.sphinx-tabs-tab[aria-selected=true]{border-bottom:2px solid var(--link-color);color:var(--link-color);padding-bottom:19px}.sphinx-tabs-panel{margin:30px 0}.table-wrapper{border:1px solid var(--border-color);border-radius:4px;box-shadow:1px 1px 2px rgba(0,0,0,.25);display:block;margin-bottom:30px;max-width:100%;overflow-x:auto;scrollbar-color:var(--border-color)}table{color:var(--text-color);font-size:14px;line-height:24px;margin:0;overflow:hidden}table p{margin:0!important}table caption{border-bottom:1px solid var(--border-color);color:var(--text-emphasis);padding:10px 25px}table caption,table thead{background:var(--navigation-bg)}table thead{border:0;border-bottom:1px solid var(--border-color)}table thead th{color:var(--text-emphasis);font-size:14px;font-weight:700}table td,table thead th{padding:20px 25px}table tbody{background:transparent;border:1px solid var(--border-color)}table tbody tr{background-color:transparent!important;border-top:1px solid var(--border-color);line-height:18px}table:not(.highlighttable) tbody tr:first-child{border-top:1px solid var(--header-border)}table.thead-border thead .row-odd th{color:var(--text-emphasis)}table.thead-border thead .row-even th{font-weight:400}table.thead-border thead th{border:1px solid var(--border-color)}table.thead-border thead tr:first-child th{border-top:none}table.thead-border thead tr:last-child th{border-bottom:none}table.thead-border thead tr th:first-child{border-left:none}table.thead-border thead tr th:last-child{border-right:none}.topics-grid{display:block;margin:0 auto 30px}.topics-grid__title{color:var(--text-emphasis);font-size:24px;font-weight:700;line-height:32px;margin-bottom:6px}.topics-grid__text{color:var(--text-color);font-size:18px;line-height:24px}.topics-grid--scrollable .hs{display:grid;grid-auto-flow:column;overflow-x:scroll;padding:20px 10px;-ms-overflow-style:none;scrollbar-width:none}.topics-grid--scrollable .hs::-webkit-scrollbar{display:none}.topics-grid--scrollable .hs .topic-box:last-child:after{content:"";width:20px}.topic-box{align-items:stretch;display:flex}.topic-box .card{background:var(--white);background-color:var(--card-bg)!important;border:1px solid transparent;border:1px solid var(--card-bg);border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);display:flex;flex-direction:column;font-size:18px;margin:0 auto 30px;overflow:hidden;padding:20px;position:relative}.topic-box .card:hover{border:1px solid var(--text-color)!important;color:var(--text-color);font-weight:400}.topic-box__title{color:var(--text-emphasis);font-size:16px;font-weight:700;line-height:24px;margin-bottom:0}.topic-box__title img{bottom:0;opacity:.3;position:absolute;right:0;top:0}.topic-box__body{color:var(--text-color);display:flex;flex-direction:column;flex-grow:1;max-width:80%}.topic-box__body .container{flex-grow:1;margin:0;padding:0}.topic-box__body .line-block,.topic-box__body p{font-size:16px;line-height:19px;margin-top:10px}.topic-box__anchor{color:var(--link-color);font-size:14px;font-weight:700;line-height:24px}.topic-box__icon{display:block;font-size:50px;margin-bottom:20px}.topic-box__icon i{min-height:50px;width:100%}.topic-box__icon img{bottom:-12px;display:none;height:140px;margin:0;opacity:.3;position:absolute;right:-5px}.topic-box--product .card{box-shadow:none;padding:20px;text-align:center}.topic-box--product .card .topic-box__title{color:var(--text-color);font-size:14px}.topic-box--product .card .topic-box__body{display:flex;flex-direction:column;max-width:100%}.topic-box--product .card .topic-box__body .line-block,.topic-box--product .card .topic-box__body p{font-size:12px}.topic-box--product .card .topic-box__icon img{display:inline-block;max-height:84px;opacity:1;position:static}.topic-box--product .card:hover{background:var(--white);background-color:var(--card-bg);border:0;border:1px solid var(--text-color)!important;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);overflow:hidden}@media screen and (max-width:1024px){.topics-grid--scrollable .topic-box{width:280px!important}.topic-box--product:nth-last-child(-n+2) .card{margin-bottom:0}}@media screen and (min-width:1024px){.topics-grid{margin-bottom:10px}.topics-grid__text{font-size:16px}.topics-grid--scrollable .hs{display:flex;overflow-x:initial;padding:0}.topics-grid--scrollable .hs .topic-box:last-child:after{display:none}.topic-box .card{margin-bottom:60px;padding:45px 30px}.topic-box__title{font-size:20px;line-height:32px}.topic-box__body .line-block,.topic-box__body p{font-size:18px;line-height:26px}.topic-box__anchor{font-size:20px;line-height:26px}.topic-box .topic-box__icon img{display:inline-block}.topic-box--product .card{padding:20px}.topic-box--product .card .topic-box__title{font-size:18px;line-height:24px}.topic-box--product .card .topic-box__body .line-block,.topic-box--product .card .topic-box__body p{font-size:14px}.topic-box--product .card .topic-box__icon img{max-height:111px}.landing .topics-grid--products{margin-bottom:40px}} \ No newline at end of file diff --git a/v1.13/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css b/v1.13/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css new file mode 100644 index 00000000000..eb19f698afc --- /dev/null +++ b/v1.13/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/v1.13/_static/design-tabs.js b/v1.13/_static/design-tabs.js new file mode 100644 index 00000000000..36b38cf0d91 --- /dev/null +++ b/v1.13/_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/v1.13/_static/doctools.js b/v1.13/_static/doctools.js new file mode 100644 index 00000000000..4d67807d17d --- /dev/null +++ b/v1.13/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/v1.13/_static/documentation_options.js b/v1.13/_static/documentation_options.js new file mode 100644 index 00000000000..7e4c114f212 --- /dev/null +++ b/v1.13/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/v1.13/_static/file.png b/v1.13/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/banner-background.svg b/v1.13/_static/img/banner-background.svg new file mode 100644 index 00000000000..f8520d5b3e4 --- /dev/null +++ b/v1.13/_static/img/banner-background.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/v1.13/_static/img/favicon-228x228.png b/v1.13/_static/img/favicon-228x228.png new file mode 100644 index 0000000000000000000000000000000000000000..f30770c7edd4c0c8356c8f3c2ce60d84c395f9c7 GIT binary patch literal 4428 zcmb7HXEYlQw2v8kkD4`WqzFolXw9aiA~vmB32GC&YEyy|t3|6?v-WDWh*4tC+C{b0 zirPU5<@tYnAKr&|&b{|{?)cqvKizXL1_6gM((%#(002h)`?@AqxbmOUP+Zw|OmO=Z zP`YRtY5@Rssr2U#R9C(b^1g{70Pyq%01z1q0FbUiksAO&02lz+vuKt1NYpM%vvYRpl%+Hk!hIxyqD!=g`Y+Sr=V)~_GST{tpmh^!^_Ld_0`R}*`JNI z?Qzetg1r;LazS%fW3l*~z)b;QO`pir_R*g;EcW?Ay9ik*|L9eY%n=6F1&KAS&|En{ ze|KZBb_aM>|0>=wnr*o80B)i~tp0 zlZ~dI@;h-)~oWBOZU5FSd@t!ApL0cWHNGcf=GWivgFerJ3rfD)&b}fRG z;$vg2J=)X89;?Krs&bF>-Dtyw8v*Ic*c!YVTflbeZe}}b>ovB7qZ~8poL;tP+gPdd zPF5G4oP4PFzLIiqR{SNg82VK0AqTroIEyqLra|r@O!Lq}pGE|B7Fd2rw#MkV73-63 zUt={K3fj*9W9#qBMxJChHg@us;})1sgHfAt*~URuaQ8D$4a+~oD-Q6Bv)RzDeskj( zL?H(l8q}fEHvYmQfv`9vwNdt`n}3CiKT-Q1+pm_bA?rY|FBP?Xn92ooeqeREB&~Xe zd9Sqkuz3Jypwy|O?1g`mK$YZ{MRdTiN6VfP@O$9Lm|DMm#jddGpDB+Pw9M(Vj?}bN z2dx5l7NO)76q%|$lDOCSIpdKX9o4)7e$=%X@cCuIQ1H>>wJx73)>W7h*mee8GCblN z8o8fn60=QQ7^+B1^~^le6Rh7?_?Cz!^Xhdr2HfdEIZcExPJ9Z}(3~J1(9TNml=!X1 zsYYjYkD6JxQFAgwf)8>^iW=6QxGrF^e#n#6WE-CY{o6(6*JGOcoX<$dZR&$(^M3-3 zo&lIAj6RFo-#=!4WtA~69gYhZOc7TNYx7D>orz*PkdMsDa>}f!Mm2<}3*;P_|B7wg zR7Cz`HM8d7Q)qJA3=FDF+x5IacHDVFSyn66@br-KRW%JhX$zg*u><49hdw9Ep-vMx z&Q}4siQprv{10cXT>G%YSOb&sA0L)e^|nmqksZrn_}Wg^XX6Dh1H zSIQ&mknc_VdN;=V&!Aj!`fUZ|O%yMb^kjL8f)JB^wmT2xyYaX}rZ_#%Yitqv6tHV# zNPlXvFXauo%(}P^cbJH;W}yvnn3XKsz6|sDgmuc43a1RRDA5Ba_D{z;PkV~ig-`59 z{F=QPBu3ff8CQGMsy%l(o3xYBC0+CQa3;AOSJ z1JKlTq-~#b(h;8Fi6_%auTP7D#kU#SRiq3RH@cT;zBTJ5+favK)H5eJHE;Ik#WXAY=8{H)3c3Fw> zdy;e=^d%7)hkP+}6eiVu*gN%dqBSByK@jY9v7-(`g?NjUsa%rsqqt~42`}3f-CSMP zqJPq#r1Hxeww9;1y0rmkH^MX`sU;^2RkI-CGm|eD8Zmy^N?cpOlafrD4mbh2jR6MY zmBq<5q@d|Ic4Hhd#LQ-3T#8~71A*m|r{hfH50Y%$5u>O2DK;{^sHB9`o=QKxz;|#b zx01f^>Isc8^Z4}k+lGg9)Z=M|mNE4~J}~U737@Xpc3N5n;}!jsO{$HV`CgjO(TiLf zz?Q&?``Un}`W16?(v zIN&X|#Pv_>C`va*&B)|AD@c4QwcQ`~$z}b&Y?OTnNiFQ41wJrfmjR6j5HQr#*{;!$ zBY5!5L#)C2zqi}?5$mUO*O!Gtr7OGQgjO3v}cz>nE!_CAHqpBvZL;u099op>? zX)UCEa(XW+5Ye+hH{rZ{id7%Ez8mkh0X%p7C`ykWSq=G0+WPJK_o7vOY)R(CnE}?s zE~YN|BbTG~bbixAZ=Ld!212w6eVKP6JWD=_5>O3&VwL9-W zw|DzDTK%2OyT!e6A(<{)UBRg2V7iCCKh=9!Q53v?Qxt&CYFSq-J34(vQjU!*Z@$Bs zL-wvf^CI#6SDZ<3;r4mT#_Ns|+>LvZ;I#ZBRr7{O{!@CY-_H&9@y)iRCy^n+gNzg$ zKIWZmG0Y~v>Sus#s}!0jJKz*-KRMeOH?f zeh+4DAb+c=Tq)w-V*L3;l+Vh^dL;Hv=+MQs<65<8QjAj91BPW{t1HNTvM&3u1o zw1t%3rst2he2gvGMOgyGKHo&MpPy;lu&`6uJb9UnLhFS-qI6V${vtfwYf7imhqlVV z4di+bI;(j!tkbDFKxYs=+%Z>z_C~O_f0sst?<+4n4gyt@9_P6OR0U zZ+Cofe^CCabK@HF?v~Bui)IjUVO>K`fG0rv`H#oq(Z2*(yLR4+{5aGx#lw>T*8=QW z)vIt6V|)Kr1xxK*($tO;^1}7s*`_!iW`|^o1}w|2hK2M}c4R;1W+c&$D@WPhk{>fI znB#LXv6SYzr2`-yb5lTMCqORsQkFj6)>`}U{2U-Y$79_jQ0^t|-?_5I=1i>Ie#p45 zM5!GvgEPwN(tDAW(fQvLZo+OYZL8`eNIsQz<-u`Ih{*j#0*DBpsv`*uJ$wz8o7xNj z)4vR|dK`Kggqs)ztATe96_c5U)c>Ib?H36WL;w+fHwTy-MCyb5!c9Qe$kqjv)@WJU zGXeURJdwl{7UD_Yy4s%d&(G@{&{$sS@Q#ppN5PfxNSj3yV%p@hkIuohQP72{`1L$G zqHd*T<=~@DUMy?}T1lS;5=pO#3MwD!qQj$iL#89~3#pKv&)+HUGvZ901gAMzSaJ>4It&b$YMV!TF1Q6o4KauyF`aDR@ z(BTa!HPP?;qA`FOKG1UX#VR{cxUS?Ghzl1mGc>FTdVsJA&Pu5#e*e{V@lUYpZpA31 zlM@j80vVK$X{vg&u4GrV=9@`NcdY-HMd3g?`&P6mV}s7b0~^KlX(2+sZV`$3V-!Do zX6{&VTecqptu^O?O*Z7W^uN!yYbLwWV28lWMe07oa&c-)29nQe&^Bi7cz#p#R{@HD zzQ9tX@7MO#j18)1$wUO?*ebEF}Q*qc$$3m;g>AKm_n`>FiDqG8(I|+?g zcX3KK7C|EuaV_fBo;O6l?zZbrrgz~f_-5^DPADZieNMBqDdlRM1azEH zeTH7)N9Ii6Ey1bW9;9-Gb$v@j)og2#V`6Dv+9xm5cVjczwV9r7iwV;0^48wt11%>f zFO2ZQ_r@dKr>BX+^<~57u7z0&^Kqj zeEy0nCO)3YIB_uNphi+(b+-y+;6R}Jo#W_U(wJ?2_i>S~ynto6PdfZ>_Xh?(okHs0 z#KZTBIU}?}VkO<@kfc{30b+g*ecz4f_(GM1<6WlG^ax}Sf9Z+u5OYoB`MLw?sD*qNB<8;j8(M& literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/favicon-32x32.png b/v1.13/_static/img/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..aae1708f26fc93bd9b9e40284a4376a0e41f0494 GIT binary patch literal 837 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10qB_7Q#1%+e>xNqCh5|_t zGKc_@HWu;D2~9wTV{o~HZ=q*yubpE$L=BMZ-Mcby)2Wc7w?a?d58i(@VAUay>RI6z zp9bwXA9nunvb2athiah++x|x-ey3NdwQMqSUB14g?3w9~1u}nE7wzJ(aG9FkUgPBu z6ej3@WxA~3GgE^*Tl)K|TjKs|Z)Cdr<*>n*^B1)*nukA7a!tSNY;NlRhGAyDLkLsc zJO0Zid*!AopSkuX_Qci$27bZcP52T%vRepWTH|2v_xQp66_fc3TK!uqXFXFdXK;*W zeQCNy_p_*(!bUxleBM}lFZPb#Y0Z06ZeL%0FyxifpM2x! zQqN^u6{NCv-t3)weP!vs5U*kz`#ro5=J2c&S|Sl0H+kph zNZmh2R*>;5!~2>T^>Z6najoJC6zvf^bnfks`okQmFWMgIcy6jLaxNFCHLCa0bqLSi z_>Bh`k*X!G5hW>!C8<`)MX5lF!N|bKP}jg**T5pgz|zXp(8|mdKI;Vst0JRQDYXATM literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/favicon.ico b/v1.13/_static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6c7484f082f4dd44edbb9bccb87391e6fae208cd GIT binary patch literal 1150 zcmaizJ4gdT5QZlxSl9#v>y$QvwH7&oCW;S4jJ6?-k|?nWYUP!_Km@f@I}tk2UcB zP3WLEc>CrgsM*uK0lkm-W{g6?k*kY z-PJfx5Bb=v1$rkh?<#*i$#1WDE|;D;pUrXkabMShGdc4^FT6TS3woWq2=n{f3uDa3 zrf^0+O&)XUVdoo*JkWzf4rML$v~a(sS=`VA@R7hEzm_k5@YQ!){bZBRet;;dPM!+w6lJ2q1FIruC9NrA9`V7aRz*U(m&lh)kE~p+#5RRoqRP% zNZy0Vh+nNcWU}HTFTM@@C-S|+!bjZP_qK*e=AnzIGK;CNXChlAmnm^D#X6!7=ZqzD literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/icons/icon-about-team.svg b/v1.13/_static/img/icons/icon-about-team.svg new file mode 100644 index 00000000000..5448c7f007b --- /dev/null +++ b/v1.13/_static/img/icons/icon-about-team.svg @@ -0,0 +1 @@ +icon-about-team diff --git a/v1.13/_static/img/icons/icon-about-us-m.svg b/v1.13/_static/img/icons/icon-about-us-m.svg new file mode 100644 index 00000000000..09107d9520a --- /dev/null +++ b/v1.13/_static/img/icons/icon-about-us-m.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.13/_static/img/icons/icon-about-us.svg b/v1.13/_static/img/icons/icon-about-us.svg new file mode 100644 index 00000000000..1b1fcc83e30 --- /dev/null +++ b/v1.13/_static/img/icons/icon-about-us.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.13/_static/img/icons/icon-alternator.svg b/v1.13/_static/img/icons/icon-alternator.svg new file mode 100644 index 00000000000..7c2b4ebae0d --- /dev/null +++ b/v1.13/_static/img/icons/icon-alternator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.13/_static/img/icons/icon-apps.svg b/v1.13/_static/img/icons/icon-apps.svg new file mode 100644 index 00000000000..7e93612026b --- /dev/null +++ b/v1.13/_static/img/icons/icon-apps.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-architecture.svg b/v1.13/_static/img/icons/icon-architecture.svg new file mode 100644 index 00000000000..67ebbc2f38c --- /dev/null +++ b/v1.13/_static/img/icons/icon-architecture.svg @@ -0,0 +1 @@ +icon-architecture diff --git a/v1.13/_static/img/icons/icon-benchmarks.svg b/v1.13/_static/img/icons/icon-benchmarks.svg new file mode 100644 index 00000000000..e1ce2c1d784 --- /dev/null +++ b/v1.13/_static/img/icons/icon-benchmarks.svg @@ -0,0 +1 @@ +icon-benchmarks diff --git a/v1.13/_static/img/icons/icon-blog.svg b/v1.13/_static/img/icons/icon-blog.svg new file mode 100644 index 00000000000..f4096cbf111 --- /dev/null +++ b/v1.13/_static/img/icons/icon-blog.svg @@ -0,0 +1 @@ +icon-blog2 diff --git a/v1.13/_static/img/icons/icon-careers.svg b/v1.13/_static/img/icons/icon-careers.svg new file mode 100644 index 00000000000..2a7c6ea0b74 --- /dev/null +++ b/v1.13/_static/img/icons/icon-careers.svg @@ -0,0 +1 @@ +icon-careers diff --git a/v1.13/_static/img/icons/icon-chevron-left.svg b/v1.13/_static/img/icons/icon-chevron-left.svg new file mode 100644 index 00000000000..3afa25c4812 --- /dev/null +++ b/v1.13/_static/img/icons/icon-chevron-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.13/_static/img/icons/icon-chevron-right.svg b/v1.13/_static/img/icons/icon-chevron-right.svg new file mode 100644 index 00000000000..44eb829cdcb --- /dev/null +++ b/v1.13/_static/img/icons/icon-chevron-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.13/_static/img/icons/icon-circe.svg b/v1.13/_static/img/icons/icon-circe.svg new file mode 100644 index 00000000000..875e4216707 --- /dev/null +++ b/v1.13/_static/img/icons/icon-circe.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-clock.svg b/v1.13/_static/img/icons/icon-clock.svg new file mode 100644 index 00000000000..8c924698089 --- /dev/null +++ b/v1.13/_static/img/icons/icon-clock.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-close.svg b/v1.13/_static/img/icons/icon-close.svg new file mode 100644 index 00000000000..d1162b73e73 --- /dev/null +++ b/v1.13/_static/img/icons/icon-close.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/v1.13/_static/img/icons/icon-cloud-docs.svg b/v1.13/_static/img/icons/icon-cloud-docs.svg new file mode 100644 index 00000000000..a9069bb6e5c --- /dev/null +++ b/v1.13/_static/img/icons/icon-cloud-docs.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-cloud.svg b/v1.13/_static/img/icons/icon-cloud.svg new file mode 100644 index 00000000000..cfb2318daef --- /dev/null +++ b/v1.13/_static/img/icons/icon-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.13/_static/img/icons/icon-comparison.svg b/v1.13/_static/img/icons/icon-comparison.svg new file mode 100644 index 00000000000..49d809a5df4 --- /dev/null +++ b/v1.13/_static/img/icons/icon-comparison.svg @@ -0,0 +1 @@ +icon-comparison diff --git a/v1.13/_static/img/icons/icon-contact-us.svg b/v1.13/_static/img/icons/icon-contact-us.svg new file mode 100644 index 00000000000..9df3145dd21 --- /dev/null +++ b/v1.13/_static/img/icons/icon-contact-us.svg @@ -0,0 +1 @@ +icon-contact-us diff --git a/v1.13/_static/img/icons/icon-developers-blog.svg b/v1.13/_static/img/icons/icon-developers-blog.svg new file mode 100644 index 00000000000..ee804197a0b --- /dev/null +++ b/v1.13/_static/img/icons/icon-developers-blog.svg @@ -0,0 +1 @@ +icon-developers-blog diff --git a/v1.13/_static/img/icons/icon-docs.svg b/v1.13/_static/img/icons/icon-docs.svg new file mode 100644 index 00000000000..5501492f3e0 --- /dev/null +++ b/v1.13/_static/img/icons/icon-docs.svg @@ -0,0 +1 @@ +icon-docs diff --git a/v1.13/_static/img/icons/icon-enterprise-m.svg b/v1.13/_static/img/icons/icon-enterprise-m.svg new file mode 100644 index 00000000000..97be900b501 --- /dev/null +++ b/v1.13/_static/img/icons/icon-enterprise-m.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/icons/icon-enterprise.svg b/v1.13/_static/img/icons/icon-enterprise.svg new file mode 100644 index 00000000000..ee1ac26283d --- /dev/null +++ b/v1.13/_static/img/icons/icon-enterprise.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.13/_static/img/icons/icon-events.svg b/v1.13/_static/img/icons/icon-events.svg new file mode 100644 index 00000000000..ba5f2118644 --- /dev/null +++ b/v1.13/_static/img/icons/icon-events.svg @@ -0,0 +1 @@ +icon-events diff --git a/v1.13/_static/img/icons/icon-exclamation.svg b/v1.13/_static/img/icons/icon-exclamation.svg new file mode 100644 index 00000000000..a7eb4b77a42 --- /dev/null +++ b/v1.13/_static/img/icons/icon-exclamation.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/v1.13/_static/img/icons/icon-expand.svg b/v1.13/_static/img/icons/icon-expand.svg new file mode 100644 index 00000000000..38065653675 --- /dev/null +++ b/v1.13/_static/img/icons/icon-expand.svg @@ -0,0 +1,50 @@ + + + + + + + + + diff --git a/v1.13/_static/img/icons/icon-forum.svg b/v1.13/_static/img/icons/icon-forum.svg new file mode 100644 index 00000000000..37a709f7a8f --- /dev/null +++ b/v1.13/_static/img/icons/icon-forum.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-getting-started.svg b/v1.13/_static/img/icons/icon-getting-started.svg new file mode 100644 index 00000000000..702500be409 --- /dev/null +++ b/v1.13/_static/img/icons/icon-getting-started.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-glossary.svg b/v1.13/_static/img/icons/icon-glossary.svg new file mode 100644 index 00000000000..e8329c2afee --- /dev/null +++ b/v1.13/_static/img/icons/icon-glossary.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-help.svg b/v1.13/_static/img/icons/icon-help.svg new file mode 100644 index 00000000000..51fddd80de7 --- /dev/null +++ b/v1.13/_static/img/icons/icon-help.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.13/_static/img/icons/icon-home.svg b/v1.13/_static/img/icons/icon-home.svg new file mode 100644 index 00000000000..f0b9c25419c --- /dev/null +++ b/v1.13/_static/img/icons/icon-home.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-infoworld.svg b/v1.13/_static/img/icons/icon-infoworld.svg new file mode 100644 index 00000000000..906e87279c2 --- /dev/null +++ b/v1.13/_static/img/icons/icon-infoworld.svg @@ -0,0 +1 @@ +icon-infoworld diff --git a/v1.13/_static/img/icons/icon-integrations.svg b/v1.13/_static/img/icons/icon-integrations.svg new file mode 100644 index 00000000000..1ef0920d49e --- /dev/null +++ b/v1.13/_static/img/icons/icon-integrations.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-knowledge-base.svg b/v1.13/_static/img/icons/icon-knowledge-base.svg new file mode 100644 index 00000000000..884451270d2 --- /dev/null +++ b/v1.13/_static/img/icons/icon-knowledge-base.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-less.svg b/v1.13/_static/img/icons/icon-less.svg new file mode 100644 index 00000000000..3094127decf --- /dev/null +++ b/v1.13/_static/img/icons/icon-less.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/v1.13/_static/img/icons/icon-live-test.svg b/v1.13/_static/img/icons/icon-live-test.svg new file mode 100644 index 00000000000..dcb5916c264 --- /dev/null +++ b/v1.13/_static/img/icons/icon-live-test.svg @@ -0,0 +1 @@ +icon-live-test diff --git a/v1.13/_static/img/icons/icon-mail-list.svg b/v1.13/_static/img/icons/icon-mail-list.svg new file mode 100644 index 00000000000..0e6192a352c --- /dev/null +++ b/v1.13/_static/img/icons/icon-mail-list.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-manager.svg b/v1.13/_static/img/icons/icon-manager.svg new file mode 100644 index 00000000000..02b4e425beb --- /dev/null +++ b/v1.13/_static/img/icons/icon-manager.svg @@ -0,0 +1 @@ +icon-manager diff --git a/v1.13/_static/img/icons/icon-memory-management.svg b/v1.13/_static/img/icons/icon-memory-management.svg new file mode 100644 index 00000000000..e34eb4504f7 --- /dev/null +++ b/v1.13/_static/img/icons/icon-memory-management.svg @@ -0,0 +1 @@ +icon-memory-management diff --git a/v1.13/_static/img/icons/icon-modeling.svg b/v1.13/_static/img/icons/icon-modeling.svg new file mode 100644 index 00000000000..97fa3a0e213 --- /dev/null +++ b/v1.13/_static/img/icons/icon-modeling.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-monitoring.svg b/v1.13/_static/img/icons/icon-monitoring.svg new file mode 100644 index 00000000000..80b3787f668 --- /dev/null +++ b/v1.13/_static/img/icons/icon-monitoring.svg @@ -0,0 +1 @@ +icon-monitoring diff --git a/v1.13/_static/img/icons/icon-networking.svg b/v1.13/_static/img/icons/icon-networking.svg new file mode 100644 index 00000000000..40a3fd5f6f1 --- /dev/null +++ b/v1.13/_static/img/icons/icon-networking.svg @@ -0,0 +1 @@ +icon-networking diff --git a/v1.13/_static/img/icons/icon-news.svg b/v1.13/_static/img/icons/icon-news.svg new file mode 100644 index 00000000000..a952b59937d --- /dev/null +++ b/v1.13/_static/img/icons/icon-news.svg @@ -0,0 +1 @@ +icon-news diff --git a/v1.13/_static/img/icons/icon-newsletter.svg b/v1.13/_static/img/icons/icon-newsletter.svg new file mode 100644 index 00000000000..5b8d47eb157 --- /dev/null +++ b/v1.13/_static/img/icons/icon-newsletter.svg @@ -0,0 +1 @@ +icon-newsletter diff --git a/v1.13/_static/img/icons/icon-nsql-guides.svg b/v1.13/_static/img/icons/icon-nsql-guides.svg new file mode 100644 index 00000000000..60ebab37953 --- /dev/null +++ b/v1.13/_static/img/icons/icon-nsql-guides.svg @@ -0,0 +1 @@ +icon-nsql-guides diff --git a/v1.13/_static/img/icons/icon-open-source.svg b/v1.13/_static/img/icons/icon-open-source.svg new file mode 100644 index 00000000000..98c2ea7d5bf --- /dev/null +++ b/v1.13/_static/img/icons/icon-open-source.svg @@ -0,0 +1 @@ +icon-open-source diff --git a/v1.13/_static/img/icons/icon-operator.svg b/v1.13/_static/img/icons/icon-operator.svg new file mode 100644 index 00000000000..bb7d8d3ea86 --- /dev/null +++ b/v1.13/_static/img/icons/icon-operator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.13/_static/img/icons/icon-overview.svg b/v1.13/_static/img/icons/icon-overview.svg new file mode 100644 index 00000000000..515c1528a2a --- /dev/null +++ b/v1.13/_static/img/icons/icon-overview.svg @@ -0,0 +1 @@ +icon-overview diff --git a/v1.13/_static/img/icons/icon-partners.svg b/v1.13/_static/img/icons/icon-partners.svg new file mode 100644 index 00000000000..d0146fc4972 --- /dev/null +++ b/v1.13/_static/img/icons/icon-partners.svg @@ -0,0 +1 @@ +icon-partners diff --git a/v1.13/_static/img/icons/icon-plus.svg b/v1.13/_static/img/icons/icon-plus.svg new file mode 100644 index 00000000000..5757435085a --- /dev/null +++ b/v1.13/_static/img/icons/icon-plus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/v1.13/_static/img/icons/icon-pricing.svg b/v1.13/_static/img/icons/icon-pricing.svg new file mode 100644 index 00000000000..74b01db1684 --- /dev/null +++ b/v1.13/_static/img/icons/icon-pricing.svg @@ -0,0 +1 @@ +icon-pricing$ diff --git a/v1.13/_static/img/icons/icon-release-notes.svg b/v1.13/_static/img/icons/icon-release-notes.svg new file mode 100644 index 00000000000..80c490c7b01 --- /dev/null +++ b/v1.13/_static/img/icons/icon-release-notes.svg @@ -0,0 +1 @@ +icon-release-notes diff --git a/v1.13/_static/img/icons/icon-resource-center.svg b/v1.13/_static/img/icons/icon-resource-center.svg new file mode 100644 index 00000000000..6e3ab08e792 --- /dev/null +++ b/v1.13/_static/img/icons/icon-resource-center.svg @@ -0,0 +1 @@ +icon-ressource-center diff --git a/v1.13/_static/img/icons/icon-roadmap.svg b/v1.13/_static/img/icons/icon-roadmap.svg new file mode 100644 index 00000000000..c8cbf67c8cf --- /dev/null +++ b/v1.13/_static/img/icons/icon-roadmap.svg @@ -0,0 +1 @@ +icon-roadmap-4 diff --git a/v1.13/_static/img/icons/icon-search.svg b/v1.13/_static/img/icons/icon-search.svg new file mode 100644 index 00000000000..81aae93eef6 --- /dev/null +++ b/v1.13/_static/img/icons/icon-search.svg @@ -0,0 +1,4 @@ + + + + diff --git a/v1.13/_static/img/icons/icon-slack.svg b/v1.13/_static/img/icons/icon-slack.svg new file mode 100644 index 00000000000..fc164ea1e77 --- /dev/null +++ b/v1.13/_static/img/icons/icon-slack.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-stack-overflow.svg b/v1.13/_static/img/icons/icon-stack-overflow.svg new file mode 100644 index 00000000000..bebe9b82742 --- /dev/null +++ b/v1.13/_static/img/icons/icon-stack-overflow.svg @@ -0,0 +1,4 @@ + + + + diff --git a/v1.13/_static/img/icons/icon-summit.svg b/v1.13/_static/img/icons/icon-summit.svg new file mode 100644 index 00000000000..4b900bd0c0a --- /dev/null +++ b/v1.13/_static/img/icons/icon-summit.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/icons/icon-support.svg b/v1.13/_static/img/icons/icon-support.svg new file mode 100644 index 00000000000..a4228b34e86 --- /dev/null +++ b/v1.13/_static/img/icons/icon-support.svg @@ -0,0 +1 @@ +icon-support diff --git a/v1.13/_static/img/icons/icon-tech-talks.svg b/v1.13/_static/img/icons/icon-tech-talks.svg new file mode 100644 index 00000000000..df42b5522ba --- /dev/null +++ b/v1.13/_static/img/icons/icon-tech-talks.svg @@ -0,0 +1 @@ +icon-tech-talks diff --git a/v1.13/_static/img/icons/icon-testing.svg b/v1.13/_static/img/icons/icon-testing.svg new file mode 100644 index 00000000000..2fe54efdbc3 --- /dev/null +++ b/v1.13/_static/img/icons/icon-testing.svg @@ -0,0 +1 @@ +icon-testing diff --git a/v1.13/_static/img/icons/icon-thumbs-down.svg b/v1.13/_static/img/icons/icon-thumbs-down.svg new file mode 100644 index 00000000000..3e7bcd6d905 --- /dev/null +++ b/v1.13/_static/img/icons/icon-thumbs-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.13/_static/img/icons/icon-thumbs-up.svg b/v1.13/_static/img/icons/icon-thumbs-up.svg new file mode 100644 index 00000000000..226c44d853c --- /dev/null +++ b/v1.13/_static/img/icons/icon-thumbs-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.13/_static/img/icons/icon-tip.svg b/v1.13/_static/img/icons/icon-tip.svg new file mode 100644 index 00000000000..bf7aa6af840 --- /dev/null +++ b/v1.13/_static/img/icons/icon-tip.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/v1.13/_static/img/icons/icon-training.svg b/v1.13/_static/img/icons/icon-training.svg new file mode 100644 index 00000000000..08b95a88eda --- /dev/null +++ b/v1.13/_static/img/icons/icon-training.svg @@ -0,0 +1 @@ +icon-training diff --git a/v1.13/_static/img/icons/icon-triangle-down.svg b/v1.13/_static/img/icons/icon-triangle-down.svg new file mode 100644 index 00000000000..e8ae088106f --- /dev/null +++ b/v1.13/_static/img/icons/icon-triangle-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.13/_static/img/icons/icon-university.svg b/v1.13/_static/img/icons/icon-university.svg new file mode 100644 index 00000000000..f7547ab9599 --- /dev/null +++ b/v1.13/_static/img/icons/icon-university.svg @@ -0,0 +1 @@ +icon-university diff --git a/v1.13/_static/img/icons/icon-users-blog.svg b/v1.13/_static/img/icons/icon-users-blog.svg new file mode 100644 index 00000000000..47e56cddcf7 --- /dev/null +++ b/v1.13/_static/img/icons/icon-users-blog.svg @@ -0,0 +1 @@ +icon-users-blog diff --git a/v1.13/_static/img/icons/icon-warning.svg b/v1.13/_static/img/icons/icon-warning.svg new file mode 100644 index 00000000000..e4b1d40331b --- /dev/null +++ b/v1.13/_static/img/icons/icon-warning.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/v1.13/_static/img/icons/icon-webinars.svg b/v1.13/_static/img/icons/icon-webinars.svg new file mode 100644 index 00000000000..5e9f5cd4270 --- /dev/null +++ b/v1.13/_static/img/icons/icon-webinars.svg @@ -0,0 +1 @@ +icon-webinars diff --git a/v1.13/_static/img/icons/icon-whitepapers.svg b/v1.13/_static/img/icons/icon-whitepapers.svg new file mode 100644 index 00000000000..3351e51d23c --- /dev/null +++ b/v1.13/_static/img/icons/icon-whitepapers.svg @@ -0,0 +1 @@ +icon-whitepapers diff --git a/v1.13/_static/img/icons/icon-workshop.svg b/v1.13/_static/img/icons/icon-workshop.svg new file mode 100644 index 00000000000..5206e58e986 --- /dev/null +++ b/v1.13/_static/img/icons/icon-workshop.svg @@ -0,0 +1 @@ + diff --git a/v1.13/_static/img/logo-scylla-horizontal-color.svg b/v1.13/_static/img/logo-scylla-horizontal-color.svg new file mode 100644 index 00000000000..0feee9e1373 --- /dev/null +++ b/v1.13/_static/img/logo-scylla-horizontal-color.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/v1.13/_static/img/logo-scylla-horizontal-light.svg b/v1.13/_static/img/logo-scylla-horizontal-light.svg new file mode 100644 index 00000000000..6c6758f7d72 --- /dev/null +++ b/v1.13/_static/img/logo-scylla-horizontal-light.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/v1.13/_static/img/mascots-2/2-monster-laptop.svg b/v1.13/_static/img/mascots-2/2-monster-laptop.svg new file mode 100644 index 00000000000..b0cdb2caac8 --- /dev/null +++ b/v1.13/_static/img/mascots-2/2-monster-laptop.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/alternator.svg b/v1.13/_static/img/mascots-2/alternator.svg new file mode 100644 index 00000000000..066e2390aeb --- /dev/null +++ b/v1.13/_static/img/mascots-2/alternator.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/award.svg b/v1.13/_static/img/mascots-2/award.svg new file mode 100644 index 00000000000..dcb4be862ce --- /dev/null +++ b/v1.13/_static/img/mascots-2/award.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/care-pet.svg b/v1.13/_static/img/mascots-2/care-pet.svg new file mode 100644 index 00000000000..dd528340c76 --- /dev/null +++ b/v1.13/_static/img/mascots-2/care-pet.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/cdc.svg b/v1.13/_static/img/mascots-2/cdc.svg new file mode 100644 index 00000000000..4b6530d7c7b --- /dev/null +++ b/v1.13/_static/img/mascots-2/cdc.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/chef.svg b/v1.13/_static/img/mascots-2/chef.svg new file mode 100644 index 00000000000..4705a253c36 --- /dev/null +++ b/v1.13/_static/img/mascots-2/chef.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/cloud.svg b/v1.13/_static/img/mascots-2/cloud.svg new file mode 100644 index 00000000000..94e535b44be --- /dev/null +++ b/v1.13/_static/img/mascots-2/cloud.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/default.svg b/v1.13/_static/img/mascots-2/default.svg new file mode 100644 index 00000000000..41939b5aeab --- /dev/null +++ b/v1.13/_static/img/mascots-2/default.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/docs.svg b/v1.13/_static/img/mascots-2/docs.svg new file mode 100644 index 00000000000..1edb30b2d84 --- /dev/null +++ b/v1.13/_static/img/mascots-2/docs.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/driver.svg b/v1.13/_static/img/mascots-2/driver.svg new file mode 100644 index 00000000000..5b1a3c4011e --- /dev/null +++ b/v1.13/_static/img/mascots-2/driver.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/enterprise.svg b/v1.13/_static/img/mascots-2/enterprise.svg new file mode 100644 index 00000000000..6bf7d4ab0c7 --- /dev/null +++ b/v1.13/_static/img/mascots-2/enterprise.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/forward-2.svg b/v1.13/_static/img/mascots-2/forward-2.svg new file mode 100644 index 00000000000..11c53943a2f --- /dev/null +++ b/v1.13/_static/img/mascots-2/forward-2.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/forward.svg b/v1.13/_static/img/mascots-2/forward.svg new file mode 100644 index 00000000000..e2d7559db39 --- /dev/null +++ b/v1.13/_static/img/mascots-2/forward.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/headphones.svg b/v1.13/_static/img/mascots-2/headphones.svg new file mode 100644 index 00000000000..09845dd9fa8 --- /dev/null +++ b/v1.13/_static/img/mascots-2/headphones.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/heart.svg b/v1.13/_static/img/mascots-2/heart.svg new file mode 100644 index 00000000000..5f397de2c22 --- /dev/null +++ b/v1.13/_static/img/mascots-2/heart.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/laptop.svg b/v1.13/_static/img/mascots-2/laptop.svg new file mode 100644 index 00000000000..debb3f5dde5 --- /dev/null +++ b/v1.13/_static/img/mascots-2/laptop.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/magnifying-glass.svg b/v1.13/_static/img/mascots-2/magnifying-glass.svg new file mode 100644 index 00000000000..5668fc4844d --- /dev/null +++ b/v1.13/_static/img/mascots-2/magnifying-glass.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/manager.svg b/v1.13/_static/img/mascots-2/manager.svg new file mode 100644 index 00000000000..523d5a0c859 --- /dev/null +++ b/v1.13/_static/img/mascots-2/manager.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/monitor.svg b/v1.13/_static/img/mascots-2/monitor.svg new file mode 100644 index 00000000000..2aa1a147ab9 --- /dev/null +++ b/v1.13/_static/img/mascots-2/monitor.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/open-mouth.svg b/v1.13/_static/img/mascots-2/open-mouth.svg new file mode 100644 index 00000000000..062f25b7772 --- /dev/null +++ b/v1.13/_static/img/mascots-2/open-mouth.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/operator.svg b/v1.13/_static/img/mascots-2/operator.svg new file mode 100644 index 00000000000..3a794489398 --- /dev/null +++ b/v1.13/_static/img/mascots-2/operator.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/plug.svg b/v1.13/_static/img/mascots-2/plug.svg new file mode 100644 index 00000000000..e06ac69f3e3 --- /dev/null +++ b/v1.13/_static/img/mascots-2/plug.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/repair.svg b/v1.13/_static/img/mascots-2/repair.svg new file mode 100644 index 00000000000..8a2f27b3166 --- /dev/null +++ b/v1.13/_static/img/mascots-2/repair.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/server.svg b/v1.13/_static/img/mascots-2/server.svg new file mode 100644 index 00000000000..805b85f4626 --- /dev/null +++ b/v1.13/_static/img/mascots-2/server.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/sleepy.svg b/v1.13/_static/img/mascots-2/sleepy.svg new file mode 100644 index 00000000000..376ada21206 --- /dev/null +++ b/v1.13/_static/img/mascots-2/sleepy.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/smile-learning.svg b/v1.13/_static/img/mascots-2/smile-learning.svg new file mode 100644 index 00000000000..46fd91af9f6 --- /dev/null +++ b/v1.13/_static/img/mascots-2/smile-learning.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/stretched-up.svg b/v1.13/_static/img/mascots-2/stretched-up.svg new file mode 100644 index 00000000000..3d24b2c671c --- /dev/null +++ b/v1.13/_static/img/mascots-2/stretched-up.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/toolbox.svg b/v1.13/_static/img/mascots-2/toolbox.svg new file mode 100644 index 00000000000..218d7c0ceb3 --- /dev/null +++ b/v1.13/_static/img/mascots-2/toolbox.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/university.svg b/v1.13/_static/img/mascots-2/university.svg new file mode 100644 index 00000000000..086914cffcc --- /dev/null +++ b/v1.13/_static/img/mascots-2/university.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/workshop.svg b/v1.13/_static/img/mascots-2/workshop.svg new file mode 100644 index 00000000000..27d50a3ca5a --- /dev/null +++ b/v1.13/_static/img/mascots-2/workshop.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/wow-up.svg b/v1.13/_static/img/mascots-2/wow-up.svg new file mode 100644 index 00000000000..bea380c19a1 --- /dev/null +++ b/v1.13/_static/img/mascots-2/wow-up.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/wow.svg b/v1.13/_static/img/mascots-2/wow.svg new file mode 100644 index 00000000000..d809f8f074a --- /dev/null +++ b/v1.13/_static/img/mascots-2/wow.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots-2/yummy.svg b/v1.13/_static/img/mascots-2/yummy.svg new file mode 100644 index 00000000000..f93596e8cfa --- /dev/null +++ b/v1.13/_static/img/mascots-2/yummy.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/v1.13/_static/img/mascots/404.jpg b/v1.13/_static/img/mascots/404.jpg new file mode 100644 index 0000000000000000000000000000000000000000..769fa0889f8b33a7edfa1b6903e9bb33bd27da3a GIT binary patch literal 29400 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 *o#A4Bm2Pwzp|eK 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

            AsHsQZ?@8G~>-T9LgVg?Qm;9iIbZON|N- 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-advisor-crystal.png b/v1.13/_static/img/mascots/scylla-advisor-crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..d33fddd62f0900fceaf8bc7785aad0dd6badf111 GIT binary patch literal 67593 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 HdEoy8fIc?4 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-alternator.svg b/v1.13/_static/img/mascots/scylla-alternator.svg new file mode 100644 index 00000000000..0462f893d5f --- /dev/null +++ b/v1.13/_static/img/mascots/scylla-alternator.svg @@ -0,0 +1 @@ +scylla-alternator diff --git a/v1.13/_static/img/mascots/scylla-cloud.svg b/v1.13/_static/img/mascots/scylla-cloud.svg new file mode 100644 index 00000000000..a6c6a26fc99 --- /dev/null +++ b/v1.13/_static/img/mascots/scylla-cloud.svg @@ -0,0 +1 @@ +scylla-cloud diff --git a/v1.13/_static/img/mascots/scylla-computer-3-monsters.png b/v1.13/_static/img/mascots/scylla-computer-3-monsters.png new file mode 100644 index 0000000000000000000000000000000000000000..d0368a7027b1ee216abf8d8a1a83cb13dcf732c7 GIT binary patch literal 44539 zcmd>l^;er+uyt`OPH_$H#WlDVx8m+@p_Bkci(7Elphb$7qAkVUU5Yyt4bGSMe)qq) zKO|Y}S?kG}nKNt7o;~|SYpN?^W0GUOdGiKaSxHX&%^Re{H*XM<&{5$}rW5JR;Xh;` zc>|D+yB)~a(#!UZw2ix!Ev>SvrM<1Tt)-2h=a8-Vn>RIi%5u`WpO;TMu~YTt0$&5= z>`1k2KI0=GsW$1dCBMb2#FFplFbrZ${E&@U+xy~IuV!WO&P1cgAO*4JBc>^~jr96F zz08s1I|rj)=4`I#0qIoc`!L>lDOq&8By>VjGet{_N%4LEGoVM-l79ir`&MHA(Q-|| z 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-computer-headset.png b/v1.13/_static/img/mascots/scylla-computer-headset.png new file mode 100644 index 0000000000000000000000000000000000000000..0cdadaa2167503eaedfd33ca50de93801b46b4d8 GIT binary patch literal 22297 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

            k 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 diff --git a/v1.13/_static/img/mascots/scylla-drivers.svg b/v1.13/_static/img/mascots/scylla-drivers.svg new file mode 100644 index 00000000000..6012e71679b --- /dev/null +++ b/v1.13/_static/img/mascots/scylla-drivers.svg @@ -0,0 +1 @@ +scylla-manager diff --git a/v1.13/_static/img/mascots/scylla-enterprise.svg b/v1.13/_static/img/mascots/scylla-enterprise.svg new file mode 100644 index 00000000000..a1aa0b46ac1 --- /dev/null +++ b/v1.13/_static/img/mascots/scylla-enterprise.svg @@ -0,0 +1 @@ +scylla-enterprise diff --git a/v1.13/_static/img/mascots/scylla-forklift-boxes.png b/v1.13/_static/img/mascots/scylla-forklift-boxes.png new file mode 100644 index 0000000000000000000000000000000000000000..f64c29e6c7c37c8d30c704311ef9269553e87e81 GIT binary patch literal 29196 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 QE6QPBsOhT0m0w5vAK^}|lK=n! literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-forklift-migration.png b/v1.13/_static/img/mascots/scylla-forklift-migration.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f645c645adae7e881e0cb9cc099ec7a80faa34 GIT binary patch literal 24191 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-gear.png b/v1.13/_static/img/mascots/scylla-gear.png new file mode 100644 index 0000000000000000000000000000000000000000..0f53b26afa5a7e94e2e87b8baa568dd6c7dfb2da GIT binary patch literal 64841 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-hardhat.png b/v1.13/_static/img/mascots/scylla-hardhat.png new file mode 100644 index 0000000000000000000000000000000000000000..630f2d909427ebd1cf94b141b405c30e8a84f6ce GIT binary patch literal 20163 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-headband.png b/v1.13/_static/img/mascots/scylla-headband.png new file mode 100644 index 0000000000000000000000000000000000000000..c87abe684d5b67e5972edef5ad41990dcb2a6686 GIT binary patch literal 40533 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 CA}Z$q literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-looking-down.png b/v1.13/_static/img/mascots/scylla-looking-down.png new file mode 100644 index 0000000000000000000000000000000000000000..75cccbfdf12dfe20458552b79aadb3c21ad21d33 GIT binary patch literal 70044 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 HDWM4fznpb_ literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-looking-up.png b/v1.13/_static/img/mascots/scylla-looking-up.png new file mode 100644 index 0000000000000000000000000000000000000000..6f10405f2182a1f8359cb01cc51910d1ef88be41 GIT binary patch literal 69083 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 VQ?0M~bpRiX>}QZKi0@A5;BPd-mKvHm| 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 SK@E5k2!p4qpUXO@geCwl#5%|T literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-magnifying-glass.png b/v1.13/_static/img/mascots/scylla-magnifying-glass.png new file mode 100644 index 0000000000000000000000000000000000000000..74ad66950056c9952006d05ff406e4f74966322d GIT binary patch literal 16651 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 zwzscylla-manager-2 diff --git a/v1.13/_static/img/mascots/scylla-monitor.svg b/v1.13/_static/img/mascots/scylla-monitor.svg new file mode 100644 index 00000000000..48bec7dde32 --- /dev/null +++ b/v1.13/_static/img/mascots/scylla-monitor.svg @@ -0,0 +1 @@ +scylla-monitor diff --git a/v1.13/_static/img/mascots/scylla-movement-fast.png b/v1.13/_static/img/mascots/scylla-movement-fast.png new file mode 100644 index 0000000000000000000000000000000000000000..956d1dd0e227eb1a2ca927bfafe1551890c1ba57 GIT binary patch literal 18439 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-movement.png b/v1.13/_static/img/mascots/scylla-movement.png new file mode 100644 index 0000000000000000000000000000000000000000..7ee2b043384aff3efefccd431719dfe2fce9569d GIT binary patch literal 14720 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-opensource.svg b/v1.13/_static/img/mascots/scylla-opensource.svg new file mode 100644 index 00000000000..299e9cb9955 --- /dev/null +++ b/v1.13/_static/img/mascots/scylla-opensource.svg @@ -0,0 +1 @@ +Plan de travail 1 diff --git a/v1.13/_static/img/mascots/scylla-operator.svg b/v1.13/_static/img/mascots/scylla-operator.svg new file mode 100644 index 00000000000..655a450b2a4 --- /dev/null +++ b/v1.13/_static/img/mascots/scylla-operator.svg @@ -0,0 +1 @@ +scylla-operator diff --git a/v1.13/_static/img/mascots/scylla-plugin.png b/v1.13/_static/img/mascots/scylla-plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..b28dc857ccfefaf6b20f893ae11c51d827c70e0d GIT binary patch literal 52683 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-release-mascot.png b/v1.13/_static/img/mascots/scylla-release-mascot.png new file mode 100644 index 0000000000000000000000000000000000000000..09342ac6875c5ac16477e7cddb811569e0eff483 GIT binary patch literal 31893 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-repair.png b/v1.13/_static/img/mascots/scylla-repair.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4c613e702e46802b3a2921f81f339d3c153bb6 GIT binary patch literal 21261 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 Bgz*3X literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-server.png b/v1.13/_static/img/mascots/scylla-server.png new file mode 100644 index 0000000000000000000000000000000000000000..96dc785298bdb82ffdac74c64e6d360f12dfccff GIT binary patch literal 48529 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

            kp; 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-sleeping.png b/v1.13/_static/img/mascots/scylla-sleeping.png new file mode 100644 index 0000000000000000000000000000000000000000..f88598e05ad61c07b8fd4dd2df25db2c3b331ec5 GIT binary patch literal 12942 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 UO=AtOBHIEKWK^W9B;N=AKL$v=ApigX literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-tall-measure.png b/v1.13/_static/img/mascots/scylla-tall-measure.png new file mode 100644 index 0000000000000000000000000000000000000000..6f0ca146c0d4a9ca231919e5a38d26cecb176fd3 GIT binary patch literal 18996 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

            7V#U-M2EVk_UGHzyn=t98lh6Suk{M*aQ=9*yn^ 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 v$lNm9so>ZzZN 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/menu.svg b/v1.13/_static/img/menu.svg new file mode 100644 index 00000000000..30ea1d901e1 --- /dev/null +++ b/v1.13/_static/img/menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.13/_static/img/scylladb-logo-horizontal.svg b/v1.13/_static/img/scylladb-logo-horizontal.svg new file mode 100644 index 00000000000..ad5cf5016f3 --- /dev/null +++ b/v1.13/_static/img/scylladb-logo-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.13/_static/js/main.bundle.js b/v1.13/_static/js/main.bundle.js new file mode 100644 index 00000000000..454abe3b00a --- /dev/null +++ b/v1.13/_static/js/main.bundle.js @@ -0,0 +1,2 @@ +/*! For license information please see main.bundle.js.LICENSE.txt */ +(self.webpackChunksphinx_scylladb_theme=self.webpackChunksphinx_scylladb_theme||[]).push([[792],{452:(t,e,n)=>{var i;self,i=function(t){return function(){"use strict";var e={"./js/foundation.abide.js":function(t,e,n){n.r(e),n.d(e,{Abide:function(){return f}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function l(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};this.$element=t,this.options=o().extend(!0,{},d.defaults,this.$element.data(),e),this.isEnabled=!0,this.formnovalidate=null,this.className="Abide",this._init()}},{key:"_init",value:function(){var t=this;this.$inputs=o().merge(this.$element.find("input").not('[type="submit"]'),this.$element.find("textarea, select")),this.$submits=this.$element.find('[type="submit"]');var e=this.$element.find("[data-abide-error]");this.options.a11yAttributes&&(this.$inputs.each((function(e,n){return t.addA11yAttributes(o()(n))})),e.each((function(e,n){return t.addGlobalErrorA11yAttributes(o()(n))}))),this._events()}},{key:"_events",value:function(){var t=this;this.$element.off(".abide").on("reset.zf.abide",(function(){t.resetForm()})).on("submit.zf.abide",(function(){return t.validateForm()})),this.$submits.off("click.zf.abide keydown.zf.abide").on("click.zf.abide keydown.zf.abide",(function(e){e.key&&" "!==e.key&&"Enter"!==e.key||(e.preventDefault(),t.formnovalidate=null!==e.target.getAttribute("formnovalidate"),t.$element.submit())})),"fieldChange"===this.options.validateOn&&this.$inputs.off("change.zf.abide").on("change.zf.abide",(function(e){t.validateInput(o()(e.target))})),this.options.liveValidate&&this.$inputs.off("input.zf.abide").on("input.zf.abide",(function(e){t.validateInput(o()(e.target))})),this.options.validateOnBlur&&this.$inputs.off("blur.zf.abide").on("blur.zf.abide",(function(e){t.validateInput(o()(e.target))}))}},{key:"_reflow",value:function(){this._init()}},{key:"_validationIsDisabled",value:function(){return!1===this.isEnabled||("boolean"==typeof this.formnovalidate?this.formnovalidate:!!this.$submits.length&&null!==this.$submits[0].getAttribute("formnovalidate"))}},{key:"enableValidation",value:function(){this.isEnabled=!0}},{key:"disableValidation",value:function(){this.isEnabled=!1}},{key:"requiredCheck",value:function(t){if(!t.attr("required"))return!0;var e=!0;switch(t[0].type){case"checkbox":e=t[0].checked;break;case"select":case"select-one":case"select-multiple":var n=t.find("option:selected");n.length&&n.val()||(e=!1);break;default:t.val()&&t.val().length||(e=!1)}return e}},{key:"findFormError",value:function(t,e){var n=this,i=t.length?t[0].id:"",o=t.siblings(this.options.formErrorSelector);return o.length||(o=t.parent().find(this.options.formErrorSelector)),i&&(o=o.add(this.$element.find('[data-form-error-for="'.concat(i,'"]')))),e&&(o=o.not("[data-form-error-on]"),e.forEach((function(e){o=(o=o.add(t.siblings('[data-form-error-on="'.concat(e,'"]')))).add(n.$element.find('[data-form-error-for="'.concat(i,'"][data-form-error-on="').concat(e,'"]')))}))),o}},{key:"findLabel",value:function(t){var e=t[0].id,n=this.$element.find('label[for="'.concat(e,'"]'));return n.length?n:t.closest("label")}},{key:"findRadioLabels",value:function(t){var e=this,n=t.map((function(t,n){var i=n.id,r=e.$element.find('label[for="'.concat(i,'"]'));return r.length||(r=o()(n).closest("label")),r[0]}));return o()(n)}},{key:"findCheckboxLabels",value:function(t){var e=this,n=t.map((function(t,n){var i=n.id,r=e.$element.find('label[for="'.concat(i,'"]'));return r.length||(r=o()(n).closest("label")),r[0]}));return o()(n)}},{key:"addErrorClasses",value:function(t,e){var n=this.findLabel(t),i=this.findFormError(t,e);n.length&&n.addClass(this.options.labelErrorClass),i.length&&i.addClass(this.options.formErrorClass),t.addClass(this.options.inputErrorClass).attr({"data-invalid":"","aria-invalid":!0}),i.filter(":visible").length&&this.addA11yErrorDescribe(t,i)}},{key:"addA11yAttributes",value:function(t){var e=this.findFormError(t),n=e.filter("label");if(e.length){var i=e.filter(":visible").first();if(i.length&&this.addA11yErrorDescribe(t,i),n.filter("[for]").length=s&&(i=!0)),!0!==this.initialized&&s>1||(n.each((function(t,n){i?e.removeErrorClasses(o()(n)):e.addErrorClasses(o()(n),["required"])})),i)}},{key:"matchValidation",value:function(t,e,n){var i=this;return n=!!n,-1===e.split(" ").map((function(e){return i.options.validators[e](t,n,t.parent())})).indexOf(!1)}},{key:"resetForm",value:function(){var t=this.$element,e=this.options;o()(".".concat(e.labelErrorClass),t).not("small").removeClass(e.labelErrorClass),o()(".".concat(e.inputErrorClass),t).not("small").removeClass(e.inputErrorClass),o()("".concat(e.formErrorSelector,".").concat(e.formErrorClass)).removeClass(e.formErrorClass),t.find("[data-abide-error]").css("display","none"),o()(":input",t).not(":button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]").val("").attr({"data-invalid":null,"aria-invalid":null}),o()(":input:radio",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),o()(":input:checkbox",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),t.trigger("formreset.zf.abide",[t])}},{key:"_destroy",value:function(){var t=this;this.$element.off(".abide").find("[data-abide-error]").css("display","none"),this.$inputs.off(".abide").each((function(){t.removeErrorClasses(o()(this))})),this.$submits.off(".abide")}}],n&&l(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),d}(r.Plugin);f.defaults={validateOn:"fieldChange",labelErrorClass:"is-invalid-label",inputErrorClass:"is-invalid-input",formErrorSelector:".form-error",formErrorClass:"is-visible",a11yAttributes:!0,a11yErrorLevel:"assertive",liveValidate:!1,validateOnBlur:!1,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^((?:(https?|ftps?|file|ssh|sftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,website:{test:function(t){return f.defaults.patterns.domain.test(t)||f.defaults.patterns.url.test(t)}}},validators:{equalTo:function(t){return o()("#".concat(t.attr("data-equalto"))).val()===t.val()}}}},"./js/foundation.accordion.js":function(t,e,n){n.r(e),n.d(e,{Accordion:function(){return d}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js");function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){for(var n=0;n'),t.options.submenuToggle?(n.addClass("has-submenu-toggle"),n.children("a").after('")):n.attr({"aria-controls":r,"aria-expanded":s,id:e}),i.attr({"aria-labelledby":e,"aria-hidden":!s,role:"group",id:r})}));var e=this.$element.find(".is-active");e.length&&e.each((function(){t.down(o()(this))})),this._events()}},{key:"_events",value:function(){var t=this;this.$element.find("li").each((function(){var e=o()(this).children("[data-submenu]");e.length&&(t.options.submenuToggle?o()(this).children(".submenu-toggle").off("click.zf.accordionMenu").on("click.zf.accordionMenu",(function(){t.toggle(e)})):o()(this).children("a").off("click.zf.accordionMenu").on("click.zf.accordionMenu",(function(n){n.preventDefault(),t.toggle(e)})))})).on("keydown.zf.accordionMenu",(function(e){var n,i,s=o()(this),a=s.parent("ul").children("li"),l=s.children("[data-submenu]");a.each((function(t){if(o()(this).is(s))return n=a.eq(Math.max(0,t-1)).find("a").first(),i=a.eq(Math.min(t+1,a.length-1)).find("a").first(),o()(this).children("[data-submenu]:visible").length&&(i=s.find("li:first-child").find("a").first()),o()(this).is(":first-child")?n=s.parents("li").first().find("a").first():n.parents("li").first().children("[data-submenu]:visible").length&&(n=n.parents("li").find("li:last-child").find("a").first()),void(o()(this).is(":last-child")&&(i=s.parents("li").first().next("li").find("a").first()))})),r.Keyboard.handleKey(e,"AccordionMenu",{open:function(){l.is(":hidden")&&(t.down(l),l.find("li").first().find("a").first().focus())},close:function(){l.length&&!l.is(":hidden")?t.up(l):s.parent("[data-submenu]").length&&(t.up(s.parent("[data-submenu]")),s.parents("li").first().find("a").first().focus())},up:function(){return n.focus(),!0},down:function(){return i.focus(),!0},toggle:function(){return!t.options.submenuToggle&&(s.children("[data-submenu]").length?(t.toggle(s.children("[data-submenu]")),!0):void 0)},closeAll:function(){t.hideAll()},handled:function(t){t&&e.preventDefault()}})}))}},{key:"hideAll",value:function(){this.up(this.$element.find("[data-submenu]"))}},{key:"showAll",value:function(){this.down(this.$element.find("[data-submenu]"))}},{key:"toggle",value:function(t){t.is(":animated")||(t.is(":hidden")?this.down(t):this.up(t))}},{key:"down",value:function(t){var e=this;if(!this.options.multiOpen){var n=t.parentsUntil(this.$element).add(t).add(t.find(".is-active")),i=this.$element.find(".is-active").not(n);this.up(i)}t.addClass("is-active").attr({"aria-hidden":!1}),this.options.submenuToggle?t.prev(".submenu-toggle").attr({"aria-expanded":!0}):t.parent(".is-accordion-submenu-parent").attr({"aria-expanded":!0}),t.slideDown(this.options.slideSpeed,(function(){e.$element.trigger("down.zf.accordionMenu",[t])}))}},{key:"up",value:function(t){var e=this,n=t.find("[data-submenu]"),i=t.add(n);n.slideUp(0),i.removeClass("is-active").attr("aria-hidden",!0),this.options.submenuToggle?i.prev(".submenu-toggle").attr("aria-expanded",!1):i.parent(".is-accordion-submenu-parent").attr("aria-expanded",!1),t.slideUp(this.options.slideSpeed,(function(){e.$element.trigger("up.zf.accordionMenu",[t])}))}},{key:"_destroy",value:function(){this.$element.find("[data-submenu]").slideDown(0).css("display",""),this.$element.find("a").off("click.zf.accordionMenu"),this.$element.find("[data-is-parent-link]").detach(),this.options.submenuToggle&&(this.$element.find(".has-submenu-toggle").removeClass("has-submenu-toggle"),this.$element.find(".submenu-toggle").remove()),s.Nest.Burn(this.$element,"accordion")}}])&&u(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),p}(n("./js/foundation.core.plugin.js").Plugin);d.defaults={parentLink:!1,slideSpeed:250,submenuToggle:!1,submenuToggleText:"Toggle menu",multiOpen:!0}},"./js/foundation.core.js":function(t,e,n){n.r(e),n.d(e,{Foundation:function(){return l}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.mediaQuery.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var l={version:"6.8.1",_plugins:{},_uuids:[],plugin:function(t,e){var n=e||u(t),i=c(n);this._plugins[i]=this[n]=t},registerPlugin:function(t,e){var n=e?c(e):u(t.constructor).toLowerCase();t.uuid=(0,r.GetYoDigits)(6,n),t.$element.attr("data-".concat(n))||t.$element.attr("data-".concat(n),t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf.".concat(n)),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var e=c(u(t.$element.data("zfPlugin").constructor));for(var n in this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-".concat(e)).removeData("zfPlugin").trigger("destroyed.zf.".concat(e)),t)"function"==typeof t[n]&&(t[n]=null)},reInit:function(t){var e=t instanceof o();try{if(e)t.each((function(){o()(this).data("zfPlugin")._init()}));else{var n=a(t),i=this;({object:function(t){t.forEach((function(t){t=c(t),o()("[data-"+t+"]").foundation("_init")}))},string:function(){t=c(t),o()("[data-"+t+"]").foundation("_init")},undefined:function(){this.object(Object.keys(i._plugins))}})[n](t)}}catch(t){console.error(t)}finally{return t}},reflow:function(t,e){void 0===e?e=Object.keys(this._plugins):"string"==typeof e&&(e=[e]);var n=this;o().each(e,(function(e,i){var r=n._plugins[i];o()(t).find("[data-"+i+"]").addBack("[data-"+i+"]").filter((function(){return void 0===o()(this).data("zfPlugin")})).each((function(){var t=o()(this),e={reflow:!0};t.attr("data-options")&&t.attr("data-options").split(";").forEach((function(t){var n,i=t.split(":").map((function(t){return t.trim()}));i[0]&&(e[i[0]]="true"===(n=i[1])||"false"!==n&&(isNaN(1*n)?n:parseFloat(n)))}));try{t.data("zfPlugin",new r(o()(this),e))}catch(t){console.error(t)}finally{return}}))}))},getFnName:u,addToJquery:function(){return o().fn.foundation=function(t){var e=a(t),n=o()(".no-js");if(n.length&&n.removeClass("no-js"),"undefined"===e)s.MediaQuery._init(),l.reflow(this);else{if("string"!==e)throw new TypeError("We're sorry, ".concat(e," is not a valid parameter. You must use a string representing the method you wish to invoke."));var i=Array.prototype.slice.call(arguments,1),r=this.data("zfPlugin");if(void 0===r||void 0===r[t])throw new ReferenceError("We're sorry, '"+t+"' is not an available method for "+(r?u(r):"this element")+".");1===this.length?r[t].apply(r,i):this.each((function(e,n){r[t].apply(o()(n).data("zfPlugin"),i)}))}return this},o()}};function u(t){if(void 0===Function.prototype.name){var e=/function\s([^(]{1,})\(/.exec(t.toString());return e&&e.length>1?e[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function c(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}l.util={throttle:function(t,e){var n=null;return function(){var i=this,o=arguments;null===n&&(n=setTimeout((function(){t.apply(i,o),n=null}),e))}}},window.Foundation=l,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e0&&void 0!==arguments[0]?arguments[0]:6,e=arguments.length>1?arguments[1]:void 0,n="",i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=e.ignoreLeaveWindow,i=void 0!==n&&n,r=e.ignoreReappear,s=void 0!==r&&r;return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a'),e.data("savedHref",e.attr("href")).removeAttr("href").attr("tabindex",0),e.children("[data-submenu]").attr({"aria-hidden":!0,tabindex:0,role:"group"}),t._events(e)})),this.$submenus.each((function(){var e=o()(this);if(!e.find(".js-drilldown-back").length)switch(t.options.backButtonPosition){case"bottom":e.append(t.options.backButton);break;case"top":e.prepend(t.options.backButton);break;default:console.error("Unsupported backButtonPosition value '"+t.options.backButtonPosition+"'")}t._back(e)})),this.$submenus.addClass("invisible"),this.options.autoHeight||this.$submenus.addClass("drilldown-submenu-cover-previous"),this.$element.parent().hasClass("is-drilldown")||(this.$wrapper=o()(this.options.wrapper).addClass("is-drilldown"),this.options.animateHeight&&this.$wrapper.addClass("animate-height"),this.$element.wrap(this.$wrapper)),this.$wrapper=this.$element.parent(),this.$wrapper.css(this._getMaxDims())}},{key:"_resize",value:function(){this.$wrapper.css({"max-width":"none","min-height":"none"}),this.$wrapper.css(this._getMaxDims())}},{key:"_events",value:function(t){var e=this;t.off("click.zf.drilldown").on("click.zf.drilldown",(function(n){if(o()(n.target).parentsUntil("ul","li").hasClass("is-drilldown-submenu-parent")&&n.preventDefault(),e._show(t.parent("li")),e.options.closeOnClick){var i=o()("body");i.off(".zf.drilldown").on("click.zf.drilldown",(function(t){t.target===e.$element[0]||o().contains(e.$element[0],t.target)||(t.preventDefault(),e._hideAll(),i.off(".zf.drilldown"))}))}}))}},{key:"_registerEvents",value:function(){this.options.scrollTop&&(this._bindHandler=this._scrollTop.bind(this),this.$element.on("open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown",this._bindHandler)),this.$element.on("mutateme.zf.trigger",this._resize.bind(this))}},{key:"_scrollTop",value:function(){var t=this,e=""!==t.options.scrollTopElement?o()(t.options.scrollTopElement):t.$element,n=parseInt(e.offset().top+t.options.scrollTopOffset,10);o()("html, body").stop(!0).animate({scrollTop:n},t.options.animationDuration,t.options.animationEasing,(function(){this===o()("html")[0]&&t.$element.trigger("scrollme.zf.drilldown")}))}},{key:"_keyboardEvents",value:function(){var t=this;this.$menuItems.add(this.$element.find(".js-drilldown-back > a, .is-submenu-parent-item > a")).on("keydown.zf.drilldown",(function(e){var n,i,s=o()(this),l=s.parent("li").parent("ul").children("li").children("a");l.each((function(t){if(o()(this).is(s))return n=l.eq(Math.max(0,t-1)),void(i=l.eq(Math.min(t+1,l.length-1)))})),r.Keyboard.handleKey(e,"Drilldown",{next:function(){if(s.is(t.$submenuAnchors))return t._show(s.parent("li")),s.parent("li").one((0,a.transitionend)(s),(function(){s.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()})),!0},previous:function(){return t._hide(s.parent("li").parent("ul")),s.parent("li").parent("ul").one((0,a.transitionend)(s),(function(){setTimeout((function(){s.parent("li").parent("ul").parent("li").children("a").first().focus()}),1)})),!0},up:function(){return n.focus(),!s.is(t.$element.find("> li:first-child > a"))},down:function(){return i.focus(),!s.is(t.$element.find("> li:last-child > a"))},close:function(){s.is(t.$element.find("> li > a"))||(t._hide(s.parent().parent()),s.parent().parent().siblings("a").focus())},open:function(){return(!t.options.parentLink||!s.attr("href"))&&(s.is(t.$menuItems)?s.is(t.$submenuAnchors)?(t._show(s.parent("li")),s.parent("li").one((0,a.transitionend)(s),(function(){s.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()})),!0):void 0:(t._hide(s.parent("li").parent("ul")),s.parent("li").parent("ul").one((0,a.transitionend)(s),(function(){setTimeout((function(){s.parent("li").parent("ul").parent("li").children("a").first().focus()}),1)})),!0))},handled:function(t){t&&e.preventDefault()}})}))}},{key:"_hideAll",value:function(){var t=this,e=this.$element.find(".is-drilldown-submenu.is-active");if(e.addClass("is-closing"),e.parent().closest("ul").removeClass("invisible"),this.options.autoHeight){var n=e.parent().closest("ul").data("calcHeight");this.$wrapper.css({height:n})}this.$element.trigger("close.zf.drilldown"),e.one((0,a.transitionend)(e),(function(){e.removeClass("is-active is-closing"),t.$element.trigger("closed.zf.drilldown")}))}},{key:"_back",value:function(t){var e=this;t.off("click.zf.drilldown"),t.children(".js-drilldown-back").on("click.zf.drilldown",(function(){e._hide(t);var n=t.parent("li").parent("ul").parent("li");n.length?e._show(n):e.$currentMenu=e.$element}))}},{key:"_menuLinkEvents",value:function(){var t=this;this.$menuItems.not(".is-drilldown-submenu-parent").off("click.zf.drilldown").on("click.zf.drilldown",(function(){setTimeout((function(){t._hideAll()}),0)}))}},{key:"_setShowSubMenuClasses",value:function(t,e){t.addClass("is-active").removeClass("invisible").attr("aria-hidden",!1),t.parent("li").attr("aria-expanded",!0),!0===e&&this.$element.trigger("open.zf.drilldown",[t])}},{key:"_setHideSubMenuClasses",value:function(t,e){t.removeClass("is-active").addClass("invisible").attr("aria-hidden",!0),t.parent("li").attr("aria-expanded",!1),!0===e&&t.trigger("hide.zf.drilldown",[t])}},{key:"_showMenu",value:function(t,e){var n=this;if(this.$element.find('li[aria-expanded="true"] > ul[data-submenu]').each((function(){n._setHideSubMenuClasses(o()(this))})),this.$currentMenu=t,t.is("[data-drilldown]"))return!0===e&&t.find("li > a").first().focus(),void(this.options.autoHeight&&this.$wrapper.css("height",t.data("calcHeight")));var i=t.children().first().parentsUntil("[data-drilldown]","[data-submenu]");i.each((function(r){0===r&&n.options.autoHeight&&n.$wrapper.css("height",o()(this).data("calcHeight"));var s=r===i.length-1;!0===s&&o()(this).one((0,a.transitionend)(o()(this)),(function(){!0===e&&t.find("li > a").first().focus()})),n._setShowSubMenuClasses(o()(this),s)}))}},{key:"_show",value:function(t){var e=t.children("[data-submenu]");t.attr("aria-expanded",!0),this.$currentMenu=e,t.parent().closest("ul").addClass("invisible"),e.addClass("is-active visible").removeClass("invisible").attr("aria-hidden",!1),this.options.autoHeight&&this.$wrapper.css({height:e.data("calcHeight")}),this.$element.trigger("open.zf.drilldown",[t])}},{key:"_hide",value:function(t){this.options.autoHeight&&this.$wrapper.css({height:t.parent().closest("ul").data("calcHeight")}),t.parent().closest("ul").removeClass("invisible"),t.parent("li").attr("aria-expanded",!1),t.attr("aria-hidden",!0),t.addClass("is-closing").one((0,a.transitionend)(t),(function(){t.removeClass("is-active is-closing visible"),t.blur().addClass("invisible")})),t.trigger("hide.zf.drilldown",[t])}},{key:"_getMaxDims",value:function(){var t=0,e={},n=this;return this.$submenus.add(this.$element).each((function(){var e=l.Box.GetDimensions(this).height;t=e>t?e:t,n.options.autoHeight&&o()(this).data("calcHeight",e)})),this.options.autoHeight?e.height=this.$currentMenu.data("calcHeight"):e["min-height"]="".concat(t,"px"),e["max-width"]="".concat(this.$element[0].getBoundingClientRect().width,"px"),e}},{key:"_destroy",value:function(){o()("body").off(".zf.drilldown"),this.options.scrollTop&&this.$element.off(".zf.drilldown",this._bindHandler),this._hideAll(),this.$element.off("mutateme.zf.trigger"),s.Nest.Burn(this.$element,"drilldown"),this.$element.unwrap().find(".js-drilldown-back, .is-submenu-parent-item").remove().end().find(".is-active, .is-closing, .is-drilldown-submenu").removeClass("is-active is-closing is-drilldown-submenu").off("transitionend otransitionend webkitTransitionEnd").end().find("[data-submenu]").removeAttr("aria-hidden tabindex role"),this.$submenuAnchors.each((function(){o()(this).off(".zf.drilldown")})),this.$element.find("[data-is-parent-link]").detach(),this.$submenus.removeClass("drilldown-submenu-cover-previous invisible"),this.$element.find("a").each((function(){var t=o()(this);t.removeAttr("tabindex"),t.data("savedHref")&&t.attr("href",t.data("savedHref")).removeData("savedHref")}))}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(n("./js/foundation.core.plugin.js").Plugin);h.defaults={autoApplyClass:!0,backButton:'
          • Back
          • ',backButtonPosition:"top",wrapper:"
            ",parentLink:!1,closeOnClick:!1,autoHeight:!1,animateHeight:!1,scrollTop:!1,scrollTopElement:"",scrollTopOffset:0,animationDuration:500,animationEasing:"swing"}},"./js/foundation.dropdown.js":function(t,e,n){n.r(e),n.d(e,{Dropdown:function(){return v}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.positionable.js"),l=n("./js/foundation.util.triggers.js"),u=n("./js/foundation.util.touch.js");function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function f(t,e){for(var n=0;n-1,l=s?t.$tabs:r.siblings("li").add(r);l.each((function(t){if(o()(this).is(r))return n=l.eq(t-1),void(i=l.eq(t+1))}));var u=function(){i.children("a:first").focus(),e.preventDefault()},c=function(){n.children("a:first").focus(),e.preventDefault()},f=function(){var n=r.children("ul.is-dropdown-submenu");n.length&&(t._show(n),r.find("li > a:first").focus(),e.preventDefault())},d=function(){var n=r.parent("ul").parent("li");n.children("a:first").focus(),t._hide(n),e.preventDefault()},h={open:f,close:function(){t._hide(t.$element),t.$menuItems.eq(0).children("a").focus(),e.preventDefault()}};s?t._isVertical()?t._isRtl()?o().extend(h,{down:u,up:c,next:d,previous:f}):o().extend(h,{down:u,up:c,next:f,previous:d}):t._isRtl()?o().extend(h,{next:c,previous:u,down:f,up:d}):o().extend(h,{next:u,previous:c,down:f,up:d}):t._isRtl()?o().extend(h,{next:d,previous:f,down:u,up:c}):o().extend(h,{next:f,previous:d,down:u,up:c}),a.Keyboard.handleKey(e,"DropdownMenu",h)}))}},{key:"_addBodyHandler",value:function(){var t=this,e=o()(document.body);this._removeBodyHandler(),e.on("click.zf.dropdownMenu tap.zf.dropdownMenu",(function(e){o()(e.target).closest(t.$element).length||(t._hide(),t._removeBodyHandler())}))}},{key:"_removeBodyHandler",value:function(){o()(document.body).off("click.zf.dropdownMenu tap.zf.dropdownMenu")}},{key:"_show",value:function(t){var e=this.$tabs.index(this.$tabs.filter((function(e,n){return o()(n).find(t).length>0}))),n=t.parent("li.is-dropdown-submenu-parent").siblings("li.is-dropdown-submenu-parent");this._hide(n,e),t.css("visibility","hidden").addClass("js-dropdown-active").parent("li.is-dropdown-submenu-parent").addClass("is-active");var i=u.Box.ImNotTouchingYou(t,null,!0);if(!i){var r="left"===this.options.alignment?"-right":"-left",s=t.parent(".is-dropdown-submenu-parent");s.removeClass("opens".concat(r)).addClass("opens-".concat(this.options.alignment)),(i=u.Box.ImNotTouchingYou(t,null,!0))||s.removeClass("opens-".concat(this.options.alignment)).addClass("opens-inner"),this.changed=!0}t.css("visibility",""),this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdownMenu",[t])}},{key:"_hide",value:function(t,e){var n;if((n=t&&t.length?t:void 0!==e?this.$tabs.not((function(t){return t===e})):this.$element).hasClass("is-active")||n.find(".is-active").length>0){var i=n.find("li.is-active");if(i.add(n).attr({"data-is-click":!1}).removeClass("is-active"),n.find("ul.js-dropdown-active").removeClass("js-dropdown-active"),this.changed||n.find("opens-inner").length){var o="left"===this.options.alignment?"right":"left";n.find("li.is-dropdown-submenu-parent").add(n).removeClass("opens-inner opens-".concat(this.options.alignment)).addClass("opens-".concat(o)),this.changed=!1}clearTimeout(i.data("_delay")),this._removeBodyHandler(),this.$element.trigger("hide.zf.dropdownMenu",[n])}}},{key:"_destroy",value:function(){this.$menuItems.off(".zf.dropdownMenu").removeAttr("data-is-click").removeClass("is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner"),o()(document.body).off(".zf.dropdownMenu"),l.Nest.Burn(this.$element,"dropdown")}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),m}(r.Plugin);v.defaults={disableHover:!1,disableHoverOnTouch:!0,autoclose:!0,hoverDelay:50,clickOpen:!1,closingTime:500,alignment:"auto",closeOnClick:!0,closeOnClickInside:!0,verticalClass:"vertical",rightClass:"align-right",forceFollow:!0}},"./js/foundation.equalizer.js":function(t,e,n){n.r(e),n.d(e,{Equalizer:function(){return d}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.imageLoader.js"),a=n("./js/foundation.core.utils.js");function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){for(var n=0;n0,this.isNested=this.$element.parentsUntil(document.body,"[data-equalizer]").length>0,this.isOn=!1,this._bindHandler={onResizeMeBound:this._onResizeMe.bind(this),onPostEqualizedBound:this._onPostEqualized.bind(this)};var n,i=this.$element.find("img");this.options.equalizeOn?(n=this._checkMQ(),o()(window).on("changed.zf.mediaquery",this._checkMQ.bind(this))):this._events(),(void 0!==n&&!1===n||void 0===n)&&(i.length?(0,s.onImagesLoaded)(i,this._reflow.bind(this)):this._reflow())}},{key:"_pauseEvents",value:function(){this.isOn=!1,this.$element.off({".zf.equalizer":this._bindHandler.onPostEqualizedBound,"resizeme.zf.trigger":this._bindHandler.onResizeMeBound,"mutateme.zf.trigger":this._bindHandler.onResizeMeBound})}},{key:"_onResizeMe",value:function(){this._reflow()}},{key:"_onPostEqualized",value:function(t){t.target!==this.$element[0]&&this._reflow()}},{key:"_events",value:function(){this._pauseEvents(),this.hasNested?this.$element.on("postequalized.zf.equalizer",this._bindHandler.onPostEqualizedBound):(this.$element.on("resizeme.zf.trigger",this._bindHandler.onResizeMeBound),this.$element.on("mutateme.zf.trigger",this._bindHandler.onResizeMeBound)),this.isOn=!0}},{key:"_checkMQ",value:function(){var t=!r.MediaQuery.is(this.options.equalizeOn);return t?this.isOn&&(this._pauseEvents(),this.$watched.css("height","auto")):this.isOn||this._events(),t}},{key:"_killswitch",value:function(){}},{key:"_reflow",value:function(){if(!this.options.equalizeOnStack&&this._isStacked())return this.$watched.css("height","auto"),!1;this.options.equalizeByRow?this.getHeightsByRow(this.applyHeightByRow.bind(this)):this.getHeights(this.applyHeight.bind(this))}},{key:"_isStacked",value:function(){return!this.$watched[0]||!this.$watched[1]||this.$watched[0].getBoundingClientRect().top!==this.$watched[1].getBoundingClientRect().top}},{key:"getHeights",value:function(t){for(var e=[],n=0,i=this.$watched.length;nn;if(this.scrollPos=n,n0&&"push"===this.options.transition&&(this.options.contentScroll=!1);var r=this.$element.attr("class").match(/\bin-canvas-for-(\w+)/);r&&2===r.length?this.options.inCanvasOn=r[1]:this.options.inCanvasOn&&this.$element.addClass("in-canvas-for-".concat(this.options.inCanvasOn)),this.options.inCanvasOn&&this._checkInCanvas(),this._removeContentClasses()}},{key:"_events",value:function(){var t=this;this.$element.off(".zf.trigger .zf.offCanvas").on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"keydown.zf.offCanvas":this._handleKeyboard.bind(this)}),!0===this.options.closeOnClick&&(this.options.contentOverlay?this.$overlay:this.$content).on({"click.zf.offCanvas":this.close.bind(this)}),this.options.inCanvasOn&&o()(window).on("changed.zf.mediaquery",(function(){t._checkInCanvas()}))}},{key:"_setMQChecker",value:function(){var t=this;this.onLoadListener=(0,s.onLoad)(o()(window),(function(){l.MediaQuery.atLeast(t.options.revealOn)&&t.reveal(!0)})),o()(window).on("changed.zf.mediaquery",(function(){l.MediaQuery.atLeast(t.options.revealOn)?t.reveal(!0):t.reveal(!1)}))}},{key:"_checkInCanvas",value:function(){this.isInCanvas=l.MediaQuery.atLeast(this.options.inCanvasOn),!0===this.isInCanvas&&this.close()}},{key:"_removeContentClasses",value:function(t){"boolean"!=typeof t?this.$content.removeClass(this.contentClasses.base.join(" ")):!1===t&&this.$content.removeClass("has-reveal-".concat(this.position))}},{key:"_addContentClasses",value:function(t){this._removeContentClasses(t),"boolean"!=typeof t?this.$content.addClass("has-transition-".concat(this.options.transition," has-position-").concat(this.position)):!0===t&&this.$content.addClass("has-reveal-".concat(this.position))}},{key:"_fixStickyElements",value:function(){this.$sticky.each((function(t,e){var n=o()(e);if("fixed"===n.css("position")){var i=parseInt(n.css("top"),10);n.data("offCanvasSticky",{top:i});var r=o()(document).scrollTop()+i;n.css({top:"".concat(r,"px"),width:"100%",transition:"none"})}}))}},{key:"_unfixStickyElements",value:function(){this.$sticky.each((function(t,e){var n=o()(e),i=n.data("offCanvasSticky");"object"===c(i)&&(n.css({top:"".concat(i.top,"px"),width:"",transition:""}),n.data("offCanvasSticky",""))}))}},{key:"reveal",value:function(t){t?(this.close(),this.isRevealed=!0,this.$element.attr("aria-hidden","false"),this.$element.off("open.zf.trigger toggle.zf.trigger"),this.$element.removeClass("is-closed")):(this.isRevealed=!1,this.$element.attr("aria-hidden","true"),this.$element.off("open.zf.trigger toggle.zf.trigger").on({"open.zf.trigger":this.open.bind(this),"toggle.zf.trigger":this.toggle.bind(this)}),this.$element.addClass("is-closed")),this._addContentClasses(t)}},{key:"_stopScrolling",value:function(){return!1}},{key:"_recordScrollable",value:function(t){this.lastY=t.touches[0].pageY}},{key:"_preventDefaultAtEdges",value:function(t){var e=this,n=t.data,i=e.lastY-t.touches[0].pageY;e.lastY=t.touches[0].pageY,n._canScroll(i,e)||t.preventDefault()}},{key:"_scrollboxTouchMoved",value:function(t){var e=this,n=t.data,i=e.closest("[data-off-canvas], [data-off-canvas-scrollbox-outer]"),o=e.lastY-t.touches[0].pageY;i.lastY=e.lastY=t.touches[0].pageY,t.stopPropagation(),n._canScroll(o,e)||(n._canScroll(o,i)?i.scrollTop+=o:t.preventDefault())}},{key:"_canScroll",value:function(t,e){var n=t<0,i=t>0,o=e.scrollTop>0,r=e.scrollTop1&&this.geoSync(),this.options.accessible&&this.$wrapper.attr("tabindex",0)}},{key:"_loadBullets",value:function(){this.$bullets=this.$element.find(".".concat(this.options.boxOfBullets)).find("button")}},{key:"geoSync",value:function(){var t=this;this.timer=new a.Timer(this.$element,{duration:this.options.timerDelay,infinite:!1},(function(){t.changeSlide(!0)})),this.timer.start()}},{key:"_prepareForOrbit",value:function(){this._setWrapperHeight()}},{key:"_setWrapperHeight",value:function(t){var e,n=0,i=0,r=this;this.$slides.each((function(){e=this.getBoundingClientRect().height,o()(this).attr("data-slide",i),/mui/g.test(o()(this)[0].className)||r.$slides.filter(".is-active")[0]===r.$slides.eq(i)[0]||o()(this).css({display:"none"}),n=e>n?e:n,i++})),i===this.$slides.length&&(this.$wrapper.css({height:n}),t&&t(n))}},{key:"_setSlideHeight",value:function(t){this.$slides.each((function(){o()(this).css("max-height",t)}))}},{key:"_events",value:function(){var t=this;this.$element.off(".resizeme.zf.trigger").on({"resizeme.zf.trigger":this._prepareForOrbit.bind(this)}),this.$slides.length>1&&(this.options.swipe&&this.$slides.off("swipeleft.zf.orbit swiperight.zf.orbit").on("swipeleft.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(!0)})).on("swiperight.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(!1)})),this.options.autoPlay&&(this.$slides.on("click.zf.orbit",(function(){t.$element.data("clickedOn",!t.$element.data("clickedOn")),t.timer[t.$element.data("clickedOn")?"pause":"start"]()})),this.options.pauseOnHover&&this.$element.on("mouseenter.zf.orbit",(function(){t.timer.pause()})).on("mouseleave.zf.orbit",(function(){t.$element.data("clickedOn")||t.timer.start()}))),this.options.navButtons&&this.$element.find(".".concat(this.options.nextClass,", .").concat(this.options.prevClass)).attr("tabindex",0).on("click.zf.orbit touchend.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(o()(this).hasClass(t.options.nextClass))})),this.options.bullets&&this.$bullets.on("click.zf.orbit touchend.zf.orbit",(function(){if(/is-active/g.test(this.className))return!1;var e=o()(this).data("slide"),n=e>t.$slides.filter(".is-active").data("slide"),i=t.$slides.eq(e);t.changeSlide(n,i,e)})),this.options.accessible&&this.$wrapper.add(this.$bullets).on("keydown.zf.orbit",(function(e){r.Keyboard.handleKey(e,"Orbit",{next:function(){t.changeSlide(!0)},previous:function(){t.changeSlide(!1)},handled:function(){o()(e.target).is(t.$bullets)&&t.$bullets.filter(".is-active").focus()}})})))}},{key:"_reset",value:function(){void 0!==this.$slides&&this.$slides.length>1&&(this.$element.off(".zf.orbit").find("*").off(".zf.orbit"),this.options.autoPlay&&this.timer.restart(),this.$slides.each((function(t){o()(t).removeClass("is-active is-active is-in").removeAttr("aria-live").hide()})),this.$slides.first().addClass("is-active").show(),this.$element.trigger("slidechange.zf.orbit",[this.$slides.first()]),this.options.bullets&&this._updateBullets(0))}},{key:"changeSlide",value:function(t,e,n){if(this.$slides){var i=this.$slides.filter(".is-active").eq(0);if(/mui/g.test(i[0].className))return!1;var o,r=this.$slides.first(),a=this.$slides.last(),l=t?"Right":"Left",u=t?"Left":"Right",c=this;(o=e||(t?this.options.infiniteWrap?i.next(".".concat(this.options.slideClass)).length?i.next(".".concat(this.options.slideClass)):r:i.next(".".concat(this.options.slideClass)):this.options.infiniteWrap?i.prev(".".concat(this.options.slideClass)).length?i.prev(".".concat(this.options.slideClass)):a:i.prev(".".concat(this.options.slideClass)))).length&&(this.$element.trigger("beforeslidechange.zf.orbit",[i,o]),this.options.bullets&&(n=n||this.$slides.index(o),this._updateBullets(n)),this.options.useMUI&&!this.$element.is(":hidden")?(s.Motion.animateIn(o.addClass("is-active"),this.options["animInFrom".concat(l)],(function(){o.css({display:"block"}).attr("aria-live","polite")})),s.Motion.animateOut(i.removeClass("is-active"),this.options["animOutTo".concat(u)],(function(){i.removeAttr("aria-live"),c.options.autoPlay&&!c.timer.isPaused&&c.timer.restart()}))):(i.removeClass("is-active is-in").removeAttr("aria-live").hide(),o.addClass("is-active is-in").attr("aria-live","polite").show(),this.options.autoPlay&&!this.timer.isPaused&&this.timer.restart()),this.$element.trigger("slidechange.zf.orbit",[o]))}}},{key:"_updateBullets",value:function(t){var e=this.$bullets.filter(".is-active"),n=this.$bullets.not(".is-active"),i=this.$bullets.eq(t);e.removeClass("is-active").blur(),i.addClass("is-active");var r=e.children("[data-slide-active-label]").last();if(!r.length){var s=e.children("span");n.toArray().map((function(t){return o()(t).children("span").length})).every((function(t){return t1?i[0]:"small",a=i.length>1?i[1]:i[0];null!==v[a]&&(t[s]=v[a])}this.rules=t}this._getAllOptions(),o().isEmptyObject(this.rules)||this._checkMediaQueries()}},{key:"_getAllOptions",value:function(){var t=this;for(var e in t.allOptions={},v)if(v.hasOwnProperty(e)){var n=v[e];try{var i=o()("
              "),r=new n.plugin(i,t.options);for(var s in r.options)if(r.options.hasOwnProperty(s)&&"zfPlugin"!==s){var a=r.options[s];t.allOptions[s]=a}r.destroy()}catch(t){console.warn("Warning: Problems getting Accordion/Tab options: ".concat(t))}}}},{key:"_events",value:function(){this._changedZfMediaQueryHandler=this._checkMediaQueries.bind(this),o()(window).on("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}},{key:"_checkMediaQueries",value:function(){var t,e=this;o().each(this.rules,(function(e){r.MediaQuery.atLeast(e)&&(t=e)})),t&&(this.currentPlugin instanceof this.rules[t].plugin||(o().each(v,(function(t,n){e.$element.removeClass(n.cssClass)})),this.$element.addClass(this.rules[t].cssClass),this.currentPlugin&&(!this.currentPlugin.$element.data("zfPlugin")&&this.storezfData&&this.currentPlugin.$element.data("zfPlugin",this.storezfData),this.currentPlugin.destroy()),this._handleMarkup(this.rules[t].cssClass),this.currentRule=this.rules[t],this.currentPlugin=new this.currentRule.plugin(this.$element,this.options),this.storezfData=this.currentPlugin.$element.data("zfPlugin")))}},{key:"_handleMarkup",value:function(t){var e=this,n="accordion",i=o()("[data-tabs-content="+this.$element.attr("id")+"]");if(i.length&&(n="tabs"),n!==t){var r=e.allOptions.linkClass?e.allOptions.linkClass:"tabs-title",a=e.allOptions.panelClass?e.allOptions.panelClass:"tabs-panel";this.$element.removeAttr("role");var l=this.$element.children("."+r+",[data-accordion-item]").removeClass(r).removeClass("accordion-item").removeAttr("data-accordion-item"),u=l.children("a").removeClass("accordion-title");if("tabs"===n?(i=i.children("."+a).removeClass(a).removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby")).children("a").removeAttr("role").removeAttr("aria-controls").removeAttr("aria-selected"):i=l.children("[data-tab-content]").removeClass("accordion-content"),i.css({display:"",visibility:""}),l.css({display:"",visibility:""}),"accordion"===t)i.each((function(t,n){o()(n).appendTo(l.get(t)).addClass("accordion-content").attr("data-tab-content","").removeClass("is-active").css({height:""}),o()("[data-tabs-content="+e.$element.attr("id")+"]").after('
              ').detach(),l.addClass("accordion-item").attr("data-accordion-item",""),u.addClass("accordion-title")}));else if("tabs"===t){var c=o()("[data-tabs-content="+e.$element.attr("id")+"]"),f=o()("#tabs-placeholder-"+e.$element.attr("id"));f.length?(c=o()('
              ').insertAfter(f).attr("data-tabs-content",e.$element.attr("id")),f.remove()):c=o()('
              ').insertAfter(e.$element).attr("data-tabs-content",e.$element.attr("id")),i.each((function(t,e){var n=o()(e).appendTo(c).addClass(a),i=u.get(t).hash.slice(1),r=o()(e).attr("id")||(0,s.GetYoDigits)(6,"accordion");i!==r&&(""!==i?o()(e).attr("id",i):(i=r,o()(e).attr("id",i),o()(u.get(t)).attr("href",o()(u.get(t)).attr("href").replace("#","")+"#"+i))),o()(l.get(t)).hasClass("is-active")&&n.addClass("is-active")})),l.addClass(r)}}}},{key:"open",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.open)return(t=this.currentRule).open.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"close",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.close)return(t=this.currentRule).close.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"toggle",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.toggle)return(t=this.currentRule).toggle.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"_destroy",value:function(){this.currentPlugin&&this.currentPlugin.destroy(),o()(window).off("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}}],n&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(a.Plugin);m.defaults={}},"./js/foundation.responsiveMenu.js":function(t,e,n){n.r(e),n.d(e,{ResponsiveMenu:function(){return m}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.core.plugin.js"),l=n("./js/foundation.dropdownMenu.js"),u=n("./js/foundation.drilldown.js"),c=n("./js/foundation.accordionMenu.js");function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function d(t,e){for(var n=0;n1?i[0]:"small",l=i.length>1?i[1]:i[0];null!==v[l]&&(t[a]=v[l])}this.rules=t}o().isEmptyObject(this.rules)||this._checkMediaQueries(),this.$element.attr("data-mutate",this.$element.attr("data-mutate")||(0,s.GetYoDigits)(6,"responsive-menu"))}},{key:"_events",value:function(){var t=this;o()(window).on("changed.zf.mediaquery",(function(){t._checkMediaQueries()}))}},{key:"_checkMediaQueries",value:function(){var t,e=this;o().each(this.rules,(function(e){r.MediaQuery.atLeast(e)&&(t=e)})),t&&(this.currentPlugin instanceof this.rules[t].plugin||(o().each(v,(function(t,n){e.$element.removeClass(n.cssClass)})),this.$element.addClass(this.rules[t].cssClass),this.currentPlugin&&this.currentPlugin.destroy(),this.currentPlugin=new this.rules[t].plugin(this.$element,{})))}},{key:"_destroy",value:function(){this.currentPlugin.destroy(),o()(window).off(".zf.ResponsiveMenu")}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(a.Plugin);m.defaults={}},"./js/foundation.responsiveToggle.js":function(t,e,n){n.r(e),n.d(e,{ResponsiveToggle:function(){return f}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.motion.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function l(t,e){for(var n=0;n").addClass("reveal-overlay"+t).appendTo(this.options.appendTo)}},{key:"_updatePosition",value:function(){var t,e=this.$element.outerWidth(),n=o()(window).width(),i=this.$element.outerHeight(),r=o()(window).height(),s=null;t="auto"===this.options.hOffset?parseInt((n-e)/2,10):parseInt(this.options.hOffset,10),"auto"===this.options.vOffset?s=i>r?parseInt(Math.min(100,r/10),10):parseInt((r-i)/4,10):null!==this.options.vOffset&&(s=parseInt(this.options.vOffset,10)),null!==s&&this.$element.css({top:s+"px"}),this.$overlay&&"auto"===this.options.hOffset||(this.$element.css({left:t+"px"}),this.$element.css({margin:"0px"}))}},{key:"_events",value:function(){var t=this,e=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":function(n,i){if(n.target===e.$element[0]||o()(n.target).parents("[data-closable]")[0]===i)return t.close.apply(t)},"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":function(){e._updatePosition()}}),this.options.closeOnClick&&this.options.overlay&&this.$overlay.off(".zf.reveal").on("click.zf.dropdown tap.zf.dropdown",(function(t){t.target!==e.$element[0]&&!o().contains(e.$element[0],t.target)&&o().contains(document,t.target)&&e.close()})),this.options.deepLink&&o()(window).on("hashchange.zf.reveal:".concat(this.id),this._handleState.bind(this))}},{key:"_handleState",value:function(){window.location.hash!=="#"+this.id||this.isActive?this.close():this.open()}},{key:"_disableScroll",value:function(t){t=t||o()(window).scrollTop(),o()(document).height()>o()(window).height()&&o()("html").css("top",-t)}},{key:"_enableScroll",value:function(t){t=t||parseInt(o()("html").css("top"),10),o()(document).height()>o()(window).height()&&(o()("html").css("top",""),o()(window).scrollTop(-t))}},{key:"open",value:function(){var t=this,e="#".concat(this.id);this.options.deepLink&&window.location.hash!==e&&(window.history.pushState?this.options.updateHistory?window.history.pushState({},"",e):window.history.replaceState({},"",e):window.location.hash=e),this.$activeAnchor=o()(document.activeElement).is(this.$anchor)?o()(document.activeElement):this.$anchor,this.isActive=!0,this.$element.css({visibility:"hidden"}).show().scrollTop(0),this.options.overlay&&this.$overlay.css({visibility:"hidden"}).show(),this._updatePosition(),this.$element.hide().css({visibility:""}),this.$overlay&&(this.$overlay.css({visibility:""}).hide(),this.$element.hasClass("fast")?this.$overlay.addClass("fast"):this.$element.hasClass("slow")&&this.$overlay.addClass("slow")),this.options.multipleOpened||this.$element.trigger("closeme.zf.reveal",this.id),0===o()(".reveal:visible").length&&this._disableScroll();var n=this;this.options.animationIn?(this.options.overlay&&u.Motion.animateIn(this.$overlay,"fade-in"),u.Motion.animateIn(this.$element,this.options.animationIn,(function(){t.$element&&(t.focusableElements=a.Keyboard.findFocusable(t.$element),n.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),n._addGlobalClasses(),a.Keyboard.trapFocus(n.$element))}))):(this.options.overlay&&this.$overlay.show(0),this.$element.show(this.options.showDelay)),this.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),a.Keyboard.trapFocus(this.$element),this._addGlobalClasses(),this._addGlobalListeners(),this.$element.trigger("open.zf.reveal")}},{key:"_addGlobalClasses",value:function(){var t=function(){o()("html").toggleClass("zf-has-scroll",!!(o()(document).height()>o()(window).height()))};this.$element.on("resizeme.zf.trigger.revealScrollbarListener",(function(){return t()})),t(),o()("html").addClass("is-reveal-open")}},{key:"_removeGlobalClasses",value:function(){this.$element.off("resizeme.zf.trigger.revealScrollbarListener"),o()("html").removeClass("is-reveal-open"),o()("html").removeClass("zf-has-scroll")}},{key:"_addGlobalListeners",value:function(){var t=this;this.$element&&(this.focusableElements=a.Keyboard.findFocusable(this.$element),this.options.overlay||!this.options.closeOnClick||this.options.fullScreen||o()("body").on("click.zf.dropdown tap.zf.dropdown",(function(e){e.target!==t.$element[0]&&!o().contains(t.$element[0],e.target)&&o().contains(document,e.target)&&t.close()})),this.options.closeOnEsc&&o()(window).on("keydown.zf.reveal",(function(e){a.Keyboard.handleKey(e,"Reveal",{close:function(){t.options.closeOnEsc&&t.close()}})})))}},{key:"close",value:function(){if(!this.isActive||!this.$element.is(":visible"))return!1;var t=this;function e(){var e=parseInt(o()("html").css("top"),10);0===o()(".reveal:visible").length&&t._removeGlobalClasses(),a.Keyboard.releaseFocus(t.$element),t.$element.attr("aria-hidden",!0),0===o()(".reveal:visible").length&&t._enableScroll(e),t.$element.trigger("closed.zf.reveal")}if(this.options.animationOut?(this.options.overlay&&u.Motion.animateOut(this.$overlay,"fade-out"),u.Motion.animateOut(this.$element,this.options.animationOut,e)):(this.$element.hide(this.options.hideDelay),this.options.overlay?this.$overlay.hide(0,e):e()),this.options.closeOnEsc&&o()(window).off("keydown.zf.reveal"),!this.options.overlay&&this.options.closeOnClick&&o()("body").off("click.zf.dropdown tap.zf.dropdown"),this.$element.off("keydown.zf.reveal"),this.options.resetOnClose&&this.$element.html(this.$element.html()),this.isActive=!1,t.options.deepLink&&window.location.hash==="#".concat(this.id))if(window.history.replaceState){var n=window.location.pathname+window.location.search;this.options.updateHistory?window.history.pushState({},"",n):window.history.replaceState("",document.title,n)}else window.location.hash="";this.$activeAnchor.focus()}},{key:"toggle",value:function(){this.isActive?this.close():this.open()}},{key:"_destroy",value:function(){this.options.overlay&&(this.$element.appendTo(o()(this.options.appendTo)),this.$overlay.hide().off().remove()),this.$element.hide().off(),this.$anchor.off(".zf"),o()(window).off(".zf.reveal:".concat(this.id)),this.onLoadListener&&o()(window).off(this.onLoadListener),0===o()(".reveal:visible").length&&this._removeGlobalClasses()}}])&&h(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),y}(r.Plugin);m.defaults={animationIn:"",animationOut:"",showDelay:0,hideDelay:0,closeOnClick:!0,closeOnEsc:!0,multipleOpened:!1,vOffset:"auto",hOffset:"auto",fullScreen:!1,overlay:!0,resetOnClose:!1,deepLink:!1,updateHistory:!1,appendTo:"body",additionalOverlayClasses:""}},"./js/foundation.slider.js":function(t,e,n){n.r(e),n.d(e,{Slider:function(){return v}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.util.motion.js"),a=n("./js/foundation.core.utils.js"),l=n("./js/foundation.core.plugin.js"),u=n("./js/foundation.util.touch.js"),c=n("./js/foundation.util.triggers.js");function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function d(t,e){for(var n=0;n1?this.inputs.eq(1):o()("#".concat(this.$handle2.attr("aria-controls"))),this.inputs[1]||(this.inputs=this.inputs.add(this.$input2)),this._setInitAttr(1)),this.setHandles(),this._events(),this.initialized=!0}},{key:"setHandles",value:function(){var t=this;this.handles[1]?this._setHandlePos(this.$handle,this.inputs.eq(0).val(),(function(){t._setHandlePos(t.$handle2,t.inputs.eq(1).val())})):this._setHandlePos(this.$handle,this.inputs.eq(0).val())}},{key:"_reflow",value:function(){this.setHandles()}},{key:"_pctOfBar",value:function(t){var e=m(t-this.options.start,this.options.end-this.options.start);switch(this.options.positionValueFunction){case"pow":e=this._logTransform(e);break;case"log":e=this._powTransform(e)}return e.toFixed(2)}},{key:"_value",value:function(t){switch(this.options.positionValueFunction){case"pow":t=this._powTransform(t);break;case"log":t=this._logTransform(t)}return this.options.vertical?parseFloat(this.options.end)+t*(this.options.start-this.options.end):(this.options.end-this.options.start)*t+parseFloat(this.options.start)}},{key:"_logTransform",value:function(t){return function(t,e){return Math.log(e)/Math.log(t)}(this.options.nonLinearBase,t*(this.options.nonLinearBase-1)+1)}},{key:"_powTransform",value:function(t){return(Math.pow(this.options.nonLinearBase,t)-1)/(this.options.nonLinearBase-1)}},{key:"_setHandlePos",value:function(t,e,n){if(!this.$element.hasClass(this.options.disabledClass)){(e=parseFloat(e))this.options.end&&(e=this.options.end);var i=this.options.doubleSided;if(i)if(0===this.handles.index(t)){var o=parseFloat(this.$handle2.attr("aria-valuenow"));e=e>=o?o-this.options.step:e}else{var r=parseFloat(this.$handle.attr("aria-valuenow"));e=e<=r?r+this.options.step:e}var a=this,l=this.options.vertical,u=l?"height":"width",c=l?"top":"left",f=t[0].getBoundingClientRect()[u],d=this.$element[0].getBoundingClientRect()[u],h=this._pctOfBar(e),p=(100*m((d-f)*h,d)).toFixed(this.options.decimal);e=parseFloat(e.toFixed(this.options.decimal));var v={};if(this._setValues(t,e),i){var y,g=0===this.handles.index(t),b=Math.floor(100*m(f,d));if(g)v[c]="".concat(p,"%"),y=parseFloat(this.$handle2[0].style[c])-p+b,n&&"function"==typeof n&&n();else{var w=parseFloat(this.$handle[0].style[c]);y=p-(isNaN(w)?(this.options.initialStart-this.options.start)/((this.options.end-this.options.start)/100):w)+b}v["min-".concat(u)]="".concat(y,"%")}var k=this.$element.data("dragging")?1e3/60:this.options.moveTime;(0,s.Move)(k,t,(function(){isNaN(p)?t.css(c,"".concat(100*h,"%")):t.css(c,"".concat(p,"%")),a.options.doubleSided?a.$fill.css(v):a.$fill.css(u,"".concat(100*h,"%"))})),this.initialized&&(this.$element.one("finished.zf.animate",(function(){a.$element.trigger("moved.zf.slider",[t])})),clearTimeout(a.timeout),a.timeout=setTimeout((function(){a.$element.trigger("changed.zf.slider",[t])}),a.options.changedDelay))}}},{key:"_setInitAttr",value:function(t){var e=0===t?this.options.initialStart:this.options.initialEnd,n=this.inputs.eq(t).attr("id")||(0,a.GetYoDigits)(6,"slider");this.inputs.eq(t).attr({id:n,max:this.options.end,min:this.options.start,step:this.options.step}),this.inputs.eq(t).val(e),this.handles.eq(t).attr({role:"slider","aria-controls":n,"aria-valuemax":this.options.end,"aria-valuemin":this.options.start,"aria-valuenow":e,"aria-orientation":this.options.vertical?"vertical":"horizontal",tabindex:0})}},{key:"_setValues",value:function(t,e){var n=this.options.doubleSided?this.handles.index(t):0;this.inputs.eq(n).val(e),t.attr("aria-valuenow",e)}},{key:"_handleEvent",value:function(t,e,n){var i;if(n)i=this._adjustValue(null,n);else{t.preventDefault();var r=this.options.vertical,s=r?"height":"width",l=r?"top":"left",u=r?t.pageY:t.pageX,c=this.$element[0].getBoundingClientRect()[s],f=r?o()(window).scrollTop():o()(window).scrollLeft(),d=this.$element.offset()[l];t.clientY===t.pageY&&(u+=f);var h,p=u-d,v=m(h=p<0?0:p>c?c:p,c);i=this._value(v),(0,a.rtl)()&&!this.options.vertical&&(i=this.options.end-i),i=this._adjustValue(null,i),e||(e=y(this.$handle,l,h,s)<=y(this.$handle2,l,h,s)?this.$handle:this.$handle2)}this._setHandlePos(e,i)}},{key:"_adjustValue",value:function(t,e){var n,i,o,r=this.options.step,s=parseFloat(r/2);return 0===(i=(n=t?parseFloat(t.attr("aria-valuenow")):e)>=0?n%r:r+n%r)?n:n=n>=(o=n-i)+s?o+r:o}},{key:"_events",value:function(){this._eventsForHandle(this.$handle),this.handles[1]&&this._eventsForHandle(this.$handle2)}},{key:"_eventsForHandle",value:function(t){var e,n=this,i=function(t){var e=n.inputs.index(o()(this));n._handleEvent(t,n.handles.eq(e),o()(this).val())};if(this.inputs.off("keyup.zf.slider").on("keyup.zf.slider",(function(t){13===t.keyCode&&i.call(this,t)})),this.inputs.off("change.zf.slider").on("change.zf.slider",i),this.options.clickSelect&&this.$element.off("click.zf.slider").on("click.zf.slider",(function(t){if(n.$element.data("dragging"))return!1;o()(t.target).is("[data-slider-handle]")||(n.options.doubleSided?n._handleEvent(t):n._handleEvent(t,n.$handle))})),this.options.draggable){this.handles.addTouch();var s=o()("body");t.off("mousedown.zf.slider").on("mousedown.zf.slider",(function(i){t.addClass("is-dragging"),n.$fill.addClass("is-dragging"),n.$element.data("dragging",!0),e=o()(i.currentTarget),s.on("mousemove.zf.slider",(function(t){t.preventDefault(),n._handleEvent(t,e)})).on("mouseup.zf.slider",(function(i){n._handleEvent(i,e),t.removeClass("is-dragging"),n.$fill.removeClass("is-dragging"),n.$element.data("dragging",!1),s.off("mousemove.zf.slider mouseup.zf.slider")}))})).on("selectstart.zf.slider touchmove.zf.slider",(function(t){t.preventDefault()}))}t.off("keydown.zf.slider").on("keydown.zf.slider",(function(e){var i,s=o()(this),a=(n.options.doubleSided&&n.handles.index(s),parseFloat(t.attr("aria-valuenow")));r.Keyboard.handleKey(e,"Slider",{decrease:function(){i=a-n.options.step},increase:function(){i=a+n.options.step},decreaseFast:function(){i=a-10*n.options.step},increaseFast:function(){i=a+10*n.options.step},min:function(){i=n.options.start},max:function(){i=n.options.end},handled:function(){e.preventDefault(),n._setHandlePos(s,i)}})}))}},{key:"_destroy",value:function(){this.handles.off(".zf.slider"),this.inputs.off(".zf.slider"),this.$element.off(".zf.slider"),clearTimeout(this.timeout)}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),g}(l.Plugin);function m(t,e){return t/e}function y(t,e,n,i){return Math.abs(t.position()[e]+t[i]()/2-n)}v.defaults={start:0,end:100,step:1,initialStart:0,initialEnd:100,binding:!1,clickSelect:!0,vertical:!1,draggable:!0,disabled:!1,doubleSided:!1,decimal:2,moveTime:200,disabledClass:"disabled",invertVertical:!1,changedDelay:500,nonLinearBase:5,positionValueFunction:"linear"}},"./js/foundation.smoothScroll.js":function(t,e,n){n.r(e),n.d(e,{SmoothScroll:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js");function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function a(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:h.defaults,n=arguments.length>2?arguments[2]:void 0,i=o()(t);if(!i.length)return!1;var r=Math.round(i.offset().top-e.threshold/2-e.offset);o()("html, body").stop(!0).animate({scrollTop:r},e.animationDuration,e.animationEasing,(function(){"function"==typeof n&&n()}))}}],(n=[{key:"_setup",value:function(t,e){this.$element=t,this.options=o().extend({},h.defaults,this.$element.data(),e),this.className="SmoothScroll",this._init()}},{key:"_init",value:function(){var t=this.$element[0].id||(0,r.GetYoDigits)(6,"smooth-scroll");this.$element.attr({id:t}),this._events()}},{key:"_events",value:function(){this._linkClickListener=this._handleLinkClick.bind(this),this.$element.on("click.zf.smoothScroll",this._linkClickListener),this.$element.on("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}},{key:"_handleLinkClick",value:function(t){var e=this;if(o()(t.currentTarget).is('a[href^="#"]')){var n=t.currentTarget.getAttribute("href");this._inTransition=!0,h.scrollToLoc(n,this.options,(function(){e._inTransition=!1})),t.preventDefault()}}},{key:"_destroy",value:function(){this.$element.off("click.zf.smoothScroll",this._linkClickListener),this.$element.off("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}}])&&a(e.prototype,n),i&&a(e,i),Object.defineProperty(e,"prototype",{writable:!1}),h}(n("./js/foundation.core.plugin.js").Plugin);c.defaults={animationDuration:500,animationEasing:"linear",threshold:50,offset:0}},"./js/foundation.sticky.js":function(t,e,n){n.r(e),n.d(e,{Sticky:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.mediaQuery.js"),l=n("./js/foundation.util.triggers.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n=n.topPoint))})),n._events(e.split("-").reverse().join("-"))}))}},{key:"_parsePoints",value:function(){for(var t=[""===this.options.topAnchor?1:this.options.topAnchor,""===this.options.btmAnchor?document.documentElement.scrollHeight:this.options.btmAnchor],e={},n=0,i=t.length;n=this.topPoint?e<=this.bottomPoint?this.isStuck||this._setSticky():this.isStuck&&this._removeSticky(!1):this.isStuck&&this._removeSticky(!0)}},{key:"_setSticky",value:function(){var t=this,e=this.options.stickTo,n="top"===e?"marginTop":"marginBottom",i="top"===e?"bottom":"top",o={};o[n]="".concat(this.options[n],"em"),o[e]=0,o[i]="auto",this.isStuck=!0,this.$element.removeClass("is-anchored is-at-".concat(i)).addClass("is-stuck is-at-".concat(e)).css(o).trigger("sticky.zf.stuckto:".concat(e)),this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",(function(){t._setSizes()}))}},{key:"_removeSticky",value:function(t){var e=this.options.stickTo,n="top"===e,i={},o=(this.points?this.points[1]-this.points[0]:this.anchorHeight)-this.elemHeight,r=t?"top":"bottom";i[n?"marginTop":"marginBottom"]=0,i.bottom="auto",i.top=t?0:o,this.isStuck=!1,this.$element.removeClass("is-stuck is-at-".concat(e)).addClass("is-anchored is-at-".concat(r)).css(i).trigger("sticky.zf.unstuckfrom:".concat(r))}},{key:"_setSizes",value:function(t){this.canStick=a.MediaQuery.is(this.options.stickyOn),this.canStick||t&&"function"==typeof t&&t();var e=this.$container[0].getBoundingClientRect().width,n=window.getComputedStyle(this.$container[0]),i=parseInt(n["padding-left"],10),o=parseInt(n["padding-right"],10);if(this.$anchor&&this.$anchor.length?this.anchorHeight=this.$anchor[0].getBoundingClientRect().height:this._parsePoints(),this.$element.css({"max-width":"".concat(e-i-o,"px")}),this.options.dynamicHeight||!this.containerHeight){var r=this.$element[0].getBoundingClientRect().height||this.containerHeight;r="none"===this.$element.css("display")?0:r,this.$container.css("height",r),this.containerHeight=r}if(this.elemHeight=this.containerHeight,!this.isStuck&&this.$element.hasClass("is-at-bottom")){var s=(this.points?this.points[1]-this.$container.offset().top:this.anchorHeight)-this.elemHeight;this.$element.css("top",s)}this._setBreakPoints(this.containerHeight,(function(){t&&"function"==typeof t&&t()}))}},{key:"_setBreakPoints",value:function(t,e){if(!this.canStick){if(!e||"function"!=typeof e)return!1;e()}var n=p(this.options.marginTop),i=p(this.options.marginBottom),o=this.points?this.points[0]:this.$anchor.offset().top,r=this.points?this.points[1]:o+this.anchorHeight,s=window.innerHeight;"top"===this.options.stickTo?(o-=n,r-=t+n):"bottom"===this.options.stickTo&&(o-=s-(t+i),r-=s-i),this.topPoint=o,this.bottomPoint=r,e&&"function"==typeof e&&e()}},{key:"_destroy",value:function(){this._removeSticky(!0),this.$element.removeClass("".concat(this.options.stickyClass," is-anchored is-at-top")).css({height:"",top:"",bottom:"","max-width":""}).off("resizeme.zf.trigger").off("mutateme.zf.trigger"),this.$anchor&&this.$anchor.length&&this.$anchor.off("change.zf.sticky"),this.scrollListener&&o()(window).off(this.scrollListener),this.onLoadListener&&o()(window).off(this.onLoadListener),this.wasWrapped?this.$element.unwrap():this.$container.removeClass(this.options.containerClass).css({height:""})}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(r.Plugin);function p(t){return parseInt(window.getComputedStyle(document.body,null).fontSize,10)*t}h.defaults={container:"
              ",stickTo:"top",anchor:"",topAnchor:"",btmAnchor:"",marginTop:1,marginBottom:1,stickyOn:"medium",stickyClass:"sticky",containerClass:"sticky-container",dynamicHeight:!0,checkEvery:-1}},"./js/foundation.tabs.js":function(t,e,n){n.r(e),n.d(e,{Tabs:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js"),l=n("./js/foundation.util.imageLoader.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n=0?e.slice(1):e,i=n&&o()("#".concat(n)),r=e&&t.$element.find('[href$="'.concat(e,'"],[data-tabs-target="').concat(n,'"]')).first();if(i.length&&r.length){if(i&&i.length&&r&&r.length?t.selectTab(i,!0):t._collapse(),t.options.deepLinkSmudge){var s=t.$element.offset();o()("html, body").animate({scrollTop:s.top-t.options.deepLinkSmudgeOffset},t.options.deepLinkSmudgeDelay)}t.$element.trigger("deeplink.zf.tabs",[r,i])}},this.options.deepLink&&this._checkDeepLink(),this._events(),this._isInitializing=!1}},{key:"_events",value:function(){this._addKeyHandler(),this._addClickHandler(),this._setHeightMqHandler=null,this.options.matchHeight&&(this._setHeightMqHandler=this._setHeight.bind(this),o()(window).on("changed.zf.mediaquery",this._setHeightMqHandler)),this.options.deepLink&&o()(window).on("hashchange",this._checkDeepLink)}},{key:"_addClickHandler",value:function(){var t=this;this.$element.off("click.zf.tabs").on("click.zf.tabs",".".concat(this.options.linkClass),(function(e){e.preventDefault(),t._handleTabChange(o()(this))}))}},{key:"_addKeyHandler",value:function(){var t=this;this.$tabTitles.off("keydown.zf.tabs").on("keydown.zf.tabs",(function(e){if(9!==e.which){var n,i,r=o()(this),s=r.parent("ul").children("li");s.each((function(e){o()(this).is(r)&&(t.options.wrapOnKeys?(n=0===e?s.last():s.eq(e-1),i=e===s.length-1?s.first():s.eq(e+1)):(n=s.eq(Math.max(0,e-1)),i=s.eq(Math.min(e+1,s.length-1))))})),a.Keyboard.handleKey(e,"Tabs",{open:function(){r.find('[role="tab"]').focus(),t._handleTabChange(r)},previous:function(){n.find('[role="tab"]').focus(),t._handleTabChange(n)},next:function(){i.find('[role="tab"]').focus(),t._handleTabChange(i)},handled:function(){e.preventDefault()}})}}))}},{key:"_handleTabChange",value:function(t,e){if(t.hasClass("".concat(this.options.linkActiveClass)))this.options.activeCollapse&&this._collapse();else{var n=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass)),i=t.find('[role="tab"]'),o=i.attr("data-tabs-target"),r=o&&o.length?"#".concat(o):i[0].hash,s=this.$tabContent.find(r);this._collapseTab(n),this._openTab(t),this.options.deepLink&&!e&&(this.options.updateHistory?history.pushState({},"",r):history.replaceState({},"",r)),this.$element.trigger("change.zf.tabs",[t,s]),s.find("[data-mutate]").trigger("mutateme.zf.trigger")}}},{key:"_openTab",value:function(t){var e=t.find('[role="tab"]'),n=e.attr("data-tabs-target")||e[0].hash.slice(1),i=this.$tabContent.find("#".concat(n));t.addClass("".concat(this.options.linkActiveClass)),e.attr({"aria-selected":"true",tabindex:"0"}),i.addClass("".concat(this.options.panelActiveClass)).removeAttr("aria-hidden")}},{key:"_collapseTab",value:function(t){var e=t.removeClass("".concat(this.options.linkActiveClass)).find('[role="tab"]').attr({"aria-selected":"false",tabindex:-1});o()("#".concat(e.attr("aria-controls"))).removeClass("".concat(this.options.panelActiveClass)).attr({"aria-hidden":"true"})}},{key:"_collapse",value:function(){var t=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass));t.length&&(this._collapseTab(t),this.$element.trigger("collapse.zf.tabs",[t]))}},{key:"selectTab",value:function(t,e){var n,i;(n="object"===u(t)?t[0].id:t).indexOf("#")<0?i="#".concat(n):(i=n,n=n.slice(1));var o=this.$tabTitles.has('[href$="'.concat(i,'"],[data-tabs-target="').concat(n,'"]')).first();this._handleTabChange(o,e)}},{key:"_setHeight",value:function(){var t=0,e=this;this.$tabContent&&this.$tabContent.find(".".concat(this.options.panelClass)).css("min-height","").each((function(){var n=o()(this),i=n.hasClass("".concat(e.options.panelActiveClass));i||n.css({visibility:"hidden",display:"block"});var r=this.getBoundingClientRect().height;i||n.css({visibility:"",display:""}),t=r>t?r:t})).css("min-height","".concat(t,"px"))}},{key:"_destroy",value:function(){this.$element.find(".".concat(this.options.linkClass)).off(".zf.tabs").hide().end().find(".".concat(this.options.panelClass)).hide(),this.options.matchHeight&&null!=this._setHeightMqHandler&&o()(window).off("changed.zf.mediaquery",this._setHeightMqHandler),this.options.deepLink&&o()(window).off("hashchange",this._checkDeepLink),this.onLoadListener&&o()(window).off(this.onLoadListener)}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),p}(r.Plugin);h.defaults={deepLink:!1,deepLinkSmudge:!1,deepLinkSmudgeDelay:300,deepLinkSmudgeOffset:0,updateHistory:!1,autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,activeCollapse:!1,linkClass:"tabs-title",linkActiveClass:"is-active",panelClass:"tabs-panel",panelActiveClass:"is-active"}},"./js/foundation.toggler.js":function(t,e,n){n.r(e),n.d(e,{Toggler:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.motion.js"),s=n("./js/foundation.core.plugin.js"),a=n("./js/foundation.core.utils.js"),l=n("./js/foundation.util.triggers.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n").addClass(e).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:t})}},{key:"_setPosition",value:function(){c(d(v.prototype),"_setPosition",this).call(this,this.$element,this.template)}},{key:"show",value:function(){if("all"!==this.options.showOn&&!s.MediaQuery.is(this.options.showOn))return!1;this.template.css("visibility","hidden").show(),this._setPosition(),this.template.removeClass("top bottom left right").addClass(this.position),this.template.removeClass("align-top align-bottom align-left align-right align-center").addClass("align-"+this.alignment),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),this.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,(function(){})),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,(function(){t.isActive=!1,t.isClick=!1})),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var t=this,e="ontouchstart"in window||void 0!==window.ontouchstart,n=!1;e&&this.options.disableForTouch||(this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",(function(){t.isActive||(t.timeout=setTimeout((function(){t.show()}),t.options.hoverDelay))})).on("mouseleave.zf.tooltip",(0,r.ignoreMousedisappear)((function(){clearTimeout(t.timeout),(!n||t.isClick&&!t.options.clickOpen)&&t.hide()}))),e&&this.$element.on("tap.zf.tooltip touchend.zf.tooltip",(function(){t.isActive?t.hide():t.show()})),this.options.clickOpen?this.$element.on("mousedown.zf.tooltip",(function(){t.isClick||(t.isClick=!0,!t.options.disableHover&&t.$element.attr("tabindex")||t.isActive||t.show())})):this.$element.on("mousedown.zf.tooltip",(function(){t.isClick=!0})),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",(function(){if(n=!0,t.isClick)return t.options.clickOpen||(n=!1),!1;t.show()})).on("focusout.zf.tooltip",(function(){n=!1,t.isClick=!1,t.hide()})).on("resizeme.zf.trigger",(function(){t.isActive&&t._setPosition()})))}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"_destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tooltip").removeClass(this.options.triggerClass).removeClass("top right left bottom").removeAttr("aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box"),this.template.remove()}}])&&u(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(n("./js/foundation.positionable.js").Positionable);h.defaults={hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,disableForTouch:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,position:"auto",alignment:"auto",allowOverlap:!1,allowBottomOverlap:!1,vOffset:0,hOffset:0,tooltipHeight:14,tooltipWidth:12,allowHtml:!1}},"./js/foundation.util.box.js":function(t,e,n){n.r(e),n.d(e,{Box:function(){return i}});var i={ImNotTouchingYou:function(t,e,n,i,r){return 0===o(t,e,n,i,r)},OverlapArea:o,GetDimensions:r,GetExplicitOffsets:function(t,e,n,i,o,s,a){var l,u,c=r(t),f=e?r(e):null;if(null!==f){switch(n){case"top":l=f.offset.top-(c.height+o);break;case"bottom":l=f.offset.top+f.height+o;break;case"left":u=f.offset.left-(c.width+s);break;case"right":u=f.offset.left+f.width+s}switch(n){case"top":case"bottom":switch(i){case"left":u=f.offset.left+s;break;case"right":u=f.offset.left-c.width+f.width-s;break;case"center":u=a?s:f.offset.left+f.width/2-c.width/2+s}break;case"right":case"left":switch(i){case"bottom":l=f.offset.top-o+f.height-c.height;break;case"top":l=f.offset.top+o;break;case"center":l=f.offset.top+o+f.height/2-c.height/2}}}return{top:l,left:u}}};function o(t,e,n,i,o){var s,a,l,u,c=r(t);if(e){var f=r(e);a=f.height+f.offset.top-(c.offset.top+c.height),s=c.offset.top-f.offset.top,l=c.offset.left-f.offset.left,u=f.width+f.offset.left-(c.offset.left+c.width)}else a=c.windowDims.height+c.windowDims.offset.top-(c.offset.top+c.height),s=c.offset.top-c.windowDims.offset.top,l=c.offset.left-c.windowDims.offset.left,u=c.windowDims.width-(c.offset.left+c.width);return a=o?0:Math.min(a,0),s=Math.min(s,0),l=Math.min(l,0),u=Math.min(u,0),n?l+u:i?s+a:Math.sqrt(s*s+a*a+l*l+u*u)}function r(t){if((t=t.length?t[0]:t)===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var e=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),i=document.body.getBoundingClientRect(),o=window.pageYOffset,r=window.pageXOffset;return{width:e.width,height:e.height,offset:{top:e.top+o,left:e.left+r},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+r}},windowDims:{width:i.width,height:i.height,offset:{top:o,left:r}}}}},"./js/foundation.util.imageLoader.js":function(t,e,n){n.r(e),n.d(e,{onImagesLoaded:function(){return r}});var i=n("jquery"),o=n.n(i);function r(t,e){var n=t.length;function i(){0==--n&&e()}0===n&&e(),t.each((function(){if(this.complete&&void 0!==this.naturalWidth)i();else{var t=new Image,e="load.zf.images error.zf.images";o()(t).one(e,(function t(){o()(this).off(e,t),i()})),t.src=o()(this).attr("src")}}))}},"./js/foundation.util.keyboard.js":function(t,e,n){n.r(e),n.d(e,{Keyboard:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",35:"END",36:"HOME",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},a={};function l(t){return!!t&&t.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter((function(){return!(!o()(this).is(":visible")||o()(this).attr("tabindex")<0)})).sort((function(t,e){if(o()(t).attr("tabindex")===o()(e).attr("tabindex"))return 0;var n=parseInt(o()(t).attr("tabindex"),10),i=parseInt(o()(e).attr("tabindex"),10);return void 0===o()(t).attr("tabindex")&&i>0?1:void 0===o()(e).attr("tabindex")&&n>0?-1:0===n&&i>0?1:0===i&&n>0||ni?1:void 0}))}function u(t){var e=s[t.which||t.keyCode]||String.fromCharCode(t.which).toUpperCase();return e=e.replace(/\W+/,""),t.shiftKey&&(e="SHIFT_".concat(e)),t.ctrlKey&&(e="CTRL_".concat(e)),t.altKey&&(e="ALT_".concat(e)),e.replace(/_$/,"")}var c={keys:function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[t[n]]=t[n]);return e}(s),parseKey:u,handleKey:function(t,e,n){var i,s=a[e],l=this.parseKey(t);if(!s)return console.warn("Component not defined!");if(!0!==t.zfIsKeyHandled)if((i=n[(void 0===s.ltr?s:(0,r.rtl)()?o().extend({},s.ltr,s.rtl):o().extend({},s.rtl,s.ltr))[l]])&&"function"==typeof i){var u=i.apply();t.zfIsKeyHandled=!0,(n.handled||"function"==typeof n.handled)&&n.handled(u)}else(n.unhandled||"function"==typeof n.unhandled)&&n.unhandled()},findFocusable:l,register:function(t,e){a[t]=e},trapFocus:function(t){var e=l(t),n=e.eq(0),i=e.eq(-1);t.on("keydown.zf.trapfocus",(function(t){t.target===i[0]&&"TAB"===u(t)?(t.preventDefault(),n.focus()):t.target===n[0]&&"SHIFT_TAB"===u(t)&&(t.preventDefault(),i.focus())}))},releaseFocus:function(t){t.off("keydown.zf.trapfocus")}}},"./js/foundation.util.mediaQuery.js":function(t,e,n){n.r(e),n.d(e,{MediaQuery:function(){return a}});var i=n("jquery"),o=n.n(i);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n').appendTo(document.head);var t,e,n,i=o()(".foundation-mq").css("font-family");for(var r in n=void 0,n={},t="string"!=typeof(e=i)?n:(e=e.trim().slice(1,-1))?(n=e.split("&").reduce((function(t,e){var n=e.replace(/\+/g," ").split("="),i=n[0],o=n[1];return i=decodeURIComponent(i),o=void 0===o?null:decodeURIComponent(o),t.hasOwnProperty(i)?Array.isArray(t[i])?t[i].push(o):t[i]=[t[i],o]:t[i]=o,t}),{}),n):n,this.queries=[],t)t.hasOwnProperty(r)&&this.queries.push({name:r,value:"only screen and (min-width: ".concat(t[r],")")});this.current=this._getCurrentSize(),this._watcher()},_reInit:function(){this.isInitialized=!1,this._init()},atLeast:function(t){var e=this.get(t);return!!e&&window.matchMedia(e).matches},only:function(t){return t===this._getCurrentSize()},upTo:function(t){var e=this.next(t);return!e||!this.atLeast(e)},is:function(t){var e,n,i=(e=t.trim().split(" ").filter((function(t){return!!t.length})),n=2,function(t){if(Array.isArray(t))return t}(e)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,o,r,s,a=[],l=!0,u=!1;try{if(r=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=r.call(n)).done)&&(a.push(i.value),a.length!==e);l=!0);}catch(t){u=!0,o=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(u)throw o}}return a}}(e,n)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(t,e):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=i[0],r=i[1],a=void 0===r?"":r;if("only"===a)return this.only(o);if(!a||"up"===a)return this.atLeast(o);if("down"===a)return this.upTo(o);throw new Error('\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like " ", got "'.concat(t,'".\n '))},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var n=this.queries[e];if(t===n.name)return n.value}return null},next:function(t){var e=this,n=this.queries.findIndex((function(n){return e._getQueryName(n)===t}));if(-1===n)throw new Error('\n Unknown breakpoint "'.concat(t,'" passed to MediaQuery.next().\n Ensure it is present in your Sass "$breakpoints" setting.\n '));var i=this.queries[n+1];return i?i.name:null},_getQueryName:function(t){if("string"==typeof t)return t;if("object"===r(t))return t.name;throw new TypeError('\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got "'.concat(t,'" (').concat(r(t),")\n "))},_getCurrentSize:function(){for(var t,e=0;e1&&void 0!==arguments[1]?arguments[1]:"zf";t.attr("role","menubar"),t.find("a").attr({role:"menuitem"});var n=t.find("li").attr({role:"none"}),i="is-".concat(e,"-submenu"),r="".concat(i,"-item"),s="is-".concat(e,"-submenu-parent"),a="accordion"!==e;n.each((function(){var t=o()(this),n=t.children("ul");if(n.length){if(t.addClass(s),a){var l=t.children("a:first");l.attr({"aria-haspopup":!0,"aria-label":l.attr("aria-label")||l.text()}),"drilldown"===e&&t.attr({"aria-expanded":!1})}n.addClass("submenu ".concat(i)).attr({"data-submenu":"",role:"menubar"}),"drilldown"===e&&n.attr({"aria-hidden":!0})}t.parent("[data-submenu]").length&&t.addClass("is-submenu-item ".concat(r))}))},Burn:function(t,e){var n="is-".concat(e,"-submenu"),i="".concat(n,"-item"),o="is-".concat(e,"-submenu-parent");t.find(">li, > li > ul, .menu, .menu > li, [data-submenu] > li").removeClass("".concat(n," ").concat(i," ").concat(o," is-submenu-item submenu is-active")).removeAttr("data-submenu").css("display","")}}},"./js/foundation.util.timer.js":function(t,e,n){function i(t,e,n){var i,o,r=this,s=e.duration,a=Object.keys(t.data())[0]||"timer",l=-1;this.isPaused=!1,this.restart=function(){l=-1,clearTimeout(o),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(o),l=l<=0?s:l,t.data("paused",!1),i=Date.now(),o=setTimeout((function(){e.infinite&&r.restart(),n&&"function"==typeof n&&n()}),l),t.trigger("timerstart.zf.".concat(a))},this.pause=function(){this.isPaused=!0,clearTimeout(o),t.data("paused",!0);var e=Date.now();l-=e-i,t.trigger("timerpaused.zf.".concat(a))}}n.r(e),n.d(e,{Timer:function(){return i}})},"./js/foundation.util.touch.js":function(t,e,n){n.r(e),n.d(e,{Touch:function(){return f}});var i=n("jquery"),o=n.n(i);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function s(t,e){for(var n=0;n=o().spotSwipe.moveThreshold&&u<=o().spotSwipe.timeThreshold&&(e=i>0?"left":"right"),e&&(t.preventDefault(),p.apply(this,arguments),o()(this).trigger(o().Event("swipe",Object.assign({},t)),e).trigger(o().Event("swipe".concat(e),Object.assign({},t))))}}function m(t){1===t.touches.length&&(a=t.touches[0].pageX,c=t,d=!0,h=!1,l=(new Date).getTime(),this.addEventListener("touchmove",v,{passive:!0===o().spotSwipe.preventDefault}),this.addEventListener("touchend",p,!1))}function y(){this.addEventListener&&this.addEventListener("touchstart",m,{passive:!0})}var g=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.version="1.0.0",this.enabled="ontouchstart"in document.documentElement,this.preventDefault=!1,this.moveThreshold=75,this.timeThreshold=200,this._init()}var e,n;return e=t,(n=[{key:"_init",value:function(){o().event.special.swipe={setup:y},o().event.special.tap={setup:y},o().each(["left","up","down","right"],(function(){o().event.special["swipe".concat(this)]={setup:function(){o()(this).on("swipe",o().noop)}}}))}}])&&s(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();f.setupSpotSwipe=function(){o().spotSwipe=new g(o())},f.setupTouchHandler=function(){o().fn.addTouch=function(){this.each((function(e,n){o()(n).bind("touchstart touchmove touchend touchcancel",(function(e){t(e)}))}));var t=function(t){var e,n=t.changedTouches[0],i={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"}[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=new window.MouseEvent(i,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(e)}}},f.init=function(){void 0===o().spotSwipe&&(f.setupSpotSwipe(o()),f.setupTouchHandler(o()))}},"./js/foundation.util.triggers.js":function(t,e,n){n.r(e),n.d(e,{Triggers:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.motion.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var l=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e0&&e-1 in t)}function S(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}C.fn=C.prototype={jquery:_,constructor:C,length:0,toArray:function(){return a.call(this)},get:function(t){return null==t?a.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=C.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return C.each(this,t)},map:function(t){return this.pushStack(C.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return this.pushStack(a.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(C.grep(this,(function(t,e){return(e+1)%2})))},odd:function(){return this.pushStack(C.grep(this,(function(t,e){return e%2})))},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n+~]|"+P+")"+P+"*"),F=new RegExp(P+"|>"),N=new RegExp(M),B=new RegExp("^"+A+"$"),W={ID:new RegExp("^#("+A+")"),CLASS:new RegExp("^\\.("+A+")"),TAG:new RegExp("^("+A+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+M),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:new RegExp("^(?:"+x+")$","i"),needsContext:new RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},Q=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,G=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Y=/[+~]/,U=new RegExp("\\\\[\\da-fA-F]{1,6}"+P+"?|\\\\([^\\r\\n\\f])","g"),V=function(t,e){var n="0x"+t.slice(1)-65536;return e||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},X=function(){lt()},Z=dt((function(t){return!0===t.disabled&&S(t,"fieldset")}),{dir:"parentNode",next:"legend"});try{v.apply(r=a.call(D.childNodes),D.childNodes),r[D.childNodes.length].nodeType}catch(t){v={apply:function(t,e){L.apply(t,a.call(e))},call:function(t){L.apply(t,a.call(arguments,1))}}}function J(t,e,n,i){var o,r,s,a,u,c,h,p=e&&e.ownerDocument,g=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==g&&9!==g&&11!==g)return n;if(!i&&(lt(e),e=e||l,f)){if(11!==g&&(u=G.exec(t)))if(o=u[1]){if(9===g){if(!(s=e.getElementById(o)))return n;if(s.id===o)return v.call(n,s),n}else if(p&&(s=p.getElementById(o))&&J.contains(e,s)&&s.id===o)return v.call(n,s),n}else{if(u[2])return v.apply(n,e.getElementsByTagName(t)),n;if((o=u[3])&&e.getElementsByClassName)return v.apply(n,e.getElementsByClassName(o)),n}if(!(_[t+" "]||d&&d.test(t))){if(h=t,p=e,1===g&&(F.test(t)||I.test(t))){for((p=Y.test(t)&&at(e.parentNode)||e)==e&&m.scope||((a=e.getAttribute("id"))?a=C.escapeSelector(a):e.setAttribute("id",a=y)),r=(c=ct(t)).length;r--;)c[r]=(a?"#"+a:":scope")+" "+ft(c[r]);h=c.join(",")}try{return v.apply(n,p.querySelectorAll(h)),n}catch(e){_(t,!0)}finally{a===y&&e.removeAttribute("id")}}}return gt(t.replace(z,"$1"),e,n,i)}function tt(){var t=[];return function n(i,o){return t.push(i+" ")>e.cacheLength&&delete n[t.shift()],n[i+" "]=o}}function et(t){return t[y]=!0,t}function nt(t){var e=l.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function it(t){return function(e){return S(e,"input")&&e.type===t}}function ot(t){return function(e){return(S(e,"input")||S(e,"button"))&&e.type===t}}function rt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&Z(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function st(t){return et((function(e){return e=+e,et((function(n,i){for(var o,r=t([],n.length,e),s=r.length;s--;)n[o=r[s]]&&(n[o]=!(i[o]=n[o]))}))}))}function at(t){return t&&void 0!==t.getElementsByTagName&&t}function lt(t){var n,i=t?t.ownerDocument||t:D;return i!=l&&9===i.nodeType&&i.documentElement?(u=(l=i).documentElement,f=!C.isXMLDoc(l),p=u.matches||u.webkitMatchesSelector||u.msMatchesSelector,u.msMatchesSelector&&D!=l&&(n=l.defaultView)&&n.top!==n&&n.addEventListener("unload",X),m.getById=nt((function(t){return u.appendChild(t).id=C.expando,!l.getElementsByName||!l.getElementsByName(C.expando).length})),m.disconnectedMatch=nt((function(t){return p.call(t,"*")})),m.scope=nt((function(){return l.querySelectorAll(":scope")})),m.cssHas=nt((function(){try{return l.querySelector(":has(*,:jqfake)"),!1}catch(t){return!0}})),m.getById?(e.filter.ID=function(t){var e=t.replace(U,V);return function(t){return t.getAttribute("id")===e}},e.find.ID=function(t,e){if(void 0!==e.getElementById&&f){var n=e.getElementById(t);return n?[n]:[]}}):(e.filter.ID=function(t){var e=t.replace(U,V);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},e.find.ID=function(t,e){if(void 0!==e.getElementById&&f){var n,i,o,r=e.getElementById(t);if(r){if((n=r.getAttributeNode("id"))&&n.value===t)return[r];for(o=e.getElementsByName(t),i=0;r=o[i++];)if((n=r.getAttributeNode("id"))&&n.value===t)return[r]}return[]}}),e.find.TAG=function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):e.querySelectorAll(t)},e.find.CLASS=function(t,e){if(void 0!==e.getElementsByClassName&&f)return e.getElementsByClassName(t)},d=[],nt((function(t){var e;u.appendChild(t).innerHTML="",t.querySelectorAll("[selected]").length||d.push("\\["+P+"*(?:value|"+x+")"),t.querySelectorAll("[id~="+y+"-]").length||d.push("~="),t.querySelectorAll("a#"+y+"+*").length||d.push(".#.+[+~]"),t.querySelectorAll(":checked").length||d.push(":checked"),(e=l.createElement("input")).setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),u.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(e=l.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||d.push("\\["+P+"*name"+P+"*="+P+"*(?:''|\"\")")})),m.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),$=function(t,e){if(t===e)return s=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(1&(n=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!m.sortDetached&&e.compareDocumentPosition(t)===n?t===l||t.ownerDocument==D&&J.contains(D,t)?-1:e===l||e.ownerDocument==D&&J.contains(D,e)?1:o?c.call(o,t)-c.call(o,e):0:4&n?-1:1)},l):l}for(t in J.matches=function(t,e){return J(t,null,null,e)},J.matchesSelector=function(t,e){if(lt(t),f&&!_[e+" "]&&(!d||!d.test(e)))try{var n=p.call(t,e);if(n||m.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){_(e,!0)}return J(e,l,null,[t]).length>0},J.contains=function(t,e){return(t.ownerDocument||t)!=l&<(t),C.contains(t,e)},J.attr=function(t,n){(t.ownerDocument||t)!=l&<(t);var i=e.attrHandle[n.toLowerCase()],o=i&&h.call(e.attrHandle,n.toLowerCase())?i(t,n,!f):void 0;return void 0!==o?o:t.getAttribute(n)},J.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},C.uniqueSort=function(t){var e,n=[],i=0,r=0;if(s=!m.sortStable,o=!m.sortStable&&a.call(t,0),T.call(t,$),s){for(;e=t[r++];)e===t[r]&&(i=n.push(r));for(;i--;)E.call(t,n[i],1)}return o=null,t},C.fn.uniqueSort=function(){return this.pushStack(C.uniqueSort(a.apply(this)))},e=C.expr={cacheLength:50,createPseudo:et,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(U,V),t[3]=(t[3]||t[4]||t[5]||"").replace(U,V),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||J.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&J.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return W.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&N.test(n)&&(e=ct(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(U,V).toLowerCase();return"*"===t?function(){return!0}:function(t){return S(t,e)}},CLASS:function(t){var e=w[t+" "];return e||(e=new RegExp("(^|"+P+")"+t+"("+P+"|$)"))&&w(t,(function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")}))},ATTR:function(t,e,n){return function(i){var o=J.attr(i,t);return null==o?"!="===e:!e||(o+="","="===e?o===n:"!="===e?o!==n:"^="===e?n&&0===o.indexOf(n):"*="===e?n&&o.indexOf(n)>-1:"$="===e?n&&o.slice(-n.length)===n:"~="===e?(" "+o.replace(H," ")+" ").indexOf(n)>-1:"|="===e&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,n,i,o){var r="nth"!==t.slice(0,3),s="last"!==t.slice(-4),a="of-type"===e;return 1===i&&0===o?function(t){return!!t.parentNode}:function(e,n,l){var u,c,f,d,h,p=r!==s?"nextSibling":"previousSibling",v=e.parentNode,m=a&&e.nodeName.toLowerCase(),b=!l&&!a,w=!1;if(v){if(r){for(;p;){for(f=e;f=f[p];)if(a?S(f,m):1===f.nodeType)return!1;h=p="only"===t&&!h&&"nextSibling"}return!0}if(h=[s?v.firstChild:v.lastChild],s&&b){for(w=(d=(u=(c=v[y]||(v[y]={}))[t]||[])[0]===g&&u[1])&&u[2],f=d&&v.childNodes[d];f=++d&&f&&f[p]||(w=d=0)||h.pop();)if(1===f.nodeType&&++w&&f===e){c[t]=[g,d,w];break}}else if(b&&(w=d=(u=(c=e[y]||(e[y]={}))[t]||[])[0]===g&&u[1]),!1===w)for(;(f=++d&&f&&f[p]||(w=d=0)||h.pop())&&(!(a?S(f,m):1===f.nodeType)||!++w||(b&&((c=f[y]||(f[y]={}))[t]=[g,w]),f!==e)););return(w-=o)===i||w%i==0&&w/i>=0}}},PSEUDO:function(t,n){var i,o=e.pseudos[t]||e.setFilters[t.toLowerCase()]||J.error("unsupported pseudo: "+t);return o[y]?o(n):o.length>1?(i=[t,t,"",n],e.setFilters.hasOwnProperty(t.toLowerCase())?et((function(t,e){for(var i,r=o(t,n),s=r.length;s--;)t[i=c.call(t,r[s])]=!(e[i]=r[s])})):function(t){return o(t,0,i)}):o}},pseudos:{not:et((function(t){var e=[],n=[],i=yt(t.replace(z,"$1"));return i[y]?et((function(t,e,n,o){for(var r,s=i(t,null,o,[]),a=t.length;a--;)(r=s[a])&&(t[a]=!(e[a]=r))})):function(t,o,r){return e[0]=t,i(e,null,r,n),e[0]=null,!n.pop()}})),has:et((function(t){return function(e){return J(t,e).length>0}})),contains:et((function(t){return t=t.replace(U,V),function(e){return(e.textContent||C.text(e)).indexOf(t)>-1}})),lang:et((function(t){return B.test(t||"")||J.error("unsupported lang: "+t),t=t.replace(U,V).toLowerCase(),function(e){var n;do{if(n=f?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}})),target:function(t){var e=i.location&&i.location.hash;return e&&e.slice(1)===t.id},root:function(t){return t===u},focus:function(t){return t===function(){try{return l.activeElement}catch(t){}}()&&l.hasFocus()&&!!(t.type||t.href||~t.tabIndex)},enabled:rt(!1),disabled:rt(!0),checked:function(t){return S(t,"input")&&!!t.checked||S(t,"option")&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!e.pseudos.empty(t)},header:function(t){return K.test(t.nodeName)},input:function(t){return Q.test(t.nodeName)},button:function(t){return S(t,"input")&&"button"===t.type||S(t,"button")},text:function(t){var e;return S(t,"input")&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:st((function(){return[0]})),last:st((function(t,e){return[e-1]})),eq:st((function(t,e,n){return[n<0?n+e:n]})),even:st((function(t,e){for(var n=0;ne?e:n;--i>=0;)t.push(i);return t})),gt:st((function(t,e,n){for(var i=n<0?n+e:n;++i1?function(e,n,i){for(var o=t.length;o--;)if(!t[o](e,n,i))return!1;return!0}:t[0]}function pt(t,e,n,i,o){for(var r,s=[],a=0,l=t.length,u=null!=e;a-1&&(r[u]=!(s[u]=d))}}else h=pt(h===s?h.splice(y,h.length):h),o?o(null,s,h,l):v.apply(s,h)}))}function mt(t){for(var i,o,r,s=t.length,a=e.relative[t[0].type],l=a||e.relative[" "],u=a?1:0,f=dt((function(t){return t===i}),l,!0),d=dt((function(t){return c.call(i,t)>-1}),l,!0),h=[function(t,e,o){var r=!a&&(o||e!=n)||((i=e).nodeType?f(t,e,o):d(t,e,o));return i=null,r}];u1&&ht(h),u>1&&ft(t.slice(0,u-1).concat({value:" "===t[u-2].type?"*":""})).replace(z,"$1"),o,u0,r=t.length>0,s=function(s,a,u,c,d){var h,p,m,y=0,b="0",w=s&&[],k=[],j=n,_=s||r&&e.find.TAG("*",d),$=g+=null==j?1:Math.random()||.1,x=_.length;for(d&&(n=a==l||a||d);b!==x&&null!=(h=_[b]);b++){if(r&&h){for(p=0,a||h.ownerDocument==l||(lt(h),u=!f);m=t[p++];)if(m(h,a||l,u)){v.call(c,h);break}d&&(g=$)}o&&((h=!m&&h)&&y--,s&&w.push(h))}if(y+=b,o&&b!==y){for(p=0;m=i[p++];)m(w,k,a,u);if(s){if(y>0)for(;b--;)w[b]||k[b]||(k[b]=O.call(c));k=pt(k)}v.apply(c,k),d&&!s&&k.length>0&&y+i.length>1&&C.uniqueSort(c)}return d&&(g=$,n=j),w};return o?et(s):s}(s,r)),a.selector=t}return a}function gt(t,n,i,o){var r,s,a,l,u,c="function"==typeof t&&t,d=!o&&ct(t=c.selector||t);if(i=i||[],1===d.length){if((s=d[0]=d[0].slice(0)).length>2&&"ID"===(a=s[0]).type&&9===n.nodeType&&f&&e.relative[s[1].type]){if(!(n=(e.find.ID(a.matches[0].replace(U,V),n)||[])[0]))return i;c&&(n=n.parentNode),t=t.slice(s.shift().value.length)}for(r=W.needsContext.test(t)?0:s.length;r--&&(a=s[r],!e.relative[l=a.type]);)if((u=e.find[l])&&(o=u(a.matches[0].replace(U,V),Y.test(s[0].type)&&at(n.parentNode)||n))){if(s.splice(r,1),!(t=o.length&&ft(s)))return v.apply(i,o),i;break}}return(c||yt(t,d))(o,n,!f,i,!n||Y.test(t)&&at(n.parentNode)||n),i}ut.prototype=e.filters=e.pseudos,e.setFilters=new ut,m.sortStable=y.split("").sort($).join("")===y,lt(),m.sortDetached=nt((function(t){return 1&t.compareDocumentPosition(l.createElement("fieldset"))})),C.find=J,C.expr[":"]=C.expr.pseudos,C.unique=C.uniqueSort,J.compile=yt,J.select=gt,J.setDocument=lt,J.tokenize=ct,J.escape=C.escapeSelector,J.getText=C.text,J.isXML=C.isXMLDoc,J.selectors=C.expr,J.support=C.support,J.uniqueSort=C.uniqueSort}();var M=function(t,e,n){for(var i=[],o=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(o&&C(t).is(n))break;i.push(t)}return i},H=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},q=C.expr.match.needsContext,I=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function F(t,e,n){return y(e)?C.grep(t,(function(t,i){return!!e.call(t,i,t)!==n})):e.nodeType?C.grep(t,(function(t){return t===e!==n})):"string"!=typeof e?C.grep(t,(function(t){return c.call(e,t)>-1!==n})):C.filter(e,t,n)}C.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?C.find.matchesSelector(i,t)?[i]:[]:C.find.matches(t,C.grep(e,(function(t){return 1===t.nodeType})))},C.fn.extend({find:function(t){var e,n,i=this.length,o=this;if("string"!=typeof t)return this.pushStack(C(t).filter((function(){for(e=0;e1?C.uniqueSort(n):n},filter:function(t){return this.pushStack(F(this,t||[],!1))},not:function(t){return this.pushStack(F(this,t||[],!0))},is:function(t){return!!F(this,"string"==typeof t&&q.test(t)?C(t):t||[],!1).length}});var N,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(C.fn.init=function(t,e,n){var i,o;if(!t)return this;if(n=n||N,"string"==typeof t){if(!(i="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:B.exec(t))||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof C?e[0]:e,C.merge(this,C.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:b,!0)),I.test(i[1])&&C.isPlainObject(e))for(i in e)y(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(o=b.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):y(t)?void 0!==n.ready?n.ready(t):t(C):C.makeArray(t,this)}).prototype=C.fn,N=C(b);var W=/^(?:parents|prev(?:Until|All))/,Q={children:!0,contents:!0,next:!0,prev:!0};function K(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}C.fn.extend({has:function(t){var e=C(t,this),n=e.length;return this.filter((function(){for(var t=0;t-1:1===n.nodeType&&C.find.matchesSelector(n,t))){r.push(n);break}return this.pushStack(r.length>1?C.uniqueSort(r):r)},index:function(t){return t?"string"==typeof t?c.call(C(t),this[0]):c.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(C.uniqueSort(C.merge(this.get(),C(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),C.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return M(t,"parentNode")},parentsUntil:function(t,e,n){return M(t,"parentNode",n)},next:function(t){return K(t,"nextSibling")},prev:function(t){return K(t,"previousSibling")},nextAll:function(t){return M(t,"nextSibling")},prevAll:function(t){return M(t,"previousSibling")},nextUntil:function(t,e,n){return M(t,"nextSibling",n)},prevUntil:function(t,e,n){return M(t,"previousSibling",n)},siblings:function(t){return H((t.parentNode||{}).firstChild,t)},children:function(t){return H(t.firstChild)},contents:function(t){return null!=t.contentDocument&&s(t.contentDocument)?t.contentDocument:(S(t,"template")&&(t=t.content||t),C.merge([],t.childNodes))}},(function(t,e){C.fn[t]=function(n,i){var o=C.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(o=C.filter(i,o)),this.length>1&&(Q[t]||C.uniqueSort(o),W.test(t)&&o.reverse()),this.pushStack(o)}}));var G=/[^\x20\t\r\n\f]+/g;function Y(t){return t}function U(t){throw t}function V(t,e,n,i){var o;try{t&&y(o=t.promise)?o.call(t).done(e).fail(n):t&&y(o=t.then)?o.call(t,e,n):e.apply(void 0,[t].slice(i))}catch(t){n.apply(void 0,[t])}}C.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return C.each(t.match(G)||[],(function(t,n){e[n]=!0})),e}(t):C.extend({},t);var e,n,i,o,r=[],s=[],a=-1,l=function(){for(o=o||t.once,i=e=!0;s.length;a=-1)for(n=s.shift();++a-1;)r.splice(n,1),n<=a&&a--})),this},has:function(t){return t?C.inArray(t,r)>-1:r.length>0},empty:function(){return r&&(r=[]),this},disable:function(){return o=s=[],r=n="",this},disabled:function(){return!r},lock:function(){return o=s=[],n||e||(r=n=""),this},locked:function(){return!!o},fireWith:function(t,n){return o||(n=[t,(n=n||[]).slice?n.slice():n],s.push(n),e||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},C.extend({Deferred:function(t){var e=[["notify","progress",C.Callbacks("memory"),C.Callbacks("memory"),2],["resolve","done",C.Callbacks("once memory"),C.Callbacks("once memory"),0,"resolved"],["reject","fail",C.Callbacks("once memory"),C.Callbacks("once memory"),1,"rejected"]],n="pending",o={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},catch:function(t){return o.then(null,t)},pipe:function(){var t=arguments;return C.Deferred((function(n){C.each(e,(function(e,i){var o=y(t[i[4]])&&t[i[4]];r[i[1]]((function(){var t=o&&o.apply(this,arguments);t&&y(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[i[0]+"With"](this,o?[t]:arguments)}))})),t=null})).promise()},then:function(t,n,o){var r=0;function s(t,e,n,o){return function(){var a=this,l=arguments,u=function(){var i,u;if(!(t=r&&(n!==U&&(a=void 0,l=[i]),e.rejectWith(a,l))}};t?c():(C.Deferred.getErrorHook?c.error=C.Deferred.getErrorHook():C.Deferred.getStackHook&&(c.error=C.Deferred.getStackHook()),i.setTimeout(c))}}return C.Deferred((function(i){e[0][3].add(s(0,i,y(o)?o:Y,i.notifyWith)),e[1][3].add(s(0,i,y(t)?t:Y)),e[2][3].add(s(0,i,y(n)?n:U))})).promise()},promise:function(t){return null!=t?C.extend(t,o):o}},r={};return C.each(e,(function(t,i){var s=i[2],a=i[5];o[i[1]]=s.add,a&&s.add((function(){n=a}),e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),s.add(i[3].fire),r[i[0]]=function(){return r[i[0]+"With"](this===r?void 0:this,arguments),this},r[i[0]+"With"]=s.fireWith})),o.promise(r),t&&t.call(r,r),r},when:function(t){var e=arguments.length,n=e,i=Array(n),o=a.call(arguments),r=C.Deferred(),s=function(t){return function(n){i[t]=this,o[t]=arguments.length>1?a.call(arguments):n,--e||r.resolveWith(i,o)}};if(e<=1&&(V(t,r.done(s(n)).resolve,r.reject,!e),"pending"===r.state()||y(o[n]&&o[n].then)))return r.then();for(;n--;)V(o[n],s(n),r.reject);return r.promise()}});var X=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;C.Deferred.exceptionHook=function(t,e){i.console&&i.console.warn&&t&&X.test(t.name)&&i.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},C.readyException=function(t){i.setTimeout((function(){throw t}))};var Z=C.Deferred();function J(){b.removeEventListener("DOMContentLoaded",J),i.removeEventListener("load",J),C.ready()}C.fn.ready=function(t){return Z.then(t).catch((function(t){C.readyException(t)})),this},C.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--C.readyWait:C.isReady)||(C.isReady=!0,!0!==t&&--C.readyWait>0||Z.resolveWith(b,[C]))}}),C.ready.then=Z.then,"complete"===b.readyState||"loading"!==b.readyState&&!b.documentElement.doScroll?i.setTimeout(C.ready):(b.addEventListener("DOMContentLoaded",J),i.addEventListener("load",J));var tt=function(t,e,n,i,o,r,s){var a=0,l=t.length,u=null==n;if("object"===j(n))for(a in o=!0,n)tt(t,e,a,n[a],!0,r,s);else if(void 0!==i&&(o=!0,y(i)||(s=!0),u&&(s?(e.call(t,i),e=null):(u=e,e=function(t,e,n){return u.call(C(t),n)})),e))for(;a1,null,!0)},removeData:function(t){return this.each((function(){lt.remove(this,t)}))}}),C.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=at.get(t,e),n&&(!i||Array.isArray(n)?i=at.access(t,e,C.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=C.queue(t,e),i=n.length,o=n.shift(),r=C._queueHooks(t,e);"inprogress"===o&&(o=n.shift(),i--),o&&("fx"===e&&n.unshift("inprogress"),delete r.stop,o.call(t,(function(){C.dequeue(t,e)}),r)),!i&&r&&r.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return at.get(t,n)||at.access(t,n,{empty:C.Callbacks("once memory").add((function(){at.remove(t,[e+"queue",n])}))})}}),C.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]*)/i,St=/^$|^module$|\/(?:java|ecma)script/i;_t=b.createDocumentFragment().appendChild(b.createElement("div")),($t=b.createElement("input")).setAttribute("type","radio"),$t.setAttribute("checked","checked"),$t.setAttribute("name","t"),_t.appendChild($t),m.checkClone=_t.cloneNode(!0).cloneNode(!0).lastChild.checked,_t.innerHTML="",m.noCloneChecked=!!_t.cloneNode(!0).lastChild.defaultValue,_t.innerHTML="",m.option=!!_t.lastChild;var Ot={thead:[1,"","
              "],col:[2,"","
              "],tr:[2,"","
              "],td:[3,"","
              "],_default:[0,"",""]};function Tt(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&S(t,e)?C.merge([t],n):n}function Et(t,e){for(var n=0,i=t.length;n",""]);var Pt=/<|&#?\w+;/;function zt(t,e,n,i,o){for(var r,s,a,l,u,c,f=e.createDocumentFragment(),d=[],h=0,p=t.length;h-1)o&&o.push(r);else if(u=mt(r),s=Tt(f.appendChild(r),"script"),u&&Et(s),n)for(c=0;r=s[c++];)St.test(r.type||"")&&n.push(r);return f}var At=/^([^.]*)(?:\.(.+)|)/;function Rt(){return!0}function Dt(){return!1}function Lt(t,e,n,i,o,r){var s,a;if("object"==typeof e){for(a in"string"!=typeof n&&(i=i||n,n=void 0),e)Lt(t,a,n,i,e[a],r);return t}if(null==i&&null==o?(o=n,i=n=void 0):null==o&&("string"==typeof n?(o=i,i=void 0):(o=i,i=n,n=void 0)),!1===o)o=Dt;else if(!o)return t;return 1===r&&(s=o,o=function(t){return C().off(t),s.apply(this,arguments)},o.guid=s.guid||(s.guid=C.guid++)),t.each((function(){C.event.add(this,e,o,i,n)}))}function Mt(t,e,n){n?(at.set(t,e,!1),C.event.add(t,e,{namespace:!1,handler:function(t){var n,i=at.get(this,e);if(1&t.isTrigger&&this[e]){if(i)(C.event.special[e]||{}).delegateType&&t.stopPropagation();else if(i=a.call(arguments),at.set(this,e,i),this[e](),n=at.get(this,e),at.set(this,e,!1),i!==n)return t.stopImmediatePropagation(),t.preventDefault(),n}else i&&(at.set(this,e,C.event.trigger(i[0],i.slice(1),this)),t.stopPropagation(),t.isImmediatePropagationStopped=Rt)}})):void 0===at.get(t,e)&&C.event.add(t,e,Rt)}C.event={global:{},add:function(t,e,n,i,o){var r,s,a,l,u,c,f,d,h,p,v,m=at.get(t);if(rt(t))for(n.handler&&(n=(r=n).handler,o=r.selector),o&&C.find.matchesSelector(vt,o),n.guid||(n.guid=C.guid++),(l=m.events)||(l=m.events=Object.create(null)),(s=m.handle)||(s=m.handle=function(e){return void 0!==C&&C.event.triggered!==e.type?C.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(G)||[""]).length;u--;)h=v=(a=At.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),h&&(f=C.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=C.event.special[h]||{},c=C.extend({type:h,origType:v,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&C.expr.match.needsContext.test(o),namespace:p.join(".")},r),(d=l[h])||((d=l[h]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,i,p,s)||t.addEventListener&&t.addEventListener(h,s)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),o?d.splice(d.delegateCount++,0,c):d.push(c),C.event.global[h]=!0)},remove:function(t,e,n,i,o){var r,s,a,l,u,c,f,d,h,p,v,m=at.hasData(t)&&at.get(t);if(m&&(l=m.events)){for(u=(e=(e||"").match(G)||[""]).length;u--;)if(h=v=(a=At.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),h){for(f=C.event.special[h]||{},d=l[h=(i?f.delegateType:f.bindType)||h]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=r=d.length;r--;)c=d[r],!o&&v!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||i&&i!==c.selector&&("**"!==i||!c.selector)||(d.splice(r,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(t,c));s&&!d.length&&(f.teardown&&!1!==f.teardown.call(t,p,m.handle)||C.removeEvent(t,h,m.handle),delete l[h])}else for(h in l)C.event.remove(t,h+e[u],n,i,!0);C.isEmptyObject(l)&&at.remove(t,"handle events")}},dispatch:function(t){var e,n,i,o,r,s,a=new Array(arguments.length),l=C.event.fix(t),u=(at.get(this,"events")||Object.create(null))[l.type]||[],c=C.event.special[l.type]||{};for(a[0]=l,e=1;e=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(r=[],s={},n=0;n-1:C.find(o,this,null,[u]).length),s[o]&&r.push(i);r.length&&a.push({elem:u,handlers:r})}return u=this,l\s*$/g;function Ft(t,e){return S(t,"table")&&S(11!==e.nodeType?e:e.firstChild,"tr")&&C(t).children("tbody")[0]||t}function Nt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Bt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Wt(t,e){var n,i,o,r,s,a;if(1===e.nodeType){if(at.hasData(t)&&(a=at.get(t).events))for(o in at.remove(e,"handle events"),a)for(n=0,i=a[o].length;n1&&"string"==typeof p&&!m.checkClone&&qt.test(p))return t.each((function(o){var r=t.eq(o);v&&(e[0]=p.call(this,o,r.html())),Kt(r,e,n,i)}));if(d&&(r=(o=zt(e,t[0].ownerDocument,!1,t,i)).firstChild,1===o.childNodes.length&&(o=r),r||i)){for(a=(s=C.map(Tt(o,"script"),Nt)).length;f0&&Et(s,!l&&Tt(t,"script")),a},cleanData:function(t){for(var e,n,i,o=C.event.special,r=0;void 0!==(n=t[r]);r++)if(rt(n)){if(e=n[at.expando]){if(e.events)for(i in e.events)o[i]?C.event.remove(n,i):C.removeEvent(n,i,e.handle);n[at.expando]=void 0}n[lt.expando]&&(n[lt.expando]=void 0)}}}),C.fn.extend({detach:function(t){return Gt(this,t,!0)},remove:function(t){return Gt(this,t)},text:function(t){return tt(this,(function(t){return void 0===t?C.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)}))}),null,t,arguments.length)},append:function(){return Kt(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ft(this,t).appendChild(t)}))},prepend:function(){return Kt(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=Ft(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return Kt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return Kt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)}))},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(C.cleanData(Tt(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return C.clone(this,t,e)}))},html:function(t){return tt(this,(function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!Ht.test(t)&&!Ot[(xt.exec(t)||["",""])[1].toLowerCase()]){t=C.htmlPrefilter(t);try{for(;n=0&&(l+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-r-l-a-.5))||0),l+u}function ce(t,e,n){var i=Vt(t),o=(!m.boxSizingReliable()||n)&&"border-box"===C.css(t,"boxSizing",!1,i),r=o,s=Jt(t,e,i),a="offset"+e[0].toUpperCase()+e.slice(1);if(Yt.test(s)){if(!n)return s;s="auto"}return(!m.boxSizingReliable()&&o||!m.reliableTrDimensions()&&S(t,"tr")||"auto"===s||!parseFloat(s)&&"inline"===C.css(t,"display",!1,i))&&t.getClientRects().length&&(o="border-box"===C.css(t,"boxSizing",!1,i),(r=a in t)&&(s=t[a])),(s=parseFloat(s)||0)+ue(t,e,n||(o?"border":"content"),r,i,s)+"px"}function fe(t,e,n,i,o){return new fe.prototype.init(t,e,n,i,o)}C.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=Jt(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(t,e,n,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var o,r,s,a=ot(e),l=Ut.test(e),u=t.style;if(l||(e=oe(a)),s=C.cssHooks[e]||C.cssHooks[a],void 0===n)return s&&"get"in s&&void 0!==(o=s.get(t,!1,i))?o:u[e];"string"==(r=typeof n)&&(o=ht.exec(n))&&o[1]&&(n=bt(t,e,o),r="number"),null!=n&&n==n&&("number"!==r||l||(n+=o&&o[3]||(C.cssNumber[a]?"":"px")),m.clearCloneStyle||""!==n||0!==e.indexOf("background")||(u[e]="inherit"),s&&"set"in s&&void 0===(n=s.set(t,n,i))||(l?u.setProperty(e,n):u[e]=n))}},css:function(t,e,n,i){var o,r,s,a=ot(e);return Ut.test(e)||(e=oe(a)),(s=C.cssHooks[e]||C.cssHooks[a])&&"get"in s&&(o=s.get(t,!0,n)),void 0===o&&(o=Jt(t,e,i)),"normal"===o&&e in ae&&(o=ae[e]),""===n||n?(r=parseFloat(o),!0===n||isFinite(r)?r||0:o):o}}),C.each(["height","width"],(function(t,e){C.cssHooks[e]={get:function(t,n,i){if(n)return!re.test(C.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?ce(t,e,i):Xt(t,se,(function(){return ce(t,e,i)}))},set:function(t,n,i){var o,r=Vt(t),s=!m.scrollboxSize()&&"absolute"===r.position,a=(s||i)&&"border-box"===C.css(t,"boxSizing",!1,r),l=i?ue(t,e,i,a,r):0;return a&&s&&(l-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(r[e])-ue(t,e,"border",!1,r)-.5)),l&&(o=ht.exec(n))&&"px"!==(o[3]||"px")&&(t.style[e]=n,n=C.css(t,e)),le(0,n,l)}}})),C.cssHooks.marginLeft=te(m.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Jt(t,"marginLeft"))||t.getBoundingClientRect().left-Xt(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),C.each({margin:"",padding:"",border:"Width"},(function(t,e){C.cssHooks[t+e]={expand:function(n){for(var i=0,o={},r="string"==typeof n?n.split(" "):[n];i<4;i++)o[t+pt[i]+e]=r[i]||r[i-2]||r[0];return o}},"margin"!==t&&(C.cssHooks[t+e].set=le)})),C.fn.extend({css:function(t,e){return tt(this,(function(t,e,n){var i,o,r={},s=0;if(Array.isArray(e)){for(i=Vt(t),o=e.length;s1)}}),C.Tween=fe,fe.prototype={constructor:fe,init:function(t,e,n,i,o,r){this.elem=t,this.prop=n,this.easing=o||C.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=i,this.unit=r||(C.cssNumber[n]?"":"px")},cur:function(){var t=fe.propHooks[this.prop];return t&&t.get?t.get(this):fe.propHooks._default.get(this)},run:function(t){var e,n=fe.propHooks[this.prop];return this.options.duration?this.pos=e=C.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):fe.propHooks._default.set(this),this}},fe.prototype.init.prototype=fe.prototype,fe.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=C.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){C.fx.step[t.prop]?C.fx.step[t.prop](t):1!==t.elem.nodeType||!C.cssHooks[t.prop]&&null==t.elem.style[oe(t.prop)]?t.elem[t.prop]=t.now:C.style(t.elem,t.prop,t.now+t.unit)}}},fe.propHooks.scrollTop=fe.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},C.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},C.fx=fe.prototype.init,C.fx.step={};var de,he,pe=/^(?:toggle|show|hide)$/,ve=/queueHooks$/;function me(){he&&(!1===b.hidden&&i.requestAnimationFrame?i.requestAnimationFrame(me):i.setTimeout(me,C.fx.interval),C.fx.tick())}function ye(){return i.setTimeout((function(){de=void 0})),de=Date.now()}function ge(t,e){var n,i=0,o={height:t};for(e=e?1:0;i<4;i+=2-e)o["margin"+(n=pt[i])]=o["padding"+n]=t;return e&&(o.opacity=o.width=t),o}function be(t,e,n){for(var i,o=(we.tweeners[e]||[]).concat(we.tweeners["*"]),r=0,s=o.length;r1)},removeAttr:function(t){return this.each((function(){C.removeAttr(this,t)}))}}),C.extend({attr:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return void 0===t.getAttribute?C.prop(t,e,n):(1===r&&C.isXMLDoc(t)||(o=C.attrHooks[e.toLowerCase()]||(C.expr.match.bool.test(e)?ke:void 0)),void 0!==n?null===n?void C.removeAttr(t,e):o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:(t.setAttribute(e,n+""),n):o&&"get"in o&&null!==(i=o.get(t,e))?i:null==(i=C.find.attr(t,e))?void 0:i)},attrHooks:{type:{set:function(t,e){if(!m.radioValue&&"radio"===e&&S(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,i=0,o=e&&e.match(G);if(o&&1===t.nodeType)for(;n=o[i++];)t.removeAttribute(n)}}),ke={set:function(t,e,n){return!1===e?C.removeAttr(t,n):t.setAttribute(n,n),n}},C.each(C.expr.match.bool.source.match(/\w+/g),(function(t,e){var n=je[e]||C.find.attr;je[e]=function(t,e,i){var o,r,s=e.toLowerCase();return i||(r=je[s],je[s]=o,o=null!=n(t,e,i)?s:null,je[s]=r),o}}));var _e=/^(?:input|select|textarea|button)$/i,$e=/^(?:a|area)$/i;function Ce(t){return(t.match(G)||[]).join(" ")}function xe(t){return t.getAttribute&&t.getAttribute("class")||""}function Se(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(G)||[]}C.fn.extend({prop:function(t,e){return tt(this,C.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[C.propFix[t]||t]}))}}),C.extend({prop:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return 1===r&&C.isXMLDoc(t)||(e=C.propFix[e]||e,o=C.propHooks[e]),void 0!==n?o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:t[e]=n:o&&"get"in o&&null!==(i=o.get(t,e))?i:t[e]},propHooks:{tabIndex:{get:function(t){var e=C.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||$e.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),m.optSelected||(C.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),C.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){C.propFix[this.toLowerCase()]=this})),C.fn.extend({addClass:function(t){var e,n,i,o,r,s;return y(t)?this.each((function(e){C(this).addClass(t.call(this,e,xe(this)))})):(e=Se(t)).length?this.each((function(){if(i=xe(this),n=1===this.nodeType&&" "+Ce(i)+" "){for(r=0;r-1;)n=n.replace(" "+o+" "," ");s=Ce(n),i!==s&&this.setAttribute("class",s)}})):this:this.attr("class","")},toggleClass:function(t,e){var n,i,o,r,s=typeof t,a="string"===s||Array.isArray(t);return y(t)?this.each((function(n){C(this).toggleClass(t.call(this,n,xe(this),e),e)})):"boolean"==typeof e&&a?e?this.addClass(t):this.removeClass(t):(n=Se(t),this.each((function(){if(a)for(r=C(this),o=0;o-1)return!0;return!1}});var Oe=/\r/g;C.fn.extend({val:function(t){var e,n,i,o=this[0];return arguments.length?(i=y(t),this.each((function(n){var o;1===this.nodeType&&(null==(o=i?t.call(this,n,C(this).val()):t)?o="":"number"==typeof o?o+="":Array.isArray(o)&&(o=C.map(o,(function(t){return null==t?"":t+""}))),(e=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,o,"value")||(this.value=o))}))):o?(e=C.valHooks[o.type]||C.valHooks[o.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(o,"value"))?n:"string"==typeof(n=o.value)?n.replace(Oe,""):null==n?"":n:void 0}}),C.extend({valHooks:{option:{get:function(t){var e=C.find.attr(t,"value");return null!=e?e:Ce(C.text(t))}},select:{get:function(t){var e,n,i,o=t.options,r=t.selectedIndex,s="select-one"===t.type,a=s?null:[],l=s?r+1:o.length;for(i=r<0?l:s?r:0;i-1)&&(n=!0);return n||(t.selectedIndex=-1),r}}}}),C.each(["radio","checkbox"],(function(){C.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=C.inArray(C(t).val(),e)>-1}},m.checkOn||(C.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})}));var Te=i.location,Ee={guid:Date.now()},Pe=/\?/;C.parseXML=function(t){var e,n;if(!t||"string"!=typeof t)return null;try{e=(new i.DOMParser).parseFromString(t,"text/xml")}catch(t){}return n=e&&e.getElementsByTagName("parsererror")[0],e&&!n||C.error("Invalid XML: "+(n?C.map(n.childNodes,(function(t){return t.textContent})).join("\n"):t)),e};var ze=/^(?:focusinfocus|focusoutblur)$/,Ae=function(t){t.stopPropagation()};C.extend(C.event,{trigger:function(t,e,n,o){var r,s,a,l,u,c,f,d,p=[n||b],v=h.call(t,"type")?t.type:t,m=h.call(t,"namespace")?t.namespace.split("."):[];if(s=d=a=n=n||b,3!==n.nodeType&&8!==n.nodeType&&!ze.test(v+C.event.triggered)&&(v.indexOf(".")>-1&&(m=v.split("."),v=m.shift(),m.sort()),u=v.indexOf(":")<0&&"on"+v,(t=t[C.expando]?t:new C.Event(v,"object"==typeof t&&t)).isTrigger=o?2:3,t.namespace=m.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=n),e=null==e?[t]:C.makeArray(e,[t]),f=C.event.special[v]||{},o||!f.trigger||!1!==f.trigger.apply(n,e))){if(!o&&!f.noBubble&&!g(n)){for(l=f.delegateType||v,ze.test(l+v)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(n.ownerDocument||b)&&p.push(a.defaultView||a.parentWindow||i)}for(r=0;(s=p[r++])&&!t.isPropagationStopped();)d=s,t.type=r>1?l:f.bindType||v,(c=(at.get(s,"events")||Object.create(null))[t.type]&&at.get(s,"handle"))&&c.apply(s,e),(c=u&&s[u])&&c.apply&&rt(s)&&(t.result=c.apply(s,e),!1===t.result&&t.preventDefault());return t.type=v,o||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),e)||!rt(n)||u&&y(n[v])&&!g(n)&&((a=n[u])&&(n[u]=null),C.event.triggered=v,t.isPropagationStopped()&&d.addEventListener(v,Ae),n[v](),t.isPropagationStopped()&&d.removeEventListener(v,Ae),C.event.triggered=void 0,a&&(n[u]=a)),t.result}},simulate:function(t,e,n){var i=C.extend(new C.Event,n,{type:t,isSimulated:!0});C.event.trigger(i,null,e)}}),C.fn.extend({trigger:function(t,e){return this.each((function(){C.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var n=this[0];if(n)return C.event.trigger(t,e,n,!0)}});var Re=/\[\]$/,De=/\r?\n/g,Le=/^(?:submit|button|image|reset|file)$/i,Me=/^(?:input|select|textarea|keygen)/i;function He(t,e,n,i){var o;if(Array.isArray(e))C.each(e,(function(e,o){n||Re.test(t)?i(t,o):He(t+"["+("object"==typeof o&&null!=o?e:"")+"]",o,n,i)}));else if(n||"object"!==j(e))i(t,e);else for(o in e)He(t+"["+o+"]",e[o],n,i)}C.param=function(t,e){var n,i=[],o=function(t,e){var n=y(e)?e():e;i[i.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!C.isPlainObject(t))C.each(t,(function(){o(this.name,this.value)}));else for(n in t)He(n,t[n],e,o);return i.join("&")},C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=C.prop(this,"elements");return t?C.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!C(this).is(":disabled")&&Me.test(this.nodeName)&&!Le.test(t)&&(this.checked||!Ct.test(t))})).map((function(t,e){var n=C(this).val();return null==n?null:Array.isArray(n)?C.map(n,(function(t){return{name:e.name,value:t.replace(De,"\r\n")}})):{name:e.name,value:n.replace(De,"\r\n")}})).get()}});var qe=/%20/g,Ie=/#.*$/,Fe=/([?&])_=[^&]*/,Ne=/^(.*?):[ \t]*([^\r\n]*)$/gm,Be=/^(?:GET|HEAD)$/,We=/^\/\//,Qe={},Ke={},Ge="*/".concat("*"),Ye=b.createElement("a");function Ue(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var i,o=0,r=e.toLowerCase().match(G)||[];if(y(n))for(;i=r[o++];)"+"===i[0]?(i=i.slice(1)||"*",(t[i]=t[i]||[]).unshift(n)):(t[i]=t[i]||[]).push(n)}}function Ve(t,e,n,i){var o={},r=t===Ke;function s(a){var l;return o[a]=!0,C.each(t[a]||[],(function(t,a){var u=a(e,n,i);return"string"!=typeof u||r||o[u]?r?!(l=u):void 0:(e.dataTypes.unshift(u),s(u),!1)})),l}return s(e.dataTypes[0])||!o["*"]&&s("*")}function Xe(t,e){var n,i,o=C.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((o[n]?t:i||(i={}))[n]=e[n]);return i&&C.extend(!0,t,i),t}Ye.href=Te.href,C.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Te.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Te.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":C.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?Xe(Xe(t,C.ajaxSettings),e):Xe(C.ajaxSettings,t)},ajaxPrefilter:Ue(Qe),ajaxTransport:Ue(Ke),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};var n,o,r,s,a,l,u,c,f,d,h=C.ajaxSetup({},e),p=h.context||h,v=h.context&&(p.nodeType||p.jquery)?C(p):C.event,m=C.Deferred(),y=C.Callbacks("once memory"),g=h.statusCode||{},w={},k={},j="canceled",_={readyState:0,getResponseHeader:function(t){var e;if(u){if(!s)for(s={};e=Ne.exec(r);)s[e[1].toLowerCase()+" "]=(s[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=s[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return u?r:null},setRequestHeader:function(t,e){return null==u&&(t=k[t.toLowerCase()]=k[t.toLowerCase()]||t,w[t]=e),this},overrideMimeType:function(t){return null==u&&(h.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)_.always(t[_.status]);else for(e in t)g[e]=[g[e],t[e]];return this},abort:function(t){var e=t||j;return n&&n.abort(e),$(0,e),this}};if(m.promise(_),h.url=((t||h.url||Te.href)+"").replace(We,Te.protocol+"//"),h.type=e.method||e.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(G)||[""],null==h.crossDomain){l=b.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Ye.protocol+"//"+Ye.host!=l.protocol+"//"+l.host}catch(t){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=C.param(h.data,h.traditional)),Ve(Qe,h,e,_),u)return _;for(f in(c=C.event&&h.global)&&0==C.active++&&C.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Be.test(h.type),o=h.url.replace(Ie,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qe,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(Pe.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Fe,"$1"),d=(Pe.test(o)?"&":"?")+"_="+Ee.guid+++d),h.url=o+d),h.ifModified&&(C.lastModified[o]&&_.setRequestHeader("If-Modified-Since",C.lastModified[o]),C.etag[o]&&_.setRequestHeader("If-None-Match",C.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||e.contentType)&&_.setRequestHeader("Content-Type",h.contentType),_.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ge+"; q=0.01":""):h.accepts["*"]),h.headers)_.setRequestHeader(f,h.headers[f]);if(h.beforeSend&&(!1===h.beforeSend.call(p,_,h)||u))return _.abort();if(j="abort",y.add(h.complete),_.done(h.success),_.fail(h.error),n=Ve(Ke,h,e,_)){if(_.readyState=1,c&&v.trigger("ajaxSend",[_,h]),u)return _;h.async&&h.timeout>0&&(a=i.setTimeout((function(){_.abort("timeout")}),h.timeout));try{u=!1,n.send(w,$)}catch(t){if(u)throw t;$(-1,t)}}else $(-1,"No Transport");function $(t,e,s,l){var f,d,b,w,k,j=e;u||(u=!0,a&&i.clearTimeout(a),n=void 0,r=l||"",_.readyState=t>0?4:0,f=t>=200&&t<300||304===t,s&&(w=function(t,e,n){for(var i,o,r,s,a=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=t.mimeType||e.getResponseHeader("Content-Type"));if(i)for(o in a)if(a[o]&&a[o].test(i)){l.unshift(o);break}if(l[0]in n)r=l[0];else{for(o in n){if(!l[0]||t.converters[o+" "+l[0]]){r=o;break}s||(s=o)}r=r||s}if(r)return r!==l[0]&&l.unshift(r),n[r]}(h,_,s)),!f&&C.inArray("script",h.dataTypes)>-1&&C.inArray("json",h.dataTypes)<0&&(h.converters["text script"]=function(){}),w=function(t,e,n,i){var o,r,s,a,l,u={},c=t.dataTypes.slice();if(c[1])for(s in t.converters)u[s.toLowerCase()]=t.converters[s];for(r=c.shift();r;)if(t.responseFields[r]&&(n[t.responseFields[r]]=e),!l&&i&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=r,r=c.shift())if("*"===r)r=l;else if("*"!==l&&l!==r){if(!(s=u[l+" "+r]||u["* "+r]))for(o in u)if((a=o.split(" "))[1]===r&&(s=u[l+" "+a[0]]||u["* "+a[0]])){!0===s?s=u[o]:!0!==u[o]&&(r=a[0],c.unshift(a[1]));break}if(!0!==s)if(s&&t.throws)e=s(e);else try{e=s(e)}catch(t){return{state:"parsererror",error:s?t:"No conversion from "+l+" to "+r}}}return{state:"success",data:e}}(h,w,_,f),f?(h.ifModified&&((k=_.getResponseHeader("Last-Modified"))&&(C.lastModified[o]=k),(k=_.getResponseHeader("etag"))&&(C.etag[o]=k)),204===t||"HEAD"===h.type?j="nocontent":304===t?j="notmodified":(j=w.state,d=w.data,f=!(b=w.error))):(b=j,!t&&j||(j="error",t<0&&(t=0))),_.status=t,_.statusText=(e||j)+"",f?m.resolveWith(p,[d,j,_]):m.rejectWith(p,[_,j,b]),_.statusCode(g),g=void 0,c&&v.trigger(f?"ajaxSuccess":"ajaxError",[_,h,f?d:b]),y.fireWith(p,[_,j]),c&&(v.trigger("ajaxComplete",[_,h]),--C.active||C.event.trigger("ajaxStop")))}return _},getJSON:function(t,e,n){return C.get(t,e,n,"json")},getScript:function(t,e){return C.get(t,void 0,e,"script")}}),C.each(["get","post"],(function(t,e){C[e]=function(t,n,i,o){return y(n)&&(o=o||i,i=n,n=void 0),C.ajax(C.extend({url:t,type:e,dataType:o,data:n,success:i},C.isPlainObject(t)&&t))}})),C.ajaxPrefilter((function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")})),C._evalUrl=function(t,e,n){return C.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){C.globalEval(t,e,n)}})},C.fn.extend({wrapAll:function(t){var e;return this[0]&&(y(t)&&(t=t.call(this[0])),e=C(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map((function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t})).append(this)),this},wrapInner:function(t){return y(t)?this.each((function(e){C(this).wrapInner(t.call(this,e))})):this.each((function(){var e=C(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)}))},wrap:function(t){var e=y(t);return this.each((function(n){C(this).wrapAll(e?t.call(this,n):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){C(this).replaceWith(this.childNodes)})),this}}),C.expr.pseudos.hidden=function(t){return!C.expr.pseudos.visible(t)},C.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},C.ajaxSettings.xhr=function(){try{return new i.XMLHttpRequest}catch(t){}};var Ze={0:200,1223:204},Je=C.ajaxSettings.xhr();m.cors=!!Je&&"withCredentials"in Je,m.ajax=Je=!!Je,C.ajaxTransport((function(t){var e,n;if(m.cors||Je&&!t.crossDomain)return{send:function(o,r){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];for(s in t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest"),o)a.setRequestHeader(s,o[s]);e=function(t){return function(){e&&(e=n=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===t?a.abort():"error"===t?"number"!=typeof a.status?r(0,"error"):r(a.status,a.statusText):r(Ze[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=e(),n=a.onerror=a.ontimeout=e("error"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&i.setTimeout((function(){e&&n()}))},e=e("abort");try{a.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),C.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),C.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return C.globalEval(t),t}}}),C.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),C.ajaxTransport("script",(function(t){var e,n;if(t.crossDomain||t.scriptAttrs)return{send:function(i,o){e=C(" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              scylla.scylladb.com

              + +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/api-reference/groups/scylla.scylladb.com/nodeconfigs.html b/v1.13/api-reference/groups/scylla.scylladb.com/nodeconfigs.html new file mode 100644 index 00000000000..220715da210 --- /dev/null +++ b/v1.13/api-reference/groups/scylla.scylladb.com/nodeconfigs.html @@ -0,0 +1,2840 @@ + + + + + + + + + + + + + NodeConfig (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              NodeConfig (scylla.scylladb.com/v1alpha1)

              +
              +
              APIVersion: scylla.scylladb.com/v1alpha1
              +
              Kind: NodeConfig
              +
              PluralName: nodeconfigs
              +
              SingularName: nodeconfig
              +
              Scope: Cluster
              +
              ListKind: NodeConfigList
              +
              Served: true
              +
              Storage: true
              +
              +
              +

              Description

              +
              +
              +

              Specification

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              apiVersion

              string

              APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

              kind

              string

              Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

              metadata

              object

              spec

              object

              status

              object

              +
              +

              .metadata

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              disableOptimizations

              boolean

              disableOptimizations controls if nodes matching placement requirements are going to be optimized. Turning off optimizations on already optimized Nodes does not revert changes.

              localDiskSetup

              object

              localDiskSetup contains options of automatic local disk setup.

              placement

              object

              placement contains scheduling rules for NodeConfig Pods.

              +
              +
              +
              +

              .spec.localDiskSetup

              +
              +

              Description

              +

              localDiskSetup contains options of automatic local disk setup.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              filesystems

              array (object)

              filesystems is a list of filesystem configurations.

              loopDevices

              array (object)

              loops is a list of loop device configurations.

              mounts

              array (object)

              mounts is a list of mount configuration.

              raids

              array (object)

              raids is a list of raid configurations.

              +
              +
              +
              +

              .spec.localDiskSetup.filesystems[]

              +
              +

              Description

              +

              FilesystemConfiguration specifies filesystem configuration options.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              device

              string

              device is a path to the device where the desired filesystem should be created.

              type

              string

              type is a desired filesystem type.

              +
              +
              +
              +

              .spec.localDiskSetup.loopDevices[]

              +
              +

              Description

              +

              LoopDeviceConfiguration specifies loop device configuration options.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              imagePath

              string

              imagePath specifies path on host where backing image file for loop device should be located.

              name

              string

              name specifies the name of the symlink that will point to actual loop device, created under /dev/loops/.

              size

              size specifies the size of the loop device.

              +
              +
              +
              +

              .spec.localDiskSetup.mounts[]

              +
              +

              Description

              +

              MountConfiguration specifies mount configuration options.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              device

              string

              device is path to a device that should be mounted.

              fsType

              string

              fsType specifies the filesystem on the device.

              mountPoint

              string

              mountPoint is a path where the device should be mounted at.

              unsupportedOptions

              array (string)

              unsupportedOptions is a list of mount options used during device mounting. unsupported in this field name means that we won’t support all the available options passed down using this field.

              +
              +
              +
              +

              .spec.localDiskSetup.raids[]

              +
              +

              Description

              +

              RAIDConfiguration is a configuration of a raid array.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              RAID0

              object

              RAID0 specifies RAID0 options.

              name

              string

              name specifies the name of the raid device to be created under in /dev/md/.

              type

              string

              type is a type of raid array.

              +
              +
              +
              +

              .spec.localDiskSetup.raids[].RAID0

              +
              +

              Description

              +

              RAID0 specifies RAID0 options.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              devices

              object

              devices defines which devices constitute the raid array.

              +
              +
              +
              +

              .spec.localDiskSetup.raids[].RAID0.devices

              +
              +

              Description

              +

              devices defines which devices constitute the raid array.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              modelRegex

              string

              modelRegex is a regular expression filtering devices by their model name.

              nameRegex

              string

              nameRegex is a regular expression filtering devices by their name.

              +
              +
              +
              +

              .spec.placement

              +
              +

              Description

              +

              placement contains scheduling rules for NodeConfig Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              affinity

              object

              affinity is a group of affinity scheduling rules for NodeConfig Pods.

              nodeSelector

              object

              nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node.

              tolerations

              array (object)

              tolerations is a group of tolerations NodeConfig Pods are going to have.

              +
              +
              +
              +

              .spec.placement.affinity

              +
              +

              Description

              +

              affinity is a group of affinity scheduling rules for NodeConfig Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              nodeAffinity

              object

              Describes node affinity scheduling rules for the pod.

              podAffinity

              object

              Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

              podAntiAffinity

              object

              Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

              +
              +
              +
              +

              .spec.placement.affinity.nodeAffinity

              +
              +

              Description

              +

              Describes node affinity scheduling rules for the pod.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              object

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

              +
              +
              +
              +

              .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preference

              object

              A node selector term, associated with the corresponding weight.

              weight

              integer

              Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

              +
              +

              Description

              +

              A node selector term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              A list of node selector requirements by node’s labels.

              matchFields

              array (object)

              A list of node selector requirements by node’s fields.

              +
              +
              +
              +

              .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

              +
              +

              Description

              +

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              nodeSelectorTerms

              array (object)

              Required. A list of node selector terms. The terms are ORed.

              +
              +
              +
              +

              .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

              +
              +

              Description

              +

              A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              A list of node selector requirements by node’s labels.

              matchFields

              array (object)

              A list of node selector requirements by node’s fields.

              +
              +
              +
              +

              .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity

              +
              +

              Description

              +

              Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              array (object)

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              podAffinityTerm

              object

              Required. A pod affinity term, associated with the corresponding weight.

              weight

              integer

              weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

              +
              +

              Description

              +

              Required. A pod affinity term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity

              +
              +

              Description

              +

              Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              array (object)

              If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              podAffinityTerm

              object

              Required. A pod affinity term, associated with the corresponding weight.

              weight

              integer

              weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

              +
              +

              Description

              +

              Required. A pod affinity term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.placement.nodeSelector

              +
              +

              Description

              +

              nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.placement.tolerations[]

              +
              +

              Description

              +

              The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              effect

              string

              Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

              key

              string

              Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

              operator

              string

              Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

              tolerationSeconds

              integer

              TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

              value

              string

              Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

              +
              +
              +
              +

              .status

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              conditions

              array (object)

              conditions represents the latest available observations of current state.

              nodeStatuses

              array (object)

              nodeStatuses hold the status for each tuned node.

              observedGeneration

              integer

              observedGeneration indicates the most recent generation observed by the controller.

              +
              +
              +
              +

              .status.conditions[]

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              lastTransitionTime

              string

              lastTransitionTime is last time the condition transitioned from one status to another.

              message

              string

              message is a human-readable message indicating details about the transition.

              observedGeneration

              integer

              observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

              reason

              string

              reason is the reason for condition’s last transition.

              status

              string

              status represents the state of the condition, one of True, False, or Unknown.

              type

              string

              type is the type of the NodeConfig condition.

              +
              +
              +
              +

              .status.nodeStatuses[]

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              tunedContainers

              array (string)

              tunedNode

              boolean

              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/api-reference/groups/scylla.scylladb.com/scyllaclusters.html b/v1.13/api-reference/groups/scylla.scylladb.com/scyllaclusters.html new file mode 100644 index 00000000000..86a6cde5c86 --- /dev/null +++ b/v1.13/api-reference/groups/scylla.scylladb.com/scyllaclusters.html @@ -0,0 +1,7439 @@ + + + + + + + + + + + + + ScyllaCluster (scylla.scylladb.com/v1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              ScyllaCluster (scylla.scylladb.com/v1)

              +
              +
              APIVersion: scylla.scylladb.com/v1
              +
              Kind: ScyllaCluster
              +
              PluralName: scyllaclusters
              +
              SingularName: scyllacluster
              +
              Scope: Namespaced
              +
              ListKind: ScyllaClusterList
              +
              Served: true
              +
              Storage: true
              +
              +
              +

              Description

              +

              ScyllaCluster defines a Scylla cluster.

              +
              +
              +

              Specification

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              apiVersion

              string

              APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

              kind

              string

              Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

              metadata

              object

              spec

              object

              spec defines the desired state of this scylla cluster.

              status

              object

              status is the current status of this scylla cluster.

              +
              +

              .metadata

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec

              +
              +

              Description

              +

              spec defines the desired state of this scylla cluster.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              agentRepository

              string

              agentRepository is the repository to pull the agent image from.

              agentVersion

              string

              agentVersion indicates the version of Scylla Manager Agent to use.

              alternator

              object

              alternator designates this cluster an Alternator cluster.

              automaticOrphanedNodeCleanup

              boolean

              automaticOrphanedNodeCleanup controls if automatic orphan node cleanup should be performed.

              backups

              array (object)

              backups specifies backup tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored.

              cpuset

              boolean

              cpuset determines if the cluster will use cpu-pinning for max performance.

              datacenter

              object

              datacenter holds a specification of a datacenter.

              developerMode

              boolean

              developerMode determines if the cluster runs in developer-mode.

              dnsDomains

              array (string)

              dnsDomains is a list of DNS domains this cluster is reachable by. These domains are used when setting up the infrastructure, like certificates. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

              exposeOptions

              object

              exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

              externalSeeds

              array (string)

              externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as “seeds” parameter of seed-provider.

              forceRedeploymentReason

              string

              forceRedeploymentReason can be used to force a rolling update of all racks by providing a unique string.

              genericUpgrade

              object

              genericUpgrade allows to configure behavior of generic upgrade logic.

              imagePullSecrets

              array (object)

              imagePullSecrets is an optional list of references to secrets in the same namespace used for pulling Scylla and Agent images.

              minReadySeconds

              integer

              minReadySeconds is the minimum number of seconds for which a newly created ScyllaDB node should be ready for it to be considered available. When used to control load balanced traffic, this can give the load balancer in front of a node enough time to notice that the node is ready and start forwarding traffic in time. Because it all depends on timing, the order is not guaranteed and, if possible, you should use readinessGates instead. If not provided, Operator will determine this value.

              minTerminationGracePeriodSeconds

              integer

              minTerminationGracePeriodSeconds specifies minimum duration in seconds to wait before every drained node is terminated. This gives time to potential load balancer in front of a node to notice that node is not ready anymore and stop forwarding new requests. This applies only when node is terminated gracefully. If not provided, Operator will determine this value. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

              network

              object

              network holds the networking config.

              podMetadata

              object

              podMetadata controls shared metadata for all pods created based on this spec.

              readinessGates

              array (object)

              readinessGates specifies custom readiness gates that will be evaluated for every ScyllaDB Pod readiness. It’s projected into every ScyllaDB Pod as its readinessGate. Refer to upstream documentation to learn more about readiness gates.

              repairs

              array (object)

              repairs specify repair tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored.

              repository

              string

              repository is the image repository to pull the Scylla image from.

              scyllaArgs

              string

              scyllaArgs will be appended to Scylla binary during startup. This is supported from 4.2.0 Scylla version.

              sysctls

              array (string)

              sysctls holds the sysctl properties to be applied during initialization given as a list of key=value pairs. Example: fs.aio-max-nr=232323

              version

              string

              version is a version tag of Scylla to use.

              +
              +
              +
              +

              .spec.alternator

              +
              +

              Description

              +

              alternator designates this cluster an Alternator cluster.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              insecureDisableAuthorization

              boolean

              insecureDisableAuthorization disables Alternator authorization. If not specified, the authorization is enabled. For backwards compatibility the authorization is disabled when this field is not specified and a manual port is used.

              insecureEnableHTTP

              boolean

              insecureEnableHTTP enables serving Alternator traffic also on insecure HTTP port.

              port

              integer

              port is the port number used to bind the Alternator API. Deprecated: port is deprecated and may be ignored in the future. Please make sure to avoid using hostNetworking and work with standard Kubernetes concepts like Services.

              servingCertificate

              object

              servingCertificate references a TLS certificate for serving secure traffic.

              writeIsolation

              string

              writeIsolation indicates the isolation level.

              +
              +
              +
              +

              .spec.alternator.servingCertificate

              +
              +

              Description

              +

              servingCertificate references a TLS certificate for serving secure traffic.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              operatorManagedOptions

              object

              operatorManagedOptions specifies options for certificates manged by the operator.

              type

              string

              type determines the source of this certificate.

              userManagedOptions

              object

              userManagedOptions specifies options for certificates manged by users.

              +
              +
              +
              +

              .spec.alternator.servingCertificate.operatorManagedOptions

              +
              +

              Description

              +

              operatorManagedOptions specifies options for certificates manged by the operator.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              additionalDNSNames

              array (string)

              additionalDNSNames represents external DNS names that the certificates should be signed for.

              additionalIPAddresses

              array (string)

              additionalIPAddresses represents external IP addresses that the certificates should be signed for.

              +
              +
              +
              +

              .spec.alternator.servingCertificate.userManagedOptions

              +
              +

              Description

              +

              userManagedOptions specifies options for certificates manged by users.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              secretName

              string

              secretName references a kubernetes.io/tls type secret containing the TLS cert and key.

              +
              +
              +
              +

              .spec.backups[]

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              cron

              string

              cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s].

              dc

              array (string)

              dc is a list of datacenter glob patterns, e.g. ‘dc1,!otherdc*’ used to specify the DCs to include or exclude from backup.

              interval

              string

              interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead.

              keyspace

              array (string)

              keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

              location

              array (string)

              location is a list of backup locations in the format [<dc>:]<provider>:<name> ex. s3:my-bucket. The <dc>: part is optional and is only needed when different datacenters are being used to upload data to different locations. <name> must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden. The only supported storage <provider> at the moment are s3 and gcs.

              name

              string

              name specifies the name of a task.

              numRetries

              integer

              numRetries indicates how many times a scheduled task will be retried before failing.

              rateLimit

              array (string)

              rateLimit is a list of megabytes (MiB) per second rate limits expressed in the format [<dc>:]<limit>. The <dc>: part is optional and only needed when different datacenters need different upload limits. Set to 0 for no limit (default 100).

              retention

              integer

              retention is the number of backups which are to be stored.

              snapshotParallel

              array (string)

              snapshotParallel is a list of snapshot parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set, the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

              startDate

              string

              startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

              timezone

              string

              timezone specifies the timezone of cron field.

              uploadParallel

              array (string)

              uploadParallel is a list of upload parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

              +
              +
              +
              +

              .spec.datacenter

              +
              +

              Description

              +

              datacenter holds a specification of a datacenter.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              name is the name of the scylla datacenter. Used in the cassandra-rackdc.properties file.

              racks

              array (object)

              racks specify the racks in the datacenter.

              +
              +
              +
              +

              .spec.datacenter.racks[]

              +
              +

              Description

              +

              RackSpec is the desired state for a Scylla Rack.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              agentResources

              object

              agentResources specify the resources for the Agent container.

              agentVolumeMounts

              array (object)

              AgentVolumeMounts to be added to Agent container.

              members

              integer

              members is the number of Scylla instances in this rack.

              name

              string

              name is the name of the Scylla Rack. Used in the cassandra-rackdc.properties file.

              placement

              object

              placement describes restrictions for the nodes Scylla is scheduled on.

              resources

              object

              resources the Scylla container will use.

              scyllaAgentConfig

              string

              Scylla config map name to customize scylla manager agent

              scyllaConfig

              string

              Scylla config map name to customize scylla.yaml

              storage

              object

              storage describes the underlying storage that Scylla will consume.

              volumeMounts

              array (object)

              VolumeMounts to be added to Scylla container.

              volumes

              array (object)

              Volumes added to Scylla Pod.

              +
              +
              +
              +

              .spec.datacenter.racks[].agentResources

              +
              +

              Description

              +

              agentResources specify the resources for the Agent container.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              claims

              array (object)

              +
              Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

              This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

              +
              +
              +

              limits

              object

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              requests

              object

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +
              +

              .spec.datacenter.racks[].agentResources.claims[]

              +
              +

              Description

              +

              ResourceClaim references one entry in PodSpec.ResourceClaims.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

              +
              +
              +
              +

              .spec.datacenter.racks[].agentResources.limits

              +
              +

              Description

              +

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].agentResources.requests

              +
              +

              Description

              +

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].agentVolumeMounts[]

              +
              +

              Description

              +

              VolumeMount describes a mounting of a Volume within a container.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              mountPath

              string

              Path within the container at which the volume should be mounted. Must not contain ‘:’.

              mountPropagation

              string

              mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

              name

              string

              This must match the Name of a Volume.

              readOnly

              boolean

              Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

              subPath

              string

              Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

              subPathExpr

              string

              Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement

              +
              +

              Description

              +

              placement describes restrictions for the nodes Scylla is scheduled on.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              nodeAffinity

              object

              nodeAffinity describes node affinity scheduling rules for the pod.

              podAffinity

              object

              podAffinity describes pod affinity scheduling rules.

              podAntiAffinity

              object

              podAntiAffinity describes pod anti-affinity scheduling rules.

              tolerations

              array (object)

              tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.nodeAffinity

              +
              +

              Description

              +

              nodeAffinity describes node affinity scheduling rules for the pod.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              object

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preference

              object

              A node selector term, associated with the corresponding weight.

              weight

              integer

              Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

              +
              +

              Description

              +

              A node selector term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              A list of node selector requirements by node’s labels.

              matchFields

              array (object)

              A list of node selector requirements by node’s fields.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

              +
              +

              Description

              +

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              nodeSelectorTerms

              array (object)

              Required. A list of node selector terms. The terms are ORed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

              +
              +

              Description

              +

              A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              A list of node selector requirements by node’s labels.

              matchFields

              array (object)

              A list of node selector requirements by node’s fields.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity

              +
              +

              Description

              +

              podAffinity describes pod affinity scheduling rules.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              array (object)

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              podAffinityTerm

              object

              Required. A pod affinity term, associated with the corresponding weight.

              weight

              integer

              weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

              +
              +

              Description

              +

              Required. A pod affinity term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity

              +
              +

              Description

              +

              podAntiAffinity describes pod anti-affinity scheduling rules.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              array (object)

              If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              podAffinityTerm

              object

              Required. A pod affinity term, associated with the corresponding weight.

              weight

              integer

              weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

              +
              +

              Description

              +

              Required. A pod affinity term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].placement.tolerations[]

              +
              +

              Description

              +

              The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              effect

              string

              Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

              key

              string

              Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

              operator

              string

              Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

              tolerationSeconds

              integer

              TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

              value

              string

              Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

              +
              +
              +
              +

              .spec.datacenter.racks[].resources

              +
              +

              Description

              +

              resources the Scylla container will use.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              claims

              array (object)

              +
              Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

              This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

              +
              +
              +

              limits

              object

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              requests

              object

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +
              +

              .spec.datacenter.racks[].resources.claims[]

              +
              +

              Description

              +

              ResourceClaim references one entry in PodSpec.ResourceClaims.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

              +
              +
              +
              +

              .spec.datacenter.racks[].resources.limits

              +
              +

              Description

              +

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].resources.requests

              +
              +

              Description

              +

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].storage

              +
              +

              Description

              +

              storage describes the underlying storage that Scylla will consume.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              capacity

              string

              capacity describes the requested size of each persistent volume.

              metadata

              object

              metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

              storageClassName

              string

              storageClassName is the name of a storageClass to request.

              +
              +
              +
              +

              .spec.datacenter.racks[].storage.metadata

              +
              +

              Description

              +

              metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              annotations

              object

              annotations is a custom key value map that gets merged with managed object annotations.

              labels

              object

              labels is a custom key value map that gets merged with managed object labels.

              +
              +
              +
              +

              .spec.datacenter.racks[].storage.metadata.annotations

              +
              +

              Description

              +

              annotations is a custom key value map that gets merged with managed object annotations.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].storage.metadata.labels

              +
              +

              Description

              +

              labels is a custom key value map that gets merged with managed object labels.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].volumeMounts[]

              +
              +

              Description

              +

              VolumeMount describes a mounting of a Volume within a container.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              mountPath

              string

              Path within the container at which the volume should be mounted. Must not contain ‘:’.

              mountPropagation

              string

              mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

              name

              string

              This must match the Name of a Volume.

              readOnly

              boolean

              Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

              subPath

              string

              Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

              subPathExpr

              string

              Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[]

              +
              +

              Description

              +

              Volume represents a named volume in a pod that may be accessed by any container in the pod.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              awsElasticBlockStore

              object

              awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

              azureDisk

              object

              azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

              azureFile

              object

              azureFile represents an Azure File Service mount on the host and bind mount to the pod.

              cephfs

              object

              cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

              cinder

              object

              cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

              configMap

              object

              configMap represents a configMap that should populate this volume

              csi

              object

              csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

              downwardAPI

              object

              downwardAPI represents downward API about the pod that should populate this volume

              emptyDir

              object

              emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

              ephemeral

              object

              +
              ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

              Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

              +
              +
              +

              fc

              object

              fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

              flexVolume

              object

              flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

              flocker

              object

              flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

              gcePersistentDisk

              object

              gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

              gitRepo

              object

              gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

              glusterfs

              object

              glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

              hostPath

              object

              hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

              iscsi

              object

              iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

              name

              string

              name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

              nfs

              object

              nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

              persistentVolumeClaim

              object

              persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

              photonPersistentDisk

              object

              photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

              portworxVolume

              object

              portworxVolume represents a portworx volume attached and mounted on kubelets host machine

              projected

              object

              projected items for all in one resources secrets, configmaps, and downward API

              quobyte

              object

              quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

              rbd

              object

              rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

              scaleIO

              object

              scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

              secret

              object

              secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

              storageos

              object

              storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

              vsphereVolume

              object

              vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].awsElasticBlockStore

              +
              +

              Description

              +

              awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fsType

              string

              fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine

              partition

              integer

              partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty).

              readOnly

              boolean

              readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

              volumeID

              string

              volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].azureDisk

              +
              +

              Description

              +

              azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              cachingMode

              string

              cachingMode is the Host Caching mode: None, Read Only, Read Write.

              diskName

              string

              diskName is the Name of the data disk in the blob storage

              diskURI

              string

              diskURI is the URI of data disk in the blob storage

              fsType

              string

              fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

              kind

              string

              kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

              readOnly

              boolean

              readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].azureFile

              +
              +

              Description

              +

              azureFile represents an Azure File Service mount on the host and bind mount to the pod.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              readOnly

              boolean

              readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

              secretName

              string

              secretName is the name of secret that contains Azure Storage Account Name and Key

              shareName

              string

              shareName is the azure share Name

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].cephfs

              +
              +

              Description

              +

              cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              monitors

              array (string)

              monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

              path

              string

              path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /

              readOnly

              boolean

              readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

              secretFile

              string

              secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

              secretRef

              object

              secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

              user

              string

              user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].cephfs.secretRef

              +
              +

              Description

              +

              secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].cinder

              +
              +

              Description

              +

              cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fsType

              string

              fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

              readOnly

              boolean

              readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

              secretRef

              object

              secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

              volumeID

              string

              volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].cinder.secretRef

              +
              +

              Description

              +

              secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].configMap

              +
              +

              Description

              +

              configMap represents a configMap that should populate this volume

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              defaultMode

              integer

              defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

              items

              array (object)

              items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              optional

              boolean

              optional specify whether the ConfigMap or its keys must be defined

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].configMap.items[]

              +
              +

              Description

              +

              Maps a string key to a path within a volume.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the key to project.

              mode

              integer

              mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

              path

              string

              path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].csi

              +
              +

              Description

              +

              csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              driver

              string

              driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.

              fsType

              string

              fsType to mount. Ex. “ext4”, “xfs”, “ntfs”. If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.

              nodePublishSecretRef

              object

              nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

              readOnly

              boolean

              readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).

              volumeAttributes

              object

              volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef

              +
              +

              Description

              +

              nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].csi.volumeAttributes

              +
              +

              Description

              +

              volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].downwardAPI

              +
              +

              Description

              +

              downwardAPI represents downward API about the pod that should populate this volume

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              defaultMode

              integer

              Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

              items

              array (object)

              Items is a list of downward API volume file

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].downwardAPI.items[]

              +
              +

              Description

              +

              DownwardAPIVolumeFile represents information to create the file containing the pod field

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fieldRef

              object

              Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

              mode

              integer

              Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

              path

              string

              Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

              resourceFieldRef

              object

              Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef

              +
              +

              Description

              +

              Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              apiVersion

              string

              Version of the schema the FieldPath is written in terms of, defaults to “v1”.

              fieldPath

              string

              Path of the field to select in the specified API version.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef

              +
              +

              Description

              +

              Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              containerName

              string

              Container name: required for volumes, optional for env vars

              divisor

              Specifies the output format of the exposed resources, defaults to “1”

              resource

              string

              Required: resource to select

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].emptyDir

              +
              +

              Description

              +

              emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              medium

              string

              medium represents what type of storage medium should back this directory. The default is “” which means to use the node’s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

              sizeLimit

              sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral

              +
              +

              Description

              +
              +
              ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

              Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

              +
              +
              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              volumeClaimTemplate

              object

              +
              Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

              An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

              +
              +
              +
              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate

              +
              +

              Description

              +
              +
              Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

              An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

              +
              +
              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              metadata

              object

              May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

              spec

              object

              The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata

              +
              +

              Description

              +

              May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec

              +
              +

              Description

              +

              The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              accessModes

              array (string)

              accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

              dataSource

              object

              dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

              dataSourceRef

              object

              dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

              resources

              object

              resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

              selector

              object

              selector is a label query over volumes to consider for binding.

              storageClassName

              string

              storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

              volumeAttributesClassName

              string

              volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

              volumeMode

              string

              volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

              volumeName

              string

              volumeName is the binding reference to the PersistentVolume backing this claim.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource

              +
              +

              Description

              +

              dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              apiGroup

              string

              APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

              kind

              string

              Kind is the type of resource being referenced

              name

              string

              Name is the name of resource being referenced

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef

              +
              +

              Description

              +

              dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              apiGroup

              string

              APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

              kind

              string

              Kind is the type of resource being referenced

              name

              string

              Name is the name of resource being referenced

              namespace

              string

              Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources

              +
              +

              Description

              +

              resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              limits

              object

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              requests

              object

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits

              +
              +

              Description

              +

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests

              +
              +

              Description

              +

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector

              +
              +

              Description

              +

              selector is a label query over volumes to consider for binding.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].fc

              +
              +

              Description

              +

              fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fsType

              string

              fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine

              lun

              integer

              lun is Optional: FC target lun number

              readOnly

              boolean

              readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

              targetWWNs

              array (string)

              targetWWNs is Optional: FC target worldwide names (WWNs)

              wwids

              array (string)

              wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].flexVolume

              +
              +

              Description

              +

              flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              driver

              string

              driver is the name of the driver to use for this volume.

              fsType

              string

              fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. The default filesystem depends on FlexVolume script.

              options

              object

              options is Optional: this field holds extra command options if any.

              readOnly

              boolean

              readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

              secretRef

              object

              secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].flexVolume.options

              +
              +

              Description

              +

              options is Optional: this field holds extra command options if any.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].flexVolume.secretRef

              +
              +

              Description

              +

              secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].flocker

              +
              +

              Description

              +

              flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              datasetName

              string

              datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated

              datasetUUID

              string

              datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].gcePersistentDisk

              +
              +

              Description

              +

              gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fsType

              string

              fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine

              partition

              integer

              partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

              pdName

              string

              pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

              readOnly

              boolean

              readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].gitRepo

              +
              +

              Description

              +

              gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              directory

              string

              directory is the target directory name. Must not contain or start with ‘..’. If ‘.’ is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.

              repository

              string

              repository is the URL

              revision

              string

              revision is the commit hash for the specified revision.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].glusterfs

              +
              +

              Description

              +

              glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              endpoints

              string

              endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

              path

              string

              path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

              readOnly

              boolean

              readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].hostPath

              +
              +

              Description

              +

              hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              path

              string

              path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

              type

              string

              type for HostPath Volume Defaults to “” More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].iscsi

              +
              +

              Description

              +

              iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              chapAuthDiscovery

              boolean

              chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication

              chapAuthSession

              boolean

              chapAuthSession defines whether support iSCSI Session CHAP authentication

              fsType

              string

              fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine

              initiatorName

              string

              initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

              iqn

              string

              iqn is the target iSCSI Qualified Name.

              iscsiInterface

              string

              iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to ‘default’ (tcp).

              lun

              integer

              lun represents iSCSI Target Lun number.

              portals

              array (string)

              portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

              readOnly

              boolean

              readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

              secretRef

              object

              secretRef is the CHAP Secret for iSCSI target and initiator authentication

              targetPortal

              string

              targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].iscsi.secretRef

              +
              +

              Description

              +

              secretRef is the CHAP Secret for iSCSI target and initiator authentication

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].nfs

              +
              +

              Description

              +

              nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              path

              string

              path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

              readOnly

              boolean

              readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

              server

              string

              server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].persistentVolumeClaim

              +
              +

              Description

              +

              persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              claimName

              string

              claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

              readOnly

              boolean

              readOnly Will force the ReadOnly setting in VolumeMounts. Default false.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].photonPersistentDisk

              +
              +

              Description

              +

              photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fsType

              string

              fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

              pdID

              string

              pdID is the ID that identifies Photon Controller persistent disk

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].portworxVolume

              +
              +

              Description

              +

              portworxVolume represents a portworx volume attached and mounted on kubelets host machine

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fsType

              string

              fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”. Implicitly inferred to be “ext4” if unspecified.

              readOnly

              boolean

              readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

              volumeID

              string

              volumeID uniquely identifies a Portworx volume

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected

              +
              +

              Description

              +

              projected items for all in one resources secrets, configmaps, and downward API

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              defaultMode

              integer

              defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

              sources

              array (object)

              sources is the list of volume projections

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[]

              +
              +

              Description

              +

              Projection that may be projected along with other supported volume types

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              clusterTrustBundle

              object

              +
              ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

              Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

              +
              +
              +

              configMap

              object

              configMap information about the configMap data to project

              downwardAPI

              object

              downwardAPI information about the downwardAPI data to project

              secret

              object

              secret information about the secret data to project

              serviceAccountToken

              object

              serviceAccountToken is information about the serviceAccountToken data to project

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle

              +
              +

              Description

              +
              +
              ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

              Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

              +
              +
              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

              name

              string

              Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.

              optional

              boolean

              If true, don’t block pod startup if the referenced ClusterTrustBundle(s) aren’t available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.

              path

              string

              Relative path from the volume root to write the bundle.

              signerName

              string

              Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector

              +
              +

              Description

              +

              Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].configMap

              +
              +

              Description

              +

              configMap information about the configMap data to project

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              items

              array (object)

              items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              optional

              boolean

              optional specify whether the ConfigMap or its keys must be defined

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]

              +
              +

              Description

              +

              Maps a string key to a path within a volume.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the key to project.

              mode

              integer

              mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

              path

              string

              path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI

              +
              +

              Description

              +

              downwardAPI information about the downwardAPI data to project

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              items

              array (object)

              Items is a list of DownwardAPIVolume file

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]

              +
              +

              Description

              +

              DownwardAPIVolumeFile represents information to create the file containing the pod field

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fieldRef

              object

              Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

              mode

              integer

              Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

              path

              string

              Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

              resourceFieldRef

              object

              Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef

              +
              +

              Description

              +

              Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              apiVersion

              string

              Version of the schema the FieldPath is written in terms of, defaults to “v1”.

              fieldPath

              string

              Path of the field to select in the specified API version.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef

              +
              +

              Description

              +

              Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              containerName

              string

              Container name: required for volumes, optional for env vars

              divisor

              Specifies the output format of the exposed resources, defaults to “1”

              resource

              string

              Required: resource to select

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].secret

              +
              +

              Description

              +

              secret information about the secret data to project

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              items

              array (object)

              items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              optional

              boolean

              optional field specify whether the Secret or its key must be defined

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]

              +
              +

              Description

              +

              Maps a string key to a path within a volume.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the key to project.

              mode

              integer

              mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

              path

              string

              path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken

              +
              +

              Description

              +

              serviceAccountToken is information about the serviceAccountToken data to project

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              audience

              string

              audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.

              expirationSeconds

              integer

              expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.

              path

              string

              path is the path relative to the mount point of the file to project the token into.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].quobyte

              +
              +

              Description

              +

              quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              group

              string

              group to map volume access to Default is no group

              readOnly

              boolean

              readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

              registry

              string

              registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

              tenant

              string

              tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin

              user

              string

              user to map volume access to Defaults to serivceaccount user

              volume

              string

              volume is a string that references an already created Quobyte volume by name.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].rbd

              +
              +

              Description

              +

              rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fsType

              string

              fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine

              image

              string

              image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

              keyring

              string

              keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

              monitors

              array (string)

              monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

              pool

              string

              pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

              readOnly

              boolean

              readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

              secretRef

              object

              secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

              user

              string

              user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].rbd.secretRef

              +
              +

              Description

              +

              secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].scaleIO

              +
              +

              Description

              +

              scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fsType

              string

              fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Default is “xfs”.

              gateway

              string

              gateway is the host address of the ScaleIO API Gateway.

              protectionDomain

              string

              protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.

              readOnly

              boolean

              readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

              secretRef

              object

              secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

              sslEnabled

              boolean

              sslEnabled Flag enable/disable SSL communication with Gateway, default false

              storageMode

              string

              storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.

              storagePool

              string

              storagePool is the ScaleIO Storage Pool associated with the protection domain.

              system

              string

              system is the name of the storage system as configured in ScaleIO.

              volumeName

              string

              volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].scaleIO.secretRef

              +
              +

              Description

              +

              secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].secret

              +
              +

              Description

              +

              secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              defaultMode

              integer

              defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

              items

              array (object)

              items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

              optional

              boolean

              optional field specify whether the Secret or its keys must be defined

              secretName

              string

              secretName is the name of the secret in the pod’s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].secret.items[]

              +
              +

              Description

              +

              Maps a string key to a path within a volume.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the key to project.

              mode

              integer

              mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

              path

              string

              path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].storageos

              +
              +

              Description

              +

              storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fsType

              string

              fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

              readOnly

              boolean

              readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

              secretRef

              object

              secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

              volumeName

              string

              volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.

              volumeNamespace

              string

              volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod’s namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to “default” if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].storageos.secretRef

              +
              +

              Description

              +

              secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              +
              +
              +
              +

              .spec.datacenter.racks[].volumes[].vsphereVolume

              +
              +

              Description

              +

              vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              fsType

              string

              fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

              storagePolicyID

              string

              storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

              storagePolicyName

              string

              storagePolicyName is the storage Policy Based Management (SPBM) profile name.

              volumePath

              string

              volumePath is the path that identifies vSphere volume vmdk

              +
              +
              +
              +

              .spec.exposeOptions

              +
              +

              Description

              +

              exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              broadcastOptions

              object

              BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

              cql

              object

              cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

              nodeService

              object

              nodeService controls properties of Service dedicated for each ScyllaCluster node.

              +
              +
              +
              +

              .spec.exposeOptions.broadcastOptions

              +
              +

              Description

              +

              BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              clients

              object

              clients specifies options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

              nodes

              object

              nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

              +
              +
              +
              +

              .spec.exposeOptions.broadcastOptions.clients

              +
              +

              Description

              +

              clients specifies options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              podIP

              object

              podIP holds options related to Pod IP address.

              type

              string

              type of the address that is broadcasted.

              +
              +
              +
              +

              .spec.exposeOptions.broadcastOptions.clients.podIP

              +
              +

              Description

              +

              podIP holds options related to Pod IP address.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              source

              string

              sourceType specifies source of the Pod IP.

              +
              +
              +
              +

              .spec.exposeOptions.broadcastOptions.nodes

              +
              +

              Description

              +

              nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              podIP

              object

              podIP holds options related to Pod IP address.

              type

              string

              type of the address that is broadcasted.

              +
              +
              +
              +

              .spec.exposeOptions.broadcastOptions.nodes.podIP

              +
              +

              Description

              +

              podIP holds options related to Pod IP address.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              source

              string

              sourceType specifies source of the Pod IP.

              +
              +
              +
              +

              .spec.exposeOptions.cql

              +
              +

              Description

              +

              cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              ingress

              object

              ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

              +
              +
              +
              +

              .spec.exposeOptions.cql.ingress

              +
              +

              Description

              +

              ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              annotations

              object

              annotations is a custom key value map that gets merged with managed object annotations.

              disabled

              boolean

              disabled controls if Ingress object creation is disabled. Unless disabled, there is an Ingress objects created for every Scylla node. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

              ingressClassName

              string

              ingressClassName specifies Ingress class name. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

              labels

              object

              labels is a custom key value map that gets merged with managed object labels.

              +
              +
              +
              +

              .spec.exposeOptions.cql.ingress.annotations

              +
              +

              Description

              +

              annotations is a custom key value map that gets merged with managed object annotations.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.exposeOptions.cql.ingress.labels

              +
              +

              Description

              +

              labels is a custom key value map that gets merged with managed object labels.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.exposeOptions.nodeService

              +
              +

              Description

              +

              nodeService controls properties of Service dedicated for each ScyllaCluster node.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              allocateLoadBalancerNodePorts

              boolean

              allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

              annotations

              object

              annotations is a custom key value map that gets merged with managed object annotations.

              externalTrafficPolicy

              string

              externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

              internalTrafficPolicy

              string

              internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

              labels

              object

              labels is a custom key value map that gets merged with managed object labels.

              loadBalancerClass

              string

              loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

              type

              string

              type is the Kubernetes Service type.

              +
              +
              +
              +

              .spec.exposeOptions.nodeService.annotations

              +
              +

              Description

              +

              annotations is a custom key value map that gets merged with managed object annotations.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.exposeOptions.nodeService.labels

              +
              +

              Description

              +

              labels is a custom key value map that gets merged with managed object labels.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.genericUpgrade

              +
              +

              Description

              +

              genericUpgrade allows to configure behavior of generic upgrade logic.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              failureStrategy

              string

              failureStrategy specifies which logic is executed when upgrade failure happens. Currently only Retry is supported.

              pollInterval

              string

              pollInterval specifies how often upgrade logic polls on state updates. Increasing this value should lower number of requests sent to apiserver, but it may affect overall time spent during upgrade. DEPRECATED.

              +
              +
              +
              +

              .spec.imagePullSecrets[]

              +
              +

              Description

              +

              LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

              +
              +
              +
              +

              .spec.network

              +
              +

              Description

              +

              network holds the networking config.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              dnsPolicy

              string

              dnsPolicy defines how a pod’s DNS will be configured.

              hostNetworking

              boolean

              hostNetworking determines if scylla uses the host’s network namespace. Setting this option avoids going through Kubernetes SDN and exposes scylla on node’s IP.

              +
              +
              +
              +

              .spec.podMetadata

              +
              +

              Description

              +

              podMetadata controls shared metadata for all pods created based on this spec.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              annotations

              object

              annotations is a custom key value map that gets merged with managed object annotations.

              labels

              object

              labels is a custom key value map that gets merged with managed object labels.

              +
              +
              +
              +

              .spec.podMetadata.annotations

              +
              +

              Description

              +

              annotations is a custom key value map that gets merged with managed object annotations.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.podMetadata.labels

              +
              +

              Description

              +

              labels is a custom key value map that gets merged with managed object labels.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.readinessGates[]

              +
              +

              Description

              +

              PodReadinessGate contains the reference to a pod condition

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              conditionType

              string

              ConditionType refers to a condition in the pod’s condition list with matching type.

              +
              +
              +
              +

              .spec.repairs[]

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              cron

              string

              cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s].

              dc

              array (string)

              dc is a list of datacenter glob patterns, e.g. ‘dc1’, ‘!otherdc*’ used to specify the DCs to include or exclude from backup.

              failFast

              boolean

              failFast indicates if a repair should be stopped on first error.

              host

              string

              host specifies a host to repair. If empty, all hosts are repaired.

              intensity

              string

              intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs). Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs. Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume. For Scylla clusters that do not support row-level repair, intensity can be a decimal between (0,1). In that case it specifies percent of shards that can be repaired in parallel on a repair master node. For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1.

              interval

              string

              interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead.

              keyspace

              array (string)

              keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

              name

              string

              name specifies the name of a task.

              numRetries

              integer

              numRetries indicates how many times a scheduled task will be retried before failing.

              parallel

              integer

              parallel is the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used. The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes. The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2.

              smallTableThreshold

              string

              smallTableThreshold enable small table optimization for tables of size lower than given threshold. Supported units [B, MiB, GiB, TiB].

              startDate

              string

              startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

              timezone

              string

              timezone specifies the timezone of cron field.

              +
              +
              +
              +

              .status

              +
              +

              Description

              +

              status is the current status of this scylla cluster.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              availableMembers

              integer

              availableMembers is the number of ScyllaDB members in all racks that are available.

              backups

              array (object)

              backups reflects status of backup tasks.

              conditions

              array (object)

              conditions hold conditions describing ScyllaCluster state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False.

              managerId

              string

              managerId contains ID under which cluster was registered in Scylla Manager.

              members

              integer

              members is the number of ScyllaDB members in all racks.

              observedGeneration

              integer

              observedGeneration is the most recent generation observed for this ScyllaCluster. It corresponds to the ScyllaCluster’s generation, which is updated on mutation by the API Server.

              rackCount

              integer

              rackCount is the number of ScyllaDB racks in this cluster.

              racks

              object

              racks reflect status of cluster racks.

              readyMembers

              integer

              readyMembers is the number of ScyllaDB members in all racks that are ready.

              repairs

              array (object)

              repairs reflects status of repair tasks.

              upgrade

              object

              upgrade reflects state of ongoing upgrade procedure.

              +
              +
              +
              +

              .status.backups[]

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              cron

              string

              cron reflects the task schedule as a cron expression.

              dc

              array (string)

              dc reflects a list of datacenter glob patterns, e.g. ‘dc1,!otherdc*’ used to specify the DCs to include or exclude from backup.

              error

              string

              error holds the task error, if any.

              id

              string

              id reflects identification number of the repair task.

              interval

              string

              interval reflects a task schedule interval.

              keyspace

              array (string)

              keyspace reflects a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

              location

              array (string)

              location reflects a list of backup locations in the format [<dc>:]<provider>:<name> ex. s3:my-bucket.

              name

              string

              name reflects the name of a task.

              numRetries

              integer

              numRetries reflects how many times a scheduled task will be retried before failing.

              rateLimit

              array (string)

              rateLimit reflects a list of megabytes (MiB) per second rate limits expressed in the format [<dc>:]<limit>.

              retention

              integer

              retention reflects the number of backups which are to be stored.

              snapshotParallel

              array (string)

              snapshotParallel reflects a list of snapshot parallelism limits in the format [<dc>:]<limit>.

              startDate

              string

              startDate reflects the task start date expressed in the RFC3339 format

              timezone

              string

              timezone reflects the timezone of cron field.

              uploadParallel

              array (string)

              uploadParallel reflects a list of upload parallelism limits in the format [<dc>:]<limit>.

              +
              +
              +
              +

              .status.conditions[]

              +
              +

              Description

              +
              +
              Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example,

              type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:”conditions,omitempty” patchStrategy:”merge” patchMergeKey:”type” protobuf:”bytes,1,rep,name=conditions” +// other fields }

              +
              +
              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              lastTransitionTime

              string

              lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

              message

              string

              message is a human readable message indicating details about the transition. This may be an empty string.

              observedGeneration

              integer

              observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

              reason

              string

              reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

              status

              string

              status of the condition, one of True, False, Unknown.

              type

              string

              type of condition in CamelCase or in foo.example.com/CamelCase. — Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

              +
              +
              +
              +

              .status.racks

              +
              +

              Description

              +

              racks reflect status of cluster racks.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .status.repairs[]

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              cron

              string

              cron reflects the task schedule as a cron expression.

              dc

              array (string)

              dc reflects a list of datacenter glob patterns, e.g. ‘dc1’, ‘!otherdc*’ used to specify the DCs to include or exclude from repair.

              error

              string

              error holds the task error, if any.

              failFast

              boolean

              failFast indicates if a repair should be stopped on first error.

              host

              string

              host reflects a host to repair.

              id

              string

              id reflects identification number of the repair task.

              intensity

              string

              intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1.

              interval

              string

              interval reflects a task schedule interval.

              keyspace

              array (string)

              keyspace reflects a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

              name

              string

              name reflects the name of a task.

              numRetries

              integer

              numRetries reflects how many times a scheduled task will be retried before failing.

              parallel

              integer

              parallel reflects the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas).

              smallTableThreshold

              string

              smallTableThreshold reflects whether small table optimization for tables, of size lower than given threshold, are enabled.

              startDate

              string

              startDate reflects the task start date expressed in the RFC3339 format

              timezone

              string

              timezone reflects the timezone of cron field.

              +
              +
              +
              +

              .status.upgrade

              +
              +

              Description

              +

              upgrade reflects state of ongoing upgrade procedure.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              currentNode

              string

              currentNode node under upgrade. DEPRECATED.

              currentRack

              string

              currentRack rack under upgrade. DEPRECATED.

              dataSnapshotTag

              string

              dataSnapshotTag is the snapshot tag of data keyspaces.

              fromVersion

              string

              fromVersion reflects from which version ScyllaCluster is being upgraded.

              state

              string

              state reflects current upgrade state.

              systemSnapshotTag

              string

              systemSnapshotTag is the snapshot tag of system keyspaces.

              toVersion

              string

              toVersion reflects to which version ScyllaCluster is being upgraded.

              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html b/v1.13/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html new file mode 100644 index 00000000000..3ec73df607e --- /dev/null +++ b/v1.13/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html @@ -0,0 +1,5297 @@ + + + + + + + + + + + + + ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)

              +
              +
              APIVersion: scylla.scylladb.com/v1alpha1
              +
              Kind: ScyllaDBMonitoring
              +
              PluralName: scylladbmonitorings
              +
              SingularName: scylladbmonitoring
              +
              Scope: Namespaced
              +
              ListKind: ScyllaDBMonitoringList
              +
              Served: true
              +
              Storage: true
              +
              +
              +

              Description

              +

              ScyllaDBMonitoring defines a monitoring instance for ScyllaDB clusters.

              +
              +
              +

              Specification

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              apiVersion

              string

              APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

              kind

              string

              Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

              metadata

              object

              spec

              object

              spec defines the desired state of this ScyllaDBMonitoring.

              status

              object

              status is the current status of this ScyllaDBMonitoring.

              +
              +

              .metadata

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec

              +
              +

              Description

              +

              spec defines the desired state of this ScyllaDBMonitoring.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              components

              object

              components hold additional config for the monitoring components in use.

              endpointsSelector

              object

              endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors.

              type

              string

              type determines the platform type of the monitoring setup.

              +
              +
              +
              +

              .spec.components

              +
              +

              Description

              +

              components hold additional config for the monitoring components in use.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              grafana

              object

              grafana holds configuration for the grafana instance, if any.

              prometheus

              object

              prometheus holds configuration for the prometheus instance, if any.

              +
              +
              +
              +

              .spec.components.grafana

              +
              +

              Description

              +

              grafana holds configuration for the grafana instance, if any.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              authentication

              object

              authentication hold the authentication options for accessing Grafana.

              exposeOptions

              object

              exposeOptions specifies options for exposing Grafana UI.

              placement

              object

              placement describes restrictions for the nodes Grafana is scheduled on.

              resources

              object

              resources the Grafana container will use.

              servingCertSecretName

              string

              servingCertSecretName is the name of the secret holding a serving cert-key pair. If not specified, the operator will create a self-signed CA that creates the default serving cert-key pair.

              +
              +
              +
              +

              .spec.components.grafana.authentication

              +
              +

              Description

              +

              authentication hold the authentication options for accessing Grafana.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              insecureEnableAnonymousAccess

              boolean

              insecureEnableAnonymousAccess allows access to Grafana without authentication.

              +
              +
              +
              +

              .spec.components.grafana.exposeOptions

              +
              +

              Description

              +

              exposeOptions specifies options for exposing Grafana UI.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              webInterface

              object

              webInterface specifies expose options for the user web interface.

              +
              +
              +
              +

              .spec.components.grafana.exposeOptions.webInterface

              +
              +

              Description

              +

              webInterface specifies expose options for the user web interface.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              ingress

              object

              ingress is an Ingress configuration options.

              +
              +
              +
              +

              .spec.components.grafana.exposeOptions.webInterface.ingress

              +
              +

              Description

              +

              ingress is an Ingress configuration options.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              annotations

              object

              annotations specifies custom annotations merged into every Ingress object.

              disabled

              boolean

              disabled controls if Ingress object creation is disabled.

              dnsDomains

              array (string)

              dnsDomains is a list of DNS domains this ingress is reachable by.

              ingressClassName

              string

              ingressClassName specifies Ingress class name.

              +
              +
              +
              +

              .spec.components.grafana.exposeOptions.webInterface.ingress.annotations

              +
              +

              Description

              +

              annotations specifies custom annotations merged into every Ingress object.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.grafana.placement

              +
              +

              Description

              +

              placement describes restrictions for the nodes Grafana is scheduled on.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              nodeAffinity

              object

              nodeAffinity describes node affinity scheduling rules for the pod.

              podAffinity

              object

              podAffinity describes pod affinity scheduling rules.

              podAntiAffinity

              object

              podAntiAffinity describes pod anti-affinity scheduling rules.

              tolerations

              array (object)

              tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

              +
              +
              +
              +

              .spec.components.grafana.placement.nodeAffinity

              +
              +

              Description

              +

              nodeAffinity describes node affinity scheduling rules for the pod.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              object

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

              +
              +
              +
              +

              .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preference

              object

              A node selector term, associated with the corresponding weight.

              weight

              integer

              Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

              +
              +

              Description

              +

              A node selector term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              A list of node selector requirements by node’s labels.

              matchFields

              array (object)

              A list of node selector requirements by node’s fields.

              +
              +
              +
              +

              .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

              +
              +

              Description

              +

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              nodeSelectorTerms

              array (object)

              Required. A list of node selector terms. The terms are ORed.

              +
              +
              +
              +

              .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

              +
              +

              Description

              +

              A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              A list of node selector requirements by node’s labels.

              matchFields

              array (object)

              A list of node selector requirements by node’s fields.

              +
              +
              +
              +

              .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity

              +
              +

              Description

              +

              podAffinity describes pod affinity scheduling rules.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              array (object)

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              podAffinityTerm

              object

              Required. A pod affinity term, associated with the corresponding weight.

              weight

              integer

              weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

              +
              +

              Description

              +

              Required. A pod affinity term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity

              +
              +

              Description

              +

              podAntiAffinity describes pod anti-affinity scheduling rules.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              array (object)

              If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              podAffinityTerm

              object

              Required. A pod affinity term, associated with the corresponding weight.

              weight

              integer

              weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

              +
              +

              Description

              +

              Required. A pod affinity term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.grafana.placement.tolerations[]

              +
              +

              Description

              +

              The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              effect

              string

              Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

              key

              string

              Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

              operator

              string

              Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

              tolerationSeconds

              integer

              TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

              value

              string

              Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

              +
              +
              +
              +

              .spec.components.grafana.resources

              +
              +

              Description

              +

              resources the Grafana container will use.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              claims

              array (object)

              +
              Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

              This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

              +
              +
              +

              limits

              object

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              requests

              object

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +
              +

              .spec.components.grafana.resources.claims[]

              +
              +

              Description

              +

              ResourceClaim references one entry in PodSpec.ResourceClaims.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

              +
              +
              +
              +

              .spec.components.grafana.resources.limits

              +
              +

              Description

              +

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.grafana.resources.requests

              +
              +

              Description

              +

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus

              +
              +

              Description

              +

              prometheus holds configuration for the prometheus instance, if any.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              exposeOptions

              object

              exposeOptions specifies options for exposing Prometheus UI.

              placement

              object

              placement describes restrictions for the nodes Prometheus is scheduled on.

              resources

              object

              resources the Prometheus container will use.

              storage

              object

              storage describes the underlying storage that Prometheus will consume.

              +
              +
              +
              +

              .spec.components.prometheus.exposeOptions

              +
              +

              Description

              +

              exposeOptions specifies options for exposing Prometheus UI.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              webInterface

              object

              webInterface specifies expose options for the user web interface.

              +
              +
              +
              +

              .spec.components.prometheus.exposeOptions.webInterface

              +
              +

              Description

              +

              webInterface specifies expose options for the user web interface.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              ingress

              object

              ingress is an Ingress configuration options.

              +
              +
              +
              +

              .spec.components.prometheus.exposeOptions.webInterface.ingress

              +
              +

              Description

              +

              ingress is an Ingress configuration options.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              annotations

              object

              annotations specifies custom annotations merged into every Ingress object.

              disabled

              boolean

              disabled controls if Ingress object creation is disabled.

              dnsDomains

              array (string)

              dnsDomains is a list of DNS domains this ingress is reachable by.

              ingressClassName

              string

              ingressClassName specifies Ingress class name.

              +
              +
              +
              +

              .spec.components.prometheus.exposeOptions.webInterface.ingress.annotations

              +
              +

              Description

              +

              annotations specifies custom annotations merged into every Ingress object.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.placement

              +
              +

              Description

              +

              placement describes restrictions for the nodes Prometheus is scheduled on.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              nodeAffinity

              object

              nodeAffinity describes node affinity scheduling rules for the pod.

              podAffinity

              object

              podAffinity describes pod affinity scheduling rules.

              podAntiAffinity

              object

              podAntiAffinity describes pod anti-affinity scheduling rules.

              tolerations

              array (object)

              tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

              +
              +
              +
              +

              .spec.components.prometheus.placement.nodeAffinity

              +
              +

              Description

              +

              nodeAffinity describes node affinity scheduling rules for the pod.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              object

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

              +
              +
              +
              +

              .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preference

              object

              A node selector term, associated with the corresponding weight.

              weight

              integer

              Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

              +
              +

              Description

              +

              A node selector term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              A list of node selector requirements by node’s labels.

              matchFields

              array (object)

              A list of node selector requirements by node’s fields.

              +
              +
              +
              +

              .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

              +
              +

              Description

              +

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              nodeSelectorTerms

              array (object)

              Required. A list of node selector terms. The terms are ORed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

              +
              +

              Description

              +

              A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              A list of node selector requirements by node’s labels.

              matchFields

              array (object)

              A list of node selector requirements by node’s fields.

              +
              +
              +
              +

              .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

              +
              +

              Description

              +

              A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              The label key that the selector applies to.

              operator

              string

              Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

              values

              array (string)

              An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity

              +
              +

              Description

              +

              podAffinity describes pod affinity scheduling rules.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              array (object)

              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              podAffinityTerm

              object

              Required. A pod affinity term, associated with the corresponding weight.

              weight

              integer

              weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

              +
              +

              Description

              +

              Required. A pod affinity term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity

              +
              +

              Description

              +

              podAntiAffinity describes pod anti-affinity scheduling rules.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              preferredDuringSchedulingIgnoredDuringExecution

              array (object)

              The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

              requiredDuringSchedulingIgnoredDuringExecution

              array (object)

              If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              podAffinityTerm

              object

              Required. A pod affinity term, associated with the corresponding weight.

              weight

              integer

              weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

              +
              +

              Description

              +

              Required. A pod affinity term, associated with the corresponding weight.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

              +
              +

              Description

              +

              Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              labelSelector

              object

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              matchLabelKeys

              array (string)

              MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              mismatchLabelKeys

              array (string)

              MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

              namespaceSelector

              object

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              namespaces

              array (string)

              namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

              topologyKey

              string

              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

              +
              +

              Description

              +

              A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

              +
              +

              Description

              +

              A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.placement.tolerations[]

              +
              +

              Description

              +

              The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              effect

              string

              Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

              key

              string

              Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

              operator

              string

              Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

              tolerationSeconds

              integer

              TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

              value

              string

              Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

              +
              +
              +
              +

              .spec.components.prometheus.resources

              +
              +

              Description

              +

              resources the Prometheus container will use.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              claims

              array (object)

              +
              Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

              This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

              +
              +
              +

              limits

              object

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              requests

              object

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +
              +

              .spec.components.prometheus.resources.claims[]

              +
              +

              Description

              +

              ResourceClaim references one entry in PodSpec.ResourceClaims.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              name

              string

              Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

              +
              +
              +
              +

              .spec.components.prometheus.resources.limits

              +
              +

              Description

              +

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.resources.requests

              +
              +

              Description

              +

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.storage

              +
              +

              Description

              +

              storage describes the underlying storage that Prometheus will consume.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              annotations

              object

              Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations

              labels

              object

              Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels

              volumeClaimTemplate

              object

              volumeClaimTemplates is a PVC template defining storage to be used by Prometheus.

              +
              +
              +
              +

              .spec.components.prometheus.storage.annotations

              +
              +

              Description

              +

              Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.storage.labels

              +
              +

              Description

              +

              Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.storage.volumeClaimTemplate

              +
              +

              Description

              +

              volumeClaimTemplates is a PVC template defining storage to be used by Prometheus.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              metadata

              object

              May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

              spec

              object

              The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

              +
              +
              +
              +

              .spec.components.prometheus.storage.volumeClaimTemplate.metadata

              +
              +

              Description

              +

              May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.storage.volumeClaimTemplate.spec

              +
              +

              Description

              +

              The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              accessModes

              array (string)

              accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

              dataSource

              object

              dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

              dataSourceRef

              object

              dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

              resources

              object

              resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

              selector

              object

              selector is a label query over volumes to consider for binding.

              storageClassName

              string

              storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

              volumeAttributesClassName

              string

              volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

              volumeMode

              string

              volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

              volumeName

              string

              volumeName is the binding reference to the PersistentVolume backing this claim.

              +
              +
              +
              +

              .spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource

              +
              +

              Description

              +

              dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              apiGroup

              string

              APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

              kind

              string

              Kind is the type of resource being referenced

              name

              string

              Name is the name of resource being referenced

              +
              +
              +
              +

              .spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef

              +
              +

              Description

              +

              dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              apiGroup

              string

              APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

              kind

              string

              Kind is the type of resource being referenced

              name

              string

              Name is the name of resource being referenced

              namespace

              string

              Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

              +
              +
              +
              +

              .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources

              +
              +

              Description

              +

              resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              limits

              object

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              requests

              object

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +
              +

              .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits

              +
              +

              Description

              +

              Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests

              +
              +

              Description

              +

              Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector

              +
              +

              Description

              +

              selector is a label query over volumes to consider for binding.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec.endpointsSelector

              +
              +

              Description

              +

              endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              matchExpressions

              array (object)

              matchExpressions is a list of label selector requirements. The requirements are ANDed.

              matchLabels

              object

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +
              +

              .spec.endpointsSelector.matchExpressions[]

              +
              +

              Description

              +

              A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              key

              string

              key is the label key that the selector applies to.

              operator

              string

              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

              values

              array (string)

              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

              +
              +
              +
              +

              .spec.endpointsSelector.matchLabels

              +
              +

              Description

              +

              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .status

              +
              +

              Description

              +

              status is the current status of this ScyllaDBMonitoring.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              conditions

              array (object)

              conditions hold conditions describing ScyllaDBMonitoring state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False.

              observedGeneration

              integer

              observedGeneration is the most recent generation observed for this ScyllaDBMonitoring. It corresponds to the ScyllaDBMonitoring’s generation, which is updated on mutation by the API Server.

              +
              +
              +
              +

              .status.conditions[]

              +
              +

              Description

              +
              +
              Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example,

              type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:”conditions,omitempty” patchStrategy:”merge” patchMergeKey:”type” protobuf:”bytes,1,rep,name=conditions” +// other fields }

              +
              +
              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              lastTransitionTime

              string

              lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

              message

              string

              message is a human readable message indicating details about the transition. This may be an empty string.

              observedGeneration

              integer

              observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

              reason

              string

              reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

              status

              string

              status of the condition, one of True, False, Unknown.

              type

              string

              type of condition in CamelCase or in foo.example.com/CamelCase. — Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html b/v1.13/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html new file mode 100644 index 00000000000..21c21d8a76c --- /dev/null +++ b/v1.13/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html @@ -0,0 +1,743 @@ + + + + + + + + + + + + + ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)

              +
              +
              APIVersion: scylla.scylladb.com/v1alpha1
              +
              Kind: ScyllaOperatorConfig
              +
              PluralName: scyllaoperatorconfigs
              +
              SingularName: scyllaoperatorconfig
              +
              Scope: Cluster
              +
              ListKind: ScyllaOperatorConfigList
              +
              Served: true
              +
              Storage: true
              +
              +
              +

              Description

              +

              ScyllaOperatorConfig describes the Scylla Operator configuration.

              +
              +
              +

              Specification

              + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Property

              Type

              Description

              apiVersion

              string

              APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

              kind

              string

              Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

              metadata

              object

              spec

              object

              spec defines the desired state of the operator.

              status

              object

              status defines the observed state of the operator.

              +
              +

              .metadata

              +
              +

              Description

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +

              .spec

              +
              +

              Description

              +

              spec defines the desired state of the operator.

              +
              +
              +

              Type

              +

              object

              + +++++ + + + + + + + + + + + + +

              Property

              Type

              Description

              scyllaUtilsImage

              string

              scyllaUtilsImage is a Scylla image used for running scylla utilities.

              +
              +
              +
              +

              .status

              +
              +

              Description

              +

              status defines the observed state of the operator.

              +
              +
              +

              Type

              +

              object

              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/api-reference/index.html b/v1.13/api-reference/index.html new file mode 100644 index 00000000000..2f1ba3f13e7 --- /dev/null +++ b/v1.13/api-reference/index.html @@ -0,0 +1,624 @@ + + + + + + + + + + + + + API Reference | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              API Reference

              +

              All APIs provided by Scylla Operator are defined using CRDs and adhere to Kubernetes API standards. You can find out how Kubernetes style REST APIs work on https://kubernetes.io/docs/reference/using-api/ and https://kubernetes.io/docs/reference/access-authn-authz/.

              +
              +

              API Groups and Kinds

              + +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/clients/alternator.html b/v1.13/clients/alternator.html new file mode 100644 index 00000000000..c608328d198 --- /dev/null +++ b/v1.13/clients/alternator.html @@ -0,0 +1,703 @@ + + + + + + + + + + + + + Using Alternator (DynamoDB) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Using Alternator (DynamoDB)

              +

              Alternator is a DynamoDB compatible API provided by ScyllaDB. +You can enable it on your ScyllaClusters by adding this section:

              +
              spec:
              +  alternator: {}
              +
              +
              +

              While this is enough to turn it on, there are more options available. +Please refer to our API documentation for details.

              +
              +

              Note

              +

              Contrary to CQL clients, Alternator clients don’t need to connect to every ScyllaDB node directly, nor discover the ScyllaDB node IP addresses. +Alternator protocol is based on HTTP and you can also expose the service “manually” with other networking concepts like Ingresses.

              +
              +
              +

              Credentials

              +

              Scylla Operator enables Alternator authorization by default. +Here is a quick example of how to get the token for accessing Alternator API. +To find out more, please refer to ScyllaDB Alternator documentation.

              +
              +

              Caution

              +

              The salted_hash is only present if password authentication for CQL is set up.

              +

              Always make sure your clusters are configured to use Authentication and Authorization.

              +
              +
              +

              Tip

              +

              You can find a quick example that enables Authentication and Authorization here.

              +
              +
              kubectl exec -it service/<sc-name>-client -c scylla -- cqlsh --user <cql_user> \
              +-e "SELECT salted_hash FROM system_auth.roles WHERE role = '<cql_user>'"
              +
              +
              +
              +
              +

              AWS CLI

              +

              This paragraph shows how to use aws dynamodb cli to remotely connect to ScyllaDB Alternator API.

              +
              +

              Note

              +

              This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured networking options differently, +or are using additional networking concepts like Ingresses, this address will need to be adjusted.

              +
              +
              +

              Caution

              +

              At the time of writing this document kubectl exec -i echoes passwords into the terminal. +It can be avoided by manually running kubectl exec -it and copying the output into a file / variable. +Because using kubectl exec with -t option merges standard and error outputs, we can’t use it in the scripts bellow.

              +

              See https://github.com/kubernetes/kubernetes/issues/123913 for more details.

              +
              +
              SCYLLACLUSTER_NAME=scylladb
              +CQL_USER=cassandra
              +
              +
              +
              SCYLLADB_EP="$( kubectl get "service/${SCYLLACLUSTER_NAME}-client" -o='jsonpath={.spec.clusterIP}' )"
              +AWS_ENDPOINT_URL_DYNAMODB="https://${SCYLLADB_EP}:8043"
              +export AWS_ENDPOINT_URL_DYNAMODB
              +
              +AWS_ACCESS_KEY_ID="${CQL_USER}"
              +export AWS_ACCESS_KEY_ID
              +AWS_SECRET_ACCESS_KEY="$( kubectl exec -i "service/${SCYLLACLUSTER_NAME}-client" -c scylla -- cqlsh --user ${CQL_USER} --no-color \
              +-e "SELECT salted_hash from system_auth.roles WHERE role = '${AWS_ACCESS_KEY_ID}';" \
              +| sed -e 's/\r//g' | sed -e '4q;d' | sed -E -e 's/^\s+//' )"
              +export AWS_SECRET_ACCESS_KEY
              +
              +AWS_CA_BUNDLE="$( mktemp )"
              +export AWS_CA_BUNDLE
              +kubectl get "configmap/${SCYLLACLUSTER_NAME}-alternator-local-serving-ca" --template='{{ index .data "ca-bundle.crt" }}' > "${AWS_CA_BUNDLE}"
              +
              +
              +

              Now we can use aws dynamodb cli without modifications.

              +
              aws dynamodb create-table --table-name MusicCollection --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
              +
              +
              +
              TABLEDESCRIPTION        2024-03-01T16:35:41+01:00       5c8aae70-d7e1-11ee-a99e-6f31aaf1d6d3    MusicCollection ACTIVE
              +ATTRIBUTEDEFINITIONS    Artist  S
              +ATTRIBUTEDEFINITIONS    SongTitle       S
              +KEYSCHEMA       Artist  HASH
              +KEYSCHEMA       SongTitle       RANGE
              +PROVISIONEDTHROUGHPUT   5       5
              +
              +
              +
              aws dynamodb list-tables
              +
              +
              +
              TABLENAMES      MusicCollection
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/clients/cql.html b/v1.13/clients/cql.html new file mode 100644 index 00000000000..d92c0577bfd --- /dev/null +++ b/v1.13/clients/cql.html @@ -0,0 +1,749 @@ + + + + + + + + + + + + + Using CQL | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + + + +
              +

              Using CQL

              +

              cqlsh is the CQL shell for ScyllaDB. You can learn more about it in ScyllaDB documentation.

              +
              +

              Authentication and Authorization

              +

              For security reasons, you should always enable Authentication and Authorization. +At this point, this needs to be done manually in ScyllaDB Config. +You can find an example configuration bellow:

              +
              apiVersion: v1
              +kind: ConfigMap
              +metadata:
              +  name: scylla-config
              +data:
              +  scylla.yaml: |
              +    authenticator: PasswordAuthenticator
              +    authorizer: CassandraAuthorizer
              +
              +
              +
              +
              +

              Embedded cqlsh (aka localhost)

              +

              Every ScyllaDB node has an integrated cqlsh available. Here is an example of how it can be used:

              +
              + +
              +
              kubectl exec -it service/<sc-name>-client -c scylla -- cqlsh -u <user>
              +
              +
              +
              + +
              +
              kubectl exec -it pod/<sc-name>-<datacenter>-<node-index> -c scylla -- cqlsh -u <user>
              +
              +
              +
              +
              +
              Password: 
              +Connected to scylla at 127.0.0.1:9042
              +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4]
              +Use HELP for help.
              +<user>@cqlsh>
              +
              +
              +
              +
              +

              Remote cqlsh

              +

              This paragraph shows how to use cqlsh to remotely connect to a ScyllaDB node. +It is strongly recommended to access CQL over TLS connections on port 9142 instead of unencrypted 9042. +Note that Scylla Operator sets up TLS certificates by default and makes them accessible in the Kubernetes API, +so the encrypted port 9142 works by default.

              +
              +

              Caution

              +

              In future releases the unencrypted port 9042 will be disabled by default, unless explicitly opted-in.

              +
              +
              +

              Caution

              +

              To avoid unnecessary complexity, the following example simplifies how the credentials file is created. +Please create the credentials file with your text editor and avoid your password leaking into your bash history or environment variables. +To store the configuration permanently, please adjust SCYLLADB_CONFIG variable to an empty folder of your choice.

              +
              +
              +

              Note

              +

              This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured the networking options differently, +you may need to adjust this endpoint. Please refer to discovery documentation page.

              +
              +
              SCYLLADB_CONFIG="$( mktemp -d )" 
              +
              +cat <<EOF > "${SCYLLADB_CONFIG}/credentials"
              +[PlainTextAuthProvider]
              +username = <your_username>
              +password = <your_password>
              +EOF
              +chmod 600 "${SCYLLADB_CONFIG}/credentials"
              +
              +SCYLLADB_DISCOVERY_EP="$( kubectl get service/<sc-name>-client -o='jsonpath={.spec.clusterIP}' )"
              +kubectl get configmap/<sc-name>-local-serving-ca -o='jsonpath={.data.ca-bundle\.crt}' > "${SCYLLADB_CONFIG}/serving-ca-bundle.crt"
              +kubectl get secret/<sc-name>-local-user-admin -o='jsonpath={.data.tls\.crt}' | base64 -d > "${SCYLLADB_CONFIG}/admin.crt"
              +kubectl get secret/<sc-name>-local-user-admin -o='jsonpath={.data.tls\.key}' | base64 -d > "${SCYLLADB_CONFIG}/admin.key"
              +
              +cat <<EOF > "${SCYLLADB_CONFIG}/cqlshrc"
              +[authentication]
              +credentials = ${SCYLLADB_CONFIG}/credentials
              +[connection]
              +hostname = ${SCYLLADB_DISCOVERY_EP}
              +port = 9142
              +ssl=true
              +factory = cqlshlib.ssl.ssl_transport_factory
              +[ssl]
              +validate=true
              +certfile=${SCYLLADB_CONFIG}/serving-ca-bundle.crt
              +usercert=${SCYLLADB_CONFIG}/admin.crt
              +userkey=${SCYLLADB_CONFIG}/admin.key
              +EOF
              +
              +
              +
              + +
              +
              cqlsh --cqlshrc="${SCYLLADB_CONFIG}/cqlshrc"
              +
              +
              +
              + +
              +
              podman run -it --rm --entrypoint=cqlsh \
              +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro,Z" \
              +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro,Z" \
              +docker.io/scylladb/scylla:5.4.3
              +
              +
              +
              + +
              +
              docker run -it --rm --entrypoint=cqlsh \
              +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro" \
              +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro" \
              +docker.io/scylladb/scylla:5.4.3
              +
              +
              +
              +
              +
              Connected to scylla at <CLUSTER_IP>:9142
              +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4]
              +Use HELP for help.
              +<your_username>@cqlsh> 
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/clients/discovery.html b/v1.13/clients/discovery.html new file mode 100644 index 00000000000..1d87f493a57 --- /dev/null +++ b/v1.13/clients/discovery.html @@ -0,0 +1,688 @@ + + + + + + + + + + + + + Discovering ScyllaDB Nodes | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Discovering ScyllaDB Nodes

              +
              +

              Preface

              +

              Outside the Kubernetes ecosystem, ScyllaDB nodes are usually set up on static IP addresses +and a fixed subset of them is configured as the initial contact points for ScyllaDB clients. +This has several disadvantages because this particular subset of nodes can be down at the time the client is (re)started, +or the nodes can be replaced and change their IP addresses. +The latter can be mitigated by using DNS and updating the records.

              +

              Scylla Operator allows setting up ScyllaDB in several network configurations, some of which are based on ephemeral IPs. +This makes solving the above-mentioned issues more pressing.

              +
              +
              +

              ScyllaDB Discovery Endpoint

              +

              For every ScyllaCluster, the operator will set up a Kubernetes Service (an internal load balancer) selecting all ScyllaDB nodes +and the internal Kubernetes controllers make sure to continuously update its endpoints with a subset of ScyllaDB nodes that are ready. +Because of that, you can always talk to ScyllaDB through this endpoint, as long as there are nodes to back it. +In case you are in the same Kubernetes cluster you can also use internal DNS for this service.

              +

              Clients can use this endpoint for the initial connection to reach one of the ScyllaDB nodes that are ready +and from there the drivers will automatically discover the per-node IP address for every ScyllaDB node that’s part of this cluster.

              +

              This service is called <sc-name>-client and in its default configuration it uses ClusterIP which is virtual and local to the Kubernetes cluster. +It can be configured to be backed by an external load balancer, be exposed through an Ingress, an additional hop or in other ways. +Depending on how you have configured the networking, use the appropriate IP address or DNS name for your client.

              +

              Here is an example of how the unmodified service looks like:

              +
              kubectl get scyllacluster/scylla service/scylla-client
              +
              +
              +
              NAME                                       READY   MEMBERS   RACKS   AVAILABLE   PROGRESSING   DEGRADED   AGE
              +scyllacluster.scylla.scylladb.com/scylla   1       1         1       True        True          True       10d
              +
              +NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                                                                                   AGE
              +service/scylla-client   ClusterIP   10.102.44.43   <none>        7000/TCP,7001/TCP,9042/TCP,9142/TCP,19042/TCP,19142/TCP,7199/TCP,10001/TCP,9180/TCP,5090/TCP,9100/TCP,9160/TCP,8043/TCP   10d
              +
              +
              +

              You can get only the ClusterIP using

              +
              kubectl get service/scylla-client -o='jsonpath={.spec.clusterIP}'
              +
              +
              +

              or use its DNS name (scylla-client.<sc-namespace>.svc).

              +
              +

              Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary

              +

              In case you are connecting from outside the Kubernetes cluster and using Pod IPs as your exposure type, you can expose just the <sc-name>-client service using an internal load balancer. +Having a stable contact point is especially important when using ephemeral Pod IPs. +Services configure internal load balancer using provider-specific annotations, so this may differ with your provider.

              +
              +

              Tip

              +

              To learn more about exposing ScyllaClusters, visit our dedicated documentation page.

              +
              +
              + +
              +
              kubectl patch service/<sc-name>-client -p '{"metadata": {"annotations": {"networking.gke.io/load-balancer-type": "Internal"}}, "spec": {"type": "LoadBalancer"}}'
              +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/<sc-name>-client
              +kubectl get service/<sc-name>-client -o='jsonpath={.status.loadBalancer.ingress[0].ip}'
              +
              +
              +
              + +
              +
              kubectl patch service/<sc-name>-client -p '{"metadata": {"annotations": {"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal", "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "tcp"}}, "spec": {"type": "LoadBalancer"}}'
              +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/<sc-name>-client
              +kubectl get service/<sc-name>-client -o='jsonpath={.status.loadBalancer.ingress[0].hostname}'
              +
              +
              +
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/clients/index.html b/v1.13/clients/index.html new file mode 100644 index 00000000000..652183fceab --- /dev/null +++ b/v1.13/clients/index.html @@ -0,0 +1,605 @@ + + + + + + + + + + + + + Using ScyllaDB APIs | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Using ScyllaDB APIs

              + +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/contributing.html b/v1.13/contributing.html new file mode 100644 index 00000000000..53495ec70c6 --- /dev/null +++ b/v1.13/contributing.html @@ -0,0 +1,765 @@ + + + + + + + + + + + + + Contributing to Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Contributing to Scylla Operator

              +
              +

              Prerequisites

              +

              To develop on scylla-operator, your environment must have the following:

              +
                +
              1. Go 1.13

                +
                  +
                • Make sure GOPATH is set to GOPATH=$HOME/go.

                • +
                +
              2. +
              3. Kustomize v3.1.0

              4. +
              5. kubebuilder v2.3.1

              6. +
              7. Docker

              8. +
              9. Git client installed

              10. +
              11. Github account

              12. +
              +

              To install all dependencies (Go, kustomize, kubebuilder, dep), simply run:

              +
              ./install-dependencies.sh
              +
              +
              +
              +
              +

              Initial Setup

              +
              +

              Create a Fork

              +

              From your browser navigate to http://github.com/scylladb/scylla-operator and click the “Fork” button.

              +
              +
              +

              Clone Your Fork

              +

              Open a console window and do the following:

              +
              # Create the scylla operator repo path
              +mkdir -p $GOPATH/src/github.com/scylladb
              +
              +# Navigate to the local repo path and clone your fork
              +cd $GOPATH/src/github.com/scylladb
              +
              +# Clone your fork, where <user> is your GitHub account name
              +git clone https://github.com/<user>/scylla-operator.git
              +
              +
              +
              +
              +

              Add Upstream Remote

              +

              First you will need to add the upstream remote to your local git:

              +
              # Add 'upstream' to the list of remotes
              +git remote add upstream https://github.com/scylladb/scylla-operator.git
              +
              +# Verify the remote was added
              +git remote -v
              +
              +
              +

              Now you should have at least origin and upstream remotes. You can also add other remotes to collaborate with other contributors.

              +
              +
              +
              +

              Development

              +

              To add a feature or to make a bug fix, you will need to create a branch in your fork and then submit a pull request (PR) from the branch.

              +
              +

              Building the project

              +

              You can build the project using the Makefile commands:

              +
                +
              • Open the Makefile and change the IMG environment variable to a repository you have access to.

              • +
              • Run make docker-push and wait for the image to be built and uploaded in your repo.

              • +
              +
              +
              +

              Create a Branch

              +

              From a console, create a new branch based on your fork and start working on it:

              +
              # Ensure all your remotes are up to date with the latest
              +git fetch --all
              +
              +# Create a new branch that is based off upstream master.  Give it a simple, but descriptive name.
              +# Generally it will be two to three words separated by dashes and without numbers.
              +git checkout -b feature-name upstream/master
              +
              +
              +

              Now you are ready to make the changes and commit to your branch.

              +
              +
              +

              Updating Your Fork

              +

              During the development lifecycle, you will need to keep up-to-date with the latest upstream master. As others on the team push changes, you will need to rebase your commits on top of the latest. This avoids unnecessary merge commits and keeps the commit history clean.

              +

              Whenever you need to update your local repository, you never want to merge. You always will rebase. Otherwise you will end up with merge commits in the git history. If you have any modified files, you will first have to stash them (git stash save -u "<some description>").

              +
              git fetch --all
              +git rebase upstream/master
              +
              +
              +

              Rebasing is a very powerful feature of Git. You need to understand how it works or else you will risk losing your work. Read about it in the Git documentation, it will be well worth it. In a nutshell, rebasing does the following:

              +
                +
              • “Unwinds” your local commits. Your local commits are removed temporarily from the history.

              • +
              • The latest changes from upstream are added to the history

              • +
              • Your local commits are re-applied one by one

              • +
              • If there are merge conflicts, you will be prompted to fix them before continuing. Read the output closely. It will tell you how to complete the rebase.

              • +
              • When done rebasing, you will see all of your commits in the history.

              • +
              +
              +
              +
              +

              Submitting a Pull Request

              +

              Once you have implemented the feature or bug fix in your branch, you will open a PR to the upstream repo. Before opening the PR ensure you have added unit tests, are passing the integration tests, cleaned your commit history, and have rebased on the latest upstream.

              +

              In order to open a pull request (PR) it is required to be up to date with the latest changes upstream. If other commits are pushed upstream before your PR is merged, you will also need to rebase again before it will be merged.

              +
              +

              Commit History

              +

              To prepare your branch to open a PR, you will need to have the minimal number of logical commits so we can maintain +a clean commit history. Most commonly a PR will include a single commit where all changes are squashed, although +sometimes there will be multiple logical commits.

              +
              # Inspect your commit history to determine if you need to squash commits
              +git log
              +
              +# Rebase the commits and edit, squash, or even reorder them as you determine will keep the history clean.
              +# In this example, the last 5 commits will be opened in the git rebase tool.
              +git rebase -i HEAD~5
              +
              +
              +

              Once your commit history is clean, ensure you have based on the latest upstream before you open the PR.

              +
              +
              +

              Commit messages

              +

              Please make the first line of your commit message a summary of the change that a user (not a developer) of Operator would like to read, +and prefix it with the most relevant directory of the change followed by a colon. +The changelog gets made by looking at just these first lines so make it good!

              +

              If you have more to say about the commit, then enter a blank line and carry on the description. +Remember to say why the change was needed - the commit itself shows what was changed.

              +

              Writing more is better than less. Comparing the behaviour before the change to that after the change is very useful. +Imagine you are writing to yourself in 12 months time when you’ve forgotten everything about what you just did, and you need to get up to speed quickly.

              +

              If the change fixes an issue then write Fixes #1234 in the commit message. +This can be on the subject line if it will fit. If you don’t want to close the associated issue just put #1234 and the change will get linked into the issue.

              +

              Here is an example of a short commit message:

              +
              sidecar: log on reconcile loop - fixes #1234
              +
              +
              +

              And here is an example of a longer one:

              +
              
              +api: now supports host networking (#1234)
              +
              +The operator CRD now has a "network" property that can be used to
              +select host networking as well as setting the apropriate DNS policy.
              +
              +Fixes #1234
              +
              +
              +
              +
              +

              Submitting

              +

              Go to the Scylla Operator github to open the PR. If you have pushed recently, you should see an obvious link to open the PR. If you have not pushed recently, go to the Pull Request tab and select your fork and branch for the PR.

              +

              After the PR is open, you can make changes simply by pushing new commits. Your PR will track the changes in your fork and update automatically.

              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/eks.html b/v1.13/eks.html new file mode 100644 index 00000000000..e2954507fdb --- /dev/null +++ b/v1.13/eks.html @@ -0,0 +1,759 @@ + + + + + + + + + + + + + Deploying Scylla on EKS | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Deploying Scylla on EKS

              +

              This guide is focused on deploying Scylla on EKS with improved performance. +Performance tricks used by the script won’t work with different machine tiers. +It sets up the kubelets on EKS nodes to run with static cpu policy and uses local sdd disks in RAID0 for maximum performance.

              +

              Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the general guide.

              +
              +

              TL;DR;

              +

              If you don’t want to run the commands step-by-step, you can just run a script that will set everything up for you:

              +
              # Edit according to your preference
              +EKS_REGION=us-east-1
              +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c
              +
              +# From inside the examples/eks folder
              +cd examples/eks
              +./eks.sh -z "$EKS_ZONES" -r "$EKS_REGION"
              +
              +
              +

              After you deploy, see how you can benchmark your cluster with cassandra-stress.

              +
              +
              +

              Walkthrough

              +
              +

              EKS Setup

              +
              +

              Configure environment variables

              +

              First of all, we export all the configuration options as environment variables. +Edit according to your own environment.

              +
              EKS_REGION=us-east-1
              +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c
              +CLUSTER_NAME=scylla-demo
              +
              +
              +
              +
              +

              Creating an EKS cluster

              +

              For this guide, we’ll create an EKS cluster with the following:

              +
                +
              • A NodeGroup of 3 i3-2xlarge Nodes, where the Scylla Pods will be deployed. These nodes will only accept pods having scylla-clusters toleration.

              • +
              +
                - name: scylla-pool
              +    instanceType: i3.2xlarge
              +    desiredCapacity: 3
              +    labels:
              +      scylla.scylladb.com/node-type: scylla
              +    taints:
              +      role: "scylla-clusters:NoSchedule"
              +    ssh:
              +      allow: true
              +    kubeletExtraConfig:
              +      cpuManagerPolicy: static
              +
              +
              +
                +
              • A NodeGroup of 4 c4.2xlarge Nodes to deploy cassandra-stress later on. These nodes will only accept pods having cassandra-stress toleration.

              • +
              +
                - name: cassandra-stress-pool
              +    instanceType: c4.2xlarge
              +    desiredCapacity: 4
              +    labels:
              +      pool: "cassandra-stress-pool"
              +    taints:
              +      role: "cassandra-stress:NoSchedule"
              +    ssh:
              +      allow: true
              +
              +
              +
                +
              • A NodeGroup of 1 i3.large Node, where the monitoring stack and operator will be deployed.

              • +
              +
                - name: monitoring-pool
              +    instanceType: i3.large
              +    desiredCapacity: 1
              +    labels:
              +      pool: "monitoring-pool"
              +    ssh:
              +      allow: true
              +
              +
              +
              +
              +
              +

              Prerequisites

              +
              +

              Installing script third party dependencies

              +

              Script requires several dependencies:

              +
                +
              • eksctl - See: https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html

              • +
              • kubectl - See: https://kubernetes.io/docs/tasks/tools/install-kubectl/

              • +
              +
              +
              +
              +

              Deploying ScyllaDB Operator

              +

              Refer to Deploying Scylla on a Kubernetes Cluster in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites.

              +
              +

              Setting up nodes for ScyllaDB

              +

              ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you’ll first need to form a RAID array from those disks. +NodeConfig performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in Performance tuning section of ScyllaDB Operator’s documentation.

              +

              Deploy NodeConfig to let it take care of the above operations:

              +
              kubectl apply --server-side -f examples/eks/nodeconfig-alpha.yaml
              +
              +
              +
              +
              +

              Deploying Local Volume Provisioner

              +

              Afterwards, deploy ScyllaDB’s Local Volume Provisioner, capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays.

              +
              kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/
              +
              +
              +
              +
              +
              +

              Deploying ScyllaDB

              +

              Now you can follow the steps described in Deploying Scylla on a Kubernetes Cluster to launch your ScyllaDB cluster in a highly performant environment.

              +
              +

              Accessing the database

              +

              Instructions on how to access the database can also be found in the generic guide.

              +
              +
              +
              +

              Deleting an EKS cluster

              +

              Once you are done with your experiments delete your cluster using the following command:

              +
              eksctl delete cluster "${CLUSTER_NAME}"
              +
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/exposing.html b/v1.13/exposing.html new file mode 100644 index 00000000000..0f746c0a6cb --- /dev/null +++ b/v1.13/exposing.html @@ -0,0 +1,906 @@ + + + + + + + + + + + + + Exposing ScyllaCluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Exposing ScyllaCluster

              +

              This document explains how ScyllaDB Operator exposes ScyllaClusters in different network setups. +A ScyllaCluster can be exposed in various network configurations, independently to clients and nodes.

              +
              +

              Note

              +

              ScyllaClusters can be only exposed when the ScyllaDB version used version is >=2023.1 ScyllaDB Enterprise or >=5.2 ScyllaDB Open Source.

              +
              +
              +

              Expose Options

              +

              exposeOptions specifies configuration options for exposing ScyllaCluster’s. +A ScyllaCluster created without any exposeOptions is equivalent to the following:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    nodeService:
              +     type: ClusterIP
              +    broadcastOptions:
              +      clients:
              +        type: ServiceClusterIP
              +      nodes:
              +        type: ServiceClusterIP
              +
              +
              +

              The following sections cover what every field controls and what the configuration options are.

              +
              +

              Node Service Template

              +

              nodeService serves as a template for a node-dedicated Service managed by the Scylla Operator for each node within a ScyllaCluster. +The properties of the Services depend on the selected type. +Additionally, there’s an option to define custom annotations, incorporated into each node’s Service, +which might be useful for further tweaking the Service properties or related objects.

              +
              +

              Headless Type

              +

              For Headless type, Scylla Operator creates a Headless Service with a selector pointing to the particular node in the ScyllaCluster. +Such Service doesn’t provide any additional IP addresses, and the internal DNS record resolves to the PodIP of a node.

              +

              This type of Service is useful when ScyllaCluster nodes broadcast PodIPs to clients and other nodes.

              +

              Example:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    nodeService:
              +     type: Headless
              +
              +
              +
              +
              +

              ClusterIP Type

              +

              For ClusterIP type, Scylla Operator creates a ClusterIP Service backed by a specific node in the ScyllaCluster.

              +

              These IP addresses are only routable within the same Kubernetes cluster, so it’s a good fit, if you don’t want to expose them to other networks.

              +

              Example:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    nodeService:
              +     type: ClusterIP
              +
              +
              +
              +
              +

              LoadBalancer Type

              +

              For the LoadBalancer type, Scylla Operator generates a LoadBalancer Service that directs traffic to a specific node within the ScyllaCluster. +On platforms with support for external load balancers, this Service provisions one. +The accessibility of this load balancer’s address depends on the platform and any customizations made; in some cases it may be reachable from the internal network or public Internet.

              +

              Customizations are usually managed via Service annotations, key-value pairs provided in annotations field are merged into each Service object. +LoadBalancer Services should be configured to pass through entire traffic.
              +For example, to expose LoadBalancer only to internal network use the following annotations:

              +
              + +
              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    nodeService:
              +     type: LoadBalancer
              +     annotations:
              +       service.beta.kubernetes.io/aws-load-balancer-scheme: internal
              +       service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
              +
              +
              +
              + +
              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    nodeService:
              +     type: LoadBalancer
              +     annotations:
              +       networking.gke.io/load-balancer-type: Internal
              +
              +
              +
              +
              +

              Check platform-specific documentation regarding LoadBalancer configuration to learn more about available options.

              +

              LoadBalancer Service is a superset of ClusterIP Service, implying that each LoadBalancer Service also contains an allocated ClusterIP. +They can be configured using the following fields, which propagate to every node Service:

              +
                +
              • externalTrafficPolicy

              • +
              • internalTrafficPolicy

              • +
              • loadBalancerClass

              • +
              • allocateLoadBalancerNodePorts

              • +
              +

              Check Kubernetes Service documentation to learn more about these options.

              +

              Example:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    nodeService:
              +     type: LoadBalancer
              +     loadBalancerClass: my-custom-load-balancer-class
              +
              +
              +
              +
              +
              +
              +

              Broadcast Options

              +

              Broadcast options control what is the source of the address being broadcasted to clients and nodes. +It’s configured independently for clients and nodes because you may want to expose these two types of traffic on different networks. +Using different networks can help manage costs, reliability, latency, security policies or other metrics you care about.

              +
              +

              PodIP Type

              +

              Address broadcasted to clients/nodes is taken from Pod. +By default, the address is taken from Pod’s status.PodIP field. +Because a Pod can use multiple address, you may want to provide source options by specifying podIP.source.

              +

              Example:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    broadcastOptions:
              +       clients:
              +         type: PodIP
              +         podIP:
              +           source: Status
              +
              +
              +
              +
              +

              ServiceClusterIP Type

              +

              Address broadcasted to clients or nodes is taken from spec.ClusterIP field of a node’s dedicated Service.

              +

              In order to configure it, the nodeService template must specify a Service having a ClusterIP assigned.

              +

              Example:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    broadcastOptions:
              +       clients:
              +         type: ServiceClusterIP
              +
              +
              +
              +
              +

              ServiceLoadBalancerIngress Type

              +

              Address broadcasted to clients/nodes is taken from the node dedicated Service, from status.ingress[0].ipAddress or status.ingress[0].hostname field.

              +

              In order to configure it, the nodeService template must specify the LoadBalancer Service.

              +

              Example:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    broadcastOptions:
              +       clients:
              +         type: ServiceLoadBalancerIngress
              +         podIP:
              +           source: Status
              +
              +
              +
              +
              +
              +
              +

              Deployment Examples

              +

              The following section contains several specific examples of various network scenarios and explains how nodes and clients communicate with one another.

              +
              +

              In-cluster only

              +

              ScyllaCluster definition:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    nodeService:
              +      type: ClusterIP
              +    broadcastOptions:
              +      clients:
              +        type: ServiceClusterIP
              +      nodes:
              +        type: ServiceClusterIP
              +
              +
              +

              Both client and nodes are deployed within the same Kubernetes cluster. +They talk through ClusterIP addresses taken from the Service. +Because ClusterIP Services are only routable within the same Kubernetes cluster, this cluster won’t be reachable from outside.

              +

              ClusterIPs

              +
              +
              +

              In-cluster node-to-node, VPC clients-to-nodes

              +

              ScyllaCluster definition:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    nodeService:
              +      type: ClusterIP
              +    broadcastOptions:
              +      clients:
              +        type: PodIP
              +      nodes:
              +        type: ServiceClusterIP
              +
              +
              +

              In this scenario, we assume that the Pod IP subnet is routable within a VPC. +Clients within the VPC network can communicate directly with ScyllaCluster nodes using PodIPs. +Nodes communicate with each other exclusively within the same Kubernetes cluster.

              +

              PodIPs

              +
              +
              +

              Multi VPC

              +

              ScyllaCluster definition:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    nodeService:
              +      type: Headless
              +    broadcastOptions:
              +      clients:
              +        type: PodIP
              +      nodes:
              +        type: PodIP
              +
              +
              +

              In this scenario, we set up two separate Kubernetes clusters in distinct VPCs. +These VPCs are interconnected to facilitate inter-VPC connectivity. +We operate on the assumption that the Pod IP subnet is routable within each VPC.

              +

              Both ScyllaClusters use the same exposeOptions, nodes broadcast their Pod IP addresses, enabling them to establish connections with one another. +****Check other documentation pages to know how to connect two ScyllaClusters into one logical cluster.

              +

              Clients, whether deployed within the same Kubernetes cluster or within a VPC, have the capability to reach nodes using their Pod IPs. +Since there is no requirement for any address other than the Pod IP, the Headless service type is sufficient.

              +

              MultiVPC

              +
              +
              +

              Internet

              +

              ScyllaCluster definition:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    nodeService:
              +      type: LoadBalancer
              +    broadcastOptions:
              +      clients:
              +        type: ServiceLoadBalancerIngress
              +      nodes:
              +        type: ClusterIP 
              +
              +
              +

              We assume that a Kubernetes cluster has been deployed in a cloud provider environment that supports external load balancers. +By specifying the LoadBalancer type in the nodeService template, the Scylla Operator generates a dedicated LB Service for each node. +The cloud provider then establishes an external load balancer with an internet-accessible address. +ScyllaDB nodes broadcast this external address to clients, enabling drivers to connect and discover other nodes. +Since all ScyllaDB nodes reside within the same Kubernetes cluster, there is no need to route traffic through the internet. +Consequently, the nodes are configured to communicate via ClusterIP, which is also accessible within LoadBalancer Services.

              +

              Internet

              +
              +

              Other more complex scenarios can be built upon these simple ones.

              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/generic.html b/v1.13/generic.html new file mode 100644 index 00000000000..55f35ead8b9 --- /dev/null +++ b/v1.13/generic.html @@ -0,0 +1,977 @@ + + + + + + + + + + + + + Deploying Scylla on a Kubernetes Cluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Deploying Scylla on a Kubernetes Cluster

              +

              This is a guide to deploy a Scylla Cluster in a generic Kubernetes environment, meaning that Scylla will not be deployed with the ideal performance. +Scylla performs the best when it has fast disks and direct access to the cpu. +This requires some extra setup, which is platform-specific. +For specific configuration and setup, check for details about your particular environment:

              + +
              +

              Prerequisites

              + +
              +
              +

              Running locally

              +

              Running kubernetes locally is a daunting and error prone task. +Fortunately there are ways to make life easier and Minikube makes it a breeze.

              +

              We need to give minikube a little bit more resources than default so start minikube like this:

              +
              minikube start --cpus=6
              +
              +
              +

              Then make kubectl aware of this local installation like this:

              +
              eval $(minikube docker-env)
              +
              +
              +
              +
              +

              Download Scylla Operator

              +

              In this guide you will be using the examples and manifests from Scylla Operator repository, so start off by cloning it to your local machine.

              +
              git clone git@github.com:scylladb/scylla-operator.git
              +cd scylla-operator
              +
              +
              +
              +
              +

              Deploy Cert Manager

              +

              First deploy Cert Manager, you can either follow upsteam instructions or use following command:

              +
              kubectl apply -f examples/common/cert-manager.yaml
              +
              +
              +

              This will install Cert Manager to provision a self-signed certificate.

              +

              Once it’s deployed, wait until Cert Manager is ready:

              +
              kubectl wait --for condition=established crd/certificates.cert-manager.io crd/issuers.cert-manager.io
              +kubectl -n cert-manager rollout status deployment.apps/cert-manager-webhook
              +
              +
              +
              +
              +

              Deploy Scylla Operator

              +

              Deploy the Scylla Operator using the following commands:

              +
              kubectl apply -f deploy/operator.yaml
              +
              +
              +

              This will install the operator in namespace scylla-operator. +Wait until it’s ready:

              +
              kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
              +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
              +
              +
              +

              If you want to check the logs of the operator you can do so with:

              +
              kubectl -n scylla-operator logs deployment.apps/scylla-operator
              +
              +
              +
              +
              +

              Create and Initialize a Scylla Cluster

              +

              Now that the operator is running, we can create an instance of a Scylla cluster by creating an instance of the clusters.scylla.scylladb.com resource. +Some of that resource’s values are configurable, so feel free to browse cluster.yaml and tweak the settings to your liking. +Full details for all the configuration options can be found in the Scylla Cluster CRD documentation.

              +

              When you are ready to create a Scylla cluster, simply run:

              +
              kubectl create -f examples/generic/cluster.yaml
              +
              +
              +

              We can verify that a Kubernetes object has been created that represents our new Scylla cluster with the command below. +This is important because it shows that has successfully extended Kubernetes to make Scylla clusters a first class citizen in the Kubernetes cloud-native environment.

              +
              kubectl -n scylla get ScyllaCluster
              +
              +
              +

              Checking the pods that are created is as easy as:

              +
              kubectl -n scylla get pods
              +
              +
              +

              The output should be something like:

              +
              NAME                                    READY   STATUS    RESTARTS   AGE
              +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          9m49s
              +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          7m43s
              +simple-cluster-us-east-1-us-east-1a-2   2/2     Running   0          6m46s
              +
              +
              +

              It is important to note that the operator creates these instances according to a pattern. +This pattern is as follows: CLUSTER_NAME-DATACENTER_NAME-RACK_NAME-INSTANCE_NUMBER as specified in cluster.yaml.

              +

              In the above example we have the following properties:

              +
                +
              • CLUSTER_NAME: simple-cluster

              • +
              • DATACENTER_NAME: us-east-1

              • +
              • RACK_NAME: us-east-1a

              • +
              • INSTANCE_NUMBER: An automatically generated number attached to the pod name.

              • +
              +

              We picked the names to resemble something you can find in a cloud service but this is inconsequential, they can be set to anything you want.

              +

              To check if all the desired members are running, you should see the same number of entries from the following command as the number of members that was specified in cluster.yaml:

              +
              kubectl -n scylla get pod -l app=scylla
              +
              +
              +

              You can also track the state of a Scylla cluster from its status. To check the current status of a Cluster, run:

              +
              kubectl -n scylla describe ScyllaCluster simple-cluster
              +
              +
              +

              Checking the logs of the running scylla instances can be done like this:

              +
              kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 scylla
              +
              +
              +
              +

              Configure host networking

              +

              To squeeze the most out of your deployment it is sometimes necessary to employ host networking. +To enable this the CRD allows for specifying a network parameter as such:

              +
                version: 5.4.3
              +  agentVersion: 3.2.8
              +  cpuset: true
              +  network:
              +    hostNetworking: true
              +
              +
              +

              This will result in hosts network to be used for the Scylla Stateful Set deployment.

              +
              +
              +

              Configure container kernel parameters

              +

              Sometimes it is necessary to run the container with different kernel parameters. +In order to support this, the Scylla Operator defines a cluster property sysctls that is a list of the desired key-value pairs to set.

              +

              For example: To increase the number events available for asynchronous IO processing in the Linux kernel to N set sysctls tofs.aio-max-nr=N.

              +
              spec:
              +  sysctls:
              +  - "fs.aio-max-nr=2097152"
              +
              +
              +
              +
              +

              Deploying Alternator

              +

              The operator is also capable of deploying Alternator instead of the regular Scylla. +This requires a small change in the cluster definition. +Change the cluster.yaml file from this:

              +
              spec:
              +  agentVersion: 3.2.8
              +  version: 5.4.3
              +  developerMode: true
              +  datacenter:
              +    name: us-east-1
              +
              +
              +

              to this:

              +
              spec:
              +  version: 5.4.3
              +  alternator:
              +    port: 8000
              +    writeIsolation: only_rmw_uses_lwt
              +  agentVersion: 3.2.8
              +  developerMode: true
              +  datacenter:
              +    name: us-east-1
              +
              +
              +

              You can specify whichever port you want.

              +

              You must provide desired write isolation, supported values are: “always”, “forbid_rmw”, “only_rmw_uses_lwt”. +Difference between those isolation levels can be found in Scylla Alternator documentation.

              +

              Once this is done the regular CQL ports will no longer be available, the cluster is a pure Alternator cluster.

              +
              +
              +
              +

              Accessing the Database

              +
                +
              • From kubectl:

              • +
              +

              To get a cqlsh shell in your new Cluster:

              +
              kubectl exec -n scylla -it simple-cluster-us-east-1-us-east-1a-0 -- cqlsh
              +> DESCRIBE KEYSPACES;
              +
              +
              +
                +
              • From inside a Pod:

              • +
              +

              When you create a new Cluster, automatically creates a Service for the clients to use in order to access the Cluster. +The service’s name follows the convention <cluster-name>-client. +You can see this Service in your cluster by running:

              +
              kubectl -n scylla describe service simple-cluster-client
              +
              +
              +

              Pods running inside the Kubernetes cluster can use this Service to connect to Scylla. +Here’s an example using the Python Driver:

              +
              from cassandra.cluster import Cluster
              +
              +cluster = Cluster(['simple-cluster-client.scylla.svc'])
              +session = cluster.connect()
              +
              +
              +

              If you are running the Alternator you can access the API on the port you specified using plain http.

              +
              +
              +

              Configure Scylla

              +

              The operator can take a ConfigMap and apply it to the scylla.yaml configuration file. +This is done by adding a ConfigMap to Kubernetes and refering to this in the Rack specification. +The ConfigMap is just a file called scylla.yaml that has the properties you want to change in it. +The operator will take the default properties for the rest of the configuration.

              +
                +
              • Create a ConfigMap the default name that the operator uses is scylla-config:

              • +
              +
              kubectl create configmap scylla-config -n scylla --from-file=/path/to/scylla.yaml
              +
              +
              +
                +
              • Wait for the mount to propagate and then restart the cluster:

              • +
              +
              kubectl rollout restart -n scylla statefulset/simple-cluster-us-east-1-us-east-1a
              +
              +
              +
                +
              • The new config should be applied automatically by the operator, check the logs to be sure.

              • +
              +

              Configuring cassandra-rackdc.properties is done by adding the file to the same mount as scylla.yaml.

              +
              kubectl create configmap scylla-config -n scylla --from-file=/tmp/scylla.yaml --from-file=/tmp/cassandra-rackdc.properties -o yaml --dry-run | kubectl replace -f -
              +
              +
              +

              The operator will then apply the overridable properties prefer_local and dc_suffix if they are available in the provided mounted file.

              +
              +

              Note

              +

              If you want to enable authentication, you first need to adjust system_auth keyspace replication factor to the number of nodes in the datacenter via cqlsh. It allows you to ensure that the user’s information is kept highly available for the cluster. If system_auth is not equal to the number of nodes and a node fails, the user whose information is on that node will be denied access. +For production environments only use NetworkTopologyStrategy.

              +
              kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : <replication_factor>};"
              +
              +
              +

              You can read more about enabling authentication in the Enable authentication section of ScyllaDB’s documentation.

              +
              +
              +
              +

              Configure Scylla Manager Agent

              +

              The operator creates a second container for each scylla instance that runs Scylla Manager Agent. +This container serves as a sidecar and it’s the main endpoint for interacting with Scylla API. +The Scylla Manager Agent can be configured with various things such as the security token used to allow access to Scylla API and storage providers for backups.

              +

              To configure the agent you just create a new secret called scylla-agent-config-secret and populate it with the contents in the scylla-manager-agent.yaml file like this:

              +
              kubectl create secret -n scylla generic scylla-agent-config-secret --from-file scylla-manager-agent.yaml
              +
              +
              +

              See Scylla Manager Agent configuration for a complete reference of the Scylla Manager agent config file.

              +
              +

              Scylla Manager Agent auth token

              +

              Operator provisions Agent auth token by copying value from user provided config secret or auto generates it if it’s empty. +To check which value is being used, decode content of <cluster-name>-auth-token secret. +To change it simply remove the secret. Operator will create a new one. To pick up the change in the cluster, initiate a rolling restart.

              +
              +
              +
              +

              Set up monitoring

              +

              To set up monitoring using Prometheus and Grafana follow this guide.

              +
              +
              +

              Scale a ScyllaCluster

              +

              The operator supports adding new nodes to existing racks, adding new racks to the cluster, as well as removing both single nodes and entire racks. To introduce the changes, edit the cluster with:

              +
              kubectl -n scylla edit scyllaclusters.scylla.scylladb.com/simple-cluster
              +
              +
              +
                +
              • To modify the number of nodes in a rack, update the members field of the selected rack to a desired value.

              • +
              • To add a new rack, append it to the .spec.datacenter.racks list. Remember to choose a unique rack name for the new rack.

              • +
              • To remove a rack, first scale it down to zero nodes, and then remove it from .spec.datacenter.racks list.

              • +
              +

              Having edited and saved the yaml, you can check your cluster’s Status and Events to retrieve information about what’s happening:

              +
              kubectl -n scylla describe scyllaclusters.scylla.scylladb.com/simple-cluster
              +
              +
              +
              +

              Note

              +

              If you have configured ScyllaDB with authenticator set to PasswordAuthenticator, you need to manually configure the replication factor of the system_auth keyspace with every scaling operation.

              +
              kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -u <username> -p <password> -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : <new_replication_factor>};"
              +
              +
              +

              It is recommended to set system_auth replication factor to the number of nodes in each datacenter.

              +
              +
              +
              +

              Benchmark with cassandra-stress

              +

              After deploying our cluster along with the monitoring, we can benchmark it using cassandra-stress and see its performance in Grafana. We have a mini cli that generates Kubernetes Jobs that run cassandra-stress against a cluster.

              +
              +

              Because cassandra-stress doesn’t scale well to multiple cores, we use multiple jobs with a small core count for each

              +
              +
              # Run a benchmark with 10 jobs, with 6 cpus and 50.000.000 operations each.
              +# Each Job will throttle throughput to 30.000 ops/sec for a total of 300.000 ops/sec.
              +hack/cass-stress-gen.py --num-jobs=10 --cpu=6 --memory=20G --ops=50000000 --limit=30000
              +kubectl apply -f scripts/cassandra-stress.yaml
              +
              +
              +

              Make sure you set the proper arguments in case you have altered things such as name or namespace.

              +
              ./hack/cass-stress-gen.py -h
              +usage: cass-stress-gen.py [-h] [--num-jobs NUM_JOBS] [--name NAME] [--namespace NAMESPACE] [--scylla-version SCYLLA_VERSION] [--host HOST] [--cpu CPU] [--memory MEMORY] [--ops OPS] [--threads THREADS] [--limit LIMIT]
              +                          [--connections-per-host CONNECTIONS_PER_HOST] [--print-to-stdout] [--nodeselector NODESELECTOR]
              +
              +Generate cassandra-stress job templates for Kubernetes.
              +
              +optional arguments:
              +  -h, --help            show this help message and exit
              +  --num-jobs NUM_JOBS   number of Kubernetes jobs to generate - defaults to 1
              +  --name NAME           name of the generated yaml file - defaults to cassandra-stress
              +  --namespace NAMESPACE
              +                        namespace of the cassandra-stress jobs - defaults to "default"
              +  --scylla-version SCYLLA_VERSION
              +                        version of scylla server to use for cassandra-stress - defaults to 4.0.0
              +  --host HOST           ip or dns name of host to connect to - defaults to scylla-cluster-client.scylla.svc
              +  --cpu CPU             number of cpus that will be used for each job - defaults to 1
              +  --memory MEMORY       memory that will be used for each job in GB, ie 2G - defaults to 2G * cpu
              +  --ops OPS             number of operations for each job - defaults to 10000000
              +  --threads THREADS     number of threads used for each job - defaults to 50 * cpu
              +  --limit LIMIT         rate limit for each job - defaults to no rate-limiting
              +  --connections-per-host CONNECTIONS_PER_HOST
              +                        number of connections per host - defaults to number of cpus
              +  --print-to-stdout     print to stdout instead of writing to a file
              +  --nodeselector NODESELECTOR
              +                        nodeselector limits cassandra-stress pods to certain nodes. Use as a label selector, eg. --nodeselector role=scylla
              +
              +
              +

              While the benchmark is running, open up Grafana and take a look at the monitoring metrics.

              +

              After the Jobs finish, clean them up with:

              +
              kubectl delete -f scripts/cassandra-stress.yaml
              +
              +
              +
              +
              +

              Clean Up

              +

              To clean up all resources associated with this walk-through, you can run the commands below.

              +

              NOTE: this will destroy your database and delete all of its associated data.

              +
              kubectl delete -f examples/generic/cluster.yaml
              +kubectl delete -f deploy/operator.yaml
              +kubectl delete -f examples/common/cert-manager.yaml
              +
              +
              +
              +
              +

              Troubleshooting

              +

              If the cluster does not come up, the first step would be to examine the operator’s logs:

              +
              kubectl -n scylla-operator logs deployment.apps/scylla-operator
              +
              +
              +

              If everything looks OK in the operator logs, you can also look in the logs for one of the Scylla instances:

              +
              kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/genindex.html b/v1.13/genindex.html new file mode 100644 index 00000000000..546d5818953 --- /dev/null +++ b/v1.13/genindex.html @@ -0,0 +1,582 @@ + + + + + + + + + + + + + Index | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + + + +
              + + + + + +
              + + +
              + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/gke.html b/v1.13/gke.html new file mode 100644 index 00000000000..01d5ed61572 --- /dev/null +++ b/v1.13/gke.html @@ -0,0 +1,799 @@ + + + + + + + + + + + + + Deploying Scylla on GKE | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Deploying Scylla on GKE

              +

              This guide is focused on deploying Scylla on GKE with maximum performance (without any persistence guarantees). +It sets up the kubelets on GKE nodes to run with static cpu policy and uses local sdd disks in RAID0 for maximum performance.

              +

              Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the general guide.

              +
              +

              TL;DR;

              +

              If you don’t want to run the commands step-by-step, you can just run a script that will set everything up for you:

              +
              # Edit according to your preference
              +GCP_USER=$(gcloud config list account --format "value(core.account)")
              +GCP_PROJECT=$(gcloud config list project --format "value(core.project)")
              +GCP_ZONE=us-west1-b
              +
              +# From inside the examples/gke folder
              +cd examples/gke
              +./gke.sh -u "$GCP_USER" -p "$GCP_PROJECT" -z "$GCP_ZONE"
              +
              +# Example:
              +# ./gke.sh -u yanniszark@arrikto.com -p gke-demo-226716 -z us-west1-b
              +
              +
              +
              +

              Warning

              +

              Make sure to pass a ZONE (ex.: us-west1-b) and not a REGION (ex.: us-west1) or it will deploy nodes in each ZONE available in the region.

              +
              +

              After you deploy, see how you can benchmark your cluster with cassandra-stress.

              +
              +
              +

              Walkthrough

              +
              +

              Google Kubernetes Engine Setup

              +
              +

              Configure environment variables

              +

              First of all, we export all the configuration options as environment variables. +Edit according to your own environment.

              +
              GCP_USER=$( gcloud config list account --format "value(core.account)" )
              +GCP_PROJECT=$( gcloud config list project --format "value(core.project)" )
              +GCP_REGION=us-west1
              +GCP_ZONE=us-west1-b
              +CLUSTER_NAME=scylla-demo
              +CLUSTER_VERSION=$( gcloud container get-server-config --zone ${GCP_ZONE} --format "value(validMasterVersions[0])" )
              +
              +
              +
              +
              +

              Creating a GKE cluster

              +

              First we need to change kubelet CPU Manager policy to static by providing a config file. Create file called systemconfig.yaml with the following content:

              +
              kubeletConfig:
              +  cpuManagerPolicy: static
              +
              +
              +

              Then we’ll create a GKE cluster with the following:

              +
                +
              1. A NodePool of 2 n1-standard-8 Nodes, where the operator and the monitoring stack will be deployed. These are generic Nodes and their free capacity can be used for other purposes.

                +
                gcloud container \
                +clusters create "${CLUSTER_NAME}" \
                +--cluster-version "${CLUSTER_VERSION}" \
                +--node-version "${CLUSTER_VERSION}" \
                +--machine-type "n1-standard-8" \
                +--num-nodes "2" \
                +--disk-type "pd-ssd" --disk-size "20" \
                +--image-type "UBUNTU_CONTAINERD" \
                +--enable-stackdriver-kubernetes \
                +--no-enable-autoupgrade \
                +--no-enable-autorepair
                +
                +
                +
              2. +
              3. A NodePool of 2 n1-standard-32 Nodes to deploy cassandra-stress later on.

                +
                gcloud container --project "${GCP_PROJECT}" \
                +node-pools create "cassandra-stress-pool" \
                +--cluster "${CLUSTER_NAME}" \
                +--zone "${GCP_ZONE}" \
                +--node-version "${CLUSTER_VERSION}" \
                +--machine-type "n1-standard-32" \
                +--num-nodes "2" \
                +--disk-type "pd-ssd" --disk-size "20" \
                +--node-taints role=cassandra-stress:NoSchedule \
                +--image-type "UBUNTU_CONTAINERD" \
                +--no-enable-autoupgrade \
                +--no-enable-autorepair
                +
                +
                +
              4. +
              5. A NodePool of 4 n1-standard-32 Nodes, where the Scylla Pods will be deployed. Each of these Nodes has 8 local NVMe SSDs attached, which are provided as raw block devices. It is important to disable autoupgrade and autorepair. Automatic cluster upgrade or node repair has a hard timeout after which it no longer respect PDBs and force deletes the Compute Engine instances, which also deletes all data on the local SSDs. At this point, it’s better to handle upgrades manually, with more control over the process and error handling.

                +
                gcloud container \
                +node-pools create "scylla-pool" \
                +--cluster "${CLUSTER_NAME}" \
                +--node-version "${CLUSTER_VERSION}" \
                +--machine-type "n1-standard-32" \
                +--num-nodes "4" \
                +--disk-type "pd-ssd" --disk-size "20" \
                +--local-nvme-ssd-block count="8" \
                +--node-taints role=scylla-clusters:NoSchedule \
                +--node-labels scylla.scylladb.com/node-type=scylla \
                +--image-type "UBUNTU_CONTAINERD" \
                +--system-config-from-file=systemconfig.yaml \
                +--no-enable-autoupgrade \
                +--no-enable-autorepair
                +
                +
                +
              6. +
              +
              +
              +

              Setting Yourself as cluster-admin

              +
              +

              (By default GKE doesn’t give you the necessary RBAC permissions)

              +
              +

              Get the credentials for your new cluster

              +
              gcloud container clusters get-credentials "${CLUSTER_NAME}" --zone="${GCP_ZONE}"
              +
              +
              +

              Create a ClusterRoleBinding for your user. +In order for this to work you need to have at least permission container.clusterRoleBindings.create. +The easiest way to obtain this permission is to enable the Kubernetes Engine Admin role for your user in the GCP IAM web interface.

              +
              kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user "${GCP_USER}"
              +
              +
              +
              +
              +
              +

              Prerequisites

              +
              +
              +

              Deploying ScyllaDB Operator

              +

              Refer to Deploying Scylla on a Kubernetes Cluster in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites.

              +
              +

              Setting up nodes for ScyllaDB

              +

              ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you’ll first need to form a RAID array from those disks. +NodeConfig performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in Performance tuning section of ScyllaDB Operator’s documentation.

              +

              Deploy NodeConfig to let it take care of the above operations:

              +
              kubectl apply --server-side -f examples/gke/nodeconfig-alpha.yaml
              +
              +
              +
              +
              +

              Deploying Local Volume Provisioner

              +

              Afterwards, deploy ScyllaDB’s Local Volume Provisioner, capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays.

              +
              kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/
              +kubectl apply --server-side -f examples/common/local-volume-provisioner/storageclass_xfs.yaml
              +
              +
              +
              +
              +
              +

              Deploy Scylla cluster

              +

              In order for the example to work you need to modify the cluster definition in the following way:

              +
              sed -i "s/<gcp_region>/${GCP_REGION}/g;s/<gcp_zone>/${GCP_ZONE}/g" examples/gke/cluster.yaml
              +
              +
              +

              This will inject your region and zone into the cluster definition so that it matches the kubernetes cluster you just created.

              +
              +
              +

              Deploying ScyllaDB

              +

              Now you can follow the steps described in Deploying Scylla on a Kubernetes Cluster to launch your ScyllaDB cluster in a highly performant environment.

              +
              +

              Accessing the database

              +

              Instructions on how to access the database can also be found in the generic guide.

              +
              +
              +
              +

              Deleting a GKE cluster

              +

              Once you are done with your experiments delete your cluster using the following command:

              +
              gcloud container --project "${GCP_PROJECT}" clusters delete --zone "${GCP_ZONE}" "${CLUSTER_NAME}"
              +
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/helm.html b/v1.13/helm.html new file mode 100644 index 00000000000..e1b975419a4 --- /dev/null +++ b/v1.13/helm.html @@ -0,0 +1,947 @@ + + + + + + + + + + + + + Deploying Scylla stack using Helm Charts | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Deploying Scylla stack using Helm Charts

              +

              In this example we will install Scylla stack on Kubernetes. This includes the following components:

              +
                +
              • Scylla Operator

              • +
              • Scylla Manager

              • +
              • Scylla

              • +
              +

              We will use Minikube K8s cluster, but this could be any K8s cluster supported by the Scylla Operator.

              +
              +

              Prerequisites

              +
                +
              • Kubernetes 1.16+

              • +
              • Helm 3+

              • +
              +
              +
              +

              TL;DR

              +
              helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable
              +helm repo update
              +kubectl apply -f examples/common/cert-manager.yaml 
              +helm install scylla-operator scylla/scylla-operator --create-namespace --namespace scylla-operator
              +helm install scylla-manager scylla/scylla-manager --create-namespace --namespace scylla-manager
              +helm install scylla scylla/scylla --create-namespace --namespace scylla
              +
              +
              +
              +
              +

              Deploy Cert Manager

              +

              This step is optional if you want to use your own certificate. +If you don’t have one, make sure to not disable autogeneration using Scylla Operator Helm Chart.

              +

              First deploy Cert Manager, you can either follow upsteam instructions or use following command:

              +
              kubectl apply -f examples/common/cert-manager.yaml
              +
              +
              +

              Once it’s deployed, wait until all Cert Manager pods will enter into Running state:

              +
              kubectl wait -n cert-manager --for=condition=ready pod -l app=cert-manager --timeout=60s
              +
              +
              +
              +
              +

              Helm Chart repository

              +

              To install Scylla Helm Chart repository execute the following commands:

              +
              helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable
              +helm repo update
              +
              +
              +

              Then you can search through repository, it should contain at least three Helm charts:

              +
              helm search repo scylla
              +NAME                   CHART VERSION   APP VERSION     DESCRIPTION                                       
              +scylla/scylla          1.0.1           v1.0.1          Scylla is a close-to-the-hardware rewrite of Ca...
              +scylla/scylla-manager  1.0.1           v1.0.1          Scylla Manager automates database operations.     
              +scylla/scylla-operator 1.0.1           v1.0.1          Scylla Operator is a Kubernetes Operator for ma...
              +
              +
              +

              All these charts should be installable without any need of customizing (defaults are provided). +Although Helm is used for this particular reason, so lets customize them a bit.

              +
              +
              +

              Scylla Operator Chart

              +

              This chart is very simple, most interesting customizable fields are image, resources and webhook. +All others can be looked up in Chart source in Scylla Operator repository.

              +
              +

              image

              +

              Image allows to define which Scylla Operator image will be used. By default it downloads the image from main +Docker Hub repository, using version defined in Helm Chart. +You can also change pullPolicy if default one does not +fullfill your needs. In Kubernetes documentation you +can read more about different pull policies.

              +

              Image URL will be composed based on these fields in follwing pattern: +repository/scylla-operator:tag

              +
              image:
              +  repository: scylladb
              +  pullPolicy: IfNotPresent
              +  tag: ""
              +
              +
              +
              +
              +

              resources

              +

              You can customize how much resources will be allocated for Operator pods via resource field:

              +
              resources:
              +  limits:
              +    cpu: 100m
              +    memory: 128Mi
              +  requests:
              +    cpu: 100m
              +    memory: 32Mi
              +
              +
              +

              To read more about resource specification, follow Kubernetes documentation.

              +
              +
              +

              webhook

              +

              Webhook field allows to decide whether you want to use autogenerated self-signed certificate using Cert Manager or +whether you want to provide your own certificate.

              +

              createSelfSignedCertificate specifies whether a self-signed certificate should be created using Cert Manager +certificateSecretName: name of a secret containing custom certificate.

              +
              webhook:
              +  createSelfSignedCertificate: true
              +  certificateSecretName: ""
              +
              +
              +
              +
              +

              Customization

              +

              You can customize all these fields and others by providing file containing desired values. +Content of this file will overwrite default values.

              +

              You can find an example in Scylla Operator repository under examples/helm/values.operator.yaml

              +
              +
              +

              Installation

              +

              To deploy Scylla Operator using customized values file execute the following:

              +
              helm install scylla-operator scylla/scylla-operator --values examples/helm/values.operator.yaml --create-namespace --namespace scylla-operator
              +
              +
              +
              +
              +
              +

              Scylla Helm Chart

              +

              Scylla Chart allows to customize and deploy Scylla cluster. +By default Scylla Helm charts deploys working Scylla cluster, but of course we can customize it.

              +
              +

              Customization

              +

              Versions of images used in the cluster can be set via scyllaImage and agentImage

              +
              scyllaImage:
              +  repository: scylladb/scylla
              +  tag: 4.3.0
              +
              +agentImage:
              +  repository: scylladb/scylla-manager-agent
              +  tag: 2.2.1
              +
              +
              +

              A minimal Scylla cluster can be expressed as:

              +
              datacenter: us-east-1
              +racks:
              +- name: us-east-1b
              +  members: 2
              +  storage:
              +    capacity: 5G
              +  resources:
              +    limits:
              +      cpu: 1
              +      memory: 1Gi
              +    requests:
              +      cpu: 1
              +      memory: 1Gi
              +
              +
              +

              Above cluster will use 4.3.0 Scylla, 2.2.1 Scylla Manager Agent sidecar and will have a single rack having 2 nodes. +Each node will have a single CPU and 1 GiB of memory.

              +

              For other customizable fields, please refer to ScyllaCluster CRD. +CRD Rack Spec and Helm Chart Rack should have the same fields.

              +
              +
              +

              Installation

              +

              To deploy Scylla cluster using customzied values file execute the following command:

              +
              helm install scylla scylla/scylla --values examples/helm/values.cluster.yaml --create-namespace --namespace scylla
              +
              +
              +

              Scylla Operator will provision this cluster on your K8s environment.

              +
              +
              +
              +

              Scylla Manager Helm Chart

              +

              Scylla Manager Chart allows to customize and deploy Scylla Manager in K8s environment. +Scylla Manager consist of two applications (Scylla Manager itself and Scylla Manager Controller) and additional Scylla cluster.

              +

              To read more about Scylla Manager see Manager guide.

              +
              +

              Scylla Manager

              +

              To set version of used Scylla Manager you can use image field:

              +
              image:
              +  repository: scylladb
              +  pullPolicy: IfNotPresent
              +  tag: 2.2.1
              +
              +
              +

              To control how many resources are allocated for Scylla Manager use resource field:

              +
              resources:
              +  limits:
              +    cpu: 500m
              +    memory: 500Mi
              +  requests:
              +    cpu: 500m
              +    memory: 500Mi
              +
              +
              +
              +
              +

              Scylla Manager Controller

              +

              Similarly Scylla Manager Controller image can be customized:

              +
              controllerImage:
              +  repository: scylladb
              +  pullPolicy: IfNotPresent
              +  tag: ""
              +
              +
              +

              And allocated resources:

              +
              controllerResources:
              +  limits:
              +    cpu: 100m
              +    memory: 30Mi
              +  requests:
              +    cpu: 100m
              +    memory: 20Mi
              +
              +
              +
              +
              +

              Scylla

              +

              To customize internal Scylla instance dedicated to Scylla Manager, see guide above customizing Scylla Helm Chart. +It’s definition should land as a scylla field.

              +
              +
              +

              Customization

              +

              All others customizable fields can be looked up in Chart source in Scylla Operator repository.

              +
              +
              +

              Installation

              +

              To deploy Scylla Manager using customized values file execute the following command:

              +
              helm install scylla-manager scylla/scylla-manager --values examples/helm/values.manager.yaml --create-namespace --namespace scylla-manager
              +
              +
              +
              +
              +
              +

              Results

              +

              Scylla need some time to bootstrap all nodes, but after some time you should be ready to roll. It was simple isn’t it? +You can validate if everything was set up correctly by looking at the all resources created in used namespaces.

              +

              Scylla Operator:

              +
              $ kubectl -n scylla-operator get all
              +
              +NAME                                   READY   STATUS    RESTARTS   AGE
              +pod/scylla-operator-5dbcb54f5c-vjm4m   1/1     Running   0          51s
              +pod/scylla-operator-5dbcb54f5c-wfjbw   1/1     Running   0          51s
              +
              +NAME                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
              +service/scylla-operator-webhook   ClusterIP   10.105.207.130   <none>        443/TCP   51s
              +
              +NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
              +deployment.apps/scylla-operator   2/2     2            2           51s
              +
              +NAME                                         DESIRED   CURRENT   READY   AGE
              +replicaset.apps/scylla-operator-5dbcb54f5c   2         2         2       51s
              +
              +
              +

              Operator is running!

              +

              Scylla Manager:

              +
              $ kubectl -n scylla-manager get all 
              +
              +NAME                                             READY   STATUS    RESTARTS   AGE
              +pod/scylla-manager-669db64dd-bcm4v               1/1     Running   0          89s
              +pod/scylla-manager-controller-844ccc56c4-drbth   1/1     Running   0          89s
              +pod/scylla-manager-controller-844ccc56c4-rhwqx   1/1     Running   0          89s
              +
              +NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
              +service/scylla-manager          ClusterIP   10.105.231.53   <none>        80/TCP,5090/TCP     89s
              +service/scylla-manager-client   ClusterIP   None            <none>        9180/TCP,5090/TCP   89s
              +
              +NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
              +deployment.apps/scylla-manager              1/1     1            1           89s
              +deployment.apps/scylla-manager-controller   2/2     2            2           89s
              +
              +NAME                                                   DESIRED   CURRENT   READY   AGE
              +replicaset.apps/scylla-manager-669db64dd               1         1         1       89s
              +replicaset.apps/scylla-manager-controller-844ccc56c4   2         2         2       89s
              +
              +
              +

              Good to go, ready to serve!

              +

              Scylla itself:

              +
              $ kubectl -n scylla get all        
              +
              +NAME                                READY   STATUS    RESTARTS   AGE
              +pod/scylla-us-east-1-us-east-1b-0   2/2     Running   0          5m58s
              +pod/scylla-us-east-1-us-east-1b-1   2/2     Running   0          4m29s
              +
              +NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
              +service/scylla-client                   ClusterIP   None           <none>        9180/TCP,5090/TCP                                                 5m59s
              +service/scylla-us-east-1-us-east-1b-0   ClusterIP   10.43.149.92   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   5m58s
              +service/scylla-us-east-1-us-east-1b-1   ClusterIP   10.43.49.0     <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   4m29s
              +
              +NAME                                           READY   AGE
              +statefulset.apps/scylla-us-east-1-us-east-1b   2/2     5m59s
              +
              +
              +

              Two running nodes, exactly what we were asking for.

              +
              +
              +

              Monitoring

              +

              To spin up a Prometheus monitoring refer to monitoring guide.

              +

              Helm charts can create ServiceMonitors needed to observe Scylla Manager and Scylla. +Both of these Helm Charts allows to specify whether you want to create a ServiceMonitor:

              +
              serviceMonitor:
              +  create: false
              +
              +
              +

              Change create to true and update your current deployment using:

              +
              helm upgrade --install scylla --namespace scylla scylla/scylla -f examples/helm/values.cluster.yaml
              +
              +
              +

              Helm should notice the difference, install the ServiceMonitor, and then Prometheous will be able to scrape metrics.

              +
              +
              +

              Cleanup

              +

              To remove these applications you can simply uninstall them using Helm CLI:

              +
              helm uninstall scylla -n scylla
              +helm uninstall scylla-manager -n scylla-manager
              +helm uninstall scylla-operator -n scylla-operator
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/index.html b/v1.13/index.html new file mode 100644 index 00000000000..6fedc43dc04 --- /dev/null +++ b/v1.13/index.html @@ -0,0 +1,628 @@ + + + + + + + + + + + + + Scylla Operator Documentation | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Scylla Operator Documentation

              +
              +
              +

              Scylla Operator is an open source project which helps users of Scylla Open Source and Scylla Enterprise run Scylla on Kubernetes (K8s) +The Scylla operator manages Scylla clusters deployed to Kubernetes and automates tasks related to operating a Scylla cluster, like installation, out and downscale, rolling upgrades.

              +_images/logo.png +

              For the latest status of the project, and reports issue, see the Github Project. Also check out the K8s Operator lesson on Scylla University.

              +

              scylla-operator is a Kubernetes Operator for managing Scylla clusters.

              +

              Currently it supports:

              +
                +
              • Deploying multi-zone clusters

              • +
              • Scaling up or adding new racks

              • +
              • Scaling down

              • +
              • Monitoring with Prometheus and Grafana

              • +
              • Integration with Scylla Manager

              • +
              • Dead node replacement

              • +
              • Version Upgrade

              • +
              • Backup

              • +
              • Repairs

              • +
              • Autohealing

              • +
              +

              Choose a topic to begin:

              + +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/manager.html b/v1.13/manager.html new file mode 100644 index 00000000000..e796914037d --- /dev/null +++ b/v1.13/manager.html @@ -0,0 +1,834 @@ + + + + + + + + + + + + + Deploying Scylla Manager on a Kubernetes Cluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Deploying Scylla Manager on a Kubernetes Cluster

              +

              Scylla Manager is a product for database operations automation, +it can schedule tasks such as repairs and backups. +Scylla Manager can manage multiple Scylla clusters and run cluster-wide tasks +in a controlled and predictable way.

              +

              Scylla Manager is available for Scylla Enterprise customers and Scylla Open Source users. +With Scylla Open Source, Scylla Manager is limited to 5 nodes. +See the Scylla Manager Proprietary Software License Agreement for details.

              +
              +

              Prerequisites

              + +
              +
              +

              Architecture

              +

              Scylla Manager in K8s consist of:

              +
                +
              • Dedicated Scylla Cluster

                +

                Scylla Manager persists its state to a Scylla cluster. +Additional small single node cluster is spawned in the Manager namespace.

                +
              • +
              • Scylla Manager Controller

                +

                Main mission of Controller is to watch changes of Scylla Clusters, and synchronize three states.

                +
                  +
                1. What user wants - task definition in CRD.

                2. +
                3. What Controller registered - Task name to Task ID mapping - CRD status.

                4. +
                5. Scylla Manager task listing - internal state of Scylla Manager.

                6. +
                +

                When Scylla Cluster CRD is being deployed Controller will register it in Scylla Manager once cluster reaches desired node count. +Once Cluster is fully up and running it will schedule all tasks defined in Cluster CRD. +Controller also supports task updates and unscheduling.

                +
              • +
              • Scylla Manager

                +

                Regular Scylla Manager, the same used in cloud and bare metal deployments.

                +
              • +
              +
              +
              +

              Deploy Scylla Manager

              +

              Deploy the Scylla Manager using the following commands:

              +
              kubectl apply -f deploy/manager-prod.yaml
              +
              +
              +

              This will install the Scylla Manager in the scylla-manager namespace. +You can check if the Scylla Manager is up and running with:

              +
              kubectl -n scylla-manager get pods
              +NAME                                               READY   STATUS    RESTARTS   AGE
              +scylla-manager-cluster-manager-dc-manager-rack-0   2/2     Running   0          37m
              +scylla-manager-controller-0                        1/1     Running   0          28m
              +scylla-manager-scylla-manager-7bd9f968b9-w25jw     1/1     Running   0          37m
              +
              +
              +

              As you can see there are three pods:

              +
                +
              • scylla-manager-cluster-manager-dc-manager-rack-0 - is a single node Scylla cluster.

              • +
              • scylla-manager-controller-0 - Scylla Manager Controller.

              • +
              • scylla-manager-scylla-manager-7bd9f968b9-w25jw - Scylla Manager.

              • +
              +

              To see if Scylla Manager is fully up and running we can check their logs. +To do this, execute following command:

              +
              kubectl -n scylla-manager logs scylla-manager-controller-0
              +
              +
              +

              The output should be something like:

              +
              {"L":"INFO","T":"2020-09-23T11:25:27.882Z","M":"Scylla Manager Controller started","version":"","build_date":"","commit":"","built_by":"","go_version":"","options":{"Name":"scylla-manager-controller-0","Namespace":"scylla-manager","LogLevel":"debug","ApiAddress":"http://127.0.0.1:5080/api/v1"},"_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"}
              +{"L":"INFO","T":"2020-09-23T11:25:28.435Z","M":"Registering Components.","_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"}
              +
              +
              +

              To check logs of Scylla Manager itself, use following command:

              +
              kubectl -n scylla-manager logs scylla-manager-scylla-manager-7bd9f968b9-w25jw
              +
              +
              +

              The output should be something like:

              +
              {"L":"INFO","T":"2020-09-23T11:26:53.238Z","M":"Scylla Manager Server","version":"2.1.2-0.20200816.76cc4dcc","pid":1,"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
              +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Using config","config":{"HTTP":"127.0.0.1:5080","HTTPS":"","TLSCertFile":"/var/lib/scylla-manager/scylla_manager.crt","TLSKeyFile":"/var/lib/scylla-manager/scylla_manager.key","TLSCAFile":"","Prometheus":":56090","PrometheusScrapeInterval":5000000000,"debug":"127.0.0.1:56112","Logger":{"Mode":"stderr","Level":"info","Development":false},"Database":{"Hosts":["scylla-manager-cluster-manager-dc-manager-rack-0.scylla-manager.svc"],"SSL":false,"User":"","Password":"","LocalDC":"","Keyspace":"scylla_manager","MigrateDir":"/etc/scylla-manager/cql","MigrateTimeout":30000000000,"MigrateMaxWaitSchemaAgreement":300000000000,"ReplicationFactor":1,"Timeout":600000000,"TokenAware":true},"SSL":{"CertFile":"","Validate":true,"UserCertFile":"","UserKeyFile":""},"Healthcheck":{"Timeout":250000000,"SSLTimeout":750000000},"Backup":{"DiskSpaceFreeMinPercent":10,"AgeMax":43200000000000},"Repair":{"SegmentsPerRepair":1,"ShardParallelMax":0,"ShardFailedSegmentsMax":100,"PollInterval":200000000,"ErrorBackoff":300000000000,"AgeMax":0,"ShardingIgnoreMsbBits":12}},"config_files":["/mnt/etc/scylla-manager/scylla-manager.yaml"],"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
              +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Checking database connectivity...","_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
              +
              +
              +

              If there are no errors in the logs, let’s spin a Scylla Cluster.

              +
              +
              +

              Cluster registration

              +

              When the Scylla Manager is fully up and running, lets create a regular instance of Scylla cluster.

              +

              See generic tutorial to spawn your cluster.

              +

              Note: If you already have some Scylla Clusters, after installing Manager they should be +automatically registered in Scylla Manager.

              +

              Once cluster reaches desired node count, cluster status will be updated with ID under which it was registered in Manager.

              +
              kubectl -n scylla describe Cluster
              +
              +[...]
              +Status:
              + Manager Id:  d1d532cd-49f2-4c97-9263-25126532803b
              + Racks:
              +   us-east-1a:
              +     Members:        3
              +     Ready Members:  3
              +     Version:        4.0.0
              +
              +
              +

              You can use this ID to talk to Scylla Manager using sctool CLI installed in Scylla Manager Pod. +You can also use Cluster name in namespace/cluster-name format.

              +
              kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list
              +
              +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b)
              +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮
              +│ Task                                                        │ Arguments                            │ Next run                       │ Status │
              +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤
              +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b            │                                      │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE   │
              +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd       │                                      │ 23 Sep 20 14:29:57 CEST (+1m)  │ NEW    │
              +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯
              +
              +
              +

              Scylla Manager by default registers recurring healhcheck tasks for Agent and for each of the enabled frontends (CQL, Alternator).

              +

              In this task listing we can see CQL and REST healthchecks.

              +
              +
              +

              Task scheduling

              +

              You can either define tasks prior Cluster creation, or for existing Cluster. +Let’s edit already running cluster definition to add repair and backup task.

              +
              kubectl -n scylla edit Cluster simple-cluster
              +
              +
              +

              Add following task definition to Cluster spec:

              +
                repairs:
              +    - name: "users repair"
              +      keyspace: ["users"]
              +      interval: "1d"
              +  backups:
              +    - name: "weekly backup"
              +      location: ["s3:cluster-backups"]
              +      retention: 3
              +      interval: "7d"
              +    - name: "daily backup"
              +      location: ["s3:cluster-backups"]
              +      retention: 7
              +      interval: "1d"
              +
              +
              +

              For full task definition configuration consult ScyllaCluster CRD.

              +

              Note: Scylla Manager Agent must have access to above bucket prior the update in order to schedule backup task. +Consult Scylla Manager documentation for details on how to set it up.

              +

              Scylla Manager Controller will spot this change and will schedule tasks in Scylla Manager.

              +
              kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list
              +
              +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b)
              +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮
              +│ Task                                                        │ Arguments                            │ Next run                       │ Status │
              +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤
              +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b            │                                      │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE   │
              +│ backup/275aae7f-c436-4fc8-bcec-479e65fb8372                 │ -L s3:cluster-backups  --retention 3 │ 23 Sep 20 14:28:58 CEST (+7d)  │ NEW    │
              +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd       │                                      │ 23 Sep 20 14:29:57 CEST (+1m)  │ NEW    │
              +│ repair/d4946360-c29d-4bb4-8b9d-619ada495c2a                 │                                      │ 23 Sep 20 14:38:42 CEST        │ NEW    │
              +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯
              +
              +
              +

              As you can see, we have two new tasks, weekly recurring backup, and one repair which should start shortly.

              +

              To check progress of run you can use following command:

              +
              kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task progress --cluster d1d532cd-49f2-4c97-9263-25126532803b repair/d4946360-c29d-4bb4-8b9d-619ada495c2a
              +Status:         RUNNING
              +Start time:     23 Sep 20 14:38:42 UTC
              +Duration:       13s
              +Progress:       2.69%
              +Datacenters:
              +  - us-east-1
              ++--------------------+-------+
              +| system_auth        | 8.06% |
              +| system_distributed | 0.00% |
              +| system_traces      | 0.00% |
              ++--------------------+-------+
              +
              +
              +

              Other tasks can be also tracked using the same command, but using different task ID. +Task IDs are present in Cluster Status as well as in task listing.

              +
              +
              +

              Clean Up

              +

              To clean up all resources associated with Scylla Manager, you can run the commands below.

              +

              NOTE: this will destroy your Scylla Manager database and delete all of its associated data.

              +
              kubectl delete -f deploy/manager-prod.yaml
              +
              +
              +
              +
              +

              Troubleshooting

              +

              Manager is not running

              +

              If the Scylla Manager does not come up, the first step would be to examine the Manager and Controller logs:

              +
              kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-controller
              +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-scylla-manager-7bd9f968b9-w25jw
              +
              +
              +

              My task wasn’t scheduled

              +

              If your task wasn’t scheduled, Cluster status will be updated with error messages for each failed task. +You can also consult Scylla Manager logs.

              +

              Example:

              +

              Following status describes error when backup task cannot be scheduled, due to lack of access to bucket:

              +
              Status:
              +  Backups:
              +    Error:     create backup target: location is not accessible: 10.100.16.62: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.100.16.62 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.107.193.33: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.107.193.33 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.109.197.60: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.109.197.60 and run "scylla-manager-agent check-location -L s3:manager-test --debug"
              +    Id:        00000000-0000-0000-0000-000000000000
              +    Interval:  0
              +    Location:
              +      s3:manager-test
              +    Name:         adhoc backup
              +    Num Retries:  3
              +    Retention:    3
              +    Start Date:   now
              +  Manager Id:     2b9dbe8c-9daa-4703-a66d-c29f63a917c8
              +  Racks:
              +    us-east-1a:
              +      Members:        3
              +      Ready Members:  3
              +      Version:        4.0.0
              +
              +
              +

              Because Controller is infinitely retrying to schedule each defined task, once permission issues will be resolved, +task should appear in task listing and Cluster status.

              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/migration.html b/v1.13/migration.html new file mode 100644 index 00000000000..f3b142d0920 --- /dev/null +++ b/v1.13/migration.html @@ -0,0 +1,771 @@ + + + + + + + + + + + + + Version migrations | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Version migrations

              +
              +

              v0.3.0 -> v1.0.0 migration

              +

              v0.3.0 used a very common name as a CRD kind (Cluster). In v1.0.0 this issue was solved by using less common kind +which is easier to disambiguate (ScyllaCluster). +This change is backward incompatible, which means manual migration is needed.

              +

              This procedure involves having two CRDs registered at the same time. We will detach Scylla Pods +from Scylla Operator for a short period to ensure that nothing is garbage collected when Scylla Operator is upgraded. +Compared to the upgrade guide where full deletion is requested, this procedure shouldn’t cause downtimes. +Although detaching resources from their controller is considered hacky. This means that you shouldn’t run procedure +out of the box on production. Make sure this procedure works well multiple times on your staging environment first.

              +

              Read the whole procedure and make sure you understand what is going on before executing any of the commands!

              +

              In case of any issues or questions regarding this procedure, you’re welcomed on our Scylla Users Slack +on #kubernetes channel.

              +
              +
              +

              Procedure

              +
                +
              1. Execute this whole procedure for each cluster sequentially. To get a list of existing clusters execute the following

                +
                kubectl -n scylla get cluster.scylla.scylladb.com
                +
                +NAME             AGE
                +simple-cluster   30m
                +
                +
                +

                All below commands will use scylla namespace and simple-cluster as a cluster name.

                +
              2. +
              3. Make sure you’re using v1.0.0 tag:

                +
                git checkout v1.0.0
                +
                +
                +
              4. +
              5. Upgrade your cert-manager to v1.0.0. If you installed it from a static file from this repo, simply execute the following:

                +
                 kubectl apply -f examples/common/cert-manager.yaml
                +
                +
                +

                If your cert-manager was installed in another way, follow official instructions on cert-manager website.

                +
              6. +
              7. deploy/operator.yaml file contains multiple resources. Extract only CustomResourceDefinition to separate file.

              8. +
              9. Install v1.0.0 CRD definition from file created in the previous step:

                +
                kubectl apply -f examples/common/crd.yaml
                +
                +
                +
              10. +
              11. Save your existing simple-cluster Cluster definition to a file:

                +
                kubectl -n scylla get cluster.scylla.scylladb.com simple-cluster -o yaml > existing-cluster.yaml
                +
                +
                +
              12. +
              13. Migrate Kind and ApiVersion to new values using:

                +
                sed -i 's/scylla.scylladb.com\/v1alpha1/scylla.scylladb.com\/v1/g' existing-cluster.yaml
                +sed -i 's/kind: Cluster/kind: ScyllaCluster/g' existing-cluster.yaml
                +
                +
                +
              14. +
              15. Install migrated CRD instance

                +
                kubectl apply -f existing-cluster.yaml
                +
                +
                +

                At this point, we should have two CRDs describing your Scylla cluster, although the new one is not controlled by the Operator.

                +
              16. +
              17. Get UUID of newly created ScyllaCluster resource:

                +
                kubectl -n scylla get ScyllaCluster simple-cluster --template="{{ .metadata.uid }}"
                +
                +12a3678d-8511-4c9c-8a48-fa78d3992694
                +
                +
                +

                Save output UUID somewhere, it will be referred as <new-cluster-uid> in commands below.

                +

                Depending on your shell, you might get additional ‘%’ sign at the end of UUID, make sure to remove it!

                +
              18. +
              19. Upgrade ClusterRole attached to each of the Scylla nodes to grant them permission to lookup Scylla clusters:

                +
                kubectl patch ClusterRole simple-cluster-member --type "json" -p '[{"op":"add","path":"/rules/-","value":{"apiGroups":["scylla.scylladb.com"],"resources":["scyllaclusters"],"verbs":["get"]}}]'
                +
                +
                +

                Amend role name according to your cluster name, it should look like <scylla-cluster-name>-member.

                +
              20. +
              21. Get a list of all Services associated with your cluster. First get list of all services:

                +
                 kubectl -n scylla get svc -l "scylla/cluster=simple-cluster"
                +
                + NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
                + simple-cluster-client                   ClusterIP   None           <none>        9180/TCP                                                          109m
                + simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.23.96    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   109m
                + simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.66.22    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   108m
                + simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.246.25   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   106m
                +
                +
                +
                +
              22. +
              23. For each service, change its ownerReference to point to new CRD instance:

                +
                 kubectl -n scylla patch svc <cluster-svc-name> --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":"<new-cluster-uid>"}]'
                +
                +
                +

                Replace <cluster-svc-name> with Service name, and <new-cluster-uid> with saved UUID from one of the previous steps.

                +
              24. +
              25. Get a list of all Services again to see if none was deleted. Check also “Age” column, it shouldn’t be lower than previous result.

                +
                 kubectl -n scylla get svc -l "scylla/cluster=simple-cluster"
                +
                + NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
                + simple-cluster-client                   ClusterIP   None           <none>        9180/TCP                                                          110m
                + simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.23.96    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   110m
                + simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.66.22    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   109m
                + simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.246.25   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   107m
                +
                +
                +
                +
              26. +
              27. Get a list of StatefulSets associated with your cluster:

                +
                kubectl -n scylla get sts -l "scylla/cluster=simple-cluster"
                +
                +NAME                                  READY   AGE
                +simple-cluster-us-east-1-us-east-1a   3/3     104m
                +
                +
                +
              28. +
              29. For each StatefulSet from previous step, change its ownerReference to point to new CRD instance.

                +
                 kubectl -n scylla patch sts <cluster-sts-name> --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":"<new-cluster-uid>"}]'
                +
                +
                +

                Replace <cluster-sts-name> with StatefulSet name, and <new-cluster-uid> with saved UUID from one of the previous steps.

                +
              30. +
              31. Now when all k8s resources bound to Scylla are attached to new CRD, we can remove 0.3.0 Operator and old CRD definition. +Checkout v0.3.0 version, and remove Scylla Operator, and old CRD:

                +
                 git checkout v0.3.0
                + kubectl delete -f examples/generic/operator.yaml
                +
                +
                +
              32. +
              33. Checkout v1.0.0, and install upgraded Scylla Operator:

                +
                 git checkout v1.0.0
                + kubectl apply -f deploy/operator.yaml
                +
                +
                +
              34. +
              35. Wait until Scylla Operator boots up:

                +
                 kubectl -n scylla-operator-system wait --for=condition=ready pod --all --timeout=600s
                +
                +
                +
              36. +
              37. Get a list of StatefulSets associated with your cluster:

                +
                kubectl -n scylla get sts -l "scylla/cluster=simple-cluster"
                +
                +NAME                                  READY   AGE
                +simple-cluster-us-east-1-us-east-1a   3/3     104m
                +
                +
                +
              38. +
              39. For each StatefulSet from previous step, change its sidecar container image to v1.0.0, and wait until change will be propagated. This step will initiate a rolling restart of pods one by one.

                +
                kubectl -n scylla patch sts <cluster-sts> --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/initContainers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]'
                +kubectl -n scylla rollout status sts <cluster-sts>
                +
                +
                +

                Replace <cluster-sts-name> with StatefulSet name.

                +
              40. +
              41. If you’re using Scylla Manager, bump Scylla Manager Controller image to v1.0.0

                +
                 kubectl -n scylla-manager-system patch sts scylla-manager-controller --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]'
                +
                +
                +
              42. +
              43. Your Scylla cluster is now migrated to v1.0.0.

              44. +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/monitoring.html b/v1.13/monitoring.html new file mode 100644 index 00000000000..b2d3cc16155 --- /dev/null +++ b/v1.13/monitoring.html @@ -0,0 +1,816 @@ + + + + + + + + + + + + + Monitoring | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Monitoring

              +

              Scylla Operator 1.8 introduced a new API resource ScyllaDBMonitoring, allowing users to deploy a managed monitoring +setup for their Scylla Clusters.

              +
              apiVersion: scylla.scylladb.com/v1alpha1
              +kind: ScyllaDBMonitoring
              +metadata:
              +  name: example
              +spec:
              +  type: Platform
              +  endpointsSelector:
              +    matchLabels:
              +      app.kubernetes.io/name: scylla
              +      scylla-operator.scylladb.com/scylla-service-type: member
              +      scylla/cluster: replace-with-your-scyllacluster-name
              +  components:
              +    prometheus:
              +      storage:
              +        volumeClaimTemplate:
              +          spec:
              +            resources:
              +              requests:
              +                storage: 1Gi
              +    grafana:
              +      exposeOptions:
              +        webInterface:
              +          ingress:
              +            ingressClassName: haproxy
              +            dnsDomains:
              +            - test-grafana.test.svc.cluster.local
              +            annotations:
              +              haproxy-ingress.github.io/ssl-passthrough: "true"
              +
              +
              +

              For details, refer to the below command:

              +
              $ kubectl explain scylladbmonitorings.scylla.scylladb.com/v1alpha1
              +
              +
              +
              +

              Deploy managed monitoring

              +

              Note: as of v1.8, ScyllaDBMonitoring is experimental. The API is currently in version v1alpha1 and may change in future versions.

              +
              +

              Requirements

              +

              Before you can set up your ScyllaDB monitoring, you need Scylla Operator already installed in your Kubernetes cluster. +For more information on how to deploy Scylla Operator, see:

              + +

              The above example of the monitoring setup also makes use of HAProxy Ingress and Prometheus Operator. +You can deploy them in your Kubernetes cluster using the provided third party examples. If you already have them deployed +in your cluster, you can skip the below steps.

              +
              +

              Deploy Prometheus Operator

              +

              Deploy Prometheus Operator using kubectl:

              +
              $ kubectl -n prometheus-operator apply --server-side -f ./examples/third-party/prometheus-operator
              +
              +
              +
              +
              Wait for Prometheus Operator to roll out
              +
              $ kubectl -n prometheus-operator rollout status --timeout=5m deployments.apps/prometheus-operator
              +deployment "prometheus-operator" successfully rolled out
              +
              +
              +
              +
              +
              +

              Deploy HAProxy Ingress

              +

              Deploy HAProxy Ingress using kubectl:

              +
              $ kubectl -n haproxy-ingress apply --server-side -f ./examples/third-party/haproxy-ingress
              +
              +
              +
              +
              Wait for HAProxy Ingress to roll out
              +
              $ kubectl -n haproxy-ingress rollout status --timeout=5m deployments.apps/haproxy-ingress
              +deployment "haproxy-ingress" successfully rolled out
              +
              +
              +
              +
              +
              +
              +

              Deploy ScyllaDBMonitoring

              +

              First, update the endpointsSelector in examples/monitoring/v1alpha1/scylladbmonitoring.yaml with a label +matching your ScyllaCluster instance name.

              +

              Deploy the monitoring setup using kubectl:

              +
              $ kubectl -n scylla apply --server-side -f ./examples/monitoring/v1alpha1/scylladbmonitoring.yaml
              +
              +
              +

              Scylla Operator will notice the new ScyllaDBMonitoring object, and it will reconcile all necessary resources.

              +
              +

              Wait for ScyllaDBMonitoring to roll out

              +
              $ kubectl wait --for='condition=Progressing=False' scylladbmonitorings.scylla.scylladb.com/example
              +scylladbmonitoring.scylla.scylladb.com/example condition met
              +
              +$ kubectl wait --for='condition=Degraded=False' scylladbmonitorings.scylla.scylladb.com/example
              +scylladbmonitoring.scylla.scylladb.com/example condition met
              +
              +$ kubectl wait --for='condition=Available=True' scylladbmonitorings.scylla.scylladb.com/example
              +scylladbmonitoring.scylla.scylladb.com/example condition met
              +
              +
              +
              +
              +

              Wait for Prometheus to roll out

              +
              $ kubectl rollout status --timeout=5m statefulset.apps/prometheus-example
              +statefulset rolling update complete 1 pods at revision prometheus-example-65b89d55bb...
              +
              +
              +
              +
              +

              Wait for Grafana to roll out

              +
              $ kubectl rollout status --timeout=5m deployments.apps/example-grafana
              +deployment "example-grafana" successfully rolled out
              +
              +
              +
              +
              +
              +

              Accessing Grafana

              +

              For accessing Grafana service from outside the Kubernetes cluster we recommend using an Ingress, although there are many other ways to do so. +When using Ingress, what matters is to direct your packets to the ingress controller Service/Pods and have the correct TLS SNI field set by the caller when reaching out to the service, so it is routed properly, and your client can successfully validate the grafana serving certificate. +This is easier when you are using a real DNS domain that resolves to your Ingress controller’s IP address but most clients and tools allow setting the SNI field manually.

              +
              +
              +

              Prerequisites

              +

              To access Grafana, you first need to collect the serving CA and the credentials.

              +
              $ GRAFANA_SERVING_CERT="$( kubectl -n scylla get secret/example-grafana-serving-ca --template '{{ index .data "tls.crt" }}' | base64 -d )"
              +$ GRAFANA_USER="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "username" }}' | base64 -d )"
              +$ GRAFANA_PASSWORD="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "password" }}' | base64 -d )"
              +
              +
              +
              +
              +

              Connecting through Ingress using a resolvable domain

              +

              In production clusters, the Ingress controller and appropriate DNS records should be set up already. Often there is already a generic wildcard record like *.app.mydomain pointing to the Ingress controller’s external IP. For custom service domains, it is usually a CNAME pointing to the Ingress controller’s A record.

              +

              Note: The ScyllaDBMonitoring example creates an Ingress object with test-grafana.test.svc.cluster.local DNS domain that you should adjust to your domain. Below examples use example-grafana.apps.mydomain.

              +

              Note: To test a resolvable domain from your machine without creating DNS records, you can adjust /etc/hosts or similar.

              +
              $ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://example-grafana.apps.mydomain" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}"
              +200
              +
              +
              +
              +
              +

              Connecting through Ingress using an unresolvable domain

              +

              To connect to an Ingress without a resolvable domain you first need to find out your Ingress controller’s IP that can be resolved externally. Again, there are many ways to do so beyond the below examples.

              +

              Unless stated otherwise, we assume your Ingress is running on port 443.

              +
              $ INGRESS_PORT=443
              +
              +
              +
              +

              Variants

              +
              +
              Ingress ExternalIP
              +

              When you are running in a real cluster there is usually a cloud LoadBalancer or a bare metal alternative providing you with an externally reachable IP address.

              +
              $ INGRESS_IP="$( kubectl -n=haproxy-ingress get service/haproxy-ingress --template='{{ ( index .status.loadBalancer.ingress 0 ).ip }}' )"
              +
              +
              +
              +
              +
              Ingress NodePort
              +

              NodePort is slightly less convenient, but it’s available in development clusters as well.

              +
              $ INGRESS_IP="$( kubectl get nodes --template='{{ $internal_ip := "" }}{{ $external_ip := "" }}{{ range ( index .items 0 ).status.addresses }}{{ if eq .type "InternalIP" }}{{ $internal_ip = .address }}{{ else if eq .type "ExternalIP" }}{{ $external_ip = .address }}{{ end }}{{ end }}{{ if $external_ip }}{{ $external_ip }}{{ else }}{{ $internal_ip }}{{ end }}' )"
              +$ INGRESS_PORT="$( kubectl -n=haproxy-ingress get services/haproxy-ingress --template='{{ range .spec.ports }}{{ if eq .port 443 }}{{ .nodePort }}{{ end }}{{ end }}' )"
              +
              +
              +
              +
              +
              Connection
              +
              $ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://test-grafana.test.svc.cluster.local:${INGRESS_PORT}" --resolve "test-grafana.test.svc.cluster.local:${INGRESS_PORT}:${INGRESS_IP}" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}"
              +200
              +
              +
              +
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/multidc/eks.html b/v1.13/multidc/eks.html new file mode 100644 index 00000000000..9a17420ddd5 --- /dev/null +++ b/v1.13/multidc/eks.html @@ -0,0 +1,800 @@ + + + + + + + + + + + + + Build multiple Amazon EKS clusters with inter-Kubernetes networking | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Build multiple Amazon EKS clusters with inter-Kubernetes networking

              +

              This document describes the process of creating multiple Amazon EKS clusters in different regions, using separate VPCs, and explains the steps necessary for configuring inter-Kubernetes networking between the clusters. +The interconnected clusters can serve as a platform for deploying a multi-datacenter ScyllaDB cluster.

              +

              This guide will walk you through the process of creating and configuring EKS clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference.

              +
              +

              Prerequisites

              +

              To follow the below guide, you first need to install and configure the tools that you will need to create and manage AWS and Kubernetes resources:

              +
                +
              • eksctl – A command line tool for working with EKS clusters.

              • +
              • kubectl – A command line tool for working with Kubernetes clusters.

              • +
              +

              For more information see Getting started with Amazon EKS – eksctl in AWS documentation.

              +
              +
              +

              Create EKS clusters

              +
              +

              Create the first EKS cluster

              +

              Below is the required specification for the first cluster.

              +
              apiVersion: eksctl.io/v1alpha5
              +kind: ClusterConfig
              +
              +metadata:
              +  name: scylladb-us-east-1
              +  region: us-east-1
              +
              +availabilityZones:
              +- us-east-1a
              +- us-east-1b
              +- us-east-1c
              +
              +vpc:
              +  cidr: 10.0.0.0/16
              +
              +nodeGroups:
              +  ...
              +
              +
              +

              Specify the first cluster’s configuration file and save it as cluster-us-east-1.yaml. +Refer to Creating an EKS cluster section of ScyllaDB Operator documentation for the reference of the configuration of node groups.

              +

              To deploy the first cluster, use the below command:

              +
              eksctl create cluster -f=cluster-us-east-1.yaml
              +
              +
              +

              Run the following command to learn the status and VPC ID of the cluster:

              +
              eksctl get cluster --name=scylladb-us-east-1 --region=us-east-1
              +
              +
              +

              You will need to get the cluster’s context for future operations. To do so, use the below command:

              +
              kubectl config current-context
              +
              +
              +

              For any kubectl commands that you will want to run against this cluster, use the --context flag with the value returned by the above command.

              +
              +

              Deploy ScyllaDB Operator

              +

              Once the cluster is ready, refer to Deploying Scylla on a Kubernetes Cluster to deploy the ScyllaDB Operator and its prerequisites.

              +
              +
              +

              Prepare nodes for running ScyllaDB

              +

              Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in Deploying Scylla on EKS in ScyllaDB Operator documentation.

              +
              +
              +
              +

              Create the second EKS cluster

              +

              Below is the required specification for the second cluster. As was the case with the first cluster, the provided values are only exemplary and can be adjusted according to your needs.

              +
              +

              Caution

              +

              It is required that the VPCs of the two EKS clusters have non-overlapping IPv4 network ranges.

              +
              +
              apiVersion: eksctl.io/v1alpha5
              +kind: ClusterConfig
              +
              +metadata:
              +  name: scylladb-us-east-2
              +  region: us-east-2
              +
              +availabilityZones:
              +- us-east-2a
              +- us-east-2b
              +- us-east-2c
              +
              +vpc:
              +  cidr: 172.16.0.0/16
              +
              +nodeGroups:
              +  ...
              +
              +
              +

              Follow analogous steps to create the second EKS cluster and prepare it for running ScyllaDB.

              +
              +
              +
              +

              Configure the network

              +

              The prepared Kubernetes clusters each have a dedicated VPC network. +To be able to route the traffic between the two VPC networks, you need to create a networking connection between them, otherwise known as VPC peering.

              +
              +

              Create VPC peering

              +

              Refer to Create a VPC peering connection in AWS documentation for instructions on creating a VPC peering connection between the two earlier created VPCs.

              +

              In this example, the ID of the created VPC peering connection is pcx-08077dcc008fbbab6.

              +
              +
              +

              Update route tables

              +

              To enable private IPv4 traffic between the instances in the VPC peered network, you need to establish a communication channel by adding a route to the route tables associated with all the subnets associated with the instances for both VPCs. +The destination of the new route in a given route table is the CIDR of the VPC of the other cluster and the target is the ID of the VPC peering connection.

              +

              The following is an example of the route tables that enable communication of instances in two peered VPCs. Each table has a local route and the added route which sends traffic targeted at the other VPC to the peered network connection. The other preconfigured routes are omitted for readability.

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              Route tableDestinationTarget
              eksctl-scylladb-us-east-1-cluster/PublicRouteTable10.0.0.0/16local
              172.16.0.0/16pcx-08077dcc008fbbab6
              eksctl-scylladb-us-east-2-cluster/PublicRouteTable172.16.0.0/16local
              10.0.0.0/16pcx-08077dcc008fbbab6
              +

              Refer to Update your route tables for a VPC peering connection in AWS documentation for more information.

              +
              +
              +

              Update security groups

              +

              To allow traffic to flow to and from instances associated with security groups in the peered VPC, you need to update the inbound rules of the VPCs’ shared security groups.

              +

              Below is an example of the inbound rules that to be added to the corresponding security groups of the two VPCs.

              + + + + + + + + + + + + + + + + + + + + + + + +

              Security group name

              Type

              Protocol

              Port range

              Source

              eksctl-scylladb-us-east-1-cluster-ClusterSharedNodeSecurityGroup-TD05V9EVU3B8

              All traffic

              All

              All

              Custom 172.16.0.0/16

              eksctl-scylladb-us-east-2-cluster-ClusterSharedNodeSecurityGroup-1FR9YDLU0VE7M

              All traffic

              All

              All

              Custom 10.0.0.0/16

              +

              The names of the shared security groups of your VPCs should be similar to the ones presented in the example.

              +
              +

              Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters in ScyllaDB Operator documentation for guidance.

              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/multidc/gke.html b/v1.13/multidc/gke.html new file mode 100644 index 00000000000..1a4c8cd0d6d --- /dev/null +++ b/v1.13/multidc/gke.html @@ -0,0 +1,770 @@ + + + + + + + + + + + + + Build multiple GKE clusters with inter-Kubernetes networking | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Build multiple GKE clusters with inter-Kubernetes networking

              +

              This document describes the process of creating multiple GKE clusters in a shared VPC and explains the steps necessary for configuring inter-Kubernetes networking between clusters in different regions. +The interconnected clusters can serve as a platform for deploying a Multi Datacenter ScyllaDB cluster.

              +

              This guide will walk you through the process of creating and configuring GKE clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference.

              +
              +

              Prerequisites

              +

              To follow the below guide, you first need to install and configure the following tools that you will need to create and manage GCP and Kubernetes resources:

              +
                +
              • gcloud CLI - Google Cloud Command Line Interface, a command line tool for working with Google Cloud resources and services directly.

              • +
              • kubectl – A command line tool for working with Kubernetes clusters.

              • +
              +

              See Install the Google Cloud CLI in GCP documentation and Install Tools in Kubernetes documentation for reference.

              +
              +
              +

              Create and configure a VPC network

              +

              For the clusters to have inter-Kubernetes networking, you will create a virtual network shared between all the instances, with dedicated subnets for each of the clusters. +To create the subnets manually, create the network in custom subnet mode.

              +
              +

              Create the VPC network

              +

              Run the below command to create the network:

              +
              gcloud compute networks create scylladb --subnet-mode=custom
              +
              +
              +

              With the VPC network created, create a dedicated subnet with secondary CIDR ranges for their Pod and Service pools in each region which the clusters will reside in.

              +
              +
              +

              Create VPC network subnets

              +

              To create a subnet for the first cluster in region us-east1, run the below command:

              +
              gcloud compute networks subnets create scylladb-us-east1 \
              +    --region=us-east1 \
              +    --network=scylladb \
              +    --range=10.0.0.0/20 \
              +    --secondary-range='cluster=10.1.0.0/16,services=10.2.0.0/20'
              +
              +
              +

              To create a subnet for the second cluster in region us-west1, run the below command:

              +
              gcloud compute networks subnets create scylladb-us-west1 \
              +    --region=us-west1 \
              +    --network=scylladb \
              +    --range=172.16.0.0/20 \
              +    --secondary-range='cluster=172.17.0.0/16,services=172.18.0.0/20'
              +
              +
              +
              +

              Caution

              +

              It is required that the IPv4 address ranges of the subnets allocated for the GKE clusters do not overlap.

              +
              +

              Refer to Create a VPC-native cluster and Alias IP ranges in GKE documentation for more information about VPC native clusters and alias IP ranges.

              +
              +
              +
              +

              Create GKE clusters

              +

              With the VPC network created, you will now create two VPC native GKE clusters in dedicated regions.

              +
              +

              Create the first GKE cluster

              +

              Run the following command to create the first GKE cluster in the us-east1 region:

              +
              gcloud container clusters create scylladb-us-east1 \
              +    --location=us-east1-b \
              +    --node-locations='us-east1-b,us-east1-c' \
              +    --machine-type=n1-standard-8 \
              +    --num-nodes=1 \
              +    --disk-type=pd-ssd \
              +    --disk-size=20 \
              +    --image-type=UBUNTU_CONTAINERD \
              +    --no-enable-autoupgrade \
              +    --no-enable-autorepair \
              +    --enable-ip-alias \
              +    --network=scylladb \
              +    --subnetwork=scylladb-us-east1 \
              +    --cluster-secondary-range-name=cluster \
              +    --services-secondary-range-name=services
              +
              +
              +

              Refer to Creating a GKE cluster section of ScyllaDB Operator documentation for more information regarding the configuration and deployment of additional node pools, including the one dedicated for ScyllaDB nodes.

              +

              You will need to get the cluster’s context for future operations. To do so, use the below command:

              +
              kubectl config current-context
              +
              +
              +

              For any kubectl commands that you will want to run against this cluster, use the --context flag with the value returned by the above command.

              +
              +

              Deploy ScyllaDB Operator

              +

              Once the cluster is ready, refer to Deploying Scylla on a Kubernetes Cluster to deploy the ScyllaDB Operator and its prerequisites.

              +
              +
              +

              Prepare nodes for running ScyllaDB

              +

              Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in Deploying Scylla on GKE page of the documentation.

              +
              +
              +
              +

              Create the second GKE cluster

              +

              Run the following command to create the second GKE cluster in the us-west1 region:

              +
              gcloud container clusters create scylladb-us-west1 \
              +    --location=us-west1-b \
              +    --node-locations='us-west1-b,us-west1-c' \
              +    --machine-type=n1-standard-8 \
              +    --num-nodes=1 \
              +    --disk-type=pd-ssd \
              +    --disk-size=20 \
              +    --image-type=UBUNTU_CONTAINERD \
              +    --no-enable-autoupgrade \
              +    --no-enable-autorepair \
              +    --enable-ip-alias \
              +    --network=scylladb \
              +    --subnetwork=scylladb-us-west1 \
              +    --cluster-secondary-range-name=cluster \
              +    --services-secondary-range-name=services
              +
              +
              +

              Follow analogous steps to create the second GKE cluster and prepare it for running ScyllaDB.

              +
              +
              +
              +

              Configure the firewall rules

              +

              When creating a cluster, GKE creates several ingress firewall rules that enable the instances to communicate with each other. +To establish interconnectivity between the two created Kubernetes clusters, you will now add the allocated IPv4 address ranges to their corresponding source address ranges.

              +

              First, retrieve the name of the firewall rule associated with the first cluster, which permits traffic between all Pods on a cluster, as required by the Kubernetes networking model. +The rule name is in the following format: gke-[cluster-name]-[cluster-hash]-all.

              +

              To retrieve it, run the below command:

              +
              gcloud compute firewall-rules list --filter='name~gke-scylladb-us-east1-.*-all'
              +
              +
              +

              The output should resemble the following:

              +
              NAME                                NETWORK   DIRECTION  PRIORITY  ALLOW                     DENY  DISABLED
              +gke-scylladb-us-east1-f17db261-all  scylladb  INGRESS    1000      udp,icmp,esp,ah,sctp,tcp        False
              +
              +
              +

              Modify the rule by updating the rule’s source ranges with the allocated Pod IPv4 address ranges of both clusters:

              +
              gcloud compute firewall-rules update gke-scylladb-us-east1-f17db261-all --source-ranges='10.1.0.0/16,172.17.0.0/16'
              +
              +
              +

              Follow the analogous steps for the other cluster. In this example, its corresponding firewall rule name is gke-scylladb-us-west1-0bb60902-all. To update it, you would run:

              +
              gcloud compute firewall-rules update gke-scylladb-us-west1-0bb60902-all --source-ranges='10.1.0.0/16,172.17.0.0/16'
              +
              +
              +

              Refer to Automatically created firewall rules in GKE documentation for more information.

              +
              +

              Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters in ScyllaDB Operator documentation for guidance.

              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/multidc/index.html b/v1.13/multidc/index.html new file mode 100644 index 00000000000..9ab330b8bc2 --- /dev/null +++ b/v1.13/multidc/index.html @@ -0,0 +1,611 @@ + + + + + + + + + + + + + Deploying multi-datacenter ScyllaDB clusters in Kubernetes | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Deploying multi-datacenter ScyllaDB clusters in Kubernetes

              +

              Prepare a platform for a multi datacenter ScyllaDB cluster deployment:

              + +

              Deploy a multi-datacenter ScyllaDB cluster in Kubernetes:

              + +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/multidc/multidc.html b/v1.13/multidc/multidc.html new file mode 100644 index 00000000000..b76f92b6984 --- /dev/null +++ b/v1.13/multidc/multidc.html @@ -0,0 +1,1201 @@ + + + + + + + + + + + + + Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters

              +

              This document describes the process of deploying a Multi Datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters.

              +

              This guide will walk you through the example procedure of deploying two datacenters in distinct regions of a selected cloud provider.

              +
              +

              Note

              +

              This guide is dedicated to deploying multi-datacenter ScyllaDB clusters and does not discuss unrelated configuration options. +For details of ScyllaDB cluster deployments and their configuration, refer to Deploying Scylla on a Kubernetes Cluster in ScyllaDB Operator documentation.

              +
              +
              +

              Prerequisites

              +

              As this document describes the procedure of deploying a Multi Datacenter ScyllaDB cluster, you are expected to have the required infrastructure prepared. +Let’s assume two interconnected Kubernetes clusters, capable of communicating with each other over PodIPs, with each cluster meeting the following requirements:

              +
                +
              • a node pool dedicated to ScyllaDB nodes composed of at least 3 nodes running in different zones (with unique topology.kubernetes.io/zone label), configured to run ScyllaDB, each labeled with scylla.scylladb.com/node-type: scylla

              • +
              • running ScyllaDB Operator and its prerequisites

              • +
              • running a storage provisioner capable of provisioning XFS volumes of StorageClass scylladb-local-xfs in each of the nodes dedicated to ScyllaDB instances

              • +
              +

              You can refer to one of our guides describing the process of preparing such infrastructure:

              + +

              Additionally, to follow the below guide, you need to install and configure the following tools that you will need to manage Kubernetes resources:

              +
                +
              • kubectl – A command line tool for working with Kubernetes clusters.

              • +
              +

              See Install Tools in Kubernetes documentation for reference.

              +
              +
              +

              Multi Datacenter ScyllaDB Cluster

              +

              In v1.11, ScyllaDB Operator introduced support for manual multi-datacenter ScyllaDB cluster deployments.

              +
              +

              Warning

              +

              ScyllaDB Operator only supports manual configuration of multi-datacenter ScyllaDB clusters. +In other words, although ScyllaCluster API exposes the machinery necessary for setting up multi-datacenter ScylaDB clusters, the ScyllaDB Operator only automates operations for a single datacenter.

              +

              Operations related to multiple datacenters may require manual intervention of a human operator. +Most notably, destroying one of the Kubernetes clusters or ScyllaDB datacenters is going to leave DN nodes behind in other datacenters, and their removal has to be carried out manually.

              +
              +

              The main mechanism used to set up a manual multi-datacenter ScyllaDB cluster is a field in ScyllaCluster’s specification - externalSeeds.

              +
              +

              External seeds

              +

              The externalSeeds field in ScyllaCluster’s specification enables control over external seeds that are propagated to ScyllaDB binary as --seed-provider-parameters seeds=<external-seeds>. +In this context, external should be understood as “external to the datacenter being specified by the API”. +The provided seeds are used by the nodes as initial points of contact, which allows them to discover the cluster ring topology when joining it.

              +

              Refer to Scylla Seed Nodes in ScyllaDB documentation for more information regarding the function of seed nodes in ScyllaDB. +For more details regarding the function and implementation of external seeds, refer to the original enhancement proposal.

              +
              +
              +

              Networking

              +

              Since this guide assumes interconnectivity over PodIPs of the Kubernetes clusters, you are going to configure the ScyllaDB cluster’s nodes to communicate over PodIPs. +This is enabled by a subset of exposeOptions specified in ScyllaCluster API, introduced in v1.11.

              +

              For this particular setup, define the ScyllaClusers as follows:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +spec:
              +  exposeOptions:
              +    nodeService:
              +      type: Headless
              +    broadcastOptions:
              +      clients:
              +        type: PodIP
              +      nodes:
              +        type: PodIP
              +
              +
              +

              However, other configuration options allow for the manual deployment of multi-datacenter ScyllaDB clusters in different network setups. For details, refer to Exposing ScyllaClusters in ScyllaDB Operator documentation.

              +
              +

              Deploy a multi-datacenter ScyllaDB Cluster

              +
              +
              +

              Using context

              +

              Let’s specify contexts for kubectl commands used throughout the guide. +To retrieve the context of your current cluster, run:

              +
              kubectl config current-context
              +
              +
              +

              Save the contexts of the two clusters, which you are going to deploy the datacenters in, as CONTEXT_DC1 and CONTEXT_DC2 environment variables correspondingly.

              +
              +
              +

              Deploy the first datacenter

              +

              First, run the below command to create a dedicated ‘scylla’ namespace:

              +
              kubectl --context="${CONTEXT_DC1}" create ns scylla
              +
              +
              +

              For this guide, let’s assume that your cluster is running in us-east-1 region and the nodes dedicated to running ScyllaDB nodes are running in zones us-east-1a, us-east-1b and us-east-1c correspondingly. If that is not the case, adjust the manifest accordingly.

              +
              +

              Caution

              +

              The .spec.name field of the ScyllaCluster objects represents the ScyllaDB cluster name and has to be consistent across all datacenters of this ScyllaDB cluster. +The names of the datacenters, specified in .spec.datacenter.name, have to be unique across the entire multi-datacenter cluster.

              +

              For more information see Create a ScyllaDB Cluster - Multi Data Centers (DC) in ScyllaDB documentation.

              +
              +

              Save the ScyllaCluster manifest in dc1.yaml:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +metadata:
              +  name: scylla-cluster
              +  namespace: scylla
              +spec:
              +  agentVersion: 3.2.8
              +  version: 5.4.3
              +  cpuset: true
              +  sysctls:
              +  - "fs.aio-max-nr=2097152"
              +  automaticOrphanedNodeCleanup: true
              +  exposeOptions:
              +    broadcastOptions:
              +      clients:
              +        type: PodIP
              +      nodes:
              +        type: PodIP
              +    nodeService:
              +      type: Headless
              +  datacenter:
              +    name: us-east-1
              +    racks:
              +    - name: a
              +      members: 1
              +      storage:
              +        storageClassName: scylladb-local-xfs
              +        capacity: 1800G
              +      agentResources:
              +        requests:
              +          cpu: 100m
              +          memory: 250M
              +        limits:
              +          cpu: 100m
              +          memory: 250M
              +      resources:
              +        requests:
              +          cpu: 7
              +          memory: 56G
              +        limits:
              +          cpu: 7
              +          memory: 56G
              +      placement:
              +        podAntiAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +          - topologyKey: kubernetes.io/hostname
              +            labelSelector:
              +              matchLabels:
              +                app.kubernetes.io/name: scylla
              +                scylla/cluster: scylla-cluster
              +        nodeAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +            nodeSelectorTerms:
              +            - matchExpressions:
              +              - key: topology.kubernetes.io/zone
              +                operator: In
              +                values:
              +                - us-east-1a
              +              - key: scylla.scylladb.com/node-type
              +                operator: In
              +                values:
              +                - scylla
              +        tolerations:
              +        - key: role
              +          operator: Equal
              +          value: scylla-clusters
              +          effect: NoSchedule
              +    - name: b
              +      members: 1
              +      storage:
              +        storageClassName: scylladb-local-xfs
              +        capacity: 1800G
              +      agentResources:
              +        requests:
              +          cpu: 100m
              +          memory: 250M
              +        limits:
              +          cpu: 100m
              +          memory: 250M
              +      resources:
              +        requests:
              +          cpu: 7
              +          memory: 56G
              +        limits:
              +          cpu: 7
              +          memory: 56G
              +      placement:
              +        podAntiAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +          - topologyKey: kubernetes.io/hostname
              +            labelSelector:
              +              matchLabels:
              +                app.kubernetes.io/name: scylla
              +                scylla/cluster: scylla-cluster
              +        nodeAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +            nodeSelectorTerms:
              +            - matchExpressions:
              +              - key: topology.kubernetes.io/zone
              +                operator: In
              +                values:
              +                - us-east-1b
              +              - key: scylla.scylladb.com/node-type
              +                operator: In
              +                values:
              +                - scylla
              +        tolerations:
              +        - key: role
              +          operator: Equal
              +          value: scylla-clusters
              +          effect: NoSchedule
              +    - name: c
              +      members: 1
              +      storage:
              +        storageClassName: scylladb-local-xfs
              +        capacity: 1800G
              +      agentResources:
              +        requests:
              +          cpu: 100m
              +          memory: 250M
              +        limits:
              +          cpu: 100m
              +          memory: 250M
              +      resources:
              +        requests:
              +          cpu: 7
              +          memory: 56G
              +        limits:
              +          cpu: 7
              +          memory: 56G
              +      placement:
              +        podAntiAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +          - topologyKey: kubernetes.io/hostname
              +            labelSelector:
              +              matchLabels:
              +                app.kubernetes.io/name: scylla
              +                scylla/cluster: scylla-cluster
              +        nodeAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +            nodeSelectorTerms:
              +            - matchExpressions:
              +              - key: topology.kubernetes.io/zone
              +                operator: In
              +                values:
              +                - us-east-1c
              +              - key: scylla.scylladb.com/node-type
              +                operator: In
              +                values:
              +                - scylla
              +        tolerations:
              +        - key: role
              +          operator: Equal
              +          value: scylla-clusters
              +          effect: NoSchedule
              +
              +
              +

              Apply the manifest:

              +
              kubectl --context="${CONTEXT_DC1}" apply --server-side -f=dc1.yaml
              +
              +
              +

              Wait for the cluster to be fully rolled out:

              +
              kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
              +
              +
              +
              scyllacluster.scylla.scylladb.com/scylla-cluster condition met
              +
              +
              +
              kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
              +
              +
              +
              scyllacluster.scylla.scylladb.com/scylla-cluster condition met
              +
              +
              +
              kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster
              +
              +
              +
              scyllacluster.scylla.scylladb.com/scylla-cluster condition met
              +
              +
              +

              You can now verify that all the nodes of your cluster are in UN state:

              +
              kubectl --context="${CONTEXT_DC1}" -n=scylla exec -it pod/scylla-cluster-us-east-1-a-0 -c=scylla -- nodetool status
              +
              +
              +

              The expected output should look similar to the below:

              +
              Datacenter: us-east-1
              +=====================
              +Status=Up/Down
              +|/ State=Normal/Leaving/Joining/Moving
              +--  Address      Load       Tokens       Owns    Host ID                               Rack
              +UN  10.0.70.195  290 KB     256          ?       494277b9-121c-4af9-bd63-3d0a7b9305f7  c
              +UN  10.0.59.24   559 KB     256          ?       a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37  b
              +UN  10.0.19.237  107 KB     256          ?       64b6292a-327f-4128-852a-6004039f402e  a
              +
              +
              +
              +
              Retrieve PodIPs of ScyllaDB nodes for use as external seeds
              +
              +

              Warning

              +

              Due to the ephemeral nature of PodIPs, it is ill-advised to use them as seeds in production environments. +This is because there is a high likelihood that the Pods of your ScyllaDB clusters will change their IPs during the cluster’s lifecycle, and so the provided seeds will no longer point to the ScyllaDB nodes. +It is undesired, as the seeds provided on node’s startup may serve as fallback contact points when all of the node’s peers are unreachable. +In production environments, it is recommended that you use domain names or non-ephemeral IP addresses as external seeds. +PodIPs are being used in this example for the sheer simplicity of this setup.

              +
              +

              Use the below commands and their expected outputs as a reference for retrieving the PodIPs used by the cluster for inter-node communication.

              +
              kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-a-0 --template='{{ .status.podIP }}'
              +
              +
              +
              10.0.19.237
              +
              +
              +
              kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-b-0 --template='{{ .status.podIP }}'
              +
              +
              +
              10.0.59.24
              +
              +
              +
              kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-c-0 --template='{{ .status.podIP }}'
              +
              +
              +
              10.0.70.195
              +
              +
              +

              You are going to utilize the retrieved addresses as seeds for the other datacenter.

              +
              +
              +
              +

              Deploy the second datacenter

              +

              To deploy the second datacenter, you will follow similar steps.

              +

              First, create a dedicated ‘scylla’ namespace:

              +
              kubectl --context="${CONTEXT_DC2}" create ns scylla
              +
              +
              +

              Replace the values in .spec.externalSeeds of the below manifest with the Pod IP addresses that you retrieved earlier. +The provided values are going to serve as initial contact points for the joining nodes of the second datacenter.

              +

              For this guide, let’s assume that the second cluster is running in us-east-2 region and the nodes dedicated for running ScyllaDB nodes are running in zones us-east-2a, us-east-2b and us-east-2c correspondingly. If that is not the case, adjust the manifest accordingly. +Having configured it, save the manifest as dc2.yaml:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +metadata:
              +  name: scylla-cluster
              +  namespace: scylla
              +spec:
              +  agentVersion: 3.2.8
              +  version: 5.4.3
              +  cpuset: true
              +  sysctls:
              +  - "fs.aio-max-nr=2097152"
              +  automaticOrphanedNodeCleanup: true
              +  exposeOptions:
              +    broadcastOptions:
              +      clients:
              +        type: PodIP
              +      nodes:
              +        type: PodIP
              +    nodeService:
              +      type: Headless
              +  externalSeeds:
              +  - 10.0.19.237
              +  - 10.0.59.24
              +  - 10.0.70.195
              +  datacenter:
              +    name: us-east-2
              +    racks:
              +    - name: a
              +      members: 1
              +      storage:
              +        storageClassName: scylladb-local-xfs
              +        capacity: 1800G
              +      agentResources:
              +        requests:
              +          cpu: 100m
              +          memory: 250M
              +        limits:
              +          cpu: 100m
              +          memory: 250M
              +      resources:
              +        requests:
              +          cpu: 7
              +          memory: 56G
              +        limits:
              +          cpu: 7
              +          memory: 56G
              +      placement:
              +        podAntiAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +          - topologyKey: kubernetes.io/hostname
              +            labelSelector:
              +              matchLabels:
              +                app.kubernetes.io/name: scylla
              +                scylla/cluster: scylla-cluster
              +        nodeAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +            nodeSelectorTerms:
              +            - matchExpressions:
              +              - key: topology.kubernetes.io/zone
              +                operator: In
              +                values:
              +                - us-east-2a
              +              - key: scylla.scylladb.com/node-type
              +                operator: In
              +                values:
              +                - scylla
              +        tolerations:
              +        - key: role
              +          operator: Equal
              +          value: scylla-clusters
              +          effect: NoSchedule
              +    - name: b
              +      members: 1
              +      storage:
              +        storageClassName: scylladb-local-xfs
              +        capacity: 1800G
              +      agentResources:
              +        requests:
              +          cpu: 100m
              +          memory: 250M
              +        limits:
              +          cpu: 100m
              +          memory: 250M
              +      resources:
              +        requests:
              +          cpu: 7
              +          memory: 56G
              +        limits:
              +          cpu: 7
              +          memory: 56G
              +      placement:
              +        podAntiAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +          - topologyKey: kubernetes.io/hostname
              +            labelSelector:
              +              matchLabels:
              +                app.kubernetes.io/name: scylla
              +                scylla/cluster: scylla-cluster
              +        nodeAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +            nodeSelectorTerms:
              +            - matchExpressions:
              +              - key: topology.kubernetes.io/zone
              +                operator: In
              +                values:
              +                - us-east-2b
              +              - key: scylla.scylladb.com/node-type
              +                operator: In
              +                values:
              +                - scylla
              +        tolerations:
              +        - key: role
              +          operator: Equal
              +          value: scylla-clusters
              +          effect: NoSchedule
              +    - name: c
              +      members: 1
              +      storage:
              +        storageClassName: scylladb-local-xfs
              +        capacity: 1800G
              +      agentResources:
              +        requests:
              +          cpu: 100m
              +          memory: 250M
              +        limits:
              +          cpu: 100m
              +          memory: 250M
              +      resources:
              +        requests:
              +          cpu: 7
              +          memory: 56G
              +        limits:
              +          cpu: 7
              +          memory: 56G
              +      placement:
              +        podAntiAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +          - topologyKey: kubernetes.io/hostname
              +            labelSelector:
              +              matchLabels:
              +                app.kubernetes.io/name: scylla
              +                scylla/cluster: scylla-cluster
              +        nodeAffinity:
              +          requiredDuringSchedulingIgnoredDuringExecution:
              +            nodeSelectorTerms:
              +            - matchExpressions:
              +              - key: topology.kubernetes.io/zone
              +                operator: In
              +                values:
              +                - us-east-2c
              +              - key: scylla.scylladb.com/node-type
              +                operator: In
              +                values:
              +                - scylla
              +        tolerations:
              +        - key: role
              +          operator: Equal
              +          value: scylla-clusters
              +          effect: NoSchedule
              +
              +
              +

              To apply the manifest, run:

              +
              kubectl --context="${CONTEXT_DC2}" -n=scylla apply --server-side -f=dc2.yaml
              +
              +
              +

              Wait for the second datacenter to roll out:

              +
              kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
              +
              +
              +
              scyllacluster.scylla.scylladb.com/scylla-cluster condition met
              +
              +
              +
              kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
              +
              +
              +
              scyllacluster.scylla.scylladb.com/scylla-cluster condition met
              +
              +
              +
              kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster
              +
              +
              +
              scyllacluster.scylla.scylladb.com/scylla-cluster condition met
              +
              +
              +

              You can verify that the nodes have joined the existing cluster and that you are now running a multi-datacenter ScyllaDB cluster by running nodetool status with the below command:

              +
              kubectl --context="${CONTEXT_DC2}" -n=scylla exec -it pod/scylla-cluster-us-east-2-a-0 -c=scylla -- nodetool status
              +
              +
              +
              Datacenter: us-east-1
              +=====================
              +Status=Up/Down
              +|/ State=Normal/Leaving/Joining/Moving
              +--  Address        Load       Tokens       Owns    Host ID                               Rack
              +UN  10.0.70.195    705 KB     256          ?       494277b9-121c-4af9-bd63-3d0a7b9305f7  c
              +UN  10.0.59.24     764 KB     256          ?       a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37  b
              +UN  10.0.19.237    634 KB     256          ?       64b6292a-327f-4128-852a-6004039f402e  a
              +Datacenter: us-east-2
              +=====================
              +Status=Up/Down
              +|/ State=Normal/Leaving/Joining/Moving
              +--  Address        Load       Tokens       Owns    Host ID                               Rack
              +UN  172.16.39.209  336 KB     256          ?       7c30ea55-7a4f-4d93-86f7-c881772ebe62  b
              +UN  172.16.25.18   759 KB     256          ?       665dde7e-e420-4db3-8c54-ca71efd39b2e  a
              +UN  172.16.87.27   503 KB     256          ?       c19c89cb-e24c-4062-9df4-2aa90ab29a99  c
              +
              +
              +
              +
              +
              +
              +

              Scylla Manager

              +

              To integrate a multi-datacenter ScyllaDB cluster with Scylla Manager, you must deploy the Scylla Manager in only one datacenter.

              +

              In this example, let’s choose the Kubernetes cluster deployed in the first datacenter to host it. +To deploy Scylla Manager, follow the steps described in Deploying Scylla Manager on a Kubernetes Cluster +in ScyllaDB Operator documentation.

              +

              In order to define the Scylla Manager tasks, add them to the ScyllaCluster object deployed in the same Kubernetes cluster +in which your Scylla Manager is running.

              +

              Every datacenter (represented by ScyllaCluster CR) is, by default, provisioned with a new, random Scylla Manager Agent auth token. +To use Scylla Manager with multiple datacenter (represented by ScyllaClusters), you have to make sure they all use the same token.

              +

              Extract it from the first datacenter with the below command:

              +
              kubectl --context="${CONTEXT_DC1}" -n=scylla get secrets/scylla-cluster-auth-token --template='{{ index .data "auth-token.yaml" }}' | base64 -d
              +
              +
              +
              auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf
              +
              +
              +

              Save the output, replace the token with your own, and patch the secret in the second datacenter with the below command:

              +
              kubectl --context="${CONTEXT_DC2}" -n=scylla patch secret/scylla-cluster-auth-token--type='json' -p='[{"op": "add", "path": "/stringData", "value": {"auth-token.yaml": "auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf"}}]'
              +
              +
              +

              Execute a rolling restart of the nodes in DC2 to make sure they pick up the new token:

              +
              kubectl --context="${CONTEXT_DC2}" -n=scylla patch scyllacluster/scylla-cluster --type='merge' -p='{"spec": {"forceRedeploymentReason": "sync scylla-manager-agent token ('"$( date )"')"}}'
              +
              +
              +
              +
              +

              ScyllaDBMonitoring

              +

              To monitor your cluster, deploy ScyllaDBMonitoring in every datacenter independently. +To deploy ScyllaDB Monitoring, follow the steps described in Deploy managed monitoring in ScyllaDB Operator documentation.

              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/nodeoperations/automatic-cleanup.html b/v1.13/nodeoperations/automatic-cleanup.html new file mode 100644 index 00000000000..45fd0a48965 --- /dev/null +++ b/v1.13/nodeoperations/automatic-cleanup.html @@ -0,0 +1,608 @@ + + + + + + + + + + + + + Automatic cleanup and replacement in case when k8s node is lost | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Automatic cleanup and replacement in case when k8s node is lost

              +

              In case when your k8s cluster loses one of the nodes due to incident or explicit removal, Scylla Pods may become unschedulable due to PVC node affinity.

              +

              When automaticOrphanedNodeCleanup flag is enabled in your ScyllaCluster, Scylla Operator will perform automatic +node replacement of a Pod which lost his bound resources.

              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/nodeoperations/index.html b/v1.13/nodeoperations/index.html new file mode 100644 index 00000000000..7566efb36ce --- /dev/null +++ b/v1.13/nodeoperations/index.html @@ -0,0 +1,607 @@ + + + + + + + + + + + + + Node operations using Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Node operations using Scylla Operator

              + +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/nodeoperations/maintenance-mode.html b/v1.13/nodeoperations/maintenance-mode.html new file mode 100644 index 00000000000..996654c1f2d --- /dev/null +++ b/v1.13/nodeoperations/maintenance-mode.html @@ -0,0 +1,617 @@ + + + + + + + + + + + + + Maintenance mode | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + + + +
              +

              Maintenance mode

              +

              When maintenance mode is enabled, readiness probe of Scylla Pod will always return failure and liveness probe will always succeed. This causes that Pod under maintenance +is being removed from K8s Load Balancer and DNS registry but Pod itself stays alive.

              +

              This allows the Scylla Operator to interact with Scylla and Scylla dependencies inside the Pod. +For example user may turn off Scylla process, do something with the filesystem and bring the process back again.

              +

              To enable maintenance mode add scylla/node-maintenance label to service in front of Scylla Pod.

              +
              kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance=""
              +
              +
              +

              To disable, simply remove this label from service.

              +
              kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance-
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/nodeoperations/replace-node.html b/v1.13/nodeoperations/replace-node.html new file mode 100644 index 00000000000..ee74a629f64 --- /dev/null +++ b/v1.13/nodeoperations/replace-node.html @@ -0,0 +1,691 @@ + + + + + + + + + + + + + Replacing a Scylla node | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + + + +
              +

              Replacing a Scylla node

              +
              +

              Replacing a dead node

              +

              In the case of a host failure, it may not be possible to bring back the node to life.

              +

              Replace dead node operation will cause the other nodes in the cluster to stream data to the node that was replaced. +This operation can take some time (depending on the data size and network bandwidth).

              +

              This procedure is for replacing one dead node. To replace more than one dead node, run the full procedure to completion one node at a time

              +

              Procedure

              +
                +
              1. Verify the status of the node using nodetool status command, the node with status DN is down and need to be replaced

                +
                kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status
                +Datacenter: us-east-1
                +=====================
                +Status=Up/Down
                +|/ State=Normal/Leaving/Joining/Moving
                +--  Address        Load       Tokens       Owns    Host ID                               Rack
                +UN  10.43.125.110  74.63 KB   256          ?       8ebd6114-969c-44af-a978-87a4a6c65c3e  us-east-1a
                +UN  10.43.231.189  91.03 KB   256          ?       35d0cb19-35ef-482b-92a4-b63eee4527e5  us-east-1a
                +DN  10.43.43.51    74.77 KB   256          ?       1ffa7a82-c41c-4706-8f5f-4d45a39c7003  us-east-1a
                +
                +
                +
              2. +
              3. Identify service which is bound to down node by checking IP address

                +
                kubectl -n scylla get svc
                +NAME                                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                           AGE
                +simple-cluster-client                   ClusterIP   None            <none>        9180/TCP                                                          3h12m
                +simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.231.189   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h12m
                +simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.125.110   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h11m
                +simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.43.51     <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h5m
                +
                +
                +
              4. +
              5. Drain node which we would like to replace using. This command may delete your data from local disks attached to given node!

                +
                kubectl drain gke-scylla-demo-default-pool-b4b390a1-6j12 --ignore-daemonsets --delete-local-data
                +
                +
                +

                Pod which will be replaced should enter the Pending state

                +
                kubectl -n scylla get pods
                +NAME                                    READY   STATUS    RESTARTS   AGE
                +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          3h21m
                +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          3h19m
                +simple-cluster-us-east-1-us-east-1a-2   0/2     Pending   0          8m14s
                +
                +
                +
              6. +
              7. To being node replacing, add scylla/replace="" label to service bound to pod we are replacing.

                +
                kubectl -n scylla label svc simple-cluster-us-east-1-us-east-1a-2 scylla/replace=""
                +
                +
                +

                Your failed Pod should be recreated on available k8s node

                +
                kubectl -n scylla get pods
                +NAME                                    READY   STATUS    RESTARTS   AGE
                +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          3h27m
                +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          3h25m
                +simple-cluster-us-east-1-us-east-1a-2   1/2     Running   0          9s
                +
                +
                +

                Because other nodes in cluster must stream data to new node this operation might take some time depending on how much data your cluster stores. +After bootstraping is over, your new Pod should be ready to go. +Old one shouldn’t be no longer visible in nodetool status

                +
                kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status
                +Datacenter: us-east-1
                +=====================
                +Status=Up/Down
                +|/ State=Normal/Leaving/Joining/Moving
                +--  Address        Load       Tokens       Owns    Host ID                               Rack
                +UN  10.43.125.110  74.62 KB   256          ?       8ebd6114-969c-44af-a978-87a4a6c65c3e  us-east-1a
                +UN  10.43.231.189  91.03 KB   256          ?       35d0cb19-35ef-482b-92a4-b63eee4527e5  us-east-1a
                +UN  10.43.191.172  74.77 KB   256          ?       1ffa7a82-c41c-4706-8f5f-4d45a39c7003  us-east-1a
                +
                +
                +
              8. +
              9. Run the repair on the cluster to make sure that the data is synced with the other nodes in the cluster. +You can use Scylla Manager to run the repair.

              10. +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/nodeoperations/restore.html b/v1.13/nodeoperations/restore.html new file mode 100644 index 00000000000..b812def11fe --- /dev/null +++ b/v1.13/nodeoperations/restore.html @@ -0,0 +1,842 @@ + + + + + + + + + + + + + Restore from backup | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + + + +
              +

              Restore from backup

              +

              This procedure will describe how to restore from backup taken using Scylla Manager to a fresh empty cluster of any size.

              +
              +

              Warning

              +

              Restoring schema with ScyllaDB OS 5.4.X or ScyllaDB Enterprise 2024.1.X and consistent_cluster_management isn’t supported.

              +

              When creating the target ScyllaDB cluster, configure it with consistent_cluster_management: false. +Refer to API Reference to learn how to customize ScyllaDB configuration files.

              +

              When following the steps for schema restore, ensure you follow the additional steps dedicated to affected ScyllaDB versions.

              +
              +

              In the following example, the ScyllaCluster, which was used to take the backup, is called source. Backup will be restored into the ScyllaCluster named target.

              +
              + +
              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +metadata:
              +  name: source
              +spec:
              +  agentVersion: 3.2.8
              +  version: 5.4.1
              +  developerMode: true
              +  backups:
              +  - name: foo
              +    location:
              +    - s3:source-backup
              +    keyspace:
              +    - '*'
              +  datacenter:
              +    name: us-east-1
              +    racks:
              +    - name: us-east-1a
              +      members: 1
              +      storage:
              +        capacity: 1Gi
              +      resources:
              +        limits:
              +          cpu: 1
              +          memory: 1Gi
              +
              +
              +
              + +
              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +metadata:
              +  name: target
              +spec:
              +  agentVersion: 3.2.8
              +  version: 5.4.1
              +  developerMode: true
              +  datacenter:
              +    name: us-east-1
              +    racks:
              +    - name: us-east-1a
              +      members: 1
              +      storage:
              +        capacity: 1Gi
              +      resources:
              +        limits:
              +          cpu: 1
              +          memory: 1Gi
              +
              +
              +
              +
              +

              Make sure your target cluster is already registered in Scylla Manager. To get a list of all registered clusters, execute the following command:

              +
              $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool cluster list
              ++--------------------------------------+---------------------------------------+---------+-----------------+
              +| ID                                   | Name                                  | Port    | CQL credentials |
              ++--------------------------------------+---------------------------------------+---------+-----------------+
              +| af1dd5cd-0406-4974-949f-dc9842980080 | scylla/target                        | default | set             |
              +| ebd82268-efb7-407e-a540-3619ae053778 | scylla/source                        | default | set             |
              ++--------------------------------------+---------------------------------------+---------+-----------------+
              +
              +
              +

              Identify the tag of a snapshot which you want to restore. To get a list of all available snapshots, execute following command:

              +
              kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c <CLUSTER_ID> --all-clusters -L <BACKUP_LOCATION>
              +
              +
              +

              Where:

              +
                +
              • CLUSTER_ID - the name or ID of a registered cluster with access to BACKUP_LOCATION.

              • +
              • BACKUP_LOCATION - the location in which the backup is stored.

              • +
              +

              In this example, BACKUP_LOCATION is s3:source-backup. Use the name of cluster which has access to the backup location for CLUSTER_ID. +In this example, it’s scylla/target.

              +
              $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c scylla/target --all-clusters -L s3:source-backup
              +backup/ff36d7e0-af2e-458c-afe6-868e0f3396b2
              +Snapshots:
              +  - sm_20240105115931UTC (409MiB, 1 nodes)
              +Keyspaces:
              +  - system_schema (15 tables)
              +  - users (9 tables)
              +
              +
              +
              +

              Restore schema

              +

              In the below commands, we are restoring the sm_20240105115931UTC snapshot. Replace it with a tag of a snapshot that you want to restore. +Restoring consist of two steps. First, you’ll restore the schema, and then the data. +To restore schema, create a restore task manually on target ScyllaCluster by executing following command:

              +
              kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager --  sctool restore -c <CLUSTER_ID> -L <BACKUP_LOCATION> -T <SNAPSHOT_TAG> --restore-schema
              +
              +
              +

              Where:

              +
                +
              • CLUSTER_ID - a name or ID of a cluster you want to restore into.

              • +
              • BACKUP_LOCATION - the location in which the backup is stored.

              • +
              • SNAPSHOT_TAG - a tag of a snapshot that you want to restore.

              • +
              +

              When the task is created, the command will output the ID of a restore task.

              +
              $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-schema
              +restore/57228c52-7cf6-4271-8c8d-d446ff160747
              +
              +
              +

              Use the following command to check progress of the restore task:

              +
              $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/57228c52-7cf6-4271-8c8d-d446ff160747
              +Restore progress
              +Run:            0dd20cdf-abc4-11ee-951c-6e7993cf42ed
              +Status:         DONE - restart required (see restore docs)
              +Start time:     05 Jan 24 12:15:02 UTC
              +End time:       05 Jan 24 12:15:09 UTC
              +Duration:       6s
              +Progress:       100% | 100%
              +Snapshot Tag:   sm_20240105115931UTC
              +
              ++---------------+-------------+----------+----------+------------+--------+
              +| Keyspace      |    Progress |     Size |  Success | Downloaded | Failed |
              ++---------------+-------------+----------+----------+------------+--------+
              +| system_schema | 100% | 100% | 214.150k | 214.150k |   214.150k |      0 |
              ++---------------+-------------+----------+----------+------------+--------+
              +
              +
              +

              As suggested in the progress output, you will need to execute a rolling restart of the ScyllaCluster.

              +
              kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "schema restored"}}'
              +
              +
              +

              Use the following commands to wait until restart is finished:

              +
              $ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target
              +scyllacluster.scylla.scylladb.com/target condition met
              +
              +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target
              +scyllacluster.scylla.scylladb.com/target condition met
              +
              +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target
              +scyllacluster.scylla.scylladb.com/target condition met
              +
              +
              +
              +

              Caution

              +

              Restoring schema with ScyllaDB OS 5.4.X or ScyllaDB Enterprise 2024.1.X and consistent_cluster_management

              +

              After you’ve followed the above steps with a ScyllaDB target cluster with consistent_cluster_management disabled, you’ll need to enable Raft by configuring the target cluster with consistent_cluster_management: true. +Refer to API Reference to learn how to customize ScyllaDB configuration files.

              +

              You will then need to execute a rolling restart of the ScyllaCluster for the change to take effect.

              +
              kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "raft enabled"}}'
              +
              +
              +

              Use the following commands to wait until restart is finished:

              +
              $ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target
              +scyllacluster.scylla.scylladb.com/target condition met
              +
              +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target
              +scyllacluster.scylla.scylladb.com/target condition met
              +
              +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target
              +scyllacluster.scylla.scylladb.com/target condition met
              +
              +
              +
              +
              +
              +

              Restore tables

              +

              To restore the tables content, create a restore task manually on target ScyllaCluster by executing the following command:

              +
              kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c <CLUSTER_ID> -L <BACKUP_LOCATION> -T <SNAPSHOT_TAG> --restore-tables
              +
              +
              +

              Where:

              +
                +
              • CLUSTER_ID - a name or ID of a cluster you want to restore into.

              • +
              • BACKUP_LOCATION - the location in which the backup is stored.

              • +
              • SNAPSHOT_TAG - a tag of a snapshot that you want to restore.

              • +
              +

              When the task is created, the command will output the ID of a restore task.

              +
              $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-tables
              +restore/63642069-bed5-4def-ba0f-68c49e47ace1
              +
              +
              +

              Use the following command to check progress of the restore task:

              +
              $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/63642069-bed5-4def-ba0f-68c49e47ace1
              +Restore progress
              +Run:            ab015cef-abc8-11ee-9521-6e7993cf42ed
              +Status:         DONE
              +Start time:     05 Jan 24 12:48:04 UTC
              +End time:       05 Jan 24 12:48:15 UTC
              +Duration:       11s
              +Progress:       100% | 100%
              +Snapshot Tag:   sm_20240105115931UTC
              +
              ++-------------+-------------+--------+---------+------------+--------+
              +| Keyspace    |    Progress |   Size | Success | Downloaded | Failed |
              ++-------------+-------------+--------+---------+------------+--------+
              +| users       | 100% | 100% | 409MiB |  409MiB |     409MiB |      0 |
              ++-------------+-------------+--------+---------+------------+--------+
              +
              +Post-restore repair progress
              +Run:            ab015cef-abc8-11ee-9521-6e7993cf42ed
              +Status:         DONE
              +Start time:     05 Jan 24 12:48:04 UTC
              +End time:       05 Jan 24 12:48:15 UTC
              +Duration:       11s
              +Progress:       100%
              +Intensity:      1
              +Parallel:       0
              +Datacenters:
              +  - us-east-1
              +
              ++-------------+--------------+----------+----------+
              +| Keyspace    |        Table | Progress | Duration |
              ++-------------+--------------+----------+----------+
              +| users       | users        | 100%     | 0s       |
              ++-------------+--------------+----------+----------+
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/nodeoperations/scylla-upgrade.html b/v1.13/nodeoperations/scylla-upgrade.html new file mode 100644 index 00000000000..d2a3a78da26 --- /dev/null +++ b/v1.13/nodeoperations/scylla-upgrade.html @@ -0,0 +1,690 @@ + + + + + + + + + + + + + Upgrading version of Scylla | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Upgrading version of Scylla

              +

              To upgrade Scylla version using Operator user have to modify existing ScyllaCluster definition.

              +

              In this example cluster will be upgraded to version 4.4.5.

              +
              kubectl -n scylla patch ScyllaCluster simple-cluster  -p '{"spec":{"version": "4.4.5"}}' --type=merge
              +
              +
              +

              Operator supports two types of version upgrades:

              +
                +
              1. Patch upgrade

              2. +
              3. Generic upgrade

              4. +
              +

              Patch upgrade

              +

              Patch upgrade is executed when only patch version change is detected according to semantic versioning format. +Procedure simply rolls out a restart of whole cluster and upgrades Scylla container image for each node one by one.

              +

              Example: 4.0.0 -> 4.0.1

              +

              Generic upgrade

              +

              Generic upgrades are executed for the non patch version changes.

              +

              Example: 4.0.0 -> 2020.1.0 or 4.0.0 -> 4.1.0 or even 4.0.0 -> nightly

              +

              User can observe current state of upgrade in ScyllaCluster status.

              +
              kubectl -n scylla describe ScyllaCluster simple-cluster
              +[...]
              +Status:
              +  Racks:
              +    us-east-1a:
              +      Members:        3
              +      Ready Members:  3
              +      Version:        4.1.9
              +  Upgrade:
              +    Current Node:         simple-cluster-us-east-1-us-east-1a-2
              +    Current Rack:         us-east-1a
              +    Data Snapshot Tag:    so_data_20201228135002UTC
              +    From Version:         4.1.9
              +    State:                validate_upgrade
              +    System Snapshot Tag:  so_system_20201228135002UTC
              +    To Version:           4.2.2
              +
              +
              +

              Each upgrade begins with taking a snapshot of system and system_schema keyspaces on all nodes in parallel. +Name of this snapshot tag is saved in upgrade status under System Snapshot Tag.

              +

              Before nodes in rack are upgraded, underlying StatefulSet is changed to use OnDelete UpgradeStrategy. +This allows Operator have a full control over when Pod image is changed.

              +

              When a node is being upgraded, maintenance mode is enabled, then the node is drained and snapshot of all data keyspaces is taken. +Snapshot tag is saved under Data Snapshot Tag and is the same for all nodes during the procedure. +Once everything is set up, maintenance mode is disabled and Scylla Pod is deleted. Underlying StatefulSet will bring up a new +Pod with upgraded version. +Once Pod will become ready, data snapshot from this particular node is removed, and Operator moves to next node.

              +

              Once every rack is upgraded, system snapshot is removed from all nodes in parallel and previous StatefulSet UpgradeStrategy is restored. +At this point, all your nodes should be already in desired version.

              +

              Current state of upgrade can be traced using Current Node, Current Rack and State status fields.

              +
                +
              • Current Node shows which node is being upgraded.

              • +
              • Current Rack displays which rack is being upgraded.

              • +
              • State contain information at which stage upgrade is.

              • +
              +

              State can have following values:

              +
                +
              • begin_upgrade - upgrade is starting

              • +
              • check_schema_agreement - Operator waits until all nodes reach schema agreement. It waits for it for 1 minute, prints an error log message and check is retried.

              • +
              • create_system_backup - system keyspaces snapshot is being taken

              • +
              • find_next_rack - Operator finds out which rack must be upgraded next, decision is saved in Current Rack

              • +
              • upgrade_image_in_pod_spec - Image and UpgradeStrategy is upgraded in underlying StatefulSet

              • +
              • find_next_node - Operator finds out which node must be upgraded next, decision is saved in Current Node

              • +
              • enable_maintenance_mode - maintenance mode is being enabled

              • +
              • drain_node - node is being drained

              • +
              • backup_data - snapshot of data keyspaces is being taken

              • +
              • disable_maintenance_mode - maintenance mode is being disabled

              • +
              • delete_pod - Scylla Pod is being deleted

              • +
              • validate_upgrade - Operator validates if new pod enters Ready state and if Scylla version is upgraded

              • +
              • clear_data_backup - snapshot of data keyspaces is being removed

              • +
              • clear_system_backup - snapshot of system keyspaces is being removed

              • +
              • restore_upgrade_strategy - restore UpgradeStrategy in underlying StatefulSet

              • +
              • finish_upgrade - upgrade cleanup

              • +
              +

              Recovering from upgrade failure

              +

              Upgrade may get stuck on validate_upgrade stage. This happens when Scylla Pod refuses to properly boot up.

              +

              To continue with upgrade, first turn off operator by scaling Operator replicas to zero:

              +
              kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=0
              +
              +
              +

              Then user have to manually resolve issue with Scylla by checking what is the root cause of a failure in Scylla container logs. +If needed data and system keyspaces SSTable snapshots are available on the node. You can check ScyllaCluster status for their names.

              +

              Once issue is resolved and Scylla Pod is up and running (Pod is in Ready state), scale Operator back to two replicas:

              +
              kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=2
              +
              +
              +

              Operator should continue upgrade process from where it left off.

              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/objects.inv b/v1.13/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..383fdb04d9e293c5e782ea725a0a39b715c1422c GIT binary patch literal 6766 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 QXrCMue<*eSAE3w3KrTJ+00000 literal 0 HcmV?d00001 diff --git a/v1.13/performance.html b/v1.13/performance.html new file mode 100644 index 00000000000..14ada85131a --- /dev/null +++ b/v1.13/performance.html @@ -0,0 +1,694 @@ + + + + + + + + + + + + + Performance tuning | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Performance tuning

              +

              Scylla Operator 1.6 introduces a new experimental feature allowing users to optimize Kubernetes nodes.

              +
              +

              Node tuning

              +

              Starting from Operator 1.6, a new CRD called NodeConfig is available, allowing users to target Nodes which should be tuned. +When a Node is supposed to be optimized, the Scylla Operator creates a DaemonSet covering these Nodes. +Nodes matching the provided placement conditions will be subject to tuning.

              +

              Below example NodeConfig tunes nodes having scylla.scylladb.com/node-type=scylla label:

              +
              apiVersion: scylla.scylladb.com/v1alpha1
              +kind: NodeConfig
              +metadata:
              + name: cluster
              +spec:
              + placement:
              +   nodeSelector:
              +     scylla.scylladb.com/node-type: scylla
              +
              +
              +

              For more details about new CRD use:

              +
              kubectl explain nodeconfigs.scylla.scylladb.com/v1alpha1
              +
              +
              +

              For all optimizations we use a Python script available in the Scylla image called perftune. +Perftune executes the performance optmizations like tuning the kernel, network, disk devices, spreading IRQs across CPUs and more.

              +

              Tuning consists of two separate optimizations: common node tuning, and tuning based on Scylla Pods and their resource assignment. +Node tuning is executed immediately. Pod tuning is executed when Scylla Pod lands on the same Node.

              +

              Scylla works most efficently when it’s pinned to CPU and not interrupted. +One of the most common causes of context-switching are network interrupts. Packets coming to a node need to be processed, +and this requires CPU shares.

              +

              On K8s we always have at least a couple of processes running on the node: kubelet, kubernetes provider applications, daemons etc. +These processes require CPU shares, so we cannot dedicate entire node processing power to Scylla, we need to leave space for others.
              +We take advantage of it, and we pin IRQs to CPUs not used by any Scylla Pods exclusively.

              +

              Tuning resources are created in a special namespace called scylla-operator-node-tuning.

              +

              The tuning is applied only to pods with Guaranteed QoS class. Please double check your ScyllaCluster resource specification +to see if it meets all conditions.

              +
              +
              +

              Kubernetes tuning

              +

              By default, the kubelet uses the CFS quota to enforce pod CPU limits.
              +When the node runs many CPU-bound pods, the workload can move around different CPU cores depending on whether the pod +is throttled and which CPU cores are available. +However, kubelet may be configured to assign CPUs exclusively, by setting the CPU manager policy to static.

              +

              Setting up kubelet configuration is provider specific. Please check the docs for your distribution or talk to your +provider.

              +

              Only pods within the Guaranteed QoS class) can take advantage of this option. +When such pod lands on a Node, kubelet will pin them to specific CPUs, and those won’t be part of the shared pool.

              +

              In our case there are two requirements each ScyllaCluster must fulfill to receive a Guaranteed QoS class:

              +
                +
              • resource request and limits must be equal or only limits have to be provided

              • +
              • agentResources must be provided and their requests and limits must be equal, or only limits have to be provided

              • +
              +

              An example of such a ScyllaCluster that receives a Guaranteed QoS class is below:

              +
              apiVersion: scylla.scylladb.com/v1
              +kind: ScyllaCluster
              +metadata:
              +  name: guaranteed-cluster
              +  namespace: scylla
              +spec:
              +  agentVersion: 3.2.8
              +  version: 5.4.3
              +  datacenter:
              +    name: us-east-1
              +    racks:
              +    - name: us-east-1a
              +      members: 3
              +      storage:
              +        capacity: 500Gi
              +      agentResources:
              +        requests:
              +          cpu: 1
              +          memory: 1G
              +        limits:
              +          cpu: 1
              +          memory: 1G
              +      resources:
              +        requests:
              +          cpu: 4
              +          memory: 16G
              +        limits:
              +          cpu: 4
              +          memory: 16G
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/releases.html b/v1.13/releases.html new file mode 100644 index 00000000000..ae3c587ed7b --- /dev/null +++ b/v1.13/releases.html @@ -0,0 +1,854 @@ + + + + + + + + + + + + + Releases | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Releases

              +
              +

              Schedule

              +

              We are aiming to ship a new release approximately every 6 weeks. The following release schedule is only advisory, there are no commitments made to hitting these dates.

              + + + + + + + + + + + + + +

              Release

              Code freeze

              General availability

              1.13

              2024-04-25

              2024-05-09

              +
              +
              +

              Supported releases

              +

              We support the latest 2 releases of the operator to give everyone time to upgrade.

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Release

              General availability

              Support ends

              1.12

              2024-03-28

              Release of 1.14

              1.11

              2023-11-09

              Release of 1.13

              1.10

              2023-08-25

              2024-03-28

              1.9

              2023-07-04

              2023-11-09

              1.8

              2023-01-25

              2023-08-25

              1.7

              2022-01-27

              2023-07-04

              1.6

              2021-12-03

              2023-01-25

              1.5

              2021-09-16

              2022-01-27

              1.4

              2021-08-10

              2021-12-03

              1.3

              2021-06-17

              2021-09-16

              1.2

              2021-05-06

              2021-08-10

              1.1

              2021-03-22

              2021-06-17

              1.0

              2021-01-21

              2021-05-06

              +
              +

              Backport policy

              +

              Usually, only important bug fixes are eligible for being backported. +This may depend on the situation and assessment of the maintainers.

              +
              +
              +
              +

              CI/CD

              +

              We use GitHub actions for our CI/CD. Every merge to a supported branch, or a creation of a tag will automatically trigger a job to build, test and publish the container image and other artifacts like helm charts. Before we publish any image, it must pass the e2e suite.

              +
              +

              Automated promotions

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Git reference

              Type

              Container image

              master

              branch

              docker.io/scylladb/scylla-operator:latest

              vX.Y

              branch

              docker.io/scylladb/scylla-operator:X.Y

              vX.Y.Z

              tag

              docker.io/scylladb/scylla-operator:X.Y.Z

              vX.Y.Z-alpha.N

              tag

              docker.io/scylladb/scylla-operator:X.Y.Z-alpha.N

              vX.Y.Z-beta.N

              tag

              docker.io/scylladb/scylla-operator:X.Y.Z-beta.N

              vX.Y.Z-rc.N

              tag

              docker.io/scylladb/scylla-operator:X.Y.Z-rc.N

              +
              +
              +

              Generally available

              +

              GA images aren’t build from scratch but rather promoted from an existing release candidates. When we decide a release candidate has the acceptable quality and QA sings it off, the release candidate is promoted to become the GA release. This makes sure the image has exactly the same content and SHA as the tested release candidate.

              +
              +
              +
              +

              Support matrix

              +

              Support matrix table shows the version requirements for a particular scylla-operator version. Be sure to match these requirements, otherwise some functionality will not work.

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

              Component

              v1.13

              v1.12

              v1.11

              v1.10

              Kubernetes

              >=1.21

              >=1.21

              >=1.21

              >=1.21

              CRI API

              v1

              v1

              v1

              v1

              Scylla OS

              >=5.4

              >=5.0

              >=5.0

              >=5.0

              Scylla Enterprise

              >=2023.1

              >=2021.1

              >=2021.1

              >=2021.1

              Scylla Manager

              >=3.2.8

              >=3.2.6

              >=3.2

              >=2.6

              Scylla Monitoring

              (CRD)

              (CRD)

              (CRD)

              >=4.0

              +
              +

              Supported Kubernetes platforms

              +

              We officially test and recommend to use the following platforms:

              + + + + + + + + + + + + + + +

              Platform

              OS Image

              GKE

              Ubuntu

              EKS

              Amazon Linux

              +

              While our APIs generally work on any Kubernetes conformant cluster, +performance tuning and other pieces that need to interact with the host OS, kubelet, CRI, kernel, etc. might hit some incompatibilities.

              +
              +

              Warning

              +

              The following platforms are known not to work correctly at this time.

              + + + + + + + + + + + + + + + + + +

              Platform

              OS Image

              Details

              GKE

              Container OS

              EKS

              Bottlerocket

              Suspected kernel/cgroups issue that breaks available memory detection for ScyllaDB

              +
              +
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/search.html b/v1.13/search.html new file mode 100644 index 00000000000..2207cb41615 --- /dev/null +++ b/v1.13/search.html @@ -0,0 +1,585 @@ + + + + + + + + + + + + + Search | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + + + +
              + + + + + +
              + + +
              + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/searchindex.js b/v1.13/searchindex.js new file mode 100644 index 00000000000..f3264d40ed4 --- /dev/null +++ b/v1.13/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {".metadata": [[1, "metadata"], [2, "metadata"], [3, "metadata"], [4, "metadata"]], ".spec": [[1, "spec"], [2, "spec"], [3, "spec"], [4, "spec"]], ".spec.alternator": [[2, "spec-alternator"]], ".spec.alternator.servingCertificate": [[2, "spec-alternator-servingcertificate"]], ".spec.alternator.servingCertificate.operatorManagedOptions": [[2, "spec-alternator-servingcertificate-operatormanagedoptions"]], ".spec.alternator.servingCertificate.userManagedOptions": [[2, "spec-alternator-servingcertificate-usermanagedoptions"]], ".spec.backups[]": [[2, "spec-backups"]], ".spec.components": [[3, "spec-components"]], ".spec.components.grafana": [[3, "spec-components-grafana"]], ".spec.components.grafana.authentication": [[3, "spec-components-grafana-authentication"]], ".spec.components.grafana.exposeOptions": [[3, "spec-components-grafana-exposeoptions"]], ".spec.components.grafana.exposeOptions.webInterface": [[3, "spec-components-grafana-exposeoptions-webinterface"]], ".spec.components.grafana.exposeOptions.webInterface.ingress": [[3, "spec-components-grafana-exposeoptions-webinterface-ingress"]], ".spec.components.grafana.exposeOptions.webInterface.ingress.annotations": [[3, "spec-components-grafana-exposeoptions-webinterface-ingress-annotations"]], ".spec.components.grafana.placement": [[3, "spec-components-grafana-placement"]], ".spec.components.grafana.placement.nodeAffinity": [[3, "spec-components-grafana-placement-nodeaffinity"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.components.grafana.placement.podAffinity": [[3, "spec-components-grafana-placement-podaffinity"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity": [[3, "spec-components-grafana-placement-podantiaffinity"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.tolerations[]": [[3, "spec-components-grafana-placement-tolerations"]], ".spec.components.grafana.resources": [[3, "spec-components-grafana-resources"]], ".spec.components.grafana.resources.claims[]": [[3, "spec-components-grafana-resources-claims"]], ".spec.components.grafana.resources.limits": [[3, "spec-components-grafana-resources-limits"]], ".spec.components.grafana.resources.requests": [[3, "spec-components-grafana-resources-requests"]], ".spec.components.prometheus": [[3, "spec-components-prometheus"]], ".spec.components.prometheus.exposeOptions": [[3, "spec-components-prometheus-exposeoptions"]], ".spec.components.prometheus.exposeOptions.webInterface": [[3, "spec-components-prometheus-exposeoptions-webinterface"]], ".spec.components.prometheus.exposeOptions.webInterface.ingress": [[3, "spec-components-prometheus-exposeoptions-webinterface-ingress"]], ".spec.components.prometheus.exposeOptions.webInterface.ingress.annotations": [[3, "spec-components-prometheus-exposeoptions-webinterface-ingress-annotations"]], ".spec.components.prometheus.placement": [[3, "spec-components-prometheus-placement"]], ".spec.components.prometheus.placement.nodeAffinity": [[3, "spec-components-prometheus-placement-nodeaffinity"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.components.prometheus.placement.podAffinity": [[3, "spec-components-prometheus-placement-podaffinity"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity": [[3, "spec-components-prometheus-placement-podantiaffinity"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.tolerations[]": [[3, "spec-components-prometheus-placement-tolerations"]], ".spec.components.prometheus.resources": [[3, "spec-components-prometheus-resources"]], ".spec.components.prometheus.resources.claims[]": [[3, "spec-components-prometheus-resources-claims"]], ".spec.components.prometheus.resources.limits": [[3, "spec-components-prometheus-resources-limits"]], ".spec.components.prometheus.resources.requests": [[3, "spec-components-prometheus-resources-requests"]], ".spec.components.prometheus.storage": [[3, "spec-components-prometheus-storage"]], ".spec.components.prometheus.storage.annotations": [[3, "spec-components-prometheus-storage-annotations"]], ".spec.components.prometheus.storage.labels": [[3, "spec-components-prometheus-storage-labels"]], ".spec.components.prometheus.storage.volumeClaimTemplate": [[3, "spec-components-prometheus-storage-volumeclaimtemplate"]], ".spec.components.prometheus.storage.volumeClaimTemplate.metadata": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-metadata"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-datasource"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-datasourceref"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources-limits"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources-requests"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.datacenter": [[2, "spec-datacenter"]], ".spec.datacenter.racks[]": [[2, "spec-datacenter-racks"]], ".spec.datacenter.racks[].agentResources": [[2, "spec-datacenter-racks-agentresources"]], ".spec.datacenter.racks[].agentResources.claims[]": [[2, "spec-datacenter-racks-agentresources-claims"]], ".spec.datacenter.racks[].agentResources.limits": [[2, "spec-datacenter-racks-agentresources-limits"]], ".spec.datacenter.racks[].agentResources.requests": [[2, "spec-datacenter-racks-agentresources-requests"]], ".spec.datacenter.racks[].agentVolumeMounts[]": [[2, "spec-datacenter-racks-agentvolumemounts"]], ".spec.datacenter.racks[].placement": [[2, "spec-datacenter-racks-placement"]], ".spec.datacenter.racks[].placement.nodeAffinity": [[2, "spec-datacenter-racks-placement-nodeaffinity"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.datacenter.racks[].placement.podAffinity": [[2, "spec-datacenter-racks-placement-podaffinity"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity": [[2, "spec-datacenter-racks-placement-podantiaffinity"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.tolerations[]": [[2, "spec-datacenter-racks-placement-tolerations"]], ".spec.datacenter.racks[].resources": [[2, "spec-datacenter-racks-resources"]], ".spec.datacenter.racks[].resources.claims[]": [[2, "spec-datacenter-racks-resources-claims"]], ".spec.datacenter.racks[].resources.limits": [[2, "spec-datacenter-racks-resources-limits"]], ".spec.datacenter.racks[].resources.requests": [[2, "spec-datacenter-racks-resources-requests"]], ".spec.datacenter.racks[].storage": [[2, "spec-datacenter-racks-storage"]], ".spec.datacenter.racks[].storage.metadata": [[2, "spec-datacenter-racks-storage-metadata"]], ".spec.datacenter.racks[].storage.metadata.annotations": [[2, "spec-datacenter-racks-storage-metadata-annotations"]], ".spec.datacenter.racks[].storage.metadata.labels": [[2, "spec-datacenter-racks-storage-metadata-labels"]], ".spec.datacenter.racks[].volumeMounts[]": [[2, "spec-datacenter-racks-volumemounts"]], ".spec.datacenter.racks[].volumes[]": [[2, "spec-datacenter-racks-volumes"]], ".spec.datacenter.racks[].volumes[].awsElasticBlockStore": [[2, "spec-datacenter-racks-volumes-awselasticblockstore"]], ".spec.datacenter.racks[].volumes[].azureDisk": [[2, "spec-datacenter-racks-volumes-azuredisk"]], ".spec.datacenter.racks[].volumes[].azureFile": [[2, "spec-datacenter-racks-volumes-azurefile"]], ".spec.datacenter.racks[].volumes[].cephfs": [[2, "spec-datacenter-racks-volumes-cephfs"]], ".spec.datacenter.racks[].volumes[].cephfs.secretRef": [[2, "spec-datacenter-racks-volumes-cephfs-secretref"]], ".spec.datacenter.racks[].volumes[].cinder": [[2, "spec-datacenter-racks-volumes-cinder"]], ".spec.datacenter.racks[].volumes[].cinder.secretRef": [[2, "spec-datacenter-racks-volumes-cinder-secretref"]], ".spec.datacenter.racks[].volumes[].configMap": [[2, "spec-datacenter-racks-volumes-configmap"]], ".spec.datacenter.racks[].volumes[].configMap.items[]": [[2, "spec-datacenter-racks-volumes-configmap-items"]], ".spec.datacenter.racks[].volumes[].csi": [[2, "spec-datacenter-racks-volumes-csi"]], ".spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef": [[2, "spec-datacenter-racks-volumes-csi-nodepublishsecretref"]], ".spec.datacenter.racks[].volumes[].csi.volumeAttributes": [[2, "spec-datacenter-racks-volumes-csi-volumeattributes"]], ".spec.datacenter.racks[].volumes[].downwardAPI": [[2, "spec-datacenter-racks-volumes-downwardapi"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[]": [[2, "spec-datacenter-racks-volumes-downwardapi-items"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef": [[2, "spec-datacenter-racks-volumes-downwardapi-items-fieldref"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef": [[2, "spec-datacenter-racks-volumes-downwardapi-items-resourcefieldref"]], ".spec.datacenter.racks[].volumes[].emptyDir": [[2, "spec-datacenter-racks-volumes-emptydir"]], ".spec.datacenter.racks[].volumes[].ephemeral": [[2, "spec-datacenter-racks-volumes-ephemeral"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-metadata"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-datasource"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-datasourceref"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources-limits"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources-requests"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.datacenter.racks[].volumes[].fc": [[2, "spec-datacenter-racks-volumes-fc"]], ".spec.datacenter.racks[].volumes[].flexVolume": [[2, "spec-datacenter-racks-volumes-flexvolume"]], ".spec.datacenter.racks[].volumes[].flexVolume.options": [[2, "spec-datacenter-racks-volumes-flexvolume-options"]], ".spec.datacenter.racks[].volumes[].flexVolume.secretRef": [[2, "spec-datacenter-racks-volumes-flexvolume-secretref"]], ".spec.datacenter.racks[].volumes[].flocker": [[2, "spec-datacenter-racks-volumes-flocker"]], ".spec.datacenter.racks[].volumes[].gcePersistentDisk": [[2, "spec-datacenter-racks-volumes-gcepersistentdisk"]], ".spec.datacenter.racks[].volumes[].gitRepo": [[2, "spec-datacenter-racks-volumes-gitrepo"]], ".spec.datacenter.racks[].volumes[].glusterfs": [[2, "spec-datacenter-racks-volumes-glusterfs"]], ".spec.datacenter.racks[].volumes[].hostPath": [[2, "spec-datacenter-racks-volumes-hostpath"]], ".spec.datacenter.racks[].volumes[].iscsi": [[2, "spec-datacenter-racks-volumes-iscsi"]], ".spec.datacenter.racks[].volumes[].iscsi.secretRef": [[2, "spec-datacenter-racks-volumes-iscsi-secretref"]], ".spec.datacenter.racks[].volumes[].nfs": [[2, "spec-datacenter-racks-volumes-nfs"]], ".spec.datacenter.racks[].volumes[].persistentVolumeClaim": [[2, "spec-datacenter-racks-volumes-persistentvolumeclaim"]], ".spec.datacenter.racks[].volumes[].photonPersistentDisk": [[2, "spec-datacenter-racks-volumes-photonpersistentdisk"]], ".spec.datacenter.racks[].volumes[].portworxVolume": [[2, "spec-datacenter-racks-volumes-portworxvolume"]], ".spec.datacenter.racks[].volumes[].projected": [[2, "spec-datacenter-racks-volumes-projected"]], ".spec.datacenter.racks[].volumes[].projected.sources[]": [[2, "spec-datacenter-racks-volumes-projected-sources"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector-matchexpressions"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector-matchlabels"]], ".spec.datacenter.racks[].volumes[].projected.sources[].configMap": [[2, "spec-datacenter-racks-volumes-projected-sources-configmap"]], ".spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-configmap-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items-fieldref"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items-resourcefieldref"]], ".spec.datacenter.racks[].volumes[].projected.sources[].secret": [[2, "spec-datacenter-racks-volumes-projected-sources-secret"]], ".spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-secret-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken": [[2, "spec-datacenter-racks-volumes-projected-sources-serviceaccounttoken"]], ".spec.datacenter.racks[].volumes[].quobyte": [[2, "spec-datacenter-racks-volumes-quobyte"]], ".spec.datacenter.racks[].volumes[].rbd": [[2, "spec-datacenter-racks-volumes-rbd"]], ".spec.datacenter.racks[].volumes[].rbd.secretRef": [[2, "spec-datacenter-racks-volumes-rbd-secretref"]], ".spec.datacenter.racks[].volumes[].scaleIO": [[2, "spec-datacenter-racks-volumes-scaleio"]], ".spec.datacenter.racks[].volumes[].scaleIO.secretRef": [[2, "spec-datacenter-racks-volumes-scaleio-secretref"]], ".spec.datacenter.racks[].volumes[].secret": [[2, "spec-datacenter-racks-volumes-secret"]], ".spec.datacenter.racks[].volumes[].secret.items[]": [[2, "spec-datacenter-racks-volumes-secret-items"]], ".spec.datacenter.racks[].volumes[].storageos": [[2, "spec-datacenter-racks-volumes-storageos"]], ".spec.datacenter.racks[].volumes[].storageos.secretRef": [[2, "spec-datacenter-racks-volumes-storageos-secretref"]], ".spec.datacenter.racks[].volumes[].vsphereVolume": [[2, "spec-datacenter-racks-volumes-vspherevolume"]], ".spec.endpointsSelector": [[3, "spec-endpointsselector"]], ".spec.endpointsSelector.matchExpressions[]": [[3, "spec-endpointsselector-matchexpressions"]], ".spec.endpointsSelector.matchLabels": [[3, "spec-endpointsselector-matchlabels"]], ".spec.exposeOptions": [[2, "spec-exposeoptions"]], ".spec.exposeOptions.broadcastOptions": [[2, "spec-exposeoptions-broadcastoptions"]], ".spec.exposeOptions.broadcastOptions.clients": [[2, "spec-exposeoptions-broadcastoptions-clients"]], ".spec.exposeOptions.broadcastOptions.clients.podIP": [[2, "spec-exposeoptions-broadcastoptions-clients-podip"]], ".spec.exposeOptions.broadcastOptions.nodes": [[2, "spec-exposeoptions-broadcastoptions-nodes"]], ".spec.exposeOptions.broadcastOptions.nodes.podIP": [[2, "spec-exposeoptions-broadcastoptions-nodes-podip"]], ".spec.exposeOptions.cql": [[2, "spec-exposeoptions-cql"]], ".spec.exposeOptions.cql.ingress": [[2, "spec-exposeoptions-cql-ingress"]], ".spec.exposeOptions.cql.ingress.annotations": [[2, "spec-exposeoptions-cql-ingress-annotations"]], ".spec.exposeOptions.cql.ingress.labels": [[2, "spec-exposeoptions-cql-ingress-labels"]], ".spec.exposeOptions.nodeService": [[2, "spec-exposeoptions-nodeservice"]], ".spec.exposeOptions.nodeService.annotations": [[2, "spec-exposeoptions-nodeservice-annotations"]], ".spec.exposeOptions.nodeService.labels": [[2, "spec-exposeoptions-nodeservice-labels"]], ".spec.genericUpgrade": [[2, "spec-genericupgrade"]], ".spec.imagePullSecrets[]": [[2, "spec-imagepullsecrets"]], ".spec.localDiskSetup": [[1, "spec-localdisksetup"]], ".spec.localDiskSetup.filesystems[]": [[1, "spec-localdisksetup-filesystems"]], ".spec.localDiskSetup.loopDevices[]": [[1, "spec-localdisksetup-loopdevices"]], ".spec.localDiskSetup.mounts[]": [[1, "spec-localdisksetup-mounts"]], ".spec.localDiskSetup.raids[]": [[1, "spec-localdisksetup-raids"]], ".spec.localDiskSetup.raids[].RAID0": [[1, "spec-localdisksetup-raids-raid0"]], ".spec.localDiskSetup.raids[].RAID0.devices": [[1, "spec-localdisksetup-raids-raid0-devices"]], ".spec.network": [[2, "spec-network"]], ".spec.placement": [[1, "spec-placement"]], ".spec.placement.affinity": [[1, "spec-placement-affinity"]], ".spec.placement.affinity.nodeAffinity": [[1, "spec-placement-affinity-nodeaffinity"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.placement.affinity.podAffinity": [[1, "spec-placement-affinity-podaffinity"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity": [[1, "spec-placement-affinity-podantiaffinity"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.placement.nodeSelector": [[1, "spec-placement-nodeselector"]], ".spec.placement.tolerations[]": [[1, "spec-placement-tolerations"]], ".spec.podMetadata": [[2, "spec-podmetadata"]], ".spec.podMetadata.annotations": [[2, "spec-podmetadata-annotations"]], ".spec.podMetadata.labels": [[2, "spec-podmetadata-labels"]], ".spec.readinessGates[]": [[2, "spec-readinessgates"]], ".spec.repairs[]": [[2, "spec-repairs"]], ".status": [[1, "status"], [2, "status"], [3, "status"], [4, "status"]], ".status.backups[]": [[2, "status-backups"]], ".status.conditions[]": [[1, "status-conditions"], [2, "status-conditions"], [3, "status-conditions"]], ".status.nodeStatuses[]": [[1, "status-nodestatuses"]], ".status.racks": [[2, "status-racks"]], ".status.repairs[]": [[2, "status-repairs"]], ".status.upgrade": [[2, "status-upgrade"]], "API Groups and Kinds": [[5, "api-groups-and-kinds"]], "API Reference": [[5, null]], "AWS CLI": [[6, "aws-cli"]], "Accessing Grafana": [[19, "accessing-grafana"]], "Accessing the Database": [[13, "accessing-the-database"]], "Accessing the database": [[11, "accessing-the-database"], [14, "accessing-the-database"]], "Add Upstream Remote": [[10, "add-upstream-remote"]], "Architecture": [[17, "architecture"]], "Authentication and Authorization": [[7, "authentication-and-authorization"]], "Automated promotions": [[31, "automated-promotions"]], "Automatic cleanup and replacement in case when k8s node is lost": [[24, null]], "Backport policy": [[31, "backport-policy"]], "Benchmark with cassandra-stress": [[13, "benchmark-with-cassandra-stress"]], "Broadcast Options": [[12, "broadcast-options"]], "Build multiple Amazon EKS clusters with inter-Kubernetes networking": [[20, null]], "Build multiple GKE clusters with inter-Kubernetes networking": [[21, null]], "Building the project": [[10, "building-the-project"]], "CI/CD": [[31, "ci-cd"]], "Clean Up": [[13, "clean-up"], [17, "clean-up"]], "Cleanup": [[15, "cleanup"]], "Clone Your Fork": [[10, "clone-your-fork"]], "Cluster registration": [[17, "cluster-registration"]], "ClusterIP Type": [[12, "clusterip-type"]], "Collecting every resource in the cluster": [[34, "collecting-every-resource-in-the-cluster"]], "Commit History": [[10, "commit-history"]], "Commit messages": [[10, "commit-messages"]], "Configure Scylla": [[13, "configure-scylla"]], "Configure Scylla Manager Agent": [[13, "configure-scylla-manager-agent"]], "Configure container kernel parameters": [[13, "configure-container-kernel-parameters"]], "Configure environment variables": [[11, "configure-environment-variables"], [14, "configure-environment-variables"]], "Configure host networking": [[13, "configure-host-networking"]], "Configure the firewall rules": [[21, "configure-the-firewall-rules"]], "Configure the network": [[20, "configure-the-network"]], "Connecting through Ingress using a resolvable domain": [[19, "connecting-through-ingress-using-a-resolvable-domain"]], "Connecting through Ingress using an unresolvable domain": [[19, "connecting-through-ingress-using-an-unresolvable-domain"]], "Connection": [[19, "connection"]], "Contributing to Scylla Operator": [[10, null]], "Create EKS clusters": [[20, "create-eks-clusters"]], "Create GKE clusters": [[21, "create-gke-clusters"]], "Create VPC network subnets": [[21, "create-vpc-network-subnets"]], "Create VPC peering": [[20, "create-vpc-peering"]], "Create a Branch": [[10, "create-a-branch"]], "Create a Fork": [[10, "create-a-fork"]], "Create and Initialize a Scylla Cluster": [[13, "create-and-initialize-a-scylla-cluster"]], "Create and configure a VPC network": [[21, "create-and-configure-a-vpc-network"]], "Create the VPC network": [[21, "create-the-vpc-network"]], "Create the first EKS cluster": [[20, "create-the-first-eks-cluster"]], "Create the first GKE cluster": [[21, "create-the-first-gke-cluster"]], "Create the second EKS cluster": [[20, "create-the-second-eks-cluster"]], "Create the second GKE cluster": [[21, "create-the-second-gke-cluster"]], "Creating a GKE cluster": [[14, "creating-a-gke-cluster"]], "Creating an EKS cluster": [[11, "creating-an-eks-cluster"]], "Credentials": [[6, "credentials"]], "Custom CNI": [[37, "custom-cni"]], "Customization": [[15, "customization"], [15, "id1"], [15, "id3"]], "Deleting a GKE cluster": [[14, "deleting-a-gke-cluster"]], "Deleting an EKS cluster": [[11, "deleting-an-eks-cluster"]], "Deploy Cert Manager": [[13, "deploy-cert-manager"], [15, "deploy-cert-manager"]], "Deploy HAProxy Ingress": [[19, "deploy-haproxy-ingress"]], "Deploy Prometheus Operator": [[19, "deploy-prometheus-operator"]], "Deploy Scylla Manager": [[17, "deploy-scylla-manager"]], "Deploy Scylla Operator": [[13, "deploy-scylla-operator"]], "Deploy Scylla cluster": [[14, "deploy-scylla-cluster"]], "Deploy ScyllaDB Operator": [[20, "deploy-scylladb-operator"], [21, "deploy-scylladb-operator"]], "Deploy ScyllaDBMonitoring": [[19, "deploy-scylladbmonitoring"]], "Deploy a multi-datacenter ScyllaDB Cluster": [[23, "deploy-a-multi-datacenter-scylladb-cluster"]], "Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters": [[23, null]], "Deploy managed monitoring": [[19, "deploy-managed-monitoring"]], "Deploy the first datacenter": [[23, "deploy-the-first-datacenter"]], "Deploy the second datacenter": [[23, "deploy-the-second-datacenter"]], "Deploying Alternator": [[13, "deploying-alternator"]], "Deploying Local Volume Provisioner": [[11, "deploying-local-volume-provisioner"], [14, "deploying-local-volume-provisioner"]], "Deploying Scylla Manager on a Kubernetes Cluster": [[17, null]], "Deploying Scylla on EKS": [[11, null]], "Deploying Scylla on GKE": [[14, null]], "Deploying Scylla on a Kubernetes Cluster": [[13, null]], "Deploying Scylla stack using Helm Charts": [[15, null]], "Deploying ScyllaDB": [[11, "deploying-scylladb"], [14, "deploying-scylladb"]], "Deploying ScyllaDB Operator": [[11, "deploying-scylladb-operator"], [14, "deploying-scylladb-operator"]], "Deploying multi-datacenter ScyllaDB clusters in Kubernetes": [[22, null]], "Deployment Examples": [[12, "deployment-examples"]], "Description": [[1, "description"], [1, "id1"], [1, "id2"], [1, "id4"], [1, "id6"], [1, "id8"], [1, "id10"], [1, "id12"], [1, "id14"], [1, "id16"], [1, "id18"], [1, "id20"], [1, "id22"], [1, "id24"], [1, "id26"], [1, "id28"], [1, "id30"], [1, "id32"], [1, "id34"], [1, "id36"], [1, "id38"], [1, "id40"], [1, "id42"], [1, "id44"], [1, "id46"], [1, "id48"], [1, "id50"], [1, "id52"], [1, "id54"], [1, "id56"], [1, "id58"], [1, "id60"], [1, "id62"], [1, "id64"], [1, "id66"], [1, "id68"], [1, "id70"], [1, "id72"], [1, "id74"], [1, "id76"], [1, "id78"], [1, "id80"], [1, "id82"], [1, "id84"], [1, "id86"], [1, "id88"], [1, "id90"], [1, "id92"], [1, "id94"], [1, "id96"], [1, "id98"], [1, "id100"], [1, "id102"], [1, "id104"], [1, "id106"], [1, "id108"], [1, "id110"], [1, "id112"], [2, "description"], [2, "id1"], [2, "id2"], [2, "id4"], [2, "id6"], [2, "id8"], [2, "id10"], [2, "id12"], [2, "id14"], [2, "id16"], [2, "id18"], [2, "id20"], [2, "id22"], [2, "id24"], [2, "id26"], [2, "id28"], [2, "id30"], [2, "id32"], [2, "id34"], [2, "id36"], [2, "id38"], [2, "id40"], [2, "id42"], [2, "id44"], [2, "id46"], [2, "id48"], [2, "id50"], [2, "id52"], [2, "id54"], [2, "id56"], [2, "id58"], [2, "id60"], [2, "id62"], [2, "id64"], [2, "id66"], [2, "id68"], [2, "id70"], [2, "id72"], [2, "id74"], [2, "id76"], [2, "id78"], [2, "id80"], [2, "id82"], [2, "id84"], [2, "id86"], [2, "id88"], [2, "id90"], [2, "id92"], [2, "id94"], [2, "id96"], [2, "id98"], [2, "id100"], [2, "id102"], [2, "id104"], [2, "id106"], [2, "id108"], [2, "id110"], [2, "id112"], [2, "id114"], [2, "id116"], [2, "id118"], [2, "id120"], [2, "id122"], [2, "id124"], [2, "id126"], [2, "id128"], [2, "id130"], [2, "id132"], [2, "id134"], [2, "id136"], [2, "id138"], [2, "id140"], [2, "id142"], [2, "id144"], [2, "id146"], [2, "id148"], [2, "id150"], [2, "id152"], [2, "id154"], [2, "id156"], [2, "id158"], [2, "id160"], [2, "id162"], [2, "id164"], [2, "id166"], [2, "id168"], [2, "id170"], [2, "id172"], [2, "id174"], [2, "id176"], [2, "id178"], [2, "id180"], [2, "id182"], [2, "id184"], [2, "id186"], [2, "id188"], [2, "id190"], [2, "id192"], [2, "id194"], [2, "id196"], [2, "id198"], [2, "id200"], [2, "id202"], [2, "id204"], [2, "id206"], [2, "id208"], [2, "id210"], [2, "id212"], [2, "id214"], [2, "id216"], [2, "id218"], [2, "id220"], [2, "id222"], [2, "id224"], [2, "id226"], [2, "id228"], [2, "id230"], [2, "id232"], [2, "id234"], [2, "id236"], [2, "id238"], [2, "id240"], [2, "id242"], [2, "id244"], [2, "id246"], [2, "id248"], [2, "id250"], [2, "id252"], [2, "id254"], [2, "id256"], [2, "id258"], [2, "id260"], [2, "id262"], [2, "id264"], [2, "id266"], [2, "id268"], [2, "id270"], [2, "id272"], [2, "id274"], [2, "id276"], [2, "id278"], [2, "id280"], [2, "id282"], [2, "id284"], [2, "id286"], [2, "id288"], [2, "id290"], [2, "id292"], [2, "id294"], [2, "id296"], [2, "id298"], [2, "id300"], [2, "id302"], [2, "id304"], [2, "id306"], [2, "id308"], [2, "id310"], [2, "id312"], [2, "id314"], [2, "id316"], [2, "id318"], [2, "id320"], [2, "id322"], [2, "id324"], [3, "description"], [3, "id1"], [3, "id2"], [3, "id4"], [3, "id6"], [3, "id8"], [3, "id10"], [3, "id12"], [3, "id14"], [3, "id16"], [3, "id18"], [3, "id20"], [3, "id22"], [3, "id24"], [3, "id26"], [3, "id28"], [3, "id30"], [3, "id32"], [3, "id34"], [3, "id36"], [3, "id38"], [3, "id40"], [3, "id42"], [3, "id44"], [3, "id46"], [3, "id48"], [3, "id50"], [3, "id52"], [3, "id54"], [3, "id56"], [3, "id58"], [3, "id60"], [3, "id62"], [3, "id64"], [3, "id66"], [3, "id68"], [3, "id70"], [3, "id72"], [3, "id74"], [3, "id76"], [3, "id78"], [3, "id80"], [3, "id82"], [3, "id84"], [3, "id86"], [3, "id88"], [3, "id90"], [3, "id92"], [3, "id94"], [3, "id96"], [3, "id98"], [3, "id100"], [3, "id102"], [3, "id104"], [3, "id106"], [3, "id108"], [3, "id110"], [3, "id112"], [3, "id114"], [3, "id116"], [3, "id118"], [3, "id120"], [3, "id122"], [3, "id124"], [3, "id126"], [3, "id128"], [3, "id130"], [3, "id132"], [3, "id134"], [3, "id136"], [3, "id138"], [3, "id140"], [3, "id142"], [3, "id144"], [3, "id146"], [3, "id148"], [3, "id150"], [3, "id152"], [3, "id154"], [3, "id156"], [3, "id158"], [3, "id160"], [3, "id162"], [3, "id164"], [3, "id166"], [3, "id168"], [3, "id170"], [3, "id172"], [3, "id174"], [3, "id176"], [3, "id178"], [3, "id180"], [3, "id182"], [3, "id184"], [3, "id186"], [3, "id188"], [3, "id190"], [3, "id192"], [3, "id194"], [3, "id196"], [3, "id198"], [3, "id200"], [3, "id202"], [3, "id204"], [3, "id206"], [3, "id208"], [3, "id210"], [3, "id212"], [3, "id214"], [3, "id216"], [3, "id218"], [3, "id220"], [3, "id222"], [3, "id224"], [3, "id226"], [3, "id228"], [3, "id230"], [3, "id232"], [3, "id234"], [3, "id236"], [3, "id238"], [3, "id240"], [3, "id242"], [3, "id244"], [3, "id246"], [3, "id248"], [3, "id250"], [3, "id252"], [4, "description"], [4, "id1"], [4, "id2"], [4, "id4"]], "Development": [[10, "development"]], "Discovering ScyllaDB Nodes": [[8, null]], "Docker": [[34, "docker"]], "Download Scylla Operator": [[13, "download-scylla-operator"]], "EKS": [[37, "eks"]], "EKS Setup": [[11, "eks-setup"]], "Embedded cqlsh (aka localhost)": [[7, "embedded-cqlsh-aka-localhost"]], "Expose Options": [[12, "expose-options"]], "Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary": [[8, "exposing-discovery-endpoint-behind-kubernetes-cluster-boundary"]], "Exposing ScyllaCluster": [[12, null]], "External seeds": [[23, "external-seeds"]], "GKE": [[37, "gke"]], "Gather data about your cluster": [[35, "gather-data-about-your-cluster"]], "Gathering data with must-gather": [[34, null]], "Generally available": [[31, "generally-available"]], "Get support": [[35, "get-support"]], "Google Kubernetes Engine Setup": [[14, "google-kubernetes-engine-setup"]], "Headless Type": [[12, "headless-type"]], "Helm Chart repository": [[15, "helm-chart-repository"]], "In-cluster node-to-node, VPC clients-to-nodes": [[12, "in-cluster-node-to-node-vpc-clients-to-nodes"]], "In-cluster only": [[12, "in-cluster-only"]], "Ingress ExternalIP": [[19, "ingress-externalip"]], "Ingress NodePort": [[19, "ingress-nodeport"]], "Initial Setup": [[10, "initial-setup"]], "Installation": [[15, "installation"], [15, "id2"], [15, "id4"]], "Installing script third party dependencies": [[11, "installing-script-third-party-dependencies"]], "Internet": [[12, "internet"]], "Known issues": [[33, null]], "Kubernetes tuning": [[30, "kubernetes-tuning"]], "Limiting must-gather to a particular namespace": [[34, "limiting-must-gather-to-a-particular-namespace"]], "LoadBalancer Type": [[12, "loadbalancer-type"]], "Maintenance mode": [[26, null]], "Monitoring": [[15, "monitoring"], [19, null]], "Multi Datacenter ScyllaDB Cluster": [[23, "multi-datacenter-scylladb-cluster"]], "Multi VPC": [[12, "multi-vpc"]], "Networking": [[23, "networking"]], "Node Service Template": [[12, "node-service-template"]], "Node operations using Scylla Operator": [[25, null]], "Node tuning": [[30, "node-tuning"]], "NodeConfig (scylla.scylladb.com/v1alpha1)": [[1, null]], "Performance tuning": [[30, null]], "PodIP Type": [[12, "podip-type"]], "Podman": [[34, "podman"]], "Preface": [[8, "preface"]], "Prepare nodes for running ScyllaDB": [[20, "prepare-nodes-for-running-scylladb"], [21, "prepare-nodes-for-running-scylladb"]], "Prerequisites": [[10, "prerequisites"], [11, "prerequisites"], [13, "prerequisites"], [14, "prerequisites"], [15, "prerequisites"], [17, "prerequisites"], [19, "prerequisites"], [20, "prerequisites"], [21, "prerequisites"], [23, "prerequisites"], [34, "prerequisites"]], "Private clusters": [[37, "private-clusters"]], "Procedure": [[18, "procedure"]], "Releases": [[31, null]], "Remote cqlsh": [[7, "remote-cqlsh"]], "Replacing a Scylla node": [[27, null]], "Replacing a dead node": [[27, "replacing-a-dead-node"]], "Requirements": [[19, "requirements"]], "Restore from backup": [[28, null]], "Restore schema": [[28, "restore-schema"]], "Restore tables": [[28, "restore-tables"]], "Results": [[15, "results"]], "Retrieve PodIPs of ScyllaDB nodes for use as external seeds": [[23, "retrieve-podips-of-scylladb-nodes-for-use-as-external-seeds"]], "Running locally": [[13, "running-locally"]], "Running must-gather": [[34, "running-must-gather"]], "Scale a ScyllaCluster": [[13, "scale-a-scyllacluster"]], "Schedule": [[31, "schedule"]], "Scylla": [[15, "scylla"]], "Scylla Helm Chart": [[15, "scylla-helm-chart"]], "Scylla Manager": [[15, "scylla-manager"], [23, "scylla-manager"]], "Scylla Manager Agent auth token": [[13, "scylla-manager-agent-auth-token"]], "Scylla Manager Controller": [[15, "scylla-manager-controller"]], "Scylla Manager Helm Chart": [[15, "scylla-manager-helm-chart"]], "Scylla Manager does not boot up on Minikube": [[33, "scylla-manager-does-not-boot-up-on-minikube"]], "Scylla Operator Chart": [[15, "scylla-operator-chart"]], "Scylla Operator Documentation": [[16, null]], "ScyllaCluster (scylla.scylladb.com/v1)": [[2, null]], "ScyllaDB Discovery Endpoint": [[8, "scylladb-discovery-endpoint"]], "ScyllaDBMonitoring": [[23, "scylladbmonitoring"]], "ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)": [[3, null]], "ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)": [[4, null]], "ServiceClusterIP Type": [[12, "serviceclusterip-type"]], "ServiceLoadBalancerIngress Type": [[12, "serviceloadbalanceringress-type"]], "Set up monitoring": [[13, "set-up-monitoring"]], "Setting Yourself as cluster-admin": [[14, "setting-yourself-as-cluster-admin"]], "Setting up nodes for ScyllaDB": [[11, "setting-up-nodes-for-scylladb"], [14, "setting-up-nodes-for-scylladb"]], "Specification": [[1, "specification"], [2, "specification"], [3, "specification"], [4, "specification"]], "Submitting": [[10, "submitting"]], "Submitting a Pull Request": [[10, "submitting-a-pull-request"]], "Support": [[32, null]], "Support matrix": [[31, "support-matrix"]], "Support overview": [[35, null]], "Supported Kubernetes platforms": [[31, "supported-kubernetes-platforms"]], "Supported releases": [[31, "supported-releases"]], "TL;DR": [[15, "tl-dr"]], "TL;DR;": [[11, "tl-dr"], [14, "tl-dr"]], "TRUNCATE queries does not work on Minikube": [[33, "truncate-queries-does-not-work-on-minikube"]], "Task scheduling": [[17, "task-scheduling"]], "Troubleshooting": [[13, "troubleshooting"], [17, "troubleshooting"], [36, null]], "Troubleshooting installation issues": [[37, null]], "Troubleshooting issues": [[35, "troubleshooting-issues"]], "Type": [[1, "type"], [1, "id3"], [1, "id5"], [1, "id7"], [1, "id9"], [1, "id11"], [1, "id13"], [1, "id15"], [1, "id17"], [1, "id19"], [1, "id21"], [1, "id23"], [1, "id25"], [1, "id27"], [1, "id29"], [1, "id31"], [1, "id33"], [1, "id35"], [1, "id37"], [1, "id39"], [1, "id41"], [1, "id43"], [1, "id45"], [1, "id47"], [1, "id49"], [1, "id51"], [1, "id53"], [1, "id55"], [1, "id57"], [1, "id59"], [1, "id61"], [1, "id63"], [1, "id65"], [1, "id67"], [1, "id69"], [1, "id71"], [1, "id73"], [1, "id75"], [1, "id77"], [1, "id79"], [1, "id81"], [1, "id83"], [1, "id85"], [1, "id87"], [1, "id89"], [1, "id91"], [1, "id93"], [1, "id95"], [1, "id97"], [1, "id99"], [1, "id101"], [1, "id103"], [1, "id105"], [1, "id107"], [1, "id109"], [1, "id111"], [1, "id113"], [2, "type"], [2, "id3"], [2, "id5"], [2, "id7"], [2, "id9"], [2, "id11"], [2, "id13"], [2, "id15"], [2, "id17"], [2, "id19"], [2, "id21"], [2, "id23"], [2, "id25"], [2, "id27"], [2, "id29"], [2, "id31"], [2, "id33"], [2, "id35"], [2, "id37"], [2, "id39"], [2, "id41"], [2, "id43"], [2, "id45"], [2, "id47"], [2, "id49"], [2, "id51"], [2, "id53"], [2, "id55"], [2, "id57"], [2, "id59"], [2, "id61"], [2, "id63"], [2, "id65"], [2, "id67"], [2, "id69"], [2, "id71"], [2, "id73"], [2, "id75"], [2, "id77"], [2, "id79"], [2, "id81"], [2, "id83"], [2, "id85"], [2, "id87"], [2, "id89"], [2, "id91"], [2, "id93"], [2, "id95"], [2, "id97"], [2, "id99"], [2, "id101"], [2, "id103"], [2, "id105"], [2, "id107"], [2, "id109"], [2, "id111"], [2, "id113"], [2, "id115"], [2, "id117"], [2, "id119"], [2, "id121"], [2, "id123"], [2, "id125"], [2, "id127"], [2, "id129"], [2, "id131"], [2, "id133"], [2, "id135"], [2, "id137"], [2, "id139"], [2, "id141"], [2, "id143"], [2, "id145"], [2, "id147"], [2, "id149"], [2, "id151"], [2, "id153"], [2, "id155"], [2, "id157"], [2, "id159"], [2, "id161"], [2, "id163"], [2, "id165"], [2, "id167"], [2, "id169"], [2, "id171"], [2, "id173"], [2, "id175"], [2, "id177"], [2, "id179"], [2, "id181"], [2, "id183"], [2, "id185"], [2, "id187"], [2, "id189"], [2, "id191"], [2, "id193"], [2, "id195"], [2, "id197"], [2, "id199"], [2, "id201"], [2, "id203"], [2, "id205"], [2, "id207"], [2, "id209"], [2, "id211"], [2, "id213"], [2, "id215"], [2, "id217"], [2, "id219"], [2, "id221"], [2, "id223"], [2, "id225"], [2, "id227"], [2, "id229"], [2, "id231"], [2, "id233"], [2, "id235"], [2, "id237"], [2, "id239"], [2, "id241"], [2, "id243"], [2, "id245"], [2, "id247"], [2, "id249"], [2, "id251"], [2, "id253"], [2, "id255"], [2, "id257"], [2, "id259"], [2, "id261"], [2, "id263"], [2, "id265"], [2, "id267"], [2, "id269"], [2, "id271"], [2, "id273"], [2, "id275"], [2, "id277"], [2, "id279"], [2, "id281"], [2, "id283"], [2, "id285"], [2, "id287"], [2, "id289"], [2, "id291"], [2, "id293"], [2, "id295"], [2, "id297"], [2, "id299"], [2, "id301"], [2, "id303"], [2, "id305"], [2, "id307"], [2, "id309"], [2, "id311"], [2, "id313"], [2, "id315"], [2, "id317"], [2, "id319"], [2, "id321"], [2, "id323"], [2, "id325"], [3, "type"], [3, "id3"], [3, "id5"], [3, "id7"], [3, "id9"], [3, "id11"], [3, "id13"], [3, "id15"], [3, "id17"], [3, "id19"], [3, "id21"], [3, "id23"], [3, "id25"], [3, "id27"], [3, "id29"], [3, "id31"], [3, "id33"], [3, "id35"], [3, "id37"], [3, "id39"], [3, "id41"], [3, "id43"], [3, "id45"], [3, "id47"], [3, "id49"], [3, "id51"], [3, "id53"], [3, "id55"], [3, "id57"], [3, "id59"], [3, "id61"], [3, "id63"], [3, "id65"], [3, "id67"], [3, "id69"], [3, "id71"], [3, "id73"], [3, "id75"], [3, "id77"], [3, "id79"], [3, "id81"], [3, "id83"], [3, "id85"], [3, "id87"], [3, "id89"], [3, "id91"], [3, "id93"], [3, "id95"], [3, "id97"], [3, "id99"], [3, "id101"], [3, "id103"], [3, "id105"], [3, "id107"], [3, "id109"], [3, "id111"], [3, "id113"], [3, "id115"], [3, "id117"], [3, "id119"], [3, "id121"], [3, "id123"], [3, "id125"], [3, "id127"], [3, "id129"], [3, "id131"], [3, "id133"], [3, "id135"], [3, "id137"], [3, "id139"], [3, "id141"], [3, "id143"], [3, "id145"], [3, "id147"], [3, "id149"], [3, "id151"], [3, "id153"], [3, "id155"], [3, "id157"], [3, "id159"], [3, "id161"], [3, "id163"], [3, "id165"], [3, "id167"], [3, "id169"], [3, "id171"], [3, "id173"], [3, "id175"], [3, "id177"], [3, "id179"], [3, "id181"], [3, "id183"], [3, "id185"], [3, "id187"], [3, "id189"], [3, "id191"], [3, "id193"], [3, "id195"], [3, "id197"], [3, "id199"], [3, "id201"], [3, "id203"], [3, "id205"], [3, "id207"], [3, "id209"], [3, "id211"], [3, "id213"], [3, "id215"], [3, "id217"], [3, "id219"], [3, "id221"], [3, "id223"], [3, "id225"], [3, "id227"], [3, "id229"], [3, "id231"], [3, "id233"], [3, "id235"], [3, "id237"], [3, "id239"], [3, "id241"], [3, "id243"], [3, "id245"], [3, "id247"], [3, "id249"], [3, "id251"], [3, "id253"], [4, "type"], [4, "id3"], [4, "id5"]], "Update route tables": [[20, "update-route-tables"]], "Update security groups": [[20, "update-security-groups"]], "Updating Your Fork": [[10, "updating-your-fork"]], "Upgrade of Scylla Operator": [[38, null]], "Upgrade via Helm": [[38, "upgrade-via-helm"]], "Upgrade via kubectl": [[38, "upgrade-via-kubectl"]], "Upgrading version of Scylla": [[29, null]], "Using Alternator (DynamoDB)": [[6, null]], "Using CQL": [[7, null]], "Using ScyllaDB APIs": [[9, null]], "Using context": [[23, "using-context"]], "Variants": [[19, "variants"]], "Version migrations": [[18, null]], "Wait for Grafana to roll out": [[19, "wait-for-grafana-to-roll-out"]], "Wait for HAProxy Ingress to roll out": [[19, "wait-for-haproxy-ingress-to-roll-out"]], "Wait for Prometheus Operator to roll out": [[19, "wait-for-prometheus-operator-to-roll-out"]], "Wait for Prometheus to roll out": [[19, "wait-for-prometheus-to-roll-out"]], "Wait for ScyllaDBMonitoring to roll out": [[19, "wait-for-scylladbmonitoring-to-roll-out"]], "Walkthrough": [[11, "walkthrough"], [14, "walkthrough"]], "Webhooks": [[37, "webhooks"]], "image": [[15, "image"]], "resources": [[15, "resources"]], "scylla.scylladb.com": [[0, null]], "v0.3.0 -> v1.0.0": [[38, "v0-3-0-v1-0-0"]], "v0.3.0 -> v1.0.0 migration": [[18, "v0-3-0-v1-0-0-migration"]], "v1.0.0 -> v1.1.0": [[38, "v1-0-0-v1-1-0"]], "v1.1.0 -> v1.2.0": [[38, "v1-1-0-v1-2-0"]], "v1.2.0 -> v1.3.0": [[38, "v1-2-0-v1-3-0"]], "webhook": [[15, "webhook"]]}, "docnames": ["api-reference/groups/scylla.scylladb.com", "api-reference/groups/scylla.scylladb.com/nodeconfigs", "api-reference/groups/scylla.scylladb.com/scyllaclusters", "api-reference/groups/scylla.scylladb.com/scylladbmonitorings", "api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs", "api-reference/index", "clients/alternator", "clients/cql", "clients/discovery", "clients/index", "contributing", "eks", "exposing", "generic", "gke", "helm", "index", "manager", "migration", "monitoring", "multidc/eks", "multidc/gke", "multidc/index", "multidc/multidc", "nodeoperations/automatic-cleanup", "nodeoperations/index", "nodeoperations/maintenance-mode", "nodeoperations/replace-node", "nodeoperations/restore", "nodeoperations/scylla-upgrade", "performance", "releases", "support/index", "support/known-issues", "support/must-gather", "support/overview", "support/troubleshooting/index", "support/troubleshooting/installation", "upgrade"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2}, "filenames": ["api-reference/groups/scylla.scylladb.com.rst", "api-reference/groups/scylla.scylladb.com/nodeconfigs.rst", "api-reference/groups/scylla.scylladb.com/scyllaclusters.rst", "api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst", "api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst", "api-reference/index.rst", "clients/alternator.md", "clients/cql.md", "clients/discovery.md", "clients/index.rst", "contributing.md", "eks.md", "exposing.md", "generic.md", "gke.md", "helm.md", "index.rst", "manager.md", "migration.md", "monitoring.md", "multidc/eks.md", "multidc/gke.md", "multidc/index.rst", "multidc/multidc.md", "nodeoperations/automatic-cleanup.md", "nodeoperations/index.rst", "nodeoperations/maintenance-mode.md", "nodeoperations/replace-node.md", "nodeoperations/restore.md", "nodeoperations/scylla-upgrade.md", "performance.md", "releases.md", "support/index.rst", "support/known-issues.md", "support/must-gather.md", "support/overview.md", "support/troubleshooting/index.rst", "support/troubleshooting/installation.md", "upgrade.md"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [1, 2, 3, 6, 8, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 30, 34, 37, 38], "0": [1, 2, 3, 7, 8, 10, 12, 13, 14, 15, 17, 19, 20, 21, 23, 27, 28, 29, 31, 34], "00": [6, 17], "000": 13, "0000": [2, 17], "00000000": 17, "000000000000": 17, "008_": 33, "01": [6, 31], "01t16": 6, "02": 28, "03": [6, 27, 31], "04": [28, 31], "0406": 28, "05": [28, 31], "06": [17, 31], "0644": 2, "07": 31, "0777": 2, "08": 31, "08077dcc008fbbab6": 20, "09": [17, 28, 31], "0bb60902": 21, "0dd20cdf": 28, "0dfd": 23, "1": [1, 2, 3, 7, 8, 10, 11, 12, 13, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31], "10": [2, 8, 13, 15, 17, 18, 20, 21, 23, 27, 31], "100": [1, 2, 3, 17, 28], "1000": 21, "10000000": 13, "10001": [8, 15, 18, 27], "100m": [15, 23], "102": 8, "104m": 18, "105": 15, "106m": 18, "107": [17, 23], "107m": 18, "108m": 18, "109": 17, "109m": 18, "10d": 8, "11": [23, 28, 31], "110": 27, "110m": 18, "11ee": [6, 28], "12": [1, 2, 3, 10, 17, 28, 31], "121c": 23, "1234": 10, "123913": 6, "125": 27, "127": [7, 17], "128mi": 15, "12a3678d": 18, "13": [10, 17, 31], "130": 15, "14": [17, 31], "149": 15, "15": [17, 28], "150k": 28, "16": [15, 17, 20, 21, 23, 31], "16g": 30, "17": [21, 31], "172": [20, 21, 23, 27], "18": [21, 23], "1800g": 23, "189": 27, "19": 23, "19042": 8, "191": 27, "19142": 8, "193": 17, "195": 23, "197": 17, "1a": [11, 13, 17, 18, 20, 23, 27, 28, 29, 30], "1b": [11, 15, 20, 23], "1c": [11, 20, 23], "1d": 17, "1ffa7a82": 27, "1fr9ydlu0ve7m": 20, "1g": 30, "1gi": [15, 19, 28], "1h": 34, "1m": 17, "2": [2, 7, 12, 13, 14, 15, 17, 18, 20, 21, 23, 26, 27, 28, 29, 30, 31], "20": [14, 17, 21], "200": 19, "200000000": 17, "2020": [17, 29], "20200816": 17, "2021": 31, "2022": 31, "2023": [12, 31], "20231205": 7, "2024": [6, 28, 31], "207": 15, "209": 23, "2097152": [13, 23], "20g": 13, "20mi": 15, "21": 31, "214": 28, "22": [18, 31], "226716": 14, "23": [17, 18], "231": [15, 27], "232323": 2, "236a0e10575b": 17, "237": 23, "238z": 17, "23t11": 17, "24": [2, 23, 28], "246": 18, "25": [17, 18, 23, 31], "250000000": 17, "250m": 23, "25126532803b": 17, "256": [23, 27], "26": 17, "27": [17, 23, 31], "275aae7f": 17, "28": [17, 31], "28169610": 17, "28m": 17, "29": 17, "290": 23, "2a": [20, 23], "2aa90ab29a99": 23, "2b": [20, 23], "2b9dbe8c": 17, "2c": [20, 23], "2g": 13, "2xlarg": 11, "3": [2, 7, 10, 11, 13, 15, 17, 23, 28, 29, 30, 31], "30": 13, "300": 13, "30000": 13, "30000000000": 17, "300000000000": 17, "30m": [18, 38], "30mi": 15, "32": 14, "3260": 2, "327f": 23, "32mi": 15, "33": 17, "336": 23, "35": 6, "35d0cb19": 27, "35ef": 27, "3619ae053778": 28, "37m": 17, "38": 17, "39": 23, "3d0a7b9305f7": 23, "3d2h10m": 2, "3h11m": 27, "3h12m": 27, "3h19m": 27, "3h21m": 27, "3h25m": 27, "3h27m": 27, "3h5m": 27, "4": [2, 7, 11, 13, 14, 15, 17, 23, 28, 29, 30, 31], "400b2723": 17, "4062": 23, "407e": 28, "409mib": 28, "41": 6, "4128": 23, "42": 17, "422a": 17, "4271": 28, "43": [8, 15, 18, 27], "43200000000000": 17, "435z": 17, "44": 8, "443": [15, 19], "44af": 27, "458c": 28, "4703": 17, "4706": 27, "479e65fb8372": 17, "48": 28, "482b": 27, "49": 15, "494277b9": 23, "4974": 28, "49f2": 17, "4a25": 23, "4af9": 23, "4bb4": 17, "4c20": 17, "4c97": 17, "4c9c": 18, "4d45a39c7003": 27, "4d93": 23, "4db3": 23, "4def": 28, "4fc8": 17, "4m29": 15, "4q": 6, "5": [2, 6, 7, 10, 12, 13, 17, 23, 28, 29, 30, 31], "50": 13, "50000000": 13, "5000000000": 17, "500gi": 30, "500m": 15, "500mi": 15, "503": 23, "5080": 17, "5090": [8, 15], "51": [15, 27], "511": 2, "519z": 17, "53": [15, 17], "54": 17, "559": 23, "56090": 17, "56112": 17, "56g": 23, "57": 17, "57228c52": 28, "58": 17, "5871": 38, "58a89e7a4231": 7, "59": 23, "5c8aae70": 6, "5dbcb54f5c": 15, "5g": 15, "5m": 19, "5m58": 15, "5m59": 15, "6": [2, 7, 13, 28, 30, 31], "60": [15, 17], "600": [7, 18], "600000000": 17, "6004039f402e": 23, "619ada495c2a": 17, "62": [17, 27], "63": 27, "634": 23, "63642069": 28, "64b6292a": 23, "65b89d55bb": 19, "66": 18, "665dde7e": 23, "669db64dd": 15, "68c49e47ace1": 28, "69": 17, "6e7993cf42": 28, "6f31aaf1d6d3": 6, "6j12": 27, "6m46": 13, "7": [17, 23, 31], "70": 23, "7000": [8, 15, 18, 27], "7001": [8, 15, 18, 27], "705": 23, "7199": [8, 15, 18, 27], "74": 27, "750000000": 17, "759": 23, "764": 23, "76cc4dcc": 17, "77": 27, "7735": 38, "7a4f": 23, "7bd9f968b9": 17, "7c30ea55": 23, "7cf6": 28, "7d": 17, "7m43": 13, "8": [2, 13, 14, 17, 19, 21, 23, 28, 30, 31], "80": [2, 15], "8000": 13, "8043": [6, 8], "8080": 38, "844ccc56c4": 15, "84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf": 23, "8511": 18, "852a": 23, "860": 2, "868e0f3396b2": 28, "86f7": 23, "87": 23, "87a4a6c65c3": 27, "882z": 17, "89": 15, "8a48": 18, "8b9d": 17, "8c54": 23, "8c8d": 28, "8ebd6114": 27, "8f5f": 27, "8m14": 27, "8th": 33, "9": [1, 2, 3, 27, 28, 29, 31, 38], "9042": [7, 8, 15, 18, 27], "91": 27, "9100": 8, "9142": [7, 8, 15, 18, 27], "9160": [8, 15, 18, 27], "9180": [8, 15, 18, 27], "92": 15, "9263": 17, "92a4": 27, "949f": 28, "951c": 28, "9521": 28, "95m": 38, "96": 18, "969c": 27, "9d11": 17, "9daa": 17, "9df4": 23, "9m49": 13, "A": [1, 2, 3, 11, 12, 13, 14, 15, 19, 20, 21, 23, 38], "ANDed": [1, 2, 3], "And": [10, 15], "As": [2, 10, 11, 14, 17, 20, 23, 28, 34], "At": [2, 6, 7, 14, 18, 29], "Be": 31, "By": [1, 2, 3, 12, 14, 15, 30, 34], "For": [1, 2, 3, 7, 8, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 23, 26, 30], "If": [1, 2, 3, 6, 7, 10, 11, 13, 14, 15, 17, 18, 19, 23, 29, 33, 34, 37], "In": [1, 2, 3, 4, 7, 8, 10, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 27, 28, 29, 30, 34, 38], "It": [2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 15, 20, 21, 23, 29], "NOT": 2, "No": [2, 3], "ORed": [1, 2, 3], "On": [12, 30, 33], "One": 30, "Such": 12, "TO": 15, "That": 34, "The": [1, 2, 3, 6, 8, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 23, 30, 31, 33, 34], "Then": [13, 14, 15, 20, 21, 29], "There": [2, 3, 34, 37, 38], "These": [2, 11, 12, 14, 30, 38], "To": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 33, 35, 37, 38], "WITH": 13, "Will": 2, "With": [17, 21], "_trace_id": 17, "a3a98e08": 23, "a540": 28, "a66d": 17, "a969": 17, "a96a": 23, "a978": 27, "a99": 6, "ab015cef": 28, "ab7568b8a1bd": 17, "abc4": 28, "abc8": 28, "abil": [2, 3], "abl": [15, 20, 37], "about": [1, 2, 3, 7, 8, 10, 11, 12, 13, 14, 15, 21, 30], "abov": [8, 11, 13, 14, 15, 17, 19, 20, 21, 28, 38], "absolut": 2, "accept": [2, 3, 11, 31], "access": [2, 3, 5, 6, 7, 10, 12, 17, 28], "accessmod": [2, 3], "accord": [11, 13, 14, 18, 20, 29], "accordingli": 23, "account": [2, 10, 14], "across": [2, 3, 23, 30], "act": 2, "action": 31, "activ": 6, "actual": 1, "ad": [1, 2, 3, 6, 10, 13, 16, 20], "add": [2, 13, 15, 17, 18, 21, 23, 26, 27, 38], "addit": [3, 6, 8, 12, 15, 17, 18, 21, 28, 38], "addition": [12, 23], "additionaldnsnam": 2, "additionalipaddress": 2, "address": [2, 6, 8, 12, 19, 21, 23, 27], "adher": 5, "adhoc": 17, "adjust": [2, 6, 7, 13, 19, 20, 21, 23, 34], "admin": [2, 7, 19, 34], "administr": 35, "advantag": 30, "advis": [23, 34, 37], "advisori": 31, "af1dd5cd": 28, "af2": 28, "afe6": 28, "affect": [2, 28, 34], "affin": [2, 3, 24], "after": [2, 3, 10, 11, 13, 14, 15, 17, 27, 28], "afterward": [11, 14], "ag": [8, 13, 15, 17, 18, 27, 38], "again": [10, 18, 19, 26], "against": [13, 20, 21], "agemax": 17, "agent": [2, 15, 17, 23], "agentimag": 15, "agentrepositori": 2, "agentresourc": [23, 30], "agentvers": [2, 13, 23, 28, 30], "aggress": 2, "agreement": [17, 29], "ah": 21, "aim": 31, "aio": [2, 13, 23], "alia": 21, "aliv": 26, "all": [1, 2, 3, 5, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 28, 29, 30, 34], "alloc": [12, 15, 21], "allocateloadbalancernodeport": [2, 12], "allow": [1, 2, 3, 8, 11, 13, 15, 19, 20, 21, 23, 26, 29, 30, 37], "alon": 2, "along": [2, 13], "alpha": [1, 2, 3, 11, 14, 31], "alphanumer": 2, "alreadi": [1, 2, 17, 19, 28, 29], "also": [1, 2, 3, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 34], "alter": 13, "altern": [9, 17, 19], "although": [10, 15, 18, 19, 20, 21, 23], "alwai": [6, 7, 8, 10, 13, 26, 30, 34], "amazon": [2, 11, 22, 23, 31], "amend": 18, "amount": [2, 3], "an": [1, 2, 3, 4, 7, 8, 10, 12, 13, 15, 16, 20, 21, 29, 30, 31, 34, 35, 37, 38], "analog": [20, 21], "ani": [1, 2, 3, 7, 10, 12, 14, 15, 18, 20, 21, 28, 30, 31], "annot": [8, 12, 19], "anoth": [1, 2, 3, 12, 18, 37], "anti": [1, 2, 3], "anymor": 2, "anyth": 13, "anyvolumedatasourc": [2, 3], "api": [1, 2, 3, 4, 6, 7, 10, 13, 16, 17, 19, 23, 28, 31, 34, 37], "apiaddress": 17, "apigroup": [2, 3, 18], "apiserv": [2, 37], "apivers": [1, 2, 3, 4, 7, 12, 18, 19, 20, 23, 28, 30, 38], "app": [13, 15, 19, 23, 28, 29, 38], "appear": 17, "append": [2, 13], "appli": [1, 2, 3, 10, 11, 13, 14, 15, 17, 18, 19, 23, 30, 33, 34, 38], "applic": [2, 15, 30], "approach": 2, "appropri": [8, 19], "approxim": 31, "apropri": 10, "ar": [1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31, 34, 35, 37, 38], "arbitrari": [2, 3], "architectur": [1, 2, 3, 4], "archiv": [34, 35], "aren": [2, 31], "argument": [13, 17, 34], "aris": 35, "around": [2, 30], "arrai": [1, 2, 3, 11, 14], "arrikto": 14, "artifact": 31, "artist": 6, "ask": 15, "aspect": [2, 3], "assess": 31, "assign": [12, 30], "associ": [1, 2, 3, 10, 13, 17, 18, 20, 21], "assum": [12, 19, 23, 34], "assumpt": 12, "asynchron": 13, "attach": [1, 2, 3, 13, 14, 18, 27, 34, 35], "attempt": [2, 17], "attribut": [2, 3, 6], "attributedefinit": 6, "attributenam": 6, "attributetyp": 6, "audienc": 2, "auth": 23, "auth_token": 23, "authent": [2, 6, 13, 34], "authn": 5, "author": [2, 6], "authz": 5, "auto": [2, 13], "autogener": 15, "autoh": 16, "autom": [15, 16, 17, 23, 38], "automat": [1, 2, 3, 8, 10, 13, 14, 17, 21, 25, 31, 38], "automaticorphanednodecleanup": [2, 23, 24], "autorepair": [14, 21], "autoupgrad": [14, 21], "avail": [1, 2, 3, 6, 7, 8, 12, 13, 14, 15, 17, 19, 23, 27, 28, 29, 30, 34, 38], "availabilityzon": 20, "availablememb": 2, "avoid": [1, 2, 6, 7, 10, 34, 37], "aw": [2, 8, 11, 12, 20], "awar": 13, "aws_access_key_id": 6, "aws_ca_bundl": 6, "aws_endpoint_url_dynamodb": 6, "aws_secret_access_kei": 6, "azur": 2, "b": [2, 10, 14, 21, 23, 26], "b4b390a1": 27, "b63eee4527e5": 27, "b7f3": 17, "ba0f": 28, "back": [1, 2, 3, 8, 12, 26, 27, 29], "backend": [2, 8, 12], "backup": [13, 16, 17, 25, 38], "backup_data": 29, "backup_loc": 28, "backward": [2, 3, 18, 38], "balanc": [2, 8, 12, 26], "bandwidth": 27, "bare": [17, 19], "base": [1, 2, 3, 6, 8, 10, 15, 30], "base64": [7, 19, 23], "bash": 7, "bcec": 17, "bcm4v": 15, "bd63": 23, "becaus": [2, 3, 6, 8, 12, 13, 17, 23, 27, 34], "becom": [24, 29, 31], "bed5": 28, "been": [2, 12, 13], "befor": [2, 10, 18, 19, 29, 31, 34, 37, 38], "begin": [16, 29], "begin_upgrad": 29, "behav": 2, "behavior": 2, "behaviour": [2, 10], "behind": 23, "being": [2, 3, 12, 13, 17, 23, 26, 27, 29, 31], "bellow": [6, 7], "below": [2, 13, 17, 18, 19, 20, 21, 23, 28, 30], "benchmark": [11, 14], "best": 13, "beta": [2, 3, 8, 12, 31], "better": [10, 14], "between": [2, 3, 13, 20, 21], "beyond": [19, 37], "binari": [2, 23, 34], "bind": [2, 3, 14], "bit": [2, 13, 15], "blank": 10, "blob": 2, "block": [2, 14, 37], "boolean": [1, 2, 3], "boot": [18, 29], "bootstrap": [15, 27], "both": [1, 2, 3, 12, 13, 15, 20, 21], "bottlerocket": 31, "bound": [18, 24, 27, 30], "box": 18, "branch": [31, 38], "break": [31, 37], "breez": 13, "bring": [26, 27, 29, 38], "broadcast": 2, "broadcast_address": 2, "broadcast_rpc_address": 2, "broadcastopt": [12, 23], "broken": 2, "brought": 38, "brows": 13, "browser": 10, "bucket": [2, 17], "bug": [10, 31, 35], "build": [22, 23, 31], "build_dat": 17, "built": [10, 12, 20, 21], "built_bi": 17, "bump": 18, "bundl": [2, 6, 7], "button": 10, "byte": [2, 3], "c": [2, 6, 7, 13, 21, 23, 27, 28], "c19c89cb": 23, "c29d": 17, "c29f63a917c8": 17, "c4": 11, "c41c": 27, "c436": 17, "c5ab2f47eb37": 23, "c881772ebe62": 23, "ca": [3, 6, 7, 15, 19], "ca71efd39b2": 23, "cacert": 19, "cach": 2, "cachingmod": 2, "calcul": 2, "call": [2, 8, 13, 14, 28, 30, 35, 37, 38], "caller": 19, "camelcas": [1, 2, 3, 4], "can": [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 29, 30, 34, 35, 37], "candid": 31, "cannot": [1, 2, 3, 4, 17, 30], "capabl": [11, 12, 13, 14, 23], "capac": [2, 3, 11, 14, 15, 23, 28, 30], "care": [11, 12, 14], "carri": [10, 23], "case": [1, 2, 3, 8, 12, 13, 18, 20, 23, 25, 27, 30, 34, 37, 38], "cass": 13, "cassandra": [2, 6, 7, 11, 14], "cassandraauthor": 7, "cat": [7, 38], "categor": 3, "categori": [1, 2, 3], "caus": [18, 26, 27, 29, 30], "cd": [10, 11, 13, 14], "ceas": [1, 2, 3], "censor": 34, "center": 23, "central": 2, "ceph": 2, "cert": [2, 3, 18], "certain": [2, 13], "certfil": [7, 17], "certif": [2, 7, 13, 15, 19], "certificatesecretnam": 15, "cest": 17, "cf": 30, "cgroup": 31, "chang": [1, 2, 3, 8, 10, 13, 14, 15, 17, 18, 19, 23, 28, 29, 38], "changelog": 10, "channel": [2, 18, 20], "chap": 2, "chapauthdiscoveri": 2, "chapauthsess": 2, "charact": 2, "chart": [16, 19, 31, 38], "check": [2, 12, 13, 16, 17, 18, 27, 28, 29, 30, 34, 38], "check_schema_agr": 29, "checkout": [10, 18, 38], "chmod": 7, "choic": 7, "choos": [1, 2, 3, 13, 16, 23], "cidr": [20, 21], "citizen": 13, "claimnam": 2, "class": [2, 3, 12, 13, 30], "clean": 10, "cleanup": [2, 25, 29], "clear_data_backup": 29, "clear_system_backup": 29, "cli": [13, 15, 17, 21], "click": 10, "client": [1, 3, 4, 6, 7, 8, 10, 13, 15, 18, 19, 23, 27], "clone": [2, 13], "close": [10, 15], "cloud": [11, 12, 13, 14, 17, 19, 21, 23], "cluster": [1, 2, 3, 4, 6, 7, 15, 16, 18, 19, 24, 26, 27, 28, 29, 30, 31, 38], "cluster_id": 28, "cluster_ip": 7, "cluster_nam": [11, 13, 14], "cluster_vers": 14, "clusterconfig": 20, "clusterip": [6, 7, 8, 15, 18, 27], "clusterrol": [14, 18, 34], "clusterrolebind": [14, 34], "clustersharednodesecuritygroup": 20, "clustertrustbundleproject": 2, "cname": 19, "co": [1, 2, 3], "code": [31, 38], "collabor": 10, "collect": [2, 18, 19, 35], "colon": 10, "color": 6, "column": 18, "com": [5, 6, 8, 10, 11, 12, 13, 14, 15, 18, 19, 23, 28, 30, 34, 38], "combin": [1, 2, 3], "come": [11, 13, 14, 17, 30], "comma": 2, "command": [2, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 33, 34], "comment": 2, "commit": [2, 17, 31], "common": [11, 13, 14, 15, 18, 30, 34, 37, 38], "commonli": 10, "commun": [1, 2, 3, 4, 12, 20, 21, 23], "compar": [10, 18], "compat": [2, 3, 6], "complet": [2, 10, 13, 19, 27], "complex": [7, 12], "compon": [15, 17, 19, 31], "compos": [15, 23], "compromis": 2, "comput": [1, 2, 3, 14, 21], "concaten": 2, "concept": [2, 3, 6], "condit": [13, 15, 18, 19, 23, 28, 30, 38], "conditiontyp": 2, "config": [2, 3, 7, 13, 14, 17, 20, 21, 23, 34], "config_fil": 17, "configmap": [6, 7, 13], "configur": [1, 2, 3, 4, 6, 7, 8, 12, 17, 23, 28, 30, 37, 38], "conflict": [2, 10], "conform": [31, 37], "connect": [2, 6, 7, 8, 12, 13, 17, 20], "connections_per_host": 13, "consequ": 12, "consid": [2, 3, 18], "consider": [1, 2, 3], "consist": [2, 3, 15, 17, 23, 28, 30], "consistent_cluster_manag": 28, "consol": 10, "constitut": 1, "consult": [2, 17], "consum": [2, 3], "contact": [8, 23], "contain": [1, 2, 3, 12, 14, 15, 18, 21, 29, 31, 34, 35, 38], "containernam": 2, "content": [2, 3, 13, 14, 15, 28, 31], "context": [20, 21, 30, 34], "context_dc1": 23, "context_dc2": 23, "continu": [8, 10, 29], "contrari": 6, "contribut": 16, "contributor": [1, 2, 3, 4, 10], "control": [1, 2, 3, 8, 12, 14, 17, 18, 19, 23, 29, 37, 38], "controllerimag": 15, "controllerresourc": 15, "conveni": 19, "convent": [1, 2, 3, 4, 13], "convert": [1, 2, 3, 4], "copi": [2, 3, 6, 13, 34], "core": [2, 3, 13, 14, 30], "corev1": 2, "correct": [2, 17, 19], "correctli": [15, 31], "correspond": [1, 2, 3, 20, 21], "correspondingli": 23, "cost": 12, "could": 15, "count": [13, 14, 17], "coupl": 30, "cours": 15, "cover": [12, 30], "cpu": [2, 11, 13, 14, 15, 23, 28, 30], "cpumanagerpolici": [11, 14], "cpuset": [2, 13, 23], "cql": [6, 9, 13, 17, 28], "cql_user": 6, "cqlsh": [6, 13], "cqlshlib": 7, "cqlshrc": 7, "cr": 23, "crd": [5, 10, 13, 15, 17, 18, 30, 31, 38], "creat": [1, 2, 3, 6, 7, 12, 15, 17, 18, 19, 23, 28, 30, 34, 38], "create_system_backup": 29, "createselfsignedcertif": 15, "creation": [2, 3, 11, 14, 17, 31], "credenti": [2, 7, 14, 17, 19, 28], "cri": 31, "cron": 2, "crossnamespacevolumedatasourc": [2, 3], "crt": [6, 7, 17, 19], "csi": [3, 11, 14], "curl": 19, "current": [1, 2, 3, 13, 15, 16, 19, 20, 21, 23, 29, 34, 37], "currentnod": 2, "currentrack": 2, "custom": [2, 3, 12, 17, 19, 20, 21, 28], "customiz": 15, "customresourcedefinit": [18, 38], "customzi": 15, "d": [2, 6, 7, 19, 23, 38], "d1d532cd": 17, "d446ff160747": 28, "d4946360": 17, "d7e1": 6, "daemon": 30, "daemonset": [27, 30], "daili": [2, 17], "dash": [2, 10], "data": [2, 3, 6, 7, 13, 14, 17, 19, 23, 27, 28, 29, 32, 38], "databas": [15, 17], "datacent": [3, 7, 13, 15, 16, 17, 20, 21, 27, 28, 30, 34], "datacenter_nam": 13, "dataset": 2, "datasetnam": 2, "datasetuuid": 2, "datasnapshottag": 2, "date": [1, 2, 3, 10, 15, 17, 23, 31, 38], "daunt": 13, "dc": [2, 17, 23], "dc1": [2, 23], "dc2": 23, "dc9842980080": 28, "dc_suffix": 13, "dead": 16, "debug": [17, 34], "decid": [15, 31], "decim": 2, "decis": 29, "decod": 13, "deconflict": [2, 3], "dedic": [2, 8, 12, 15, 17, 20, 21, 23, 28, 30, 34, 35], "dedupl": 2, "default": [1, 2, 3, 6, 7, 8, 12, 13, 14, 15, 17, 23, 27, 28, 30, 33, 34], "defaultmod": 2, "defin": [1, 2, 3, 4, 5, 12, 13, 15, 17, 23], "definit": [6, 12, 13, 14, 15, 17, 18, 29, 38], "degrad": [2, 3, 8, 19, 23, 28], "delet": [2, 13, 17, 18, 27, 29, 38], "delete_pod": 29, "demo": [11, 14, 27], "deni": [13, 21], "dep": 10, "depend": [2, 8, 10, 12, 18, 26, 27, 30, 31, 34], "deploi": [12, 16, 18, 38], "deploy": [13, 15, 17, 19, 21, 22, 23, 28, 29, 38], "deprec": 2, "describ": [1, 2, 3, 4, 11, 13, 14, 17, 18, 20, 21, 23, 28, 29, 38], "descript": [10, 15], "design": 2, "desir": [1, 2, 3, 4, 13, 15, 17, 29], "desiredcapac": 11, "destin": 20, "destroi": [13, 17, 23], "detach": 18, "detail": [1, 2, 3, 6, 13, 17, 19, 23, 30, 31], "detect": [29, 31], "determin": [2, 3, 10, 34], "dev": [1, 2, 19], "devel": [1, 2, 3, 4], "develop": [2, 11, 14, 17, 19], "developermod": [2, 13, 28], "deviat": 34, "devic": [2, 11, 14, 30], "did": 10, "differ": [2, 3, 6, 7, 8, 11, 12, 13, 15, 17, 20, 21, 23, 30], "direct": [2, 3, 12, 13, 19, 21], "directli": [2, 6, 12, 21], "directori": [2, 10, 34, 38], "disabl": [2, 3, 7, 14, 15, 21, 26, 28, 29, 33], "disable_maintenance_mod": 29, "disableoptim": 1, "disadvantag": 8, "disallow": [2, 3], "disambigu": [18, 38], "discov": [6, 9, 12, 23], "discoveri": [2, 7], "discuss": 23, "disk": [1, 2, 11, 13, 14, 21, 27, 30], "disknam": 2, "diskspacefreeminperc": 17, "diskuri": 2, "displai": 29, "distinct": [12, 20, 21, 23], "distribut": 30, "divisor": 2, "dn": [2, 3, 8, 10, 12, 13, 19, 23, 26, 27], "dns1123subdomainfmt": [2, 3], "dns_label": 2, "dnsdomain": [2, 3, 19], "dnspolici": 2, "do": [1, 2, 3, 10, 13, 17, 19, 20, 21, 26, 35, 37, 38], "doc": [2, 3, 5, 11, 13, 28, 30, 37], "docker": [7, 10, 13, 15, 31, 38], "docker0": 33, "document": [2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 23], "doe": [1, 2, 3, 10, 13, 15, 17, 23], "doesn": [12, 13, 14, 37, 38], "doesnotexist": [1, 2, 3], "domain": [2, 3, 23], "don": [1, 2, 3, 6, 10, 11, 12, 14, 15, 34], "done": [7, 10, 11, 13, 14, 17, 28, 34], "dot": 2, "doubl": 30, "down": [1, 8, 13, 16, 23, 27], "download": [15, 28], "downscal": 16, "downtim": 18, "downward": 2, "downwardapivolum": 2, "downwardapivolumefil": 2, "drain": [2, 27, 29], "drain_nod": 29, "drbth": 15, "driver": [2, 3, 8, 11, 12, 13, 14], "drop": [2, 3], "dry": 13, "due": [1, 2, 3, 17, 23, 24], "durat": [2, 17, 28, 34], "dure": [1, 2, 3, 10, 23, 29, 38], "dynam": [2, 3, 11, 14], "dynamicresourcealloc": [2, 3], "dynamodb": 9, "e": [1, 2, 3, 6, 13, 34, 38], "e2": 31, "e24c": 23, "e420": 23, "each": [1, 2, 3, 12, 13, 14, 15, 17, 18, 20, 21, 23, 29, 30, 38], "earlier": [11, 14, 20, 23], "easi": 13, "easier": [13, 18, 19, 38], "easiest": 14, "easili": [20, 21], "east": [11, 13, 15, 17, 18, 20, 23, 27, 28, 29, 30], "east1": [21, 26], "eb": 2, "ebd82268": 28, "echo": [6, 19], "ecosystem": 8, "edit": [10, 11, 13, 14, 17], "editor": 7, "eec5": 17, "efb7": 28, "effect": [1, 2, 3, 23, 28], "effic": 30, "eg": 13, "either": [2, 3, 13, 15, 17], "ek": [8, 12, 16, 22, 23, 31], "eks_region": 11, "eks_zon": 11, "eksctl": [11, 20], "element": [1, 2, 3], "elig": 31, "els": [10, 19], "embed": [2, 34, 35], "emploi": 13, "empti": [1, 2, 3, 7, 13, 28], "enabl": [1, 2, 3, 6, 7, 12, 13, 14, 17, 20, 21, 23, 24, 26, 28, 29, 33], "enable_maintenance_mod": 29, "encod": 2, "encrypt": 7, "end": [10, 18, 19, 28, 31], "endpoint": [1, 2, 3, 4, 7, 13], "endpointsselector": 19, "enforc": 30, "enhanc": 23, "enough": [2, 6, 34], "ensur": [2, 10, 13, 18, 28], "enter": [10, 15, 27, 29], "enterpris": [12, 16, 17, 28, 31], "entir": [2, 3, 12, 13, 23, 30], "entri": [2, 3, 13], "entrypoint": 7, "env": [2, 13, 34], "environ": [2, 7, 10, 12, 13, 15, 18, 23, 34], "eof": 7, "ephemer": [8, 23], "ephemeralvolumesourc": 2, "eq": 19, "equal": [1, 2, 3, 13, 23, 30], "equival": [1, 2, 3, 12], "error": [2, 3, 6, 13, 14, 17, 29, 34], "errorbackoff": 17, "esoter": 2, "esp": 21, "especi": 8, "establish": [12, 13, 20, 21, 38], "etc": [1, 2, 3, 17, 19, 30, 31], "eval": 13, "evalu": 2, "even": [10, 29], "event": 13, "eventu": [1, 2, 3], "everi": [2, 3, 6, 7, 8, 12, 13, 23, 29, 31], "everyon": 31, "everyth": [2, 10, 11, 13, 14, 15, 29], "evict": [1, 2, 3], "ex": [2, 14], "exactli": [15, 31], "examin": [13, 17], "exampl": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 28, 29, 30, 34, 38], "exce": [2, 3], "except": [11, 14], "exclud": 2, "exclus": [2, 12, 30], "exec": [2, 6, 7, 13, 17, 23, 27, 28, 34], "execut": [1, 2, 3, 15, 17, 18, 23, 28, 29, 30, 33], "exemplari": [20, 21], "exist": [1, 2, 3, 13, 17, 18, 23, 29, 31, 34, 38], "exit": 13, "expand": 2, "expect": [2, 3, 23, 38], "experi": [11, 14], "experiment": [2, 16, 19, 30, 38], "expir": 2, "expirationsecond": 2, "explain": [12, 19, 20, 21, 30], "explicit": 24, "explicitli": [2, 3, 7], "export": [2, 6, 11, 14, 34], "expos": [2, 3, 6, 16, 23], "exposeopt": [12, 19, 23], "exposur": 8, "express": [1, 2, 3, 15], "ext4": 2, "extend": [2, 13, 37], "extern": [2, 3, 8, 12, 15, 18, 19, 27, 34], "external_ip": 19, "externalse": [2, 23], "externaltrafficpolici": [2, 12], "extra": [2, 13, 34], "extract": [18, 23], "f": [2, 11, 13, 14, 15, 17, 18, 19, 20, 23, 38], "f17db261": 21, "fa78d3992694": 18, "facilit": 12, "factor": [2, 13, 34], "factori": 7, "fail": [2, 13, 17, 19, 27, 28, 33], "failfast": 2, "failur": [2, 26, 27, 29], "failurestrategi": 2, "fallback": 23, "fals": [1, 2, 3, 15, 17, 19, 21, 23, 28], "fast": 13, "faster": 2, "featur": [1, 2, 3, 10, 30], "feel": [13, 34], "fetch": 10, "few": 34, "ff36d7e0": 28, "fibr": 2, "field": [1, 2, 3, 12, 13, 15, 19, 23, 29, 34], "fieldpath": 2, "file": [1, 2, 6, 7, 10, 13, 14, 15, 18, 20, 28, 34, 37, 38], "filesystem": [2, 3, 11, 14, 26], "filesystemconfigur": 1, "filter": [1, 21], "find": [1, 2, 3, 5, 6, 7, 13, 15, 19, 29, 37, 38], "find_next_nod": 29, "find_next_rack": 29, "finish": [2, 3, 13, 28], "finish_upgrad": 29, "firewal": 37, "first": [2, 10, 11, 13, 14, 15, 17, 18, 19, 28, 29, 38], "fit": [1, 10, 12], "fix": [2, 8, 10, 31, 33], "flag": [2, 20, 21, 24, 34, 38], "flow": 20, "focus": [11, 14], "folder": [7, 11, 14, 34], "follow": [2, 7, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 23, 28, 29, 31, 33, 38], "follw": 15, "foo": [2, 3, 28], "foostatu": [2, 3], "forbid_rmw": 13, "forbidden": [1, 2, 3], "forc": [2, 14], "forceredeploymentreason": [2, 23, 28], "forev": [1, 2, 3], "forgotten": 10, "form": [11, 14, 34], "format": [2, 14, 17, 21, 29], "formula": 2, "fortun": 13, "forward": 2, "found": [11, 13, 14], "free": [13, 14, 34], "freez": 31, "fresh": [28, 38], "from": [1, 2, 3, 4, 6, 8, 10, 11, 12, 13, 14, 15, 18, 19, 20, 23, 25, 26, 27, 29, 30, 31, 34, 38], "fromvers": 2, "front": [2, 26], "frontend": 17, "fsgroup": 2, "fstype": [1, 2], "fulfil": 30, "full": [2, 11, 13, 14, 17, 18, 27, 29], "fullfil": 15, "fulli": [17, 23], "function": [2, 3, 23, 31, 37], "further": 12, "futur": [2, 7, 19, 20, 21], "g": [1, 2, 3, 6, 14, 18, 38], "ga": 31, "garbag": 18, "gate": [1, 2, 3], "gatewai": [2, 3], "gather": 32, "gb": 13, "gc": 2, "gce": 2, "gcloud": [14, 21], "gcp": [14, 21], "gcp_project": 14, "gcp_region": 14, "gcp_user": 14, "gcp_zone": 14, "gen": 13, "gener": [1, 2, 3, 10, 11, 12, 13, 14, 17, 18, 19, 29, 38], "get": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 34, 38], "gib": [2, 15], "git": [1, 2, 3, 4, 10, 13, 18, 31, 38], "github": [6, 10, 13, 16, 19, 31, 34], "give": [2, 10, 13, 14, 17, 31], "given": [1, 2, 3, 20, 27, 34], "gke": [8, 12, 13, 16, 22, 23, 27, 31], "glob": 2, "global": 2, "go": [1, 2, 10, 13, 15, 18, 23, 27, 38], "go_vers": 17, "goe": 34, "good": [10, 12, 15], "googl": 21, "googleapi": [15, 38], "gopath": 10, "gracefulli": 2, "grafana": [13, 16], "grafana_password": 19, "grafana_serving_cert": 19, "grafana_us": 19, "grant": 18, "granular": 2, "greatest": [1, 2, 3], "group": [1, 2, 3], "gt": [1, 2, 3], "guarante": [2, 3, 14, 30], "guid": [3, 11, 13, 14, 15, 17, 18, 20, 21, 23, 38], "guidanc": [20, 21], "h": [2, 13], "ha": [1, 2, 3, 7, 8, 10, 12, 13, 14, 20, 23, 28, 31], "hack": 13, "hacki": 18, "hairpin": 33, "handl": [2, 14], "happen": [2, 13, 29], "hard": 14, "hardwar": 15, "hash": [2, 6, 21], "have": [1, 2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 29, 30, 34, 37, 38], "head": 10, "header": 2, "headless": 23, "healhcheck": 17, "healthcheck": 17, "healthcheck_rest": 17, "healthz": 38, "helm": [13, 16, 19, 31], "help": [7, 12, 13, 16, 34, 35], "here": [2, 3, 6, 7, 8, 10, 13, 34, 38], "hi": 24, "high": 23, "higher": [2, 3], "highest": [1, 2, 3], "highli": [11, 13, 14], "histori": 7, "hit": [31, 34], "hold": [1, 2, 3], "home": 10, "hop": 8, "host": [1, 2, 10, 17, 19, 23, 27, 31], "hostnam": [2, 7, 8, 12, 23], "hostnetwork": [2, 13, 37], "hour": 2, "hourli": 2, "how": [2, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 19, 27, 28, 34, 37], "howev": [23, 30], "html": 11, "http": [1, 2, 3, 4, 5, 6, 10, 11, 13, 15, 17, 19, 34, 38], "http_code": 19, "httpget": 38, "hub": 15, "human": [1, 2, 3, 23], "i": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 27, 28, 29, 30, 31, 33, 34, 37, 38], "i3": 11, "iam": 14, "icmp": 21, "id": [2, 17, 20, 23, 27, 28], "ideal": 13, "identif": 2, "identifi": [2, 3, 27, 28], "ie": 13, "ifnotpres": 15, "ignor": [1, 2, 3, 27], "ill": 23, "imag": [1, 2, 4, 10, 14, 18, 21, 29, 30, 31, 38], "imagepath": 1, "imagin": 10, "img": 10, "immedi": [1, 2, 3, 30], "immut": [2, 3], "impact": 2, "implement": [1, 2, 3, 10, 23], "impli": [2, 3, 12], "implicit": [1, 2, 3], "implicitli": 2, "import": [2, 3, 8, 13, 14, 31], "improv": 11, "inbound": 20, "incid": 24, "includ": [2, 3, 10, 15, 21, 35, 37], "incom": [1, 2, 3], "incompat": [18, 31, 38], "inconsequenti": 13, "incorpor": 12, "increas": [2, 13], "independ": [12, 23, 37], "index": [6, 7, 19, 23], "indic": [1, 2, 3], "individu": [2, 11, 14], "infer": [1, 2, 3, 4], "infinit": 17, "info": [1, 2, 3, 4, 17, 34], "inform": [2, 13, 19, 20, 21, 23, 29, 35, 37], "infrastructur": [2, 20, 21, 23], "ingress": [6, 8, 12, 21, 37], "ingress_ip": 19, "ingress_port": 19, "ingressclassnam": [2, 3, 19], "initcontain": [2, 18], "initi": [2, 8, 18, 23], "initiatornam": 2, "inject": 14, "insecur": 2, "insecuredisableauthor": 2, "insecureenableanonymousaccess": 3, "insecureenablehttp": 2, "insid": [2, 3, 11, 13, 14, 26], "inspect": 10, "instal": [2, 3, 10, 13, 16, 17, 18, 19, 20, 21, 23, 34, 36, 38], "instanc": [1, 2, 3, 13, 14, 15, 17, 18, 19, 20, 21, 23], "instance_numb": 13, "instancetyp": 11, "instead": [2, 7, 13, 37], "instruct": [11, 13, 14, 15, 18, 20], "integ": [1, 2, 3], "integr": [2, 7, 10, 16, 23], "intend": [2, 3], "intens": [2, 28], "inter": [2, 12, 22, 23], "interact": [13, 26, 31], "interconnect": [12, 20, 21, 22], "interest": 15, "interfac": [2, 3, 14, 21], "intern": [1, 2, 3, 4, 8, 12, 15, 17], "internal_ip": 19, "internalip": 19, "internaltrafficpolici": [2, 12], "interpret": [1, 2, 3], "interrupt": 30, "intersect": [1, 2, 3], "interv": [2, 17], "intervent": 23, "introduc": [13, 19, 23, 30], "involv": 18, "io": [1, 2, 3, 4, 5, 7, 8, 11, 12, 13, 19, 20, 23, 31, 34, 38], "ip": [2, 6, 8, 12, 13, 15, 18, 19, 21, 23, 27, 33], "ip_addr": 2, "ipaddress": 12, "ipv4": [20, 21], "iqn": 2, "irq": 30, "iscsiinterfac": 2, "isn": [1, 2, 3, 15, 28], "isol": [2, 13], "issu": [6, 8, 10, 16, 17, 18, 29, 31, 32, 34, 36, 38], "issuer": 13, "item": 19, "iter": [1, 2, 3], "its": [1, 2, 3, 8, 11, 13, 14, 17, 18, 20, 21, 23], "itself": [2, 10, 15, 17, 26], "jan": 28, "job": [2, 13, 31], "join": [23, 27], "jonesdl": 2, "json": [2, 3, 18, 23], "jsonpath": [6, 7, 8], "just": [1, 2, 3, 8, 10, 11, 13, 14], "k8": [1, 2, 3, 4, 15, 16, 17, 18, 25, 26, 27, 30], "kb": [23, 27], "keep": [10, 11, 14], "kei": [1, 2, 3, 6, 7, 12, 13, 17, 23, 34], "kept": 13, "kernel": [30, 31], "keyr": 2, "keyschema": 6, "keyspac": [2, 13, 17, 28, 29], "keytyp": 6, "kind": [1, 2, 3, 4, 7, 12, 18, 19, 20, 23, 28, 30, 38], "know": 12, "known": [2, 3, 20, 31, 32], "kube": 34, "kubebuild": 10, "kubeconfig": 34, "kubectl": [6, 7, 8, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 30, 34], "kubelet": [2, 11, 14, 30, 31], "kubeletconfig": 14, "kubeletextraconfig": 11, "kubernet": [2, 3, 5, 6, 7, 11, 12, 15, 16, 18, 19, 34, 37], "kustom": 10, "l": [13, 15, 17, 18, 19, 28, 34], "label": [1, 11, 13, 14, 19, 23, 26, 27, 30], "labelselector": 23, "lack": 17, "land": [15, 30], "larg": [11, 34], "last": [1, 2, 3, 10], "lasttransitiontim": [1, 2, 3], "latenc": 12, "later": [11, 14], "latest": [1, 2, 3, 4, 10, 11, 16, 31, 34], "latter": 8, "launch": [11, 14], "lb": 12, "leak": 7, "learn": [2, 7, 8, 12, 20, 28, 35], "least": [2, 10, 14, 15, 23, 30, 34], "leav": [2, 23, 27, 30], "left": 29, "less": [10, 18, 19, 38], "lesson": 16, "let": [2, 11, 14, 15, 17, 23, 34], "level": [2, 13, 17], "lib": 17, "licens": 17, "life": [13, 27], "lifecycl": [2, 10, 23], "lifetim": 2, "light": 2, "like": [2, 3, 6, 8, 10, 13, 16, 17, 18, 19, 27, 30, 31, 34], "likelihood": 23, "limit": [13, 15, 17, 23, 28, 30], "line": [10, 20, 21, 23], "link": [2, 10, 33], "linux": [13, 31], "list": [1, 2, 3, 6, 10, 13, 14, 17, 18, 21, 28, 38], "listkind": [1, 2, 3, 4], "listmapkei": [2, 3], "listtyp": [2, 3], "littl": 13, "live": [2, 26], "livenessprob": 38, "ll": [11, 14, 28, 34], "load": [2, 8, 12, 23, 26, 27], "loadbalanc": [8, 19], "loadbalancerclass": [2, 12], "local": [1, 2, 3, 6, 7, 8, 10, 19, 20, 23, 27], "localdc": 17, "localobjectrefer": 2, "locat": [1, 2, 3, 17, 21, 28, 34], "log": [2, 10, 13, 17, 29], "logger": 17, "logic": [2, 10, 12], "login": 2, "loglevel": 17, "long": [2, 8], "longer": [2, 10, 13, 14, 23, 27], "look": [2, 3, 8, 10, 13, 15, 18, 23, 34], "lookup": [1, 2, 3, 18], "loop": [1, 10], "loopdeviceconfigur": 1, "lose": [10, 24], "lost": 25, "lot": 38, "lower": [2, 3, 18], "lqejv3kdr5gx9m3xq2ynnq": 17, "lsetxattr": 34, "lt": [1, 2, 3], "lun": 2, "m": [2, 17], "ma": 15, "machin": [2, 11, 13, 14, 19, 21, 34], "machineri": 23, "made": [2, 10, 12, 31], "mai": [1, 2, 3, 4, 7, 8, 12, 19, 23, 24, 26, 27, 29, 30, 31, 34, 38], "main": [13, 15, 17, 23], "maintain": [10, 31], "mainten": [25, 29], "make": [2, 3, 6, 7, 8, 10, 13, 14, 15, 17, 18, 19, 23, 27, 28, 31, 34, 37, 38], "makefil": 10, "manag": [2, 3, 12, 14, 16, 18, 20, 21, 27, 28, 30, 31, 34, 38], "managerid": 2, "mang": 2, "mani": [2, 3, 15, 19, 30, 34], "manifest": [13, 23, 38], "manual": [2, 3, 6, 7, 13, 14, 18, 19, 21, 23, 28, 29, 34, 37, 38], "map": [1, 2, 3, 17], "mark": 2, "master": [2, 10, 31], "match": [1, 2, 3, 14, 19, 30, 31], "matchexpress": 23, "matchlabel": [19, 23], "matchlabelkei": [1, 2, 3], "matchlabelkeysinpodaffin": [1, 2, 3], "matter": 19, "max": [2, 13, 23], "max_repair_ranges_in_parallel": 2, "maximum": [2, 3, 11, 14], "md": [1, 2, 3, 4], "mean": [1, 2, 3, 13, 18], "meant": 2, "mechan": 23, "medium": 2, "meet": [1, 2, 3, 23, 30], "megabyt": 2, "member": [2, 3, 8, 13, 15, 17, 18, 19, 23, 28, 29, 30], "memori": [2, 13, 15, 23, 28, 30, 31], "mention": [8, 34], "merg": [1, 2, 3, 6, 10, 12, 23, 28, 29, 31], "messag": [1, 2, 3, 13, 17, 29], "met": [1, 2, 3, 19, 23, 28], "metadata": [7, 8, 18, 19, 20, 23, 28, 30], "metal": [17, 19], "metav1": [2, 3], "metric": [12, 13, 15], "mib": 2, "midnight": 2, "might": [2, 12, 18, 27, 31], "migrat": [33, 38], "migratedir": 17, "migratemaxwaitschemaagr": 17, "migratetimeout": 17, "mikefarah": 34, "mini": 13, "minifi": 34, "minikub": [13, 15], "minim": [10, 15], "minimum": [2, 3], "minor": 38, "minreadysecond": 2, "minterminationgraceperiodsecond": 2, "minut": [2, 29], "mirror": 2, "mismatchlabelkei": [1, 2, 3], "mission": 17, "mistak": 2, "mitig": 8, "mkdir": 10, "mktemp": [6, 7, 34, 38], "mnt": 17, "mode": [2, 3, 11, 14, 17, 21, 25, 29, 34], "model": [1, 21], "modelregex": 1, "modif": 6, "modifi": [3, 10, 13, 14, 21, 29, 37], "modifyvolumestatu": [2, 3], "moment": 2, "monitor": [2, 3, 11, 14, 16, 23, 31], "month": 10, "monthli": 2, "more": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 19, 20, 21, 23, 27, 30, 34, 35, 37], "most": [1, 2, 3, 10, 11, 13, 14, 15, 19, 23, 30], "mount": [2, 11, 13, 14, 34], "mountconfigur": 1, "mountpath": 2, "mountpoint": 1, "mountpropag": 2, "mountpropagationnon": 2, "move": [23, 27, 29, 30], "much": [15, 27], "multi": [16, 20, 21, 34], "multipl": [1, 2, 3, 10, 12, 13, 17, 18, 22], "musiccollect": 6, "must": [1, 2, 3, 10, 12, 13, 17, 23, 27, 29, 30, 31, 32, 35, 38], "must_gather_token": 34, "mutat": [2, 3, 38], "mutatingwebhookconfigur": 38, "mutual": 2, "my": [2, 12, 17], "mydomain": 19, "mysql": 2, "n": [2, 11, 13, 14, 15, 17, 18, 19, 23, 26, 27, 28, 29, 31, 34, 38], "n1": [14, 21], "name": [1, 2, 3, 6, 7, 8, 10, 11, 13, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 34, 38], "nameregex": 1, "namespac": [1, 2, 3, 8, 13, 15, 17, 18, 23, 30, 38], "namespace_with_broken_scyllaclust": 34, "nativ": [7, 13, 21], "natur": 23, "navig": 10, "necessari": [2, 11, 13, 14, 19, 20, 21, 23, 34], "need": [2, 6, 7, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31, 34, 37, 38], "neg": [1, 2, 3], "network": [3, 6, 7, 8, 10, 12, 16, 22, 27, 30, 37], "networktopologystrategi": 13, "never": [10, 38], "new": [2, 3, 10, 13, 14, 16, 17, 18, 19, 20, 23, 27, 29, 30, 31, 38], "new_replication_factor": 13, "newli": [2, 18], "next": [17, 29], "nightli": 29, "nil": 2, "node": [1, 3, 6, 7, 9, 13, 15, 16, 17, 18, 19, 26, 28, 29], "nodeaffin": 23, "nodeconfig": [0, 5, 11, 14, 30], "nodeconfiglist": 1, "nodegroup": [11, 20], "nodepool": 14, "nodepublishvolum": 2, "nodeselector": [13, 30], "nodeselectorterm": 23, "nodeservic": [12, 23], "nodetool": [23, 27], "nodeunpublishvolum": 2, "noexecut": [1, 2, 3], "non": [1, 2, 3, 20, 23, 29], "none": [2, 8, 15, 18, 27], "nor": 6, "normal": [2, 23, 27], "noschedul": [1, 2, 3, 11, 14, 23], "notabl": 23, "note": [2, 3, 7, 13, 17, 19, 38], "noth": [2, 18], "notic": [2, 15, 19], "notin": [1, 2, 3], "now": [2, 6, 10, 11, 13, 14, 17, 18, 20, 21, 23], "nr": [2, 13, 23], "ntf": 2, "null": [1, 2, 3, 19], "num": [13, 14, 17, 21], "num_job": 13, "number": [2, 10, 13, 38], "numretri": 2, "nutshel": 10, "nvme": [11, 14], "o": [6, 7, 8, 13, 18, 19, 28, 31, 34], "object": [1, 2, 3, 4, 12, 13, 19, 23, 38], "observ": [1, 2, 3, 4, 15, 29], "observedgener": [1, 2, 3], "obtain": [2, 14], "obviou": 10, "octal": 2, "off": [1, 10, 13, 26, 29, 31, 38], "offici": [18, 31], "often": [2, 19, 37], "ok": 13, "old": [18, 27, 38], "older": 2, "omit": [2, 3, 20], "omitempti": [2, 3], "onc": [2, 3, 10, 11, 13, 14, 15, 17, 20, 21, 29, 38], "ondelet": 29, "one": [1, 2, 3, 8, 10, 12, 13, 15, 17, 18, 21, 23, 24, 27, 29, 34, 38], "ones": [1, 2, 3, 12, 20, 38], "ongo": 2, "onli": [1, 2, 3, 6, 8, 11, 13, 18, 20, 21, 23, 29, 30, 31, 34, 38], "only_rmw_uses_lwt": 13, "onto": [1, 2, 3], "op": [1, 2, 3, 13, 18, 23], "open": [10, 12, 13, 16, 17], "openstack": 2, "oper": [1, 2, 3, 4, 5, 6, 7, 8, 12, 17, 18, 23, 24, 26, 27, 29, 30, 31, 34, 35, 37], "opt": 7, "optim": [1, 2, 11, 14, 30], "option": [1, 3, 6, 7, 11, 13, 14, 15, 17, 23, 30, 34], "optmiz": 30, "order": [2, 10, 12, 13, 14, 17, 23, 38], "organ": 3, "origin": [10, 23], "orphan": 2, "other": [1, 2, 3, 6, 8, 10, 12, 14, 15, 16, 17, 19, 20, 21, 23, 27, 30, 31, 34], "otherdc": 2, "otherwis": [1, 2, 3, 10, 19, 20, 31], "our": [6, 8, 13, 18, 23, 30, 31, 34, 35, 38], "out": [1, 2, 3, 5, 6, 13, 16, 18, 23, 29, 38], "output": [2, 6, 10, 13, 17, 18, 21, 23, 28], "outsid": [8, 12, 19], "over": [1, 2, 3, 7, 11, 14, 23, 27, 29], "overal": 2, "overlap": [20, 21], "overrid": [2, 13], "overview": [2, 32], "overwrit": 15, "own": [2, 11, 14, 15, 23, 27], "owner": [2, 3], "ownerrefer": 18, "p": [8, 10, 13, 14, 18, 23, 28, 29, 38], "packet": [19, 30], "page": [7, 8, 12, 21, 38], "paid": 35, "pair": [1, 2, 3, 12, 13], "paragraph": [6, 7], "parallel": [2, 28, 29], "paramet": [2, 23], "part": [2, 8, 30], "parti": [2, 3, 19], "particular": [1, 2, 3, 8, 12, 13, 15, 23, 29, 31], "partit": 2, "pass": [1, 2, 10, 12, 14, 31, 37], "passthrough": 19, "password": [6, 7, 13, 17, 19], "passwordauthent": [7, 13], "patch": [1, 2, 3, 8, 18, 23, 28, 29, 38], "patchmergekei": [2, 3], "patchstrategi": [2, 3], "path": [1, 2, 3, 10, 13, 18, 23, 34, 38], "pattern": [2, 13, 15, 34], "pcx": 20, "pd": [2, 14, 21], "pdb": 14, "pdid": 2, "pdname": 2, "peer": 23, "pem": 2, "pend": [2, 3, 27], "per": [1, 2, 3, 8, 13], "percent": 2, "perform": [2, 11, 13, 14, 16, 24, 31], "perftun": 30, "period": [1, 2, 3, 18], "perman": 7, "permiss": [2, 14, 17, 18], "permit": 21, "persist": [2, 3, 14, 17], "persistentvolum": [2, 3, 11, 13, 14], "persistentvolumeclaim": 3, "persistentvolumeclaimvolumesourc": 2, "photon": 2, "photoncontrol": 2, "pick": [13, 23], "pid": 17, "piec": 31, "pin": [2, 30, 38], "placement": [23, 30], "plain": 13, "plaintextauthprovid": 7, "plane": [37, 38], "platform": [3, 12, 13, 19, 20, 21, 22], "pleas": [2, 6, 7, 10, 15, 30, 34, 37, 38], "plugin": [2, 34], "pluralnam": [1, 2, 3, 4], "pod": [1, 2, 3, 7, 8, 11, 12, 13, 14, 15, 17, 18, 19, 21, 23, 24, 26, 27, 29, 30, 34, 37], "podantiaffin": 23, "podman": 7, "podreadinessg": 2, "podspec": [2, 3], "point": [1, 2, 3, 7, 8, 12, 14, 18, 19, 23, 29, 34], "polici": [2, 10, 11, 12, 14, 15, 30], "poll": 2, "pollinterv": [2, 17], "pool": [2, 11, 14, 21, 23, 27, 30], "popul": [2, 3, 13], "port": [2, 7, 8, 13, 15, 18, 19, 20, 27, 28, 38], "portal": 2, "portworx": 2, "possibl": [2, 27], "post": 28, "potenti": 2, "power": [10, 30], "pr": 10, "pre": 2, "preconfigur": 20, "predefin": [20, 21, 34], "predict": 17, "prefer": [11, 14, 20, 21], "prefer_loc": 13, "prefernoschedul": [1, 2, 3], "prefix": 10, "prepar": [10, 22, 23], "present": [2, 6, 17, 20], "preserv": [2, 3, 38], "press": 8, "prevent": 2, "previou": [2, 3, 18, 29], "print": [13, 29], "printf": 38, "prior": 17, "prioriti": 21, "privat": 20, "privileg": 2, "proactiv": 2, "probe": [26, 38], "procedur": [2, 16, 23, 27, 28, 29, 38], "process": [13, 14, 20, 21, 23, 26, 29, 30, 38], "prod": 17, "produc": [2, 3], "product": [13, 17, 18, 19, 23], "profil": 2, "programmat": [2, 3], "progress": [2, 3, 8, 17, 19, 23, 28], "project": [14, 16], "prometh": 15, "prometheu": [13, 15, 16, 17], "prometheusscrapeinterv": 17, "promisc": 33, "prompt": 10, "prone": 13, "propag": [2, 12, 13, 18, 23], "proper": 13, "properli": [19, 29, 37, 38], "properti": [1, 2, 3, 4, 10, 12, 13], "propos": 23, "proprietari": 17, "protect": 2, "protectiondomain": 2, "protobuf": [2, 3], "protocol": [6, 7, 8, 12, 20], "provid": [2, 5, 6, 8, 11, 12, 13, 14, 15, 19, 20, 23, 30, 35, 37], "provis": [2, 6, 11, 12, 13, 14, 15, 23], "provision": [2, 3, 20, 21, 23], "provisionedthroughput": 6, "public": 12, "publicroutet": 20, "publish": [2, 31], "pull": [2, 15, 34, 38], "pullpolici": 15, "pure": 13, "purpos": [2, 3, 14, 34], "push": 10, "put": [1, 10], "pvc": [2, 3, 24], "pwd": 34, "py": 13, "python": [13, 30], "qa": 31, "qo": 30, "qualifi": 2, "qualifiednamefmt": [2, 3], "qualiti": 31, "queri": [1, 2, 3], "queryabl": 3, "question": 18, "quick": 6, "quickli": 10, "quota": 30, "r": [6, 11], "rack": [8, 13, 15, 16, 17, 23, 27, 28, 29, 30], "rack_nam": 13, "rackcount": 2, "rackdc": [2, 13], "rackspec": 2, "rado": 2, "raft": 28, "raid": [11, 14], "raid0": [11, 14], "raidconfigur": 1, "random": 23, "rang": [1, 2, 3, 6, 19, 20, 21], "rate": [2, 13], "ratelimit": 2, "rather": [2, 31], "raw": [14, 34], "rbac": 14, "rbduser": 2, "rc": 31, "re": [8, 10, 18, 38], "reach": [8, 12, 17, 19, 29, 37], "reachabl": [2, 3, 12, 19], "read": [2, 10, 11, 13, 14, 15, 18], "readabl": [1, 2, 3, 20], "readcapacityunit": 6, "readi": [2, 8, 10, 13, 15, 17, 18, 20, 21, 26, 27, 29, 38], "readinessprob": 38, "readm": 2, "readonli": 2, "readymemb": 2, "readyz": 38, "real": [2, 19], "reason": [1, 2, 3, 7, 15], "rebas": 10, "receiv": 30, "recent": [1, 2, 3, 10], "recipi": 2, "recogn": [1, 2, 3, 4], "recommend": [7, 13, 19, 23, 31, 38], "reconcil": [2, 10, 19], "reconfigur": 37, "reconstruct": 2, "record": [2, 3, 8, 12, 19], "recov": 29, "recovervolumeexpansionfailur": [2, 3], "recreat": [27, 38], "recur": 17, "refer": [2, 3, 6, 7, 11, 13, 14, 15, 16, 18, 19, 20, 21, 23, 28, 31, 38], "referenc": [2, 3], "referencegr": [2, 3], "reflect": [2, 3], "refus": 29, "regard": [12, 18, 21, 23], "regex": [2, 3], "region": [14, 20, 21, 23], "regist": [2, 17, 18, 28], "registri": [2, 26], "regular": [1, 2, 3, 13, 17], "reject": [1, 2, 3, 4], "rel": [1, 2, 3], "relat": [1, 2, 3, 12, 16, 23, 34], "relationship": [1, 2, 3], "releas": [7, 16, 38], "release_nam": 38, "relev": 10, "reli": 2, "reliabl": 12, "rememb": [10, 13], "remot": [3, 6], "remov": [2, 10, 13, 15, 18, 23, 24, 26, 29, 34, 38], "reorder": 10, "rep": [2, 3], "repair": [14, 16, 17, 27, 28], "replac": [1, 2, 3, 8, 13, 16, 18, 19, 23, 25, 28, 34, 38], "replic": [2, 3, 13], "replica": [2, 29], "replicaset": 15, "replication_factor": 13, "replicationfactor": 17, "repo": [2, 10, 15, 18, 38], "report": [16, 35], "repositori": [2, 10, 13, 38], "repres": [1, 2, 3, 4, 13, 23], "represent": [1, 2, 3, 4], "request": [1, 4, 15, 18, 19, 23, 30, 34, 35], "requir": [1, 2, 3, 10, 11, 12, 13, 14, 20, 21, 23, 28, 30, 31, 33, 35, 37, 38], "requiredduringschedul": [1, 2, 3], "requiredduringschedulingignoredduringexecut": 23, "resembl": [13, 21], "reset": [2, 3], "resid": [12, 21], "resolv": [12, 17, 29], "resourc": [1, 4, 13, 17, 18, 19, 20, 21, 23, 24, 28, 30, 37, 38], "resourceclaim": [2, 3], "respect": [1, 2, 3, 14], "rest": [1, 2, 3, 4, 5, 13, 17, 34], "restart": [13, 15, 17, 18, 23, 27, 28, 29, 38], "restor": [2, 25, 29, 38], "restore_upgrade_strategi": 29, "restrict": [2, 3], "result": [2, 13, 18], "resum": 2, "retainkei": 38, "retent": [2, 17], "retri": [2, 17, 29], "retriev": [3, 13, 21, 34], "return": [20, 21, 26], "revert": 1, "review": 34, "revis": [2, 19], "rewrit": 15, "rf": 2, "rfc3339": 2, "rhwqx": 15, "ring": [2, 23], "risk": 10, "rm": [7, 34], "ro": [7, 34], "role": [6, 11, 13, 14, 18, 23], "roll": [2, 13, 15, 16, 18, 23, 28, 29, 38], "rollout": [2, 3, 13, 18, 19, 38], "root": [2, 7, 29], "rotat": 2, "rout": [12, 19], "routabl": 12, "row": 2, "rule": [1, 2, 3, 18, 20, 37], "run": [1, 2, 3, 4, 6, 7, 10, 11, 14, 15, 16, 17, 18, 19, 23, 27, 28, 29, 30, 38], "runtim": 34, "s3": [2, 17, 28], "sai": 10, "said": 34, "salted_hash": 6, "same": [1, 2, 3, 8, 11, 12, 13, 14, 15, 17, 18, 23, 29, 30, 31], "satisfi": [1, 2, 3], "save": [10, 13, 18, 20, 23, 29, 34, 38], "sc": [6, 7, 8], "scale": [16, 29, 34], "scenario": 12, "schedul": [1, 2, 3], "schema": [1, 2, 3, 4, 6, 29], "scheme": [8, 12, 38], "scope": [1, 2, 3, 4], "scrape": [3, 15], "scratch": [31, 38], "script": [2, 6, 13, 14, 30], "sctool": [17, 28], "sctp": 21, "scyladb": 23, "scylla": [5, 6, 7, 8, 12, 18, 19, 20, 21, 24, 26, 28, 30, 31, 34, 35, 37], "scylla_manag": 17, "scylla_vers": 13, "scyllaagentconfig": 2, "scyllaarg": 2, "scyllaclus": 23, "scyllaclust": [0, 5, 6, 8, 15, 16, 17, 18, 19, 23, 24, 28, 29, 30, 34, 38], "scyllacluster_nam": 6, "scyllaclusterlist": 2, "scyllaconfig": 2, "scylladb": [5, 6, 7, 10, 12, 13, 15, 16, 18, 19, 28, 30, 31, 34, 35, 38], "scylladb_config": 7, "scylladb_discovery_ep": 7, "scylladb_ep": 6, "scylladbmonitor": [0, 5], "scylladbmonitoringlist": 3, "scyllaimag": 15, "scyllaoperatorconfig": [0, 5], "scyllaoperatorconfiglist": 4, "scyllautilsimag": 4, "sda": 2, "sda1": 2, "sdd": [11, 14], "sdn": [2, 37], "search": 15, "sec": 13, "second": [2, 13], "secondari": 21, "secret": [3, 7, 13, 15, 19, 23, 34], "secretfil": 2, "secretnam": 2, "section": [6, 11, 12, 13, 14, 20, 21, 34, 35], "secur": [2, 7, 12, 13], "sed": [6, 14, 18, 38], "see": [2, 3, 6, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 28, 30], "seed": 2, "segmentsperrepair": 17, "select": [1, 2, 3, 6, 8, 10, 12, 13, 23], "selector": [1, 12, 13, 38], "self": [3, 13, 15], "selinux": 34, "semant": [2, 29], "send": [20, 34], "sensit": [2, 34], "sent": 2, "sep": 17, "separ": [2, 10, 11, 12, 14, 18, 20, 30], "sequenti": 18, "serivceaccount": 2, "serv": [1, 2, 3, 4, 6, 7, 12, 13, 15, 19, 20, 21, 23, 37], "server": [1, 2, 3, 4, 11, 13, 14, 17, 19, 23, 38], "servic": [2, 3, 6, 7, 8, 13, 15, 18, 19, 21, 26, 27, 37], "serviceaccount": 34, "servicemonitor": 15, "servingcertsecretnam": 3, "session": [2, 13], "set": [1, 2, 3, 6, 7, 8, 10, 12, 15, 16, 17, 19, 23, 28, 29, 30, 33, 34], "setup": [1, 2, 3, 12, 13, 19, 20, 21, 23, 37], "sever": [8, 11, 12, 20, 21, 37], "sh": [10, 11, 14], "sha": 31, "shard": 2, "shardfailedsegmentsmax": 17, "shardingignoremsbbit": 17, "shardparallelmax": 17, "share": [2, 20, 21, 30], "sharenam": 2, "sheer": 23, "shell": [7, 13, 18], "ship": 31, "short": [10, 18], "shortli": 17, "should": [1, 2, 3, 4, 7, 10, 12, 13, 15, 17, 18, 19, 20, 21, 23, 27, 29, 30], "shouldn": [2, 18, 27], "show": [6, 7, 10, 13, 29, 31], "side": [11, 14, 19, 23, 38], "sidecar": [10, 13, 15, 18, 38], "sig": [1, 2, 3, 4], "sign": [2, 3, 13, 15, 18], "signer": 2, "signernam": 2, "similar": [19, 20, 23, 34], "similarli": [2, 15, 34], "simpl": [10, 12, 13, 15, 17, 18, 26, 27, 29, 38], "simpli": [10, 13, 15, 18, 26, 29], "simplic": [20, 21, 23], "simplifi": 7, "simultan": 2, "sinc": [12, 23], "sing": 31, "singl": [1, 2, 3, 10, 13, 15, 17, 23], "singularnam": [1, 2, 3, 4], "situat": 31, "size": [1, 2, 14, 21, 27, 28], "sizelimit": 2, "skip": [19, 34], "slack": 18, "slight": 34, "slightli": [2, 19], "sm_20240105115931utc": 28, "small": [2, 13, 17], "smalltablethreshold": 2, "snapshot": [2, 3, 28, 29], "snapshot_tag": 28, "snapshotparallel": 2, "sni": 19, "so": [1, 2, 3, 7, 8, 10, 12, 13, 14, 15, 19, 20, 21, 23, 30, 38], "so_data_20201228135002utc": 29, "so_system_20201228135002utc": 29, "softwar": 17, "solv": [8, 18, 38], "some": [1, 2, 3, 8, 10, 12, 13, 15, 17, 27, 31, 34, 37], "someth": [13, 17, 26, 34], "sometim": [10, 13, 34], "somewher": 18, "songtitl": 6, "sourc": [3, 12, 15, 16, 17, 20, 21, 28, 38], "sourcetyp": 2, "space": 30, "spawn": 17, "spbm": 2, "spec": [6, 7, 8, 12, 13, 15, 17, 18, 19, 23, 28, 29, 30, 38], "special": 30, "specif": [7, 8, 12, 13, 15, 20, 21, 23, 30, 37, 38], "specifi": [1, 2, 3, 12, 13, 15, 20, 23], "speed": 10, "spent": 2, "spin": [15, 17], "spot": 17, "spread": 30, "squash": 10, "squeez": 13, "src": 10, "ssd": [14, 21], "ssh": [11, 17, 33], "ssl": [2, 7, 17, 19], "ssl_transport_factori": 7, "sslenabl": 2, "ssltimeout": 17, "sstabl": 29, "st": [18, 38], "stabl": [8, 13, 15, 38], "stack": [11, 14, 16, 19], "stackdriv": 14, "stage": [18, 29], "stai": 26, "stand": 2, "standard": [2, 5, 6, 14, 21, 37], "start": [2, 8, 10, 11, 13, 17, 20, 28, 29, 30], "startdat": 2, "startup": [2, 23], "stash": 10, "state": [1, 2, 3, 4, 13, 15, 17, 19, 23, 27, 29, 34], "statefulset": [13, 15, 18, 19, 29, 38], "static": [1, 2, 3, 8, 11, 14, 18, 30], "statu": [8, 12, 13, 15, 16, 17, 18, 19, 20, 23, 27, 28, 29, 38], "stderr": 17, "stdout": 13, "step": [11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 28, 34, 38], "still": [2, 3, 34], "stop": 2, "storag": [1, 4, 11, 13, 14, 15, 19, 23, 28, 30, 38], "storageclass": [2, 3, 23], "storageclass_xf": 14, "storageclassnam": [2, 3, 23], "storagemod": 2, "storagepolicyid": 2, "storagepolicynam": 2, "storagepool": 2, "store": [2, 3, 7, 27, 28], "strateg": [1, 2, 3], "stream": 27, "stress": [11, 14], "string": [1, 2, 3, 4], "stringdata": 23, "strip": 2, "strongli": 7, "struct": [2, 3], "stuck": 29, "style": 5, "subdirectori": 2, "subject": [10, 30], "submit": [1, 2, 3, 4], "subnet": [12, 20], "subnetwork": 21, "subpath": 2, "subpathexpr": 2, "subset": [1, 2, 3, 8, 23, 34], "succe": [2, 3, 26], "success": 28, "successfulli": [13, 19], "sudo": 33, "suffici": 12, "suggest": 28, "suit": [31, 37], "sum": [1, 2, 3], "summari": 10, "superset": 12, "suppli": [2, 34], "support": [1, 2, 3, 10, 12, 13, 15, 16, 17, 23, 28, 29, 34, 37, 38], "suppos": 30, "sure": [2, 6, 8, 10, 13, 14, 15, 17, 18, 23, 27, 28, 31, 34, 37, 38], "suspect": 31, "svc": [8, 13, 17, 18, 19, 26, 27], "switch": 30, "symlink": [1, 2, 38], "sync": [23, 27], "synchron": 17, "syntax": 2, "sysctl": [2, 13, 23], "system": [1, 2, 3, 14, 18, 29, 38], "system_auth": [6, 13, 17], "system_distribut": 17, "system_schema": [28, 29], "system_trac": 17, "systemconfig": 14, "systemsnapshottag": 2, "t": [1, 2, 3, 6, 10, 11, 12, 13, 14, 15, 17, 18, 27, 28, 30, 31, 34, 37, 38], "tab": 10, "tabl": [2, 6, 31], "table_prefix_": 2, "tabledescript": 6, "tablenam": 6, "tag": [2, 15, 18, 28, 29, 31, 38], "tailor": [20, 21], "taint": [1, 2, 3, 11, 14], "take": [2, 11, 13, 14, 27, 28, 29, 30, 34], "taken": [1, 2, 3, 12, 28, 29], "talk": [8, 12, 17, 30, 34], "target": [2, 17, 20, 28, 30, 38], "targetport": 2, "targetwwn": 2, "task": [2, 11, 13, 16, 23, 28], "tcp": [2, 8, 12, 15, 18, 21, 27], "td05v9evu3b8": 20, "team": 10, "tell": 10, "templat": [2, 3, 6, 13, 18, 19, 23, 38], "temporari": 2, "temporarili": 10, "tenant": 2, "term": [1, 2, 3], "termin": [2, 6], "test": [10, 17, 19, 31, 37], "text": 7, "than": [2, 3, 10, 12, 13, 18, 27, 34], "thei": [2, 3, 12, 13, 17, 23, 34], "them": [1, 2, 3, 7, 8, 10, 11, 12, 13, 14, 15, 18, 19, 20, 23, 30, 34, 38], "thi": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 30, 31, 33, 34, 37, 38], "thickprovis": 2, "thing": [2, 13], "thinprovis": 2, "third": [2, 3, 19], "those": [1, 2, 3, 11, 13, 14, 30], "thread": 13, "three": [2, 3, 10, 15, 17], "threshold": 2, "throttl": [13, 30], "through": [1, 2, 3, 8, 12, 13, 15, 20, 21, 23], "throughout": [20, 21, 23], "throughput": [6, 13], "ti": [2, 17, 27, 28], "tib": 2, "tier": 11, "tighter": 2, "time": [1, 2, 3, 6, 8, 10, 15, 17, 18, 27, 28, 31], "timeout": [14, 15, 17, 18, 19], "timezon": 2, "tip": 2, "tl": [2, 7, 19], "tlscafil": 17, "tlscertfil": 17, "tlskeyfil": 17, "tmp": 13, "tmpdir": 38, "todo": 2, "togeth": [2, 11, 14], "token": [2, 6, 23, 27, 34], "tokenawar": 17, "toler": [11, 23], "tolerationsecond": [1, 2, 3], "too": 2, "tool": [3, 10, 11, 19, 20, 21, 23, 34, 35], "top": 10, "topic": 16, "topologi": [2, 23], "topologykei": [1, 2, 3, 23], "topologyselectorterm": [1, 2, 3], "total": [2, 13], "tovers": 2, "trace": 29, "track": [2, 10, 13, 17], "traffic": [2, 12, 20, 21, 37], "transit": [1, 2, 3], "transport": 2, "treat": [1, 2, 3], "tree": 2, "tri": [11, 14], "trick": 11, "trigger": 31, "tripl": [1, 2, 3], "troubleshoot": 32, "true": [1, 2, 3, 4, 7, 8, 11, 13, 15, 17, 19, 23, 28, 38], "trustbundl": 2, "try": [1, 2, 3, 34], "tune": [1, 11, 14, 16, 31], "tunedcontain": 1, "tunednod": 1, "turn": [1, 6, 26, 29, 38], "tutori": 17, "tweak": [12, 13], "two": [2, 3, 10, 12, 15, 17, 18, 20, 21, 23, 28, 29, 30, 38], "type": [8, 11, 14, 15, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31], "typic": 2, "u": [7, 10, 11, 13, 14, 15, 17, 18, 20, 21, 23, 26, 27, 28, 29, 30, 35], "ubuntu": 31, "ubuntu_containerd": [14, 21], "udp": 21, "ui": 3, "uid": [2, 18], "un": [23, 27], "unbound": [2, 3], "unchang": [2, 3], "undefin": 2, "under": [1, 2, 15, 17, 26, 29], "underli": [2, 3, 29], "understand": [10, 18, 35], "understood": 23, "undesir": 23, "unencrypt": 7, "unfortun": 37, "unifi": 2, "uninstal": 15, "union": [1, 2, 3], "uniqu": [2, 13, 23], "unit": [2, 10], "univers": 16, "unknown": [1, 2, 3], "unless": [2, 7, 19, 34], "unlist": 2, "unmodifi": 8, "unnecessari": [7, 10], "unreach": 23, "unrecogn": [1, 2, 3, 4], "unrel": [2, 23], "unschedul": [17, 24], "unset": 2, "unspecifi": [2, 3], "unstructur": 3, "unsupport": 1, "unsupportedopt": 1, "untar": 38, "untardir": 38, "until": [2, 3, 13, 15, 18, 28, 29, 38], "unwind": 10, "up": [2, 6, 7, 8, 10, 12, 15, 16, 18, 19, 23, 27, 29, 30, 38], "updat": [1, 2, 3, 4, 8, 13, 15, 17, 19, 21, 38], "upgrad": [14, 15, 16, 18, 25, 31], "upgrade_image_in_pod_spec": 29, "upgradestrategi": 29, "upload": [2, 10], "uploadparallel": 2, "upon": [1, 2, 3, 12, 20, 21], "upsteam": [13, 15], "upstream": 2, "uri": 2, "url": [2, 15], "us": [1, 2, 3, 4, 5, 8, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 27, 28, 29, 30, 31, 34, 37, 38], "usag": [2, 13], "user": [2, 3, 6, 7, 10, 13, 14, 16, 17, 18, 19, 26, 28, 29, 30, 34, 37, 38], "user_nam": 34, "usercert": 7, "usercertfil": 17, "userguid": 11, "userkei": 7, "userkeyfil": 17, "usernam": [7, 13, 19], "usual": [8, 11, 12, 14, 19, 31], "utc": [17, 28], "utf": 2, "util": [4, 23], "uuid": [2, 18], "v": [7, 10, 34], "v1": [0, 5, 7, 12, 15, 17, 19, 23, 28, 30, 31], "v1alpha1": [0, 5, 18, 19, 30, 38], "v1alpha5": 20, "v2": 10, "v3": 10, "v4": 7, "valid": [1, 2, 3, 7, 15, 17, 19, 29, 38], "validate_upgrad": 29, "validatingwebhookconfigur": 38, "validmastervers": 14, "valu": [1, 2, 3, 4, 12, 13, 14, 15, 18, 20, 21, 23, 29], "var": [2, 17], "var_nam": 2, "variabl": [2, 6, 7, 10, 23, 34], "variou": [12, 13], "ve": [10, 28], "vendor": 2, "verb": 18, "veri": [10, 15, 18, 34, 38], "verifi": [10, 13, 23, 27], "version": [1, 2, 3, 4, 12, 13, 14, 15, 16, 17, 19, 23, 25, 28, 30, 31, 38], "via": [12, 13, 15], "view": 34, "violat": [1, 2, 3], "virtual": [8, 21], "visibl": 27, "visit": [8, 35], "vjm4m": 15, "vmdk": 2, "volum": [3, 20, 21, 23, 34], "volumeattributesclass": [2, 3], "volumeattributesclassnam": [2, 3], "volumeclaimtempl": 19, "volumeid": 2, "volumemod": [2, 3], "volumenam": [2, 3], "volumenamespac": 2, "volumepath": 2, "volumesnapshot": [2, 3], "vsphere": 2, "vx": 31, "w": 19, "w25jw": 17, "wa": [1, 2, 3, 10, 13, 15, 17, 18, 20, 27, 28, 38], "wai": [2, 8, 13, 14, 17, 18, 19, 34], "wait": [2, 8, 10, 13, 15, 18, 23, 28, 29, 38], "walk": [13, 20, 21, 23], "want": [2, 10, 11, 12, 13, 14, 15, 17, 20, 21, 28, 38], "wasn": 17, "watch": 17, "we": [1, 2, 6, 10, 11, 12, 13, 14, 15, 17, 18, 19, 27, 28, 30, 31, 34, 37, 38], "web": [3, 14], "webhook": [13, 36, 38], "webinterfac": 19, "websit": 18, "week": 31, "weekli": [2, 17], "weight": [1, 2, 3], "weightedpodaffinityterm": [1, 2, 3], "welcom": 18, "well": [2, 3, 10, 11, 13, 14, 17, 18, 19], "were": [3, 15], "west1": [14, 21], "wfjbw": 15, "what": [2, 3, 10, 12, 13, 15, 17, 18, 19, 29, 34, 35], "when": [1, 2, 3, 8, 10, 11, 12, 13, 14, 17, 18, 19, 21, 23, 25, 26, 28, 29, 30, 31, 34, 35, 37], "whenev": 10, "where": [1, 2, 3, 6, 10, 11, 14, 18, 28, 29, 37], "whether": [2, 3, 12, 15, 30, 34], "which": [1, 2, 3, 8, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24, 27, 28, 29, 30, 38], "whichev": 13, "while": [2, 3, 6, 13, 31], "who": 2, "whole": [18, 29], "whose": [1, 2, 3, 13], "why": 10, "wide": [2, 17], "wildcard": [1, 2, 3, 19], "window": 10, "within": [2, 12, 30, 34], "without": [3, 6, 10, 12, 14, 15, 19, 34], "won": [1, 11, 12, 30, 34], "word": [10, 23], "work": [2, 5, 7, 10, 11, 14, 15, 18, 20, 21, 23, 30, 31], "workaround": 37, "workdir": 34, "workload": [20, 21, 30], "workspac": 34, "world": 2, "worldwid": 2, "worth": 10, "would": [2, 10, 13, 17, 21, 27], "wouldn": 34, "write": [2, 6, 10, 13], "writecapacityunit": 6, "writeisol": [2, 13], "written": 2, "wrong": 34, "wwid": 2, "wwn": 2, "x": [1, 2, 3, 28, 31], "xarg": 38, "xf": [2, 11, 14, 23], "xqhkj0our8e6imdepm62hg": 17, "y": 31, "yaml": [2, 7, 11, 13, 14, 15, 17, 18, 19, 20, 23, 34, 38], "yanniszark": 14, "you": [2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 34, 37, 38], "your": [2, 6, 7, 8, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 27, 28, 29, 30, 33, 34, 37, 38], "your_password": 7, "your_usernam": 7, "yourself": 10, "yq": 34, "z": [7, 11, 14, 31, 34], "zero": [1, 2, 3, 13, 29], "zone": [1, 14, 16, 23]}, "titles": ["scylla.scylladb.com", "NodeConfig (scylla.scylladb.com/v1alpha1)", "ScyllaCluster (scylla.scylladb.com/v1)", "ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)", "ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)", "API Reference", "Using Alternator (DynamoDB)", "Using CQL", "Discovering ScyllaDB Nodes", "Using ScyllaDB APIs", "Contributing to Scylla Operator", "Deploying Scylla on EKS", "Exposing ScyllaCluster", "Deploying Scylla on a Kubernetes Cluster", "Deploying Scylla on GKE", "Deploying Scylla stack using Helm Charts", "Scylla Operator Documentation", "Deploying Scylla Manager on a Kubernetes Cluster", "Version migrations", "Monitoring", "Build multiple Amazon EKS clusters with inter-Kubernetes networking", "Build multiple GKE clusters with inter-Kubernetes networking", "Deploying multi-datacenter ScyllaDB clusters in Kubernetes", "Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters", "Automatic cleanup and replacement in case when k8s node is lost", "Node operations using Scylla Operator", "Maintenance mode", "Replacing a Scylla node", "Restore from backup", "Upgrading version of Scylla", "Performance tuning", "Releases", "Support", "Known issues", "Gathering data with must-gather", "Support overview", "Troubleshooting", "Troubleshooting installation issues", "Upgrade of Scylla Operator"], "titleterms": {"0": [18, 38], "1": 38, "2": 38, "3": [18, 38], "In": 12, "about": 35, "access": [11, 13, 14, 19], "add": 10, "admin": 14, "affin": 1, "agent": 13, "agentresourc": 2, "agentvolumemount": 2, "aka": 7, "altern": [2, 6, 13], "amazon": 20, "an": [11, 19], "annot": [2, 3], "api": [5, 9], "architectur": 17, "auth": 13, "authent": [3, 7], "author": 7, "autom": 31, "automat": 24, "avail": 31, "aw": 6, "awselasticblockstor": 2, "azuredisk": 2, "azurefil": 2, "backport": 31, "backup": [2, 28], "behind": 8, "benchmark": 13, "boot": 33, "boundari": 8, "branch": 10, "broadcast": 12, "broadcastopt": 2, "build": [10, 20, 21], "case": 24, "cassandra": 13, "cd": 31, "cephf": 2, "cert": [13, 15], "chart": 15, "ci": 31, "cinder": 2, "claim": [2, 3], "clean": [13, 17], "cleanup": [15, 24], "cli": 6, "client": [2, 12], "clone": 10, "cluster": [8, 11, 12, 13, 14, 17, 20, 21, 22, 23, 34, 35, 37], "clusterip": 12, "clustertrustbundl": 2, "cni": 37, "collect": 34, "com": [0, 1, 2, 3, 4], "commit": 10, "compon": 3, "condit": [1, 2, 3], "configmap": 2, "configur": [11, 13, 14, 20, 21], "connect": 19, "contain": 13, "context": 23, "contribut": 10, "control": 15, "cql": [2, 7], "cqlsh": 7, "creat": [10, 11, 13, 14, 20, 21], "credenti": 6, "csi": 2, "custom": [15, 37], "data": [34, 35], "databas": [11, 13, 14], "datacent": [2, 22, 23], "datasourc": [2, 3], "datasourceref": [2, 3], "dead": 27, "delet": [11, 14], "depend": 11, "deploi": [11, 13, 14, 15, 17, 19, 20, 21, 22, 23], "deploy": 12, "descript": [1, 2, 3, 4], "develop": 10, "devic": 1, "discov": 8, "discoveri": 8, "docker": 34, "document": 16, "doe": 33, "domain": 19, "download": 13, "downwardapi": 2, "dr": [11, 14, 15], "dynamodb": 6, "ek": [11, 20, 37], "embed": 7, "emptydir": 2, "endpoint": 8, "endpointsselector": 3, "engin": 14, "environ": [11, 14], "ephemer": 2, "everi": 34, "exampl": 12, "expos": [8, 12], "exposeopt": [2, 3], "extern": 23, "externalip": 19, "fc": 2, "fieldref": 2, "filesystem": 1, "firewal": 21, "first": [20, 21, 23], "flexvolum": 2, "flocker": 2, "fork": 10, "from": 28, "gather": [34, 35], "gcepersistentdisk": 2, "gener": 31, "genericupgrad": 2, "get": 35, "gitrepo": 2, "gke": [14, 21, 37], "glusterf": 2, "googl": 14, "grafana": [3, 19], "group": [5, 20], "haproxi": 19, "headless": 12, "helm": [15, 38], "histori": 10, "host": 13, "hostpath": 2, "i": 24, "imag": 15, "imagepullsecret": 2, "ingress": [2, 3, 19], "initi": [10, 13], "instal": [11, 15, 37], "inter": [20, 21], "interconnect": 23, "internet": 12, "iscsi": 2, "issu": [33, 35, 37], "item": 2, "k8": 24, "kernel": 13, "kind": 5, "known": 33, "kubectl": 38, "kubernet": [8, 13, 14, 17, 20, 21, 22, 23, 30, 31], "label": [2, 3], "labelselector": [1, 2, 3], "limit": [2, 3, 34], "loadbalanc": 12, "local": [11, 13, 14], "localdisksetup": 1, "localhost": 7, "loopdevic": 1, "lost": 24, "mainten": 26, "manag": [13, 15, 17, 19, 23, 33], "matchexpress": [1, 2, 3], "matchfield": [1, 2, 3], "matchlabel": [1, 2, 3], "matrix": 31, "messag": 10, "metadata": [1, 2, 3, 4], "migrat": 18, "minikub": 33, "mode": 26, "monitor": [13, 15, 19], "mount": 1, "multi": [12, 22, 23], "multipl": [20, 21, 23], "must": 34, "namespac": 34, "namespaceselector": [1, 2, 3], "network": [2, 13, 20, 21, 23], "nf": 2, "node": [2, 8, 11, 12, 14, 20, 21, 23, 24, 25, 27, 30], "nodeaffin": [1, 2, 3], "nodeconfig": 1, "nodeport": 19, "nodepublishsecretref": 2, "nodeselector": 1, "nodeselectorterm": [1, 2, 3], "nodeservic": 2, "nodestatus": 1, "onli": 12, "oper": [10, 11, 13, 14, 15, 16, 19, 20, 21, 25, 38], "operatormanagedopt": 2, "option": [2, 12], "out": 19, "overview": 35, "paramet": 13, "parti": 11, "particular": 34, "peer": 20, "perform": 30, "persistentvolumeclaim": 2, "photonpersistentdisk": 2, "placement": [1, 2, 3], "platform": 31, "podaffin": [1, 2, 3], "podaffinityterm": [1, 2, 3], "podantiaffin": [1, 2, 3], "podip": [2, 12, 23], "podman": 34, "podmetadata": 2, "polici": 31, "portworxvolum": 2, "prefac": 8, "prefer": [1, 2, 3], "preferredduringschedulingignoredduringexecut": [1, 2, 3], "prepar": [20, 21], "prerequisit": [10, 11, 13, 14, 15, 17, 19, 20, 21, 23, 34], "privat": 37, "procedur": 18, "project": [2, 10], "prometheu": [3, 19], "promot": 31, "provision": [11, 14], "pull": 10, "queri": 33, "quobyt": 2, "rack": 2, "raid": 1, "raid0": 1, "rbd": 2, "readinessg": 2, "refer": 5, "registr": 17, "releas": 31, "remot": [7, 10], "repair": 2, "replac": [24, 27], "repositori": 15, "request": [2, 3, 10], "requir": 19, "requiredduringschedulingignoredduringexecut": [1, 2, 3], "resolv": 19, "resourc": [2, 3, 15, 34], "resourcefieldref": 2, "restor": 28, "result": 15, "retriev": 23, "roll": 19, "rout": 20, "rule": 21, "run": [13, 20, 21, 34], "scale": 13, "scaleio": 2, "schedul": [17, 31], "schema": 28, "script": 11, "scylla": [0, 1, 2, 3, 4, 10, 11, 13, 14, 15, 16, 17, 23, 25, 27, 29, 33, 38], "scyllaclust": [2, 12, 13], "scylladb": [0, 1, 2, 3, 4, 8, 9, 11, 14, 20, 21, 22, 23], "scylladbmonitor": [3, 19, 23], "scyllaoperatorconfig": 4, "second": [20, 21, 23], "secret": 2, "secretref": 2, "secur": 20, "seed": 23, "selector": [2, 3], "servic": 12, "serviceaccounttoken": 2, "serviceclusterip": 12, "serviceloadbalanceringress": 12, "servingcertif": 2, "set": [11, 13, 14], "setup": [10, 11, 14], "sourc": 2, "spec": [1, 2, 3, 4], "specif": [1, 2, 3, 4], "stack": 15, "statu": [1, 2, 3, 4], "storag": [2, 3], "storageo": 2, "stress": 13, "submit": 10, "subnet": 21, "support": [31, 32, 35], "tabl": [20, 28], "task": 17, "templat": 12, "third": 11, "through": 19, "tl": [11, 14, 15], "token": 13, "toler": [1, 2, 3], "troubleshoot": [13, 17, 35, 36, 37], "truncat": 33, "tune": 30, "type": [1, 2, 3, 4, 12], "unresolv": 19, "up": [11, 13, 14, 17, 33], "updat": [10, 20], "upgrad": [2, 29, 38], "upstream": 10, "us": [6, 7, 9, 15, 19, 23, 25], "usermanagedopt": 2, "v0": [18, 38], "v1": [2, 18, 38], "v1alpha1": [1, 3, 4], "variabl": [11, 14], "variant": 19, "version": [18, 29], "via": 38, "volum": [2, 11, 14], "volumeattribut": 2, "volumeclaimtempl": [2, 3], "volumemount": 2, "vpc": [12, 20, 21], "vspherevolum": 2, "wait": 19, "walkthrough": [11, 14], "webhook": [15, 37], "webinterfac": 3, "when": 24, "work": 33, "your": [10, 35], "yourself": 14}}) \ No newline at end of file diff --git a/v1.13/sitemap.xml b/v1.13/sitemap.xml new file mode 100644 index 00000000000..72bd1055740 --- /dev/null +++ b/v1.13/sitemap.xml @@ -0,0 +1,2 @@ + +https://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/nodeconfigs.htmlhttps://operator.docs.scylladb.com/stable/exposing.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scyllaclusters.htmlhttps://operator.docs.scylladb.com/stable/generic.htmlhttps://operator.docs.scylladb.com/stable/multidc/multidc.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/automatic-cleanup.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.htmlhttps://operator.docs.scylladb.com/stable/gke.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.htmlhttps://operator.docs.scylladb.com/stable/helm.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/index.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/maintenance-mode.htmlhttps://operator.docs.scylladb.com/stable/index.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/replace-node.htmlhttps://operator.docs.scylladb.com/stable/api-reference/index.htmlhttps://operator.docs.scylladb.com/stable/clients/alternator.htmlhttps://operator.docs.scylladb.com/stable/manager.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/restore.htmlhttps://operator.docs.scylladb.com/stable/clients/cql.htmlhttps://operator.docs.scylladb.com/stable/migration.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/scylla-upgrade.htmlhttps://operator.docs.scylladb.com/stable/clients/discovery.htmlhttps://operator.docs.scylladb.com/stable/performance.htmlhttps://operator.docs.scylladb.com/stable/monitoring.htmlhttps://operator.docs.scylladb.com/stable/releases.htmlhttps://operator.docs.scylladb.com/stable/clients/index.htmlhttps://operator.docs.scylladb.com/stable/multidc/eks.htmlhttps://operator.docs.scylladb.com/stable/support/index.htmlhttps://operator.docs.scylladb.com/stable/multidc/gke.htmlhttps://operator.docs.scylladb.com/stable/contributing.htmlhttps://operator.docs.scylladb.com/stable/support/known-issues.htmlhttps://operator.docs.scylladb.com/stable/eks.htmlhttps://operator.docs.scylladb.com/stable/multidc/index.htmlhttps://operator.docs.scylladb.com/stable/support/must-gather.htmlhttps://operator.docs.scylladb.com/stable/support/overview.htmlhttps://operator.docs.scylladb.com/stable/support/troubleshooting/index.htmlhttps://operator.docs.scylladb.com/stable/support/troubleshooting/installation.htmlhttps://operator.docs.scylladb.com/stable/upgrade.htmlhttps://operator.docs.scylladb.com/stable/genindex.htmlhttps://operator.docs.scylladb.com/stable/404.htmlhttps://operator.docs.scylladb.com/stable/search.html \ No newline at end of file diff --git a/v1.13/support/index.html b/v1.13/support/index.html new file mode 100644 index 00000000000..bd33629bc9a --- /dev/null +++ b/v1.13/support/index.html @@ -0,0 +1,606 @@ + + + + + + + + + + + + + Support | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Support

              + +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/support/known-issues.html b/v1.13/support/known-issues.html new file mode 100644 index 00000000000..6d6268e8f5e --- /dev/null +++ b/v1.13/support/known-issues.html @@ -0,0 +1,629 @@ + + + + + + + + + + + + + Known issues | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Known issues

              +
              +

              Scylla Manager does not boot up on Minikube

              +

              If your Scylla Manager is failing to apply 8th migration (008_*), then apply fix for TRUNCATE queries.

              +
              +
              +

              TRUNCATE queries does not work on Minikube

              +

              The TRUNCATE queries requires hairpinning to be enabled. On minikube this is disabled by default.

              +

              To fix it execute the following command:

              +
              minikube ssh sudo ip link set docker0 promisc on
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/support/must-gather.html b/v1.13/support/must-gather.html new file mode 100644 index 00000000000..c87eaf27b43 --- /dev/null +++ b/v1.13/support/must-gather.html @@ -0,0 +1,716 @@ + + + + + + + + + + + + + Gathering data with must-gather | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Gathering data with must-gather

              +

              must-gather is an embedded tool in Scylla Operator that helps collecting all the necessary info when something goes wrong.

              +

              The tool talks to the Kubernetes API, retrieves a predefined set of resources and saves them into a folder in your current directory. +By default, all collected Secrets are censored to avoid sending sensitive data. +That said, you can always review the archive before you attach it to an issue or your support request.

              +

              Given it needs to talk to the Kubernetes API, at the very least, you need to supply the --kubeconfig flag with a path to the kubeconfig file for your Kubernetes cluster, or set the KUBECONFIG environment variable.

              +
              +

              Running must-gather

              +

              There is more than one way to run must-gather. +Here are some examples of how you can run the tool.

              +
              +

              Prerequisites

              +

              All examples assume you have exported KUBECONFIG environment variable that points to a kubeconfig file on your machine. +If not, you can run this command to export the common default location. +Please make sure such a file exists.

              +
              export KUBECONFIG=~/.kube/config
              +ls -l "${KUBECONFIG}"
              +
              +
              +
              +

              Note

              +

              There can be slight deviations in the arguments for your container tool, depending on the container runtime, whether you use SELinux or similar factors.

              +

              As an example, the need for the Z option on volume mounts depends on whether you use SELinux and what context is applied on your file or directory. +If you get an error mentioning Error: lsetxattr <path>: operation not supported, try it without the Z option.

              +
              +

              Let’s also check whether your kubeconfig uses external authentication plugin. +You can determine that by running

              +
              kubectl config view --minify
              +
              +
              +

              and checking whether it uses an external exec plugin by looking for this pattern (containing the exec key)

              +
              users:
              +- name: <user_name>
              +  user:
              +    exec:
              +
              +
              +

              If not, you can skip the rest of this section.

              +

              In case your kubeconfig depends on external binaries, you have to take a few extra steps because the external binary won’t be available within our container to authenticate the requests.

              +

              Similarly to how Pods are run within Kubernetes, we’ll create a dedicated ServiceAccount for must-gather and use it to run the tool. +(When you are done using it, feel free to remove the Kubernetes resources created for that purpose.)

              +
              kubectl create namespace must-gather
              +kubectl -n must-gather create serviceaccount must-gather
              +kubectl create clusterrolebinding must-gather --clusterrole=cluster-admin --serviceaccount=must-gather:must-gather
              +export MUST_GATHER_TOKEN
              +MUST_GATHER_TOKEN=$( kubectl -n must-gather create token must-gather --duration=1h )
              +kubeconfig=$( mktemp )
              +# Create a copy of the existing kubeconfig and
              +# replace user authentication using yq, or by adjusting the fields manually.
              +kubectl config view --minify --raw -o yaml | yq -e '.users[0].user = {"token": env(MUST_GATHER_TOKEN)}' > "${kubeconfig}"
              +KUBECONFIG="${kubeconfig}"
              +
              +
              +
              +

              Note

              +

              If you don’t have yq installed, you can get it at https://github.com/mikefarah/yq/#install or you can replace the user authentication settings manually.

              +
              +
              +
              +

              Podman

              +
              podman run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro,Z" -v="$( pwd ):/workspace:Z" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig
              +
              +
              +
              +
              +

              Docker

              +
              docker run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro" -v="$( pwd ):/workspace" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig
              +
              +
              +
              +
              +
              +

              Limiting must-gather to a particular namespace

              +

              If you are running a large Kubernetes cluster with many ScyllaClusters, it may be useful to limit the collection of ScyllaClusters to a particular namespace. +Unless you hit scale issues, we advise not to use this mode, as sometimes the ScyllaClusters affect other collected resources, like the manager or they form a multi-datacenter.

              +
              scylla-operator must-gather --namespace="<namespace_with_broken_scyllacluster>"
              +
              +
              +
              +

              Note

              +

              The --namespace flag affects only ScyllaClusters. +Other resources related to the operator installation or cluster state will still be collected from other namespaces.

              +
              +
              +

              Collecting every resource in the cluster

              +

              By default, must-gather collects only a predefined subset of resources. +You can also request collecting every resource in the Kubernetes API, if the default set wouldn’t be enough to debug an issue.

              +
              scylla-operator must-gather --all-resources
              +
              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/support/overview.html b/v1.13/support/overview.html new file mode 100644 index 00000000000..bc2ac5d29a3 --- /dev/null +++ b/v1.13/support/overview.html @@ -0,0 +1,631 @@ + + + + + + + + + + + + + Support overview | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Support overview

              +
              +

              Get support

              +

              ScyllaDB provides administrators with paid support, including Scylla Operator.

              +
              +
              +

              Troubleshooting issues

              +

              To learn more about what to do when issues arise, visit our dedicated troubleshooting section.

              +
              +
              +

              Gather data about your cluster

              +

              Scylla Operator contains an embedded tool called must-gather that can collect the required information for requesting support or reporting issues. +Support requests and bug reports are required to attach the must-gather archive to help us understand the issue.

              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/support/troubleshooting/index.html b/v1.13/support/troubleshooting/index.html new file mode 100644 index 00000000000..7b09f6a50bc --- /dev/null +++ b/v1.13/support/troubleshooting/index.html @@ -0,0 +1,612 @@ + + + + + + + + + + + + + Troubleshooting | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Troubleshooting

              + +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/support/troubleshooting/installation.html b/v1.13/support/troubleshooting/installation.html new file mode 100644 index 00000000000..82e8dc9ee80 --- /dev/null +++ b/v1.13/support/troubleshooting/installation.html @@ -0,0 +1,667 @@ + + + + + + + + + + + + + Troubleshooting installation issues | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Troubleshooting installation issues

              +
              +

              Webhooks

              +

              Scylla Operator provides several custom API resources that use webhooks to function properly.

              +

              Unfortunately, it is often the case that user’s clusters have modified SDN, that doesn’t extend to the control plane, and Kubernetes apiserver is not able to reach the pods that serve the webhook traffic. +Another common case are firewall rules that block the webhook traffic.

              +
              +

              Note

              +

              To be called a Kubernetes cluster, clusters are required to pass Kubernetes conformance test suite. +This suite includes tests that require Kubernetes apiserver to be able to reach webhook services.

              +
              +
              +

              Note

              +

              Before filing an issue, please make sure your cluster webhook traffic can reach your webhook services, independently of Scylla Operator resources.

              +
              +
              +

              EKS

              +
              +

              Custom CNI

              +

              EKS is currently breaking Kubernetes webhooks when used with custom CNI networking.

              +
              +

              Note

              +

              We advise you to avoid using such setups and use a conformant Kubernetes cluster that supports webhooks.

              +
              +

              There are some workarounds where you can reconfigure the webhook to use Ingress or hostNetwork instead, but it’s beyond a standard configuration that we support and not specific to the Scylla Operator.

              +
              +
              +
              +

              GKE

              +
              +

              Private clusters

              +

              If you use GKE private clusters you need to manually configure the firewall to allow webhook traffic. +You can find more information on how to do that in GKE private clusters docs.

              +
              +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.13/upgrade.html b/v1.13/upgrade.html new file mode 100644 index 00000000000..35aa0c36c3f --- /dev/null +++ b/v1.13/upgrade.html @@ -0,0 +1,820 @@ + + + + + + + + + + + + + Upgrade of Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + +
              + +
              + +
              +
              +
              +
              +
              + + +
              +

              Caution

              +

              + + You're viewing documentation for a previous version of Scylla Operator. + + Switch to the latest stable version. +

              +
              + + + +
              + +
              + +
              +

              Upgrade of Scylla Operator

              +

              This page describes Scylla Operator upgrade procedures.
              +There are two generic update procedures - via Helm and via kubectl. Before upgrading, please check this page to find out +if your target version requires additional upgrade steps.

              +
              +

              Upgrade via Helm

              +

              Helm doesn’t support managing CustomResourceDefinition resources (#5871, #7735)
              +These are only created on first install and never updated. In order to update them, users have to do it manually.

              +

              Replace <release_name> with the name of your Helm release for Scylla Operator and replace <version> with the version number you want to install:

              +
                +
              1. Make sure Helm chart repository is up-to-date:

                +
                helm repo add scylla-operator https://storage.googleapis.com/scylla-operator-charts/stable
                +helm repo update
                +
                +
                +
              2. +
              3. Update CRD resources. We recommend using --server-side flag for kubectl apply, if your version supports it.

                +
                tmpdir=$( mktemp -d ) \
                +  && helm pull scylla-operator/scylla-operator --version <version> --untar --untardir "${tmpdir}" \
                +  && find "${tmpdir}"/scylla-operator/crds/ -name '*.yaml' -printf '-f=%p ' \
                +  | xargs kubectl apply
                +
                +
                +
              4. +
              5. Update Scylla Operator

                +
                helm upgrade --version <version> <release_name> scylla-operator/scylla-operator
                +
                +
                +
              6. +
              +
              +
              +

              Upgrade via kubectl

              +

              Replace <version> with the version number you want to install:

              +
                +
              1. Checkout source code of version you want to use:

                +
                git checkout <version>
                +
                +
                +
              2. +
              3. Manifests use rolling minor version tag, you may want to pin it to specific version:

                +
                find deploy/operator -name "*.yaml" | xargs sed --follow-symlinks -i -E "s^docker.io/scylladb/scylla-operator:[0-9]+\.[0-9]+^docker.io/scylladb/scylla-operator:<version>^g"
                +
                +
                +
              4. +
              5. Update Scylla Operator. We recommend using --server-side flag for kubectl apply, if your version supports it.

                +
                kubectl apply -f deploy/operator
                +
                +
                +
              6. +
              +
              +
              +
              +

              v1.2.0 -> v1.3.0

              +

              Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure.

              +
                +
              1. Checkout source code of v1.3.0:

                +
                git checkout v1.3.0
                +
                +
                +
              2. +
              3. Update Scylla Operator from deploy directory:

                +
                kubectl -n scylla-operator apply -f deploy/operator
                +
                +
                +
              4. +
              5. Wait until Scylla Operator is up and running:

                +
                kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
                +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
                +
                +
                +
              6. +
              +
              +
              +

              v1.1.0 -> v1.2.0

              +

              1.2.0 release brought a lot of changes to the Scylla Operator deployment process. +To properly update Scylla Operator one must delete old objects and install updated ones.

              +

              Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure.

              +
                +
              1. Checkout source code of v1.2.0:

                +
                git checkout v1.2.0
                +
                +
                +
              2. +
              3. Remove old scylla operator namespace - in our case it’s called scylla-operator-system:

                +
                kubectl delete namespace scylla-operator-system --wait=true
                +
                +
                +
              4. +
              5. Remove old webhooks:

                +
                kubectl delete MutatingWebhookConfiguration scylla-operator-mutating-webhook-configuration
                +kubectl delete ValidatingWebhookConfiguration scylla-operator-validating-webhook-configuration
                +
                +
                +
              6. +
              7. Install Scylla Operator from deploy directory:

                +
                kubectl -n scylla-operator apply -f deploy/operator
                +
                +
                +
              8. +
              9. Wait until Scylla Operator is up and running:

                +
                kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
                +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
                +
                +
                +
              10. +
              +
              +
              +

              v1.0.0 -> v1.1.0

              +

              During this update we will change probes and image for Scylla Operator. +A new version brings an automation for upgrade of sidecar image, so a rolling restart of managed Scylla clusters is expected.

              +
                +
              1. Get name of StatefulSet managing Scylla Operator

                +
                kubectl --namespace scylla-operator-system get sts --selector="control-plane=controller-manager"
                +
                +NAME                                 READY   AGE
                +scylla-operator-controller-manager   1/1     95m
                +
                +
                +
              2. +
              3. Change probes and used container image by applying following patch:

                +
                spec:
                +  template:
                +    spec:
                +      containers:
                +      - name: manager
                +        image: docker.io/scylladb/scylla-operator:1.1.0
                +        livenessProbe:
                +          httpGet:
                +            path: /healthz
                +            port: 8080
                +            scheme: HTTP
                +        readinessProbe:
                +          $retainKeys:
                +          - httpGet
                +          httpGet:
                +            path: /readyz
                +            port: 8080
                +            scheme: HTTP
                +
                +
                +

                To apply above patch save it to file (operator-patch.yaml for example) and apply to Operator StatefulSet:

                +
                kubectl -n scylla-operator-system patch sts scylla-operator-controller-manager --patch "$(cat operator-patch.yaml)"
                +
                +
                +
              4. +
              +
              +
              +

              v0.3.0 -> v1.0.0

              +

              Note: There’s an experimental migration procedure available here.

              +

              v0.3.0 used a very common name as a CRD kind (Cluster). In v1.0.0 this issue was solved by using less common +kind which is easier to disambiguate. (ScyllaCluster). +This change is backward incompatible, so Scylla cluster must be turned off and recreated from scratch. +In case you need to preserve your data, refer to backup and restore guide.

              +
                +
              1. Get list of existing Scylla clusters

                +
                kubectl -n scylla get cluster.scylla.scylladb.com
                +
                +NAME             AGE
                +simple-cluster   30m
                +
                +
                +
              2. +
              3. Delete each one of them

                +
                kubectl -n scylla delete cluster.scylla.scylladb.com simple-cluster
                +
                +
                +
              4. +
              5. Make sure you’re on v0.3.0 branch

                +
                git checkout v0.3.0
                +
                +
                +
              6. +
              7. Delete existing CRD and Operator

                +
                kubectl delete -f examples/generic/operator.yaml
                +
                +
                +
              8. +
              9. Checkout v1.0.0 version

                +
                git checkout v1.0.0
                +
                +
                +
              10. +
              11. Install new CRD and Scylla Operator

                +
                kubectl apply -f deploy/operator.yaml
                +
                +
                +
              12. +
              13. Migrate your existing Scylla Cluster definition. Change apiVersion and kind from:

                +
                apiVersion: scylla.scylladb.com/v1alpha1
                +kind: Cluster
                +
                +
                +

                to:

                +
                apiVersion: scylla.scylladb.com/v1
                +kind: ScyllaCluster
                +
                +
                +
              14. +
              15. Once your cluster definition is ready, use kubectl apply to install fresh Scylla cluster.

              16. +
              +
              +
              + + +
              + + + + + + + +
              + +
              + + + + +
              + + + + + + + \ No newline at end of file diff --git a/v1.14/.buildinfo b/v1.14/.buildinfo new file mode 100644 index 00000000000..fd5bf62570f --- /dev/null +++ b/v1.14/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 3b6b6e6ed4beeea89da3d3dccbe2fdf3 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/v1.14/.doctrees/api-reference/groups/scylla.scylladb.com.doctree b/v1.14/.doctrees/api-reference/groups/scylla.scylladb.com.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d6657454855c0e3e152334452b650eaae9e3c1ef GIT binary patch literal 4004 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 Y-$|#MRW`r@WVR&epNnJT%1fsIe->mvm;e9( literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaclusters.doctree b/v1.14/.doctrees/api-reference/groups/scylla.scylladb.com/scyllaclusters.doctree new file mode 100644 index 0000000000000000000000000000000000000000..06422d9f118af84e0ffd6619ae1fff5da88e815c GIT binary patch literal 1217790 zcmeEv34mNhwRRvOAqhKz$a)DvCNMKu2_&+GBwz>$Aqiw8hS1Y}XSzE*-9s-)1`LKx zQCkri76sf;6hZO1f}*&B3(p0_=YktQxGxXa=K}ucoLc+#?R%@LZx2D@d%#RhRo%1I zsZ-ynW&3V7>@sebarnRb-j(5OuDG=~mB|!K8NV`G-#t@G*M|IJb@ckt8JCZ48||u3 zE~mCsO0{y@AFYpr8tH7VkSY7c(G8>Zy|8*USE%&z_LC}px|%B$W%KNA*@@Xn8%Ddb zlk2-xbJc>c{i%M;n)FDakXl@*RjPj3>#ESNz3e}k{@!$HXy)eGGe)ro=wQNHe=AaE z-0td8#>2$n6i{3p&F)*Dyiu~49bccwIa^tuP{lHDVFXm)(| zu=?dQt3$*1Po;m*FDy9zgqaJDPtO@xFl+AY^n$r_=g&TV?yUZKC!Ub@7t9?PNFP5t zGcPlH*8CIw6K4YHm6?p>nW^Di4}8f7#?t=G!E&iK41Ws|AS+8V8CQDC6_CT>%Xh8y zgG8qw*Bko_rSv9EFH&XM!-W}ScdH+B?6HehEj!;YS3tqX9=p&B``G5$q%2hT#7ebX zDh_J>*7s`cg6Z|Z`V`ggC|4QCYXOtj%Ix8&mFy9qitLeK2S>p_N5enU;hz~G=In9V z6QKHBVCca5K`qHr9naM}_9Ht!ygo5k%%JHk9|zx<$y#Q+L4XtBdvn+r0pYy(*khMN zO%%%--KM!TPLvgQ7ZnBb6R@4e_W3$>@ocXqw)YNxR&l#p?=Obi?72;B?$*HO;m01k zs!%JZ3M;{^l?@2vYT_0YuGbelPf>*$=VhJJc+QK&`94D7k_N?kQSZ>6^@$CvA93ul zYjVZGS|L>qWxk2`eS!@H_j~C5X#BrPCpVt|*9*-z3~;T#*X#Y+vp=bU{R4oTbZMBB zj{H}KQ)xfb#PnoYO>ny#HPguYfKFCCn|BbKdo1*{uPPPap?7A_)4~^#sbu#05{sQs5e_&7(35xYE=zZF=KDmK)G*-X7*(VQHE!SYq zqFGxxt|_X9;B+EuqVf5JPE$OeKPEmWF7)V&inSl>-Pp4>rGd45f$(anoEjwC4drdB zRz)y3i8s=?dsZhap1Xgv;O-xKH}>33t@TGY>QTXloT;XY2}sQC`-p=2)Fpl;UCs?t z+(wbsfsJKSFZm-NaMX#9mH`Ak`9oz3B4sZS$>jQE2**-`<Tw6(D->j0U(r8PQezNR7H;_xGbZrGn6~D`D_{AVKe}-&9eD6p4+O3-EZwTC(5n+s1 zrNC2Dqp+{Z5H6Pr6(G0ik1ZoESX`6}TXLCdc69kmAg;@&keWmC7s7vP{rP_QkFZ)! zL93uJUx2#HrzFtFjZJ+3+q+e>ek#+<*yQ^7a%oFbIW2x5h%ApZ{VCt8F;(AvRT-w( za&<)5xGGReeG{}W9)!9P9|WR&12m3_rt`1E4;+$z4OPv*9{$rP^+uW}tQ{F=#Ard$B88_E-+MmjD6pCITXTj3uoWuI_$U$`1z0@3W;m(xKVUvALrt65bx zV#reaOPOY~>&jmZ6&uys6|3qgu;%3JKVhJHky86FkO~*I9|CMXX}~5o(VtP(Sh{f~ z3Zc88S^TQ#eb$xULxJ9ZCQWbOkInP<4iQn7Qn@lS<8Ss0Gb_2lo>UnCrYiJaEBl0T5V1v^ z?kc@QnWKP70;4LV%`WgcU;0lFm5MU+2khE7craj+A%Zr6)Hifqz98NXe?<+#BLaN4 zcKr2;Adgx(H<~{Z+Ta9z7`8oxM5l*mdOXIlB7H(U44UkRJw(GxVv=Fr#>iFwm^mgF zCp%#i;z2wPXTK;Jonb5^l!_L>9uBN7HfQxTs@lF|-QY^^5kT(+Nz>am4b+0Gdk-9D z%44$v^KHt1!bCwXaP`tPYoU~R8|Gt~J5^P|+X>H#UJ;xgfY{`X2g;=(>cuZ+hD+c^ z>6dgN2M*e+)cS{VRdm@G*TBo7)9v*Zr;5c=)$8}Y+HeNEZ>HB2#G_t@gHCx= zl$nJ`^DtV&*dSHEb(Wz#dAHv2h1Lm&! z1o~Qie5IO!JQVyJQ$M4AAP#Mn6ynwpQD{MWHPt&0pj7;zmKFfRpb+AW6Uz<|Lf zyBaj%1LogACLnfk*pV0^JlYk%DkYr&pKPt9hyimn&^s@2dgr4w8`k3h|K`fLeuj0o zFBjuXH%*AOYjY)!m9FwQ2IR5aRvw-90jF^v0J5u9th@lV2=xQQD4`}lAWFdx0Q!TU z(DE>26EJl&x_mqu-YZ#~R}iAoxT>h{E%HT`p26H^*prqDP6_K+Yn9ewc?e2f zu@F=R>GczPd%cYoBT5AF3t7b1Dj8MZ4d(kC1nzTG-+Zx=>F)tVG-Tx=x~5q7Db)7i z%Z~%mDMqs0(W%18a`7VKQLRK-(qC;XiBg1rk}W7j*xO7-)+xC>X@bT0CQ2sA7DUNx zJp{vDd$YkFwB2I)#b696v1betvH1Wiv-3-#MqCayGU0WEB*`G*MNAwjTM!e+L)g@i z6BI#F%NVIgc3|*H9TS`n5)fa9ul^kLD#GddJjL}Lv zy+?LnDZ?coL-BR^Y9Ba$;r!U%lKh6IqAvR_DEc;*j{~jnskXMUxb~rMW8r;lZ{p8s zQ-Io{!Uu*bP^SL4tD2UBn!ZnRYYhE@aUNf5e3ywh4tI#O;y=04dN$Ddzlqao;UlN) zW)VT@4rK*UJ_#D@0hE~ZvAP>H0g`4G%n#|H|v&!DE;j>s> z?GKkKIoM+$w^TKiD=VGrD!-K=zggz;>!GUgE8@6qD`&aVdk)ZhX5#do8j!eH8pGBU zt^?d&GF&SZXvIvmz1$G|*Ta0N+}PQ6KT4x1R|%~G30-I_A)^s-EcNQ-YWE+cV+!tVEr<4)-PrJ#JOCt=}IhPxNR$XZ+4}3HPCxQ;`E-b%NkPq8QgOV+mW?R zSP1g4J^y2n*cYd}tS+sdiaCcT0|z^MXlGy^|v z1p~uEsaG`(#e=_%;%dT!MJeFHQ&a~UCj8w}xD?=K*Lj-(Z0IGZ#s-7p2l^w9$j|6$iOW<$RFJ0npemAY@wXw68cc1)D{OV1H}+ zobqrsRrE6};nectf}bkZhJ~|@uB1eBqN`}ufoP657tI{18f)N_`b#BbM6e-$R}`P) zN^u`he0Jg#uaD9OZZU?_zlDmIgN?{SZC;7==HX#+FnH3N*pmz!-{9oKK&dpYnF=H-t{7*Py7Hrc+T0)9EDMUYkqb z7%5)6x%Blh(vFx*Z-S<_bLj%xxl~FoIF()irt+E?;saADHo4NE37<;0Q`J~cvsbEI zhRv#7Y)0jGD;!u47OT;5FZAn_cU=$ke>`#ei(JGWBG+&f4q|dv;#E_XP2g~ffuOwC zTbK2Ng}64w{kFLxq;U%cKhuqoeZ}{-$H@ zv0;>DNb#jiq!4$)nrev7(8454dldLRD`exK1rKWW4CjhP*w5PQEx{8+xX8^c^e$q3 zT!h0UBg^IaA2mL3xM9}=H9WAxCT={Gvp4}Fv?=7UfQTV~zc<|`qtayBUflZbf_@Q5 zG@IGBD9TZSOoUM(7biM?W;R4LYnB z@R|THgwVD|Uj!y|ZVdH-r~{jdpcq1sakT);?Pq0hPSy&p&z7hldTjw?Hl%_W1V=SeFd!egf9-1 zD&{}s%6uA_|D-wdAET?j? zw);^!{iUmfe2~ynwi4>JK~KpPD@*9m3p*r7vyUoLZ129iqcws(WZh9TjuR5jL= z#o~@7U7FT>qFB*?ge(1nK>wkM)Bh7CcMQBzUIA`nLJz!T9Ii|46U5mR5J7E?ftQDVmJ81($}f9;xE7&)P7>vT%;GoC2BD=n#50d~6eh%5Y$w zUA*GMvCpM_tCp@_wqohZwTsS%$hkyo$+BM<@k&LAl1Dta;RbL@yeteBliAef92{B~ zpct$+fh0yRtX~Uik@+9br?Rm5t`?RB3!7_eVV!miYZ&GRJMu~u{~WqX$sT!YXdN00 z_o2|5VqsAV-e}K;KD2OnL!`LvFt`h1q#qFu4? zfve?mX>^=x(MgljLr0#2%RuOEsg8Nn=NZ+?Kfc3N`4|e}gCpR6{$o z;1aUbAf9K0jVx>+FFD=o&lOW;if;fhFIOQ}N>#jR)My%pJFr0=l!-wZmh}vmOPg~U zzbqFO+r@{-1d=4;iS4%%8Bc7#Es_vrU%zwJPZ9L_GJ7hGz2O2wAAq97A<=~bWepihg zOk?*!Wg{qs-cb+Wv%d1%bO0mar7vx`!g z1@~&~L<`#cBPDJZv~P@2Kt#}9fTp%V`zf|TI~PKYDIyrPm%)VA$8Zpc+ObKWK@%Re zpGQ^WJyYC9v^PROPEmUW=zV?S^e$~QE)V=nX$#HrutR4cHwZ~P0Z`D~&8vfFq5zPlXE$ypdoBJ9+UG}T?KtQmA7JG3XMBz1g z7EubGWuIV2ns51fq~z^<%U5C)5#d`NgQm8=<#b!$LSn#k2k<%xDr7yq8lmUOYG6)Z zis2&QU$DvN4VrNO@>!}H>tDoD!+3YjU!h+of3q3r|5M`hZws0n;k9rRDWNfNlc+#$ zMqDvsH$ep!6CNIUrB?=6_=NBR>QJEzv>k!%xTmjHq@Q|@sZjoH&nb@D*#g>` z0*wvhYGz%X_HTQ`ZW35pWJbWTmBdAX;Afi3l>mBN1+WzaaICoirc>3};WY_ww1tBj zVre9QR}?RCrFaA=UX(P&eZPX^Z~?L7kiwNa6z7I&Lte2q)Gt=vq!)tXwq$eZEG!_3 z{uW3}fZxNNJ!&~mdvN)Ez_3DrKW9d$U5?JLKoN9R!4*8TN^MT%3Ybdad+Ee_2CCpL zUx*S?kkUvMQt%WJEOg4L0l1If!JvVi`v}9Q=Xg@((9cLo0@R56EKFW zELbJO4SsM#3v672yZW9>!1wgo`kqct7wDkY(iTLzll)A;H~dww+Ad`R^GAF|C8A4RMRX~MXsfx1 zYE(6e3FR%W6u$~6zBXx!`##Mklt{&B=&YDzGVtmbUc!!k6{0nq{?S2iNr7AK_rd=H zk_?y1k9e6f+zASfQ@CmXg`p3ee0cT;Cj)59J^XN~3V>w}BSUQx37s1P^MUvPI&3i? zj0_(c^EgHVfIxXcMj4a4oEKuW0y6C`Z}5M3&oJy-^(;j-~U0rn8MxbzNf z71*i9s>mijKh>x_+MTZcVH@~|J8bIw+ls5zm9@x!aGDM ztV1U8)*8(5tw`b8!5se`BkKs5;|I{x7UrP4nb}REX6JYX_Xt#Idw?$kGx=%^=>cp5 zn>=XHgku|Dq^hxVW$ccJe?mV_SjMY?-v3LS-j{NL@(sYaFK`9Wn@XJC6`EOz9h~@*5^N!b$B?+S6LNy+0#pXb1Hw@RTl(SQjtl_}2!xQ8 z3*af?UX@?D)Kz*{g7mi9O0Uy?WgYV?jTnn{P|?`DMKJ;c^#58)ngNUIxO2KzfqO6%@aT~$7)UCPFZ&26k`uzb30s-Vtz4^0 z8Pyt=wbkhr+;f6&x`Dp}h`bcm0=9dxSBo^fv)5aV*OVd>0Cx>kf#f0BkDspLCL{(I zz+d2^hjP(lEA#$Rjjh%RGG&y@80xoU$nq20-})Rgt$g;Au9o*2u)LqyT3)ApHot!Y zZhcGT%J#``-mZn0p14PtmlmbC2ITEE_dFHbBy<#XcjzlB@{VxN2S8I>_iTOtgp^)z z2hD52R3^j_AMnfAWEX=b+%G>%hM2rxo)09nR$s))&})GHxrx(X;3DQ2DL#gYhThrR zC&u=p$}_ESmHq2L_Gj73zSEuwUfLEnQHnTRFH&p|xw8FwU^{Ql_8?V_9Wt@oVXtzf z_YFYr<%!d~NXc2`s%e7;4wbN*Kv`fCb`@v>Jt?i;;wq&&NaTirv0N2ru{q(vVnx5_ zO8<30|6z&K|2i&V4J>CRxUz(uFICL6!f=6&MJ!>L@%UJQT}+t&&0WG4jP#HXo-I#AWdihU&HX@dOE z#^V!FN5iBs9sXet2j%%AV&b`w>|yM!k;WI3PIY)ONxOR4=;`p3Mrp9J5%y9HSHfPZlEuqxq%KSbIQ;KQUzg zglXKvNhjsk!I$9aqpyK2=3fRsSMsl5B}f7*iGGb}pQh`u`6S%@2Q_XUu^Bh?=FK-{ z3wrbBZP7$oJpb|kWXA??;Sec5l`V*r+k(&Uv~dYF7hM}YC>cL3$uwY0f7j&gVCjO# z;6q9C8m&Cyp`?JqZju?TeT?NpNvmAdbSJ231%ooh~r-Eh0)-VHQvFmD&b!#cb_SIAZIiZWQO2U~I) z_}yuA#z$W0gL|>%muVk%${T{`8DM)i!e97dJUb+zt``WmYJ5EAYHc3^YkS1j+KfEU z+o@Nl2dVZG#=4ZO>E&zJt`ZI->`zJze{mJVJs^fZnv3BNjJLRH&cIFVvA0FYrpKTk z28t&`V?(&mkm7TjCC`U6V9j{j7J$&&>oWXE9vpzHlyF0uXziiOXlTkI*@2#w-j8yX z;(vh@JzFVu+WaS=PZI{ueo?G0c4hS=!0Kt{te#9&<7dM7ldl)JQv6Y%cwOQYKPhGm zoQ3FTe$W+X5Q387RW_QUG(%ssYFXeWdu(ZakG;1FHZ8&7&Y=`s{aL|FG5};tZ7$_9 zFn{6L%9bkCmF$cI{)#7#@VoT z?8L3cXHY)T&O*Cz{9|D4MO$l+?ww!5-^NUwWgBI=>tC!ctF_)Nt1!df=H5bg=D!z> zrD^A^Ci`FNA-bWIrcX_kD!PXPlr|N?b#>C>C|7##1A4v0>FsHhH-z>2GqpLP2iSqV z*)K>_wrr)iU+BvHr-1ttY`M2E*66A{N628a)>XrDgvW#|H6wF`0x1vA5w318M;J08 z8>J1;R@0Pa+OUUv#o#Q(Gl}(nVt~>&kLu^Il5l0abyLQ`UN?%oYR({vtfv|`5D=QwE19A zo3WAQH)IEvGJFVRD84>MY0IAgt?i~QUHj0}mb{O#Oj}Oe*D;R!2B>K~G&YRm#!=PS zI4&}6d6+A$-vn9@PMlT?Z#vJF@^1movOJJSG>Or)Ca0FhLT)*}Fs zA~dxHL^3MUG`q8;S?*e>Ddi3+L{x5zCtbb`*1aKy&j3z>O)fBK!f}#yR5jM^#Li~d zLO)J8$s<5-J#l)^4L3!Z!G)`_*dsawkZ6jjU{V(p!k)2$3+(wIluOJG^sM5lJ6xss zC`j>kTPYg3!L`(@Qx27_iFhQ+eo?GG=*sGMfYmRWv-&wke_Wna03w`P@vEZuN3Qff z2K4?Qae8OsdQ*P~5mQMOc!~|~6oviM?0!;(l}q!rZl@&hXIBY)7bNhstpqx4oR_jm z7BX&~onV_k5IVUYxL?@hDoQca(A<$Wu^xiW6FLZf5cCxlv_?#77aquB)QCRA*% zt};)mJLRD^xXSDMAg>E-Y z#TbFRY2_K(2X}i!Bp2cwIOh99umUBYX3Y1506-Oj`38`w2PHD4)Y?^_7QlSNpy>R? zpjizDZV8lXvFm6(;jC>OSp0whi*JXqlOF_%C0LB)vyy1Ub)f-R+`@(ghTKjU%6Hsl z<2wiee7|f#2;h&S8MOdI?w1`KAcI88eX<3S^0Ocq*?~n150pF5v(m}eBwGf8&|&5$ zU?dBf1YzbA1EaV#%p6eg&*WfshME7L4MU{apUM`b*{6bA3Ds;`xr}@c?PiV6zcsB)N~BVEgGuiq3Kaf#Bs~vNSOIFS6Y7$w4R(e ztrnhjoh#*k0Ls_eQm*Fw2$=Nh4Cj4#@Ee-@fF5loKp{uh}ePhlq>yz z2Kt{!oc{h$ZG?`MWve`>%+%#FT*l&4%1-{}D(Am|od0esXNy4-U6tb&Y+7nvH4L}- zH$ zl|*9!^G!gHW&;$_nQL?9aLxkKjaM7A4n0%0pmpd!q8YRZ$=Az{4c4bbN}p^&q&yQ` z5+{W#^XW0E?v(U%k^uvjby(wB81RDo23TW4E;D;pV6?Z!H3GVPMh<#sT;mEGj!22G zmMu_;D|Xo>sKr=djdv% zBd8%}O}$9@;v){QmI(B6MVjsbmK|1P4a|rZ>}^GZY=d^%L=Pb&&|MVig>~pfedkMjgA|`rI-@8=v4Pg zpetMjx)%!cEL(vZjhh1vdgZGxHf~z?8n*g+d&sbiTz!ezGJN%Qip%N?FJ^&HD`l)w*OHJG&=^tW|bUj#deg^O*7fHw@D~Vo1?9CQQ(oTdQZz@+q`4*d@ zOkwEFvIT{q`$HHS41%-!h={FjF&p14J2r?;iIh8K3nJw}AVq~eb+pep0sCwn;Ro0{ zP?>3vyDp8r$jIo+k~~v}z93r=LkHW3_>amS48EyP&WGSw7vCSF5dTRaw%rilwGTbS z=Y5Q2h(Gl}#~^AN>S=dqt=oE7JjsKo-Kc785EW_2(_D!?3W+@;abhi;$^uu?Uy7v9 zwF4Qs@_MbLXDps?Fk#6s_Exx~re#oS9^xvUerkESd zR^e}u)GSjOd+DujefCvDuc~a23xpk>PGysCc2)6oRPh^aRcthTUqQV(jlW$pX)*fn zN5$udUHR-nK0j#A=LZ<^afpv~-t!?>24)}wUrL;TkxZK1l3&PGs(8F3ld7iDusZtiI$cbO*L>l!Bsah=zg)7I9<5;G z5zdUjQ;J)0X!`6K7Z!HQQMS#Jf+x1$+&}}oN!Sh*%C>&&s+wa_H9xdfO{d4u?s#`y z8D0PpBS{q~o}YE)`8eeHpXNOOA60FCE<51Gj`3hO61*R@HjD=i3BFWFS>G#=3QT9R z4h^BXnK{|nvxd4o&<$RV2QRt6dxei*%s}kG9~odaxX4 zb0XYBS@l!uKG^4!24zd#uBz!l)y%L}O~=O%V1<=o@P%^x$O6Ul*{(eIBG1drc|L=x z#*QEB`6%tmz)WP|qQn`vRtULqRuZK%t9Su(C46cUmAa1xevU@#F*AP4gPLHY;;d1BUEZns|W$=`+ zJdhwRfrm=?060YgmAUk>!L&TmxKlYhq;ixu`ikpdo{NL|%eI5L(;j#N4q)MZ*)NLM zU%K)-4|#pcoYyC)YOLptMZo^;O7QVW@V^=ezG2ch@RRVr=8ZL4PTr96X(;9Z6h=j` z5@)Lj8G)EoRVq60AjfsmeB^k4Xl=MoVvKg$9H)SXUhRW-R$JutBE|Q7SH4d`zUP|r zJ&UTwn&zbV8{}8Gl6)ePd{*KluT`?v?ncd)w&49WfbittG!Gc30Bd3HMeKGu zxpKV_xxU<->&vKWtkqjDLvL|q;AP0b&51McdnxzEKzPU>O!bf8(*#{Ba;MMm;0h@HBesBd3P4qOu!^!4Fbu*2WvX^cY&2{b3S+RWg}XcsW~B6bYkUYVOWrKHj;dH< zBzj#Le;`#WRK3}=X3dbJ^M%H?8bKd%HNcb50PnFiz|Q*(ct4}4ub?M`W9B7_>qlI< zJ{h_Gra9LSQ`K0%VK7_%%9Z3(kmR2yPBPr}#N~>f0@rc;!4-($_y!|b#^%znd}I%z z;2}y_18VPiwbO;t<+ztPMtrBDV4krROs6e)pGq+`4ChX(t6*_mDEKms(fkJ`1J6|k zr=biEgVu&o@4-|x)}F2B!4q5=ScDABOPYbcb6}|xR7B&9DE^9g4(TaZ84}ZATazDj zR@wq!EFdmCxrktohU&1X7QRvO3qHUv4EkZYOUR%s8wdfL=&3y)&>I}6G(#dcnCJum zs!L`#7tZNEe)MOV|`#OICHft!Ap?fD-tL88Y$-hFvIpJp%M^e_M4;p)n_c8J9q8^^jQdtgXb!i zwyZxcQ-ieuBr`VfJrq!QoJkT`sCmaBNLksfu1Z^qN_(rV(mFl1c1Kj>l2TC)Emfd+ zzTcJSGmz)|%z6F-8Jr9u`}%|1RQ4 z;ALQ~`AdKlc_a|&VkOPT@ALy|{4F$1to%4d^B>go`Wl;|MJMsDlr8As+NzL4fjU(d z2Y7ChJsTWoBU(mf3!-IB(;>RqN*eHVb0I@nKicP=W4p63UcCr5|eoW%Wr+eF`%S1Y5+JNar~?ePo$ks%NC@abxqody~X5V*@LAV z`%sSJ`(t#(@kc;xyGI;d`_PX#@;=7$h~tDq9E0?YsHa_^wPBF{ER%8EnU=^Sj)%As zdl3?QP~yZ|c*r@fq^FSdnYN^>$ui=I<3C9yjgd<5mJfc!ky~bBM;xOzc&&F8RX>WV z&sfe*v@@GO~kKr6>0{B`WjoI8V#7$)T`5> z!d2{99u#clBo%I(MWb4fLmjN&5c<~6T`01qhwMZtytT6%wboBGMhe;P-MSCPh&S3o(68~$hdKiT$n^ITXW&>eHIY0e_rglJuhC3eFlW<5G5$wa#s`t{ zKiD#E;U}W2a)g0RtgWktAq+nVnYSYm1`$q&BMfJ@hcNVVmt=%AoT^5x(bG4|OlVH3 z=y*d86{uJX!5a)7GY>4c)~V%|(usJ@ToE&xFM$p;$f0?mZvUFO)_u%1L@QQF(BZ^G z0b=lh7zsKcWvnC`bU29JL!`bc6e-4I>k4Z0od%ybc007RJXy9NpIb-{gg96BY_Q}c zT2{&yL`$h@nLBGW%-3rGbr9RDVBbX!c2B`3D$K#+_K=jfhDB9aRYpkm4V6qcN~#R_ z&|Ud34hX?h69i%Y40%9BB{e3TA&9LuJdti{vIXg;(xjVM2;w!e2TM6tQI6vKV+29m z1jM!rLAdszLlC@=v4kK#>#C~$}baa$0?W3I%$3W9yNDIrG0@a@#dfZW{aly5Ot^3-6FmsbqCsr|cNrS$ z0Wn+!7I4&NKZ7>hiR?{PV;69-v(uT-PisX6VK{BY`D$cxN#X>b+-P!*D>or=Z7wxv!@bW|sv7Hkf;bURCkKnwaQiUy>*S5DK&C&KI0LiE z!RV%l$H?IH3cP*<%P;u3l?QTYsl@P*s~E0CF?`8Z44w8mlZO1Eez+Mztmx(MisN6n za(oqX{G>U@KclL#mTPbb>seQluSSypnK;QOa48FnKpny2$N*lMl`5toi$dThBxVpY zlURXsd!@w#4tE^BuR)RQ2d$&xK=fJM|1d3f+HNE7e>mQi*ViJibIf_2NmXMlHa0zY zwkyHcAi>KLCwO(M^q>x8xg`cW(Y3Pjw5uRrhl0GwR*;>x@(Wo^I9z~h-th9BBw|6? zS?Id+Y7}5o1Sm=&0-P+{YmwjUBgJkP`Mowq2@#RsC^WT={LW4w@>3!S#CxwttGY6V zp+LMxZMGY<;r@0TRgL#SEKexrd9nCZL+9hrk5hd224wOhi4%N=l&S}idb*tJhuIO< z^>BSh8c!>+qnEhSWM>`4ObV~T@@twiaJQA5LX+xF3G884fz?r9U$qt382K8BoFw6E zWM`qi=JzPTCSM~;(bvfKny>j&q}c6z&Hu(IA;Q-@15KX`U!z14@HKBltNLvWLjhky zZGL6YhWnbIQ`Po;&EZEl`kFT(lZQZS!(h~q;4Udu+J?Yg30#{}g@>Bp3KhCM2=4Kd z-o(6t@)yUuGJP#FJ;#>mPWy{}E0olvMfT!SaUeG+=9ZAZC@GxhDup+r6jqx{;T)#K1MM1j=)fK@7SAwrYf^&%ze4?^WkU89WHB3*VBjAySYa>fTxl80WKK6_(WS|j? z6)d`UpoDUzt5Dv8LfLLBluq079?X^-&A72p@qW82@7E*m?=-H<;N3f-LNyDQTW}vk zksAbZ709Q_=q-t^ly6z+DyW-LP$$?5s?)w@fcX}d$Vx5+srT0+`}j%}WRsr}rQm1w z&^ytbO)63YcFyL)7=1)In@!Nvc1f7Tjt3@{RyoJFqLp0`!&SiNP@8oIZMe@_OI2fi zPB6KM$_BLti`CGoL%&Ww=xxaK>k?<6=X@ z$EuQgG%320@)3I+>B!vMk-5px+AvIG+OhBv(N+237Pe)xb=9!LEu$ejLL(2ih>hCe zhg;51=5R}3SEtcgmz8R%;dIuehkzXkUg}3*-ihi}jE5Y3IU#W2K*&`afo=X3was5? ztgC(iUA3W3iSTnc`5B-m?Ep;c!y@%0PU^)Sh$+YeF{{Do^G5)2@<0qy%1WXS#7u8> zASR%E0ks*|SL68toAFG?AlAtibPVG5BOe30fXHawBmu9YoFYaeLRn#dM& z@rz%T9N#H>u$1FnC`a-AF*-=|UqEcT2WedU&=1n^KF0DO&G%gO^byq4VJMoZ>;G6xqY5sI zufW4Dv>ghrbAe|H2XM0#I|S7Ym^pljUE_kmdaw8sYmC>;17wa5K+t1_{rFBc>_L_r zAbO{)#oyuo;az)rkq~Zs@e3KcRle+BT!RzO@TyD^9zR7O9;sL|0((evX)#C_!EO2c zQnmpVK@WxZEoZFYUhy=c9!ChG;UO;NU`Srjw9eD5yf#tCbzkM6MQ z2mife5~s9vvz4~AV|=8o8%SHxG1v9@1)Srl3NUVo<>vYeB`gu}MP5a=#Iyiin`% zhtSkEsOU>RsNmwk@IX5s_bK#GUyETb5K>T^hYZ?q+x!w$jSVTp8n@+=_g~OYYkfwX z&iynp`S-*LzU6H8;EdWVjnnW@YHMz&Hsqx!JxCYWmxhLGa5ISr0bowYmu%p@CvOG5 zh?px5looo~YIV4>aOTWSfNhkE@Pt&QH&>dODWxkjVFph7!&UkLcA)XcBWAL_W<9do z9yL?Xq?xh{hQ*3RiPT2d{zo-xBY*g=+WfV$1MC1dNq4K}j6(wKwD$ir)NAG3X#Oy0 zgJa_`;2bOrC87gUVJkyzvbi6vavy5b`eWFA!!YW!i{HdtJcgLC^S={oN6~etn_q%z zXmazS6f9tO(OfgdW!NYoM}J0)LLwaf8fa?k=sU1_lmZI4`p=-fogTwpz|~WmQw`d1 z8$F4tw(shz&`)cPM!5RVB9j*u1SWw3KdsGQtQAKZ%$$nt<1$&39 z_)ZzSv`YH#ZZ8Kf3bFS%VToDtxD(Iem7%b1gqHB2Xd#!*RSP5X>6A=2dwzaPuHs`O zSj**xh6{9#jh-9o5sT8zsY1=~^&};*?8A4^{Hs_Iuc0=rKc>y4%uiX&rO{P+YMp_&t*eHm z);|=25l5!hMd~IzwZ5?kh{XnCk9=XG)}_UVcWc!mzJ-fDRSFROq(OL+TbZ$oYQifFyfUX-*a zz0^Y5dZzv>I64Klx)ZNY$Ytit3XIIwnfie89#R9;IaBZ1@I+cWOtv7ceZ5I*v9Lw2 z?7_fNbU8kZaunYmqfGs&Ky162de=VmOg-;oEHm{3u6lYD^^_*T83i8~F&Vd&so&;G z?01mZOA;s6B2z!=O8R3+`gOLXtI0eJkKvg327_LCrk-17bEe)2QIEV;=QFO7`YuZ9 zQwBWoW&03Bj6a2Q7_|V1>9MT0?wwlgTo|JCdfn;sNq&f^6 zfkX1N;*k!RbG)aeFcUL%_`+;MXBK7! zNeA$8`?H?t#Ry#}fY!HD{)PJUILA3m|De8Y==l=Snc$h$+=Xm8s0d`tP@d~f( zhc+5si4xJ5x?!=Vmizk|dP-qrdOKPo&k1Yubr`(t*L%??x*c!?V${He-4b`;!86eJX+WnMlL8JFK$xXZ8kUblWYVsssmo12v z-v>R(&OB^qHVN&_!{Q$BL-LPH`}>cGYn}|SV-nZ=9NK7c4N63xPGaJkKj2g(MzP+G z;u`Y@w*yY;_i8qBj%y|yW9u1rkuAs@{W0i`>alUnezFGx52(jAe?mEm?+4?W^+`er z>|{KG0g%n%lxgtjErfJGgcBE({x9}2#v-h;u*U}DwbJf zGkPd~I7POg5&QS#Vwu&lXM>SUw45Vb5H0^|@*byY($e;nr92uFc&Z0L>XgT7!G)-B zKnRWkg+R#dccf%~k)+yyPu*iZgTq$v+~oPq-#HAZ@Ly`=I(z;R8=gpan`H~q-MC%B z1vebeiS_)il|5L>ahF{|j^g|9*}h%Wik2S~+R#+gmG5sV%N~I-&5>~5(^2rx(eTf7 z_-Dq3(R=~wE`JG5@+tTUK6f(^3!k#?V@d*j=t*Br$5o`}yA#e}#F>a3LO}*(0r_1E+`VRE} z#P*vPKC%6+z1sHRC9Y!K6UDm7R;)&YXHV+Y$@=$U)?Y3Sr{F{~oW&M{p!pAKEM#0| zuouc8WiEpY8DnvdT3lN$POI^)5sKhTT?yVB3ErAG!5;}q9b!&A#SN#_D_*v=h1oou zO@mDi!(2CbGND`=qHPn|5)1^q@?750pDMzmZ!oAz@GrQrKQ#hv;Tb*{HS4l|kp>N% zA@7DmZt$w&Dy8m~xbp&zFtE)NbkJFDsOa~rDcs~ZyLa|1In17qq$@*si>o2*gNAUe zts!)J^hWMj`iLv9`y#LRnDcr!Rc(L9`l>6z`ys&(CQk6tG#mmumS`7~wiuKH!?3op z#h<#eyFaq~BU^SmZHsUiFqJu{SQrsAh$>J#kLz-bqF#hNKV#1GKd5S~O-|}Bl?r}J z&U*59Me>VXNj?Bcei5`b4Ezj9zJOdf%myg$9=ad|kD`@pem5)HQifYnw9{u@1E~TW zLWA2wYDEOua^T=IGkU!x+L<=0B2BrIpHPDBbrtM^DA?m{1>0%+pH!*!>#GR)yW)7I zE5|QJj+dKr{Bo)qYyGitlkZCKK}c|a;skFB#`t`(K!K53LddXadc|wKoY3um+BC0= z)r2PHQmHya4u*>5H(|YC`qd}4-}=P%+r*ctA^*0rnOC{0;3cSn5nB~>dX!A%qh#sU z;j)-08p;&sx4LqEFmnD@bIxz1s_l=KkGc|k2on6^qzUdj5)eg@Gb{~YwiphqzS|i& zr~BE|W>~3IV8d%61@BMbT4W7#e_nqL4lfrs=gOrbKHBMRPL*@C@mf1W_0q2M7p>m7 za?y&VGiZ$i2dEj9wTiewOCQ5pca76l$gmZ3pn=f^U4kxLOTqP8HMs9%1W#8N;9HyJ zs~CO9wIQsSAwQ<#B3fDstfj}X7MmKUUvoA4L(%LXvNd}P4;5XN??-2FV(Y45`_XR* zK`SHoql+X$_H$#n5$IIH?4ktgSr;HCrr7CtqHozI&yd6k9joUT96!RpI zwo`iQs!xwd88i1rFiT}Le=O)rOBTl@LG`w$J)N(MTPOA`NGCW-f%0V!b* zn2YaoEhHsv7kN0ZDe7+YXQ|D3Nz0B=Vxth!zQr8M0@C1Ro_8 zkC82imX|gq6_a`}m&-P(?v(sbkQ^BBtmh++#sMn$*9R1B3o^gEJD|>&sxca+)d_1y zhJ6wEv0oHVt8928J+6=~NRM4jdW=mDUnqO9l;aGPqxk+9C5KBuY`e)}*FN;*Fz;h5 zlfyT<>S-40>3R~JQF8drOvZ6Jhe$*IpewPnk=PF;POOD5{gNx`bCC4U+mf#4^N8f| z8x4Bp$zg7pNhODi>;^V`V|~#8T~|Dk#8sPe?(Nlk4!wl!52%l(OV~syT*9`8-i4N^ z{Bxut?XK~DIz|Bz7qLAHO>Hk?dqn~PSEGniTzM3!YFBQ~MWg*)40pIqK|3!*ZGLUg zhVM4{1yzlQ7vi3zJmOf3h)XAU9x{0-v^E5y4GBJ7H#}|A92R>*;9e!2^)ofP7`t36 z0BC^Mt6`=RPkD<#Ac?M27%|^fP{*U7=GqF%$b~)0jNocm#)x~R*$%RkV9|ZF1 zj0@5_4)s8ND9$DiBuc>pP1SnP9MFbHHP|_z3u2TK;eZCAsjUM_;;@r)Kp-A59D@F5 zK3d%QG0X-054Bli(1!b;Ra7_34p(8Eh{CwlRv4Z3F;(Sbiq%}_{EXIlsIU1vinYnth*I!1d!y2|UNnF6V5Cay z{LL3*6cpiaz6DKf{mm;A4S3MsfQVZ8oCRos55zDS@Hy1xeuFk*hb>iY-{(9H{W$rY zg~;UZ6DRoOfcXXe4v4)+$h|4_khUX&Nw{WwSQybQ&&8?-hI3GX9GcG?T^)m9a@ zWRz($Vj@>wtBF|axW#ix$D%-+{EsNbSV!wa^F1>o6=COlx?|K5;d>T9Q(NDY#BC}q zL>!EEPC~2eieWF{d8p0N25q?KnMPG(Jx}n}ZB#m_H(0EO+6BJT16wph zWN#RVRTU;<`5$2&R)pkiDhGL3x(|zP-lEH~;P$L?4lbnjPTJ&;bkil&-TuIUpRS$) zn?Xeumg>{-r(qnDrLy#4&)N5tN-lO)$tkFkqOD3SykB%xo_J(XRqLu@iN`_+>=2oF z6aaO2;_5eXy?ob-+ zsvi-al9V)#=63-NYN<$*q+30Sx6Ks^acRdRcg?SxFmBwo(flW2h~)nU33{1!MCw^d zbneu+iO5Z^q_0KNv$mwGSv(>UInSV1o`~d@nN%Y3iyWY%O_cC@%@TO@syMht zCRdgX7UB6aUc7XxpRVCyzRu+;dxz~PX|dkE5tZDu-WH{>Ae(9V9c@j1OQZqWt;uhW zQGCRj{JqfBc1`|?QWkOisqT#i`~EB1v2!TvW~kZUQ^^Kf{L#>gYEh^IE! z8MNVx_%~72!Avh(P&X!7W zI4A`tL?LTS7{TUTsQ`}?!-H6GG!&AxL-;NtoOr|UXx;aENV#eThe(I;SgIVbc&rrL zU^jSU3jHz&rPY=7#+g90XV04*5R3>1qsSx z;kXk$<%QeKD_)nlWV{RG&G9UN9hMHn8Q3|maU51KJ zB?kRxIJa8pHK8YJp0x|Tc7eX4vQ!bF*Iv-nHuSotbD@{enOWo&jJx`9Ts&hiF0`#` z)aD-sZFt=EH#R`xmYlIz#>`0l>la`J0>xJ#lie{I$2L|3_brEQSIbxgBLHF%9I)V_ zMW{rF)9}KXA-{^Z)M&9sH8%tYuF=s#XvV@etO)njh?p${kq`I9ICIl`qgdaLg0!E4 z_ze2Nn{YT4C3r|>xP(a^W=ceY4B5Rdzjv?~{zT2-;nCV~24XIVY-m~-sZ{+Tiv2LQ zgAfqO#^=o78~$bprT7WC&AButjTnD)z%~a_7IDJS+MQxeSgdOHJi~PWU4R28f|fB+nWXeEIhSm&bdr z?Aaiq2cO?29)Sw1>6G0-bVufhER|GJnYG+uth&UA&w7? zbJ)b2<#iEmlB>eC6^P;Vl!oDEmqlK&CSfFq-$h755QhGNV##Bt4gfx39pOhS@Laj* zOPIiiJ3}^|R+k@3lyGHHAC)>W(4wB9Or!4;8g0r@n!gMaFwlPG{+u(E58LoWmiblL zf-G~O$ueW3`X9(1Eafy27{N36bzsHeT5 zb<}!WTYc?8RbyfL$fJ@oT!}3qvBxA%tVM?MG*{Axk@S;oNmrp#M22#*L9aYR$t^Rf z4CS4Ah7zC3-jR}zJoZ7dLb0$-sLCcROq2o^Hid=I*nx&~4M$pl9nLirqqzv2>k?>c zi*wzmmKx5NTF5e|B^M)_0Ek3w23VUL#*G8)2maUc z3U_spK9ZZ_^%|4O9eW;!~C%_!1mY(;8e_0d&1tj8jT)>Xq` zyJ4ye_xvYf8^D{a6&YXCF94a`mh2Tc(y_ZVihzC&%=iUS}wN&xZ<@Jaa!h)V*H zC_7dX4L}w;4nS(7OH8d}`%&e(SK7F40$i5M76iClnj9>-QTA*A#1Jj7lr4ys%bLKS zwnIC9wxI2Pl*ET5%?4cRu-&WCiwTaKU_0}N4+9FkOgS=V*zPqpJdx(Elr2beS2SrZ zb~Q38d$5$_l_*E?{V{^=-V4OG3){K&p~H5(kFkX99(L8!>uJ^|!8OKNL8yd zx`Tpuy+Jx#oGUnbRv4ZqN&(N?C)kmO>K%)X56zAjE0D%PWrylbhrXiF^axaM9yGN@ z_3l*5iyaBoV`|ejTQ?socq0z3qhh2L0Q#tnXV8W_zQd?$EWQ`K1b~M&!D1DuoCp23 zHkhCn*7oPU37KA_gjDY%N{S`YJk+w`?BaM;R z!Z*GNRnwH~5T)Q7r;=}EeQ0j+`bd@9xy3ifC^*6`-Udx=-Qs(8WVcA?Mk>u7@y$3A z>M?=}ctmRRI)gUcBff^JChrkH3;jBI#OsjhPbbcRtw&@!X~QFm4wOfH%vB_BL6JOS zD-sKj7+sZPzbx!*T{R5*eRoJy8;Sjj#ioe7@;@K1?#rxyXvf8VL*h~+IQZSlG3_95 za1S|uEmYHQQW-^4R7wiLhmRjk>C2q@geuGl!a)p9bly!C02Rn%m z>+pB}1h7&KDmDce-JxP_x*o0XsCoD}0Qpi0ARjUt;Nl(-q6CmpqO2quKz{XD0>~jl zRA9=_IUQ=2I0}SmJaH00=*boY5Z;s=%sfx_Yycb*Ewg0{qUCK(VC9zJP6Ta5g6D7T@^srN^=#}`bWRTN^%4MIOTgC)0)S^nPot(&@ zv+pYnpDtx&AXOdKz6G7HkZ=>MJwM=hr@}e$G~Dn;Z#p;l-+;lqP5EDESbMz?{y{ieMs!b6DQUJ*8Zj|>F-C{Qq|bSb?hswd(W|m3G^A`14!^5 z&^ii%Mg+l*;N#Z91WS+~O|vxj;+!j|?$j_GQ^9LWN^;`0YNK>@j4SJRA?rukvTkJ5 ze_(2LdCFmT5wHl;R0WFXGhBJT8+l%A&hu$hwSD{C;7afZk>CpwC%C%W$D32=Rv3yG z@l9Wh4e?f-Y;G7&I%A+o067m3z4KFr9GuwZ0VPDDaG%PuVz;-lRK@=+-3ov@#Ggw_ zeg%r?*Iw^TxMT(%F7?i?N<-fq{5S#Ro&UVDpQ@`mK7{JH*j62#9y1e}hQx>wzbbx5 zUHQES`Mu7Z-#1a!*zqFrL>0JTxi~mO5FRX64BX|)z=x56_b1Ij-x`>_7ZqUyl;L&& z$RROC_!3NBV<3hKF58yDQmib73Qh$~XS|D{8swtj`hsGq*h5DjL;GMO4Exc?7`wC} zw7b?_oe3km41=;&V|=|BJpiZ&F2Lp&IdyyN0dcy43#i2n(q-@?xII1v{-8)Duw@!A zzQUy{i3fft`*aQ>BQ9frj;nBAls}kD!;KAP*k=rHFQ>D@L+li90gWMf@u~s!1=j)f zUpSy1upLkq9x%EphuT>v+`4KQ)V?JoERBTP#R51SYQJ+whuT?o((qb^+jdZtoh6BM zfc>LrfJ!wX0K38K$pL`p?F!&gHq}+%Iz|9{b3!4%2N;odSL*w_9EeO~AL~>~S zk+Nq4ypu52!(|Ji<-R72^*KYs`HrgR?E6Z?Go_3Sq^e^ppF&S9B;16?n?Iu+Fqr$4 zvvx+~Uv9$_S;|t`f-L1TO_mai#-A^Hu$1FxQI6vKV}!;J0InmuIJo^2sv3*l#G>*4awYhyNbuhiC)f&E=M%408#P((KhGi@ z(kIKWA?y1kT_JK^FE!NtrFc8a${;#C9c9@hc&EgVpH+YTrT4;WpQqwy>hZe2ADjn9Ncd68(m zSOABk@o(%b8ZYjpH#=@*w6Fc@4k7M>RI{7KbY%SzG$tkH5MU2cPe>^JFW`joe*ghXC>^EEN}{3k z3vHovVc}+jQNZP${*3bG&)9f#0vG=wTM)STSaOi~UdLOkM~RlHvIWudy&%xJ^GSn* zpETf6*3Jhwl6`DU5`y*ES5c3%JD}iNAdkJN?@!7V%tq%xb~qZFnAwhnZUTzRZmZ%p0<+Uj1m|% zCgZje7;kYU_9-Ox+Qf;qNMPLQO8U={^gC=xSMhU10;6ouD^Fl>%WO_yI9>nn33mNM z@H){>UIJkk2hs)1`c0>BpFrqE*WW?4HeLQ8O5yT{eVdrnu7LP{q*2&i0rA}!Wky^9 z@&BNy?G+HWsugL{H{%FZnJr35RpO`wUc?-7^}{c43_TJfpup7+)aIK8ZFoNHVXA73 zpR#vCnszgbVik}~m~Ro3>q(+tBGbD-Yr`awAp<9^=C8owyC~t;;*b{Dd$#l=ZT>%J zwVx4tcI)kRqJ(pZt8jjW!a2xRI7VLes|Gg1u`uRUTlX4|Hw& z78d4qjqtIXls8KB-UmBZL=S2;xFQ`f`wg0$QbsdkHqYSYufXcyakV;7R@7BrZ-toI zF*%z5IRFqEGG>aENMy|Nd-WaX3DG!&>oJLNrNFi19|u86gbSs{N}>_2a%T~)upuT; zujk^^%9rPCd^xRB2V@IcrT#uSBXxSoL5G_wPt(e~nS2f@(VsMg%y;p{T zp*rJ<6Qz8pOuZwG$3*gbRX>G&ag4)GF(_M#|qnV|tkMM|8_Vdri2F`J-e3V|-e9W@p^y zT{b+C6~0}zAS?V!lNH9|HuuOLEamuDl%x3m7~wXb17h37ZCv}%aU0&pSmHLnaMjZ@ zsHZ1Ma7MVz&zOwc!fl>)CH7e)_MeFpYk}JwaDwCV>)%NFe$d)*`Nia{qPPg$=EnvC z;kXUA%x2uC%L%yoigs`3(ye$Zyn=_oJ9xXX2o}xqcVW>@$VFA5P|j(n=_V*gl*Zg~ zyfo5G?2w$(V~i#O$vFp_+9EmksI}9MhvbAEFGHZ_eY=9P4x>qK+;|vhr^LuC0Pawm zml?F-;LeFuHFgyCBm;i8C<26{OP;fp+w!1WLFf)Rkk8Aa=6D+ zuTCEGvzo_bhw`2W&QhEn4E2+DqJoec6>H}r?}|}#gp0fvn%cU^5A66Z zQf?Lsc*pTLD&7|(u7G!>Ht#WL!@c9XsA}@w@%zxPlXskeOn*0V25h|}(}`SD+us8( zI#A2p|8*6~ZYYx9*^0!%J4RRKfHw?~~@oc?Lvw-P7T!dw5^mGnc9^k3MLt|GYzVEm&7y>eijTV_(gc*On4`!BGVVs!_6C<4_6;b-MyPAW^q!qr#y@uB;!9te;}bx{*;&pjFC8p8Ec7dYX;V#UCNt_&Q7416(Z26kQ<(4i{> zm?7*GZ->OI2GoyS2h>Y(K>fgWKv{Ue=&Br)XQ6QGs$rn~TS6l3NKjrZfWtxgd!8Sl zyvU0h;qkZc(0DvcE$REyk3nNpY6^kk4IU#5fIa&vut(WfSN*avh2onN5c%m~z8W@f z3d<&l&4+DlsXy02NQ^x1lO&B+B+i3o%g@D%|24a^8KI(v#L?eOQpDP4kjCKLu zKlg;FDd#v4ryXwJC0h^zIwLvU{v_G60WwNx>;l<>Xz6Z3V|U{A`Lm>q45X^VMm^}q zg@l`Md-Hb<0|wKrT)Fdx_OuO8WGNTP7Gx>2nk*$2x4&5SU@6DhC`a-AF~aSy0Akz4 z?OprOaeLm!SmO3~y6Wjf)YBa#I3wKtb|&LE7%DOW^*L8!7a*~pNt{><-2Q)DNnePh zf5(<|74}8o_U|<4mE-o@GRFY7ANMkgDOPvDFGE2+W55#MKKBo*8jJJ9;-W8hCHN#H z_(jm#FwtO0uoVW+Q7fx9Dje!{W&LDi{Wx3Jjg0zlOsyTeNqMC!&!-^I%guRyIaO`n zK7Ch$Pep?J6DRluj@!S=RUN0HI!0{O(djWGfcloW{jIM2E<%3aYR>PCR5fNF28xE@c)C4CIQr>WC4_eqM4YJA7IIygDwv6qT*S5Q2*v zydf9>Q)VeJMd`1rKJpyk;ye+Me-T)Q28o-3okC*0;-Iektz8TfXY}B$$IquzS8+i2 z3<-qqa}vPbQ$W}f2uI1Yl4u~j*8m9DhL3=)ZJR0oco2|k2QnWZTM%6L^5j6~8M0>s z7>}UCV`K}WWqA{HI8PInm+>peB;ALa4Tr2n$d6>(sv6Afx zk~#x^badftbVq`>CV1EUp}c^qmMf3s4DYV8;fZv#Lbf0soztYFSa|nB*@LAVSD_rm z_s0m{EdjCZ!n>}0=;| zmt0AI1(N=GThdkZ5&`eN(V$lj?{dpb3f}z!JADrql??dhvY#=#MI_l1`r0hhYe`6p zOK1OpI&M0FFG}GA{!Gj7XjjtyInsXYPU$}#qxXnY`p-gB+f(|lS4)8eE;0eNi6}s+ z%`CWu;5Bdx{{kFbzl#w^;1oW!`L#hCo<{fuRW*j4#7(mS*hv(tNacu=Euug@Qdy5o z9}2Av(+Xw`^cCRhm$h(r9S_a?GQ$d($$Qn3`~yaE6)eD;_TYzXs_Ioz)m&v@1b*>V zkmswLj67U{Z6Wu0NyB=0?0&lJLLP-ikHIM1{n!@7|X8jW%mJg!3|EOS~=}|xO{_8 zbkh&H5LX#0u5Qn-rh8{}d+E~9aIK0mK^j4HIk?aeWDRk1HCry#1{o*5xQLMG62kRT zMF_bw8LT~xF*gnMhJwKEa*PS$FPowWz2a@j=78s+R23q0CbM)2TzqA?RHTkHx4RbZ zR(u)thFx@3W+>5SL6SnUDNq@HvQZ-<;_n;YX?Op@cK5{gTbboOvHi9k$o7;Qp6}|0 zUx{vbuB{t33hbU_Q;tiD^K&dR6R6R19hlkC(IPJELlrf}Wug?~G6|BIv8#n;8zQxD z7nWTRV+#>s*&sBv4a;8Fv9L@i%{409fFtAl7-JM1-%N0Le^)o!4#IO->qlVD51~Dg!n}TMDiDfLbQ`;{HZL8?x9j@+X zBf6VgZQYGU^buW^r%D;D)VgX|s6-_FpDhKZ!k)(Civ_u z_#QDY^vKn&*~G0UV^e5OO3)$6Sc7M01F4U5RO&-nNLT&1xMZxx(rA7cuof+SYM68r zA{njsbt+04jZ00wT&5({acrL!{0r9YpQJsYICh?alK7DUTnQ)+GVTEIFul!TFk1{X0@CF8B51;3wJr8Z?C zmck%00GKc)$z%X48}`d|1s+CGuz4dBf}>Dm0@#bt|EJ{foh$jH%QJV)0+Hf%M zeySP^=EcsKe};aXz`HHTo1P$NmFq)EcYCQyrIgMAu!S%jPf9jIOe~HR z_)tB$4pq1|^;AcpZAGE&4y_II&`irlZuLH95H1OjiA-c792UPSevfnIcLe$EGUxYb zsv2w6lMpH#^vi-``MVg>--JAWjNz@jG>(ScE37B8wzYWbzDWVycJKo@J+rV;olUfcd3o>}y zRwL7v#nJqC0X5NJJVUri#3lAo&1ii`+O-x36=oz<_zrL_`G-MR5-LQ=v65)0aJbV@ zVQ`3v`D*Mxto-={usf1&jPXS!hNoN=x`tJV=Upmqfc{OFI`KMIkYxhFC9TuW7iLn7wVkkO6;4F z*ae9bYXSGIaV7maBz=`F=_(eAfcp+L=#|5L+%l7b`}li@v>QgeEWQJSeZ38YhC+Xr zp?;g7KT!(M-<}P9Xu#isQkxNjHXH`rOjTnYUhGWzA?U{m2D~1byen~n%kcUu?Q4Rg0Ob*{ zv>DD;z=nR(H=RPVASxj zwh8ou+a{PpG={+5}rb0evk2R#~j%GIX-0RAh&Vs6Fn)s8s--hdPB) zX;W?3+ng%EfgW$5TpFU?7`Y;x(Lu~pei}w{HH!zCpo<==&PZY#JBIx7puqbtA|}Li zei7iQ-bK&|9YGg0oNW6=Rf512sqFan5f!s&4zGTmq^=dm%H-=n*~3cH8523RQIl04maC|4P3m|exF z2>FYW!aCr?Dd4^trLfjq3g=SQ*cF0xlv8wN;H}8Orlc9@yBDLJpemlnQ$}DSkbw?N z&O2kBrdX#*@vXz1rm8zo#Pjffk_BsFz|{d~(Pq%|#z1$`(*X~9kcQBpCz`nZDd=e& zb<)FQ+|%$Ujpui?LuB8>yX*{o^uxiHvtO=J8RXjXd4mAk#Z)i;SBJ~pD&%sN$hzKVL z%mLsXNQ9p0pTn-;gng=5@upFV0M`DPGZ0Q}8lYoE-b@&p*LCT(88UZ(XVheMnLX$` z=>;f3xUfdZkZ=?!7P!F1T8?Uoyx-}LgX1SQbbL)Mqdgv9)%1BgrG)cBq*v48 zyo+3|{hes-8*Ht;({5^NwKQBRlmZN_aI460f|^h`9UU5`wX}!NJr+15PCtjs9Y-+u~&%V z_^p#$D09oQwmh(-&#?nq2$5(eCF3WG9-(@wh!9E!Lp+{w#uDC-^n=6^5W>IS>n+86 zXhX;FSCkLLWu-0J{Xjcq+(8*DU+^K

              ;bBt-EZ8mW3CLuF8)Gv8{)#tA-s9`X_DZ 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree b/v1.14/.doctrees/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3afbc5f7ecffb6b6891f01d380c9ae7960b1b953 GIT binary patch literal 889762 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

                VZUkyi@+FIRm_H^Y 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%0D3&4FWt5`P%P|GVP9o(s(u2FIiSU8%U!jMl;AAL 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 C-?#Aq literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/api-reference/index.doctree b/v1.14/.doctrees/api-reference/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ef4ffbe7830586b1339a52bb220cac87cd0f83b2 GIT binary patch literal 5640 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

                oIo-a0GMQcri+C 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/clients/discovery.doctree b/v1.14/.doctrees/clients/discovery.doctree new file mode 100644 index 0000000000000000000000000000000000000000..22a61658e9a5bd43ceb2cbdda8fd56c6a4adaf8d GIT binary patch literal 16073 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/clients/index.doctree b/v1.14/.doctrees/clients/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3e482427664f9ff78b1140080a40cdb52a523b0e GIT binary patch literal 3759 zcmb_fZEqa65w%JwSV)U{<**Hx|%#Qs?ag@?gBJo#zms3^q+dy59*c+ zGphG*8X8-!WV4;MSetEr>Tk2IYgujuU0QP2{%p9M4*nRQ2|+&kaPYzJe`|bDhxX+^ z(OGcg#Y$iL%DZ+>;EVNa*L9=DdA8x&wa>@yvfz^X<6=VG7O__INnvr$+I1HgZ0==w!!w@$77r2;W3jb6^HlV z9UtD0-%bzj9Ndi$4-VeBd;j3hxx{PqW_9`yRUIVPZ!1FquH}JfP z=Z4!}ISo+YXw6FiZXdhd`D(&VtWK#u^Z)Y4?#f&oKNY25Z!RFhQZ0#98glA-T*jhE zXv#%plD*G9WFJx2$;d3Bxn=(GMZiz;GHVd5sZbMt?%Iqe36kvGZPz9mK}QzZgld}j z#~0jInNvndapwQ+wvej}{|ojj_BPvRZvnm*!Zbz-uw^LRPL0^`nI?HowI|Eyg#E)s zc!M2e5u)%jQ%npFM(QgWh1*HKmi6xA(P;4b>E{DYb3tNybTl}Eb3gA>AZo%wEMaE^-gEUtwe!0Ax7Qx@CRIy9iDX*a#Oq-r~^W2m*b7P{+h(=Jo3q@|#7 z*ZvC;1-P;4w{2C}ys-Y5?Hs%AluD{gI>k#u(6}tg@<74Wfe}tQ!RuE2T4;f{ZSYzY z8dg}v!L2}wXWs3lN?EBaU0MYHZilW7R*hz%3~KJ%>Y`lPTbT8P{wj@;T#iY$+s`~#|` zfFt$LqeU>dQ%cJ053yf}azl$mMc`p*U8S>J85%9`EK?-5(J41Pw0qc!FeQ+Q2p6fn z+?>}1YOIILplf0{2m>NgrdEsQ!-0D_{K6q%`?3(J4Av6F`wIF7;#9pNKX*fMA#LOo zStxkMt^eKCH(Wobc?3`}9mu!@tQRB`0^dVrxSum?b8|EvLu^L*nPp0jl%9^gyB;)4 z2cQ{QnxSvovi;C}`1+lDz_YK@c+Gr}EX@CMZXT6NLcX3*J>t}+VW6&syUOE%p%68OyCKPQmBykJ(Ces+0z0=Z2;7@^1XVE zgo;Tuce(wT5%`0^SH%XDO9-+1q{uO5g;BnorD_tu-~|bnDRN-W3VVSkF#D|O@hl{- zP^2owFmIoD1f=<>Vk16j%4Y{oueU!gO(y_NN9rVsN!rUN!}7g0iA z72%Y0zU11WwD588920R6R=?SI>|5iyL152vc>dh8@6HW-4S&C7J>#~QgIMm~jyX~x z%!#mANkXm8^(yz5C6yj7g`j5>C7Qe_RbN^YHrm}4i{1ID<)*zA``}z{1Ib@sw^grT zss@w9_{>1McnteW2mp>dpp|U?x|V;9%YW(rfU3YJ80rfHkU<_)2R4MVBEHgy%TQja WCwrvMG(>SL37l8cL+IkgWb{AH!?5@O literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/contributing.doctree b/v1.14/.doctrees/contributing.doctree new file mode 100644 index 0000000000000000000000000000000000000000..508bac1c4e710e30e1e3740b85ef0e3c357a2b78 GIT binary patch literal 28823 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 F{$JBqWZ(b* literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/eks.doctree b/v1.14/.doctrees/eks.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5611ddbd0af5444777c430aa3e9dd626613b72e7 GIT binary patch literal 23049 zcmeHPYm6LMR<>i0?P+`b%EsQvaa=n|@Hm<3_V}@J92VB=N7hU-F&-y&VwrYzRrOT$ zR9AKC;h6~=SP;9(h(ZFkceD9{gwQToSi}m1_91>F#N!vzf1l@M7#z)JjDq!r(} zkGfSg-90t2y@VB(rrlk2ALpKX&Uel|_uTvGvCseDl}+qlx+m&6uD@J2EXxlpJL;!9 ztiVjVwjcLD*FW|P{Wtnk>3C=?ML`mpc0b*O5~kyNR%rYETm5u56^~sns*C#DBioGK zz|X2XW6m~b`>pHQ&4}aBZ6z_rOk>>QS`m$B zyXhHGgopS(<{Mr9ZHJZg)Q^^7E{1lS$|ULb*jS)feP@sJ=J<7=BYZMx>Tk+zVymaXAS8WfLs_UJdCXpPB@76)3G_`Ic?QEbGn zshPb*>jj=`uH2e(;$&+lZ6U)*W}j z@$eVxXhX-aj0HPv9McTnqM=0EO)oGFPm3%|v)pJgQXS9~)FJP6qieh#_;oYrHqKq2 zzj*#c!!yur+;}On!{><8jVQ8o*9Wy=n;ykMXxE*%>mAcvU%Ptl@`dA=h!E^pcDqTp zz+)!fQ_g{O_8v}LU#J2^ra>a(9G-I?g|wra&9xCPuT-A!?|k~5DpNk9uR(-3)6kqv zjLw-23(L^Hpe;~Rl1Si|#4=|r-M2=%IMy5(^hR;?a-O4xa|EE_d;}2n82+BX-%

                4~P}z*D+SOD18 z4&E&!)52XP`#JlF9k34(v<5IT0RGr=0Nh?3r{0++1=7Kj<(P!?y#=;{96%Vc|B)$2 z28xlJN+!WV$=A}-{juNgzB+x?t-XJI+&#wSdd%kH_{*of8{z)xT`ogv^mwXdcTDiV zmol23-0c$0Nw2c`)4Nue^zO5#1ODvGS+;IK+7k5KXa7&}x7_g$zoM@S100u`b%(cR zK3Mg%YmSu$1iiZ&9OPYl3OAVoutiBMfGVm_sSg1eA;~*Wk%|c|xKNX4Atgg}U#>?t zgwkC;g{C^k!tp-=4`=m>SThjN7gZ@{jVfr<9}qOlQLw%*Xz5(f+Xm~c#C}h({QUtET&enVICu9S;F$MU(p%KsUhG%By2e#> z^eZwep4EZ>ZgACsnjQ}z$CD+9{;YE@V+0rMWlK6E#%Cen!5N|QpX31C_E zu!dEZh^idbJh3{J!AY0hZd&TlA(MGO?93=tUvw=)twn3bh_FBJ`D3j@!OgsD{(*=R zHFQ2SG*xMf()uCW8@l#{%Fy9qC>9w(XSF0Ru-L8?CeU(%1Z9YN%zBohjEql>#MXpQb2 zO;e>aG@t@7ftoNS3|$kwWDFbO4xRz1Xirnmnr=7r`D8(IS2(b>la+aq%<%`WMndTI zS`rZi?nO#Oe~A5pR2W)jDnYFV*EKpVl%dJ;$q13uCa2u+3ZHvP#tj*XU`Tz-%~@U` z$2u?uomIvpgV3FtEtw4w?pF8(CFlsT`(h%2v<&gyMsGo!swMEbACe2OkrSX$@SI!! z+iUN;-GUYgoPr4gqf9WS6DT8syNAqhKW5ez=6Emw+4PHZ%arUZJsEg+GjPTWfHSc) z$7E$=i=svE-h)T*=dK>7YvKcCA^vAG@yJvX@OnaZpHn-II*|Q?&;p^XZOI5Jl!Y0o zI&k{9lpIhU496UHY@;0w)EsDS&9$qBOT&n1%Dz)|nSb+t@{N=Y@J zxr3Au+y{ZLk_}#tF2v~*422i*Jrd`wx(Hx6!+p6N0|T?Fa6Qxs%tvc{JP+U%id3l> z9t0;In875MA%D+t1xBfblA9^GP7;cFQzUpgg(@4by&veS_}huCMG@kB;y_!34oxxywkQZ_1!$ zJlk^3kXm@XyvC3oh}CcQ9sAa}b|BdE0ylr{*>@L)y@$WwvW{^(%R!8%cTx^0gjo_2 zD@w@K8DDk%WlF^dqY(6bq{JK-k@dzJan9Xdk=UMTjfbwU$Vbi9HWc}r>$2({Ox~y@ zDIP$8i+9_p5&{l~4QM5szpCk9!}zcK7sv{{5s_aQk_>QADV!IS74r6+97DNXPyc|< TBt&s53pKAU521^fqyB#YnNtEj literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/nodeoperations/maintenance-mode.doctree b/v1.14/.doctrees/nodeoperations/maintenance-mode.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f9750d29d9568855f3f919983596297fce0bdecc GIT binary patch literal 5381 zcmdT|TW=h<6}Bv|q+Q(|+bIyso}@@)quyQHvSTSgUwV5{qZWjQ)lGjXo6p$hqw7TC&puDo_Cn4G#}_4$t|{h5SwD z&;Pu3$^Ds4l`@{34oDOwGNP(5E0GNIm?paTqPY9p;(2k$bTe|IWS)hzFqgm)GA^Qw zCdH?P*|6-I3pJ?LFDn{qE|X?C>#!xZ{AqEAbxlWeEof`XY<*04qG>{ska{sxC@e2n zuRNuvR);e_2`o z+?T{x1DL3b^OJE#Qr5QUzkbSS;4uyP=1bkEBu ziC`C{yfl*m_2kI=B%BCAydTNPJK;ijM4XU`0;kTi#2XPV@{D>Ui9ErNX=`npTjgO$ zX*BSjGKdRF4zqfi5$*QPlZa+*#d=^0C{M-^6U$>7d816m-oc*oejrKYeVYgii_D4r z?%^k38*`4SC5-yI%^5c0(0 zf!1jIp#!_jJS{z&1u_z9z)!Q9!Q!n#W<*m803{&@rg)-wMBP?E?4b93>_JaSoC@jz zbQWb3&mmWi8f*jWAuxZ>i=?MyOf@p!xD;n~8gW6@L}?m3yakz^wG-7k&n5wnj1iSn zkogyUvX=M1_d00IPp1EKi%elNqsyCNvve+O$WvM6tajEY(-{hu_nC4@%jL~}E8%_S z2@+6YQ3Wg zv@M3bHuypWU$?TN)6S)iyIinDd$aFqsneRYURlErgba_`Hu=R-9-uW4UO(|l z^Hd6|J@i?>%I4SwP7z-NNFdexL>Q_e3zIN zl&x`2#%PzW1VpjIbWdaPkxGf}pjOh1T3Aw-IG;Pe-8xu3GjToyEF-RL*}hlWXj0Wm zWF}<)66daJR!A=)jmq)gES=)uPhTB=K@_N7V`9+FoJpPye%;W42 z?2ooC*6!V&x_25?W~-I7T#Hwby135Fm5ni}3$D4ML_S7m{K|4GvR5{xt`sj?H=_AH zH+?j%GP`H4>5L>wxbD+O(HjG&WvkrLQX|0~Tr$0yhejCYR^Ecy2=mM~;(pV1uho>Y z{WdF#YK?k|`^9#1VQ>i zN<9Xvr9dB2jxg+1!#ooht!o+jwr1N|2<||`Y*Lu3BPn$vHEm5EESPnBZ%OjlKOM;| zEyLzrH>|Vzr>UPaK-HjHWWvzM#hx=DTcqjEH8~ zG28T%!)lu7T-8h+(}`#R_a2&!6Otvc8aU9g$Dnj!{*c;36~8wdJb{gTv_ul!Jn+!X z^{BtsR~+9rXD5A{Wis;_8Y)3ESlp@_>cVW6mTv9Rak~^|XKrS03-%AQQEoa_pk8`& zc4BU&*|G-!&=iAxgiDI+b;^XfaR)S)al15cWi*so)c!G7yu|0GU*&5Yq|$P^jtj)t8V;in2`3YTHyYACoL2uYE2thu#*FZSN zUE1L9Rb0cHA@I3vgA1@p#z3LqG1tY%TOXK>l%_t6LJ^YacOhiWQc#GfZzIEejcJ{# zkA_2#)gYZ{CX<28#>2u~x13G^aQbM4;U4X37ESx_-+u&qZe*iyZhK3aZvTyXdqgU+ zcs-)ofKxqkG7$YkregtNT}=XnP^4LLuwr%q$k=aUvpIlYmdzJtOHC3@PJPD5OyCFb zUJ=sbeoe&$QTEFmL9Jk@x7@fK`e;K48hdNnosi+e9HPM}gAG=8CdBHaJS|?h#|-yE zQ6+&FK#vT0G6DwbtZ>!l36%$Pd^|?IhcJ7whD!F`;RqR;#sQ5GzZ0myDAf>hJp|X0 zPm#QZk2cn3S*P}P^>PBRicy)f zX1$Gew|YI~h#BiY>{wE4Qmgq&Kes6*AH0v~hyy8_0CKF?=7JY-ygt8IHG`f2Dc1qa7M9ge3ISx|45+!w-?6|0{R*4PTU|{fX Do^kn% literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/nodeoperations/replace-node.doctree b/v1.14/.doctrees/nodeoperations/replace-node.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0d55b47bdc53d7bb586157ccf24bd0183d2a22d8 GIT binary patch literal 15883 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 wi;PI7Z^6+BPx# literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/nodeoperations/restore.doctree b/v1.14/.doctrees/nodeoperations/restore.doctree new file mode 100644 index 0000000000000000000000000000000000000000..91c5d8948fc301c8f60a2df51092b083fb4f629e GIT binary patch literal 35794 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/performance.doctree b/v1.14/.doctrees/performance.doctree new file mode 100644 index 0000000000000000000000000000000000000000..12a91351e6bc34813dbdc4763d2a94121a0cbd4b GIT binary patch literal 16111 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 Dr;=5s literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/releases.doctree b/v1.14/.doctrees/releases.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5c66442f4d7720b04664bc1c7af9c0ed0a9eea8f GIT binary patch literal 40933 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/support/index.doctree b/v1.14/.doctrees/support/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..34ddbc10cc7a42c97ef76891215b2bc57a565118 GIT binary patch literal 3757 zcmb_fTW=gS6mFaDW;fa0G`#>)8%T?QBG}!Qw9rJQLV$Rw$O9mdxM=E~@vN=P*n{m! zHi$~_03wp#Fb_yP@n`s3e4g80ga9F`jmTP?CY5ns1sWGWp)-HL8}a^~y}RN5-rk#c@9*82 z+RIJ|#1x)>c(ld!KzkZ6_tOh-QYl$LA3&k`=jx&`uLMac8#8coZS^&TPLj(g->t zPbXB-$UQ!1H;PQtQY5GDC%b_Ro_m|K*Vr3uhrJH4TL|hH3BwkFvs)Fu!xKfa47VnW zSo;0Lc`|rA$T`I9S)ETb4n{#p5qSRuU#SKA*=V%;?eVv}ie?E3>A}J70WLRWCQS~W zJmkAYe!hK+3!lqF9!jwr6Z{{BjD|(Rq8fApj-pfy-qNE!RV z|7rdid+^_{=*mh4a1*@>c&El-8EM;&rAmo$_M!*K+3pN5=?uVuhcZPqa+NwCkSD0h z-b0j7Kr^1m=_6lCKDuA7M%RbZoU1c_Nq}t=!6u7n<+U(YL$(nWuzfV zNhy_1!7#aZ^t>H}x$;Sl zXnP)wxWNfg0;oYlQIbN^MTkP` zodTf`xBx~06`_ov1!BleJbWy71wm7VsIcL0f|S=9iX?I%P`b26oXI|8p=Kzp-S6b+?{&_pt% z36AlN`p~w~4`TQTICvC*0AoILtZfG*H!_%u>;;b8>PLB+1x@||)k46LdPXz$uU7*H#a0cB` z6h#K3{YovU#{m0`|Aj-q>O~<^;jKl8_a^!S;#9sOKev5xA#KDIS(xyY8~5R*SL`68 zSpZNl1&FW!tmh>Yg1h_5u+K4LGJP-}L##*HsbNx#q?(SMz2-HG3qUh4G(~?lMVq17 z@TEKVfagHP;fi@LnVWyPHjhdrK3|Wh8gXjk;tW*(*tanp)-_~;5{mqs)3G~9$TVnb zvvD9OJKY(Evr}QnEMR=f5kCer79Pp1S`_H~Y;)&S~C@m{_Li3~|OVcDIK5!?rX zFN+N*7Z76iQJ!I(@`HRaGgTyj0Sgi?V&p*03YR@kV8&U|Tyol(U8CaIPxH1@atVqTsfbyb zqc}`ph?-Jx6T12K>flvyH~WTt$s9V6y}YzuPWt|<08;?_#-2wBVbaGbalK^QzO?Yk z@Dy{h7nZ--Z|qlXyIx>UGu-^CW51ngb`yVpWj$^Ci$N@Q_d||U@be%nmJ(m9wO)Ds zMMHng zp-d704j<4;*59k-Kg0PS+()Pie3+rWFz9IHL3v<9C`;naMqGq)vzp+MI#VCTjmUFe LMGwA<=abQ&iI}wv literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/support/known-issues.doctree b/v1.14/.doctrees/support/known-issues.doctree new file mode 100644 index 0000000000000000000000000000000000000000..379b35b86f87fba80ad85015ded35cbf42a7b2d3 GIT binary patch literal 5378 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/support/must-gather.doctree b/v1.14/.doctrees/support/must-gather.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6d1bc26487ead6ee22d91ee1db0cd5bd9c73d211 GIT binary patch literal 19890 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 CcL~t| literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/support/troubleshooting/index.doctree b/v1.14/.doctrees/support/troubleshooting/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ae72caf0541d3cdfac87bf2572fbe2909eeb52ef GIT binary patch literal 3747 zcmb_fTW=gS6mFaDW;fYvnnD4o4TN$R>~2e1XrfXfA@Nd?2ULp0MT2+7JGSDn2iucu z1eM?cL?nxs8pPk>pYeHScCx#aix5>u**QKwKK{;kF7sXMm*4v5%71RtfFQ!<4dIraq`b^WpQM(SMa=s=M6kp-S*#}4yb^(<|RM} z?&ZH$HkJrMN)G(!iR*D0iz1;Djwk~{_C9f)j7$@nTjuXyKnO@)Y9nB&P-B1U+KeX& z2zKf=>fMc?Ba3WIHBJ2eb8fBVlTlKfKz9v1J@c_(Z?d=9HhT+@wGgTiXu#&L?>1|c z2FIG@In|!bBNFxx&O#jQfJs39SyPM+4hHR&jKakvUt+xbbU57k_UPLkO>;qFy1&1( z59bEVW@7)VyL_i)-Fw%$3=AFcSjn9U!T&+bXnc5mhiFa))t%qFZgoMg-@7~F_r98? z#|o^?1>Sx5f0}>B?f-WdeU+a8?hCUFcxQ&eBGRrsQ92{myNdxJ@48dKWO4w9YLjbf zs6L`T1mrX1TJJ6rA)+}KD!msHB1HG$a&$u|-T5P&R5Ltme*iwHdPkYM2&Jx-%_nMFO>ZWtT8`@&YC}ImN8M^#D=P|^KK(_YE;u`8q&{0(l;pZd4$dq1^@$-S1Sn>w3I~0 z+_GraGI3(Pq3)pvu7`q$1{Mi=L;>Fgx5kKQUR!R9PB~Ds#1>|z)N-waj*Aq>^^b{` zKn)t2k_?hALKM?*DgTq}a|w(hDr1#|S;2J+I~m*=7>?i978fI`wbBtIG7%{42s`c; zqsDAjNY7bml~%mlURqf)!G3rB%IKK`v#r+_7nXLqOW^__nqhTA@NPp8nHD6afIC5* zyMT7*p3*c{Izdy(K@%Jk+URH?MNnurVCUO@zxV4cKSspd~ z1FEHfgL+yL5e#mYl9K%)_GhBp&>~S0>Myh|(P^#>jplcj6p3wg#0{_bxfvzg5R7oR zNbTk7EH98_JzNIeQdR>2C{wFNvw6Th6Mo?kRQa-_QW>lzi1#}B1>#h_f}dL@*q~$Zf4m-_A@$?yS%Vo>XQ$5gc0DF|q=mU&t>EJ_bCf4r~g_f_S|Vm!Vv* WCwfpP4N+W6Ld~noL+Ikgc=!j&SFs8J literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/support/troubleshooting/installation.doctree b/v1.14/.doctrees/support/troubleshooting/installation.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b4145733999227ba1e100f1f9505a85e74cba3f5 GIT binary patch literal 9193 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/upgrade.doctree b/v1.14/.doctrees/upgrade.doctree new file mode 100644 index 0000000000000000000000000000000000000000..08548acc005f505b82c6a862484d1b02f58fbdf7 GIT binary patch literal 30400 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 literal 0 HcmV?d00001 diff --git a/v1.14/.nojekyll b/v1.14/.nojekyll new file mode 100644 index 00000000000..e69de29bb2d diff --git a/v1.14/404.html b/v1.14/404.html new file mode 100644 index 00000000000..fa7ae55164f --- /dev/null +++ b/v1.14/404.html @@ -0,0 +1,31 @@ + + + + + + + + + ScyllaDB + + + + + + + + + + + +

                + + + \ No newline at end of file diff --git a/v1.14/CNAME b/v1.14/CNAME new file mode 100644 index 00000000000..12aae904168 --- /dev/null +++ b/v1.14/CNAME @@ -0,0 +1 @@ +operator.docs.scylladb.com \ No newline at end of file diff --git a/v1.14/_images/clusterip.svg b/v1.14/_images/clusterip.svg new file mode 100644 index 00000000000..1c74e5e69ba --- /dev/null +++ b/v1.14/_images/clusterip.svg @@ -0,0 +1,3 @@ + + +
                Service
                ClusterIP
                10.0.0.1
                Servi...
                Service
                ClusterIP
                10.0.0.2
                Servi...
                Service
                ClusterIP
                10.0.0.3
                Servi...
                Pod
                Client
                Pod...
                Kubernetes cluster
                Kubernetes cluster
                Text is not SVG - cannot display
                \ No newline at end of file diff --git a/v1.14/_images/loadbalancer.svg b/v1.14/_images/loadbalancer.svg new file mode 100644 index 00000000000..c86a9a2a46b --- /dev/null +++ b/v1.14/_images/loadbalancer.svg @@ -0,0 +1,3 @@ + + +
                Service
                LoadBalancer
                Servi...
                Service
                LoadBalancer
                Servi...
                Service
                LoadBalancer
                Servi...
                Kubernetes cluster
                Kubernetes cluster
                VPC
                VPC
                Cloud Load
                Balancing
                Cloud...
                Cloud Load
                Balancing
                Cloud...
                Cloud Load
                Balancing
                Cloud...
                Client
                Client
                Internet
                Internet
                Text is not SVG - cannot display
                \ No newline at end of file diff --git a/v1.14/_images/logo.png b/v1.14/_images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbfedad2ac875f6fa53f8f100e926c473364409 GIT binary patch literal 35103 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 + +
                Kubernetes cluster
                Kubernetes cluster
                Virtual Machine
                Client
                10.0.0.4
                Virtu...
                VPC A
                VPC A
                Pod
                Client
                20.0.0.5
                Pod...
                Kubernetes cluster
                Kubernetes cluster
                Virtual Machine
                Client
                20.0.0.4
                Virtu...
                VPC B
                VPC B
                Pod
                Client
                10.0.0.5
                Pod...
                VPC Peering
                VPC Peering


                Service
                Headless
                Service...


                Service
                Headless
                Service...


                Service
                Headless
                Service...


                Service
                Headless
                Service...


                Service
                Headless
                Service...


                Service
                Headless
                Service...
                PodIP: 10.0.0.3
                PodIP: 10.0.0...
                PodIP: 10.0.0.2
                PodIP: 10.0.0...
                PodIP: 10.0.0.1
                PodIP: 10.0.0...
                PodIP: 20.0.0.1
                PodIP: 20.0.0...
                PodIP: 20.0.0.2
                PodIP: 20.0.0...
                PodIP: 20.0.0.1
                PodIP: 20.0.0...
                Text is not SVG - cannot display
                \ No newline at end of file diff --git a/v1.14/_images/podips.svg b/v1.14/_images/podips.svg new file mode 100644 index 00000000000..03f1a44c7d6 --- /dev/null +++ b/v1.14/_images/podips.svg @@ -0,0 +1,3 @@ + + +
                Service
                ClusterIP
                10.0.0.1
                Servi...
                Service
                ClusterIP
                10.0.0.2
                Servi...
                Service
                ClusterIP
                10.0.0.3
                Servi...
                Pod
                Client
                20.0.0.5
                Pod...
                Kubernetes cluster
                Kubernetes cluster
                Virtual Machine
                Client
                20.0.0.4
                Virtu...
                PodIP: 20.0.0.1
                PodIP: 20.0.0...
                PodIP: 20.0.0.2
                PodIP: 20.0.0...
                PodIP: 20.0.0.3
                PodIP: 20.0.0...
                VPC
                VPC
                Text is not SVG - cannot display
                \ No newline at end of file diff --git a/v1.14/_sources/api-reference/groups/scylla.scylladb.com.rst.txt b/v1.14/_sources/api-reference/groups/scylla.scylladb.com.rst.txt new file mode 100644 index 00000000000..235ba241a48 --- /dev/null +++ b/v1.14/_sources/api-reference/groups/scylla.scylladb.com.rst.txt @@ -0,0 +1,8 @@ +scylla.scylladb.com +=================== + +.. toctree:: + :glob: + :maxdepth: 1 + + scylla.scylladb.com/* diff --git a/v1.14/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt b/v1.14/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt new file mode 100644 index 00000000000..e1e9324bcad --- /dev/null +++ b/v1.14/_sources/api-reference/groups/scylla.scylladb.com/nodeconfigs.rst.txt @@ -0,0 +1,1629 @@ +NodeConfig (scylla.scylladb.com/v1alpha1) +========================================= + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: NodeConfig +| **PluralName**: nodeconfigs +| **SingularName**: nodeconfig +| **Scope**: Cluster +| **ListKind**: NodeConfigList +| **Served**: true +| **Storage**: true + +Description +----------- + + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - + * - :ref:`status` + - object + - + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - disableOptimizations + - boolean + - disableOptimizations controls if nodes matching placement requirements are going to be optimized. Turning off optimizations on already optimized Nodes does not revert changes. + * - :ref:`localDiskSetup` + - object + - localDiskSetup contains options of automatic local disk setup. + * - :ref:`placement` + - object + - placement contains scheduling rules for NodeConfig Pods. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup: + +.spec.localDiskSetup +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +localDiskSetup contains options of automatic local disk setup. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`filesystems` + - array (object) + - filesystems is a list of filesystem configurations. + * - :ref:`loopDevices` + - array (object) + - loops is a list of loop device configurations. + * - :ref:`mounts` + - array (object) + - mounts is a list of mount configuration. + * - :ref:`raids` + - array (object) + - raids is a list of raid configurations. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.filesystems[]: + +.spec.localDiskSetup.filesystems[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +FilesystemConfiguration specifies filesystem configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - device + - string + - device is a path to the device where the desired filesystem should be created. + * - type + - string + - type is a desired filesystem type. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.loopDevices[]: + +.spec.localDiskSetup.loopDevices[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +LoopDeviceConfiguration specifies loop device configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - imagePath + - string + - imagePath specifies path on host where backing image file for loop device should be located. + * - name + - string + - name specifies the name of the symlink that will point to actual loop device, created under `/dev/loops/`. + * - size + - + - size specifies the size of the loop device. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.mounts[]: + +.spec.localDiskSetup.mounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +MountConfiguration specifies mount configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - device + - string + - device is path to a device that should be mounted. + * - fsType + - string + - fsType specifies the filesystem on the device. + * - mountPoint + - string + - mountPoint is a path where the device should be mounted at. If the mountPoint is a symlink, the mount will be set up for the target. + * - unsupportedOptions + - array (string) + - unsupportedOptions is a list of mount options used during device mounting. unsupported in this field name means that we won't support all the available options passed down using this field. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[]: + +.spec.localDiskSetup.raids[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RAIDConfiguration is a configuration of a raid array. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`RAID0` + - object + - RAID0 specifies RAID0 options. + * - name + - string + - name specifies the name of the raid device to be created under in `/dev/md/`. + * - type + - string + - type is a type of raid array. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[].RAID0: + +.spec.localDiskSetup.raids[].RAID0 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RAID0 specifies RAID0 options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`devices` + - object + - devices defines which devices constitute the raid array. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.localDiskSetup.raids[].RAID0.devices: + +.spec.localDiskSetup.raids[].RAID0.devices +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +devices defines which devices constitute the raid array. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - modelRegex + - string + - modelRegex is a regular expression filtering devices by their model name. + * - nameRegex + - string + - nameRegex is a regular expression filtering devices by their name. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement: + +.spec.placement +^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement contains scheduling rules for NodeConfig Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`affinity` + - object + - affinity is a group of affinity scheduling rules for NodeConfig Pods. + * - :ref:`nodeSelector` + - object + - nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. + * - :ref:`tolerations` + - array (object) + - tolerations is a group of tolerations NodeConfig Pods are going to have. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity: + +.spec.placement.affinity +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +affinity is a group of affinity scheduling rules for NodeConfig Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - Describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + * - :ref:`podAntiAffinity` + - object + - Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity: + +.spec.placement.affinity.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity: + +.spec.placement.affinity.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity: + +.spec.placement.affinity.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.nodeSelector: + +.spec.placement.nodeSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.spec.placement.tolerations[]: + +.spec.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`conditions` + - array (object) + - conditions represents the latest available observations of current state. + * - :ref:`nodeStatuses` + - array (object) + - nodeStatuses hold the status for each tuned node. + * - observedGeneration + - integer + - observedGeneration indicates the most recent generation observed by the controller. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is last time the condition transitioned from one status to another. + * - message + - string + - message is a human-readable message indicating details about the transition. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason is the reason for condition's last transition. + * - status + - string + - status represents the state of the condition, one of True, False, or Unknown. + * - type + - string + - type is the type of the NodeConfig condition. + +.. _api-scylla.scylladb.com-nodeconfigs-v1alpha1-.status.nodeStatuses[]: + +.status.nodeStatuses[] +^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - + * - tunedContainers + - array (string) + - + * - tunedNode + - boolean + - diff --git a/v1.14/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt b/v1.14/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt new file mode 100644 index 00000000000..12a36b6c388 --- /dev/null +++ b/v1.14/_sources/api-reference/groups/scylla.scylladb.com/scyllaclusters.rst.txt @@ -0,0 +1,4996 @@ +ScyllaCluster (scylla.scylladb.com/v1) +====================================== + +| **APIVersion**: scylla.scylladb.com/v1 +| **Kind**: ScyllaCluster +| **PluralName**: scyllaclusters +| **SingularName**: scyllacluster +| **Scope**: Namespaced +| **ListKind**: ScyllaClusterList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaCluster defines a Scylla cluster. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of this scylla cluster. + * - :ref:`status` + - object + - status is the current status of this scylla cluster. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of this scylla cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - agentRepository + - string + - agentRepository is the repository to pull the agent image from. + * - agentVersion + - string + - agentVersion indicates the version of Scylla Manager Agent to use. + * - :ref:`alternator` + - object + - alternator designates this cluster an Alternator cluster. + * - automaticOrphanedNodeCleanup + - boolean + - automaticOrphanedNodeCleanup controls if automatic orphan node cleanup should be performed. + * - :ref:`backups` + - array (object) + - backups specifies backup tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored. + * - cpuset + - boolean + - cpuset determines if the cluster will use cpu-pinning. Deprecated: `cpuset` is deprecated and may be ignored in the future. + * - :ref:`datacenter` + - object + - datacenter holds a specification of a datacenter. + * - developerMode + - boolean + - developerMode determines if the cluster runs in developer-mode. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this cluster is reachable by. These domains are used when setting up the infrastructure, like certificates. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing ScyllaCluster services. This field is immutable. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - externalSeeds + - array (string) + - externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as "seeds" parameter of seed-provider. + * - forceRedeploymentReason + - string + - forceRedeploymentReason can be used to force a rolling update of all racks by providing a unique string. + * - :ref:`genericUpgrade` + - object + - genericUpgrade allows to configure behavior of generic upgrade logic. + * - :ref:`imagePullSecrets` + - array (object) + - imagePullSecrets is an optional list of references to secrets in the same namespace used for pulling Scylla and Agent images. + * - minReadySeconds + - integer + - minReadySeconds is the minimum number of seconds for which a newly created ScyllaDB node should be ready for it to be considered available. When used to control load balanced traffic, this can give the load balancer in front of a node enough time to notice that the node is ready and start forwarding traffic in time. Because it all depends on timing, the order is not guaranteed and, if possible, you should use readinessGates instead. If not provided, Operator will determine this value. + * - minTerminationGracePeriodSeconds + - integer + - minTerminationGracePeriodSeconds specifies minimum duration in seconds to wait before every drained node is terminated. This gives time to potential load balancer in front of a node to notice that node is not ready anymore and stop forwarding new requests. This applies only when node is terminated gracefully. If not provided, Operator will determine this value. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`network` + - object + - network holds the networking config. + * - :ref:`podMetadata` + - object + - podMetadata controls shared metadata for all pods created based on this spec. + * - :ref:`readinessGates` + - array (object) + - readinessGates specifies custom readiness gates that will be evaluated for every ScyllaDB Pod readiness. It's projected into every ScyllaDB Pod as its readinessGate. Refer to upstream documentation to learn more about readiness gates. + * - :ref:`repairs` + - array (object) + - repairs specify repair tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored. + * - repository + - string + - repository is the image repository to pull the Scylla image from. + * - scyllaArgs + - string + - scyllaArgs will be appended to Scylla binary during startup. This is supported from 4.2.0 Scylla version. + * - sysctls + - array (string) + - sysctls holds the sysctl properties to be applied during initialization given as a list of key=value pairs. Example: fs.aio-max-nr=232323 + * - version + - string + - version is a version tag of Scylla to use. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator: + +.spec.alternator +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +alternator designates this cluster an Alternator cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - insecureDisableAuthorization + - boolean + - insecureDisableAuthorization disables Alternator authorization. If not specified, the authorization is enabled. For backwards compatibility the authorization is disabled when this field is not specified and a manual port is used. + * - insecureEnableHTTP + - boolean + - insecureEnableHTTP enables serving Alternator traffic also on insecure HTTP port. + * - port + - integer + - port is the port number used to bind the Alternator API. Deprecated: `port` is deprecated and may be ignored in the future. Please make sure to avoid using hostNetworking and work with standard Kubernetes concepts like Services. + * - :ref:`servingCertificate` + - object + - servingCertificate references a TLS certificate for serving secure traffic. + * - writeIsolation + - string + - writeIsolation indicates the isolation level. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate: + +.spec.alternator.servingCertificate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +servingCertificate references a TLS certificate for serving secure traffic. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`operatorManagedOptions` + - object + - operatorManagedOptions specifies options for certificates manged by the operator. + * - type + - string + - type determines the source of this certificate. + * - :ref:`userManagedOptions` + - object + - userManagedOptions specifies options for certificates manged by users. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate.operatorManagedOptions: + +.spec.alternator.servingCertificate.operatorManagedOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +operatorManagedOptions specifies options for certificates manged by the operator. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - additionalDNSNames + - array (string) + - additionalDNSNames represents external DNS names that the certificates should be signed for. + * - additionalIPAddresses + - array (string) + - additionalIPAddresses represents external IP addresses that the certificates should be signed for. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.alternator.servingCertificate.userManagedOptions: + +.spec.alternator.servingCertificate.userManagedOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +userManagedOptions specifies options for certificates manged by users. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - secretName + - string + - secretName references a kubernetes.io/tls type secret containing the TLS cert and key. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.backups[]: + +.spec.backups[] +^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]. + * - dc + - array (string) + - dc is a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup. + * - interval + - string + - interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead. + * - keyspace + - array (string) + - keyspace is a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - location + - array (string) + - location is a list of backup locations in the format [:]: ex. s3:my-bucket. The : part is optional and is only needed when different datacenters are being used to upload data to different locations. must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden. The only supported storage at the moment are s3 and gcs. + * - name + - string + - name specifies the name of a task. + * - numRetries + - integer + - numRetries indicates how many times a scheduled task will be retried before failing. + * - rateLimit + - array (string) + - rateLimit is a list of megabytes (MiB) per second rate limits expressed in the format [:]. The : part is optional and only needed when different datacenters need different upload limits. Set to 0 for no limit (default 100). + * - retention + - integer + - retention is the number of backups which are to be stored. + * - snapshotParallel + - array (string) + - snapshotParallel is a list of snapshot parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set, the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. + * - startDate + - string + - startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. + * - timezone + - string + - timezone specifies the timezone of cron field. + * - uploadParallel + - array (string) + - uploadParallel is a list of upload parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter: + +.spec.datacenter +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +datacenter holds a specification of a datacenter. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - name is the name of the scylla datacenter. Used in the cassandra-rackdc.properties file. + * - :ref:`racks` + - array (object) + - racks specify the racks in the datacenter. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[]: + +.spec.datacenter.racks[] +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +RackSpec is the desired state for a Scylla Rack. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`agentResources` + - object + - agentResources specify the resources for the Agent container. + * - :ref:`agentVolumeMounts` + - array (object) + - AgentVolumeMounts to be added to Agent container. + * - members + - integer + - members is the number of Scylla instances in this rack. + * - name + - string + - name is the name of the Scylla Rack. Used in the cassandra-rackdc.properties file. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Scylla is scheduled on. + * - :ref:`resources` + - object + - resources the Scylla container will use. + * - scyllaAgentConfig + - string + - Scylla config map name to customize scylla manager agent + * - scyllaConfig + - string + - Scylla config map name to customize scylla.yaml + * - :ref:`storage` + - object + - storage describes the underlying storage that Scylla will consume. + * - :ref:`volumeMounts` + - array (object) + - VolumeMounts to be added to Scylla container. + * - :ref:`volumes` + - array (object) + - Volumes added to Scylla Pod. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources: + +.spec.datacenter.racks[].agentResources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +agentResources specify the resources for the Agent container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.claims[]: + +.spec.datacenter.racks[].agentResources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.limits: + +.spec.datacenter.racks[].agentResources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentResources.requests: + +.spec.datacenter.racks[].agentResources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].agentVolumeMounts[]: + +.spec.datacenter.racks[].agentVolumeMounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +VolumeMount describes a mounting of a Volume within a container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - mountPath + - string + - Path within the container at which the volume should be mounted. Must not contain ':'. + * - mountPropagation + - string + - mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + * - name + - string + - This must match the Name of a Volume. + * - readOnly + - boolean + - Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + * - subPath + - string + - Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + * - subPathExpr + - string + - Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement: + +.spec.datacenter.racks[].placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Scylla is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity: + +.spec.datacenter.racks[].placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity: + +.spec.datacenter.racks[].placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity: + +.spec.datacenter.racks[].placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].placement.tolerations[]: + +.spec.datacenter.racks[].placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources: + +.spec.datacenter.racks[].resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Scylla container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.claims[]: + +.spec.datacenter.racks[].resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.limits: + +.spec.datacenter.racks[].resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].resources.requests: + +.spec.datacenter.racks[].resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage: + +.spec.datacenter.racks[].storage +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storage describes the underlying storage that Scylla will consume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - capacity + - string + - capacity describes the requested size of each persistent volume. + * - :ref:`metadata` + - object + - metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn't be relied on in any way. + * - storageClassName + - string + - storageClassName is the name of a storageClass to request. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata: + +.spec.datacenter.racks[].storage.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn't be relied on in any way. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata.annotations: + +.spec.datacenter.racks[].storage.metadata.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].storage.metadata.labels: + +.spec.datacenter.racks[].storage.metadata.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumeMounts[]: + +.spec.datacenter.racks[].volumeMounts[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +VolumeMount describes a mounting of a Volume within a container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - mountPath + - string + - Path within the container at which the volume should be mounted. Must not contain ':'. + * - mountPropagation + - string + - mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + * - name + - string + - This must match the Name of a Volume. + * - readOnly + - boolean + - Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + * - subPath + - string + - Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + * - subPathExpr + - string + - Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[]: + +.spec.datacenter.racks[].volumes[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Volume represents a named volume in a pod that may be accessed by any container in the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`awsElasticBlockStore` + - object + - awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + * - :ref:`azureDisk` + - object + - azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + * - :ref:`azureFile` + - object + - azureFile represents an Azure File Service mount on the host and bind mount to the pod. + * - :ref:`cephfs` + - object + - cephFS represents a Ceph FS mount on the host that shares a pod's lifetime + * - :ref:`cinder` + - object + - cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - :ref:`configMap` + - object + - configMap represents a configMap that should populate this volume + * - :ref:`csi` + - object + - csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). + * - :ref:`downwardAPI` + - object + - downwardAPI represents downward API about the pod that should populate this volume + * - :ref:`emptyDir` + - object + - emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + * - :ref:`ephemeral` + - object + - ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. + Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). + Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. + Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. + A pod can use both types of ephemeral volumes and persistent volumes at the same time. + * - :ref:`fc` + - object + - fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + * - :ref:`flexVolume` + - object + - flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + * - :ref:`flocker` + - object + - flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + * - :ref:`gcePersistentDisk` + - object + - gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - :ref:`gitRepo` + - object + - gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. + * - :ref:`glusterfs` + - object + - glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md + * - :ref:`hostPath` + - object + - hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. + * - :ref:`iscsi` + - object + - iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md + * - name + - string + - name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + * - :ref:`nfs` + - object + - nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - :ref:`persistentVolumeClaim` + - object + - persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + * - :ref:`photonPersistentDisk` + - object + - photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + * - :ref:`portworxVolume` + - object + - portworxVolume represents a portworx volume attached and mounted on kubelets host machine + * - :ref:`projected` + - object + - projected items for all in one resources secrets, configmaps, and downward API + * - :ref:`quobyte` + - object + - quobyte represents a Quobyte mount on the host that shares a pod's lifetime + * - :ref:`rbd` + - object + - rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md + * - :ref:`scaleIO` + - object + - scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + * - :ref:`secret` + - object + - secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + * - :ref:`storageos` + - object + - storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + * - :ref:`vsphereVolume` + - object + - vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].awsElasticBlockStore: + +.spec.datacenter.racks[].volumes[].awsElasticBlockStore +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine + * - partition + - integer + - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + * - readOnly + - boolean + - readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + * - volumeID + - string + - volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].azureDisk: + +.spec.datacenter.racks[].volumes[].azureDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cachingMode + - string + - cachingMode is the Host Caching mode: None, Read Only, Read Write. + * - diskName + - string + - diskName is the Name of the data disk in the blob storage + * - diskURI + - string + - diskURI is the URI of data disk in the blob storage + * - fsType + - string + - fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - kind + - string + - kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared + * - readOnly + - boolean + - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].azureFile: + +.spec.datacenter.racks[].volumes[].azureFile +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +azureFile represents an Azure File Service mount on the host and bind mount to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - secretName + - string + - secretName is the name of secret that contains Azure Storage Account Name and Key + * - shareName + - string + - shareName is the azure share Name + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cephfs: + +.spec.datacenter.racks[].volumes[].cephfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cephFS represents a Ceph FS mount on the host that shares a pod's lifetime + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - monitors + - array (string) + - monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - path + - string + - path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / + * - readOnly + - boolean + - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - secretFile + - string + - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - :ref:`secretRef` + - object + - secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + * - user + - string + - user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cephfs.secretRef: + +.spec.datacenter.racks[].volumes[].cephfs.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cinder: + +.spec.datacenter.racks[].volumes[].cinder +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + * - :ref:`secretRef` + - object + - secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. + * - volumeID + - string + - volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].cinder.secretRef: + +.spec.datacenter.racks[].volumes[].cinder.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].configMap: + +.spec.datacenter.racks[].volumes[].configMap +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +configMap represents a configMap that should populate this volume + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional specify whether the ConfigMap or its keys must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].configMap.items[]: + +.spec.datacenter.racks[].volumes[].configMap.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi: + +.spec.datacenter.racks[].volumes[].csi +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - driver + - string + - driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. + * - fsType + - string + - fsType to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. + * - :ref:`nodePublishSecretRef` + - object + - nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + * - readOnly + - boolean + - readOnly specifies a read-only configuration for the volume. Defaults to false (read/write). + * - :ref:`volumeAttributes` + - object + - volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef: + +.spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].csi.volumeAttributes: + +.spec.datacenter.racks[].volumes[].csi.volumeAttributes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI: + +.spec.datacenter.racks[].volumes[].downwardAPI +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +downwardAPI represents downward API about the pod that should populate this volume + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - Items is a list of downward API volume file + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[]: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +DownwardAPIVolumeFile represents information to create the file containing the pod field + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`fieldRef` + - object + - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + * - mode + - integer + - Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + * - :ref:`resourceFieldRef` + - object + - Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - Version of the schema the FieldPath is written in terms of, defaults to "v1". + * - fieldPath + - string + - Path of the field to select in the specified API version. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef: + +.spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - containerName + - string + - Container name: required for volumes, optional for env vars + * - divisor + - + - Specifies the output format of the exposed resources, defaults to "1" + * - resource + - string + - Required: resource to select + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].emptyDir: + +.spec.datacenter.racks[].volumes[].emptyDir +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - medium + - string + - medium represents what type of storage medium should back this directory. The default is "" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + * - sizeLimit + - + - sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral: + +.spec.datacenter.racks[].volumes[].ephemeral +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. + Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). + Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. + Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. + A pod can use both types of ephemeral volumes and persistent volumes at the same time. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`volumeClaimTemplate` + - object + - Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). + An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. + This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. + Required, must not be nil. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). + An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. + This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. + Required, must not be nil. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`metadata` + - object + - May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + * - :ref:`spec` + - object + - The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - accessModes + - array (string) + - accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + * - :ref:`dataSource` + - object + - dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + * - :ref:`dataSourceRef` + - object + - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + * - :ref:`resources` + - object + - resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + * - :ref:`selector` + - object + - selector is a label query over volumes to consider for binding. + * - storageClassName + - string + - storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + * - volumeAttributesClassName + - string + - volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. + * - volumeMode + - string + - volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + * - volumeName + - string + - volumeName is the binding reference to the PersistentVolume backing this claim. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + * - namespace + - string + - Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +selector is a label query over volumes to consider for binding. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels: + +.spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].fc: + +.spec.datacenter.racks[].volumes[].fc +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine + * - lun + - integer + - lun is Optional: FC target lun number + * - readOnly + - boolean + - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - targetWWNs + - array (string) + - targetWWNs is Optional: FC target worldwide names (WWNs) + * - wwids + - array (string) + - wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume: + +.spec.datacenter.racks[].volumes[].flexVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - driver + - string + - driver is the name of the driver to use for this volume. + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + * - :ref:`options` + - object + - options is Optional: this field holds extra command options if any. + * - readOnly + - boolean + - readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume.options: + +.spec.datacenter.racks[].volumes[].flexVolume.options +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +options is Optional: this field holds extra command options if any. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flexVolume.secretRef: + +.spec.datacenter.racks[].volumes[].flexVolume.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].flocker: + +.spec.datacenter.racks[].volumes[].flocker +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - datasetName + - string + - datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated + * - datasetUUID + - string + - datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].gcePersistentDisk: + +.spec.datacenter.racks[].volumes[].gcePersistentDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine + * - partition + - integer + - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - pdName + - string + - pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].gitRepo: + +.spec.datacenter.racks[].volumes[].gitRepo +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - directory + - string + - directory is the target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. + * - repository + - string + - repository is the URL + * - revision + - string + - revision is the commit hash for the specified revision. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].glusterfs: + +.spec.datacenter.racks[].volumes[].glusterfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - endpoints + - string + - endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + * - path + - string + - path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + * - readOnly + - boolean + - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].hostPath: + +.spec.datacenter.racks[].volumes[].hostPath +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - path + - string + - path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + * - type + - string + - type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].iscsi: + +.spec.datacenter.racks[].volumes[].iscsi +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - chapAuthDiscovery + - boolean + - chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication + * - chapAuthSession + - boolean + - chapAuthSession defines whether support iSCSI Session CHAP authentication + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine + * - initiatorName + - string + - initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. + * - iqn + - string + - iqn is the target iSCSI Qualified Name. + * - iscsiInterface + - string + - iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). + * - lun + - integer + - lun represents iSCSI Target Lun number. + * - portals + - array (string) + - portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. + * - :ref:`secretRef` + - object + - secretRef is the CHAP Secret for iSCSI target and initiator authentication + * - targetPortal + - string + - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].iscsi.secretRef: + +.spec.datacenter.racks[].volumes[].iscsi.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is the CHAP Secret for iSCSI target and initiator authentication + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].nfs: + +.spec.datacenter.racks[].volumes[].nfs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - path + - string + - path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - readOnly + - boolean + - readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + * - server + - string + - server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].persistentVolumeClaim: + +.spec.datacenter.racks[].volumes[].persistentVolumeClaim +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - claimName + - string + - claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + * - readOnly + - boolean + - readOnly Will force the ReadOnly setting in VolumeMounts. Default false. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].photonPersistentDisk: + +.spec.datacenter.racks[].volumes[].photonPersistentDisk +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - pdID + - string + - pdID is the ID that identifies Photon Controller persistent disk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].portworxVolume: + +.spec.datacenter.racks[].volumes[].portworxVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +portworxVolume represents a portworx volume attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - volumeID + - string + - volumeID uniquely identifies a Portworx volume + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected: + +.spec.datacenter.racks[].volumes[].projected +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +projected items for all in one resources secrets, configmaps, and downward API + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`sources` + - array (object) + - sources is the list of volume projections + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[]: + +.spec.datacenter.racks[].volumes[].projected.sources[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Projection that may be projected along with other supported volume types + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`clusterTrustBundle` + - object + - ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. + Alpha, gated by the ClusterTrustBundleProjection feature gate. + ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. + Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. + * - :ref:`configMap` + - object + - configMap information about the configMap data to project + * - :ref:`downwardAPI` + - object + - downwardAPI information about the downwardAPI data to project + * - :ref:`secret` + - object + - secret information about the secret data to project + * - :ref:`serviceAccountToken` + - object + - serviceAccountToken is information about the serviceAccountToken data to project + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. + Alpha, gated by the ClusterTrustBundleProjection feature gate. + ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. + Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". + * - name + - string + - Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector. + * - optional + - boolean + - If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles. + * - path + - string + - Relative path from the volume root to write the bundle. + * - signerName + - string + - Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels: + +.spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].configMap: + +.spec.datacenter.racks[].volumes[].projected.sources[].configMap +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +configMap information about the configMap data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional specify whether the ConfigMap or its keys must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +downwardAPI information about the downwardAPI data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - Items is a list of DownwardAPIVolume file + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +DownwardAPIVolumeFile represents information to create the file containing the pod field + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`fieldRef` + - object + - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + * - mode + - integer + - Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + * - :ref:`resourceFieldRef` + - object + - Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - Version of the schema the FieldPath is written in terms of, defaults to "v1". + * - fieldPath + - string + - Path of the field to select in the specified API version. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef: + +.spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - containerName + - string + - Container name: required for volumes, optional for env vars + * - divisor + - + - Specifies the output format of the exposed resources, defaults to "1" + * - resource + - string + - Required: resource to select + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].secret: + +.spec.datacenter.racks[].volumes[].projected.sources[].secret +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secret information about the secret data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`items` + - array (object) + - items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + * - optional + - boolean + - optional field specify whether the Secret or its key must be defined + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]: + +.spec.datacenter.racks[].volumes[].projected.sources[].secret.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken: + +.spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +serviceAccountToken is information about the serviceAccountToken data to project + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - audience + - string + - audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. + * - expirationSeconds + - integer + - expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. + * - path + - string + - path is the path relative to the mount point of the file to project the token into. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].quobyte: + +.spec.datacenter.racks[].volumes[].quobyte +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +quobyte represents a Quobyte mount on the host that shares a pod's lifetime + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - group + - string + - group to map volume access to Default is no group + * - readOnly + - boolean + - readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. + * - registry + - string + - registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes + * - tenant + - string + - tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin + * - user + - string + - user to map volume access to Defaults to serivceaccount user + * - volume + - string + - volume is a string that references an already created Quobyte volume by name. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].rbd: + +.spec.datacenter.racks[].volumes[].rbd +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine + * - image + - string + - image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - keyring + - string + - keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - monitors + - array (string) + - monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - pool + - string + - pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - readOnly + - boolean + - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - :ref:`secretRef` + - object + - secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + * - user + - string + - user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].rbd.secretRef: + +.spec.datacenter.racks[].volumes[].rbd.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].scaleIO: + +.spec.datacenter.racks[].volumes[].scaleIO +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". + * - gateway + - string + - gateway is the host address of the ScaleIO API Gateway. + * - protectionDomain + - string + - protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. + * - readOnly + - boolean + - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + * - sslEnabled + - boolean + - sslEnabled Flag enable/disable SSL communication with Gateway, default false + * - storageMode + - string + - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. + * - storagePool + - string + - storagePool is the ScaleIO Storage Pool associated with the protection domain. + * - system + - string + - system is the name of the storage system as configured in ScaleIO. + * - volumeName + - string + - volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].scaleIO.secretRef: + +.spec.datacenter.racks[].volumes[].scaleIO.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].secret: + +.spec.datacenter.racks[].volumes[].secret +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - defaultMode + - integer + - defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - :ref:`items` + - array (object) + - items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + * - optional + - boolean + - optional field specify whether the Secret or its keys must be defined + * - secretName + - string + - secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].secret.items[]: + +.spec.datacenter.racks[].volumes[].secret.items[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Maps a string key to a path within a volume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the key to project. + * - mode + - integer + - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + * - path + - string + - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].storageos: + +.spec.datacenter.racks[].volumes[].storageos +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - readOnly + - boolean + - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + * - :ref:`secretRef` + - object + - secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + * - volumeName + - string + - volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. + * - volumeNamespace + - string + - volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].storageos.secretRef: + +.spec.datacenter.racks[].volumes[].storageos.secretRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.datacenter.racks[].volumes[].vsphereVolume: + +.spec.datacenter.racks[].volumes[].vsphereVolume +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - fsType + - string + - fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + * - storagePolicyID + - string + - storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + * - storagePolicyName + - string + - storagePolicyName is the storage Policy Based Management (SPBM) profile name. + * - volumePath + - string + - volumePath is the path that identifies vSphere volume vmdk + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions: + +.spec.exposeOptions +^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing ScyllaCluster services. This field is immutable. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`broadcastOptions` + - object + - BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients. + * - :ref:`cql` + - object + - cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`nodeService` + - object + - nodeService controls properties of Service dedicated for each ScyllaCluster node. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions: + +.spec.exposeOptions.broadcastOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`clients` + - object + - clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config. + * - :ref:`nodes` + - object + - nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.clients: + +.spec.exposeOptions.broadcastOptions.clients +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podIP` + - object + - podIP holds options related to Pod IP address. + * - type + - string + - type of the address that is broadcasted. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.clients.podIP: + +.spec.exposeOptions.broadcastOptions.clients.podIP +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podIP holds options related to Pod IP address. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - source + - string + - sourceType specifies source of the Pod IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.nodes: + +.spec.exposeOptions.broadcastOptions.nodes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podIP` + - object + - podIP holds options related to Pod IP address. + * - type + - string + - type of the address that is broadcasted. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.broadcastOptions.nodes.podIP: + +.spec.exposeOptions.broadcastOptions.nodes.podIP +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podIP holds options related to Pod IP address. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - source + - string + - sourceType specifies source of the Pod IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql: + +.spec.exposeOptions.cql +^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress: + +.spec.exposeOptions.cql.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. Unless disabled, there is an Ingress objects created for every Scylla node. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress.annotations: + +.spec.exposeOptions.cql.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.cql.ingress.labels: + +.spec.exposeOptions.cql.ingress.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService: + +.spec.exposeOptions.nodeService +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeService controls properties of Service dedicated for each ScyllaCluster node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - allocateLoadBalancerNodePorts + - boolean + - allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - externalTrafficPolicy + - string + - externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - internalTrafficPolicy + - string + - internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + * - loadBalancerClass + - string + - loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field. + * - type + - string + - type is the Kubernetes Service type. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService.annotations: + +.spec.exposeOptions.nodeService.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.exposeOptions.nodeService.labels: + +.spec.exposeOptions.nodeService.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.genericUpgrade: + +.spec.genericUpgrade +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +genericUpgrade allows to configure behavior of generic upgrade logic. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - failureStrategy + - string + - failureStrategy specifies which logic is executed when upgrade failure happens. Currently only Retry is supported. + * - pollInterval + - string + - pollInterval specifies how often upgrade logic polls on state updates. Increasing this value should lower number of requests sent to apiserver, but it may affect overall time spent during upgrade. DEPRECATED. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.imagePullSecrets[]: + +.spec.imagePullSecrets[] +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.network: + +.spec.network +^^^^^^^^^^^^^ + +Description +""""""""""" +network holds the networking config. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - dnsPolicy + - string + - dnsPolicy defines how a pod's DNS will be configured. + * - hostNetworking + - boolean + - hostNetworking determines if scylla uses the host's network namespace. Setting this option avoids going through Kubernetes SDN and exposes scylla on node's IP. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata: + +.spec.podMetadata +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podMetadata controls shared metadata for all pods created based on this spec. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations is a custom key value map that gets merged with managed object annotations. + * - :ref:`labels` + - object + - labels is a custom key value map that gets merged with managed object labels. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata.annotations: + +.spec.podMetadata.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations is a custom key value map that gets merged with managed object annotations. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.podMetadata.labels: + +.spec.podMetadata.labels +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +labels is a custom key value map that gets merged with managed object labels. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.readinessGates[]: + +.spec.readinessGates[] +^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +PodReadinessGate contains the reference to a pod condition + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - conditionType + - string + - ConditionType refers to a condition in the pod's condition list with matching type. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.spec.repairs[]: + +.spec.repairs[] +^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]. + * - dc + - array (string) + - dc is a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from backup. + * - failFast + - boolean + - failFast indicates if a repair should be stopped on first error. + * - host + - string + - host specifies a host to repair. If empty, all hosts are repaired. + * - intensity + - string + - intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs). Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs. Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume. For Scylla clusters that *do not support row-level repair*, intensity can be a decimal between (0,1). In that case it specifies percent of shards that can be repaired in parallel on a repair master node. For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1. + * - interval + - string + - interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead. + * - keyspace + - array (string) + - keyspace is a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - name + - string + - name specifies the name of a task. + * - numRetries + - integer + - numRetries indicates how many times a scheduled task will be retried before failing. + * - parallel + - integer + - parallel is the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used. The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes. The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2. + * - smallTableThreshold + - string + - smallTableThreshold enable small table optimization for tables of size lower than given threshold. Supported units [B, MiB, GiB, TiB]. + * - startDate + - string + - startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. + * - timezone + - string + - timezone specifies the timezone of cron field. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status is the current status of this scylla cluster. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - availableMembers + - integer + - availableMembers is the number of ScyllaDB members in all racks that are available. + * - :ref:`backups` + - array (object) + - backups reflects status of backup tasks. + * - :ref:`conditions` + - array (object) + - conditions hold conditions describing ScyllaCluster state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False. + * - managerId + - string + - managerId contains ID under which cluster was registered in Scylla Manager. + * - members + - integer + - members is the number of ScyllaDB members in all racks. + * - observedGeneration + - integer + - observedGeneration is the most recent generation observed for this ScyllaCluster. It corresponds to the ScyllaCluster's generation, which is updated on mutation by the API Server. + * - rackCount + - integer + - rackCount is the number of ScyllaDB racks in this cluster. + * - :ref:`racks` + - object + - racks reflect status of cluster racks. + * - readyMembers + - integer + - readyMembers is the number of ScyllaDB members in all racks that are ready. + * - :ref:`repairs` + - array (object) + - repairs reflects status of repair tasks. + * - :ref:`upgrade` + - object + - upgrade reflects state of ongoing upgrade procedure. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.backups[]: + +.status.backups[] +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron reflects the task schedule as a cron expression. + * - dc + - array (string) + - dc reflects a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup. + * - error + - string + - error holds the task error, if any. + * - id + - string + - id reflects identification number of the repair task. + * - interval + - string + - interval reflects a task schedule interval. + * - keyspace + - array (string) + - keyspace reflects a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - location + - array (string) + - location reflects a list of backup locations in the format [:]: ex. s3:my-bucket. + * - name + - string + - name reflects the name of a task. + * - numRetries + - integer + - numRetries reflects how many times a scheduled task will be retried before failing. + * - rateLimit + - array (string) + - rateLimit reflects a list of megabytes (MiB) per second rate limits expressed in the format [:]. + * - retention + - integer + - retention reflects the number of backups which are to be stored. + * - snapshotParallel + - array (string) + - snapshotParallel reflects a list of snapshot parallelism limits in the format [:]. + * - startDate + - string + - startDate reflects the task start date expressed in the RFC3339 format + * - timezone + - string + - timezone reflects the timezone of cron field. + * - uploadParallel + - array (string) + - uploadParallel reflects a list of upload parallelism limits in the format [:]. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + // other fields } + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + * - message + - string + - message is a human readable message indicating details about the transition. This may be an empty string. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + * - status + - string + - status of the condition, one of True, False, Unknown. + * - type + - string + - type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.racks: + +.status.racks +^^^^^^^^^^^^^ + +Description +""""""""""" +racks reflect status of cluster racks. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.repairs[]: + +.status.repairs[] +^^^^^^^^^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - cron + - string + - cron reflects the task schedule as a cron expression. + * - dc + - array (string) + - dc reflects a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from repair. + * - error + - string + - error holds the task error, if any. + * - failFast + - boolean + - failFast indicates if a repair should be stopped on first error. + * - host + - string + - host reflects a host to repair. + * - id + - string + - id reflects identification number of the repair task. + * - intensity + - string + - intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. + * - interval + - string + - interval reflects a task schedule interval. + * - keyspace + - array (string) + - keyspace reflects a list of keyspace/tables glob patterns, e.g. 'keyspace,!keyspace.table_prefix_*' used to include or exclude keyspaces from repair. + * - name + - string + - name reflects the name of a task. + * - numRetries + - integer + - numRetries reflects how many times a scheduled task will be retried before failing. + * - parallel + - integer + - parallel reflects the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). + * - smallTableThreshold + - string + - smallTableThreshold reflects whether small table optimization for tables, of size lower than given threshold, are enabled. + * - startDate + - string + - startDate reflects the task start date expressed in the RFC3339 format + * - timezone + - string + - timezone reflects the timezone of cron field. + +.. _api-scylla.scylladb.com-scyllaclusters-v1-.status.upgrade: + +.status.upgrade +^^^^^^^^^^^^^^^ + +Description +""""""""""" +upgrade reflects state of ongoing upgrade procedure. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - currentNode + - string + - currentNode node under upgrade. DEPRECATED. + * - currentRack + - string + - currentRack rack under upgrade. DEPRECATED. + * - dataSnapshotTag + - string + - dataSnapshotTag is the snapshot tag of data keyspaces. + * - fromVersion + - string + - fromVersion reflects from which version ScyllaCluster is being upgraded. + * - state + - string + - state reflects current upgrade state. + * - systemSnapshotTag + - string + - systemSnapshotTag is the snapshot tag of system keyspaces. + * - toVersion + - string + - toVersion reflects to which version ScyllaCluster is being upgraded. diff --git a/v1.14/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt b/v1.14/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt new file mode 100644 index 00000000000..8116bbb2bf7 --- /dev/null +++ b/v1.14/_sources/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst.txt @@ -0,0 +1,3441 @@ +ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1) +================================================= + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: ScyllaDBMonitoring +| **PluralName**: scylladbmonitorings +| **SingularName**: scylladbmonitoring +| **Scope**: Namespaced +| **ListKind**: ScyllaDBMonitoringList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaDBMonitoring defines a monitoring instance for ScyllaDB clusters. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of this ScyllaDBMonitoring. + * - :ref:`status` + - object + - status is the current status of this ScyllaDBMonitoring. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of this ScyllaDBMonitoring. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`components` + - object + - components hold additional config for the monitoring components in use. + * - :ref:`endpointsSelector` + - object + - endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors. + * - type + - string + - type determines the platform type of the monitoring setup. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components: + +.spec.components +^^^^^^^^^^^^^^^^ + +Description +""""""""""" +components hold additional config for the monitoring components in use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`grafana` + - object + - grafana holds configuration for the grafana instance, if any. + * - :ref:`prometheus` + - object + - prometheus holds configuration for the prometheus instance, if any. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana: + +.spec.components.grafana +^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +grafana holds configuration for the grafana instance, if any. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`authentication` + - object + - authentication hold the authentication options for accessing Grafana. + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing Grafana UI. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Grafana is scheduled on. + * - :ref:`resources` + - object + - resources the Grafana container will use. + * - servingCertSecretName + - string + - servingCertSecretName is the name of the secret holding a serving cert-key pair. If not specified, the operator will create a self-signed CA that creates the default serving cert-key pair. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.authentication: + +.spec.components.grafana.authentication +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +authentication hold the authentication options for accessing Grafana. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - insecureEnableAnonymousAccess + - boolean + - insecureEnableAnonymousAccess allows access to Grafana without authentication. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions: + +.spec.components.grafana.exposeOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing Grafana UI. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`webInterface` + - object + - webInterface specifies expose options for the user web interface. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface: + +.spec.components.grafana.exposeOptions.webInterface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +webInterface specifies expose options for the user web interface. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface.ingress: + +.spec.components.grafana.exposeOptions.webInterface.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations specifies custom annotations merged into every Ingress object. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this ingress is reachable by. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.exposeOptions.webInterface.ingress.annotations: + +.spec.components.grafana.exposeOptions.webInterface.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations specifies custom annotations merged into every Ingress object. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement: + +.spec.components.grafana.placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Grafana is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity: + +.spec.components.grafana.placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity: + +.spec.components.grafana.placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity: + +.spec.components.grafana.placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.placement.tolerations[]: + +.spec.components.grafana.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources: + +.spec.components.grafana.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Grafana container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.claims[]: + +.spec.components.grafana.resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.limits: + +.spec.components.grafana.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.grafana.resources.requests: + +.spec.components.grafana.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus: + +.spec.components.prometheus +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +prometheus holds configuration for the prometheus instance, if any. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`exposeOptions` + - object + - exposeOptions specifies options for exposing Prometheus UI. + * - :ref:`placement` + - object + - placement describes restrictions for the nodes Prometheus is scheduled on. + * - :ref:`resources` + - object + - resources the Prometheus container will use. + * - :ref:`storage` + - object + - storage describes the underlying storage that Prometheus will consume. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions: + +.spec.components.prometheus.exposeOptions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +exposeOptions specifies options for exposing Prometheus UI. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`webInterface` + - object + - webInterface specifies expose options for the user web interface. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface: + +.spec.components.prometheus.exposeOptions.webInterface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +webInterface specifies expose options for the user web interface. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`ingress` + - object + - ingress is an Ingress configuration options. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface.ingress: + +.spec.components.prometheus.exposeOptions.webInterface.ingress +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ingress is an Ingress configuration options. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - annotations specifies custom annotations merged into every Ingress object. + * - disabled + - boolean + - disabled controls if Ingress object creation is disabled. + * - dnsDomains + - array (string) + - dnsDomains is a list of DNS domains this ingress is reachable by. + * - ingressClassName + - string + - ingressClassName specifies Ingress class name. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.exposeOptions.webInterface.ingress.annotations: + +.spec.components.prometheus.exposeOptions.webInterface.ingress.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +annotations specifies custom annotations merged into every Ingress object. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement: + +.spec.components.prometheus.placement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +placement describes restrictions for the nodes Prometheus is scheduled on. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeAffinity` + - object + - nodeAffinity describes node affinity scheduling rules for the pod. + * - :ref:`podAffinity` + - object + - podAffinity describes pod affinity scheduling rules. + * - :ref:`podAntiAffinity` + - object + - podAntiAffinity describes pod anti-affinity scheduling rules. + * - :ref:`tolerations` + - array (object) + - tolerations allow the pod to tolerate any taint that matches the triple using the matching operator. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity: + +.spec.components.prometheus.placement.nodeAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +nodeAffinity describes node affinity scheduling rules for the pod. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - object + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preference` + - object + - A node selector term, associated with the corresponding weight. + * - weight + - integer + - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]: + +.spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`nodeSelectorTerms` + - array (object) + - Required. A list of node selector terms. The terms are ORed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - A list of node selector requirements by node's labels. + * - :ref:`matchFields` + - array (object) + - A list of node selector requirements by node's fields. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]: + +.spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - The label key that the selector applies to. + * - operator + - string + - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + * - values + - array (string) + - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity: + +.spec.components.prometheus.placement.podAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAffinity describes pod affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity: + +.spec.components.prometheus.placement.podAntiAffinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +podAntiAffinity describes pod anti-affinity scheduling rules. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`preferredDuringSchedulingIgnoredDuringExecution` + - array (object) + - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + * - :ref:`requiredDuringSchedulingIgnoredDuringExecution` + - array (object) + - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`podAffinityTerm` + - object + - Required. A pod affinity term, associated with the corresponding weight. + * - weight + - integer + - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Required. A pod affinity term, associated with the corresponding weight. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`labelSelector` + - object + - A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * - matchLabelKeys + - array (string) + - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - mismatchLabelKeys + - array (string) + - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * - :ref:`namespaceSelector` + - object + - A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + * - namespaces + - array (string) + - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + * - topologyKey + - string + - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels: + +.spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.placement.tolerations[]: + +.spec.components.prometheus.placement.tolerations[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - effect + - string + - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + * - key + - string + - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + * - operator + - string + - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + * - tolerationSeconds + - integer + - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + * - value + - string + - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources: + +.spec.components.prometheus.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources the Prometheus container will use. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`claims` + - array (object) + - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + This field is immutable. It can only be set for containers. + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.claims[]: + +.spec.components.prometheus.resources.claims[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +ResourceClaim references one entry in PodSpec.ResourceClaims. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - name + - string + - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.limits: + +.spec.components.prometheus.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.resources.requests: + +.spec.components.prometheus.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage: + +.spec.components.prometheus.storage +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +storage describes the underlying storage that Prometheus will consume. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`annotations` + - object + - Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations + * - :ref:`labels` + - object + - Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels + * - :ref:`volumeClaimTemplate` + - object + - volumeClaimTemplates is a PVC template defining storage to be used by Prometheus. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.annotations: + +.spec.components.prometheus.storage.annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.labels: + +.spec.components.prometheus.storage.labels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate: + +.spec.components.prometheus.storage.volumeClaimTemplate +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +volumeClaimTemplates is a PVC template defining storage to be used by Prometheus. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`metadata` + - object + - May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + * - :ref:`spec` + - object + - The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.metadata: + +.spec.components.prometheus.storage.volumeClaimTemplate.metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - accessModes + - array (string) + - accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + * - :ref:`dataSource` + - object + - dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + * - :ref:`dataSourceRef` + - object + - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + * - :ref:`resources` + - object + - resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + * - :ref:`selector` + - object + - selector is a label query over volumes to consider for binding. + * - storageClassName + - string + - storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + * - volumeAttributesClassName + - string + - volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. + * - volumeMode + - string + - volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + * - volumeName + - string + - volumeName is the binding reference to the PersistentVolume backing this claim. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiGroup + - string + - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + * - kind + - string + - Kind is the type of resource being referenced + * - name + - string + - Name is the name of resource being referenced + * - namespace + - string + - Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`limits` + - object + - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * - :ref:`requests` + - object + - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +selector is a label query over volumes to consider for binding. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels: + +.spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector: + +.spec.endpointsSelector +^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`matchExpressions` + - array (object) + - matchExpressions is a list of label selector requirements. The requirements are ANDed. + * - :ref:`matchLabels` + - object + - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector.matchExpressions[]: + +.spec.endpointsSelector.matchExpressions[] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - key + - string + - key is the label key that the selector applies to. + * - operator + - string + - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + * - values + - array (string) + - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.spec.endpointsSelector.matchLabels: + +.spec.endpointsSelector.matchLabels +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status is the current status of this ScyllaDBMonitoring. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - :ref:`conditions` + - array (object) + - conditions hold conditions describing ScyllaDBMonitoring state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False. + * - observedGeneration + - integer + - observedGeneration is the most recent generation observed for this ScyllaDBMonitoring. It corresponds to the ScyllaDBMonitoring's generation, which is updated on mutation by the API Server. + +.. _api-scylla.scylladb.com-scylladbmonitorings-v1alpha1-.status.conditions[]: + +.status.conditions[] +^^^^^^^^^^^^^^^^^^^^ + +Description +""""""""""" +Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + // other fields } + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - lastTransitionTime + - string + - lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + * - message + - string + - message is a human readable message indicating details about the transition. This may be an empty string. + * - observedGeneration + - integer + - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + * - reason + - string + - reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + * - status + - string + - status of the condition, one of True, False, Unknown. + * - type + - string + - type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) diff --git a/v1.14/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt b/v1.14/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt new file mode 100644 index 00000000000..fee8be92d66 --- /dev/null +++ b/v1.14/_sources/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst.txt @@ -0,0 +1,126 @@ +ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1) +=================================================== + +| **APIVersion**: scylla.scylladb.com/v1alpha1 +| **Kind**: ScyllaOperatorConfig +| **PluralName**: scyllaoperatorconfigs +| **SingularName**: scyllaoperatorconfig +| **Scope**: Cluster +| **ListKind**: ScyllaOperatorConfigList +| **Served**: true +| **Storage**: true + +Description +----------- +ScyllaOperatorConfig describes the Scylla Operator configuration. + +Specification +------------- + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - apiVersion + - string + - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * - kind + - string + - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * - :ref:`metadata` + - object + - + * - :ref:`spec` + - object + - spec defines the desired state of the operator. + * - :ref:`status` + - object + - status defines the observed state of the operator. + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.metadata: + +.metadata +^^^^^^^^^ + +Description +""""""""""" + + +Type +"""" +object + + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.spec: + +.spec +^^^^^ + +Description +""""""""""" +spec defines the desired state of the operator. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - scyllaUtilsImage + - string + - scyllaUtilsImage is a ScyllaDB image used for running ScyllaDB utilities. + * - unsupportedBashToolsImageOverride + - string + - unsupportedBashToolsImageOverride allows to adjust a generic Bash image with extra tools used by the operator for auxiliary purposes. Setting this field renders your cluster unsupported. Use at your own risk. + * - unsupportedGrafanaImageOverride + - string + - unsupportedGrafanaImageOverride allows to adjust Grafana image used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk. + * - unsupportedPrometheusVersionOverride + - string + - unsupportedPrometheusVersionOverride allows to adjust Prometheus version used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk. + +.. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.status: + +.status +^^^^^^^ + +Description +""""""""""" +status defines the observed state of the operator. + +Type +"""" +object + + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - bashToolsImage + - string + - bashToolsImage is a generic Bash image with extra tools used by the operator for auxiliary purposes. + * - grafanaImage + - string + - grafanaImage is the image used by the operator to create a Grafana instance. + * - observedGeneration + - integer + - observedGeneration is the most recent generation observed for this ScyllaOperatorConfig. It corresponds to the ScyllaOperatorConfig's generation, which is updated on mutation by the API Server. + * - prometheusVersion + - string + - prometheusVersion is the Prometheus version used by the operator to create a Prometheus instance. + * - scyllaDBUtilsImage + - string + - scyllaDBUtilsImage is the ScyllaDB image used for running ScyllaDB utilities. diff --git a/v1.14/_sources/api-reference/index.rst.txt b/v1.14/_sources/api-reference/index.rst.txt new file mode 100644 index 00000000000..85f7201ce76 --- /dev/null +++ b/v1.14/_sources/api-reference/index.rst.txt @@ -0,0 +1,13 @@ +API Reference +============= + +All APIs provided by Scylla Operator are defined using CRDs and adhere to Kubernetes API standards. You can find out how Kubernetes style REST APIs work on ``_ and ``_. + +API Groups and Kinds +-------------------- + +.. toctree:: + :maxdepth: 2 + :glob: + + groups/* diff --git a/v1.14/_sources/clients/alternator.md.txt b/v1.14/_sources/clients/alternator.md.txt new file mode 100644 index 00000000000..e6651c4c26f --- /dev/null +++ b/v1.14/_sources/clients/alternator.md.txt @@ -0,0 +1,94 @@ +# Using Alternator (DynamoDB) + +Alternator is a DynamoDB compatible API provided by ScyllaDB. +You can enable it on your ScyllaClusters by adding this section: +```yaml +spec: + alternator: {} +``` +While this is enough to turn it on, there are more options available. +Please refer to our [API documentation]() for details. + +:::{note} +Contrary to CQL clients, Alternator clients don't need to connect to every ScyllaDB node directly, nor discover the ScyllaDB node IP addresses. +Alternator protocol is based on HTTP and you can also expose the service "manually" with other networking concepts like Ingresses. +::: + +## Credentials + +Scylla Operator enables Alternator authorization by default. +Here is a quick example of how to get the token for accessing Alternator API. +To find out more, please refer to [ScyllaDB Alternator documentation](https://opensource.docs.scylladb.com/stable/alternator/compatibility.html#authorization). + +:::{caution} +The `salted_hash` is only present if password authentication for CQL is set up. + +Always make sure your clusters are configured to use Authentication and Authorization. +::: + +:::{tip} +You can find a quick example that enables Authentication and Authorization [here](./cql.md#authentication-and-authorization). +::: + +```bash +kubectl exec -it service/-client -c scylla -- cqlsh --user \ +-e "SELECT salted_hash FROM system_auth.roles WHERE role = ''" +``` + +## AWS CLI + +This paragraph shows how to use `aws dynamodb` cli to remotely connect to ScyllaDB Alternator API. + +:::{note} +This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured networking options differently, +or are using additional networking concepts like Ingresses, this address will need to be adjusted. +::: +:::{caution} +At the time of writing this document `kubectl exec -i` echoes passwords into the terminal. +It can be avoided by manually running `kubectl exec -it` and copying the output into a file / variable. +Because using `kubectl exec` with `-t` option merges standard and error outputs, we can't use it in the scripts bellow. + +See for more details. +::: + +```bash +SCYLLACLUSTER_NAME=scylladb +CQL_USER=cassandra +``` +```bash +SCYLLADB_EP="$( kubectl get "service/${SCYLLACLUSTER_NAME}-client" -o='jsonpath={.spec.clusterIP}' )" +AWS_ENDPOINT_URL_DYNAMODB="https://${SCYLLADB_EP}:8043" +export AWS_ENDPOINT_URL_DYNAMODB + +AWS_ACCESS_KEY_ID="${CQL_USER}" +export AWS_ACCESS_KEY_ID +AWS_SECRET_ACCESS_KEY="$( kubectl exec -i "service/${SCYLLACLUSTER_NAME}-client" -c scylla -- cqlsh --user ${CQL_USER} --no-color \ +-e "SELECT salted_hash from system_auth.roles WHERE role = '${AWS_ACCESS_KEY_ID}';" \ +| sed -e 's/\r//g' | sed -e '4q;d' | sed -E -e 's/^\s+//' )" +export AWS_SECRET_ACCESS_KEY + +AWS_CA_BUNDLE="$( mktemp )" +export AWS_CA_BUNDLE +kubectl get "configmap/${SCYLLACLUSTER_NAME}-alternator-local-serving-ca" --template='{{ index .data "ca-bundle.crt" }}' > "${AWS_CA_BUNDLE}" +``` + +Now we can use `aws dynamodb` cli without modifications. + +```bash +aws dynamodb create-table --table-name MusicCollection --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 +``` +```text +TABLEDESCRIPTION 2024-03-01T16:35:41+01:00 5c8aae70-d7e1-11ee-a99e-6f31aaf1d6d3 MusicCollection ACTIVE +ATTRIBUTEDEFINITIONS Artist S +ATTRIBUTEDEFINITIONS SongTitle S +KEYSCHEMA Artist HASH +KEYSCHEMA SongTitle RANGE +PROVISIONEDTHROUGHPUT 5 5 +``` + +```bash +aws dynamodb list-tables +``` +```text +TABLENAMES MusicCollection +``` diff --git a/v1.14/_sources/clients/cql.md.txt b/v1.14/_sources/clients/cql.md.txt new file mode 100644 index 00000000000..bd7e05dff93 --- /dev/null +++ b/v1.14/_sources/clients/cql.md.txt @@ -0,0 +1,129 @@ +# Using CQL + +`cqlsh` is the CQL shell for ScyllaDB. You can learn more about it in [ScyllaDB documentation](https://opensource.docs.scylladb.com/stable/cql/cqlsh.html). + +## Authentication and Authorization + +For security reasons, you should always enable Authentication and Authorization. +At this point, this needs to be done manually in ScyllaDB Config. +You can find an example configuration bellow: + +:::{code-block} yaml + :emphasize-lines: 7-8 + +apiVersion: v1 +kind: ConfigMap +metadata: + name: scylla-config +data: + scylla.yaml: | + authenticator: PasswordAuthenticator + authorizer: CassandraAuthorizer +::: + +## Embedded cqlsh (aka localhost) + +Every ScyllaDB node has an integrated `cqlsh` available. Here is an example of how it can be used: + +::::{tab-set} +:::{tab-item} Any ScyllaDB Node +```bash +kubectl exec -it service/-client -c scylla -- cqlsh -u +``` +::: +:::{tab-item} Specific ScyllaDB Node +```bash +kubectl exec -it pod/-- -c scylla -- cqlsh -u +``` +::: +:::: +```text +Password: +Connected to scylla at 127.0.0.1:9042 +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4] +Use HELP for help. +@cqlsh> +``` + +## Remote cqlsh + +This paragraph shows how to use `cqlsh` to remotely connect to a ScyllaDB node. +It is strongly recommended to access CQL over TLS connections on port `9142` instead of unencrypted `9042`. +Note that Scylla Operator sets up TLS certificates by default and makes them accessible in the Kubernetes API, +so the encrypted port `9142` works by default. + +:::{caution} +In future releases the unencrypted port `9042` will be disabled by default, unless explicitly opted-in. +::: + +:::{caution} +To avoid unnecessary complexity, the following example simplifies how the credentials file is created. +Please create the credentials file with your text editor and avoid your password leaking into your bash history or environment variables. +To store the configuration permanently, please adjust `SCYLLADB_CONFIG` variable to an empty folder of your choice. +::: + +:::{note} +This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured the networking options differently, +you may need to adjust this endpoint. Please refer to [discovery documentation page](./discovery.md). +::: + +```bash +SCYLLADB_CONFIG="$( mktemp -d )" + +cat < "${SCYLLADB_CONFIG}/credentials" +[PlainTextAuthProvider] +username = +password = +EOF +chmod 600 "${SCYLLADB_CONFIG}/credentials" + +SCYLLADB_DISCOVERY_EP="$( kubectl get service/-client -o='jsonpath={.spec.clusterIP}' )" +kubectl get configmap/-local-serving-ca -o='jsonpath={.data.ca-bundle\.crt}' > "${SCYLLADB_CONFIG}/serving-ca-bundle.crt" +kubectl get secret/-local-user-admin -o='jsonpath={.data.tls\.crt}' | base64 -d > "${SCYLLADB_CONFIG}/admin.crt" +kubectl get secret/-local-user-admin -o='jsonpath={.data.tls\.key}' | base64 -d > "${SCYLLADB_CONFIG}/admin.key" + +cat < "${SCYLLADB_CONFIG}/cqlshrc" +[authentication] +credentials = ${SCYLLADB_CONFIG}/credentials +[connection] +hostname = ${SCYLLADB_DISCOVERY_EP} +port = 9142 +ssl=true +factory = cqlshlib.ssl.ssl_transport_factory +[ssl] +validate=true +certfile=${SCYLLADB_CONFIG}/serving-ca-bundle.crt +usercert=${SCYLLADB_CONFIG}/admin.crt +userkey=${SCYLLADB_CONFIG}/admin.key +EOF +``` + +::::{tab-set} +:::{tab-item} Native +```bash +cqlsh --cqlshrc="${SCYLLADB_CONFIG}/cqlshrc" +``` +::: +:::{tab-item} Podman +```bash +podman run -it --rm --entrypoint=cqlsh \ +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro,Z" \ +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro,Z" \ +docker.io/scylladb/scylla:5.4.3 +``` +::: +:::{tab-item} Docker +```bash +docker run -it --rm --entrypoint=cqlsh \ +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro" \ +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro" \ +docker.io/scylladb/scylla:5.4.3 +``` +::: +:::: +```text +Connected to scylla at :9142 +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4] +Use HELP for help. +@cqlsh> +``` diff --git a/v1.14/_sources/clients/discovery.md.txt b/v1.14/_sources/clients/discovery.md.txt new file mode 100644 index 00000000000..b823a01cd04 --- /dev/null +++ b/v1.14/_sources/clients/discovery.md.txt @@ -0,0 +1,72 @@ +# Discovering ScyllaDB Nodes + +## Preface + +Outside the Kubernetes ecosystem, ScyllaDB nodes are usually set up on static IP addresses +and a fixed subset of them is configured as the initial contact points for ScyllaDB clients. +This has several disadvantages because this particular subset of nodes can be down at the time the client is (re)started, +or the nodes can be replaced and change their IP addresses. +The latter can be mitigated by using DNS and updating the records. + +Scylla Operator allows setting up ScyllaDB in several network configurations, some of which are based on ephemeral IPs. +This makes solving the above-mentioned issues more pressing. + +## ScyllaDB Discovery Endpoint + +For every ScyllaCluster, the operator will set up a Kubernetes Service (an internal load balancer) selecting all ScyllaDB nodes +and the internal Kubernetes controllers make sure to continuously update its endpoints with a subset of ScyllaDB nodes that are ready. +Because of that, you can always talk to ScyllaDB through this endpoint, as long as there are nodes to back it. +In case you are in the same Kubernetes cluster you can also use internal DNS for this service. + +Clients can use this endpoint for the initial connection to reach one of the ScyllaDB nodes that are ready +and from there the drivers will automatically discover the per-node IP address for every ScyllaDB node that's part of this cluster. + +This service is called `-client` and in its default configuration it uses ClusterIP which is virtual and local to the Kubernetes cluster. +It can be configured to be backed by an external load balancer, be exposed through an Ingress, an additional hop or in other ways. +Depending on how you have configured the networking, use the appropriate IP address or DNS name for your client. + +Here is an example of how the unmodified service looks like: + +```bash +kubectl get scyllacluster/scylla service/scylla-client +``` +``` +NAME READY MEMBERS RACKS AVAILABLE PROGRESSING DEGRADED AGE +scyllacluster.scylla.scylladb.com/scylla 1 1 1 True True True 10d + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-client ClusterIP 10.102.44.43 7000/TCP,7001/TCP,9042/TCP,9142/TCP,19042/TCP,19142/TCP,7199/TCP,10001/TCP,9180/TCP,5090/TCP,9100/TCP,9160/TCP,8043/TCP 10d +``` + +You can get only the ClusterIP using +```bash +kubectl get service/scylla-client -o='jsonpath={.spec.clusterIP}' +``` +or use its DNS name (`scylla-client..svc`). + +### Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary + +In case you are connecting from outside the Kubernetes cluster and using Pod IPs as your exposure type, you can expose just the `-client` service using an internal load balancer. +Having a stable contact point is especially important when using ephemeral Pod IPs. +Services configure internal load balancer using provider-specific annotations, so this may differ with your provider. + +:::{tip} +To learn more about exposing ScyllaClusters, visit our dedicated documentation [page](../exposing.md). +::: + +::::{tab-set} +:::{tab-item} GKE +```bash +kubectl patch service/-client -p '{"metadata": {"annotations": {"networking.gke.io/load-balancer-type": "Internal"}}, "spec": {"type": "LoadBalancer"}}' +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/-client +kubectl get service/-client -o='jsonpath={.status.loadBalancer.ingress[0].ip}' +``` +::: +:::{tab-item} EKS +```bash +kubectl patch service/-client -p '{"metadata": {"annotations": {"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal", "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "tcp"}}, "spec": {"type": "LoadBalancer"}}' +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/-client +kubectl get service/-client -o='jsonpath={.status.loadBalancer.ingress[0].hostname}' +``` +::: +:::: diff --git a/v1.14/_sources/clients/index.rst.txt b/v1.14/_sources/clients/index.rst.txt new file mode 100644 index 00000000000..0c8c4697608 --- /dev/null +++ b/v1.14/_sources/clients/index.rst.txt @@ -0,0 +1,12 @@ +========================================================== +Using ScyllaDB APIs +========================================================== + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + + discovery + cql + alternator diff --git a/v1.14/_sources/contributing.md.txt b/v1.14/_sources/contributing.md.txt new file mode 100644 index 00000000000..da5fc078732 --- /dev/null +++ b/v1.14/_sources/contributing.md.txt @@ -0,0 +1,155 @@ +# Contributing to Scylla Operator + +## Prerequisites + +To develop on scylla-operator, your environment must have the following: + +1. [Go 1.13](https://golang.org/dl/) + * Make sure [GOPATH](https://github.com/golang/go/wiki/SettingGOPATH) is set to `GOPATH=$HOME/go`. +2. [Kustomize v3.1.0](https://github.com/kubernetes-sigs/kustomize/releases/tag/v3.1.0) +3. [kubebuilder v2.3.1](https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v2.3.1) +4. [Docker](https://docs.docker.com/install/) +5. Git client installed +6. Github account + +To install all dependencies (Go, kustomize, kubebuilder, dep), simply run: +```bash +./install-dependencies.sh +``` + +## Initial Setup + +### Create a Fork + +From your browser navigate to [http://github.com/scylladb/scylla-operator](http://github.com/scylladb/scylla-operator) and click the "Fork" button. + +### Clone Your Fork + +Open a console window and do the following: + +```bash +# Create the scylla operator repo path +mkdir -p $GOPATH/src/github.com/scylladb + +# Navigate to the local repo path and clone your fork +cd $GOPATH/src/github.com/scylladb + +# Clone your fork, where is your GitHub account name +git clone https://github.com//scylla-operator.git +``` + +### Add Upstream Remote + +First you will need to add the upstream remote to your local git: +```bash +# Add 'upstream' to the list of remotes +git remote add upstream https://github.com/scylladb/scylla-operator.git + +# Verify the remote was added +git remote -v +``` +Now you should have at least `origin` and `upstream` remotes. You can also add other remotes to collaborate with other contributors. + +## Development + +To add a feature or to make a bug fix, you will need to create a branch in your fork and then submit a pull request (PR) from the branch. + +### Building the project + +You can build the project using the Makefile commands: +* Open the Makefile and change the `IMG` environment variable to a repository you have access to. +* Run `make docker-push` and wait for the image to be built and uploaded in your repo. + +### Create a Branch + +From a console, create a new branch based on your fork and start working on it: + +```bash +# Ensure all your remotes are up to date with the latest +git fetch --all + +# Create a new branch that is based off upstream master. Give it a simple, but descriptive name. +# Generally it will be two to three words separated by dashes and without numbers. +git checkout -b feature-name upstream/master +``` + +Now you are ready to make the changes and commit to your branch. + +### Updating Your Fork + +During the development lifecycle, you will need to keep up-to-date with the latest upstream master. As others on the team push changes, you will need to `rebase` your commits on top of the latest. This avoids unnecessary merge commits and keeps the commit history clean. + +Whenever you need to update your local repository, you never want to merge. You **always** will rebase. Otherwise you will end up with merge commits in the git history. If you have any modified files, you will first have to stash them (`git stash save -u ""`). + +```bash +git fetch --all +git rebase upstream/master +``` + +Rebasing is a very powerful feature of Git. You need to understand how it works or else you will risk losing your work. Read about it in the [Git documentation](https://git-scm.com/docs/git-rebase), it will be well worth it. In a nutshell, rebasing does the following: +- "Unwinds" your local commits. Your local commits are removed temporarily from the history. +- The latest changes from upstream are added to the history +- Your local commits are re-applied one by one +- If there are merge conflicts, you will be prompted to fix them before continuing. Read the output closely. It will tell you how to complete the rebase. +- When done rebasing, you will see all of your commits in the history. + +## Submitting a Pull Request + +Once you have implemented the feature or bug fix in your branch, you will open a PR to the upstream repo. Before opening the PR ensure you have added unit tests, are passing the integration tests, cleaned your commit history, and have rebased on the latest upstream. + +In order to open a pull request (PR) it is required to be up to date with the latest changes upstream. If other commits are pushed upstream before your PR is merged, you will also need to rebase again before it will be merged. + +### Commit History + +To prepare your branch to open a PR, you will need to have the minimal number of logical commits so we can maintain +a clean commit history. Most commonly a PR will include a single commit where all changes are squashed, although +sometimes there will be multiple logical commits. + +```bash +# Inspect your commit history to determine if you need to squash commits +git log + +# Rebase the commits and edit, squash, or even reorder them as you determine will keep the history clean. +# In this example, the last 5 commits will be opened in the git rebase tool. +git rebase -i HEAD~5 +``` + +Once your commit history is clean, ensure you have based on the [latest upstream](#updating-your-fork) before you open the PR. + +### Commit messages + +Please make the first line of your commit message a summary of the change that a user (not a developer) of Operator would like to read, +and prefix it with the most relevant directory of the change followed by a colon. +The changelog gets made by looking at just these first lines so make it good! + +If you have more to say about the commit, then enter a blank line and carry on the description. +Remember to say why the change was needed - the commit itself shows what was changed. + +Writing more is better than less. Comparing the behaviour before the change to that after the change is very useful. +Imagine you are writing to yourself in 12 months time when you've forgotten everything about what you just did, and you need to get up to speed quickly. + +If the change fixes an issue then write Fixes #1234 in the commit message. +This can be on the subject line if it will fit. If you don't want to close the associated issue just put #1234 and the change will get linked into the issue. + +Here is an example of a short commit message: + +``` +sidecar: log on reconcile loop - fixes #1234 +``` + +And here is an example of a longer one: +``` + +api: now supports host networking (#1234) + +The operator CRD now has a "network" property that can be used to +select host networking as well as setting the apropriate DNS policy. + +Fixes #1234 +``` + +### Submitting + +Go to the [Scylla Operator github](https://www.github.com/scylladb/scylla-operator) to open the PR. If you have pushed recently, you should see an obvious link to open the PR. If you have not pushed recently, go to the Pull Request tab and select your fork and branch for the PR. + +After the PR is open, you can make changes simply by pushing new commits. Your PR will track the changes in your fork and update automatically. diff --git a/v1.14/_sources/eks.md.txt b/v1.14/_sources/eks.md.txt new file mode 100644 index 00000000000..94abd21b15e --- /dev/null +++ b/v1.14/_sources/eks.md.txt @@ -0,0 +1,128 @@ +# Deploying Scylla on EKS + +This guide is focused on deploying Scylla on EKS with improved performance. +Performance tricks used by the script won't work with different machine tiers. +It sets up the kubelets on EKS nodes to run with [static cpu policy](https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/) and uses [local sdd disks](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html) in RAID0 for maximum performance. + +Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the [general guide](generic.md). + +## TL;DR; + +If you don't want to run the commands step-by-step, you can just run a script that will set everything up for you: +```bash +# Edit according to your preference +EKS_REGION=us-east-1 +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c + +# From inside the examples/eks folder +cd examples/eks +./eks.sh -z "$EKS_ZONES" -r "$EKS_REGION" +``` + +After you deploy, see how you can [benchmark your cluster with cassandra-stress](generic.md#benchmark-with-cassandra-stress). + +## Walkthrough + +### EKS Setup + +#### Configure environment variables + +First of all, we export all the configuration options as environment variables. +Edit according to your own environment. + +``` +EKS_REGION=us-east-1 +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c +CLUSTER_NAME=scylla-demo +``` + +#### Creating an EKS cluster + +For this guide, we'll create an EKS cluster with the following: + +* A NodeGroup of 3 `i3-2xlarge` Nodes, where the Scylla Pods will be deployed. These nodes will only accept pods having `scylla-clusters` toleration. + +``` + - name: scylla-pool + instanceType: i3.2xlarge + desiredCapacity: 3 + labels: + scylla.scylladb.com/node-type: scylla + taints: + role: "scylla-clusters:NoSchedule" + ssh: + allow: true + kubeletExtraConfig: + cpuManagerPolicy: static +``` + +* A NodeGroup of 4 `c4.2xlarge` Nodes to deploy `cassandra-stress` later on. These nodes will only accept pods having `cassandra-stress` toleration. + +``` + - name: cassandra-stress-pool + instanceType: c4.2xlarge + desiredCapacity: 4 + labels: + pool: "cassandra-stress-pool" + taints: + role: "cassandra-stress:NoSchedule" + ssh: + allow: true +``` + +* A NodeGroup of 1 `i3.large` Node, where the monitoring stack and operator will be deployed. +``` + - name: monitoring-pool + instanceType: i3.large + desiredCapacity: 1 + labels: + pool: "monitoring-pool" + ssh: + allow: true +``` + +### Prerequisites + +#### Installing script third party dependencies + +Script requires several dependencies: +- eksctl - See: https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html +- kubectl - See: https://kubernetes.io/docs/tasks/tools/install-kubectl/ + +### Deploying ScyllaDB Operator + +Refer to [Deploying Scylla on a Kubernetes Cluster](generic.md) in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites. + +#### Setting up nodes for ScyllaDB + +ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you'll first need to form a RAID array from those disks. +`NodeConfig` performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in [Performance tuning](performance.md) section of ScyllaDB Operator's documentation. + +Deploy `NodeConfig` to let it take care of the above operations: +``` +kubectl apply --server-side -f examples/eks/nodeconfig-alpha.yaml +``` + +#### Deploying Local Volume Provisioner + +Afterwards, deploy ScyllaDB's [Local Volume Provisioner](https://github.com/scylladb/k8s-local-volume-provisioner), capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays. +``` +kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/ +``` + +### Deploying ScyllaDB + +Now you can follow the steps described in [Deploying Scylla on a Kubernetes Cluster](generic.md) to launch your ScyllaDB cluster in a highly performant environment. + +#### Accessing the database + +Instructions on how to access the database can also be found in the [generic guide](generic.md). + +### Deleting an EKS cluster + +Once you are done with your experiments delete your cluster using the following command: + +``` +eksctl delete cluster "${CLUSTER_NAME}" +``` diff --git a/v1.14/_sources/exposing.md.txt b/v1.14/_sources/exposing.md.txt new file mode 100644 index 00000000000..9ec6e0ba4e5 --- /dev/null +++ b/v1.14/_sources/exposing.md.txt @@ -0,0 +1,304 @@ +# Exposing ScyllaCluster + +This document explains how ScyllaDB Operator exposes ScyllaClusters in different network setups. +A ScyllaCluster can be exposed in various network configurations, independently to clients and nodes. + +:::{note} +ScyllaClusters can be only exposed when the ScyllaDB version used version is `>=2023.1` ScyllaDB Enterprise or `>=5.2` ScyllaDB Open Source. +::: + +## Expose Options + +:::{note} +`exposeOptions` are immutable, they cannot be changed after ScyllaCluster is created. +::: + +`exposeOptions` specifies configuration options for exposing ScyllaCluster's. +A ScyllaCluster created without any `exposeOptions` is equivalent to the following: + +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: ServiceClusterIP + nodes: + type: ServiceClusterIP +``` + +The following sections cover what every field controls and what the configuration options are. + +### Node Service Template + +`nodeService` serves as a template for a node-dedicated Service managed by the Scylla Operator for each node within a ScyllaCluster. +The properties of the Services depend on the selected type. +Additionally, there's an option to define custom annotations, incorporated into each node's Service, +which might be useful for further tweaking the Service properties or related objects. + +#### Headless Type + +For `Headless` type, Scylla Operator creates a Headless Service with a selector pointing to the particular node in the ScyllaCluster. +Such Service doesn't provide any additional IP addresses, and the internal DNS record resolves to the PodIP of a node. + +This type of Service is useful when ScyllaCluster nodes broadcast PodIPs to clients and other nodes. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless +``` + +#### ClusterIP Type + +For `ClusterIP` type, Scylla Operator creates a ClusterIP Service backed by a specific node in the ScyllaCluster. + +These IP addresses are only routable within the same Kubernetes cluster, so it's a good fit, if you don't want to expose them to other networks. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP +``` + +#### LoadBalancer Type + +For the `LoadBalancer` type, Scylla Operator generates a LoadBalancer Service that directs traffic to a specific node within the ScyllaCluster. +On platforms with support for external load balancers, this Service provisions one. +The accessibility of this load balancer's address depends on the platform and any customizations made; in some cases it may be reachable from the internal network or public Internet. + +Customizations are usually managed via Service annotations, key-value pairs provided in `annotations` field are merged into each Service object. +LoadBalancer Services should be configured to pass through entire traffic. +For example, to expose LoadBalancer only to internal network use the following annotations: + +::::{tab-set} +:::{tab-item} EKS +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + annotations: + service.beta.kubernetes.io/aws-load-balancer-scheme: internal + service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp +``` +::: +:::{tab-item} GKE +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + annotations: + networking.gke.io/load-balancer-type: Internal +``` +::: +:::: + +Check platform-specific documentation regarding LoadBalancer configuration to learn more about available options. + +LoadBalancer Service is a superset of ClusterIP Service, implying that each LoadBalancer Service also contains an allocated ClusterIP. +They can be configured using the following fields, which propagate to every node Service: +* externalTrafficPolicy +* internalTrafficPolicy +* loadBalancerClass +* allocateLoadBalancerNodePorts + +Check [Kubernetes Service documentation](https://kubernetes.io/docs/concepts/services-networking/service) to learn more about these options. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + loadBalancerClass: my-custom-load-balancer-class +``` + +--- + +### Broadcast Options + +Broadcast options control what is the source of the address being broadcasted to clients and nodes. +It's configured independently for clients and nodes because you may want to expose these two types of traffic on different networks. +Using different networks can help manage costs, reliability, latency, security policies or other metrics you care about. + +#### PodIP Type + +Address broadcasted to clients/nodes is taken from Pod. +By default, the address is taken from Pod's `status.PodIP` field. +Because a Pod can use multiple address, you may want to provide source options by specifying `podIP.source`. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: PodIP + podIP: + source: Status +``` + +#### ServiceClusterIP Type + +Address broadcasted to clients or nodes is taken from `spec.ClusterIP` field of a node's dedicated Service. + +In order to configure it, the `nodeService` template must specify a Service having a ClusterIP assigned. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: ServiceClusterIP +``` + +#### ServiceLoadBalancerIngress Type + +Address broadcasted to clients/nodes is taken from the node dedicated Service, from `status.ingress[0].ipAddress` or `status.ingress[0].hostname` field. + +In order to configure it, the `nodeService` template must specify the LoadBalancer Service. + +Example: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + broadcastOptions: + clients: + type: ServiceLoadBalancerIngress + podIP: + source: Status +``` + +## Deployment Examples + +The following section contains several specific examples of various network scenarios and explains how nodes and clients communicate with one another. +### In-cluster only + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: ServiceClusterIP + nodes: + type: ServiceClusterIP +``` + +Both client and nodes are deployed within the same Kubernetes cluster. +They talk through ClusterIP addresses taken from the Service. +Because ClusterIP Services are only routable within the same Kubernetes cluster, this cluster won't be reachable from outside. + +![ClusterIPs](static/exposing/clusterip.svg) + +### In-cluster node-to-node, VPC clients-to-nodes + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: ClusterIP + broadcastOptions: + clients: + type: PodIP + nodes: + type: ServiceClusterIP +``` + +In this scenario, we assume that the Pod IP subnet is routable within a VPC. +Clients within the VPC network can communicate directly with ScyllaCluster nodes using PodIPs. +Nodes communicate with each other exclusively within the same Kubernetes cluster. + +![PodIPs](static/exposing/podips.svg) + +### Multi VPC + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP +``` + +In this scenario, we set up two separate Kubernetes clusters in distinct VPCs. +These VPCs are interconnected to facilitate inter-VPC connectivity. +We operate on the assumption that the Pod IP subnet is routable within each VPC. + +Both ScyllaClusters use the same `exposeOptions`, nodes broadcast their Pod IP addresses, enabling them to establish connections with one another. +****Check other documentation pages to know how to connect two ScyllaClusters into one logical cluster. + +Clients, whether deployed within the same Kubernetes cluster or within a VPC, have the capability to reach nodes using their Pod IPs. +Since there is no requirement for any address other than the Pod IP, the `Headless` service type is sufficient. + +![MultiVPC](static/exposing/multivpc.svg) + +### Internet + +ScyllaCluster definition: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: LoadBalancer + broadcastOptions: + clients: + type: ServiceLoadBalancerIngress + nodes: + type: ClusterIP +``` + +We assume that a Kubernetes cluster has been deployed in a cloud provider environment that supports external load balancers. +By specifying the LoadBalancer type in the nodeService template, the Scylla Operator generates a dedicated LB Service for each node. +The cloud provider then establishes an external load balancer with an internet-accessible address. +ScyllaDB nodes broadcast this external address to clients, enabling drivers to connect and discover other nodes. +Since all ScyllaDB nodes reside within the same Kubernetes cluster, there is no need to route traffic through the internet. +Consequently, the nodes are configured to communicate via ClusterIP, which is also accessible within LoadBalancer Services. + +![Internet](static/exposing/loadbalancer.svg) + +--- + +Other more complex scenarios can be built upon these simple ones. diff --git a/v1.14/_sources/generic.md.txt b/v1.14/_sources/generic.md.txt new file mode 100644 index 00000000000..4ed517774f9 --- /dev/null +++ b/v1.14/_sources/generic.md.txt @@ -0,0 +1,372 @@ +# Deploying Scylla on a Kubernetes Cluster + +This is a guide to deploy a Scylla Cluster in a generic Kubernetes environment, meaning that Scylla will not be deployed with the ideal performance. +Scylla performs the best when it has fast disks and direct access to the cpu. +This requires some extra setup, which is platform-specific. +For specific configuration and setup, check for details about your particular environment: + +* [GKE](gke.md) + +## Prerequisites + +* A Kubernetes cluster +* A [Storage Class](https://kubernetes.io/docs/concepts/storage/storage-classes/) to provision [PersistentVolumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/). +* Helm 3 installed, Go to the [helm docs](https://docs.helm.sh/using_helm/#installing-helm) if you need to install it. + Make sure that you enable the [stable repository](https://github.com/helm/charts#how-do-i-enable-the-stable-repository-for-helm-3) + +## Running locally + +Running kubernetes locally is a daunting and error prone task. +Fortunately there are ways to make life easier and [Minikube](https://minikube.sigs.k8s.io/docs/) makes it a breeze. + +We need to give minikube a little bit more resources than default so start minikube like this: +```console +minikube start --cpus=6 +``` + +Then make kubectl aware of this local installation like this: +```console +eval $(minikube docker-env) +``` + +## Download Scylla Operator +In this guide you will be using the examples and manifests from [Scylla Operator repository](https://github.com/scylladb/scylla-operator), so start off by cloning it to your local machine. +```console +git clone git@github.com:scylladb/scylla-operator.git +cd scylla-operator +``` + +## Deploy Cert Manager +First deploy Cert Manager, you can either follow [upsteam instructions](https://cert-manager.io/docs/installation/kubernetes/) or use following command: + +```console +kubectl apply -f examples/common/cert-manager.yaml +``` +This will install Cert Manager to provision a self-signed certificate. + +Once it's deployed, wait until Cert Manager is ready: + +```console +kubectl wait --for condition=established crd/certificates.cert-manager.io crd/issuers.cert-manager.io +kubectl -n cert-manager rollout status deployment.apps/cert-manager-webhook +``` + +## Deploy Scylla Operator + +Deploy the Scylla Operator using the following commands: + +```console +kubectl apply -f deploy/operator.yaml +``` + +This will install the operator in namespace `scylla-operator`. +Wait until it's ready: + +```console +kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator +``` + +If you want to check the logs of the operator you can do so with: + + ```console +kubectl -n scylla-operator logs deployment.apps/scylla-operator +``` + +## Create and Initialize a Scylla Cluster + +Now that the operator is running, we can create an instance of a Scylla cluster by creating an instance of the `clusters.scylla.scylladb.com` resource. +Some of that resource's values are configurable, so feel free to browse `cluster.yaml` and tweak the settings to your liking. +Full details for all the configuration options can be found in the [Scylla Cluster CRD documentation](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). + +When you are ready to create a Scylla cluster, simply run: + +```console +kubectl create -f examples/generic/cluster.yaml +``` + +We can verify that a Kubernetes object has been created that represents our new Scylla cluster with the command below. +This is important because it shows that has successfully extended Kubernetes to make Scylla clusters a first class citizen in the Kubernetes cloud-native environment. + +```console +kubectl -n scylla get ScyllaCluster +``` + +Checking the pods that are created is as easy as: + +```console +kubectl -n scylla get pods +``` + +The output should be something like: + +```console +NAME READY STATUS RESTARTS AGE +simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 9m49s +simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 7m43s +simple-cluster-us-east-1-us-east-1a-2 2/2 Running 0 6m46s +``` + +It is important to note that the operator creates these instances according to a pattern. +This pattern is as follows: `CLUSTER_NAME-DATACENTER_NAME-RACK_NAME-INSTANCE_NUMBER` as specified in `cluster.yaml`. + +In the above example we have the following properties: + + - CLUSTER_NAME: `simple-cluster` + - DATACENTER_NAME: `us-east-1` + - RACK_NAME: `us-east-1a` + - INSTANCE_NUMBER: An automatically generated number attached to the pod name. + +We picked the names to resemble something you can find in a cloud service but this is inconsequential, they can be set to anything you want. + +To check if all the desired members are running, you should see the same number of entries from the following command as the number of members that was specified in `cluster.yaml`: + +```console +kubectl -n scylla get pod -l app=scylla +``` + +You can also track the state of a Scylla cluster from its status. To check the current status of a Cluster, run: + +```console +kubectl -n scylla describe ScyllaCluster simple-cluster +``` + +Checking the logs of the running scylla instances can be done like this: + +```console +kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 scylla +``` + + +### Configure container kernel parameters + +Sometimes it is necessary to run the container with different kernel parameters. +In order to support this, the Scylla Operator defines a cluster property `sysctls` that is a list of the desired key-value pairs to set. + +___For example___: To increase the number events available for asynchronous IO processing in the Linux kernel to N set sysctls to`fs.aio-max-nr=N`. + +```yaml +spec: + sysctls: + - "fs.aio-max-nr=2097152" +``` + +### Deploying Alternator + +The operator is also capable of deploying [Alternator](https://www.scylladb.com/alternator/) instead of the regular Scylla. +This requires a small change in the cluster definition. +Change the `cluster.yaml` file from this: +```yaml +spec: + agentVersion: 3.3.0 + version: 6.1.1 + developerMode: true + datacenter: + name: us-east-1 +``` +to this: +```yaml +spec: + version: 6.1.1 + alternator: + port: 8000 + writeIsolation: only_rmw_uses_lwt + agentVersion: 3.3.0 + developerMode: true + datacenter: + name: us-east-1 +``` +You can specify whichever port you want. + +You must provide desired write isolation, supported values are: "always", "forbid_rmw", "only_rmw_uses_lwt". +Difference between those isolation levels can be found in Scylla Alternator documentation. + +Once this is done the regular CQL ports will no longer be available, the cluster is a pure Alternator cluster. + +## Accessing the Database + +* From kubectl: + +To get a cqlsh shell in your new Cluster: +```console +kubectl exec -n scylla -it simple-cluster-us-east-1-us-east-1a-0 -- cqlsh +> DESCRIBE KEYSPACES; +``` + + +* From inside a Pod: + +When you create a new Cluster, automatically creates a Service for the clients to use in order to access the Cluster. +The service's name follows the convention `-client`. +You can see this Service in your cluster by running: +```console +kubectl -n scylla describe service simple-cluster-client +``` +Pods running inside the Kubernetes cluster can use this Service to connect to Scylla. +Here's an example using the [Python Driver](https://github.com/datastax/python-driver): +```python +from cassandra.cluster import Cluster + +cluster = Cluster(['simple-cluster-client.scylla.svc']) +session = cluster.connect() +``` + +If you are running the Alternator you can access the API on the port you specified using plain http. + +## Configure Scylla + +The operator can take a ConfigMap and apply it to the scylla.yaml configuration file. +This is done by adding a ConfigMap to Kubernetes and refering to this in the Rack specification. +The ConfigMap is just a file called `scylla.yaml` that has the properties you want to change in it. +The operator will take the default properties for the rest of the configuration. + +* Create a ConfigMap the default name that the operator uses is `scylla-config`: +```console +kubectl create configmap scylla-config -n scylla --from-file=/path/to/scylla.yaml +``` +* Wait for the mount to propagate and then restart the cluster: +```console +kubectl rollout restart -n scylla statefulset/simple-cluster-us-east-1-us-east-1a +``` +* The new config should be applied automatically by the operator, check the logs to be sure. + +Configuring `cassandra-rackdc.properties` is done by adding the file to the same mount as `scylla.yaml`. +```console +kubectl create configmap scylla-config -n scylla --from-file=/tmp/scylla.yaml --from-file=/tmp/cassandra-rackdc.properties -o yaml --dry-run | kubectl replace -f - +``` +The operator will then apply the overridable properties `prefer_local` and `dc_suffix` if they are available in the provided mounted file. + +:::{note} +If you want to enable authentication, you first need to adjust `system_auth` keyspace replication factor to the number of nodes in the datacenter via cqlsh. It allows you to ensure that the user’s information is kept highly available for the cluster. If `system_auth` is not equal to the number of nodes and a node fails, the user whose information is on that node will be denied access. +For production environments only use `NetworkTopologyStrategy`. + +```shell +kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : };" +``` + +You can read more about enabling authentication in the [Enable authentication](https://opensource.docs.scylladb.com/stable/operating-scylla/security/authentication.html) section of ScyllaDB's documentation. +::: + +## Configure Scylla Manager Agent + +The operator creates a second container for each scylla instance that runs [Scylla Manager Agent](https://hub.docker.com/r/scylladb/scylla-manager-agent). +This container serves as a sidecar and it's the main endpoint for interacting with Scylla API. +The Scylla Manager Agent can be configured with various things such as the security token used to allow access to Scylla API and storage providers for backups. + +To configure the agent you just create a new secret called _scylla-agent-config-secret_ and populate it with the contents in the `scylla-manager-agent.yaml` file like this: +```console +kubectl create secret -n scylla generic scylla-agent-config-secret --from-file scylla-manager-agent.yaml +``` + +See [Scylla Manager Agent configuration](https://manager.docs.scylladb.com/stable/config/scylla-manager-config.html) for a complete reference of the Scylla Manager agent config file. + +### Scylla Manager Agent auth token + +Operator provisions Agent auth token by copying value from user provided config secret or auto generates it if it's empty. +To check which value is being used, decode content of `-auth-token` secret. +To change it simply remove the secret. Operator will create a new one. To pick up the change in the cluster, initiate a rolling restart. + +## Set up monitoring + +To set up monitoring using Prometheus and Grafana follow [this guide](monitoring.md). + +## Scale a ScyllaCluster + +The operator supports adding new nodes to existing racks, adding new racks to the cluster, as well as removing both single nodes and entire racks. To introduce the changes, edit the cluster with: +```console +kubectl -n scylla edit scyllaclusters.scylla.scylladb.com/simple-cluster +``` +* To modify the number of nodes in a rack, update the `members` field of the selected rack to a desired value. +* To add a new rack, append it to the `.spec.datacenter.racks` list. Remember to choose a unique rack name for the new rack. +* To remove a rack, first scale it down to zero nodes, and then remove it from `.spec.datacenter.racks` list. + +Having edited and saved the yaml, you can check your cluster's Status and Events to retrieve information about what's happening: +```console +kubectl -n scylla describe scyllaclusters.scylla.scylladb.com/simple-cluster +``` + +:::{note} +If you have configured ScyllaDB with `authenticator` set to `PasswordAuthenticator`, you need to manually configure the replication factor of the `system_auth` keyspace with every scaling operation. + +```shell +kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -u -p -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : };" +``` + +It is recommended to set `system_auth` replication factor to the number of nodes in each datacenter. +::: + +## Benchmark with cassandra-stress + +After deploying our cluster along with the monitoring, we can benchmark it using cassandra-stress and see its performance in Grafana. We have a mini cli that generates Kubernetes Jobs that run cassandra-stress against a cluster. + +> Because cassandra-stress doesn't scale well to multiple cores, we use multiple jobs with a small core count for each + +```bash + +# Run a benchmark with 10 jobs, with 6 cpus and 50.000.000 operations each. +# Each Job will throttle throughput to 30.000 ops/sec for a total of 300.000 ops/sec. +hack/cass-stress-gen.py --num-jobs=10 --cpu=6 --memory=20G --ops=50000000 --limit=30000 +kubectl apply -f scripts/cassandra-stress.yaml +``` + +Make sure you set the proper arguments in case you have altered things such as _name_ or _namespace_. + +```bash +./hack/cass-stress-gen.py -h +usage: cass-stress-gen.py [-h] [--num-jobs NUM_JOBS] [--name NAME] [--namespace NAMESPACE] [--scylla-version SCYLLA_VERSION] [--host HOST] [--cpu CPU] [--memory MEMORY] [--ops OPS] [--threads THREADS] [--limit LIMIT] + [--connections-per-host CONNECTIONS_PER_HOST] [--print-to-stdout] [--nodeselector NODESELECTOR] + +Generate cassandra-stress job templates for Kubernetes. + +optional arguments: + -h, --help show this help message and exit + --num-jobs NUM_JOBS number of Kubernetes jobs to generate - defaults to 1 + --name NAME name of the generated yaml file - defaults to cassandra-stress + --namespace NAMESPACE + namespace of the cassandra-stress jobs - defaults to "default" + --scylla-version SCYLLA_VERSION + version of scylla server to use for cassandra-stress - defaults to 4.0.0 + --host HOST ip or dns name of host to connect to - defaults to scylla-cluster-client.scylla.svc + --cpu CPU number of cpus that will be used for each job - defaults to 1 + --memory MEMORY memory that will be used for each job in GB, ie 2G - defaults to 2G * cpu + --ops OPS number of operations for each job - defaults to 10000000 + --threads THREADS number of threads used for each job - defaults to 50 * cpu + --limit LIMIT rate limit for each job - defaults to no rate-limiting + --connections-per-host CONNECTIONS_PER_HOST + number of connections per host - defaults to number of cpus + --print-to-stdout print to stdout instead of writing to a file + --nodeselector NODESELECTOR + nodeselector limits cassandra-stress pods to certain nodes. Use as a label selector, eg. --nodeselector role=scylla +``` +While the benchmark is running, open up Grafana and take a look at the monitoring metrics. + +After the Jobs finish, clean them up with: +```bash +kubectl delete -f scripts/cassandra-stress.yaml +``` + +## Clean Up + +To clean up all resources associated with this walk-through, you can run the commands below. + +**NOTE:** this will destroy your database and delete all of its associated data. + +```console +kubectl delete -f examples/generic/cluster.yaml +kubectl delete -f deploy/operator.yaml +kubectl delete -f examples/common/cert-manager.yaml +``` + +## Troubleshooting + +If the cluster does not come up, the first step would be to examine the operator's logs: + +```console +kubectl -n scylla-operator logs deployment.apps/scylla-operator +``` + +If everything looks OK in the operator logs, you can also look in the logs for one of the Scylla instances: + +```console +kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 +``` diff --git a/v1.14/_sources/gke.md.txt b/v1.14/_sources/gke.md.txt new file mode 100644 index 00000000000..3ea9e1c9de3 --- /dev/null +++ b/v1.14/_sources/gke.md.txt @@ -0,0 +1,173 @@ +# Deploying Scylla on GKE + +This guide is focused on deploying Scylla on GKE with maximum performance (without any persistence guarantees). +It sets up the kubelets on GKE nodes to run with [static cpu policy](https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/) and uses [local sdd disks](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/local-ssd) in RAID0 for maximum performance. + +Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the [general guide](generic.md). + +## TL;DR; + +If you don't want to run the commands step-by-step, you can just run a script that will set everything up for you: +```bash +# Edit according to your preference +GCP_USER=$(gcloud config list account --format "value(core.account)") +GCP_PROJECT=$(gcloud config list project --format "value(core.project)") +GCP_ZONE=us-west1-b + +# From inside the examples/gke folder +cd examples/gke +./gke.sh -u "$GCP_USER" -p "$GCP_PROJECT" -z "$GCP_ZONE" + +# Example: +# ./gke.sh -u yanniszark@arrikto.com -p gke-demo-226716 -z us-west1-b +``` + +:::{warning} +Make sure to pass a ZONE (ex.: us-west1-b) and not a REGION (ex.: us-west1) or it will deploy nodes in each ZONE available in the region. +::: + +After you deploy, see how you can [benchmark your cluster with cassandra-stress](generic.md#benchmark-with-cassandra-stress). + +## Walkthrough + +### Google Kubernetes Engine Setup + +#### Configure environment variables + +First of all, we export all the configuration options as environment variables. +Edit according to your own environment. + +``` +GCP_USER=$( gcloud config list account --format "value(core.account)" ) +GCP_PROJECT=$( gcloud config list project --format "value(core.project)" ) +GCP_REGION=us-west1 +GCP_ZONE=us-west1-b +CLUSTER_NAME=scylla-demo +CLUSTER_VERSION=$( gcloud container get-server-config --zone ${GCP_ZONE} --format "value(validMasterVersions[0])" ) +``` + +#### Creating a GKE cluster + +First we need to change kubelet CPU Manager policy to static by providing a config file. Create file called `systemconfig.yaml` with the following content: +``` +kubeletConfig: + cpuManagerPolicy: static +``` + +Then we'll create a GKE cluster with the following: + +1. A NodePool of 2 `n1-standard-8` Nodes, where the operator and the monitoring stack will be deployed. These are generic Nodes and their free capacity can be used for other purposes. + ``` + gcloud container \ + clusters create "${CLUSTER_NAME}" \ + --cluster-version "${CLUSTER_VERSION}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-8" \ + --num-nodes "2" \ + --disk-type "pd-ssd" --disk-size "20" \ + --image-type "UBUNTU_CONTAINERD" \ + --enable-stackdriver-kubernetes \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +2. A NodePool of 2 `n1-standard-32` Nodes to deploy `cassandra-stress` later on. + + ``` + gcloud container --project "${GCP_PROJECT}" \ + node-pools create "cassandra-stress-pool" \ + --cluster "${CLUSTER_NAME}" \ + --zone "${GCP_ZONE}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-32" \ + --num-nodes "2" \ + --disk-type "pd-ssd" --disk-size "20" \ + --node-taints role=cassandra-stress:NoSchedule \ + --image-type "UBUNTU_CONTAINERD" \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +3. A NodePool of 4 `n1-standard-32` Nodes, where the Scylla Pods will be deployed. Each of these Nodes has 8 local NVMe SSDs attached, which are provided as [raw block devices](https://cloud.google.com/kubernetes-engine/docs/concepts/local-ssd#block). It is important to disable `autoupgrade` and `autorepair`. Automatic cluster upgrade or node repair has a hard timeout after which it no longer respect PDBs and force deletes the Compute Engine instances, which also deletes all data on the local SSDs. At this point, it's better to handle upgrades manually, with more control over the process and error handling. + ``` + gcloud container \ + node-pools create "scylla-pool" \ + --cluster "${CLUSTER_NAME}" \ + --node-version "${CLUSTER_VERSION}" \ + --machine-type "n1-standard-32" \ + --num-nodes "4" \ + --disk-type "pd-ssd" --disk-size "20" \ + --local-nvme-ssd-block count="8" \ + --node-taints role=scylla-clusters:NoSchedule \ + --node-labels scylla.scylladb.com/node-type=scylla \ + --image-type "UBUNTU_CONTAINERD" \ + --system-config-from-file=systemconfig.yaml \ + --no-enable-autoupgrade \ + --no-enable-autorepair + ``` + +#### Setting Yourself as `cluster-admin` +> (By default GKE doesn't give you the necessary RBAC permissions) + +Get the credentials for your new cluster +``` +gcloud container clusters get-credentials "${CLUSTER_NAME}" --zone="${GCP_ZONE}" +``` + +Create a ClusterRoleBinding for your user. +In order for this to work you need to have at least permission `container.clusterRoleBindings.create`. +The easiest way to obtain this permission is to enable the `Kubernetes Engine Admin` role for your user in the GCP IAM web interface. +``` +kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user "${GCP_USER}" +``` + + +### Prerequisites + +### Deploying ScyllaDB Operator + +Refer to [Deploying Scylla on a Kubernetes Cluster](generic.md) in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites. + +#### Setting up nodes for ScyllaDB + +ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you'll first need to form a RAID array from those disks. +`NodeConfig` performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in [Performance tuning](performance.md) section of ScyllaDB Operator's documentation. + +Deploy `NodeConfig` to let it take care of the above operations: +``` +kubectl apply --server-side -f examples/gke/nodeconfig-alpha.yaml +``` + +#### Deploying Local Volume Provisioner + +Afterwards, deploy ScyllaDB's [Local Volume Provisioner](https://github.com/scylladb/k8s-local-volume-provisioner), capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays. +``` +kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/ +kubectl apply --server-side -f examples/common/local-volume-provisioner/storageclass_xfs.yaml +``` + +### Deploy Scylla cluster +In order for the example to work you need to modify the cluster definition in the following way: + +``` +sed -i "s//${GCP_REGION}/g;s//${GCP_ZONE}/g" examples/gke/cluster.yaml +``` + +This will inject your region and zone into the cluster definition so that it matches the kubernetes cluster you just created. + +### Deploying ScyllaDB + +Now you can follow the steps described in [Deploying Scylla on a Kubernetes Cluster](generic.md) to launch your ScyllaDB cluster in a highly performant environment. + +#### Accessing the database + +Instructions on how to access the database can also be found in the [generic guide](generic.md). + +### Deleting a GKE cluster + +Once you are done with your experiments delete your cluster using the following command: + +``` +gcloud container --project "${GCP_PROJECT}" clusters delete --zone "${GCP_ZONE}" "${CLUSTER_NAME}" +``` diff --git a/v1.14/_sources/helm.md.txt b/v1.14/_sources/helm.md.txt new file mode 100644 index 00000000000..e157523c417 --- /dev/null +++ b/v1.14/_sources/helm.md.txt @@ -0,0 +1,339 @@ +# Deploying Scylla stack using Helm Charts + +In this example we will install Scylla stack on Kubernetes. This includes the following components: +- Scylla Operator +- Scylla Manager +- Scylla + +We will use Minikube K8s cluster, but this could be any K8s cluster supported by the Scylla Operator. + +## Prerequisites + +- Kubernetes 1.16+ +- Helm 3+ + +## TL;DR + +``` +helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable +helm repo update +kubectl apply -f examples/common/cert-manager.yaml +helm install scylla-operator scylla/scylla-operator --create-namespace --namespace scylla-operator +helm install scylla-manager scylla/scylla-manager --create-namespace --namespace scylla-manager +helm install scylla scylla/scylla --create-namespace --namespace scylla +``` + +## Deploy Cert Manager + +This step is optional if you want to use your own certificate. +If you don't have one, make sure to not disable autogeneration using Scylla Operator Helm Chart. + +First deploy Cert Manager, you can either follow [upsteam instructions](https://cert-manager.io/docs/installation/kubernetes/) or use following command: + +```console +kubectl apply -f examples/common/cert-manager.yaml +``` + +Once it's deployed, wait until all Cert Manager pods will enter into Running state: + +```console +kubectl wait -n cert-manager --for=condition=ready pod -l app=cert-manager --timeout=60s +``` + +## Helm Chart repository + +To install Scylla Helm Chart repository execute the following commands: +``` +helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable +helm repo update +``` + +Then you can search through repository, it should contain at least three Helm charts: +``` +helm search repo scylla +NAME CHART VERSION APP VERSION DESCRIPTION +scylla/scylla 1.0.1 v1.0.1 Scylla is a close-to-the-hardware rewrite of Ca... +scylla/scylla-manager 1.0.1 v1.0.1 Scylla Manager automates database operations. +scylla/scylla-operator 1.0.1 v1.0.1 Scylla Operator is a Kubernetes Operator for ma... +``` + +All these charts should be installable without any need of customizing (defaults are provided). +Although Helm is used for this particular reason, so lets customize them a bit. + +## Scylla Operator Chart + +This chart is very simple, most interesting customizable fields are `image`, `resources` and `webhook`. +All others can be looked up in Chart source in Scylla Operator repository. + +### image + +Image allows to define which Scylla Operator image will be used. By default it downloads the image from main +Docker Hub repository, using version defined in Helm Chart. +You can also change `pullPolicy` if default one does not +fullfill your needs. In [Kubernetes documentation](https://kubernetes.io/docs/concepts/containers/images/) you +can read more about different pull policies. + +Image URL will be composed based on these fields in follwing pattern: +`repository/scylla-operator:tag` +```yaml +image: + repository: scylladb + pullPolicy: IfNotPresent + tag: "" +``` + +### resources + +You can customize how much resources will be allocated for Operator pods via `resource` field: +```yaml +resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 100m + memory: 32Mi +``` + +To read more about resource specification, follow [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). + +### webhook + +Webhook field allows to decide whether you want to use autogenerated self-signed certificate using Cert Manager or +whether you want to provide your own certificate. + +`createSelfSignedCertificate` specifies whether a self-signed certificate should be created using Cert Manager +`certificateSecretName`: name of a secret containing custom certificate. + +```yaml +webhook: + createSelfSignedCertificate: true + certificateSecretName: "" +``` + +### Customization + +You can customize all these fields and others by providing file containing desired values. +Content of this file will overwrite default values. + +You can find an example in Scylla Operator repository under `examples/helm/values.operator.yaml` + +### Installation + +To deploy Scylla Operator using customized values file execute the following: +``` +helm install scylla-operator scylla/scylla-operator --values examples/helm/values.operator.yaml --create-namespace --namespace scylla-operator +``` + +## Scylla Helm Chart + +Scylla Chart allows to customize and deploy Scylla cluster. +By default Scylla Helm charts deploys working Scylla cluster, but of course we can customize it. + +### Customization + +Versions of images used in the cluster can be set via `scyllaImage` and `agentImage` +```yaml +scyllaImage: + repository: scylladb/scylla + tag: 4.3.0 + +agentImage: + repository: scylladb/scylla-manager-agent + tag: 2.2.1 +``` + +A minimal Scylla cluster can be expressed as: +```yaml +datacenter: us-east-1 +racks: +- name: us-east-1b + members: 2 + storage: + capacity: 5G + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 1 + memory: 1Gi +``` + +Above cluster will use 4.3.0 Scylla, 2.2.1 Scylla Manager Agent sidecar and will have a single rack having 2 nodes. +Each node will have a single CPU and 1 GiB of memory. + +For other customizable fields, please refer to [ScyllaCluster CRD](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). +CRD Rack Spec and Helm Chart Rack should have the same fields. + +### Installation + +To deploy Scylla cluster using customzied values file execute the following command: +``` +helm install scylla scylla/scylla --values examples/helm/values.cluster.yaml --create-namespace --namespace scylla +``` + +Scylla Operator will provision this cluster on your K8s environment. + +## Scylla Manager Helm Chart + +Scylla Manager Chart allows to customize and deploy Scylla Manager in K8s environment. +Scylla Manager consist of two applications (Scylla Manager itself and Scylla Manager Controller) and additional Scylla cluster. + +To read more about Scylla Manager see [Manager guide](manager.md). + +### Scylla Manager + +To set version of used Scylla Manager you can use `image` field: +```yaml +image: + repository: scylladb + pullPolicy: IfNotPresent + tag: 2.2.1 +``` +To control how many resources are allocated for Scylla Manager use `resource` field: +```yaml +resources: + limits: + cpu: 500m + memory: 500Mi + requests: + cpu: 500m + memory: 500Mi +``` + +### Scylla Manager Controller + +Similarly Scylla Manager Controller image can be customized: + +```yaml +controllerImage: + repository: scylladb + pullPolicy: IfNotPresent + tag: "" +``` + +And allocated resources: +```yaml +controllerResources: + limits: + cpu: 100m + memory: 30Mi + requests: + cpu: 100m + memory: 20Mi +``` + +### Scylla + +To customize internal Scylla instance dedicated to Scylla Manager, see guide above customizing Scylla Helm Chart. +It's definition should land as a `scylla` field. + +### Customization + +All others customizable fields can be looked up in Chart source in Scylla Operator repository. + +### Installation + +To deploy Scylla Manager using customized values file execute the following command: +``` +helm install scylla-manager scylla/scylla-manager --values examples/helm/values.manager.yaml --create-namespace --namespace scylla-manager +``` + +## Results + +Scylla need some time to bootstrap all nodes, but after some time you should be ready to roll. It was simple isn't it? +You can validate if everything was set up correctly by looking at the all resources created in used namespaces. + +Scylla Operator: +```shell +$ kubectl -n scylla-operator get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-operator-5dbcb54f5c-vjm4m 1/1 Running 0 51s +pod/scylla-operator-5dbcb54f5c-wfjbw 1/1 Running 0 51s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-operator-webhook ClusterIP 10.105.207.130 443/TCP 51s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/scylla-operator 2/2 2 2 51s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/scylla-operator-5dbcb54f5c 2 2 2 51s + +``` + +Operator is running! + +Scylla Manager: +```shell +$ kubectl -n scylla-manager get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-manager-669db64dd-bcm4v 1/1 Running 0 89s +pod/scylla-manager-controller-844ccc56c4-drbth 1/1 Running 0 89s +pod/scylla-manager-controller-844ccc56c4-rhwqx 1/1 Running 0 89s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-manager ClusterIP 10.105.231.53 80/TCP,5090/TCP 89s +service/scylla-manager-client ClusterIP None 9180/TCP,5090/TCP 89s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/scylla-manager 1/1 1 1 89s +deployment.apps/scylla-manager-controller 2/2 2 2 89s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/scylla-manager-669db64dd 1 1 1 89s +replicaset.apps/scylla-manager-controller-844ccc56c4 2 2 2 89s + + +``` + +Good to go, ready to serve! + +Scylla itself: +```shell +$ kubectl -n scylla get all + +NAME READY STATUS RESTARTS AGE +pod/scylla-us-east-1-us-east-1b-0 2/2 Running 0 5m58s +pod/scylla-us-east-1-us-east-1b-1 2/2 Running 0 4m29s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/scylla-client ClusterIP None 9180/TCP,5090/TCP 5m59s +service/scylla-us-east-1-us-east-1b-0 ClusterIP 10.43.149.92 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 5m58s +service/scylla-us-east-1-us-east-1b-1 ClusterIP 10.43.49.0 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 4m29s + +NAME READY AGE +statefulset.apps/scylla-us-east-1-us-east-1b 2/2 5m59s +``` + +Two running nodes, exactly what we were asking for. + +## Monitoring + +To spin up a Prometheus monitoring refer to [monitoring guide](monitoring.md). + +Helm charts can create ServiceMonitors needed to observe Scylla Manager and Scylla. +Both of these Helm Charts allows to specify whether you want to create a ServiceMonitor: +```yaml +serviceMonitor: + create: false +``` + +Change `create` to `true` and update your current deployment using: +```shell +helm upgrade --install scylla --namespace scylla scylla/scylla -f examples/helm/values.cluster.yaml +``` + +Helm should notice the difference, install the ServiceMonitor, and then Prometheous will be able to scrape metrics. + +## Cleanup + +To remove these applications you can simply uninstall them using Helm CLI: +```shell +helm uninstall scylla -n scylla +helm uninstall scylla-manager -n scylla-manager +helm uninstall scylla-operator -n scylla-operator +``` diff --git a/v1.14/_sources/index.rst.txt b/v1.14/_sources/index.rst.txt new file mode 100644 index 00000000000..32bf1347c2d --- /dev/null +++ b/v1.14/_sources/index.rst.txt @@ -0,0 +1,67 @@ +============================= +Scylla Operator Documentation +============================= + +.. toctree:: + :hidden: + :maxdepth: 1 + + generic + eks + gke + helm + manager + monitoring + clients/index + migration + nodeoperations/index + exposing + multidc/index + performance + upgrade + releases + support/index + api-reference/index + contributing + +Scylla Operator is an open source project which helps users of Scylla Open Source and Scylla Enterprise run Scylla on Kubernetes (K8s) +The Scylla operator manages Scylla clusters deployed to Kubernetes and automates tasks related to operating a Scylla cluster, like installation, out and downscale, rolling upgrades. + +.. image:: logo.png + :width: 200pt + +For the latest status of the project, and reports issue, see the Github Project. Also check out the `K8s Operator lesson on Scylla University `_. + +scylla-operator is a Kubernetes Operator for managing Scylla clusters. + +Currently it supports: + +* Deploying multi-zone clusters +* Scaling up or adding new racks +* Scaling down +* Monitoring with Prometheus and Grafana +* Integration with `Scylla Manager `_ +* Dead node replacement +* Version Upgrade +* Backup +* Repairs +* Autohealing + +**Choose a topic to begin**: + +* :doc:`Deploying Scylla on a Kubernetes Cluster ` +* :doc:`Deploying Scylla on EKS ` +* :doc:`Deploying Scylla on GKE ` +* :doc:`Deploying Scylla Manager on a Kubernetes Cluster ` +* :doc:`Deploying Scylla stack using Helm Charts ` +* :doc:`Setting up Monitoring using Prometheus and Grafana ` +* :doc:`Using ScyllaDB APIs ` +* :doc:`Node operations ` +* :doc:`Exposing ScyllaCluster to other networks ` +* :doc:`Deploying multi-datacenter ScyllaDB clusters in Kubernetes ` +* :doc:`Performance tuning [Experimental] ` +* :doc:`Upgrade procedures ` +* :doc:`Releases ` +* :doc:`Support ` +* :doc:`API Reference ` +* :doc:`Contributing to the Scylla Operator Project ` diff --git a/v1.14/_sources/manager.md.txt b/v1.14/_sources/manager.md.txt new file mode 100644 index 00000000000..9a8db2fd37a --- /dev/null +++ b/v1.14/_sources/manager.md.txt @@ -0,0 +1,258 @@ +# Deploying Scylla Manager on a Kubernetes Cluster + +Scylla Manager is a product for database operations automation, +it can schedule tasks such as repairs and backups. +Scylla Manager can manage multiple Scylla clusters and run cluster-wide tasks +in a controlled and predictable way. + +Scylla Manager is available for Scylla Enterprise customers and Scylla Open Source users. +With Scylla Open Source, Scylla Manager is limited to 5 nodes. +See the Scylla Manager [Proprietary Software License Agreement](https://www.scylladb.com/scylla-manager-software-license-agreement/) for details. + +## Prerequisites + +* Kubernetes cluster +* Scylla Operator - see [generic guide](generic.md) + +## Architecture + +Scylla Manager in K8s consist of: +- Dedicated Scylla Cluster + + Scylla Manager persists its state to a Scylla cluster. +Additional small single node cluster is spawned in the Manager namespace. + +- Scylla Manager Controller + + Main mission of Controller is to watch changes of Scylla Clusters, and synchronize three states. + 1. What user wants - task definition in CRD. + 2. What Controller registered - Task name to Task ID mapping - CRD status. + 3. Scylla Manager task listing - internal state of Scylla Manager. + + When Scylla Cluster CRD is being deployed Controller will register it in Scylla Manager once cluster reaches desired node count. +Once Cluster is fully up and running it will schedule all tasks defined in Cluster CRD. +Controller also supports task updates and unscheduling. + +- Scylla Manager + + Regular Scylla Manager, the same used in cloud and bare metal deployments. + + + +## Deploy Scylla Manager + +Deploy the Scylla Manager using the following commands: + +```console +kubectl apply -f deploy/manager-prod.yaml +``` + +This will install the Scylla Manager in the `scylla-manager` namespace. +You can check if the Scylla Manager is up and running with: + +```console +kubectl -n scylla-manager get pods +NAME READY STATUS RESTARTS AGE +scylla-manager-cluster-manager-dc-manager-rack-0 2/2 Running 0 37m +scylla-manager-controller-0 1/1 Running 0 28m +scylla-manager-scylla-manager-7bd9f968b9-w25jw 1/1 Running 0 37m +``` + +As you can see there are three pods: +* `scylla-manager-cluster-manager-dc-manager-rack-0` - is a single node Scylla cluster. +* `scylla-manager-controller-0` - Scylla Manager Controller. +* `scylla-manager-scylla-manager-7bd9f968b9-w25jw` - Scylla Manager. + +To see if Scylla Manager is fully up and running we can check their logs. +To do this, execute following command: + + ```console +kubectl -n scylla-manager logs scylla-manager-controller-0 +``` + +The output should be something like: +```console +{"L":"INFO","T":"2020-09-23T11:25:27.882Z","M":"Scylla Manager Controller started","version":"","build_date":"","commit":"","built_by":"","go_version":"","options":{"Name":"scylla-manager-controller-0","Namespace":"scylla-manager","LogLevel":"debug","ApiAddress":"http://127.0.0.1:5080/api/v1"},"_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"} +{"L":"INFO","T":"2020-09-23T11:25:28.435Z","M":"Registering Components.","_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"} +``` + +To check logs of Scylla Manager itself, use following command: +```console +kubectl -n scylla-manager logs scylla-manager-scylla-manager-7bd9f968b9-w25jw +``` + +The output should be something like: + +```console +{"L":"INFO","T":"2020-09-23T11:26:53.238Z","M":"Scylla Manager Server","version":"2.1.2-0.20200816.76cc4dcc","pid":1,"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Using config","config":{"HTTP":"127.0.0.1:5080","HTTPS":"","TLSCertFile":"/var/lib/scylla-manager/scylla_manager.crt","TLSKeyFile":"/var/lib/scylla-manager/scylla_manager.key","TLSCAFile":"","Prometheus":":56090","PrometheusScrapeInterval":5000000000,"debug":"127.0.0.1:56112","Logger":{"Mode":"stderr","Level":"info","Development":false},"Database":{"Hosts":["scylla-manager-cluster-manager-dc-manager-rack-0.scylla-manager.svc"],"SSL":false,"User":"","Password":"","LocalDC":"","Keyspace":"scylla_manager","MigrateDir":"/etc/scylla-manager/cql","MigrateTimeout":30000000000,"MigrateMaxWaitSchemaAgreement":300000000000,"ReplicationFactor":1,"Timeout":600000000,"TokenAware":true},"SSL":{"CertFile":"","Validate":true,"UserCertFile":"","UserKeyFile":""},"Healthcheck":{"Timeout":250000000,"SSLTimeout":750000000},"Backup":{"DiskSpaceFreeMinPercent":10,"AgeMax":43200000000000},"Repair":{"SegmentsPerRepair":1,"ShardParallelMax":0,"ShardFailedSegmentsMax":100,"PollInterval":200000000,"ErrorBackoff":300000000000,"AgeMax":0,"ShardingIgnoreMsbBits":12}},"config_files":["/mnt/etc/scylla-manager/scylla-manager.yaml"],"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Checking database connectivity...","_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"} +``` + +If there are no errors in the logs, let's spin a Scylla Cluster. + +## Cluster registration + + +When the Scylla Manager is fully up and running, lets create a regular instance of Scylla cluster. + +See [generic tutorial](generic.md) to spawn your cluster. + +Note: If you already have some Scylla Clusters, after installing Manager they should be +automatically registered in Scylla Manager. + +Once cluster reaches desired node count, cluster status will be updated with ID under which it was registered in Manager. + + ```console +kubectl -n scylla describe Cluster + +[...] +Status: + Manager Id: d1d532cd-49f2-4c97-9263-25126532803b + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.0.0 +``` +You can use this ID to talk to Scylla Manager using `sctool` CLI installed in Scylla Manager Pod. +You can also use Cluster name in `namespace/cluster-name` format. + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list + +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b) +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮ +│ Task │ Arguments │ Next run │ Status │ +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤ +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b │ │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE │ +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd │ │ 23 Sep 20 14:29:57 CEST (+1m) │ NEW │ +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯ + +``` + +Scylla Manager by default registers recurring healhcheck tasks for Agent and for each of the enabled frontends (CQL, Alternator). + +In this task listing we can see CQL and REST healthchecks. + +## Task scheduling + +You can either define tasks prior Cluster creation, or for existing Cluster. +Let's edit already running cluster definition to add repair and backup task. +```console +kubectl -n scylla edit Cluster simple-cluster +``` + +Add following task definition to Cluster spec: +``` + repairs: + - name: "users repair" + keyspace: ["users"] + interval: "1d" + backups: + - name: "weekly backup" + location: ["s3:cluster-backups"] + retention: 3 + interval: "7d" + - name: "daily backup" + location: ["s3:cluster-backups"] + retention: 7 + interval: "1d" +``` + +For full task definition configuration consult [ScyllaCluster CRD](api-reference/groups/scylla.scylladb.com/scyllaclusters.rst). + +**Note**: Scylla Manager Agent must have access to above bucket prior the update in order to schedule backup task. +Consult Scylla Manager documentation for details on how to set it up. + +Scylla Manager Controller will spot this change and will schedule tasks in Scylla Manager. + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list + +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b) +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮ +│ Task │ Arguments │ Next run │ Status │ +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤ +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b │ │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE │ +│ backup/275aae7f-c436-4fc8-bcec-479e65fb8372 │ -L s3:cluster-backups --retention 3 │ 23 Sep 20 14:28:58 CEST (+7d) │ NEW │ +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd │ │ 23 Sep 20 14:29:57 CEST (+1m) │ NEW │ +│ repair/d4946360-c29d-4bb4-8b9d-619ada495c2a │ │ 23 Sep 20 14:38:42 CEST │ NEW │ +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯ + +``` + +As you can see, we have two new tasks, weekly recurring backup, and one repair which should start shortly. + +To check progress of run you can use following command: + +```console +kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task progress --cluster d1d532cd-49f2-4c97-9263-25126532803b repair/d4946360-c29d-4bb4-8b9d-619ada495c2a +Status: RUNNING +Start time: 23 Sep 20 14:38:42 UTC +Duration: 13s +Progress: 2.69% +Datacenters: + - us-east-1 ++--------------------+-------+ +| system_auth | 8.06% | +| system_distributed | 0.00% | +| system_traces | 0.00% | ++--------------------+-------+ + +``` +Other tasks can be also tracked using the same command, but using different task ID. +Task IDs are present in Cluster Status as well as in task listing. + +## Clean Up + +To clean up all resources associated with Scylla Manager, you can run the commands below. + +**NOTE:** this will destroy your Scylla Manager database and delete all of its associated data. + +```console +kubectl delete -f deploy/manager-prod.yaml +``` + +## Troubleshooting + +**Manager is not running** + +If the Scylla Manager does not come up, the first step would be to examine the Manager and Controller logs: + +```console +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-controller +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-scylla-manager-7bd9f968b9-w25jw +``` + + +**My task wasn't scheduled** + +If your task wasn't scheduled, Cluster status will be updated with error messages for each failed task. +You can also consult Scylla Manager logs. + +Example: + +Following status describes error when backup task cannot be scheduled, due to lack of access to bucket: +```console +Status: + Backups: + Error: create backup target: location is not accessible: 10.100.16.62: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.100.16.62 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.107.193.33: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.107.193.33 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.109.197.60: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.109.197.60 and run "scylla-manager-agent check-location -L s3:manager-test --debug" + Id: 00000000-0000-0000-0000-000000000000 + Interval: 0 + Location: + s3:manager-test + Name: adhoc backup + Num Retries: 3 + Retention: 3 + Start Date: now + Manager Id: 2b9dbe8c-9daa-4703-a66d-c29f63a917c8 + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.0.0 +``` + +Because Controller is infinitely retrying to schedule each defined task, once permission issues will be resolved, +task should appear in task listing and Cluster status. diff --git a/v1.14/_sources/migration.md.txt b/v1.14/_sources/migration.md.txt new file mode 100644 index 00000000000..6b450637a22 --- /dev/null +++ b/v1.14/_sources/migration.md.txt @@ -0,0 +1,146 @@ +# Version migrations + + +## `v0.3.0` -> `v1.0.0` migration + +`v0.3.0` used a very common name as a CRD kind (`Cluster`). In `v1.0.0` this issue was solved by using less common kind +which is easier to disambiguate (`ScyllaCluster`). +***This change is backward incompatible, which means manual migration is needed.*** + +This procedure involves having two CRDs registered at the same time. We will detach Scylla Pods +from Scylla Operator for a short period to ensure that nothing is garbage collected when Scylla Operator is upgraded. +Compared to the [upgrade guide](upgrade.md) where full deletion is requested, this procedure shouldn't cause downtimes. +Although detaching resources from their controller is considered hacky. This means that you shouldn't run procedure +out of the box on production. Make sure this procedure works well multiple times on your staging environment first. + +***Read the whole procedure and make sure you understand what is going on before executing any of the commands!*** + +In case of any issues or questions regarding this procedure, you're welcomed on our [Scylla Users Slack](http://slack.scylladb.com/) +on #kubernetes channel. + +## Procedure + +1. Execute this whole procedure for each cluster sequentially. To get a list of existing clusters execute the following + ``` + kubectl -n scylla get cluster.scylla.scylladb.com + + NAME AGE + simple-cluster 30m + ``` + All below commands will use `scylla` namespace and `simple-cluster` as a cluster name. +1. Make sure you're using v1.0.0 tag: + ``` + git checkout v1.0.0 + ``` +1. Upgrade your `cert-manager` to `v1.0.0`. If you installed it from a static file from this repo, simply execute the following: + ``` + kubectl apply -f examples/common/cert-manager.yaml + ``` + If your `cert-manager` was installed in another way, follow official instructions on `cert-manager` website. +1. `deploy/operator.yaml` file contains multiple resources. Extract **only** `CustomResourceDefinition` to separate file. +1. Install v1.0.0 CRD definition from file created in the previous step: + ``` + kubectl apply -f examples/common/crd.yaml + ``` +1. Save your existing `simple-cluster` Cluster definition to a file: + ``` + kubectl -n scylla get cluster.scylla.scylladb.com simple-cluster -o yaml > existing-cluster.yaml + ``` +1. Migrate `Kind` and `ApiVersion` to new values using: + ``` + sed -i 's/scylla.scylladb.com\/v1alpha1/scylla.scylladb.com\/v1/g' existing-cluster.yaml + sed -i 's/kind: Cluster/kind: ScyllaCluster/g' existing-cluster.yaml + ``` +1. Install migrated CRD instance + ``` + kubectl apply -f existing-cluster.yaml + ``` + At this point, we should have two CRDs describing your Scylla cluster, although the new one is not controlled by the Operator. +1. Get UUID of newly created ScyllaCluster resource: + ``` + kubectl -n scylla get ScyllaCluster simple-cluster --template="{{ .metadata.uid }}" + + 12a3678d-8511-4c9c-8a48-fa78d3992694 + ``` + Save output UUID somewhere, it will be referred as `` in commands below. + + ***Depending on your shell, you might get additional '%' sign at the end of UUID, make sure to remove it!*** + +1. Upgrade ClusterRole attached to each of the Scylla nodes to grant them permission to lookup Scylla clusters: + ``` + kubectl patch ClusterRole simple-cluster-member --type "json" -p '[{"op":"add","path":"/rules/-","value":{"apiGroups":["scylla.scylladb.com"],"resources":["scyllaclusters"],"verbs":["get"]}}]' + ``` + Amend role name according to your cluster name, it should look like `-member`. +1. Get a list of all Services associated with your cluster. First get list of all services: + ``` + kubectl -n scylla get svc -l "scylla/cluster=simple-cluster" + + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 109m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.23.96 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 109m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.66.22 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 108m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.246.25 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 106m + + ``` +1. For each service, change its `ownerReference` to point to new CRD instance: + ``` + kubectl -n scylla patch svc --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":""}]' + ``` + Replace `` with Service name, and `` with saved UUID from one of the previous steps. +1. Get a list of all Services again to see if none was deleted. Check also "Age" column, it shouldn't be lower than previous result. + ``` + kubectl -n scylla get svc -l "scylla/cluster=simple-cluster" + + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 110m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.23.96 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 110m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.66.22 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 109m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.246.25 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 107m + + ``` +1. Get a list of StatefulSets associated with your cluster: + ``` + kubectl -n scylla get sts -l "scylla/cluster=simple-cluster" + + NAME READY AGE + simple-cluster-us-east-1-us-east-1a 3/3 104m + ``` +1. For each StatefulSet from previous step, change its `ownerReference` to point to new CRD instance. + + ``` + kubectl -n scylla patch sts --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":""}]' + ``` + Replace `` with StatefulSet name, and `` with saved UUID from one of the previous steps. + +1. Now when all k8s resources bound to Scylla are attached to new CRD, we can remove 0.3.0 Operator and old CRD definition. + Checkout `v0.3.0` version, and remove Scylla Operator, and old CRD: + ``` + git checkout v0.3.0 + kubectl delete -f examples/generic/operator.yaml + ``` +1. Checkout `v1.0.0`, and install upgraded Scylla Operator: + ``` + git checkout v1.0.0 + kubectl apply -f deploy/operator.yaml + ``` +1. Wait until Scylla Operator boots up: + ``` + kubectl -n scylla-operator-system wait --for=condition=ready pod --all --timeout=600s + ``` +1. Get a list of StatefulSets associated with your cluster: + ``` + kubectl -n scylla get sts -l "scylla/cluster=simple-cluster" + + NAME READY AGE + simple-cluster-us-east-1-us-east-1a 3/3 104m +1. For each StatefulSet from previous step, change its sidecar container image to `v1.0.0`, and wait until change will be propagated. This step will initiate a rolling restart of pods one by one. + ``` + kubectl -n scylla patch sts --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/initContainers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]' + kubectl -n scylla rollout status sts + ``` + Replace `` with StatefulSet name. +1. If you're using Scylla Manager, bump Scylla Manager Controller image to `v1.0.0` + ``` + kubectl -n scylla-manager-system patch sts scylla-manager-controller --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]' + ``` +1. Your Scylla cluster is now migrated to `v1.0.0`. diff --git a/v1.14/_sources/monitoring.md.txt b/v1.14/_sources/monitoring.md.txt new file mode 100644 index 00000000000..22bda7f2501 --- /dev/null +++ b/v1.14/_sources/monitoring.md.txt @@ -0,0 +1,181 @@ +# Monitoring + +Scylla Operator 1.8 introduced a new API resource `ScyllaDBMonitoring`, allowing users to deploy a managed monitoring +setup for their Scylla Clusters. + +```yaml +apiVersion: scylla.scylladb.com/v1alpha1 +kind: ScyllaDBMonitoring +metadata: + name: example +spec: + type: Platform + endpointsSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla-operator.scylladb.com/scylla-service-type: member + scylla/cluster: replace-with-your-scyllacluster-name + components: + prometheus: + storage: + volumeClaimTemplate: + spec: + storageClassName: scylladb-local-xfs + resources: + requests: + storage: 1Gi + grafana: + exposeOptions: + webInterface: + ingress: + ingressClassName: haproxy + dnsDomains: + - test-grafana.test.svc.cluster.local + annotations: + haproxy-ingress.github.io/ssl-passthrough: "true" +``` + +For details, refer to the below command: +```console +$ kubectl explain scylladbmonitorings.scylla.scylladb.com/v1alpha1 +``` + +## Deploy managed monitoring + +**Note**: as of v1.8, ScyllaDBMonitoring is experimental. The API is currently in version v1alpha1 and may change in future versions. + +### Requirements + +Before you can set up your ScyllaDB monitoring, you need Scylla Operator already installed in your Kubernetes cluster. +For more information on how to deploy Scylla Operator, see: +* [Deploying Scylla on a Kubernetes Cluster](generic.md) +* [Deploying Scylla stack using Helm Charts](helm.md) + +The above example of the monitoring setup also makes use of HAProxy Ingress and Prometheus Operator. +You can deploy them in your Kubernetes cluster using the provided third party examples. If you already have them deployed +in your cluster, you can skip the below steps. + +#### Deploy Prometheus Operator +Deploy Prometheus Operator using kubectl: +```console +$ kubectl -n prometheus-operator apply --server-side -f ./examples/third-party/prometheus-operator +``` + +##### Wait for Prometheus Operator to roll out +```console +$ kubectl -n prometheus-operator rollout status --timeout=5m deployments.apps/prometheus-operator +deployment "prometheus-operator" successfully rolled out +``` + +#### Deploy HAProxy Ingress +Deploy HAProxy Ingress using kubectl: +```console +$ kubectl -n haproxy-ingress apply --server-side -f ./examples/third-party/haproxy-ingress +``` + +##### Wait for HAProxy Ingress to roll out +```console +$ kubectl -n haproxy-ingress rollout status --timeout=5m deployments.apps/haproxy-ingress +deployment "haproxy-ingress" successfully rolled out +``` + +### Deploy ScyllaDBMonitoring + +First, update the `endpointsSelector` in `examples/monitoring/v1alpha1/scylladbmonitoring.yaml` with a label +matching your ScyllaCluster instance name. + +Deploy the monitoring setup using kubectl: +```console +$ kubectl -n scylla apply --server-side -f ./examples/monitoring/v1alpha1/scylladbmonitoring.yaml +``` + +Scylla Operator will notice the new ScyllaDBMonitoring object, and it will reconcile all necessary resources. + +#### Wait for ScyllaDBMonitoring to roll out +```console +$ kubectl wait --for='condition=Progressing=False' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met + +$ kubectl wait --for='condition=Degraded=False' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met + +$ kubectl wait --for='condition=Available=True' scylladbmonitorings.scylla.scylladb.com/example +scylladbmonitoring.scylla.scylladb.com/example condition met +``` + +#### Wait for Prometheus to roll out +```console +$ kubectl rollout status --timeout=5m statefulset.apps/prometheus-example +statefulset rolling update complete 1 pods at revision prometheus-example-65b89d55bb... +``` + +#### Wait for Grafana to roll out +```console +$ kubectl rollout status --timeout=5m deployments.apps/example-grafana +deployment "example-grafana" successfully rolled out +``` + +### Accessing Grafana + +For accessing Grafana service from outside the Kubernetes cluster we recommend using an Ingress, although there are many other ways to do so. +When using Ingress, what matters is to direct your packets to the ingress controller Service/Pods and have the correct TLS SNI field set by the caller when reaching out to the service, so it is routed properly, and your client can successfully validate the grafana serving certificate. +This is easier when you are using a real DNS domain that resolves to your Ingress controller's IP address but most clients and tools allow setting the SNI field manually. + +### Prerequisites + +To access Grafana, you first need to collect the serving CA and the credentials. + +```console +$ GRAFANA_SERVING_CERT="$( kubectl -n scylla get secret/example-grafana-serving-ca --template '{{ index .data "tls.crt" }}' | base64 -d )" +$ GRAFANA_USER="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "username" }}' | base64 -d )" +$ GRAFANA_PASSWORD="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "password" }}' | base64 -d )" +``` + +### Connecting through Ingress using a resolvable domain + +In production clusters, the Ingress controller and appropriate DNS records should be set up already. Often there is already a generic wildcard record like `*.app.mydomain` pointing to the Ingress controller's external IP. For custom service domains, it is usually a CNAME pointing to the Ingress controller's A record. + +Note: The ScyllaDBMonitoring example creates an Ingress object with `test-grafana.test.svc.cluster.local` DNS domain that you should adjust to your domain. Below examples use `example-grafana.apps.mydomain`. + +Note: To test a resolvable domain from your machine without creating DNS records, you can adjust `/etc/hosts` or similar. + +```console +$ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://example-grafana.apps.mydomain" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}" +200 +``` + +### Connecting through Ingress using an unresolvable domain + +To connect to an Ingress without a resolvable domain you first need to find out your Ingress controller's IP that can be resolved externally. Again, there are many ways to do so beyond the below examples. + +Unless stated otherwise, we assume your Ingress is running on port 443. + +```console +$ INGRESS_PORT=443 +``` + +#### Variants + +##### Ingress ExternalIP + +When you are running in a real cluster there is usually a cloud LoadBalancer or a bare metal alternative providing you with an externally reachable IP address. + +```console +$ INGRESS_IP="$( kubectl -n=haproxy-ingress get service/haproxy-ingress --template='{{ ( index .status.loadBalancer.ingress 0 ).ip }}' )" +``` + +##### Ingress NodePort + +NodePort is slightly less convenient, but it's available in development clusters as well. + +```console +$ INGRESS_IP="$( kubectl get nodes --template='{{ $internal_ip := "" }}{{ $external_ip := "" }}{{ range ( index .items 0 ).status.addresses }}{{ if eq .type "InternalIP" }}{{ $internal_ip = .address }}{{ else if eq .type "ExternalIP" }}{{ $external_ip = .address }}{{ end }}{{ end }}{{ if $external_ip }}{{ $external_ip }}{{ else }}{{ $internal_ip }}{{ end }}' )" +$ INGRESS_PORT="$( kubectl -n=haproxy-ingress get services/haproxy-ingress --template='{{ range .spec.ports }}{{ if eq .port 443 }}{{ .nodePort }}{{ end }}{{ end }}' )" +``` + +##### Connection + +```console +$ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://test-grafana.test.svc.cluster.local:${INGRESS_PORT}" --resolve "test-grafana.test.svc.cluster.local:${INGRESS_PORT}:${INGRESS_IP}" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}" +200 +``` diff --git a/v1.14/_sources/multidc/eks.md.txt b/v1.14/_sources/multidc/eks.md.txt new file mode 100644 index 00000000000..266dd7d3a4d --- /dev/null +++ b/v1.14/_sources/multidc/eks.md.txt @@ -0,0 +1,168 @@ +# Build multiple Amazon EKS clusters with inter-Kubernetes networking + +This document describes the process of creating multiple Amazon EKS clusters in different regions, using separate VPCs, and explains the steps necessary for configuring inter-Kubernetes networking between the clusters. +The interconnected clusters can serve as a platform for [deploying a multi-datacenter ScyllaDB cluster](multidc.md). + +This guide will walk you through the process of creating and configuring EKS clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference. + +## Prerequisites + +To follow the below guide, you first need to install and configure the tools that you will need to create and manage AWS and Kubernetes resources: +- eksctl – A command line tool for working with EKS clusters. +- kubectl – A command line tool for working with Kubernetes clusters. + +For more information see [Getting started with Amazon EKS – eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) in AWS documentation. + +## Create EKS clusters + +### Create the first EKS cluster + +Below is the required specification for the first cluster. + +```yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: scylladb-us-east-1 + region: us-east-1 + +availabilityZones: +- us-east-1a +- us-east-1b +- us-east-1c + +vpc: + cidr: 10.0.0.0/16 + +nodeGroups: + ... +``` + +Specify the first cluster's configuration file and save it as `cluster-us-east-1.yaml`. +Refer to [Creating an EKS cluster](../eks.md#creating-an-eks-cluster) section of ScyllaDB Operator documentation for the reference of the configuration of node groups. + +To deploy the first cluster, use the below command: +```shell +eksctl create cluster -f=cluster-us-east-1.yaml +``` + +Run the following command to learn the status and VPC ID of the cluster: +```shell +eksctl get cluster --name=scylladb-us-east-1 --region=us-east-1 +``` + +You will need to get the cluster's context for future operations. To do so, use the below command: +```shell +kubectl config current-context +``` + +For any `kubectl` commands that you will want to run against this cluster, use the `--context` flag with the value returned by the above command. + +#### Deploy ScyllaDB Operator + +Once the cluster is ready, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) to deploy the ScyllaDB Operator and its prerequisites. + +#### Prepare nodes for running ScyllaDB + +Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in [Deploying Scylla on EKS](../eks.md#prerequisites) in ScyllaDB Operator documentation. + +### Create the second EKS cluster + +Below is the required specification for the second cluster. As was the case with the first cluster, the provided values are only exemplary and can be adjusted according to your needs. + +:::{caution} +It is required that the VPCs of the two EKS clusters have non-overlapping IPv4 network ranges. +::: + +```yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: scylladb-us-east-2 + region: us-east-2 + +availabilityZones: +- us-east-2a +- us-east-2b +- us-east-2c + +vpc: + cidr: 172.16.0.0/16 + +nodeGroups: + ... +``` + +Follow analogous steps to create the second EKS cluster and prepare it for running ScyllaDB. + +## Configure the network + +The prepared Kubernetes clusters each have a dedicated VPC network. +To be able to route the traffic between the two VPC networks, you need to create a networking connection between them, otherwise known as [VPC peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). + +### Create VPC peering + +Refer to [Create a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html#create-vpc-peering-connection-local) in AWS documentation for instructions on creating a VPC peering connection between the two earlier created VPCs. + +In this example, the ID of the created VPC peering connection is `pcx-08077dcc008fbbab6`. + +### Update route tables + +To enable private IPv4 traffic between the instances in the VPC peered network, you need to establish a communication channel by adding a route to the route tables associated with all the subnets associated with the instances for both VPCs. +The destination of the new route in a given route table is the CIDR of the VPC of the other cluster and the target is the ID of the VPC peering connection. + +The following is an example of the route tables that enable communication of instances in two peered VPCs. Each table has a local route and the added route which sends traffic targeted at the other VPC to the peered network connection. The other preconfigured routes are omitted for readability. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                Route tableDestinationTarget
                eksctl-scylladb-us-east-1-cluster/PublicRouteTable10.0.0.0/16local
                172.16.0.0/16pcx-08077dcc008fbbab6
                eksctl-scylladb-us-east-2-cluster/PublicRouteTable172.16.0.0/16local
                10.0.0.0/16pcx-08077dcc008fbbab6
                + + +Refer to [Update your route tables for a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html) in AWS documentation for more information. + +### Update security groups + +To allow traffic to flow to and from instances associated with security groups in the peered VPC, you need to update the inbound rules of the VPCs' shared security groups. + +Below is an example of the inbound rules that to be added to the corresponding security groups of the two VPCs. + +| Security group name | Type | Protocol | Port range | Source | +|--------------------------------------------------------------------------------|-------------|----------|------------|----------------------| +| eksctl-scylladb-us-east-1-cluster-ClusterSharedNodeSecurityGroup-TD05V9EVU3B8 | All traffic | All | All | Custom 172.16.0.0/16 | +| eksctl-scylladb-us-east-2-cluster-ClusterSharedNodeSecurityGroup-1FR9YDLU0VE7M | All traffic | All | All | Custom 10.0.0.0/16 | + +The names of the shared security groups of your VPCs should be similar to the ones presented in the example. + +--- + +Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to [Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters](multidc.md) in ScyllaDB Operator documentation for guidance. diff --git a/v1.14/_sources/multidc/gke.md.txt b/v1.14/_sources/multidc/gke.md.txt new file mode 100644 index 00000000000..b119d9e9b3b --- /dev/null +++ b/v1.14/_sources/multidc/gke.md.txt @@ -0,0 +1,156 @@ +# Build multiple GKE clusters with inter-Kubernetes networking + +This document describes the process of creating multiple GKE clusters in a shared VPC and explains the steps necessary for configuring inter-Kubernetes networking between clusters in different regions. +The interconnected clusters can serve as a platform for [deploying a Multi Datacenter ScyllaDB cluster](multidc.md). + +This guide will walk you through the process of creating and configuring GKE clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference. + +## Prerequisites + +To follow the below guide, you first need to install and configure the following tools that you will need to create and manage GCP and Kubernetes resources: +- gcloud CLI - Google Cloud Command Line Interface, a command line tool for working with Google Cloud resources and services directly. +- kubectl – A command line tool for working with Kubernetes clusters. + +See [Install the Google Cloud CLI](https://cloud.google.com/sdk/docs/install-sdk) in GCP documentation and [Install Tools](https://kubernetes.io/docs/tasks/tools/) in Kubernetes documentation for reference. + +## Create and configure a VPC network + +For the clusters to have inter-Kubernetes networking, you will create a virtual network shared between all the instances, with dedicated subnets for each of the clusters. +To create the subnets manually, create the network in custom subnet mode. + +### Create the VPC network + +Run the below command to create the network: +```shell +gcloud compute networks create scylladb --subnet-mode=custom +``` + +With the VPC network created, create a dedicated subnet with secondary CIDR ranges for their Pod and Service pools in each region which the clusters will reside in. + +### Create VPC network subnets + +To create a subnet for the first cluster in region `us-east1`, run the below command: +```shell +gcloud compute networks subnets create scylladb-us-east1 \ + --region=us-east1 \ + --network=scylladb \ + --range=10.0.0.0/20 \ + --secondary-range='cluster=10.1.0.0/16,services=10.2.0.0/20' +``` + +To create a subnet for the second cluster in region `us-west1`, run the below command: +```shell +gcloud compute networks subnets create scylladb-us-west1 \ + --region=us-west1 \ + --network=scylladb \ + --range=172.16.0.0/20 \ + --secondary-range='cluster=172.17.0.0/16,services=172.18.0.0/20' +``` + +:::{caution} +It is required that the IPv4 address ranges of the subnets allocated for the GKE clusters do not overlap. +::: + +Refer to [Create a VPC-native cluster](https://cloud.google.com/kubernetes-engine/docs/how-to/alias-ips) and [Alias IP ranges](https://cloud.google.com/vpc/docs/alias-ip) in GKE documentation for more information about VPC native clusters and alias IP ranges. + +## Create GKE clusters + +With the VPC network created, you will now create two VPC native GKE clusters in dedicated regions. + +### Create the first GKE cluster + +Run the following command to create the first GKE cluster in the `us-east1` region: +```shell +gcloud container clusters create scylladb-us-east1 \ + --location=us-east1-b \ + --node-locations='us-east1-b,us-east1-c' \ + --machine-type=n1-standard-8 \ + --num-nodes=1 \ + --disk-type=pd-ssd \ + --disk-size=20 \ + --image-type=UBUNTU_CONTAINERD \ + --no-enable-autoupgrade \ + --no-enable-autorepair \ + --enable-ip-alias \ + --network=scylladb \ + --subnetwork=scylladb-us-east1 \ + --cluster-secondary-range-name=cluster \ + --services-secondary-range-name=services +``` + +Refer to [Creating a GKE cluster](../gke.md#creating-a-gke-cluster) section of ScyllaDB Operator documentation for more information regarding the configuration and deployment of additional node pools, including the one dedicated for ScyllaDB nodes. + +You will need to get the cluster's context for future operations. To do so, use the below command: +```shell +kubectl config current-context +``` + +For any `kubectl` commands that you will want to run against this cluster, use the `--context` flag with the value returned by the above command. + +#### Deploy ScyllaDB Operator + +Once the cluster is ready, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) to deploy the ScyllaDB Operator and its prerequisites. + +#### Prepare nodes for running ScyllaDB + +Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in [Deploying Scylla on GKE](../gke.md) page of the documentation. + +### Create the second GKE cluster + +Run the following command to create the second GKE cluster in the `us-west1` region: +```shell +gcloud container clusters create scylladb-us-west1 \ + --location=us-west1-b \ + --node-locations='us-west1-b,us-west1-c' \ + --machine-type=n1-standard-8 \ + --num-nodes=1 \ + --disk-type=pd-ssd \ + --disk-size=20 \ + --image-type=UBUNTU_CONTAINERD \ + --no-enable-autoupgrade \ + --no-enable-autorepair \ + --enable-ip-alias \ + --network=scylladb \ + --subnetwork=scylladb-us-west1 \ + --cluster-secondary-range-name=cluster \ + --services-secondary-range-name=services +``` + +Follow analogous steps to create the second GKE cluster and prepare it for running ScyllaDB. + +## Configure the firewall rules + +When creating a cluster, GKE creates several ingress firewall rules that enable the instances to communicate with each other. +To establish interconnectivity between the two created Kubernetes clusters, you will now add the allocated IPv4 address ranges to their corresponding source address ranges. + +First, retrieve the name of the firewall rule associated with the first cluster, which permits traffic between all Pods on a cluster, as required by the Kubernetes networking model. +The rule name is in the following format: `gke-[cluster-name]-[cluster-hash]-all`. + +To retrieve it, run the below command: +```shell +gcloud compute firewall-rules list --filter='name~gke-scylladb-us-east1-.*-all' +``` + +The output should resemble the following: +```console +NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED +gke-scylladb-us-east1-f17db261-all scylladb INGRESS 1000 udp,icmp,esp,ah,sctp,tcp False +``` + +Modify the rule by updating the rule's source ranges with the allocated Pod IPv4 address ranges of both clusters: +```shell +gcloud compute firewall-rules update gke-scylladb-us-east1-f17db261-all --source-ranges='10.1.0.0/16,172.17.0.0/16' +``` + +Follow the analogous steps for the other cluster. In this example, its corresponding firewall rule name is `gke-scylladb-us-west1-0bb60902-all`. To update it, you would run: +```shell +gcloud compute firewall-rules update gke-scylladb-us-west1-0bb60902-all --source-ranges='10.1.0.0/16,172.17.0.0/16' +``` + +Refer to [Automatically created firewall rules](https://cloud.google.com/kubernetes-engine/docs/concepts/firewall-rules) in GKE documentation for more information. + +--- + +Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to [Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters](multidc.md) in ScyllaDB Operator documentation for guidance. diff --git a/v1.14/_sources/multidc/index.rst.txt b/v1.14/_sources/multidc/index.rst.txt new file mode 100644 index 00000000000..a2f1eae7709 --- /dev/null +++ b/v1.14/_sources/multidc/index.rst.txt @@ -0,0 +1,18 @@ +========================================================== +Deploying multi-datacenter ScyllaDB clusters in Kubernetes +========================================================== + +Prepare a platform for a multi datacenter ScyllaDB cluster deployment: + +.. toctree:: + :maxdepth: 1 + + eks + gke + +Deploy a multi-datacenter ScyllaDB cluster in Kubernetes: + +.. toctree:: + :maxdepth: 1 + + multidc diff --git a/v1.14/_sources/multidc/multidc.md.txt b/v1.14/_sources/multidc/multidc.md.txt new file mode 100644 index 00000000000..806e6bb5151 --- /dev/null +++ b/v1.14/_sources/multidc/multidc.md.txt @@ -0,0 +1,601 @@ +# Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters + +This document describes the process of deploying a Multi Datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters. + +This guide will walk you through the example procedure of deploying two datacenters in distinct regions of a selected cloud provider. + +:::{note} +This guide is dedicated to deploying multi-datacenter ScyllaDB clusters and does not discuss unrelated configuration options. +For details of ScyllaDB cluster deployments and their configuration, refer to [Deploying Scylla on a Kubernetes Cluster](../generic.md) in ScyllaDB Operator documentation. +::: + +## Prerequisites + +As this document describes the procedure of deploying a Multi Datacenter ScyllaDB cluster, you are expected to have the required infrastructure prepared. +Let's assume two interconnected Kubernetes clusters, capable of communicating with each other over PodIPs, with each cluster meeting the following requirements: +- a node pool dedicated to ScyllaDB nodes composed of at least 3 nodes running in different zones (with unique `topology.kubernetes.io/zone` label), configured to run ScyllaDB, each labeled with `scylla.scylladb.com/node-type: scylla` +- running ScyllaDB Operator and its prerequisites +- running a storage provisioner capable of provisioning XFS volumes of StorageClass `scylladb-local-xfs` in each of the nodes dedicated to ScyllaDB instances + +You can refer to one of our guides describing the process of preparing such infrastructure: +- [Build multiple Amazon EKS clusters with Inter-Kubernetes networking](eks.md) +- [Build multiple GKE clusters with Inter-Kubernetes networking](gke.md) + +Additionally, to follow the below guide, you need to install and configure the following tools that you will need to manage Kubernetes resources: +- kubectl – A command line tool for working with Kubernetes clusters. + +See [Install Tools](https://kubernetes.io/docs/tasks/tools/) in Kubernetes documentation for reference. + +## Multi Datacenter ScyllaDB Cluster + +In v1.11, ScyllaDB Operator introduced support for manual multi-datacenter ScyllaDB cluster deployments. + +:::{warning} +ScyllaDB Operator only supports *manual configuration* of multi-datacenter ScyllaDB clusters. +In other words, although ScyllaCluster API exposes the machinery necessary for setting up multi-datacenter ScylaDB clusters, the ScyllaDB Operator only automates operations for a single datacenter. + +Operations related to multiple datacenters may require manual intervention of a human operator. +Most notably, destroying one of the Kubernetes clusters or ScyllaDB datacenters is going to leave DN nodes behind in other datacenters, and their removal has to be carried out manually. +::: + +The main mechanism used to set up a manual multi-datacenter ScyllaDB cluster is a field in ScyllaCluster's specification - `externalSeeds`. + +### External seeds + +The `externalSeeds` field in ScyllaCluster's specification enables control over external seeds that are propagated to ScyllaDB binary as `--seed-provider-parameters seeds=`. +In this context, external should be understood as "external to the datacenter being specified by the API". +The provided seeds are used by the nodes as initial points of contact, which allows them to discover the cluster ring topology when joining it. + +Refer to [Scylla Seed Nodes](https://opensource.docs.scylladb.com/stable/kb/seed-nodes.html) in ScyllaDB documentation for more information regarding the function of seed nodes in ScyllaDB. +For more details regarding the function and implementation of external seeds, refer to [the original enhancement proposal](https://github.com/scylladb/scylla-operator/tree/v1.11/enhancements/proposals/1304-external-seeds). + +### Networking + +Since this guide assumes interconnectivity over PodIPs of the Kubernetes clusters, you are going to configure the ScyllaDB cluster's nodes to communicate over PodIPs. +This is enabled by a subset of `exposeOptions` specified in ScyllaCluster API, introduced in v1.11. + +For this particular setup, define the ScyllaClusers as follows: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +spec: + exposeOptions: + nodeService: + type: Headless + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP +``` + +However, other configuration options allow for the manual deployment of multi-datacenter ScyllaDB clusters in different network setups. For details, refer to [Exposing ScyllaClusters](../exposing.md) in ScyllaDB Operator documentation. + +#### Deploy a multi-datacenter ScyllaDB Cluster + +#### Using context + +Let's specify contexts for `kubectl` commands used throughout the guide. +To retrieve the context of your current cluster, run: +```shell +kubectl config current-context +``` + +Save the contexts of the two clusters, which you are going to deploy the datacenters in, as `CONTEXT_DC1` and `CONTEXT_DC2` environment variables correspondingly. + +#### Deploy the first datacenter + +First, run the below command to create a dedicated 'scylla' namespace: +```shell +kubectl --context="${CONTEXT_DC1}" create ns scylla +``` + +For this guide, let's assume that your cluster is running in `us-east-1` region and the nodes dedicated to running ScyllaDB nodes are running in zones `us-east-1a`, `us-east-1b` and `us-east-1c` correspondingly. If that is not the case, adjust the manifest accordingly. + +:::{caution} +The `.spec.name` field of the ScyllaCluster objects represents the ScyllaDB cluster name and has to be consistent across all datacenters of this ScyllaDB cluster. +The names of the datacenters, specified in `.spec.datacenter.name`, have to be unique across the entire multi-datacenter cluster. + +For more information see [Create a ScyllaDB Cluster - Multi Data Centers (DC)](https://opensource.docs.scylladb.com/stable/operating-scylla/procedures/cluster-management/create-cluster-multidc.html) in ScyllaDB documentation. +::: + +Save the ScyllaCluster manifest in `dc1.yaml`: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: scylla-cluster + namespace: scylla +spec: + agentVersion: 3.3.0 + version: 6.1.1 + cpuset: true + sysctls: + - "fs.aio-max-nr=2097152" + automaticOrphanedNodeCleanup: true + exposeOptions: + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP + nodeService: + type: Headless + datacenter: + name: us-east-1 + racks: + - name: a + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1a + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: b + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1b + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: c + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1c + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule +``` + +Apply the manifest: +```shell +kubectl --context="${CONTEXT_DC1}" apply --server-side -f=dc1.yaml +``` + +Wait for the cluster to be fully rolled out: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +You can now verify that all the nodes of your cluster are in UN state: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla exec -it pod/scylla-cluster-us-east-1-a-0 -c=scylla -- nodetool status +``` + +The expected output should look similar to the below: +```console +Datacenter: us-east-1 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 10.0.70.195 290 KB 256 ? 494277b9-121c-4af9-bd63-3d0a7b9305f7 c +UN 10.0.59.24 559 KB 256 ? a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37 b +UN 10.0.19.237 107 KB 256 ? 64b6292a-327f-4128-852a-6004039f402e a +``` + +##### Retrieve PodIPs of ScyllaDB nodes for use as external seeds + +:::{warning} +Due to the ephemeral nature of PodIPs, it is ill-advised to use them as seeds in production environments. +This is because there is a high likelihood that the Pods of your ScyllaDB clusters will change their IPs during the cluster's lifecycle, and so the provided seeds will no longer point to the ScyllaDB nodes. +It is undesired, as the seeds provided on node's startup may serve as fallback contact points when all of the node's peers are unreachable. +In production environments, it is recommended that you use domain names or non-ephemeral IP addresses as external seeds. +PodIPs are being used in this example for the sheer simplicity of this setup. +::: + +Use the below commands and their expected outputs as a reference for retrieving the PodIPs used by the cluster for inter-node communication. +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-a-0 --template='{{ .status.podIP }}' +``` +```console +10.0.19.237 +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-b-0 --template='{{ .status.podIP }}' +``` +```console +10.0.59.24 +``` + +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-c-0 --template='{{ .status.podIP }}' +``` +```console +10.0.70.195 +``` + +You are going to utilize the retrieved addresses as seeds for the other datacenter. + +#### Deploy the second datacenter + +To deploy the second datacenter, you will follow similar steps. + +First, create a dedicated 'scylla' namespace: +```shell +kubectl --context="${CONTEXT_DC2}" create ns scylla +``` + +Replace the values in `.spec.externalSeeds` of the below manifest with the Pod IP addresses that you retrieved earlier. +The provided values are going to serve as initial contact points for the joining nodes of the second datacenter. + +For this guide, let's assume that the second cluster is running in `us-east-2` region and the nodes dedicated for running ScyllaDB nodes are running in zones `us-east-2a`, `us-east-2b` and `us-east-2c` correspondingly. If that is not the case, adjust the manifest accordingly. +Having configured it, save the manifest as `dc2.yaml`: +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: scylla-cluster + namespace: scylla +spec: + agentVersion: 3.3.0 + version: 6.1.1 + cpuset: true + sysctls: + - "fs.aio-max-nr=2097152" + automaticOrphanedNodeCleanup: true + exposeOptions: + broadcastOptions: + clients: + type: PodIP + nodes: + type: PodIP + nodeService: + type: Headless + externalSeeds: + - 10.0.19.237 + - 10.0.59.24 + - 10.0.70.195 + datacenter: + name: us-east-2 + racks: + - name: a + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2a + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: b + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2b + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: c + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + agentResources: + requests: + cpu: 100m + memory: 250M + limits: + cpu: 100m + memory: 250M + resources: + requests: + cpu: 7 + memory: 56G + limits: + cpu: 7 + memory: 56G + placement: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/name: scylla + scylla/cluster: scylla-cluster + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-2c + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule +``` + +To apply the manifest, run: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla apply --server-side -f=dc2.yaml +``` + +Wait for the second datacenter to roll out: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster +``` +```console +scyllacluster.scylla.scylladb.com/scylla-cluster condition met +``` + +You can verify that the nodes have joined the existing cluster and that you are now running a multi-datacenter ScyllaDB cluster by running `nodetool status` with the below command: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla exec -it pod/scylla-cluster-us-east-2-a-0 -c=scylla -- nodetool status +``` +```console +Datacenter: us-east-1 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 10.0.70.195 705 KB 256 ? 494277b9-121c-4af9-bd63-3d0a7b9305f7 c +UN 10.0.59.24 764 KB 256 ? a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37 b +UN 10.0.19.237 634 KB 256 ? 64b6292a-327f-4128-852a-6004039f402e a +Datacenter: us-east-2 +===================== +Status=Up/Down +|/ State=Normal/Leaving/Joining/Moving +-- Address Load Tokens Owns Host ID Rack +UN 172.16.39.209 336 KB 256 ? 7c30ea55-7a4f-4d93-86f7-c881772ebe62 b +UN 172.16.25.18 759 KB 256 ? 665dde7e-e420-4db3-8c54-ca71efd39b2e a +UN 172.16.87.27 503 KB 256 ? c19c89cb-e24c-4062-9df4-2aa90ab29a99 c +``` + +## Scylla Manager + +To integrate a multi-datacenter ScyllaDB cluster with Scylla Manager, you must deploy the Scylla Manager in only one datacenter. + +In this example, let's choose the Kubernetes cluster deployed in the first datacenter to host it. +To deploy Scylla Manager, follow the steps described in [Deploying Scylla Manager on a Kubernetes Cluster](../manager.md) +in ScyllaDB Operator documentation. + +In order to define the Scylla Manager tasks, add them to the ScyllaCluster object deployed in the same Kubernetes cluster +in which your Scylla Manager is running. + +Every datacenter (represented by ScyllaCluster CR) is, by default, provisioned with a new, random Scylla Manager Agent auth token. +To use Scylla Manager with multiple datacenter (represented by ScyllaClusters), you have to make sure they all use the same token. + +Extract it from the first datacenter with the below command: +```shell +kubectl --context="${CONTEXT_DC1}" -n=scylla get secrets/scylla-cluster-auth-token --template='{{ index .data "auth-token.yaml" }}' | base64 -d +``` +```console +auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf +``` + +Save the output, replace the token with your own, and patch the secret in the second datacenter with the below command: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla patch secret/scylla-cluster-auth-token--type='json' -p='[{"op": "add", "path": "/stringData", "value": {"auth-token.yaml": "auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf"}}]' +``` + +Execute a rolling restart of the nodes in DC2 to make sure they pick up the new token: +```shell +kubectl --context="${CONTEXT_DC2}" -n=scylla patch scyllacluster/scylla-cluster --type='merge' -p='{"spec": {"forceRedeploymentReason": "sync scylla-manager-agent token ('"$( date )"')"}}' +``` + + +## ScyllaDBMonitoring + +To monitor your cluster, deploy ScyllaDBMonitoring in every datacenter independently. +To deploy ScyllaDB Monitoring, follow the steps described in [Deploy managed monitoring](../monitoring.md#deploy-managed-monitoring) in ScyllaDB Operator documentation. diff --git a/v1.14/_sources/nodeoperations/automatic-cleanup.md.txt b/v1.14/_sources/nodeoperations/automatic-cleanup.md.txt new file mode 100644 index 00000000000..5e0535cca97 --- /dev/null +++ b/v1.14/_sources/nodeoperations/automatic-cleanup.md.txt @@ -0,0 +1,6 @@ +# Automatic cleanup and replacement in case when k8s node is lost + +In case when your k8s cluster loses one of the nodes due to incident or explicit removal, Scylla Pods may become unschedulable due to PVC node affinity. + +When `automaticOrphanedNodeCleanup` flag is enabled in your ScyllaCluster, Scylla Operator will perform automatic +node replacement of a Pod which lost his bound resources. diff --git a/v1.14/_sources/nodeoperations/index.rst.txt b/v1.14/_sources/nodeoperations/index.rst.txt new file mode 100644 index 00000000000..bf481452d7c --- /dev/null +++ b/v1.14/_sources/nodeoperations/index.rst.txt @@ -0,0 +1,12 @@ +====================================== +Node operations using Scylla Operator +====================================== + +.. toctree:: + :maxdepth: 1 + + scylla-upgrade + replace-node + automatic-cleanup + maintenance-mode + restore diff --git a/v1.14/_sources/nodeoperations/maintenance-mode.md.txt b/v1.14/_sources/nodeoperations/maintenance-mode.md.txt new file mode 100644 index 00000000000..c976ecc2b87 --- /dev/null +++ b/v1.14/_sources/nodeoperations/maintenance-mode.md.txt @@ -0,0 +1,19 @@ +# Maintenance mode + +When maintenance mode is enabled, readiness probe of Scylla Pod will always return failure and liveness probe will always succeed. This causes that Pod under maintenance +is being removed from K8s Load Balancer and DNS registry but Pod itself stays alive. + +This allows the Scylla Operator to interact with Scylla and Scylla dependencies inside the Pod. +For example user may turn off Scylla process, do something with the filesystem and bring the process back again. + +To enable maintenance mode add `scylla/node-maintenance` label to service in front of Scylla Pod. + +```bash +kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance="" +``` + +To disable, simply remove this label from service. + +```bash +kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance- +``` diff --git a/v1.14/_sources/nodeoperations/replace-node.md.txt b/v1.14/_sources/nodeoperations/replace-node.md.txt new file mode 100644 index 00000000000..3e6a8c7f024 --- /dev/null +++ b/v1.14/_sources/nodeoperations/replace-node.md.txt @@ -0,0 +1,74 @@ +# Replacing a Scylla node + +## Replacing a dead node +In the case of a host failure, it may not be possible to bring back the node to life. + +Replace dead node operation will cause the other nodes in the cluster to stream data to the node that was replaced. +This operation can take some time (depending on the data size and network bandwidth). + +_This procedure is for replacing one dead node. To replace more than one dead node, run the full procedure to completion one node at a time_ + +**Procedure** + +1. Verify the status of the node using `nodetool status` command, the node with status DN is down and need to be replaced + ```bash + kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status + Datacenter: us-east-1 + ===================== + Status=Up/Down + |/ State=Normal/Leaving/Joining/Moving + -- Address Load Tokens Owns Host ID Rack + UN 10.43.125.110 74.63 KB 256 ? 8ebd6114-969c-44af-a978-87a4a6c65c3e us-east-1a + UN 10.43.231.189 91.03 KB 256 ? 35d0cb19-35ef-482b-92a4-b63eee4527e5 us-east-1a + DN 10.43.43.51 74.77 KB 256 ? 1ffa7a82-c41c-4706-8f5f-4d45a39c7003 us-east-1a + ``` +1. Identify service which is bound to down node by checking IP address + ```bash + kubectl -n scylla get svc + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + simple-cluster-client ClusterIP None 9180/TCP 3h12m + simple-cluster-us-east-1-us-east-1a-0 ClusterIP 10.43.231.189 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h12m + simple-cluster-us-east-1-us-east-1a-1 ClusterIP 10.43.125.110 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h11m + simple-cluster-us-east-1-us-east-1a-2 ClusterIP 10.43.43.51 7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP 3h5m + ``` +1. Drain node which we would like to replace using. **This command may delete your data from local disks attached to given node!** + ```bash + kubectl drain gke-scylla-demo-default-pool-b4b390a1-6j12 --ignore-daemonsets --delete-local-data + ``` + + Pod which will be replaced should enter the `Pending` state + ```bash + kubectl -n scylla get pods + NAME READY STATUS RESTARTS AGE + simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 3h21m + simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 3h19m + simple-cluster-us-east-1-us-east-1a-2 0/2 Pending 0 8m14s + ``` +1. To being node replacing, add `scylla/replace=""` label to service bound to pod we are replacing. + ```bash + kubectl -n scylla label svc simple-cluster-us-east-1-us-east-1a-2 scylla/replace="" + ``` + Your failed Pod should be recreated on available k8s node + ```bash + kubectl -n scylla get pods + NAME READY STATUS RESTARTS AGE + simple-cluster-us-east-1-us-east-1a-0 2/2 Running 0 3h27m + simple-cluster-us-east-1-us-east-1a-1 2/2 Running 0 3h25m + simple-cluster-us-east-1-us-east-1a-2 1/2 Running 0 9s + ``` + Because other nodes in cluster must stream data to new node this operation might take some time depending on how much data your cluster stores. + After bootstraping is over, your new Pod should be ready to go. + Old one shouldn't be no longer visible in `nodetool status` + ```bash + kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status + Datacenter: us-east-1 + ===================== + Status=Up/Down + |/ State=Normal/Leaving/Joining/Moving + -- Address Load Tokens Owns Host ID Rack + UN 10.43.125.110 74.62 KB 256 ? 8ebd6114-969c-44af-a978-87a4a6c65c3e us-east-1a + UN 10.43.231.189 91.03 KB 256 ? 35d0cb19-35ef-482b-92a4-b63eee4527e5 us-east-1a + UN 10.43.191.172 74.77 KB 256 ? 1ffa7a82-c41c-4706-8f5f-4d45a39c7003 us-east-1a + ``` +1. Run the repair on the cluster to make sure that the data is synced with the other nodes in the cluster. + You can use [Scylla Manager](../manager.md) to run the repair. diff --git a/v1.14/_sources/nodeoperations/restore.md.txt b/v1.14/_sources/nodeoperations/restore.md.txt new file mode 100644 index 00000000000..91f36704386 --- /dev/null +++ b/v1.14/_sources/nodeoperations/restore.md.txt @@ -0,0 +1,239 @@ +# Restore from backup + +This procedure will describe how to restore from backup taken using [Scylla Manager](../manager.md) to a fresh **empty** cluster of any size. + +:::{warning} +Restoring schema with **ScyllaDB OS 5.4.X** or **ScyllaDB Enterprise 2024.1.X** and `consistent_cluster_management` isn’t supported. + +When creating the `target` ScyllaDB cluster, configure it with `consistent_cluster_management: false`. +Refer to [API Reference](../api-reference/index.rst) to learn how to customize ScyllaDB configuration files. + +When following the steps for schema restore, ensure you follow the additional steps dedicated to affected ScyllaDB versions. +::: + +In the following example, the ScyllaCluster, which was used to take the backup, is called `source`. Backup will be restored into the ScyllaCluster named `target`. + +::::{tab-set} +:::{tab-item} Source ScyllaCluster +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: source +spec: + agentVersion: 3.3.0 + version: 6.1.1 + developerMode: true + backups: + - name: foo + location: + - s3:source-backup + keyspace: + - '*' + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 1 + storage: + capacity: 1Gi + resources: + limits: + cpu: 1 + memory: 1Gi +``` +::: +:::{tab-item} Target ScyllaCluster +```yaml +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: target +spec: + agentVersion: 3.3.0 + version: 6.1.1 + developerMode: true + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 1 + storage: + capacity: 1Gi + resources: + limits: + cpu: 1 + memory: 1Gi +``` +::: +:::: + +Make sure your target cluster is already registered in Scylla Manager. To get a list of all registered clusters, execute the following command: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool cluster list ++--------------------------------------+---------------------------------------+---------+-----------------+ +| ID | Name | Port | CQL credentials | ++--------------------------------------+---------------------------------------+---------+-----------------+ +| af1dd5cd-0406-4974-949f-dc9842980080 | scylla/target | default | set | +| ebd82268-efb7-407e-a540-3619ae053778 | scylla/source | default | set | ++--------------------------------------+---------------------------------------+---------+-----------------+ +``` + +Identify the tag of a snapshot which you want to restore. To get a list of all available snapshots, execute following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c --all-clusters -L +``` + +Where: +* `CLUSTER_ID` - the name or ID of a registered cluster with access to `BACKUP_LOCATION`. +* `BACKUP_LOCATION` - the location in which the backup is stored. + +In this example, `BACKUP_LOCATION` is `s3:source-backup`. Use the name of cluster which has access to the backup location for `CLUSTER_ID`. +In this example, it's `scylla/target`. + +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c scylla/target --all-clusters -L s3:source-backup +backup/ff36d7e0-af2e-458c-afe6-868e0f3396b2 +Snapshots: + - sm_20240105115931UTC (409MiB, 1 nodes) +Keyspaces: + - system_schema (15 tables) + - users (9 tables) + +``` + +## Restore schema + +In the below commands, we are restoring the `sm_20240105115931UTC` snapshot. Replace it with a tag of a snapshot that you want to restore. +Restoring consist of two steps. First, you'll restore the schema, and then the data. +To restore schema, create a restore task manually on target ScyllaCluster by executing following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c -L -T --restore-schema +``` + +Where: +* `CLUSTER_ID` - a name or ID of a cluster you want to restore into. +* `BACKUP_LOCATION` - the location in which the backup is stored. +* `SNAPSHOT_TAG` - a tag of a snapshot that you want to restore. + +When the task is created, the command will output the ID of a restore task. +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-schema +restore/57228c52-7cf6-4271-8c8d-d446ff160747 +``` + +Use the following command to check progress of the restore task: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/57228c52-7cf6-4271-8c8d-d446ff160747 +Restore progress +Run: 0dd20cdf-abc4-11ee-951c-6e7993cf42ed +Status: DONE - restart required (see restore docs) +Start time: 05 Jan 24 12:15:02 UTC +End time: 05 Jan 24 12:15:09 UTC +Duration: 6s +Progress: 100% | 100% +Snapshot Tag: sm_20240105115931UTC + ++---------------+-------------+----------+----------+------------+--------+ +| Keyspace | Progress | Size | Success | Downloaded | Failed | ++---------------+-------------+----------+----------+------------+--------+ +| system_schema | 100% | 100% | 214.150k | 214.150k | 214.150k | 0 | ++---------------+-------------+----------+----------+------------+--------+ +``` + +As suggested in the progress output, you will need to execute a rolling restart of the ScyllaCluster. +```console +kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "schema restored"}}' +``` + +Use the following commands to wait until restart is finished: +```console +$ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met +``` + +:::{caution} +### Restoring schema with **ScyllaDB OS 5.4.X** or **ScyllaDB Enterprise 2024.1.X** and `consistent_cluster_management` + +After you've followed the above steps with a ScyllaDB target cluster with `consistent_cluster_management` disabled, you'll need to enable Raft by configuring the target cluster with `consistent_cluster_management: true`. +Refer to [API Reference](../api-reference/index.rst) to learn how to customize ScyllaDB configuration files. + +You will then need to execute a rolling restart of the ScyllaCluster for the change to take effect. +```console +kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "raft enabled"}}' +``` + +Use the following commands to wait until restart is finished: +```console +$ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met + +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target +scyllacluster.scylla.scylladb.com/target condition met +``` +::: + +## Restore tables + +To restore the tables content, create a restore task manually on target ScyllaCluster by executing the following command: +```console +kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c -L -T --restore-tables +``` + +Where: +* `CLUSTER_ID` - a name or ID of a cluster you want to restore into. +* `BACKUP_LOCATION` - the location in which the backup is stored. +* `SNAPSHOT_TAG` - a tag of a snapshot that you want to restore. + +When the task is created, the command will output the ID of a restore task. +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-tables +restore/63642069-bed5-4def-ba0f-68c49e47ace1 +``` + +Use the following command to check progress of the restore task: +```console +$ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/63642069-bed5-4def-ba0f-68c49e47ace1 +Restore progress +Run: ab015cef-abc8-11ee-9521-6e7993cf42ed +Status: DONE +Start time: 05 Jan 24 12:48:04 UTC +End time: 05 Jan 24 12:48:15 UTC +Duration: 11s +Progress: 100% | 100% +Snapshot Tag: sm_20240105115931UTC + ++-------------+-------------+--------+---------+------------+--------+ +| Keyspace | Progress | Size | Success | Downloaded | Failed | ++-------------+-------------+--------+---------+------------+--------+ +| users | 100% | 100% | 409MiB | 409MiB | 409MiB | 0 | ++-------------+-------------+--------+---------+------------+--------+ + +Post-restore repair progress +Run: ab015cef-abc8-11ee-9521-6e7993cf42ed +Status: DONE +Start time: 05 Jan 24 12:48:04 UTC +End time: 05 Jan 24 12:48:15 UTC +Duration: 11s +Progress: 100% +Intensity: 1 +Parallel: 0 +Datacenters: + - us-east-1 + ++-------------+--------------+----------+----------+ +| Keyspace | Table | Progress | Duration | ++-------------+--------------+----------+----------+ +| users | users | 100% | 0s | ++-------------+--------------+----------+----------+ + +``` diff --git a/v1.14/_sources/nodeoperations/scylla-upgrade.md.txt b/v1.14/_sources/nodeoperations/scylla-upgrade.md.txt new file mode 100644 index 00000000000..d39c9666c5e --- /dev/null +++ b/v1.14/_sources/nodeoperations/scylla-upgrade.md.txt @@ -0,0 +1,102 @@ +# Upgrading version of Scylla + +To upgrade Scylla version using Operator user have to modify existing ScyllaCluster definition. + +In this example cluster will be upgraded to version `4.4.5`. +```bash +kubectl -n scylla patch ScyllaCluster simple-cluster -p '{"spec":{"version": "4.4.5"}}' --type=merge +``` + +Operator supports two types of version upgrades: +1. Patch upgrade +1. Generic upgrade + + +**Patch upgrade** + +Patch upgrade is executed when only patch version change is detected according to [semantic versioning format](https://semver.org/). +Procedure simply rolls out a restart of whole cluster and upgrades Scylla container image for each node one by one. + +Example: `4.0.0 -> 4.0.1` + +**Generic upgrade** + +Generic upgrades are executed for the non patch version changes. + +Example: `4.0.0 -> 2020.1.0` or `4.0.0 -> 4.1.0` or even `4.0.0 -> nightly` + +User can observe current state of upgrade in ScyllaCluster status. +```bash +kubectl -n scylla describe ScyllaCluster simple-cluster +[...] +Status: + Racks: + us-east-1a: + Members: 3 + Ready Members: 3 + Version: 4.1.9 + Upgrade: + Current Node: simple-cluster-us-east-1-us-east-1a-2 + Current Rack: us-east-1a + Data Snapshot Tag: so_data_20201228135002UTC + From Version: 4.1.9 + State: validate_upgrade + System Snapshot Tag: so_system_20201228135002UTC + To Version: 4.2.2 +``` + +Each upgrade begins with taking a snapshot of `system` and `system_schema` keyspaces on all nodes in parallel. +Name of this snapshot tag is saved in upgrade status under `System Snapshot Tag`. + +Before nodes in rack are upgraded, underlying StatefulSet is changed to use `OnDelete` UpgradeStrategy. +This allows Operator have a full control over when Pod image is changed. + +When a node is being upgraded, [maintenance mode](#maintenance-mode) is enabled, then the node is drained and snapshot of all data keyspaces is taken. +Snapshot tag is saved under `Data Snapshot Tag` and is the same for all nodes during the procedure. +Once everything is set up, maintenance mode is disabled and Scylla Pod is deleted. Underlying StatefulSet will bring up a new +Pod with upgraded version. +Once Pod will become ready, data snapshot from this particular node is removed, and Operator moves to next node. + +Once every rack is upgraded, system snapshot is removed from all nodes in parallel and previous StatefulSet UpgradeStrategy is restored. +At this point, all your nodes should be already in desired version. + +Current state of upgrade can be traced using `Current Node`, `Current Rack` and `State` status fields. +* `Current Node` shows which node is being upgraded. +* `Current Rack` displays which rack is being upgraded. +* `State` contain information at which stage upgrade is. + +`State` can have following values: +* `begin_upgrade` - upgrade is starting +* `check_schema_agreement` - Operator waits until all nodes reach schema agreement. It waits for it for 1 minute, prints an error log message and check is retried. +* `create_system_backup` - system keyspaces snapshot is being taken +* `find_next_rack` - Operator finds out which rack must be upgraded next, decision is saved in `Current Rack` +* `upgrade_image_in_pod_spec` - Image and UpgradeStrategy is upgraded in underlying StatefulSet +* `find_next_node` - Operator finds out which node must be upgraded next, decision is saved in `Current Node` +* `enable_maintenance_mode` - maintenance mode is being enabled +* `drain_node` - node is being drained +* `backup_data` - snapshot of data keyspaces is being taken +* `disable_maintenance_mode` - maintenance mode is being disabled +* `delete_pod` - Scylla Pod is being deleted +* `validate_upgrade` - Operator validates if new pod enters Ready state and if Scylla version is upgraded +* `clear_data_backup` - snapshot of data keyspaces is being removed +* `clear_system_backup` - snapshot of system keyspaces is being removed +* `restore_upgrade_strategy` - restore UpgradeStrategy in underlying StatefulSet +* `finish_upgrade` - upgrade cleanup + +**Recovering from upgrade failure** + +Upgrade may get stuck on `validate_upgrade` stage. This happens when Scylla Pod refuses to properly boot up. + +To continue with upgrade, first turn off operator by scaling Operator replicas to zero: +```bash +kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=0 +``` +Then user have to manually resolve issue with Scylla by checking what is the root cause of a failure in Scylla container logs. +If needed data and system keyspaces SSTable snapshots are available on the node. You can check ScyllaCluster status for their names. + +Once issue is resolved and Scylla Pod is up and running (Pod is in Ready state), scale Operator back to two replicas: +```bash +kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=2 +``` + +Operator should continue upgrade process from where it left off. diff --git a/v1.14/_sources/performance.md.txt b/v1.14/_sources/performance.md.txt new file mode 100644 index 00000000000..7c4ee664c4a --- /dev/null +++ b/v1.14/_sources/performance.md.txt @@ -0,0 +1,100 @@ +# Performance tuning + +Scylla Operator 1.6 introduces a new experimental feature allowing users to optimize Kubernetes nodes. + +:::{warning} +We recommend that you first try out the performance tuning on a pre-production instance. +Given the nature of the underlying tuning script, undoing the changes requires rebooting the Kubernetes node(s). +::: + +## Node tuning + +Starting from Operator 1.6, a new CRD called NodeConfig is available, allowing users to target Nodes which should be tuned. +When a Node is supposed to be optimized, the Scylla Operator creates a DaemonSet covering these Nodes. +Nodes matching the provided placement conditions will be subject to tuning. + +Below example NodeConfig tunes nodes having `scylla.scylladb.com/node-type=scylla` label: +``` +apiVersion: scylla.scylladb.com/v1alpha1 +kind: NodeConfig +metadata: + name: cluster +spec: + placement: + nodeSelector: + scylla.scylladb.com/node-type: scylla +``` +For more details about new CRD use: +``` +kubectl explain nodeconfigs.scylla.scylladb.com/v1alpha1 +``` + +For all optimizations we use a Python script available in the Scylla image called perftune. +Perftune executes the performance optmizations like tuning the kernel, network, disk devices, spreading IRQs across CPUs and more. + +Tuning consists of two separate optimizations: common node tuning, and tuning based on Scylla Pods and their resource assignment. +Node tuning is executed immediately. Pod tuning is executed when Scylla Pod lands on the same Node. + +Scylla works most efficently when it's pinned to CPU and not interrupted. +One of the most common causes of context-switching are network interrupts. Packets coming to a node need to be processed, +and this requires CPU shares. + +On K8s we always have at least a couple of processes running on the node: kubelet, kubernetes provider applications, daemons etc. +These processes require CPU shares, so we cannot dedicate entire node processing power to Scylla, we need to leave space for others. +We take advantage of it, and we pin IRQs to CPUs not used by any Scylla Pods exclusively. + +Tuning resources are created in a special namespace called `scylla-operator-node-tuning`. + +The tuning is applied only to pods with `Guaranteed` QoS class. Please double check your ScyllaCluster resource specification +to see if it meets all conditions. + +## Kubernetes tuning + +By default, the kubelet uses the CFS quota to enforce pod CPU limits. +When the node runs many CPU-bound pods, the workload can move around different CPU cores depending on whether the pod +is throttled and which CPU cores are available. +However, kubelet may be configured to assign CPUs exclusively, by setting the CPU manager policy to static. + +Setting up kubelet configuration is provider specific. Please check the docs for your distribution or talk to your +provider. + +Only pods within the [Guaranteed QoS class](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/#create-a-pod-that-gets-assigned-a-qos-class-of-guaranteed)) can take advantage of this option. +When such pod lands on a Node, kubelet will pin them to specific CPUs, and those won't be part of the shared pool. + +In our case there are two requirements each ScyllaCluster must fulfill to receive a Guaranteed QoS class: +* resource request and limits must be equal or only limits have to be provided +* agentResources must be provided and their requests and limits must be equal, or only limits have to be provided + +An example of such a ScyllaCluster that receives a Guaranteed QoS class is below: + +``` +apiVersion: scylla.scylladb.com/v1 +kind: ScyllaCluster +metadata: + name: guaranteed-cluster + namespace: scylla +spec: + agentVersion: 3.3.0 + version: 6.1.1 + datacenter: + name: us-east-1 + racks: + - name: us-east-1a + members: 3 + storage: + capacity: 500Gi + agentResources: + requests: + cpu: 1 + memory: 1G + limits: + cpu: 1 + memory: 1G + resources: + requests: + cpu: 4 + memory: 16G + limits: + cpu: 4 + memory: 16G +``` diff --git a/v1.14/_sources/releases.md.txt b/v1.14/_sources/releases.md.txt new file mode 100644 index 00000000000..8137d546cd4 --- /dev/null +++ b/v1.14/_sources/releases.md.txt @@ -0,0 +1,96 @@ +# Releases + +## Schedule +We are aiming to ship a new release approximately every 6 weeks. The following release schedule is only advisory, there are no commitments made to hitting these dates. + +:::{table} +| Release | Code freeze | General availability | +|:-------:|:-----------:|:--------------------:| +| 1.14 | 2024-08-14 | 2024-08-31 | +::: + +## Supported releases +We support the latest 2 releases of the operator to give everyone time to upgrade. + +:::{table} +| Release | General availability | Support ends | +|:-------:|:--------------------:|:---------------:| +| 1.13 | 2024-06-20 | Release of 1.15 | +| 1.12 | 2024-03-28 | Release of 1.14 | +| 1.11 | 2023-11-09 | 2024-06-20 | +| 1.10 | 2023-08-25 | 2024-03-28 | +| 1.9 | 2023-07-04 | 2023-11-09 | +| 1.8 | 2023-01-25 | 2023-08-25 | +| 1.7 | 2022-01-27 | 2023-07-04 | +| 1.6 | 2021-12-03 | 2023-01-25 | +| 1.5 | 2021-09-16 | 2022-01-27 | +| 1.4 | 2021-08-10 | 2021-12-03 | +| 1.3 | 2021-06-17 | 2021-09-16 | +| 1.2 | 2021-05-06 | 2021-08-10 | +| 1.1 | 2021-03-22 | 2021-06-17 | +| 1.0 | 2021-01-21 | 2021-05-06 | +::: + +### Backport policy +Usually, only important bug fixes are eligible for being backported. +This may depend on the situation and assessment of the maintainers. + +## CI/CD +We use [GitHub actions](https://github.com/scylladb/scylla-operator/actions/workflows/go.yaml?query=branch%3Amaster+event%3Apush) for our CI/CD. Every merge to a supported branch, or a creation of a tag will automatically trigger a job to build, test and publish the container image and other artifacts like helm charts. Before we publish any image, it must pass the e2e suite. + +### Automated promotions + +:::{table} +| Git reference | Type | Container image | +| :----------------: | :----: | :--------------------------------------------------: | +| **master** | branch | docker.io/scylladb/scylla-operator:**latest** | +| **vX.Y** | branch | docker.io/scylladb/scylla-operator:**X.Y** | +| **vX.Y.Z** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z** | +| **vX.Y.Z-alpha.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-alpha.N** | +| **vX.Y.Z-beta.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-beta.N** | +| **vX.Y.Z-rc.N** | tag | docker.io/scylladb/scylla-operator:**X.Y.Z-rc.N** | +::: + +### Generally available +GA images aren't build from scratch but rather promoted from an existing release candidates. When we decide a release candidate has the acceptable quality and QA sings it off, the release candidate is promoted to become the GA release. This makes sure the image has exactly the same content and SHA as the tested release candidate. + +## Support matrix + +Support matrix table shows the version requirements for a particular **scylla-operator** version. Be sure to match these requirements, otherwise some functionality will not work. + +:::{table} +| Component | v1.13 | v1.12 | v1.11 | v1.10 | +|:-----------------:|:----------:|:----------:|:----------:|:----------:| +| Kubernetes | `>=1.21` | `>=1.21` | `>=1.21` | `>=1.21` | +| CRI API | `v1` | `v1` | `v1` | `v1` | +| Scylla OS | `>=5.4` | `>=5.0` | `>=5.0` | `>=5.0` | +| Scylla Enterprise | `>=2023.1` | `>=2021.1` | `>=2021.1` | `>=2021.1` | +| Scylla Manager | `>=3.2.8` | `>=3.2.6` | `>=3.2` | `>=2.6` | +| Scylla Monitoring | `(CRD)` | `(CRD)` | `(CRD)` | `>=4.0` | +::: + +### Supported Kubernetes platforms + +We officially test and recommend to use the following platforms: + +:::{table} +| Platform | OS Image | +|:-----------------|:-------------| +| GKE | Ubuntu | +| EKS | Amazon Linux | +::: + +While our APIs generally work on any Kubernetes conformant cluster, +performance tuning and other pieces that need to interact with the host OS, kubelet, CRI, kernel, etc. might hit some incompatibilities. + + +:::{warning} +The following platforms are known **not to work correctly** at this time. + +:::{table} +| Platform | OS Image | Details | +|:-----------------|:-------------| :------ | +| GKE | Container OS | | +| EKS | Bottlerocket | Suspected kernel/cgroups issue that breaks available memory detection for ScyllaDB | +::: +::: diff --git a/v1.14/_sources/support/index.rst.txt b/v1.14/_sources/support/index.rst.txt new file mode 100644 index 00000000000..9c623218acb --- /dev/null +++ b/v1.14/_sources/support/index.rst.txt @@ -0,0 +1,12 @@ +========================================================== +Support +========================================================== + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + overview + known-issues + troubleshooting/index + must-gather diff --git a/v1.14/_sources/support/known-issues.md.txt b/v1.14/_sources/support/known-issues.md.txt new file mode 100644 index 00000000000..c00d84bef58 --- /dev/null +++ b/v1.14/_sources/support/known-issues.md.txt @@ -0,0 +1,14 @@ +# Known issues + +## Scylla Manager does not boot up on Minikube + +If your Scylla Manager is failing to apply 8th migration (008_*), then apply fix for [TRUNCATE queries](#truncate-queries-does-not-work-on-minikube). + +## TRUNCATE queries does not work on Minikube + +The `TRUNCATE` queries requires [hairpinning](https://en.wikipedia.org/wiki/Hairpinning) to be enabled. On minikube this is disabled by default. + +To fix it execute the following command: +``` +minikube ssh sudo ip link set docker0 promisc on +``` diff --git a/v1.14/_sources/support/must-gather.md.txt b/v1.14/_sources/support/must-gather.md.txt new file mode 100644 index 00000000000..7e0089084da --- /dev/null +++ b/v1.14/_sources/support/must-gather.md.txt @@ -0,0 +1,101 @@ +# Gathering data with must-gather + +`must-gather` is an embedded tool in Scylla Operator that helps collecting all the necessary info when something goes wrong. + +The tool talks to the Kubernetes API, retrieves a predefined set of resources and saves them into a folder in your current directory. +By default, all collected Secrets are censored to avoid sending sensitive data. +That said, you can always review the archive before you attach it to an issue or your support request. + +Given it needs to talk to the Kubernetes API, at the very least, you need to supply the `--kubeconfig` flag with a path to the kubeconfig file for your Kubernetes cluster, or set the `KUBECONFIG` environment variable. + +## Running must-gather + +There is more than one way to run `must-gather`. +Here are some examples of how you can run the tool. + +### Prerequisites + +All examples assume you have exported `KUBECONFIG` environment variable that points to a kubeconfig file on your machine. +If not, you can run this command to export the common default location. +Please make sure such a file exists. + +```bash +export KUBECONFIG=~/.kube/config +ls -l "${KUBECONFIG}" +``` + +:::{note} + There can be slight deviations in the arguments for your container tool, depending on the container runtime, whether you use SELinux or similar factors. + + As an example, the need for the `Z` option on volume mounts depends on whether you use SELinux and what context is applied on your file or directory. + If you get an error mentioning `Error: lsetxattr : operation not supported`, try it without the `Z` option. +::: + +Let's also check whether your kubeconfig uses [external authentication plugin](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#client-go-credential-plugins). +You can determine that by running +```bash +kubectl config view --minify +``` +and checking whether it uses an external exec plugin by looking for this pattern (containing the `exec` key) +```yaml +users: +- name: + user: + exec: +``` +If not, you can skip the rest of this section. + +In case your kubeconfig depends on external binaries, you have to take a few extra steps because the external binary won't be available within our container to authenticate the requests. + +Similarly to how Pods are run within Kubernetes, we'll create a dedicated ServiceAccount for must-gather and use it to run the tool. +(When you are done using it, feel free to remove the Kubernetes resources created for that purpose.) + +```bash +kubectl create namespace must-gather +kubectl -n must-gather create serviceaccount must-gather +kubectl create clusterrolebinding must-gather --clusterrole=cluster-admin --serviceaccount=must-gather:must-gather +export MUST_GATHER_TOKEN +MUST_GATHER_TOKEN=$( kubectl -n must-gather create token must-gather --duration=1h ) +kubeconfig=$( mktemp ) +# Create a copy of the existing kubeconfig and +# replace user authentication using yq, or by adjusting the fields manually. +kubectl config view --minify --raw -o yaml | yq -e '.users[0].user = {"token": env(MUST_GATHER_TOKEN)}' > "${kubeconfig}" +KUBECONFIG="${kubeconfig}" +``` + +:::{note} + If you don't have `yq` installed, you can get it at https://github.com/mikefarah/yq/#install or you can replace the user authentication settings manually. +::: + +### Podman +```bash +podman run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro,Z" -v="$( pwd ):/workspace:Z" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig +``` + +### Docker +```bash +docker run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro" -v="$( pwd ):/workspace" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig +``` + +## Limiting must-gather to a particular namespace + +If you are running a large Kubernetes cluster with many ScyllaClusters, it may be useful to limit the collection of ScyllaClusters to a particular namespace. +Unless you hit scale issues, we advise not to use this mode, as sometimes the ScyllaClusters affect other collected resources, like the manager or they form a multi-datacenter. + +```bash +scylla-operator must-gather --namespace="" +``` + +:::{note} + The `--namespace` flag affects only `ScyllaClusters`. + Other resources related to the operator installation or cluster state will still be collected from other namespaces. +::: + +### Collecting every resource in the cluster + +By default, `must-gather` collects only a predefined subset of resources. +You can also request collecting every resource in the Kubernetes API, if the default set wouldn't be enough to debug an issue. + +```bash +scylla-operator must-gather --all-resources +``` diff --git a/v1.14/_sources/support/overview.md.txt b/v1.14/_sources/support/overview.md.txt new file mode 100644 index 00000000000..7097438589c --- /dev/null +++ b/v1.14/_sources/support/overview.md.txt @@ -0,0 +1,14 @@ +# Support overview + +## Get support + +ScyllaDB provides administrators with [paid support](https://www.scylladb.com/product/support/#enterprise-support), including Scylla Operator. + +## Troubleshooting issues + +To learn more about what to do when issues arise, visit our dedicated [troubleshooting section](troubleshooting/index). + +## Gather data about your cluster + +Scylla Operator contains an embedded tool called [must-gather](must-gather.md) that can collect the required information for requesting support or reporting issues. +Support requests and bug reports are required to attach the must-gather archive to help us understand the issue. diff --git a/v1.14/_sources/support/troubleshooting/index.rst.txt b/v1.14/_sources/support/troubleshooting/index.rst.txt new file mode 100644 index 00000000000..b83118e6b18 --- /dev/null +++ b/v1.14/_sources/support/troubleshooting/index.rst.txt @@ -0,0 +1,8 @@ +========================================================== +Troubleshooting +========================================================== + +.. toctree:: + :maxdepth: 2 + + installation diff --git a/v1.14/_sources/support/troubleshooting/installation.md.txt b/v1.14/_sources/support/troubleshooting/installation.md.txt new file mode 100644 index 00000000000..b93fcce7b51 --- /dev/null +++ b/v1.14/_sources/support/troubleshooting/installation.md.txt @@ -0,0 +1,34 @@ +# Troubleshooting installation issues + +## Webhooks +Scylla Operator provides several custom API resources that use webhooks to function properly. + +Unfortunately, it is often the case that user's clusters have modified SDN, that doesn't extend to the control plane, and Kubernetes apiserver is not able to reach the pods that serve the webhook traffic. +Another common case are firewall rules that block the webhook traffic. + +:::{note} + To be called a Kubernetes cluster, clusters are required to pass Kubernetes conformance test suite. + This suite includes tests that require Kubernetes apiserver to be able to reach webhook services. +::: + +:::{note} + Before filing an issue, please make sure your cluster webhook traffic can reach your webhook services, independently of Scylla Operator resources. +::: + +### EKS + +#### Custom CNI +EKS is currently breaking Kubernetes webhooks [when used with custom CNI networking](https://github.com/aws/containers-roadmap/issues/1215). + +:::{note} + We advise you to avoid using such setups and use a conformant Kubernetes cluster that supports webhooks. +::: + +There are some workarounds where you can reconfigure the webhook to use Ingress or hostNetwork instead, but it's beyond a standard configuration that we support and not specific to the Scylla Operator. + +### GKE + +#### Private clusters + +If you use GKE private clusters you need to manually configure the firewall to allow webhook traffic. +You can find more information on how to do that in [GKE private clusters docs](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules). diff --git a/v1.14/_sources/upgrade.md.txt b/v1.14/_sources/upgrade.md.txt new file mode 100644 index 00000000000..bc458be7c3d --- /dev/null +++ b/v1.14/_sources/upgrade.md.txt @@ -0,0 +1,184 @@ +# Upgrade of Scylla Operator + +This page describes Scylla Operator upgrade procedures. +There are two generic update procedures - via Helm and via kubectl. Before upgrading, please check this page to find out +if your target version requires additional upgrade steps. + +## Upgrade via Helm + +Helm doesn't support managing CustomResourceDefinition resources ([#5871](https://github.com/helm/helm/issues/5871), [#7735](https://github.com/helm/helm/issues/7735)) +These are only created on first install and never updated. In order to update them, users have to do it manually. + +Replace `` with the name of your Helm release for Scylla Operator and replace `` with the version number you want to install: +1. Make sure Helm chart repository is up-to-date: + ``` + helm repo add scylla-operator https://storage.googleapis.com/scylla-operator-charts/stable + helm repo update + ``` +2. Update CRD resources. We recommend using `--server-side` flag for `kubectl apply`, if your version supports it. + ``` + tmpdir=$( mktemp -d ) \ + && helm pull scylla-operator/scylla-operator --version --untar --untardir "${tmpdir}" \ + && find "${tmpdir}"/scylla-operator/crds/ -name '*.yaml' -printf '-f=%p ' \ + | xargs kubectl apply + ``` +3. Update Scylla Operator + ``` + helm upgrade --version scylla-operator/scylla-operator + ``` + +## Upgrade via kubectl + +Replace `` with the version number you want to install: + +1. Checkout source code of version you want to use: + ``` + git checkout + ``` +2. Manifests use rolling minor version tag, you may want to pin it to specific version: + ``` + find deploy/operator -name "*.yaml" | xargs sed --follow-symlinks -i -E "s^docker.io/scylladb/scylla-operator:[0-9]+\.[0-9]+^docker.io/scylladb/scylla-operator:^g" + ``` +3. Update Scylla Operator. We recommend using `--server-side` flag for `kubectl apply`, if your version supports it. + ``` + kubectl apply -f deploy/operator + ``` + +--- + +## `v1.2.0` -> `v1.3.0` + +Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure. + +1. Checkout source code of v1.3.0: + ``` + git checkout v1.3.0 + ``` +1. Update Scylla Operator from deploy directory: + ``` + kubectl -n scylla-operator apply -f deploy/operator + ``` +1. Wait until Scylla Operator is up and running: + ``` + kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com + kubectl -n scylla-operator rollout status deployment.apps/scylla-operator + ``` + +## `v1.1.0` -> `v1.2.0` + +1.2.0 release brought a lot of changes to the Scylla Operator deployment process. +To properly update Scylla Operator one must delete old objects and install updated ones. + +Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure. + +1. Checkout source code of v1.2.0: + ``` + git checkout v1.2.0 + ``` +1. Remove old scylla operator namespace - in our case it's called `scylla-operator-system`: + ``` + kubectl delete namespace scylla-operator-system --wait=true + ``` +1. Remove old webhooks: + ``` + kubectl delete MutatingWebhookConfiguration scylla-operator-mutating-webhook-configuration + kubectl delete ValidatingWebhookConfiguration scylla-operator-validating-webhook-configuration + ``` +1. Install Scylla Operator from deploy directory: + ``` + kubectl -n scylla-operator apply -f deploy/operator + ``` +1. Wait until Scylla Operator is up and running: + ``` + kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com + kubectl -n scylla-operator rollout status deployment.apps/scylla-operator + ``` + +## `v1.0.0` -> `v1.1.0` + +During this update we will change probes and image for Scylla Operator. +A new version brings an automation for upgrade of sidecar image, so a rolling restart of managed Scylla clusters is expected. + +1. Get name of StatefulSet managing Scylla Operator + ```shell + kubectl --namespace scylla-operator-system get sts --selector="control-plane=controller-manager" + + NAME READY AGE + scylla-operator-controller-manager 1/1 95m + ``` + +1. Change probes and used container image by applying following patch: + ```yaml + spec: + template: + spec: + containers: + - name: manager + image: docker.io/scylladb/scylla-operator:1.1.0 + livenessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP + readinessProbe: + $retainKeys: + - httpGet + httpGet: + path: /readyz + port: 8080 + scheme: HTTP + ``` + To apply above patch save it to file (`operator-patch.yaml` for example) and apply to Operator StatefulSet: + ```shell + kubectl -n scylla-operator-system patch sts scylla-operator-controller-manager --patch "$(cat operator-patch.yaml)" + ``` + + +## `v0.3.0` -> `v1.0.0` + +***Note:*** There's an experimental migration procedure available [here](migration.md). + +`v0.3.0` used a very common name as a CRD kind (`Cluster`). In `v1.0.0` this issue was solved by using less common +kind which is easier to disambiguate. (`ScyllaCluster`). +This change is backward incompatible, so Scylla cluster must be turned off and recreated from scratch. +In case you need to preserve your data, refer to backup and restore guide. + +1. Get list of existing Scylla clusters + ``` + kubectl -n scylla get cluster.scylla.scylladb.com + + NAME AGE + simple-cluster 30m + ``` +1. Delete each one of them + + ``` + kubectl -n scylla delete cluster.scylla.scylladb.com simple-cluster + ``` +1. Make sure you're on `v0.3.0` branch + ``` + git checkout v0.3.0 + ``` +1. Delete existing CRD and Operator + ``` + kubectl delete -f examples/generic/operator.yaml + ``` +1. Checkout `v1.0.0` version + ``` + git checkout v1.0.0 + ``` +1. Install new CRD and Scylla Operator + ``` + kubectl apply -f deploy/operator.yaml + ``` +1. Migrate your existing Scylla Cluster definition. Change `apiVersion` and `kind` from: + ``` + apiVersion: scylla.scylladb.com/v1alpha1 + kind: Cluster + ``` + to: + ``` + apiVersion: scylla.scylladb.com/v1 + kind: ScyllaCluster + ``` +1. Once your cluster definition is ready, use `kubectl apply` to install fresh Scylla cluster. diff --git a/v1.14/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css b/v1.14/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css new file mode 100644 index 00000000000..eb19f698afc --- /dev/null +++ b/v1.14/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/v1.14/_sphinx_design_static/design-tabs.js b/v1.14/_sphinx_design_static/design-tabs.js new file mode 100644 index 00000000000..36b38cf0d91 --- /dev/null +++ b/v1.14/_sphinx_design_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/v1.14/_static/basic.css b/v1.14/_static/basic.css new file mode 100644 index 00000000000..f316efcb47b --- /dev/null +++ b/v1.14/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/v1.14/_static/check-solid.svg b/v1.14/_static/check-solid.svg new file mode 100644 index 00000000000..92fad4b5c0b --- /dev/null +++ b/v1.14/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/v1.14/_static/clipboard.min.js b/v1.14/_static/clipboard.min.js new file mode 100644 index 00000000000..54b3c463811 --- /dev/null +++ b/v1.14/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/v1.14/_static/copybutton.css b/v1.14/_static/copybutton.css new file mode 100644 index 00000000000..f1916ec7d1b --- /dev/null +++ b/v1.14/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

                Short

                + */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/v1.14/_static/copybutton.js b/v1.14/_static/copybutton.js new file mode 100644 index 00000000000..2ea7ff3e217 --- /dev/null +++ b/v1.14/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/v1.14/_static/copybutton_funcs.js b/v1.14/_static/copybutton_funcs.js new file mode 100644 index 00000000000..dbe1aaad79c --- /dev/null +++ b/v1.14/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/v1.14/_static/css/main.css b/v1.14/_static/css/main.css new file mode 100644 index 00000000000..2682ad8a319 --- /dev/null +++ b/v1.14/_static/css/main.css @@ -0,0 +1 @@ +@media print,screen and (min-width:40em){.reveal,.reveal.large,.reveal.small,.reveal.tiny{left:auto;margin:0 auto;right:auto}}/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}[data-whatinput=mouse] *,[data-whatinput=mouse] :focus,[data-whatinput=touch] *,[data-whatinput=touch] :focus,[data-whatintent=mouse] *,[data-whatintent=mouse] :focus,[data-whatintent=touch] *,[data-whatintent=touch] :focus{outline:0}[draggable=false]{-webkit-touch-callout:none;-webkit-user-select:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{-webkit-box-sizing:border-box;font-size:100%}*,:after,:before{-webkit-box-sizing:inherit}body{background:#fefefe;color:#0a0a0a;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;height:auto;vertical-align:middle;-ms-interpolation-mode:bicubic}textarea{border-radius:0;height:auto;min-height:50px}select{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;border:0;border-radius:0;cursor:auto;line-height:1;padding:0}[data-whatinput=mouse] button{outline:0}pre{overflow:auto;-webkit-overflow-scrolling:touch}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block!important}.is-hidden{display:none!important}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;-webkit-box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);-webkit-box-sizing:border-box;box-sizing:border-box;color:#0a0a0a;display:block;font-family:inherit;font-size:1rem;font-weight:400;height:2.4375rem;line-height:1.5;margin:0 0 1rem;padding:.5rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s;width:100%}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:0;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}textarea{max-width:100%}textarea[rows]{height:auto}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type=search]{-webkit-box-sizing:border-box;box-sizing:border-box}::-webkit-input-placeholder{color:#cacaca}::-moz-placeholder{color:#cacaca}:-ms-input-placeholder{color:#cacaca}::-ms-input-placeholder{color:#cacaca}::placeholder{color:#cacaca}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-bottom:0;margin-left:.5rem;margin-right:1rem;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{color:#0a0a0a;display:block;font-size:.875rem;font-weight:400;line-height:1.8;margin:0}label.middle{line-height:1.5;margin:0 0 1rem;padding:.5625rem 0}.help-text{color:#0a0a0a;font-size:.8125rem;font-style:italic;margin-top:-.5rem}.input-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:1rem;width:100%;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.input-group>:first-child,.input-group>:first-child.input-group-button>*,.input-group>:last-child,.input-group>:last-child.input-group-button>*{border-radius:0}.input-group-button,.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label,.input-group-field,.input-group-label{margin:0;white-space:nowrap}.input-group-label{background:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 1rem;text-align:center;white-space:nowrap;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;min-width:0}.input-group-button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-bottom:0;padding-top:0;text-align:center;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;font-size:1rem;height:auto;padding-bottom:0;padding-top:0}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:.5rem;max-width:100%}.fieldset{border:1px solid #cacaca;margin:1.125rem 0;padding:1.25rem}.fieldset legend{margin:0 0 0 -.1875rem;padding:0 .1875rem}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fefefe;background-image:url('data:image/svg+xml;utf8,');background-origin:content-box;background-position:right -1rem center;background-repeat:no-repeat;background-size:9px 6px;border:1px solid #cacaca;border-radius:0;color:#0a0a0a;font-family:inherit;font-size:1rem;font-weight:400;height:2.4375rem;line-height:1.5;margin:0 0 1rem;padding:.5rem 1.5rem .5rem .5rem;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}@media screen and (min-width:0\0){select{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==)}}select:focus{background-color:#fefefe;border:1px solid #8a8a8a;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;outline:0;-webkit-transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:border-color .25s ease-in-out,-webkit-box-shadow .5s;transition:box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out,-webkit-box-shadow .5s}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{background-image:none;height:auto}select:not([multiple]){padding-bottom:0;padding-top:0}.is-invalid-input:not(:focus){background-color:#f9ecea;border-color:#cc4b37}.is-invalid-input:not(:focus)::-webkit-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-moz-placeholder{color:#cc4b37}.is-invalid-input:not(:focus):-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::placeholder{color:#cc4b37}.form-error,.is-invalid-label{color:#cc4b37}.form-error{display:none;font-size:.75rem;font-weight:700;margin-bottom:1rem;margin-top:-.5rem}.form-error.is-visible{display:block}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:inherit;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:400;text-rendering:optimizeLegibility}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}.h1,h1{font-size:1.5rem}.h1,.h2,h1,h2{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h2,h2{font-size:1.25rem}.h3,h3{font-size:1.1875rem}.h3,.h4,h3,h4{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h4,h4{font-size:1.125rem}.h5,h5{font-size:1.0625rem}.h5,.h6,h5,h6{line-height:1.4;margin-bottom:.5rem;margin-top:0}.h6,h6{font-size:1rem}@media print,screen and (min-width:40em){.h1,h1{font-size:3rem}.h2,h2{font-size:2.5rem}.h3,h3{font-size:1.9375rem}.h4,h4{font-size:1.5625rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}}a{color:#1779ba;cursor:pointer;line-height:inherit;text-decoration:none}a:focus,a:hover{color:#1468a0}a img,hr{border:0}hr{border-bottom:1px solid #cacaca;clear:both;height:0;margin:1.25rem auto;max-width:75rem}dl,ol,ul{line-height:1.6;list-style-position:outside;margin-bottom:1rem}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-left:1.25rem}dl{margin-bottom:1rem}dl dt{font-weight:700;margin-bottom:.3rem}blockquote{border-left:1px solid #cacaca;margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem}blockquote,blockquote p{color:#8a8a8a;line-height:1.6}abbr,abbr[title]{border-bottom:1px dotted #0a0a0a;cursor:help;text-decoration:none}figure,kbd{margin:0}kbd{background-color:#e6e6e6;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;padding:.125rem .25rem 0}.subheader{color:#8a8a8a;font-weight:400;line-height:1.4;margin-bottom:.5rem;margin-top:.2rem}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}ol.no-bullet,ul.no-bullet{list-style:none;margin-left:0}.cite-block,cite{color:#8a8a8a;display:block;font-size:.8125rem}.cite-block:before,cite:before{content:"— "}.code-inline,code{display:inline;max-width:100%;word-wrap:break-word;padding:.125rem .3125rem .0625rem}.code-block,.code-inline,code{background-color:#e6e6e6;border:1px solid #cacaca;color:#0a0a0a;font-family:Consolas,Liberation Mono,Courier,monospace;font-weight:400}.code-block{display:block;margin-bottom:1.5rem;overflow:auto;padding:1rem;white-space:pre}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print,screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print,screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:#000!important;-webkit-print-color-adjust:economy;print-color-adjust:economy;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.print-break-inside{page-break-inside:auto}}.grid-container{margin-left:auto;margin-right:auto;max-width:75rem;padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-container{padding-left:.9375rem;padding-right:.9375rem}}.grid-container.fluid{margin-left:auto;margin-right:auto;max-width:100%;padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-container.fluid{padding-left:.9375rem;padding-right:.9375rem}}.grid-container.full{margin-left:auto;margin-right:auto;max-width:100%;padding-left:0;padding-right:0}.grid-x{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.cell{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;min-height:0;min-width:0;width:100%}.cell.auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0}.cell.shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.auto,.grid-x>.shrink{width:auto}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-full,.grid-x>.small-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-full,.grid-x>.medium-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-full,.grid-x>.large-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-x>.small-1,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.small-1{width:8.3333333333%}.grid-x>.small-2{width:16.6666666667%}.grid-x>.small-3{width:25%}.grid-x>.small-4{width:33.3333333333%}.grid-x>.small-5{width:41.6666666667%}.grid-x>.small-6{width:50%}.grid-x>.small-7{width:58.3333333333%}.grid-x>.small-8{width:66.6666666667%}.grid-x>.small-9{width:75%}.grid-x>.small-10{width:83.3333333333%}.grid-x>.small-11{width:91.6666666667%}.grid-x>.small-12{width:100%}@media print,screen and (min-width:40em){.grid-x>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.medium-1,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.medium-shrink{width:auto}.grid-x>.medium-1{width:8.3333333333%}.grid-x>.medium-2{width:16.6666666667%}.grid-x>.medium-3{width:25%}.grid-x>.medium-4{width:33.3333333333%}.grid-x>.medium-5{width:41.6666666667%}.grid-x>.medium-6{width:50%}.grid-x>.medium-7{width:58.3333333333%}.grid-x>.medium-8{width:66.6666666667%}.grid-x>.medium-9{width:75%}.grid-x>.medium-10{width:83.3333333333%}.grid-x>.medium-11{width:91.6666666667%}.grid-x>.medium-12{width:100%}}@media print,screen and (min-width:64em){.grid-x>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;width:auto}.grid-x>.large-1,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.large-shrink{width:auto}.grid-x>.large-1{width:8.3333333333%}.grid-x>.large-2{width:16.6666666667%}.grid-x>.large-3{width:25%}.grid-x>.large-4{width:33.3333333333%}.grid-x>.large-5{width:41.6666666667%}.grid-x>.large-6{width:50%}.grid-x>.large-7{width:58.3333333333%}.grid-x>.large-8{width:66.6666666667%}.grid-x>.large-9{width:75%}.grid-x>.large-10{width:83.3333333333%}.grid-x>.large-11{width:91.6666666667%}.grid-x>.large-12{width:100%}}.grid-margin-x:not(.grid-x)>.cell{width:auto}.grid-margin-y:not(.grid-y)>.cell{height:auto}.grid-margin-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-margin-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-margin-x>.cell{margin-left:.625rem;margin-right:.625rem;width:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x>.cell{margin-left:.9375rem;margin-right:.9375rem;width:calc(100% - 1.875rem)}}.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.25rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.25rem)}.grid-margin-x>.small-3{width:calc(25% - 1.25rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.25rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.25rem)}.grid-margin-x>.small-6{width:calc(50% - 1.25rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.25rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.25rem)}.grid-margin-x>.small-9{width:calc(75% - 1.25rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.25rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.25rem)}.grid-margin-x>.small-12{width:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x>.auto,.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.small-3{width:calc(25% - 1.875rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.small-6{width:calc(50% - 1.875rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.small-9{width:calc(75% - 1.875rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.small-12{width:calc(100% - 1.875rem)}.grid-margin-x>.medium-auto,.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.875rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.875rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.875rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-x>.large-auto,.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.large-3{width:calc(25% - 1.875rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.large-6{width:calc(50% - 1.875rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.large-9{width:calc(75% - 1.875rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.large-12{width:calc(100% - 1.875rem)}}.grid-padding-x .grid-padding-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-padding-x .grid-padding-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-container:not(.full)>.grid-padding-x{margin-left:-.625rem;margin-right:-.625rem}@media print,screen and (min-width:40em){.grid-container:not(.full)>.grid-padding-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-padding-x>.cell{padding-left:.625rem;padding-right:.625rem}@media print,screen and (min-width:40em){.grid-padding-x>.cell{padding-left:.9375rem;padding-right:.9375rem}}.small-up-1>.cell{width:100%}.small-up-2>.cell{width:50%}.small-up-3>.cell{width:33.3333333333%}.small-up-4>.cell{width:25%}.small-up-5>.cell{width:20%}.small-up-6>.cell{width:16.6666666667%}.small-up-7>.cell{width:14.2857142857%}.small-up-8>.cell{width:12.5%}@media print,screen and (min-width:40em){.medium-up-1>.cell{width:100%}.medium-up-2>.cell{width:50%}.medium-up-3>.cell{width:33.3333333333%}.medium-up-4>.cell{width:25%}.medium-up-5>.cell{width:20%}.medium-up-6>.cell{width:16.6666666667%}.medium-up-7>.cell{width:14.2857142857%}.medium-up-8>.cell{width:12.5%}}@media print,screen and (min-width:64em){.large-up-1>.cell{width:100%}.large-up-2>.cell{width:50%}.large-up-3>.cell{width:33.3333333333%}.large-up-4>.cell{width:25%}.large-up-5>.cell{width:20%}.large-up-6>.cell{width:16.6666666667%}.large-up-7>.cell{width:14.2857142857%}.large-up-8>.cell{width:12.5%}}.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.25rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.25rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.25rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.25rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.25rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.25rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.25rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.875rem)}.grid-margin-x.medium-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.medium-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.medium-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.medium-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.medium-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.medium-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.medium-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.medium-up-8>.cell{width:calc(12.5% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-x.large-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.large-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.large-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.large-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.large-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.large-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.large-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.large-up-8>.cell{width:calc(12.5% - 1.875rem)}}.small-margin-collapse,.small-margin-collapse>.cell{margin-left:0;margin-right:0}.small-margin-collapse>.small-1{width:8.3333333333%}.small-margin-collapse>.small-2{width:16.6666666667%}.small-margin-collapse>.small-3{width:25%}.small-margin-collapse>.small-4{width:33.3333333333%}.small-margin-collapse>.small-5{width:41.6666666667%}.small-margin-collapse>.small-6{width:50%}.small-margin-collapse>.small-7{width:58.3333333333%}.small-margin-collapse>.small-8{width:66.6666666667%}.small-margin-collapse>.small-9{width:75%}.small-margin-collapse>.small-10{width:83.3333333333%}.small-margin-collapse>.small-11{width:91.6666666667%}.small-margin-collapse>.small-12{width:100%}@media print,screen and (min-width:40em){.small-margin-collapse>.medium-1{width:8.3333333333%}.small-margin-collapse>.medium-2{width:16.6666666667%}.small-margin-collapse>.medium-3{width:25%}.small-margin-collapse>.medium-4{width:33.3333333333%}.small-margin-collapse>.medium-5{width:41.6666666667%}.small-margin-collapse>.medium-6{width:50%}.small-margin-collapse>.medium-7{width:58.3333333333%}.small-margin-collapse>.medium-8{width:66.6666666667%}.small-margin-collapse>.medium-9{width:75%}.small-margin-collapse>.medium-10{width:83.3333333333%}.small-margin-collapse>.medium-11{width:91.6666666667%}.small-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.small-margin-collapse>.large-1{width:8.3333333333%}.small-margin-collapse>.large-2{width:16.6666666667%}.small-margin-collapse>.large-3{width:25%}.small-margin-collapse>.large-4{width:33.3333333333%}.small-margin-collapse>.large-5{width:41.6666666667%}.small-margin-collapse>.large-6{width:50%}.small-margin-collapse>.large-7{width:58.3333333333%}.small-margin-collapse>.large-8{width:66.6666666667%}.small-margin-collapse>.large-9{width:75%}.small-margin-collapse>.large-10{width:83.3333333333%}.small-margin-collapse>.large-11{width:91.6666666667%}.small-margin-collapse>.large-12{width:100%}}.small-padding-collapse{margin-left:0;margin-right:0}.small-padding-collapse>.cell{padding-left:0;padding-right:0}@media print,screen and (min-width:40em){.medium-margin-collapse,.medium-margin-collapse>.cell{margin-left:0;margin-right:0}.medium-margin-collapse>.small-1{width:8.3333333333%}.medium-margin-collapse>.small-2{width:16.6666666667%}.medium-margin-collapse>.small-3{width:25%}.medium-margin-collapse>.small-4{width:33.3333333333%}.medium-margin-collapse>.small-5{width:41.6666666667%}.medium-margin-collapse>.small-6{width:50%}.medium-margin-collapse>.small-7{width:58.3333333333%}.medium-margin-collapse>.small-8{width:66.6666666667%}.medium-margin-collapse>.small-9{width:75%}.medium-margin-collapse>.small-10{width:83.3333333333%}.medium-margin-collapse>.small-11{width:91.6666666667%}.medium-margin-collapse>.small-12{width:100%}.medium-margin-collapse>.medium-1{width:8.3333333333%}.medium-margin-collapse>.medium-2{width:16.6666666667%}.medium-margin-collapse>.medium-3{width:25%}.medium-margin-collapse>.medium-4{width:33.3333333333%}.medium-margin-collapse>.medium-5{width:41.6666666667%}.medium-margin-collapse>.medium-6{width:50%}.medium-margin-collapse>.medium-7{width:58.3333333333%}.medium-margin-collapse>.medium-8{width:66.6666666667%}.medium-margin-collapse>.medium-9{width:75%}.medium-margin-collapse>.medium-10{width:83.3333333333%}.medium-margin-collapse>.medium-11{width:91.6666666667%}.medium-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width:64em){.medium-margin-collapse>.large-1{width:8.3333333333%}.medium-margin-collapse>.large-2{width:16.6666666667%}.medium-margin-collapse>.large-3{width:25%}.medium-margin-collapse>.large-4{width:33.3333333333%}.medium-margin-collapse>.large-5{width:41.6666666667%}.medium-margin-collapse>.large-6{width:50%}.medium-margin-collapse>.large-7{width:58.3333333333%}.medium-margin-collapse>.large-8{width:66.6666666667%}.medium-margin-collapse>.large-9{width:75%}.medium-margin-collapse>.large-10{width:83.3333333333%}.medium-margin-collapse>.large-11{width:91.6666666667%}.medium-margin-collapse>.large-12{width:100%}}@media print,screen and (min-width:40em){.medium-padding-collapse{margin-left:0;margin-right:0}.medium-padding-collapse>.cell{padding-left:0;padding-right:0}}@media print,screen and (min-width:64em){.large-margin-collapse,.large-margin-collapse>.cell{margin-left:0;margin-right:0}.large-margin-collapse>.small-1{width:8.3333333333%}.large-margin-collapse>.small-2{width:16.6666666667%}.large-margin-collapse>.small-3{width:25%}.large-margin-collapse>.small-4{width:33.3333333333%}.large-margin-collapse>.small-5{width:41.6666666667%}.large-margin-collapse>.small-6{width:50%}.large-margin-collapse>.small-7{width:58.3333333333%}.large-margin-collapse>.small-8{width:66.6666666667%}.large-margin-collapse>.small-9{width:75%}.large-margin-collapse>.small-10{width:83.3333333333%}.large-margin-collapse>.small-11{width:91.6666666667%}.large-margin-collapse>.small-12{width:100%}.large-margin-collapse>.medium-1{width:8.3333333333%}.large-margin-collapse>.medium-2{width:16.6666666667%}.large-margin-collapse>.medium-3{width:25%}.large-margin-collapse>.medium-4{width:33.3333333333%}.large-margin-collapse>.medium-5{width:41.6666666667%}.large-margin-collapse>.medium-6{width:50%}.large-margin-collapse>.medium-7{width:58.3333333333%}.large-margin-collapse>.medium-8{width:66.6666666667%}.large-margin-collapse>.medium-9{width:75%}.large-margin-collapse>.medium-10{width:83.3333333333%}.large-margin-collapse>.medium-11{width:91.6666666667%}.large-margin-collapse>.medium-12{width:100%}.large-margin-collapse>.large-1{width:8.3333333333%}.large-margin-collapse>.large-2{width:16.6666666667%}.large-margin-collapse>.large-3{width:25%}.large-margin-collapse>.large-4{width:33.3333333333%}.large-margin-collapse>.large-5{width:41.6666666667%}.large-margin-collapse>.large-6{width:50%}.large-margin-collapse>.large-7{width:58.3333333333%}.large-margin-collapse>.large-8{width:66.6666666667%}.large-margin-collapse>.large-9{width:75%}.large-margin-collapse>.large-10{width:83.3333333333%}.large-margin-collapse>.large-11{width:91.6666666667%}.large-margin-collapse>.large-12{width:100%}.large-padding-collapse{margin-left:0;margin-right:0}.large-padding-collapse>.cell{padding-left:0;padding-right:0}}.small-offset-0{margin-left:0}.grid-margin-x>.small-offset-0{margin-left:.625rem}.small-offset-1{margin-left:8.3333333333%}.grid-margin-x>.small-offset-1{margin-left:calc(8.33333% + .625rem)}.small-offset-2{margin-left:16.6666666667%}.grid-margin-x>.small-offset-2{margin-left:calc(16.66667% + .625rem)}.small-offset-3{margin-left:25%}.grid-margin-x>.small-offset-3{margin-left:calc(25% + .625rem)}.small-offset-4{margin-left:33.3333333333%}.grid-margin-x>.small-offset-4{margin-left:calc(33.33333% + .625rem)}.small-offset-5{margin-left:41.6666666667%}.grid-margin-x>.small-offset-5{margin-left:calc(41.66667% + .625rem)}.small-offset-6{margin-left:50%}.grid-margin-x>.small-offset-6{margin-left:calc(50% + .625rem)}.small-offset-7{margin-left:58.3333333333%}.grid-margin-x>.small-offset-7{margin-left:calc(58.33333% + .625rem)}.small-offset-8{margin-left:66.6666666667%}.grid-margin-x>.small-offset-8{margin-left:calc(66.66667% + .625rem)}.small-offset-9{margin-left:75%}.grid-margin-x>.small-offset-9{margin-left:calc(75% + .625rem)}.small-offset-10{margin-left:83.3333333333%}.grid-margin-x>.small-offset-10{margin-left:calc(83.33333% + .625rem)}.small-offset-11{margin-left:91.6666666667%}.grid-margin-x>.small-offset-11{margin-left:calc(91.66667% + .625rem)}@media print,screen and (min-width:40em){.medium-offset-0{margin-left:0}.grid-margin-x>.medium-offset-0{margin-left:.9375rem}.medium-offset-1{margin-left:8.3333333333%}.grid-margin-x>.medium-offset-1{margin-left:calc(8.33333% + .9375rem)}.medium-offset-2{margin-left:16.6666666667%}.grid-margin-x>.medium-offset-2{margin-left:calc(16.66667% + .9375rem)}.medium-offset-3{margin-left:25%}.grid-margin-x>.medium-offset-3{margin-left:calc(25% + .9375rem)}.medium-offset-4{margin-left:33.3333333333%}.grid-margin-x>.medium-offset-4{margin-left:calc(33.33333% + .9375rem)}.medium-offset-5{margin-left:41.6666666667%}.grid-margin-x>.medium-offset-5{margin-left:calc(41.66667% + .9375rem)}.medium-offset-6{margin-left:50%}.grid-margin-x>.medium-offset-6{margin-left:calc(50% + .9375rem)}.medium-offset-7{margin-left:58.3333333333%}.grid-margin-x>.medium-offset-7{margin-left:calc(58.33333% + .9375rem)}.medium-offset-8{margin-left:66.6666666667%}.grid-margin-x>.medium-offset-8{margin-left:calc(66.66667% + .9375rem)}.medium-offset-9{margin-left:75%}.grid-margin-x>.medium-offset-9{margin-left:calc(75% + .9375rem)}.medium-offset-10{margin-left:83.3333333333%}.grid-margin-x>.medium-offset-10{margin-left:calc(83.33333% + .9375rem)}.medium-offset-11{margin-left:91.6666666667%}.grid-margin-x>.medium-offset-11{margin-left:calc(91.66667% + .9375rem)}}@media print,screen and (min-width:64em){.large-offset-0{margin-left:0}.grid-margin-x>.large-offset-0{margin-left:.9375rem}.large-offset-1{margin-left:8.3333333333%}.grid-margin-x>.large-offset-1{margin-left:calc(8.33333% + .9375rem)}.large-offset-2{margin-left:16.6666666667%}.grid-margin-x>.large-offset-2{margin-left:calc(16.66667% + .9375rem)}.large-offset-3{margin-left:25%}.grid-margin-x>.large-offset-3{margin-left:calc(25% + .9375rem)}.large-offset-4{margin-left:33.3333333333%}.grid-margin-x>.large-offset-4{margin-left:calc(33.33333% + .9375rem)}.large-offset-5{margin-left:41.6666666667%}.grid-margin-x>.large-offset-5{margin-left:calc(41.66667% + .9375rem)}.large-offset-6{margin-left:50%}.grid-margin-x>.large-offset-6{margin-left:calc(50% + .9375rem)}.large-offset-7{margin-left:58.3333333333%}.grid-margin-x>.large-offset-7{margin-left:calc(58.33333% + .9375rem)}.large-offset-8{margin-left:66.6666666667%}.grid-margin-x>.large-offset-8{margin-left:calc(66.66667% + .9375rem)}.large-offset-9{margin-left:75%}.grid-margin-x>.large-offset-9{margin-left:calc(75% + .9375rem)}.large-offset-10{margin-left:83.3333333333%}.grid-margin-x>.large-offset-10{margin-left:calc(83.33333% + .9375rem)}.large-offset-11{margin-left:91.6666666667%}.grid-margin-x>.large-offset-11{margin-left:calc(91.66667% + .9375rem)}}.grid-y{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.grid-y>.cell{height:auto;max-height:none}.grid-y>.auto,.grid-y>.shrink{height:auto}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-full,.grid-y>.small-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media print,screen and (min-width:40em){.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-full,.grid-y>.medium-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print,screen and (min-width:64em){.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-full,.grid-y>.large-shrink{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-y>.small-1,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.small-1{height:8.3333333333%}.grid-y>.small-2{height:16.6666666667%}.grid-y>.small-3{height:25%}.grid-y>.small-4{height:33.3333333333%}.grid-y>.small-5{height:41.6666666667%}.grid-y>.small-6{height:50%}.grid-y>.small-7{height:58.3333333333%}.grid-y>.small-8{height:66.6666666667%}.grid-y>.small-9{height:75%}.grid-y>.small-10{height:83.3333333333%}.grid-y>.small-11{height:91.6666666667%}.grid-y>.small-12{height:100%}@media print,screen and (min-width:40em){.grid-y>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.medium-1,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.medium-shrink{height:auto}.grid-y>.medium-1{height:8.3333333333%}.grid-y>.medium-2{height:16.6666666667%}.grid-y>.medium-3{height:25%}.grid-y>.medium-4{height:33.3333333333%}.grid-y>.medium-5{height:41.6666666667%}.grid-y>.medium-6{height:50%}.grid-y>.medium-7{height:58.3333333333%}.grid-y>.medium-8{height:66.6666666667%}.grid-y>.medium-9{height:75%}.grid-y>.medium-10{height:83.3333333333%}.grid-y>.medium-11{height:91.6666666667%}.grid-y>.medium-12{height:100%}}@media print,screen and (min-width:64em){.grid-y>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0;-ms-flex:1 1 0px;flex:1 1 0;height:auto}.grid-y>.large-1,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.large-shrink{height:auto}.grid-y>.large-1{height:8.3333333333%}.grid-y>.large-2{height:16.6666666667%}.grid-y>.large-3{height:25%}.grid-y>.large-4{height:33.3333333333%}.grid-y>.large-5{height:41.6666666667%}.grid-y>.large-6{height:50%}.grid-y>.large-7{height:58.3333333333%}.grid-y>.large-8{height:66.6666666667%}.grid-y>.large-9{height:75%}.grid-y>.large-10{height:83.3333333333%}.grid-y>.large-11{height:91.6666666667%}.grid-y>.large-12{height:100%}}.grid-padding-y .grid-padding-y{margin-bottom:-.625rem;margin-top:-.625rem}@media print,screen and (min-width:40em){.grid-padding-y .grid-padding-y{margin-bottom:-.9375rem;margin-top:-.9375rem}}.grid-padding-y>.cell{padding-bottom:.625rem;padding-top:.625rem}@media print,screen and (min-width:40em){.grid-padding-y>.cell{padding-bottom:.9375rem;padding-top:.9375rem}}.grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .grid-frame{width:100%}.cell-block{max-width:100%;overflow-x:auto}.cell-block,.cell-block-y{-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.cell-block-y{max-height:100%;min-height:100%;overflow-y:auto}.cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}@media print,screen and (min-width:40em){.medium-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .medium-grid-frame{width:100%}.medium-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.medium-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.medium-cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.medium-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media print,screen and (min-width:64em){.large-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .large-grid-frame{width:100%}.large-cell-block{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.large-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.large-cell-block-container>.grid-x{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-height:100%}.large-cell-block-y{max-height:100%;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}.grid-y.grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}@media print,screen and (min-width:40em){.grid-y.medium-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}@media print,screen and (min-width:64em){.grid-y.large-grid-frame{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;position:relative;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh;width:auto}}.cell .grid-y.grid-frame{height:100%}@media print,screen and (min-width:40em){.cell .grid-y.medium-grid-frame{height:100%}}@media print,screen and (min-width:64em){.cell .grid-y.large-grid-frame{height:100%}}.grid-margin-y{margin-bottom:-.625rem;margin-top:-.625rem}@media print,screen and (min-width:40em){.grid-margin-y{margin-bottom:-.9375rem;margin-top:-.9375rem}}.grid-margin-y>.cell{height:calc(100% - 1.25rem);margin-bottom:.625rem;margin-top:.625rem}@media print,screen and (min-width:40em){.grid-margin-y>.cell{height:calc(100% - 1.875rem);margin-bottom:.9375rem;margin-top:.9375rem}}.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.25rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.25rem)}.grid-margin-y>.small-3{height:calc(25% - 1.25rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.25rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.25rem)}.grid-margin-y>.small-6{height:calc(50% - 1.25rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.25rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.25rem)}.grid-margin-y>.small-9{height:calc(75% - 1.25rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.25rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.25rem)}.grid-margin-y>.small-12{height:calc(100% - 1.25rem)}@media print,screen and (min-width:40em){.grid-margin-y>.auto,.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.small-3{height:calc(25% - 1.875rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.small-6{height:calc(50% - 1.875rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.small-9{height:calc(75% - 1.875rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.small-12{height:calc(100% - 1.875rem)}.grid-margin-y>.medium-auto,.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.875rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.875rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.875rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-y>.large-auto,.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.large-3{height:calc(25% - 1.875rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.large-6{height:calc(50% - 1.875rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.large-9{height:calc(75% - 1.875rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.large-12{height:calc(100% - 1.875rem)}}.grid-frame.grid-margin-y{height:calc(100vh + 1.25rem)}@media print,screen and (min-width:40em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:64em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:40em){.grid-margin-y.medium-grid-frame{height:calc(100vh + 1.875rem)}}@media print,screen and (min-width:64em){.grid-margin-y.large-grid-frame{height:calc(100vh + 1.875rem)}}.button{-webkit-appearance:none;border:1px solid transparent;border-radius:0;cursor:pointer;display:inline-block;font-family:inherit;font-size:.9rem;line-height:1;margin:0 0 1rem;padding:.85em 1em;text-align:center;-webkit-transition:background-color .25s ease-out,color .25s ease-out;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle}[data-whatinput=mouse] .button{outline:0}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;margin-left:0;margin-right:0;width:100%}.button,.button.disabled,.button.disabled:focus,.button.disabled:hover,.button[disabled],.button[disabled]:focus,.button[disabled]:hover{background-color:#1779ba;color:#fefefe}.button:focus,.button:hover{background-color:#14679e;color:#fefefe}.button.primary,.button.primary.disabled,.button.primary.disabled:focus,.button.primary.disabled:hover,.button.primary[disabled],.button.primary[disabled]:focus,.button.primary[disabled]:hover{background-color:#1779ba;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#126195;color:#fefefe}.button.secondary,.button.secondary.disabled,.button.secondary.disabled:focus,.button.secondary.disabled:hover,.button.secondary[disabled],.button.secondary[disabled]:focus,.button.secondary[disabled]:hover{background-color:#767676;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5e5e5e;color:#fefefe}.button.success,.button.success.disabled,.button.success.disabled:focus,.button.success.disabled:hover,.button.success[disabled],.button.success[disabled]:focus,.button.success[disabled]:hover{background-color:#3adb76;color:#0a0a0a}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#0a0a0a}.button.warning,.button.warning.disabled,.button.warning.disabled:focus,.button.warning.disabled:hover,.button.warning[disabled],.button.warning[disabled]:focus,.button.warning[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#0a0a0a}.button.alert,.button.alert.disabled,.button.alert.disabled:focus,.button.alert.disabled:hover,.button.alert[disabled],.button.alert[disabled]:focus,.button.alert[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#a53b2a;color:#fefefe}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow:focus,.button.hollow:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{background-color:transparent}.button.hollow,.button.hollow.disabled,.button.hollow.disabled:focus,.button.hollow.disabled:hover,.button.hollow[disabled],.button.hollow[disabled]:focus,.button.hollow[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button.hollow:focus,.button.hollow:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.primary,.button.hollow.primary.disabled,.button.hollow.primary.disabled:focus,.button.hollow.primary.disabled:hover,.button.hollow.primary[disabled],.button.hollow.primary[disabled]:focus,.button.hollow.primary[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.secondary,.button.hollow.secondary.disabled,.button.hollow.secondary.disabled:focus,.button.hollow.secondary.disabled:hover,.button.hollow.secondary[disabled],.button.hollow.secondary[disabled]:focus,.button.hollow.secondary[disabled]:hover{border:1px solid #767676;color:#767676}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3b3b3b;color:#3b3b3b}.button.hollow.success,.button.hollow.success.disabled,.button.hollow.success.disabled:focus,.button.hollow.success.disabled:hover,.button.hollow.success[disabled],.button.hollow.success[disabled]:focus,.button.hollow.success[disabled]:hover{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning,.button.hollow.warning.disabled,.button.hollow.warning.disabled:focus,.button.hollow.warning.disabled:hover,.button.hollow.warning[disabled],.button.hollow.warning[disabled]:focus,.button.hollow.warning[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert,.button.hollow.alert.disabled,.button.hollow.alert.disabled:focus,.button.hollow.alert.disabled:hover,.button.hollow.alert[disabled],.button.hollow.alert[disabled]:focus,.button.hollow.alert[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#67251a;color:#67251a}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear:focus,.button.clear:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{background-color:transparent;border-color:transparent}.button.clear,.button.clear.disabled,.button.clear.disabled:focus,.button.clear.disabled:hover,.button.clear[disabled],.button.clear[disabled]:focus,.button.clear[disabled]:hover{color:#1779ba}.button.clear:focus,.button.clear:hover{color:#0c3d5d}.button.clear.primary,.button.clear.primary.disabled,.button.clear.primary.disabled:focus,.button.clear.primary.disabled:hover,.button.clear.primary[disabled],.button.clear.primary[disabled]:focus,.button.clear.primary[disabled]:hover{color:#1779ba}.button.clear.primary:focus,.button.clear.primary:hover{color:#0c3d5d}.button.clear.secondary,.button.clear.secondary.disabled,.button.clear.secondary.disabled:focus,.button.clear.secondary.disabled:hover,.button.clear.secondary[disabled],.button.clear.secondary[disabled]:focus,.button.clear.secondary[disabled]:hover{color:#767676}.button.clear.secondary:focus,.button.clear.secondary:hover{color:#3b3b3b}.button.clear.success,.button.clear.success.disabled,.button.clear.success.disabled:focus,.button.clear.success.disabled:hover,.button.clear.success[disabled],.button.clear.success[disabled]:focus,.button.clear.success[disabled]:hover{color:#3adb76}.button.clear.success:focus,.button.clear.success:hover{color:#157539}.button.clear.warning,.button.clear.warning.disabled,.button.clear.warning.disabled:focus,.button.clear.warning.disabled:hover,.button.clear.warning[disabled],.button.clear.warning[disabled]:focus,.button.clear.warning[disabled]:hover{color:#ffae00}.button.clear.warning:focus,.button.clear.warning:hover{color:#805700}.button.clear.alert,.button.clear.alert.disabled,.button.clear.alert.disabled:focus,.button.clear.alert.disabled:hover,.button.clear.alert[disabled],.button.clear.alert[disabled]:focus,.button.clear.alert[disabled]:hover{color:#cc4b37}.button.clear.alert:focus,.button.clear.alert:hover{color:#67251a}.button.disabled,.button[disabled]{cursor:not-allowed;opacity:.25}.button.dropdown:after{border-color:#fefefe transparent transparent;border-style:solid;border-width:.4em .4em 0;content:"";display:block;display:inline-block;float:right;height:0;margin-left:1em;position:relative;top:.4em;width:0}.button.dropdown.clear.primary:after,.button.dropdown.clear:after,.button.dropdown.hollow.primary:after,.button.dropdown.hollow:after{border-top-color:#1779ba}.button.dropdown.clear.secondary:after,.button.dropdown.hollow.secondary:after{border-top-color:#767676}.button.dropdown.clear.success:after,.button.dropdown.hollow.success:after{border-top-color:#3adb76}.button.dropdown.clear.warning:after,.button.dropdown.hollow.warning:after{border-top-color:#ffae00}.button.dropdown.clear.alert:after,.button.dropdown.hollow.alert:after{border-top-color:#cc4b37}.button.arrow-only:after{float:none;margin-left:0;top:-.1em}a.button:focus,a.button:hover{text-decoration:none}.button-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1rem;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.button-group:after,.button-group:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.button-group:after{clear:both}.button-group:after,.button-group:before{display:none}.button-group .button{font-size:.9rem;margin:0 1px 1px 0;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.button-group.primary .button,.button-group.primary .button.disabled,.button-group.primary .button.disabled:focus,.button-group.primary .button.disabled:hover,.button-group.primary .button[disabled],.button-group.primary .button[disabled]:focus,.button-group.primary .button[disabled]:hover{background-color:#1779ba;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#126195;color:#fefefe}.button-group.secondary .button,.button-group.secondary .button.disabled,.button-group.secondary .button.disabled:focus,.button-group.secondary .button.disabled:hover,.button-group.secondary .button[disabled],.button-group.secondary .button[disabled]:focus,.button-group.secondary .button[disabled]:hover{background-color:#767676;color:#fefefe}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#5e5e5e;color:#fefefe}.button-group.success .button,.button-group.success .button.disabled,.button-group.success .button.disabled:focus,.button-group.success .button.disabled:hover,.button-group.success .button[disabled],.button-group.success .button[disabled]:focus,.button-group.success .button[disabled]:hover{background-color:#3adb76;color:#0a0a0a}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#22bb5b;color:#0a0a0a}.button-group.warning .button,.button-group.warning .button.disabled,.button-group.warning .button.disabled:focus,.button-group.warning .button.disabled:hover,.button-group.warning .button[disabled],.button-group.warning .button[disabled]:focus,.button-group.warning .button[disabled]:hover{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button,.button-group.alert .button.disabled,.button-group.alert .button.disabled:focus,.button-group.alert .button.disabled:hover,.button-group.alert .button[disabled],.button-group.alert .button[disabled]:focus,.button-group.alert .button[disabled]:hover{background-color:#cc4b37;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#a53b2a;color:#fefefe}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button:focus,.button-group.hollow .button:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{background-color:transparent}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:focus,.button-group.hollow .button.disabled:hover,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:focus,.button-group.hollow .button[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button-group.hollow .button:focus,.button-group.hollow .button:hover{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow .button.primary,.button-group.hollow .button.primary.disabled,.button-group.hollow .button.primary.disabled:focus,.button-group.hollow .button.primary.disabled:hover,.button-group.hollow .button.primary[disabled],.button-group.hollow .button.primary[disabled]:focus,.button-group.hollow .button.primary[disabled]:hover,.button-group.hollow.primary .button,.button-group.hollow.primary .button.disabled,.button-group.hollow.primary .button.disabled:focus,.button-group.hollow.primary .button.disabled:hover,.button-group.hollow.primary .button[disabled],.button-group.hollow.primary .button[disabled]:focus,.button-group.hollow.primary .button[disabled]:hover{border:1px solid #1779ba;color:#1779ba}.button-group.hollow .button.primary:focus,.button-group.hollow .button.primary:hover,.button-group.hollow.primary .button:focus,.button-group.hollow.primary .button:hover{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow .button.secondary,.button-group.hollow .button.secondary.disabled,.button-group.hollow .button.secondary.disabled:focus,.button-group.hollow .button.secondary.disabled:hover,.button-group.hollow .button.secondary[disabled],.button-group.hollow .button.secondary[disabled]:focus,.button-group.hollow .button.secondary[disabled]:hover,.button-group.hollow.secondary .button,.button-group.hollow.secondary .button.disabled,.button-group.hollow.secondary .button.disabled:focus,.button-group.hollow.secondary .button.disabled:hover,.button-group.hollow.secondary .button[disabled],.button-group.hollow.secondary .button[disabled]:focus,.button-group.hollow.secondary .button[disabled]:hover{border:1px solid #767676;color:#767676}.button-group.hollow .button.secondary:focus,.button-group.hollow .button.secondary:hover,.button-group.hollow.secondary .button:focus,.button-group.hollow.secondary .button:hover{border-color:#3b3b3b;color:#3b3b3b}.button-group.hollow .button.success,.button-group.hollow .button.success.disabled,.button-group.hollow .button.success.disabled:focus,.button-group.hollow .button.success.disabled:hover,.button-group.hollow .button.success[disabled],.button-group.hollow .button.success[disabled]:focus,.button-group.hollow .button.success[disabled]:hover,.button-group.hollow.success .button,.button-group.hollow.success .button.disabled,.button-group.hollow.success .button.disabled:focus,.button-group.hollow.success .button.disabled:hover,.button-group.hollow.success .button[disabled],.button-group.hollow.success .button[disabled]:focus,.button-group.hollow.success .button[disabled]:hover{border:1px solid #3adb76;color:#3adb76}.button-group.hollow .button.success:focus,.button-group.hollow .button.success:hover,.button-group.hollow.success .button:focus,.button-group.hollow.success .button:hover{border-color:#157539;color:#157539}.button-group.hollow .button.warning,.button-group.hollow .button.warning.disabled,.button-group.hollow .button.warning.disabled:focus,.button-group.hollow .button.warning.disabled:hover,.button-group.hollow .button.warning[disabled],.button-group.hollow .button.warning[disabled]:focus,.button-group.hollow .button.warning[disabled]:hover,.button-group.hollow.warning .button,.button-group.hollow.warning .button.disabled,.button-group.hollow.warning .button.disabled:focus,.button-group.hollow.warning .button.disabled:hover,.button-group.hollow.warning .button[disabled],.button-group.hollow.warning .button[disabled]:focus,.button-group.hollow.warning .button[disabled]:hover{border:1px solid #ffae00;color:#ffae00}.button-group.hollow .button.warning:focus,.button-group.hollow .button.warning:hover,.button-group.hollow.warning .button:focus,.button-group.hollow.warning .button:hover{border-color:#805700;color:#805700}.button-group.hollow .button.alert,.button-group.hollow .button.alert.disabled,.button-group.hollow .button.alert.disabled:focus,.button-group.hollow .button.alert.disabled:hover,.button-group.hollow .button.alert[disabled],.button-group.hollow .button.alert[disabled]:focus,.button-group.hollow .button.alert[disabled]:hover,.button-group.hollow.alert .button,.button-group.hollow.alert .button.disabled,.button-group.hollow.alert .button.disabled:focus,.button-group.hollow.alert .button.disabled:hover,.button-group.hollow.alert .button[disabled],.button-group.hollow.alert .button[disabled]:focus,.button-group.hollow.alert .button[disabled]:hover{border:1px solid #cc4b37;color:#cc4b37}.button-group.hollow .button.alert:focus,.button-group.hollow .button.alert:hover,.button-group.hollow.alert .button:focus,.button-group.hollow.alert .button:hover{border-color:#67251a;color:#67251a}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button:focus,.button-group.clear .button:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{background-color:transparent;border-color:transparent}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button.disabled:focus,.button-group.clear .button.disabled:hover,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:focus,.button-group.clear .button[disabled]:hover{color:#1779ba}.button-group.clear .button:focus,.button-group.clear .button:hover{color:#0c3d5d}.button-group.clear .button.primary,.button-group.clear .button.primary.disabled,.button-group.clear .button.primary.disabled:focus,.button-group.clear .button.primary.disabled:hover,.button-group.clear .button.primary[disabled],.button-group.clear .button.primary[disabled]:focus,.button-group.clear .button.primary[disabled]:hover,.button-group.clear.primary .button,.button-group.clear.primary .button.disabled,.button-group.clear.primary .button.disabled:focus,.button-group.clear.primary .button.disabled:hover,.button-group.clear.primary .button[disabled],.button-group.clear.primary .button[disabled]:focus,.button-group.clear.primary .button[disabled]:hover{color:#1779ba}.button-group.clear .button.primary:focus,.button-group.clear .button.primary:hover,.button-group.clear.primary .button:focus,.button-group.clear.primary .button:hover{color:#0c3d5d}.button-group.clear .button.secondary,.button-group.clear .button.secondary.disabled,.button-group.clear .button.secondary.disabled:focus,.button-group.clear .button.secondary.disabled:hover,.button-group.clear .button.secondary[disabled],.button-group.clear .button.secondary[disabled]:focus,.button-group.clear .button.secondary[disabled]:hover,.button-group.clear.secondary .button,.button-group.clear.secondary .button.disabled,.button-group.clear.secondary .button.disabled:focus,.button-group.clear.secondary .button.disabled:hover,.button-group.clear.secondary .button[disabled],.button-group.clear.secondary .button[disabled]:focus,.button-group.clear.secondary .button[disabled]:hover{color:#767676}.button-group.clear .button.secondary:focus,.button-group.clear .button.secondary:hover,.button-group.clear.secondary .button:focus,.button-group.clear.secondary .button:hover{color:#3b3b3b}.button-group.clear .button.success,.button-group.clear .button.success.disabled,.button-group.clear .button.success.disabled:focus,.button-group.clear .button.success.disabled:hover,.button-group.clear .button.success[disabled],.button-group.clear .button.success[disabled]:focus,.button-group.clear .button.success[disabled]:hover,.button-group.clear.success .button,.button-group.clear.success .button.disabled,.button-group.clear.success .button.disabled:focus,.button-group.clear.success .button.disabled:hover,.button-group.clear.success .button[disabled],.button-group.clear.success .button[disabled]:focus,.button-group.clear.success .button[disabled]:hover{color:#3adb76}.button-group.clear .button.success:focus,.button-group.clear .button.success:hover,.button-group.clear.success .button:focus,.button-group.clear.success .button:hover{color:#157539}.button-group.clear .button.warning,.button-group.clear .button.warning.disabled,.button-group.clear .button.warning.disabled:focus,.button-group.clear .button.warning.disabled:hover,.button-group.clear .button.warning[disabled],.button-group.clear .button.warning[disabled]:focus,.button-group.clear .button.warning[disabled]:hover,.button-group.clear.warning .button,.button-group.clear.warning .button.disabled,.button-group.clear.warning .button.disabled:focus,.button-group.clear.warning .button.disabled:hover,.button-group.clear.warning .button[disabled],.button-group.clear.warning .button[disabled]:focus,.button-group.clear.warning .button[disabled]:hover{color:#ffae00}.button-group.clear .button.warning:focus,.button-group.clear .button.warning:hover,.button-group.clear.warning .button:focus,.button-group.clear.warning .button:hover{color:#805700}.button-group.clear .button.alert,.button-group.clear .button.alert.disabled,.button-group.clear .button.alert.disabled:focus,.button-group.clear .button.alert.disabled:hover,.button-group.clear .button.alert[disabled],.button-group.clear .button.alert[disabled]:focus,.button-group.clear .button.alert[disabled]:hover,.button-group.clear.alert .button,.button-group.clear.alert .button.disabled,.button-group.clear.alert .button.disabled:focus,.button-group.clear.alert .button.disabled:hover,.button-group.clear.alert .button[disabled],.button-group.clear.alert .button[disabled]:focus,.button-group.clear.alert .button[disabled]:hover{color:#cc4b37}.button-group.clear .button.alert:focus,.button-group.clear .button.alert:hover,.button-group.clear.alert .button:focus,.button-group.clear.alert .button:hover{color:#67251a}.button-group.no-gaps .button{margin-right:-.0625rem}.button-group.no-gaps .button+.button{border-left-color:transparent}.button-group.stacked,.button-group.stacked-for-medium,.button-group.stacked-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.button-group.stacked .button,.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%}.button-group.stacked .button:last-child,.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child{margin-bottom:0}.button-group.stacked-for-medium.expanded .button,.button-group.stacked-for-small.expanded .button,.button-group.stacked.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}@media print,screen and (min-width:40em){.button-group.stacked-for-small .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (min-width:64em){.button-group.stacked-for-medium .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print,screen and (max-width:39.99875em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}@media print,screen and (max-width:63.99875em){.button-group.stacked-for-medium.expanded{display:block}.button-group.stacked-for-medium.expanded .button{display:block;margin-right:0}}.close-button{color:#8a8a8a;cursor:pointer;position:absolute;z-index:10}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.close-button.small{font-size:1.5em;line-height:1;right:.66rem;top:.33em}.close-button,.close-button.medium{font-size:2em;line-height:1;right:1rem;top:.5rem}.label{border-radius:0;cursor:default;display:inline-block;font-size:.8rem;line-height:1;padding:.33333rem .5rem;white-space:nowrap}.label,.label.primary{background:#1779ba;color:#fefefe}.label.secondary{background:#767676;color:#fefefe}.label.success{background:#3adb76;color:#0a0a0a}.label.warning{background:#ffae00;color:#0a0a0a}.label.alert{background:#cc4b37;color:#fefefe}.progress{background-color:#cacaca;border-radius:0;height:1rem;margin-bottom:1rem}.progress.primary .progress-meter{background-color:#1779ba}.progress.secondary .progress-meter{background-color:#767676}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#cc4b37}.progress-meter{background-color:#1779ba;display:block;height:100%;position:relative;width:0}.progress-meter-text{color:#fefefe;font-size:.75rem;font-weight:700;left:50%;margin:0;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);white-space:nowrap}.slider{background-color:#e6e6e6;cursor:pointer;height:.5rem;margin-bottom:2.25rem;margin-top:1.25rem;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.slider-fill{background-color:#cacaca;display:inline-block;height:.5rem;left:0;max-width:100%;position:absolute;top:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.slider-fill.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider-handle{background-color:#1779ba;border-radius:0;cursor:-webkit-grab;cursor:grab;display:inline-block;height:1.4rem;left:0;position:absolute;top:50%;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;width:1.4rem;z-index:1}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#14679e}.slider-handle.is-dragging{cursor:-webkit-grabbing;cursor:grabbing;-webkit-transition:all 0s linear;transition:all 0s linear}.slider.disabled,.slider[disabled]{cursor:not-allowed;opacity:.25}.slider.vertical{display:inline-block;height:12.5rem;margin:0 1.25rem;-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);width:.5rem}.slider.vertical .slider-fill{max-height:100%;top:0;width:.5rem}.slider.vertical .slider-handle{height:1.4rem;left:50%;position:absolute;top:0;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:1.4rem}.switch{color:#fefefe;font-size:.875rem;font-weight:700;height:2rem;margin-bottom:1rem;outline:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-input{margin-bottom:0;opacity:0;position:absolute}.switch-paddle{background:#cacaca;border-radius:0;color:inherit;cursor:pointer;display:block;font-weight:inherit;height:2rem;position:relative;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:4rem}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;border-radius:0;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:all .25s ease-out;transition:all .25s ease-out;width:1.5rem}input:checked~.switch-paddle{background:#1779ba}input:checked~.switch-paddle:after{left:2.25rem}input:disabled~.switch-paddle{cursor:not-allowed;opacity:.5}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{display:none;left:8%}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{font-size:.625rem;height:1.5rem;width:3rem}.switch.tiny .switch-paddle:after{height:1rem;left:.25rem;top:.25rem;width:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{font-size:.75rem;height:1.75rem;width:3.5rem}.switch.small .switch-paddle:after{height:1.25rem;left:.25rem;top:.25rem;width:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{font-size:1rem;height:2.5rem;width:5rem}.switch.large .switch-paddle:after{height:2rem;left:.25rem;top:.25rem;width:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{border-collapse:collapse;border-radius:0;margin-bottom:1rem;width:100%}tbody,tfoot,thead{background-color:#fefefe;border:1px solid #f1f1f1}caption{font-weight:700;padding:.5rem .625rem .625rem}thead{background:#f8f8f8}tfoot,thead{color:#0a0a0a}tfoot{background:#f1f1f1}tfoot tr,thead tr{background:0 0}tfoot td,tfoot th,thead td,thead th{font-weight:700;padding:.5rem .625rem .625rem;text-align:left}tbody td,tbody th{padding:.5rem .625rem .625rem}tbody tr:nth-child(2n){background-color:#f1f1f1;border-bottom:0}table.unstriped tbody{background-color:#fefefe}table.unstriped tbody tr{background-color:#fefefe;border-bottom:1px solid #f1f1f1}@media print,screen and (max-width:63.99875em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;overflow-x:auto;width:100%}table.hover thead tr:hover{background-color:#f3f3f3}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f9f9}table.hover:not(.unstriped) tr:nth-of-type(2n):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.badge{border-radius:50%;display:inline-block;font-size:.6rem;min-width:2.1em;padding:.3em;text-align:center}.badge,.badge.primary{background:#1779ba;color:#fefefe}.badge.secondary{background:#767676;color:#fefefe}.badge.success{background:#3adb76;color:#0a0a0a}.badge.warning{background:#ffae00;color:#0a0a0a}.badge.alert{background:#cc4b37;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.breadcrumbs:after{clear:both}.breadcrumbs li{color:#0a0a0a;cursor:default;float:left;font-size:.6875rem;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"/";margin:0 .75rem;opacity:1;position:relative}.breadcrumbs a{color:#1779ba}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.callout{background-color:#fff;border:1px solid hsla(0,0%,4%,.25);border-radius:0;color:#0a0a0a;margin:0 0 1rem;padding:1rem;position:relative}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#d7ecfa;color:#0a0a0a}.callout.secondary{background-color:#eaeaea;color:#0a0a0a}.callout.success{background-color:#e1faea;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding:.5rem}.callout.large{padding:3rem}.card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;background:#fefefe;border:1px solid #e6e6e6;border-radius:0;-webkit-box-shadow:none;box-shadow:none;color:#0a0a0a;flex-grow:1;margin-bottom:1rem;overflow:hidden}.card>:last-child{margin-bottom:0}.card-divider{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;background:#e6e6e6;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;padding:1rem}.card-divider>:last-child{margin-bottom:0}.card-section{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;padding:1rem}.card-section>:last-child{margin-bottom:0}.card-image{min-height:1px}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:none;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:10}.dropdown-pane.is-opening{display:block}.dropdown-pane.is-open{display:block;visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.pagination{margin-bottom:1rem;margin-left:0}.pagination:after,.pagination:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.pagination:after{clear:both}.pagination li{border-radius:0;display:none;font-size:.875rem;margin-right:.0625rem}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media print,screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{border-radius:0;color:#0a0a0a;display:block;padding:.1875rem .625rem}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{background:#1779ba;color:#fefefe;cursor:default;padding:.1875rem .625rem}.pagination .disabled{color:#cacaca;cursor:not-allowed;padding:.1875rem .625rem}.pagination .disabled:hover{background:0 0}.pagination .ellipsis:after{color:#0a0a0a;content:"…";padding:.1875rem .625rem}.pagination-previous a:before,.pagination-previous.disabled:before{content:"«";display:inline-block;margin-right:.5rem}.pagination-next a:after,.pagination-next.disabled:after{content:"»";display:inline-block;margin-left:.5rem}.has-tip{border-bottom:1px dotted #8a8a8a;cursor:help;display:inline-block;font-weight:700;position:relative}.tooltip{background-color:#0a0a0a;border-radius:0;color:#fefefe;font-size:80%;max-width:10rem;padding:.75rem;top:calc(100% + .6495rem);z-index:1200}.tooltip,.tooltip:before{position:absolute}.tooltip.bottom:before{border-color:transparent transparent #0a0a0a;border-style:solid;border-width:0 .75rem .75rem;bottom:100%;content:"";display:block;height:0;width:0}.tooltip.bottom.align-center:before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem 0;bottom:auto;content:"";display:block;height:0;top:100%;width:0}.tooltip.top.align-center:before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-style:solid;border-width:.75rem 0 .75rem .75rem;content:"";display:block;height:0;left:100%;width:0}.tooltip.left.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-style:solid;border-width:.75rem .75rem .75rem 0;content:"";display:block;height:0;left:auto;right:100%;width:0}.tooltip.right.align-center:before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.align-top:before{bottom:auto;top:10%}.tooltip.align-bottom:before{bottom:10%;top:auto}.tooltip.align-left:before{left:10%;right:auto}.tooltip.align-right:before{left:auto;right:10%}.accordion{background:#fefefe;list-style-type:none;margin-left:0}.accordion[disabled] .accordion-title{cursor:not-allowed}.accordion-item:first-child>:first-child,.accordion-item:last-child>:last-child{border-radius:0}.accordion-title{border:1px solid #e6e6e6;border-bottom:0;color:#1779ba;display:block;font-size:.75rem;line-height:1;padding:1.25rem 1rem;position:relative}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:"+";margin-top:-.5rem;position:absolute;right:1rem;top:50%}.is-active>.accordion-title:before{content:"–"}.accordion-content{background-color:#fefefe;border:1px solid #e6e6e6;border-bottom:0;color:#0a0a0a;display:none;padding:1rem}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.media-object{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;margin-bottom:1rem}.media-object img{max-width:none}@media print,screen and (max-width:39.99875em){.media-object.stack-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.media-object-section{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}@media print,screen and (max-width:39.99875em){.stack-for-small .media-object-section{-webkit-flex-basis:100%;padding:0 0 1rem;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.stack-for-small .media-object-section img{width:100%}}.media-object-section.main-section{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.orbit,.orbit-container{position:relative}.orbit-container{height:0;list-style:none;margin:0;overflow:hidden}.orbit-slide{position:absolute;width:100%}.orbit-slide.no-motionui.is-active{left:0;top:0}.orbit-figure{margin:0}.orbit-image{margin:0;max-width:100%;width:100%}.orbit-caption{background-color:hsla(0,0%,4%,.5);bottom:0;margin-bottom:0;width:100%}.orbit-caption,.orbit-next,.orbit-previous{color:#fefefe;padding:1rem;position:absolute}.orbit-next,.orbit-previous{top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:10}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{margin-bottom:.8rem;margin-top:.8rem;position:relative;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{background-color:#cacaca;border-radius:50%;height:1.2rem;margin:.1rem;width:1.2rem}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.flex-video,.responsive-embed{height:0;margin-bottom:1rem;overflow:hidden;padding-bottom:75%;position:relative}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video,.responsive-embed embed,.responsive-embed iframe,.responsive-embed object,.responsive-embed video{height:100%;left:0;position:absolute;top:0;width:100%}.flex-video.widescreen,.responsive-embed.widescreen{padding-bottom:56.25%}.tabs{background:#fefefe;border:1px solid #e6e6e6;list-style-type:none;margin:0}.tabs:after,.tabs:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.tabs:after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:0 0}.tabs.primary{background:#1779ba}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#1673b1}.tabs-title{float:left}.tabs-title>a{color:#1779ba;display:block;font-size:.75rem;line-height:1;padding:1.25rem 1.5rem}[data-whatinput=mouse] .tabs-title>a{outline:0}.tabs-title>a:hover{background:#fefefe;color:#1468a0}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6;color:#1779ba}.tabs-content{background:#fefefe;border:1px solid #e6e6e6;border-top:0;color:#0a0a0a;-webkit-transition:all .5s ease;transition:all .5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;border-radius:0;-webkit-box-shadow:0 0 0 1px hsla(0,0%,4%,.2);box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;margin-bottom:1rem;max-width:100%}a.thumbnail{-webkit-transition:-webkit-box-shadow .2s ease-out;transition:-webkit-box-shadow .2s ease-out;transition:box-shadow .2s ease-out;transition:box-shadow .2s ease-out,-webkit-box-shadow .2s ease-out}a.thumbnail:focus,a.thumbnail:hover{-webkit-box-shadow:0 0 6px 1px rgba(23,121,186,.5);box-shadow:0 0 6px 1px rgba(23,121,186,.5)}a.thumbnail image{-webkit-box-shadow:none;box-shadow:none}.menu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:0;padding:0;position:relative}[data-whatinput=mouse] .menu li{outline:0}.menu .button,.menu a{display:block;line-height:1;padding:.7rem 1rem;text-decoration:none}.menu a,.menu button,.menu input,.menu select{margin-bottom:0}.menu input{display:inline-block}.menu,.menu.horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.vertical.icon-bottom li a i,.menu.vertical.icon-bottom li a img,.menu.vertical.icon-bottom li a svg,.menu.vertical.icon-top li a i,.menu.vertical.icon-top li a img,.menu.vertical.icon-top li a svg{text-align:left}.menu.expanded li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.menu.expanded.icon-bottom li a i,.menu.expanded.icon-bottom li a img,.menu.expanded.icon-bottom li a svg,.menu.expanded.icon-top li a i,.menu.expanded.icon-top li a img,.menu.expanded.icon-top li a svg{text-align:left}.menu.simple{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.menu.simple li+li{margin-left:1rem}.menu.simple a{padding:0}@media print,screen and (min-width:40em){.menu.medium-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.medium-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.medium-expanded li,.menu.medium-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}@media print,screen and (min-width:64em){.menu.large-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.large-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.large-expanded li,.menu.large-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}.menu.nested{margin-left:1rem;margin-right:0}.menu.icon-bottom a,.menu.icon-left a,.menu.icon-right a,.menu.icon-top a,.menu.icons a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu.icon-left li a,.menu.nested.icon-left li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-left li a i,.menu.icon-left li a img,.menu.icon-left li a svg,.menu.nested.icon-left li a i,.menu.nested.icon-left li a img,.menu.nested.icon-left li a svg{margin-right:.25rem}.menu.icon-right li a,.menu.nested.icon-right li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-right li a i,.menu.icon-right li a img,.menu.icon-right li a svg,.menu.nested.icon-right li a i,.menu.nested.icon-right li a img,.menu.nested.icon-right li a svg{margin-left:.25rem}.menu.icon-top li a,.menu.nested.icon-top li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-top li a i,.menu.icon-top li a img,.menu.icon-top li a svg,.menu.nested.icon-top li a i,.menu.nested.icon-top li a img,.menu.nested.icon-top li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu.icon-bottom li a,.menu.nested.icon-bottom li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-bottom li a i,.menu.icon-bottom li a img,.menu.icon-bottom li a svg,.menu.nested.icon-bottom li a i,.menu.nested.icon-bottom li a img,.menu.nested.icon-bottom li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu .active>a,.menu .is-active>a{background:#1779ba;color:#fefefe}.menu.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.menu.align-right li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right.vertical li{display:block;text-align:right}.menu.align-right.icon-bottom li a i,.menu.align-right.icon-bottom li a img,.menu.align-right.icon-bottom li a svg,.menu.align-right.icon-top li a i,.menu.align-right.icon-top li a img,.menu.align-right.icon-top li a svg,.menu.align-right.vertical li .submenu li{text-align:right}.menu.align-right .nested{margin-left:0;margin-right:1rem}.menu.align-center li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu.align-center li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu .menu-text{color:inherit;font-weight:700;line-height:1;padding:.7rem 1rem}.menu-centered>.menu,.menu-centered>.menu li{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu-centered>.menu li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu-centered>.menu li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.no-js [data-responsive-menu] ul{display:none}.menu-icon{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon:after{background:#fefefe;-webkit-box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon:hover:after{background:#cacaca;-webkit-box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.menu-icon.dark{cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:20px}.menu-icon.dark:after{background:#0a0a0a;-webkit-box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;content:"";display:block;height:2px;left:0;position:absolute;top:0;width:100%}.menu-icon.dark:hover:after{background:#8a8a8a;-webkit-box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.accordion-menu li{width:100%}.accordion-menu .is-accordion-submenu a,.accordion-menu a{padding:.7rem 1rem}.accordion-menu .nested.is-accordion-submenu{margin-left:1rem;margin-right:0}.accordion-menu.align-right .nested.is-accordion-submenu{margin-left:0;margin-right:1rem}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a{position:relative}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;margin-top:-3px;position:absolute;right:1rem;top:50%;width:0}.accordion-menu.align-left .is-accordion-submenu-parent>a:after{left:auto;right:1rem}.accordion-menu.align-right .is-accordion-submenu-parent>a:after{left:1rem;right:auto}.accordion-menu .is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.is-accordion-submenu-parent{position:relative}.has-submenu-toggle>a{margin-right:40px}.submenu-toggle{cursor:pointer;height:40px;position:absolute;right:0;top:0;width:40px}.submenu-toggle:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;bottom:0;content:"";display:block;height:0;margin:auto;top:0;width:0}.submenu-toggle[aria-expanded=true]:after{-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.submenu-toggle-text{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.is-drilldown{overflow:hidden;position:relative}.is-drilldown li{display:block}.is-drilldown.animate-height{-webkit-transition:height .5s;transition:height .5s}.drilldown a{background:#fefefe;padding:.7rem 1rem}.drilldown .is-drilldown-submenu{background:#fefefe;left:100%;position:absolute;top:0;-webkit-transition:-webkit-transform .15s linear;transition:-webkit-transform .15s linear;transition:transform .15s linear;transition:transform .15s linear,-webkit-transform .15s linear;width:100%;z-index:-1}.drilldown .is-drilldown-submenu.is-active{display:block;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);z-index:1}.drilldown .is-drilldown-submenu.is-closing{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.drilldown .is-drilldown-submenu a{padding:.7rem 1rem}.drilldown .nested.is-drilldown-submenu{margin-left:0;margin-right:0}.drilldown .drilldown-submenu-cover-previous{min-height:100%}.drilldown .is-drilldown-submenu-parent>a{position:relative}.drilldown .is-drilldown-submenu-parent>a:after{margin-top:-6px;position:absolute;top:50%}.drilldown .is-drilldown-submenu-parent>a:after,.drilldown.align-left .is-drilldown-submenu-parent>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;right:1rem;width:0}.drilldown.align-left .is-drilldown-submenu-parent>a:after{left:auto}.drilldown.align-right .is-drilldown-submenu-parent>a:after{left:1rem;right:auto}.drilldown .js-drilldown-back>a:before,.drilldown.align-right .is-drilldown-submenu-parent>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;width:0}.drilldown .js-drilldown-back>a:before{display:inline-block;margin-right:.75rem;vertical-align:middle}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}[data-whatinput=mouse] .dropdown.menu a{outline:0}.dropdown.menu>li>a{padding:.7rem 1rem}.dropdown.menu>li.is-active>a{background:0 0;color:#1779ba}.no-js .dropdown.menu ul{display:none}.dropdown.menu .nested.is-dropdown-submenu{margin-left:0;margin-right:0}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.vertical>li>a:after{right:14px}.dropdown.menu.vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}@media print,screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.medium-vertical>li>a:after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}@media print,screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{left:0;right:auto;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{border-color:#1779ba transparent transparent;border-style:solid;border-width:6px 6px 0;content:"";display:block;height:0;left:auto;margin-top:-3px;right:5px;width:0}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%;top:0}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{left:100%;right:auto}.dropdown.menu.large-vertical>li>a:after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{left:auto;right:0;top:100%}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{left:auto;margin-top:-6px;position:absolute;right:5px;top:50%}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{left:auto;top:100%}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{left:100%;right:auto}.is-dropdown-submenu{background:#fefefe;border:1px solid #cacaca;display:none;left:100%;min-width:200px;position:absolute;top:0;z-index:1}.dropdown .is-dropdown-submenu a{padding:.7rem 1rem}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{border-color:transparent #1779ba transparent transparent;border-style:solid;border-width:6px 6px 6px 0;content:"";display:block;height:0;left:5px;right:auto;width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{border-color:transparent transparent transparent #1779ba;border-style:solid;border-width:6px 0 6px 6px;content:"";display:block;height:0;width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{background:hsla(0,0%,100%,.25);height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;-webkit-transition:opacity .5s ease,visibility .5s ease;transition:opacity .5s ease,visibility .5s ease;visibility:hidden;width:100%;z-index:11}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{overflow:hidden;position:relative}.off-canvas{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:fixed;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.is-transition-push{z-index:12}.off-canvas.is-closed{visibility:hidden}.off-canvas.is-transition-overlap{z-index:13}.off-canvas.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-absolute{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6;position:absolute;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:12}[data-whatinput=mouse] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-push{z-index:12}.off-canvas-absolute.is-closed{visibility:hidden}.off-canvas-absolute.is-transition-overlap{z-index:13}.off-canvas-absolute.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px hsla(0,0%,4%,.7);box-shadow:0 0 10px hsla(0,0%,4%,.7)}.off-canvas-absolute.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.position-left{height:100%;left:0;overflow-y:auto;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-left,.position-left{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-left.has-transition-push{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.position-left.is-transition-push{-webkit-box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset -13px 0 20px -13px hsla(0,0%,4%,.25)}.position-right{height:100%;overflow-y:auto;right:0;top:0;-webkit-overflow-scrolling:touch;width:250px}.off-canvas-content .off-canvas.position-right,.position-right{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-right.has-transition-push{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.position-right.is-transition-push{-webkit-box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 13px 0 20px -13px hsla(0,0%,4%,.25)}.position-top{left:0;overflow-x:auto;top:0;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-top,.position-top{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-top.has-transition-push{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.position-top.is-transition-push{-webkit-box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 -13px 20px -13px hsla(0,0%,4%,.25)}.position-bottom{bottom:0;left:0;overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch;height:250px}.off-canvas-content .off-canvas.position-bottom,.position-bottom{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.off-canvas-content.is-open-bottom.has-transition-push{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.position-bottom.is-transition-push{-webkit-box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25);box-shadow:inset 0 13px 20px -13px hsla(0,0%,4%,.25)}.off-canvas-content{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-transition-overlap,.off-canvas-content.has-transition-push{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.off-canvas-content .off-canvas.is-open,.off-canvas-content.has-transition-push{-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}@media print,screen and (min-width:40em){.position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-medium .close-button{display:none}.off-canvas-content .position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-medium .close-button{display:none}.off-canvas-content .position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-medium .close-button{display:none}.off-canvas-content .position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-medium~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-medium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-medium~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:64em){.position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-left.reveal-for-large .close-button{display:none}.off-canvas-content .position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left,.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-right.reveal-for-large .close-button{display:none}.off-canvas-content .position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right,.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}.position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-top.reveal-for-large .close-button{display:none}.off-canvas-content .position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top,.position-top.reveal-for-large~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;visibility:visible;z-index:12}.position-bottom.reveal-for-large .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom,.position-bottom.reveal-for-large~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:40em){.off-canvas.in-canvas-for-medium{background:0 0;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-medium.position-bottom,.off-canvas.in-canvas-for-medium.position-left,.off-canvas.in-canvas-for-medium.position-right,.off-canvas.in-canvas-for-medium.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-medium .close-button{display:none}}@media print,screen and (min-width:64em){.off-canvas.in-canvas-for-large{background:0 0;height:auto;overflow:visible;position:static;-webkit-transition:none;transition:none;visibility:visible;width:auto}.off-canvas.in-canvas-for-large.position-bottom,.off-canvas.in-canvas-for-large.position-left,.off-canvas.in-canvas-for-large.position-right,.off-canvas.in-canvas-for-large.position-top{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-large .close-button{display:none}}html.is-reveal-open{overflow-y:hidden;position:fixed;width:100%}html.is-reveal-open.zf-has-scroll{overflow-y:scroll;-webkit-overflow-scrolling:touch}html.is-reveal-open body{overflow-y:hidden}.reveal-overlay{background-color:hsla(0,0%,4%,.45);bottom:0;left:0;position:fixed;right:0;top:0;z-index:1005}.reveal,.reveal-overlay{display:none;overflow-y:auto;-webkit-overflow-scrolling:touch}.reveal{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:#fefefe;border:1px solid #cacaca;border-radius:0;margin-left:auto;margin-right:auto;padding:1rem;position:relative;top:100px;z-index:1006}[data-whatinput=mouse] .reveal{outline:0}@media print,screen and (min-width:40em){.reveal{min-height:0}}.reveal .column{min-width:0}.reveal>:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.reveal{max-width:75rem;width:600px}}.reveal.collapse{padding:0}@media print,screen and (min-width:40em){.reveal.tiny{max-width:75rem;width:30%}.reveal.small{max-width:75rem;width:50%}.reveal.large{max-width:75rem;width:90%}}.reveal.full{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}@media print,screen and (max-width:39.99875em){.reveal{border:0;border-radius:0;bottom:0;height:100%;left:0;margin-left:0;max-width:none;min-height:100%;right:0;top:0;width:100%}}.reveal.without-overlay{position:fixed}.sticky,.sticky-container{position:relative}.sticky{-webkit-transform:translateZ(0);transform:translateZ(0);z-index:0}.sticky.is-stuck{position:fixed;width:100%;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{left:auto;position:relative;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.title-bar{background:#0a0a0a;color:#fefefe;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left,.title-bar-right{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{display:inline-block;font-weight:700;vertical-align:middle}.top-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.5rem}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{margin-right:1rem;max-width:200px}.top-bar .input-group-field{margin-right:0;width:100%}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}@media print,screen and (min-width:40em){.top-bar{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.top-bar .top-bar-left{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:auto}.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;margin-left:auto}}@media print,screen and (max-width:63.99875em){.top-bar.stacked-for-medium{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media print,screen and (max-width:74.99875em){.top-bar.stacked-for-large{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.top-bar-title{margin:.5rem 1rem .5rem 0}.top-bar-left,.top-bar-right,.top-bar-title{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:" ";display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.clearfix:after{clear:both}.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.align-spaced{-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.align-left.vertical.menu>li>a{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right.vertical.menu>li>a{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center.vertical.menu>li>a{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-top{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.align-self-top{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.align-bottom{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.align-self-bottom{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.align-middle{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.align-self-middle{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.align-stretch{-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.align-self-stretch{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch}.align-center-middle{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-webkit-align-content:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.small-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.small-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.small-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.small-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.small-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.small-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}@media print,screen and (min-width:40em){.medium-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.medium-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.medium-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.medium-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.medium-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.medium-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}@media print,screen and (min-width:64em){.large-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.large-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.large-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.large-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.large-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.large-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}.flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}@media print,screen and (min-width:40em){.medium-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.medium-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.medium-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.medium-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.medium-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.medium-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.medium-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.medium-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media print,screen and (min-width:64em){.large-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.large-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.large-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.large-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.large-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.large-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.large-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.large-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.hide{display:none!important}.invisible{visibility:hidden}.visible{visibility:visible}@media print,screen and (max-width:39.99875em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media print,screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.99875em){.show-for-medium{display:none!important}}@media print,screen and (min-width:40em)and (max-width:63.99875em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.99875em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media print,screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.99875em){.show-for-large{display:none!important}}@media print,screen and (min-width:64em)and (max-width:74.99875em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.99875em),screen and (min-width:75em){.show-for-large-only{display:none!important}}.show-for-sr,.show-on-focus{height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.show-on-focus:active,.show-on-focus:focus{height:auto!important;overflow:visible!important;position:static!important;width:auto!important;clip:auto!important;white-space:normal!important}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.show-for-dark-mode{display:none}.hide-for-dark-mode{display:block}@media screen and (prefers-color-scheme:dark){.show-for-dark-mode{display:block!important}.hide-for-dark-mode{display:none!important}}.show-for-ie{display:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.show-for-ie{display:block!important}.hide-for-ie{display:none!important}}.show-for-sticky{display:none}.is-stuck .show-for-sticky{display:block}.is-stuck .hide-for-sticky{display:none}@font-face{font-family:fonticon;src:url(data:font/ttf;base64,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AG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAAFcmFkaW8McmFkaW8tYWN0aXZlFmNoZWNrYm94LWluZGV0ZXJtaW5hdGUIY2hlY2tib3gPY2hlY2tib3gtYWN0aXZlBHN3YXAGdW5mb2xkB2FjY291bnQDYWRkCWFwYXJ0bWVudAphcnJvdy1sZWZ0CmFycm93LWRvd24OYXJyb3ctZHJvcGRvd24MYXJyb3ctZHJvcHVwC2Fycm93LXJpZ2h0CGFycm93LXVwBWJlYWNoB3JlZnJlc2gOY2FsZW5kYXItdG9kYXkNY2FuY2VsLWZpbGxlZBNjaGVjay1jaXJjbGUtZmlsbGVkDGNoZWNrLWNpcmNsZQVjaGVjawxjaGV2cm9uLWxlZnQNY2hldnJvbi1yaWdodAZjYW5jZWwFY2xvdWQKY29sbGVjdGlvbgRjb3B5A2N1dAVwYXN0ZQpjcmVkaXRjYXJkCGNhbGVuZGFyBmRlbGV0ZQhkb3dubG9hZAV0aXRsZQltYWlsLW9wZW4EZWRpdAVlcnJvcg1lcnJvci1vdXRsaW5lCmNoZXZyb24tdXAMY2hldnJvbi1kb3duBWhlYXJ0BHNvcnQGZm9sZGVyFUZvcm1hdEFsaWduTGVmdEZpbGxlZARob21lBWluYm94BGluZm8MaW5mby1vdXRsaW5lBmxheWVycwhsb2NhdGlvbgRsb2NrBmxvZ291dARtYWlsDG1haWwtb3V0bGluZQRtZW51B21vbml0b3IPbW9yZS1ob3Jpem9udGFsDW1vcmUtdmVydGljYWwMbm90aWZpY2F0aW9uBm5ld3RhYgV1c2VycwhhZGQtdXNlcgR1c2VyBXBob25lBXBob3RvDXBob3RvLW91dGxpbmUEcGxheQtwbGF5LWNpcmNsZQVjbG9jawZ1bmxvY2sIZGF0YWJhc2UHbmV0d29yaxBkYXNoYm9hcmQtZmlsbGVkCHNldHRpbmdzC3N0YXItZmlsbGVkDHN0YXItb3V0bGluZQttYWludGVuYW5jZQRzZW5kBG5leHQIcHJldmlvdXMPd2FybmluZy1vdXRsaW5lElZpZXdIZWFkbGluZUZpbGxlZAp1bml2ZXJzaXR5BXVzYWdlBGhlbHAHd2FybmluZwdzdXBwb3J0BnNlYXJjaARsb2dzEWRhc2hib2FyZC1vdXRsaW5lEHN0YXItaGFsZi1maWxsZWQHbW9kdWxlcwR3b3JrBnVwbG9hZAR3aWZpBXRoZW1lBXNsYWNrCWRvY3MtbWFpbA5kb2NzLWNvbW11bml0eRBkb2NzLW9wZW4tc291cmNlD2RvY3MtZW50ZXJwcmlzZQ9kb2NzLWFsdGVybmF0b3INZG9jcy1vcGVyYXRvcgxkb2NzLW1hbmFnZXIPZG9jcy1tb25pdG9yaW5nEmRvY3MtY2hldnJvbi1yaWdodAlkb2NzLWluZm8MZG9jcy13YXJuaW5nEWRvY3MtY2hldnJvbi1sZWZ0EmRvY3MtbWVudS1jb2xsYXBzZRBkb2NzLXRodW1icy1kb3duDmRvY3MtdGh1bWJzLXVwBmdpdGh1YghpbnN0YW5jZQVwYXVzZQRzdG9wBXJlc2V0A2V5ZQ5zdGFjay1vdmVyZmxvdxBkb2NzLW5zcWwtZ3VpZGVzCmRvY3MtY2xvdWQUZG9jcy1nZXR0aW5nLXN0YXJ0ZWQJZG9jcy1ibG9nD2RvY3MtY29udHJpYnV0ZQ1kb2NzLXRyYWluaW5nDWRvY3MtY29tbWFuZHMSZG9jcy1jb25maWd1cmF0aW9uEWRvY3MtZW50ZXJwcmlzZS1tAAAAAA==) format("truetype"),url(data:application/vnd.ms-fontobject;base64,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AGUAYQB0AGUAIABiAHkAIABpAGMAbwBuADIAZgBvAG4AdAAgADwAQQBiAGQAZQBsAGgAYQBrAGkAbQAgAFIAQQBGAEkASwA+AGYAbwBuAHQAaQBjAG8AbgBSAGUAZwB1AGwAYQByAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AGkAYwBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAGYAbwBuAHQAaQBjAG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAAFcmFkaW8McmFkaW8tYWN0aXZlFmNoZWNrYm94LWluZGV0ZXJtaW5hdGUIY2hlY2tib3gPY2hlY2tib3gtYWN0aXZlBHN3YXAGdW5mb2xkB2FjY291bnQDYWRkCWFwYXJ0bWVudAphcnJvdy1sZWZ0CmFycm93LWRvd24OYXJyb3ctZHJvcGRvd24MYXJyb3ctZHJvcHVwC2Fycm93LXJpZ2h0CGFycm93LXVwBWJlYWNoB3JlZnJlc2gOY2FsZW5kYXItdG9kYXkNY2FuY2VsLWZpbGxlZBNjaGVjay1jaXJjbGUtZmlsbGVkDGNoZWNrLWNpcmNsZQVjaGVjawxjaGV2cm9uLWxlZnQNY2hldnJvbi1yaWdodAZjYW5jZWwFY2xvdWQKY29sbGVjdGlvbgRjb3B5A2N1dAVwYXN0ZQpjcmVkaXRjYXJkCGNhbGVuZGFyBmRlbGV0ZQhkb3dubG9hZAV0aXRsZQltYWlsLW9wZW4EZWRpdAVlcnJvcg1lcnJvci1vdXRsaW5lCmNoZXZyb24tdXAMY2hldnJvbi1kb3duBWhlYXJ0BHNvcnQGZm9sZGVyFUZvcm1hdEFsaWduTGVmdEZpbGxlZARob21lBWluYm94BGluZm8MaW5mby1vdXRsaW5lBmxheWVycwhsb2NhdGlvbgRsb2NrBmxvZ291dARtYWlsDG1haWwtb3V0bGluZQRtZW51B21vbml0b3IPbW9yZS1ob3Jpem9udGFsDW1vcmUtdmVydGljYWwMbm90aWZpY2F0aW9uBm5ld3RhYgV1c2VycwhhZGQtdXNlcgR1c2VyBXBob25lBXBob3RvDXBob3RvLW91dGxpbmUEcGxheQtwbGF5LWNpcmNsZQVjbG9jawZ1bmxvY2sIZGF0YWJhc2UHbmV0d29yaxBkYXNoYm9hcmQtZmlsbGVkCHNldHRpbmdzC3N0YXItZmlsbGVkDHN0YXItb3V0bGluZQttYWludGVuYW5jZQRzZW5kBG5leHQIcHJldmlvdXMPd2FybmluZy1vdXRsaW5lElZpZXdIZWFkbGluZUZpbGxlZAp1bml2ZXJzaXR5BXVzYWdlBGhlbHAHd2FybmluZwdzdXBwb3J0BnNlYXJjaARsb2dzEWRhc2hib2FyZC1vdXRsaW5lEHN0YXItaGFsZi1maWxsZWQHbW9kdWxlcwR3b3JrBnVwbG9hZAR3aWZpBXRoZW1lBXNsYWNrCWRvY3MtbWFpbA5kb2NzLWNvbW11bml0eRBkb2NzLW9wZW4tc291cmNlD2RvY3MtZW50ZXJwcmlzZQ9kb2NzLWFsdGVybmF0b3INZG9jcy1vcGVyYXRvcgxkb2NzLW1hbmFnZXIPZG9jcy1tb25pdG9yaW5nEmRvY3MtY2hldnJvbi1yaWdodAlkb2NzLWluZm8MZG9jcy13YXJuaW5nEWRvY3MtY2hldnJvbi1sZWZ0EmRvY3MtbWVudS1jb2xsYXBzZRBkb2NzLXRodW1icy1kb3duDmRvY3MtdGh1bWJzLXVwBmdpdGh1YghpbnN0YW5jZQVwYXVzZQRzdG9wBXJlc2V0A2V5ZQ5zdGFjay1vdmVyZmxvdxBkb2NzLW5zcWwtZ3VpZGVzCmRvY3MtY2xvdWQUZG9jcy1nZXR0aW5nLXN0YXJ0ZWQJZG9jcy1ibG9nD2RvY3MtY29udHJpYnV0ZQ1kb2NzLXRyYWluaW5nDWRvY3MtY29tbWFuZHMSZG9jcy1jb25maWd1cmF0aW9uEWRvY3MtZW50ZXJwcmlzZS1tAAAAAA==) format("embedded-opentype"),url(data:font/woff;base64,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) format("woff")}[class*=" icon-addon-"]:before,[class^=icon-addon-]:before{clip-path:polygon(0 0,100% 0,100% 59%,95.5% 54.5%,88% 50.3%,80% 48.5%,71% 49.2%,64% 52%,58% 56%,53% 62%,50% 69%,48.8% 79%,50.5% 87%,55% 95%,60% 100%,0 100%)}.admonition-title:before,.icon,.search-box:before,.secondary-side-nav__content li a:before,.side-nav__content .scylla-icon--expand,[class*=" icon-"],[class^=icon-]{font-family:fonticon!important;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400!important;vertical-align:middle}.icon-radio:before{content:""}.icon-radio-active:before{content:""}.icon-checkbox-indeterminate:before{content:""}.icon-checkbox:before{content:""}.icon-checkbox-active:before{content:""}.icon-swap:before{content:""}.icon-unfold:before{content:""}.icon-account:before{content:""}.icon-add:before{content:""}.icon-apartment:before{content:""}.icon-arrow-left:before{content:""}.icon-arrow-down:before{content:""}.icon-arrow-dropdown:before{content:""}.icon-arrow-dropup:before{content:""}.icon-arrow-right:before{content:""}.icon-arrow-up:before{content:""}.icon-beach:before{content:""}.icon-refresh:before{content:""}.icon-calendar-today:before{content:""}.icon-cancel-filled:before{content:""}.icon-check-circle-filled:before{content:""}.icon-check-circle:before{content:""}.icon-check:before{content:""}.icon-chevron-left:before{content:""}.icon-chevron-right:before{content:""}.icon-cancel:before{content:""}.icon-cloud:before{content:""}.icon-collection:before{content:""}.icon-copy:before{content:""}.icon-cut:before{content:""}.icon-paste:before{content:""}.icon-creditcard:before{content:""}.icon-calendar:before{content:""}.icon-delete:before{content:""}.icon-download:before{content:""}.icon-title:before{content:""}.icon-mail-open:before{content:""}.icon-edit:before{content:""}.icon-error:before{content:""}.icon-error-outline:before{content:""}.icon-chevron-up:before{content:""}.icon-chevron-down:before{content:""}.icon-heart:before{content:""}.icon-sort:before{content:""}.icon-folder:before{content:""}.icon-FormatAlignLeftFilled:before{content:""}.icon-home:before{content:""}.icon-inbox:before{content:""}.icon-info:before{content:""}.icon-info-outline:before{content:""}.icon-layers:before{content:""}.icon-location:before{content:""}.icon-lock:before{content:""}.icon-logout:before{content:""}.icon-mail:before{content:""}.icon-mail-outline:before{content:""}.icon-menu:before{content:""}.icon-monitor:before{content:""}.icon-more-horizontal:before{content:""}.icon-more-vertical:before{content:""}.icon-notification:before{content:""}.icon-newtab:before{content:""}.icon-users:before{content:""}.icon-add-user:before{content:""}.icon-user:before{content:""}.icon-phone:before{content:""}.icon-photo:before{content:""}.icon-photo-outline:before{content:""}.icon-play:before{content:""}.icon-play-circle:before{content:""}.icon-clock:before{content:""}.icon-unlock:before{content:""}.icon-database:before{content:""}.icon-network:before{content:""}.icon-dashboard-filled:before{content:""}.icon-settings:before{content:""}.icon-star-filled:before{content:""}.icon-star-outline:before{content:""}.icon-maintenance:before{content:""}.icon-send:before{content:""}.icon-next:before{content:""}.icon-previous:before{content:""}.icon-warning-outline:before{content:""}.icon-ViewHeadlineFilled:before{content:""}.icon-university:before{content:""}.icon-usage:before{content:""}.icon-help:before{content:""}.icon-warning:before{content:""}.icon-support:before{content:""}.icon-search:before{content:""}.icon-logs:before{content:""}.icon-dashboard-outline:before{content:""}.icon-star-half-filled:before{content:""}.icon-modules:before{content:""}.icon-work:before{content:""}.icon-upload:before{content:""}.icon-wifi:before{content:""}.icon-theme:before{content:""}.icon-slack:before{content:""}.icon-docs-mail:before{content:""}.icon-docs-community:before{content:""}.icon-docs-open-source:before{content:""}.icon-docs-enterprise:before{content:""}.icon-docs-alternator:before{content:""}.icon-docs-operator:before{content:""}.icon-docs-manager:before{content:""}.icon-docs-monitoring:before{content:""}.icon-docs-chevron-right:before{content:""}.icon-docs-info:before{content:""}.icon-docs-warning:before{content:""}.icon-docs-chevron-left:before{content:""}.icon-docs-menu-collapse:before{content:""}.icon-docs-thumbs-down:before{content:""}.icon-docs-thumbs-up:before{content:""}.icon-github:before{content:""}.icon-instance:before{content:""}.icon-pause:before{content:""}.icon-stop:before{content:""}.icon-reset:before{content:""}.icon-eye:before{content:""}.icon-stack-overflow:before{content:""}.icon-docs-nsql-guides:before{content:""}.icon-docs-cloud:before{content:""}.icon-docs-getting-started:before{content:""}.icon-docs-blog:before{content:""}.icon-docs-contribute:before{content:""}.icon-docs-training:before{content:""}.icon-docs-commands:before{content:""}.icon-docs-configuration:before{content:""}.icon-docs-enterprise-m:before{content:""}:root{--white:#fff;--gray-50:#f7fcfc;--gray-100:#edf5f7;--gray-200:#d8e5eb;--gray-300:#c3d5de;--gray-400:#aec0cf;--gray-500:#95a7ba;--gray-600:#7b8ba2;--gray-700:#616d87;--gray-800:#4b546f;--gray-900:#383d57;--gray-950:#2f324b;--black:#23263b;--primary:#42c4e6;--secondary:#3a2d55;--success:#43a047;--info:#1976d2;--warning:#ffab00;--danger:#ce291f;--link-color:#3c4fe0;--link-color-hover:#3c4fe0;--text-color:#23263b;--code-color:#23263b;--text-emphasis:#23263b;--text-muted:#95a7ba;--border-color:#f1f1f1;--header-border:#4458a3;--bg-color:#fefefe;--well-bg:#f7f8f9;--navigation-bg:#f6f8ff;--card-bg:var(--white);--admonition:#6f7071;--scollbar-bg:#b3bac5;--tooltip-bg:#383d57;--shadow-lg:0px 4px 25px rgba(0,0,0,.15);--border-width:1px;--border-radius:5px;--border-radius-md:8px;--line-number:#5a7184;--logo-url:"../img/logo-scylla-horizontal-color.svg"}.dark{--primary:#42c4e6;--secondary:#3a2d55;--success:#43a047;--info:#1976d2;--warning:#ffab00;--danger:#ce291f;--link-color:#42c4e6;--link-color-hover:#42c4e6;--text-color:var(--gray-200);--code-color:var(--gray-200);--text-emphasis:var(--white);--text-muted:var(--gray-300);--border-color:var(--gray-800);--header-border:#4458a3;--bg-color:var(--black);--well-bg:#1e2031;--navigation-bg:#1e2031;--card-bg:var(--gray-950);--admonition:var(--gray-400);--logo-url:"../img/logo-scylla-horizontal-light.svg"}html{box-sizing:border-box;scroll-padding-top:100px}body{background-color:var(--bg-color);color:var(--text-color);font-family:Roboto,sans-serif;font-size:16px;line-height:1}*,:after,:before{box-sizing:inherit}a{color:var(--link-color)}a.reference:after{font-family:FontAwesome;font-size:12px;padding:0 4px}a.reference.external:after{content:""}a.reference.download:after{content:""}a:hover{color:var(--link-color-hover);font-weight:500}.headerlink{margin-left:5px;visibility:hidden}.toc-backref:hover{color:var(--black)}h1,h2,h3,h4,h5,h6{font-family:Roboto,sans-serif;font-size:16px;font-weight:500;letter-spacing:.2px;line-height:24px;margin-bottom:16px}h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{visibility:visible}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}h1{font-size:32px;font-weight:700;line-height:40px;margin-bottom:28px}h2{font-size:24px;line-height:32px}h3{font-size:20px}h4{font-size:18px}h5{font-size:16px}h6{font-weight:400}img{max-width:100%}button:focus{outline:0}blockquote{border:0;margin:0;padding:0}blockquote,blockquote p,cite{color:inherit}cite{display:inline;font-size:inherit}cite:before{content:""}.show{display:block!important}.centered{display:block;margin:0 auto}.break{flex-basis:100%;height:0}@media screen and (min-width:1024px){h1{font-size:36px}}.dark .highlight .c{color:#6272a4}.dark .highlight .err,.dark .highlight .g{color:#f8f8f2}.dark .highlight .k{color:#ff79c6}.dark .highlight .l,.dark .highlight .n{color:#f8f8f2}.dark .highlight .o{color:#ff79c6}.dark .highlight .p,.dark .highlight .x{color:#f8f8f2}.dark .highlight .ch,.dark .highlight .cm{color:#6272a4}.dark .highlight .cp{color:#ff79c6}.dark .highlight .c1,.dark .highlight .cpf,.dark .highlight .cs{color:#6272a4}.dark .highlight .gd{color:#8b080b}.dark .highlight .ge{color:#f8f8f2;text-decoration:underline}.dark .highlight .gr{color:#f8f8f2}.dark .highlight .gh,.dark .highlight .gi{color:#f8f8f2;font-weight:700}.dark .highlight .go{color:#dfdfe6}.dark .highlight .gp,.dark .highlight .gs{color:#f8f8f2}.dark .highlight .gu{color:#f8f8f2;font-weight:700}.dark .highlight .gt{color:#f8f8f2}.dark .highlight .kc{color:#ff79c6}.dark .highlight .kd{color:#8be9fd;font-style:italic}.dark .highlight .kn,.dark .highlight .kp,.dark .highlight .kr{color:#ff79c6}.dark .highlight .kt{color:#8be9fd}.dark .highlight .ld{color:#f8f8f2}.dark .highlight .m{color:#bd93f9}.dark .highlight .s{color:#f1fa8c}.dark .highlight .na{color:#50fa7b}.dark .highlight .nb{color:#8be9fd;font-style:italic}.dark .highlight .nc{color:#50fa7b}.dark .highlight .nd,.dark .highlight .ne,.dark .highlight .ni,.dark .highlight .no{color:#f8f8f2}.dark .highlight .nf{color:#50fa7b}.dark .highlight .nl{color:#8be9fd;font-style:italic}.dark .highlight .nn,.dark .highlight .nx,.dark .highlight .py{color:#f8f8f2}.dark .highlight .nt{color:#ff79c6}.dark .highlight .nv{color:#8be9fd;font-style:italic}.dark .highlight .ow{color:#ff79c6}.dark .highlight .w{color:#f8f8f2}.dark .highlight .mb,.dark .highlight .mf,.dark .highlight .mh,.dark .highlight .mi,.dark .highlight .mo{color:#bd93f9}.dark .highlight .dl,.dark .highlight .s1,.dark .highlight .s2,.dark .highlight .sa,.dark .highlight .sb,.dark .highlight .sc,.dark .highlight .sd,.dark .highlight .se,.dark .highlight .sh,.dark .highlight .si,.dark .highlight .sr,.dark .highlight .ss,.dark .highlight .sx{color:#f1fa8c}.dark .highlight .bp{color:#f8f8f2;font-style:italic}.dark .highlight .fm{color:#50fa7b}.dark .highlight .vc,.dark .highlight .vg,.dark .highlight .vi,.dark .highlight .vm{color:#8be9fd;font-style:italic}.dark .highlight .il{color:#bd93f9}.contents.local>ul>li .dark a:before,.dark .contents.local>ul>li a:before,.dark .scylla-icon{filter:brightness(0) saturate(100%) invert(100%) sepia(4%) saturate(10%) hue-rotate(140deg) brightness(106%) contrast(100%)}.contents.local>ul>li a:before,.scylla-icon{background-repeat:no-repeat;background-size:contain;display:inline-block;filter:brightness(0);vertical-align:middle}.scylla-icon--about-team{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMntzdHJva2UtbGluZWNhcDpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik00LjY2IDkuODEgMi42MyAxMWEyLjA4IDIuMDggMCAwIDAtMS4xMyAxLjgzdjcuODFjLjE5IDEuMTEuNSAxLjUzIDEuNSAxLjQ3TTcuMDYgOS45NGwxLjQ0Ljk0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMy41IDE4LjV2NS4zNE05LjUgMTguNXY1LjM0TTguNTQgMTguNDJ2NS4zM00xNS41IDE4LjV2NS4zNE0xNi41IDE4LjV2NS4zNE0zLjMzIDIwLjUzaDUuMDhNMTEuNDUgOC44NGwuMDYuMDZhMS42NSAxLjY1IDAgMCAwIDIuMzQgMGgwIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJNMTIuNDIgNy41YTEuODEgMS44MSAwIDAgMS0xLjkyLTEuNzdWNWExLjk0IDEuOTQgMCAwIDEgMS45Mi0yIDIuMDcgMi4wNyAwIDAgMSAyLjA4IDJ2Ljc3YTIgMiAwIDAgMS0yLjA4IDEuNzNaTTExLjQyIDguNzQgOS42MyA5LjlhMi4wNyAyLjA3IDAgMCAwLTEuMTMgMS44NXY3LjgyQTEuNDcgMS40NyAwIDAgMCAxMCAyMU0xMy43NSA5LjE4bDIgLjY1Yy43LjM1Ljc2IDEuMDYuNzYgMS44NHY3LjljMCAuNzctLjIzIDEuMjQtMSAxLjI0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNOS45MyAxOS41aDUuNCIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTE5LjQyIDkuMTJhMi4wNyAyLjA3IDAgMCAwIDIuMDgtMS45M3YtLjc3YTIuMDcgMi4wNyAwIDAgMC0yLjA4LTEuOTIgMS45MyAxLjkzIDAgMCAwLTEuOTIgMS45MnYuNzdhMS45NCAxLjk0IDAgMCAwIDEuOTIgMS45M1pNNS41OSA5LjEyYTEuOTMgMS45MyAwIDAgMCAxLjkyLTEuOTN2LS43N0ExLjkzIDEuOTMgMCAwIDAgNS41OSA0LjUgMi4wOCAyLjA4IDAgMCAwIDMuNSA2LjQydi43N2EyLjA4IDIuMDggMCAwIDAgMi4wOSAxLjkzWk0yMC40NCA5LjgxbDIgMS4xN2EyLjA2IDIuMDYgMCAwIDEgMS4xMyAxLjg1djcuODFjLS4xOCAxLjExLS40NyAxLjUzLTEuNDcgMS40N00xOC4wNCA5Ljk0bC0xLjQ0LjkzIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMjEuNiAxOC41djUuMzRNMjEuNzcgMjAuNTNoLTUuMDgiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--about-us{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6LjhweH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNi4yOCAxOS40OGMtLjEyLjA4LS4wOC4wNy0uMjMuMS0uNTguMDktMS4xMi0uMjgtMS4yNS0uODQgMCAwLTIuMy05LjE4LTIuMy0xMS4xMUMyLjUgMy42IDUuODguNDQgMTAuMzguNDRTMTcuNSAzLjQ4IDE3LjUgNy41YzAgMS45My0xLjMyIDExLjIzLTEuMzIgMTEuMjMtLjEzLjU2LS42Ny45NC0xLjI1Ljg0LS4xMi0uMDItLjEzIDAtLjIzLS4wNyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1Ljc1IDE1Ljc1Yy0uMTcgMS4xNS0uMjIgMi4zNC0uNTUgMy40Ni0uMzcuODUtMS42MyAxLjA2LTIuMjIuMzMtLjI1LS4yOC4xOS0uNjguNDQtLjQuNDMuNDYgMS4yNC4xOCAxLjMxLS40NGwuMDYtLjM0Yy4xOS0uODkuMzUtMS43OS41Ny0yLjY4LjA1LS4yNC40Mi0uMTcuMzkuMDciLz48cGF0aCBkPSJNMTEuNSA3YzAgMS45LTEuNTYgMy41LTMuNDYgMy41UzQuNSA4LjkgNC41IDdzMS42NC0zLjUgMy41NC0zLjVTMTEuNSA1LjEgMTEuNSA3IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNOC41NSA0Ljc1Yy0uNTkuMTItLjcxIDEuNDItLjM2IDEuNzguMjMuMjMuNzEuMzEuNzEuNDdzLS40OC4yNC0uNzEuNDdjLS4zNi4zNi0uMjQgMS42Ni4zNiAxLjc4LjcxLjE0IDEuNzgtLjcxIDEuNzgtMi4yNVM5LjI2IDQuNjEgOC41NSA0Ljc1TTYuNTEgMTIuMmMyLjEyLjMxIDQuMzQtLjIgNS42OC0xLjk2LjMyLS40MS45Ni4xMS42Mi41MS0uNzYuOS0xLjc4IDEuNjMtMi45MyAxLjk1LTEuMTQuMzMtMi4zMy4zMS0zLjQ2LjE2YS4zNC4zNCAwIDAgMS0uMjktLjM4Yy4wMi0uMTguMTktLjMxLjM3LS4yOVpNNy45NyAxOS41OWMtLjk5Ljk2LTIuMzYuMDgtMi4zNi0xLjE1LS4xMi0uOS0uMjctMS43OS0uMzctMi42OS0uMDEtLjExLjA3LS4yMS4xOC0uMjIuMS0uMDEuMTkuMDYuMjEuMTUuMjIuODguMzggMS43Ny41NiAyLjY2LjAxLjc4LjY4IDEuMzggMS4zNS44My4yNy0uMjcuNjkuMTYuNDIuNDNaIi8+PHBhdGggZD0iTTkuNzUgMTkuMjdjLS40Mi45LTEuOC45Ni0yLjMyLjExLS41LTEuMTMtLjMxLTIuNS0uNDctMy43MiAwLS4xMS4wOC0uMi4xOS0uMjEuMSAwIC4xOS4wNy4yMS4xNy4xNy45NS4yOCAxLjkxLjQyIDIuODcuMDEuNDUuMjMuNzQuNTcuODUuMzMuMS43MS0uMDUuODgtLjM2LjE4LS4zNC43MS0uMDUuNTIuMjlNMTQuMDMgMTUuNjZjLS4xNiAxLjIzLjAzIDIuNTctLjQ2IDMuNzItLjUyLjg2LTEuOTEuNzktMi4zMi0uMTEtLjE3LS4zNC4zNS0uNjEuNTMtLjI4LjQyLjcxIDEuNDguMzggMS40NS0uNDkuMTQtLjk2LjI1LTEuOTIuNDItMi44Ny4wNC0uMjQuNDEtLjIuNC4wNFoiLz48cGF0aCBkPSJNMTEuODUgMTUuNTRjLjAyLjc5LjAxIDEuNTguMDEgMi4zNy0uMDIuNDEuMDcuOS0uMTQgMS4yOS0uNDMgMS4wMi0yLjAxIDEuMDItMi40NSAwLS4yMS0uMzktLjEzLS44OS0uMTQtMS4yOSAwLS43OSAwLTEuNTguMDEtMi4zNyAwLS4xMS4xLS4yLjIxLS4xOS4xIDAgLjE4LjA4LjE5LjE4LjA3Ljc5LjEgMS41OC4xNSAyLjM3LjAzLjI3IDAgLjgyLjEzIDEuMDQuMTMuMjYuNC40My42OC40Mi40NiAwIC43OS0uNC43Ny0uODdsLjAzLS41OWMuMDQtLjc5LjA4LTEuNTguMTUtMi4zNy4wMi0uMjQuNC0uMjMuNC4wMSIvPjwvc3ZnPg==)}.scylla-icon--about-us-m{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNi4zOCAzMi40MyI+PHBhdGggZD0iTTYuNTUgMzEuNjRjLS4yLjEzLS40My4yMi0uNjkuMjZhMS44MSAxLjgxIDAgMCAxLTIuMDYtMS4zOVMuNDkgMTQuOTkuNDkgMTEuODJDLjUgNS4xOSA1Ljc3LjUgMTMuMTkuNXMxMi42OSA0LjY5IDEyLjY5IDExLjMyYzAgMy4xOC0zLjMxIDE4LjY5LTMuMzEgMTguNjlhMS44MSAxLjgxIDAgMCAxLTIuNjIgMS4yIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIvPjxwYXRoIGQ9Ik0yMS44NiAyNS4zNmMtLjI4IDEuOS0uMzcgMy44Ni0uOTEgNS43MS0uNjEgMS40MS0yLjY4IDEuNzUtMy42Ni41NS0uNDEtLjQ3LjMxLTEuMTEuNzMtLjY2LjcxLjc2IDIuMDQuMjkgMi4xNi0uNzMuMzItMS42Ni42NS0zLjMzIDEuMDQtNC45OC4wOS0uMzkuNy0uMjguNjUuMTFaIi8+PHBhdGggZD0iTTE0LjggMTAuNTdjMCAzLjEzLTIuNTMgNS42Ni01LjY2IDUuNjZzLTUuNDctMi41My01LjQ3LTUuNjYgMi4zNC01LjY2IDUuNDctNS42NiA1LjY2IDIuNTMgNS42NiA1LjY2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6LjlweCIvPjxwYXRoIGQ9Ik0xMC4zMSA2Ljg2Yy0uOTguMi0xLjE3IDIuMzQtLjU5IDIuOTMuMzguMzggMS4xNy41MSAxLjE3Ljc4cy0uNzkuNC0xLjE3Ljc4Yy0uNTkuNTktLjM5IDIuNzMuNTkgMi45MyAxLjE2LjIzIDIuOTMtMS4xNyAyLjkzLTMuNzFzLTEuNzYtMy45NC0yLjkzLTMuNzFNNi44MiAxOC41MWMzLjQ5Ljg5IDYuOTctLjUgOS41MS0yLjkzLjQ3LS40NCAxLjE2LjMxLjY4Ljc0LTEuMzggMS4yMy0yLjk4IDIuMjktNC43OSAyLjg3LTEuOC41OS0zLjc3LjU4LTUuNTguMTRhLjQyLjQyIDAgMCAxLS4zMS0uNWMuMDUtLjIyLjI4LS4zNi41LS4zMVoiLz48cGF0aCBkPSJNMTYuNzMgMTYuNjdjLS4xMi0uNDYtLjUxLS44My0uOTktLjgzLS43NS0uMDItLjU5LTEuMTcuMTQtLjk5LjgxLjE2IDEuNDMuODUgMS41IDEuNjYuMDguNC0uNTQuNTQtLjY1LjE1Wk05LjAzIDMxLjdjLTEuMjYgMS4zNi0zLjYyLjQ1LTMuOC0xLjM1bC0uMDktLjU1Yy0uMjEtMS40OC0uNDUtMi45NS0uNi00LjQ0LS4wMi0uMTguMTEtLjM0LjI5LS4zNi4xNy0uMDIuMzIuMDkuMzUuMjUuMzkgMS42My43MSAzLjI4IDEuMDMgNC45My4wOSAxLjAyIDEuMzggMS41NCAyLjEyLjgxLjQ1LS40NCAxLjE0LjI2LjY5LjdaIi8+PHBhdGggZD0iTTExLjk2IDMxLjE2Yy0xIDEuOTgtNC4wNCAxLjMtNC4yMS0uODgtLjE1LTEuNjktLjMtMy4zOC0uMzktNS4wNyAwLS4xOC4xMy0uMzQuMzEtLjM0LjE3IDAgLjMxLjExLjM0LjI3LjI4IDEuNjcuNSAzLjM1LjcyIDUuMDMuMDkgMS4yIDEuNzcgMS41OSAyLjM2LjUxLjMxLS41NiAxLjE2LS4wOS44Ny40N1pNMTkuMDMgMjUuMjFjLS4wOCAxLjY5LS4yNCAzLjM4LS4zOSA1LjA3LS4wNC4zNy0uMTcuNzUtLjM4IDEuMDYtLjg2IDEuNC0zLjExIDEuMzEtMy44My0uMTctLjMtLjU2LjU1LTEuMDMuODYtLjQ4LjU5IDEuMDggMi4yNy42OSAyLjM1LS41Mi4yMi0xLjY4LjQzLTMuMzYuNzItNS4wMy4wNi0uNC42OC0uMzMuNjUuMDdaIi8+PHBhdGggZD0iTTE1LjQzIDI1LjAyYy4wNCAxLjMxLjAyIDIuNjEuMDIgMy45MS0uMDMuNjcuMTEgMS40OC0uMjMgMi4xMy0uNzQgMS42OS0zLjI5IDEuNjktNC4wMyAwLS4zNC0uNjUtLjIxLTEuNDctLjI0LTIuMTMgMC0xLjMtLjAyLTIuNjEuMDItMy45MSAwLS4xOC4xNi0uMzIuMzQtLjMyLjE3IDAgLjMuMTQuMzIuMy4xMSAxLjMuMTcgMi42LjI0IDMuOTEuMDUuNDUgMCAxLjM1LjIxIDEuNzIuMjEuNDMuNjYuNzEgMS4xMi43LjQ2LjAyLjkxLS4yNyAxLjEyLS42OS4yMi0uMzYuMTYtMS4yOC4yMS0xLjcyLjA3LTEuMy4xMy0yLjYxLjI0LTMuOTEuMDItLjQuNjYtLjM4LjY2LjAyWiIvPjwvc3ZnPg==)}.scylla-icon--alternator{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMDAwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMTcuNSAyLjkxYzAgMS4yOC0zLjY3IDIuNTktOCAyLjU5cy04LTEuMzEtOC0yLjU5UzUuMDkuNSA5LjQyLjVzOC4wOCAxLjEzIDguMDggMi40MU0xNy41IDcuNjZjMCAxLjI4LTMuNjMgMi44LTcuOTYgMi44UzEuNSA4LjkzIDEuNSA3LjY2TTE3LjUgMTIuNDdjMCAxLjI4LTMuNjcgMy4wMy04IDMuMDNzLTgtMS43NS04LTMuMDNNMTcuNSAxNy4yOWMwIDEuMjgtMy43NSAyLjMtOC4wOCAyLjNzLTcuOTItMS4wMy03LjkyLTIuM00xLjUgMTcuMTlWMi45MU0xNy41IDE3LjE5VjIuOTEiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--apps{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTS41IDEuNWgyMHYxNEguNXpNNy41IDE1Ljc0djIuODlNMTIuODMgMTUuNjN2Mi4zMk01LjUgMTguNWg5LjE0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMy42NCA1LjU2IDQuNTggMi45MS00LjU4IDIuOTJNOS4xIDEyLjA4aDQuMzIiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--architecture{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTIsLmNscy01e2ZpbGw6bm9uZTtzdHJva2U6Z3JheX0uY2xzLTF7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMiwuY2xzLTV7c3Ryb2tlLW1pdGVybGltaXQ6MTB9LmNscy0ye3N0cm9rZS13aWR0aDouOThweH0uY2xzLTV7c3Ryb2tlLXdpZHRoOi45OXB4fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0iTTEuOSAxMC4yN2ExMC44MyAxMC44MyAwIDAgMSA4LjczLTguMzhNMTAuNTEgMjMuMDhBMTAuNzkgMTAuNzkgMCAwIDEgMS43NyAxNE0yMy4yMyAxNGExMC44MSAxMC44MSAwIDAgMS05IDkuMTFNMTQuMjcgMS44OGExMC44MSAxMC44MSAwIDAgMSA4LjgzIDguMzciIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjEyLjI1IiBjeT0iMS43NSIgcj0iMS43NSIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iMTIuMjUiIGN5PSIyMi43NSIgcj0iMS43NSIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iNC45MiIgY3k9IjQuNzUiIHI9IjEuNzUiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOi45OXB4Ii8+PGNpcmNsZSBjeD0iMjAuMDkiIGN5PSIxOS45MSIgcj0iMS43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk5cHgiLz48Y2lyY2xlIGN4PSIxLjc1IiBjeT0iMTIuMjUiIHI9IjEuNzUiIGNsYXNzPSJjbHMtNSIvPjxjaXJjbGUgY3g9IjIzLjI1IiBjeT0iMTIuMjUiIHI9IjEuNzUiIGNsYXNzPSJjbHMtNSIvPjxjaXJjbGUgY3g9IjQuNzUiIGN5PSIxOS42NCIgcj0iMS43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk5cHgiLz48Y2lyY2xlIGN4PSIxOS45MSIgY3k9IjQuNDgiIHI9IjEuNzUiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOi45OXB4Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--benchmarks{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDozcHh9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV8yIiBkYXRhLW5hbWU9IkNhbHF1ZSAyIj48cGF0aCBkPSJNNS41MSAyNC45MXYtNS44NU0xMi41NyAyNC45MXYtOS43NE0xOS42MiAyNC45MVYxMC4xNSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibS45MSAxNC45OCA1LjEzLTcuOTQgNi4yNSA1Ljg4TDI0IDEiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1saW5lY2FwOnJvdW5kIi8+PHBhdGggZD0ibTI1IDUtNS01aDV6IiBzdHlsZT0iZmlsbDpncmF5Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTkgMTUtMi41LTEuNSA4LTEyTDE3IDN6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNi41IDEzLjUtLjUgM0w5IDE1eiIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTkuMjUgMi41aDQuMjV2MTZoLTEzdjQuMTdMNi40NiAxOC41bC00Ljk2LS4wNFYyLjVoOC4zMU0xNC41IDIuNWwxLjY3IDEuMzMiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--careers{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTEuNSAxMS41NXY4YzAgLjU2IDEuMDcgMiAyIDJoMThjLjg5IDAgMi0xLjQ0IDItMnYtOCIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTIzLjMxIDMuNUgxLjgxYy0uNDggMC0xLjMxLjU1LTEuMzEgMXY2bDEwIDJhOC40NSA4LjQ1IDAgMCAwIDQgMGwxMC0ydi02YzAtLjQ1LS43Mi0xLTEuMTktMU0xNS42MiAzLjV2LTFjMC0uNzYtLjYxLTEtMS4zOC0xaC0zLjQ1Yy0uNzYgMC0xLjM4LjI0LTEuMzggMXYxIiBjbGFzcz0iY2xzLTEiLz48cmVjdCB3aWR0aD0iNSIgaGVpZ2h0PSIzLjk5IiB4PSIxMCIgeT0iMTEiIHJ4PSIuNTUiIHJ5PSIuNTUiIHN0eWxlPSJmaWxsOmdyYXkiLz48L3N2Zz4=)}.scylla-icon--chevron-left{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTguMDkyIDE2IDEwIDE0LjExMyAzLjgxNyA4IDEwIDEuODg3IDguMDkyIDAgMCA4eiIvPjwvc3ZnPg==)}.contents.local>ul>li a:before,.scylla-icon--chevron-right{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTEuOTA4IDAgMCAxLjg4NyA2LjE4MyA4IDAgMTQuMTEzIDEuOTA4IDE2IDEwIDh6Ii8+PC9zdmc+)}.scylla-icon--circe{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzOCAzMCI+PGRlZnM+PHN0eWxlPi5jbHMtMiwuY2xzLTN7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH0uY2xzLTN7c3Ryb2tlLXdpZHRoOjEuMTFweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik0yMi4xIDEyaC02LjE2YTEuMDYgMS4wNiAwIDAgMS0uOTQtMS4wNy45My45MyAwIDAgMSAuOTQtLjkzaDYuMTZhLjkzLjkzIDAgMCAxIC45NC45M0ExLjA2IDEuMDYgMCAwIDEgMjIuMSAxMiIgc3R5bGU9ImZpbGw6IzRkNGQ0ZCIvPjxwYXRoIGQ9Ik0xMy40NCA0LjQ5SDkuNTF2MjRoMTl2LTI0SDI0LjUiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0xMyAzLjQ5SDguNWwtLjA4IDI2LjFIMjkuNVYzLjM5SDI1IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNMTIuNSAxOC4zOGgxM00xMi41IDE1LjQ5aDEzTTEyLjUgMjEuNDNoMTNNMTIuNSAyNC40N2gxM00xMy41IDIuNWgxMXYzLjk4aC0xMXoiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0yMS41LjVoLTUuMDR2MS45NWw1LjA0LjA1eiIgY2xhc3M9ImNscy0zIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--clock{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PGNpcmNsZSBjeD0iMTAuNSIgY3k9IjkuNSIgcj0iOSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTEwLjUgMy41djZsMy4wNiAzIiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNCIgaGVpZ2h0PSIzNCIgZmlsbD0ibm9uZSI+PGcgZmlsbD0iI2ZmZiIgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBkPSJNMTEuNjcgMjIuMTNhLjU2NC41NjQgMCAwIDEtLjM5OC0uOTYybDkuODk2LTkuODk2YS41NjMuNTYzIDAgMSAxIC43OTcuNzk3bC05Ljg5NiA5Ljg5NmEuNTYuNTYgMCAwIDEtLjM5OS4xNjUiLz48cGF0aCBkPSJNMjEuNTY2IDIyLjEzYS41Ni41NiAwIDAgMS0uMzk4LS4xNjVsLTkuODk2LTkuODk2YS41NjMuNTYzIDAgMSAxIC43OTctLjc5N2w5Ljg5NiA5Ljg5NWEuNTY0LjU2NCAwIDAgMS0uMzk5Ljk2MyIvPjxwYXRoIGQ9Ik0xNi42MTkgMzMuMjM3QzcuNDU1IDMzLjIzNyAwIDI1Ljc4MiAwIDE2LjYxOVM3LjQ1NSAwIDE2LjYxOSAwczE2LjYxOSA3LjQ1NSAxNi42MTkgMTYuNjE5LTcuNDU2IDE2LjYxOC0xNi42MiAxNi42MThtMC0zMi4xMWMtOC41NDIgMC0xNS40OTIgNi45NS0xNS40OTIgMTUuNDkyUzguMDc3IDMyLjExIDE2LjYxOSAzMi4xMSAzMi4xMSAyNS4xNiAzMi4xMSAxNi42MTkgMjUuMTYgMS4xMjcgMTYuNjE5IDEuMTI3Ii8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgzMy4yMzd2MzMuMjM3SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+)}.scylla-icon--cloud{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8yIiB2aWV3Qm94PSIwIDAgNDMuMDQgMzIuMDMiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO3N0cm9rZTojMWQxZDFiO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iTGF5ZXJfMyI+PHBhdGggZD0iTTQyLjU0IDQuMDZjMCAxLjY4LTMuNjMgMi40NC05IDIuNDRzLTEwLS43My0xMC0yLjRTMjcuNjcuNSAzMy4wNC41czkuNSAxLjg5IDkuNSAzLjU2TTQyLjU0IDkuNjNjMCAxLjY4LTMuNzYgMi45MS05LjEyIDIuOTFzLTkuODQtMS4yMy05Ljg0LTIuOTFNNDIuNTQgMTUuMzRjMCAxLjY4LTMuNjggMy4yNS05LjA0IDMuMjUtNCAwLTcuNi0uOTYtOS4wOS0yLjA0TTQyLjU0IDIwLjY1YzAgMS42OC0zLjcyIDIuOTctOS4wOCAyLjk3TTIzLjU0IDE1LjQ2VjQuMU00Mi41NCAyMC43N1Y0LjEiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0yOC4xMSAyMS4wOGMtLjg3IDAtMS42Ny4yMy0yLjM5LjYxIDAtLjA3LjAxLS4xNC4wMS0uMjEgMC00Ljg1LTMuODMtOC45LTguNjgtOC45cy04Ljg4IDQuMDUtOC44OCA4LjljMCAuMTcuMDIuMzQuMDMuNTEtLjg0LS41Ny0xLjg1LS45MS0yLjk1LS45MS0yLjg4IDAtNC43NCAyLjU3LTQuNzQgNS40NnMxLjg2IDQuOTkgNC43NCA0Ljk5aDIyLjg2YzIuODggMCA1LjUyLTIuMjcgNS41Mi01LjE2cy0yLjYzLTUuMjktNS41Mi01LjI5IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--cloud-docs{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTYuNSAxMS41aDh2MWgtOHpNMTUuNjUgNi41NWEzLjQyIDMuNDIgMCAwIDAtMy4xNSAyIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTAuMDYgMi44QTUuMTcgNS4xNyAwIDAgMSAxNSA2LjM1aC4yNGE0Ljg0IDQuODQgMCAwIDEgMCA5LjY3aC0xMWEzLjQ1IDMuNDUgMCAwIDEgMC02LjlBMy4yIDMuMiAwIDAgMSA1IDkuMiA1LjMgNS4zIDAgMCAxIDQuODYgOGE1LjIgNS4yIDAgMCAxIDUuMi01LjJtMC0uOGE2IDYgMCAwIDAtNiA2di4zMWE0LjI1IDQuMjUgMCAwIDAgLjE4IDguNDloMTFhNS42MyA1LjYzIDAgMCAwIC4zLTExLjI2QTYgNiAwIDAgMCAxMC4wNiAyIiBzdHlsZT0iZmlsbDojNGQ0ZDRkIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--comparison{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTIsLmNscy00e2ZpbGw6bm9uZTtzdHJva2U6Z3JheX0uY2xzLTEsLmNscy0ye3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMiwuY2xzLTR7c3Ryb2tlLWxpbmVjYXA6cm91bmR9LmNscy00e3N0cm9rZS1saW5lam9pbjpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik00LjUgMTMuNjN2Mi44OGg2LjA2TTIwLjUgMTMuNTR2Mi45NmwtNS41LjAxIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTIuNSAxOC41djIuNzJNNy41IDIxLjVoMTAiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjEyLjUiIGN5PSIxNi41IiByPSIyIiBzdHlsZT0ic3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7ZmlsbDpncmF5O3N0cm9rZS13aWR0aDouOTVweCIvPjxwYXRoIGQ9Ik01LjA2IDEzLjU4SDMuODhBMy4xIDMuMSAwIDAgMSAuNSAxMC41aDhhMy4xNiAzLjE2IDAgMCAxLTMuNDQgMy4wOE0yMSAxMy41OGgtMS4xN2EzLjA5IDMuMDkgMCAwIDEtMy4zNy0zLjA3aDhBMy4xNiAzLjE2IDAgMCAxIDIxIDEzLjU4TTcuNDYgNS4xMmMwIC41Ny0xLjEuNDYtMi43OS40NlMxLjU4IDUuNiAxLjU4IDUgMyA0LjQgNC42OSA0LjRzMi43Ny4xNiAyLjc3LjcyTTEuNSA5Ljg1VjUuMzFNNy41IDEwLjM1VjUuODFNMjMuNSA1LjEyYzAgLjU3LTEuMS40Ni0yLjc5LjQ2cy0zLjA5IDAtMy4wOS0uNTRTMTkgNC40IDIwLjczIDQuNHMyLjc3LjE2IDIuNzcuNzJNMTcuNTQgOS44NVY1LjMxTTIzLjU0IDEwLjM1VjUuODEiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.scylla-icon--contact-us{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDZweH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJtNi4yOTggMTAuMTggMTMuODMtNy4xOTcgNC42NzYgOC45ODYtMTMuODMgNy4xOTd6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNi4zIDEwLjE4IDguNjMgMS41NmExLjQyIDEuNDIgMCAwIDAgMS41My0uNzRsMy42Ny04TTExLjAyIDE5LjAzbDEuNzQtNU0yNC41OSAxMS45N2wtNS4wOS0xLjQ1TTcuMDkgMTcuNTggMy45IDE5LjM0TTYuMDYgMTUuNDEuNTQgMTguMzYiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--developers-blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJtNi40OCAxMC41OS0uNS4xNy41LjE2TDExIDEyLjE2VjE0bC03LTIuNDlWMTBsNy0yLjV2MS44M1pNMTQgOS4zMlY3LjVsNyAyLjV2MS41NEwxNCAxNHYtMS44M2w0LjE0LTEuMy40NC0uMTMtLjQzLS4xNFoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0xLjUgMi41aDIydjE2aC0xM3Y0LjE3TDYuNDYgMTguNWwtNC45Ni0uMDR6IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6Ljk4cHgiLz48L2c+PC9zdmc+)}.scylla-icon--docs{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNMy41IDIuNTFoMTYuOTR2MjAuOTFIMy41eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTIyLjQ1IDIxLjUuMDUtMjFoLTE3YTIuMTYgMi4xNiAwIDAgMC0yIDIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik02IDZoN3YySDZ6TTYgOWgxMXYySDZ6IiBjbGFzcz0iY2xzLTIiLz48L2c+PC9zdmc+)}.scylla-icon--enterprise{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8zIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxkZWZzPjxzdHlsZT4uY2xzLTEsLmNscy0ye2ZpbGw6bm9uZTtzdHJva2U6IzAwMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye3N0cm9rZS13aWR0aDoxLjA3cHh9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0ibTEzLjYyIDcuNSAxLjg4LTEuMDggMiAyLjA4djdoMU0xNS41IDE1LjV2LTUiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik01LjUgMTUuNXYtMTJsNC0yIDQgMnYxMk05LjUgMTUuNVYxLjZNNy41IDUuNXYxME0xMS41IDUuNXYxMCIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTUuNSA4LjU0IDMuNDYgNy41bC0xLjk2Ljk2djcuMDRoLTFNMy41IDEwLjV2NU0uNSAxNy41aDE4IiBjbGFzcz0iY2xzLTEiLz48L3N2Zz4=)}.scylla-icon--enterprise-m{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIGlkPSJMYXllcl8yXzAwMDAwMDE2NzY4MDY2MDE5MjYzMjMyNzcwMDAwMDA1NDc1ODA5NTExODI4NjY2MDM2XyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQzIDMxIj48c3R5bGU+LnN0MHtmaWxsOm5vbmU7c3Ryb2tlOiMxZDFkMWI7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PGcgaWQ9IkxheWVyXzMiPjxwYXRoIGQ9Im0yOS42IDkuNSA0LTIgNi45IDQuMXYxNS45aDJNMzMuNiAyNy41VjcuNk0xNC42IDI3LjVWNC44TDIyLjUuNSAyOS42IDV2MjIuNU0yMi41IDI3LjVWMU0yNC41IDUuNmwzIDJNMjQuNSA5LjZsMyAyTTI0LjUgMTMuNmwzIDJNMjQuNSAxNy41bDMgMk0yNC41IDIxLjVsMyAyTTM1LjQgMTEuNmwzIDJNMzUuNCAxNS42bDMgMS45TTM1LjQgMTkuNWwzIDJNMzUuNCAyMy41bDMgMS45TTE4LjUgNS44djIxLjdNMTQuNiA5LjdsLTQuMS0yLjUtOCA0LjR2MTUuOWgtMk0xMC41IDI3LjVWNy4yTTEyLjUgMTEuNmwyIDFNMTIuNSAxNS42bDIgLjlNMTIuNSAxOS41bDIgMU0xMi41IDIzLjVsMi4xIDFNNi40IDEyLjR2MTUuMU0uNSAzMC41aDQyIiBjbGFzcz0ic3QwIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--events{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye2ZpbGw6Z3JheX08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMjIuNSAyMy41aC0yMXYtMjBoMjJ2MTUuMjEiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik00LjQyIDMuNWMwLTEuMzYgMS4wOS0yIDIuNDUtMmEyLjQ2IDIuNDYgMCAxIDEgMCA0LjkxIDIuNiAyLjYgMCAwIDEtMS0uMjFNMTAuNjcgMy41YzAtMS4zNiAxLjEtMiAyLjQ2LTJhMi40NiAyLjQ2IDAgMCAxIDAgNC45MSAyLjYgMi42IDAgMCAxLTEtLjIxTTE2LjkzIDMuNWMwLTEuMzYgMS4xLTIgMi40NS0yYTIuNDYgMi40NiAwIDEgMSAwIDQuOTEgMi41IDIuNSAwIDAgMS0xLS4yMSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTcgOWgzdjNIN3pNMTIgOWgzdjNoLTN6TTE3IDloM3YzaC0zek03IDE0aDN2M0g3ek0xMiAxNGgzdjNoLTN6TTE3IDE0aDN2M2gtM3oiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0zLjUgMy42N3YxNi42Nk0zLjUgMjAuNDNjMCAxLjI5LjQ0IDIuMzMgMS43MyAyLjMzczIuMzMtMS45IDIuMzMtMy4xOWwxNi45NC0uMDdjMCAxLjI5LS41NSAzLjEyLTEuODMgMy4xMkg2LjMiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--exclamation{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PG1hc2sgaWQ9ImEiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiIgeD0iMSIgeT0iMSIgbWFzay10eXBlPSJhbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEyIDIzQzUuOSAyMyAxIDE4LjEgMSAxMlM1LjkgMSAxMiAxczExIDQuOSAxMSAxMS00LjkgMTEtMTEgMTFtMC0yMGMtNSAwLTkgNC05IDlzNCA5IDkgOSA5LTQgOS05LTQtOS05LTkiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTIgMTNjLS42IDAtMS0uNC0xLTFWOGMwLS42LjQtMSAxLTFzMSAuNCAxIDF2NGMwIC42LS40IDEtMSAxTTEyIDE3Yy0uMyAwLS41LS4xLS43LS4zcy0uMy0uNC0uMy0uN2MwLS4xIDAtLjMuMS0uNHMuMS0uMi4yLS4zYy4zLS4zLjctLjQgMS4xLS4yLjEgMCAuMSAwIC4yLjEgMCAwIC4xLjEuMi4xLjEuMS4yLjIuMi4zdi40YzAgLjEgMCAuMy0uMS40cy0uMS4yLS4yLjNjLS4yLjItLjQuMy0uNy4zIi8+PC9tYXNrPjxnIG1hc2s9InVybCgjYSkiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoMjR2MjRIMHoiLz48L2c+PC9zdmc+)}.scylla-icon--expand{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNi4wMDEiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik01IDEzYTEgMSAwIDAgMS0uNzEtLjI5bC00LTRhMSAxIDAgMCAxIDAtMS40MWw0LTRhMSAxIDAgMCAxIDEuNDIgMS40MUwyLjQxIDhsMy4yOSAzLjI5QTEgMSAwIDAgMSA1IDEzIi8+PHBhdGggZD0iTTExIDlIMWExIDEgMCAwIDEgMC0yaDEwYTEgMSAwIDAgMSAwIDJNMTUgMTZhMSAxIDAgMCAxLTEtMVYxYTEgMSAwIDAgMSAyIDB2MTRhMSAxIDAgMCAxLTEgMSIvPjwvc3ZnPg==)}.scylla-icon--forum{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItdXNlcnMiPjxwYXRoIGQ9Ik0xNyAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyIi8+PGNpcmNsZSBjeD0iOSIgY3k9IjciIHI9IjQiLz48cGF0aCBkPSJNMjMgMjF2LTJhNCA0IDAgMCAwLTMtMy44N00xNiAzLjEzYTQgNCAwIDAgMSAwIDcuNzUiLz48L3N2Zz4=)}.scylla-icon--help{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWhlbHAtY2lyY2xlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIvPjxwYXRoIGQ9Ik05LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgM00xMiAxN2guMDEiLz48L3N2Zz4=)}.scylla-icon--home{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl81IiBkYXRhLW5hbWU9IkxheWVyIDUiPjxwYXRoIGQ9Ik0zLjUgNi4xNHYxMWExLjM4IDEuMzggMCAwIDAgMS4zNyAxLjM2aDExLjI2YTEuMzggMS4zOCAwIDAgMCAxLjM3LTEuMzd2LTExIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMTkuNSA3LjUtOC02LjI1YTEuNTkgMS41OSAwIDAgMC0xLjk0IDBMMS41IDcuNU0xMi43MyAxOC4wMnYtNy4yMUg4LjI3djcuMjEiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--getting-started{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTcgNC41IDguNTEgNS4wNUw3IDE0LjV6IiBzdHlsZT0iZmlsbDojNGQ0ZDRkIi8+PHJlY3Qgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiB4PSIxLjUiIHk9Ii41IiByeD0iMi40MyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzRkNGQ0ZDtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjwvZz48L3N2Zz4=)}.scylla-icon--glossary{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIuNSAyLjVoMTN2MTZoLTEzeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1LjU4IDE3LjIxaDEuOTJWLjVoLTEzYTIuMzQgMi4zNCAwIDAgMC0yIDIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik00LjggMTMuOTNhMSAxIDAgMCAwIC43NS0uNDMgNiA2IDAgMCAwIC41Mi0xLjA4bDIuODctNy4wN2guMzZsMi44OCA2Ljc5YTkgOSAwIDAgMCAuNzIgMS40Ny43Ni43NiAwIDAgMCAuNjguMzJ2LjMySDkuNHYtLjMyYTMuMiAzLjIgMCAwIDAgLjgzLS4xMWMuMTMtLjA2LjItLjE5LjItLjQyYTEuNiAxLjYgMCAwIDAtLjEtLjQ2YzAtLjEyLS4xLS4yNy0uMTctLjQ0bC0uMzMtLjc4aC0yLjljLS4xOS41MS0uMzEuODUtLjM2IDFhMi40IDIuNCAwIDAgMC0uMTcuNzNjMCAuMTguMTIuMzIuMzcuNGEyLjYgMi42IDAgMCAwIC42Ni4wOHYuMzJINC44Wm00Ljg0LTIuNzItMS4yNC0zaC0uMTFsLTEuMTYgM1oiIHN0eWxlPSJmaWxsOiM0ZDRkNGQiLz48L2c+PC9zdmc+)}.scylla-icon--infoworld{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTB9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNMTIgMi41SDYuNVY2YzAgMyAuNTUgNy4xNyA1IDkuNXY0IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNi40IDQuNDRoLTRTMi41NiAxMSA4LjUgMTNNMTguNSA0LjVsNC0uMDZzLS4wNiA2LjU2LTYgOC41NiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTEyIDIuNWg2LjVWNmMwIDIuOTQtLjQgNy4wOC01IDkuNXY0TTkuNSAxOS41aDZ2MmgtNnoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik03LjUgMjEuNWgxMHYxaC0xMHoiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOmdyYXkiLz48L2c+PC9zdmc+)}.scylla-icon--integrations{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTE0LjU2IDEyLjctMS4yNS0xLjU3LTEuMzEuNzZhNiA2IDAgMCAwLTEuNjUtMWwuMDgtMS40OS0yLS40LS41MyAxLjQ0YTUuNyA1LjcgMCAwIDAtMS44Ny4zMWwtLjg4LTEuMTktMS43NyAxTDMuOTIgMTJhNi4zIDYuMyAwIDAgMC0xLjIyIDEuNDFsLTEuNS0uMzUtLjc0IDEuODcgMS4zOC44YTYuMiA2LjIgMCAwIDAgMCAxLjgzbC0xLjQxLjcyLjY0IDEuOTEgMS41OS0uMjhhOCA4IDAgMCAwIC40OC42OCA2IDYgMCAwIDAgLjY3LjczbC0uNjIgMS40NiAxLjcyIDEgMS0xLjI0YTYuNSA2LjUgMCAwIDAgMS43OS4zNWwuNDYgMS41MiAyLS4zdi0xLjZhNi40IDYuNCAwIDAgMCAxLjYyLS44OWwxLjMuODVMMTQuNDMgMjFsLTEtMS4yYTYuMiA2LjIgMCAwIDAgLjY4LTEuNzVsMS41MS0uMTkuMDUtMi0xLjUxLS4yNmE2IDYgMCAwIDAtLjYyLTEuODFabS01LjM1IDUuNTFhMS45MyAxLjkzIDAgMSAxIC4zMS0yLjcxIDEuOTIgMS45MiAwIDAgMS0uMzEgMi43MSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTI0LjMxIDguMDUtLjEzLTEuNjUtMS4yNS0uMDlhNS4zIDUuMyAwIDAgMC0uNjctMS40NGwuNzUtMS0xLjE2LTEuMTctMSAuNzRhNS4yIDUuMiAwIDAgMC0xLjQzLS42NmwtLjA2LTEuMjQtMS42NS0uMTctLjMyIDEuMjVhNS44IDUuOCAwIDAgMC0xLjUyLjM4TDE1IDIuMWwtMS4zNy45LjU4IDEuMThhNC45IDQuOSAwIDAgMC0uODYgMS4yNWwtMS4zLS4xNi0uNDUgMS42IDEuMjIuNTVhNSA1IDAgMCAwIDAgLjY4QTQuMyA0LjMgMCAwIDAgMTMgOWwtMS4xMS43Mi42OSAxLjUxIDEuMjgtLjM3YTUgNSAwIDAgMCAxLjA3IDEuMDdsLS4zOSAxLjI2IDEuNS43MS43NC0xLjA5YTUgNSAwIDAgMCAxLjUyLjE0bC41IDEuMTkgMS42MS0uNDEtLjEzLTEuMjlhNS4xIDUuMSAwIDAgMCAxLjI3LS44OGwxLjEyLjU3IDEtMS4zNS0uOTEtLjg4YTQuOSA0LjkgMCAwIDAgLjQyLTEuNTJabS02LjIgMS40M2ExLjc0IDEuNzQgMCAxIDEgMS42LTEuODYgMS43NCAxLjc0IDAgMCAxLTEuNiAxLjg2IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--knowledge-base{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAxOSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkfS5jbHMtMXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LmNscy0ye3N0cm9rZS1taXRlcmxpbWl0OjEwfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl81IiBkYXRhLW5hbWU9IkxheWVyIDUiPjxwYXRoIGQ9Ik0xNi4yMSA2LjM4YTUuMzYgNS4zNiAwIDAgMS0xLjUxIDMuNzMgNSA1IDAgMCAwLTEuNDUgMy4zMUg4LjQ3YTUuNCA1LjQgMCAwIDAtMS4yOC0zLjExIDUuMzcgNS4zNyAwIDEgMSA5LTMuOTNaTTEzLjIzIDE1LjY3SDguNDUiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0xMy4yNCAxMy40aC00Ljh2NC4xNmEuNy43IDAgMCAwIC43MS43aDMuMzhhLjcuNyAwIDAgMCAuNzEtLjdaIiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTAuODQgOC4yMWExLjY1IDEuNjUgMCAxIDEgMS42NC0xLjY1IDEuNjUgMS42NSAwIDAgMS0xLjY0IDEuNjVaTTEwLjg0IDguNjd2NC42NCIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--less{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNyIgZmlsbD0ibm9uZSI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiBmaWxsPSIjYjNiYWM1IiByeD0iMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMyA4LjVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMSAwLTJoN2ExIDEgMCAwIDEgMSAxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEzIDguNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxIDAtMmg3YTEgMSAwIDAgMSAxIDEiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTMgOC41YTEgMSAwIDAgMS0xIDFINWExIDEgMCAwIDEgMC0yaDdhMSAxIDAgMCAxIDEgMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMyA4LjVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMSAwLTJoN2ExIDEgMCAwIDEgMSAxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEzIDguNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxIDAtMmg3YTEgMSAwIDAgMSAxIDEiLz48L3N2Zz4=);filter:none}.scylla-icon--live-test{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtNntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWxpbmVjYXA6cm91bmR9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTUiIHI9IjkuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MS41cHgiLz48cGF0aCBkPSJNMTAgLjVoNXYyaC01eiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMXB4Ii8+PHBhdGggZD0iTTUuOCA4LjIgNC4xMyA2LjUzbDEuOC0xLjgxTDcuNiA2LjQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjExcHgiLz48cGF0aCBkPSJNMTIgNlYyLjUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjEuMTNweCIvPjxwYXRoIGQ9Ik0xMyA2VjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MS4wOHB4Ii8+PHBhdGggZD0iTTEyLjUgOC4wNlYxME0xMi41IDIwLjA0djEuODhNNy4xMyAxMC4wOGwxLjc5IDEuODhNMTYuMDQgMTcuMDhsMiAxLjg4TTcgMTguOTJsMS44OC0xLjg4TTE2LjEzIDExLjk2bDEuNzktMS44MyIgY2xhc3M9ImNscy02Ii8+PGVsbGlwc2UgY3g9IjEyLjUiIGN5PSIxNC4zNiIgcng9IjEuNSIgcnk9IjEuMzYiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJtMTIuNjMgMTQuNTQgMi41IDYuMzgiIGNsYXNzPSJjbHMtNiIvPjwvZz48L3N2Zz4=)}.scylla-icon--mail-list{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItbWFpbCI+PHBhdGggZD0iTTQgNGgxNmMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTIiLz48cGF0aCBkPSJtMjIgNi0xMCA3TDIgNiIvPjwvc3ZnPg==)}.scylla-icon--manager{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtM3tmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOTdweH0uY2xzLTR7ZmlsbDpncmF5fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGlkPSJDYWxxdWVfMiIgZD0iTTE4IDJoNXYyMkgzVjJoNC45MiIgZGF0YS1uYW1lPSJDYWxxdWUgMiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiLz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik04IDBoMTB2NEg4eiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDdweCIvPjxwYXRoIGQ9Ik03IDloM3YzSDd6TTcgMTZoM3YzSDd6IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNMTIuNSA5LjVoN3YyaC03ek0xMi41IDE2LjVoN3YyaC03eiIgY2xhc3M9ImNscy00Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--memory-management{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZH0uY2xzLTJ7c3Ryb2tlLXdpZHRoOjEuMTNweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxyZWN0IHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgeD0iNS41IiB5PSI1LjUiIGNsYXNzPSJjbHMtMSIgcng9IjIuNzQiIHJ5PSIyLjc0Ii8+PHBhdGggZD0iTTkuNSA5LjVoN3Y3aC03eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTguNSA1LjV2LTRNMTEuNSA1LjV2LTRNMTQuNSA1LjV2LTRNMTcuNSA1LjV2LTRNOC41IDI0LjV2LTRNMTEuNSAyNC41di00TTE0LjUgMjQuNXYtNE0xNy41IDI0LjV2LTRNMjAuNSA4LjVoNE0yMC41IDExLjVoNE0yMC41IDE0LjVoNE0yMC41IDE3LjVoNE0xLjUgOC41aDRNMS41IDExLjVoNE0xLjUgMTQuNWg0TTEuNSAxNy41aDQiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--monitoring{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTUuNTUgMTAuODlhMy44MyAzLjgzIDAgMCAxLS4xNS0zLjc2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIvPjxyZWN0IHdpZHRoPSIzLjA1IiBoZWlnaHQ9IjEwLjgiIHg9IjE3LjYzIiB5PSIxNC4wMSIgcng9Ii41NyIgcnk9Ii41NyIgc3R5bGU9InN0cm9rZTpncmF5O2ZpbGw6Z3JheTtzdHJva2Utd2lkdGg6Ljk1cHg7c3Ryb2tlLW1pdGVybGltaXQ6MTAiIHRyYW5zZm9ybT0icm90YXRlKC00NSAxOS4xNTggMTkuNDA1KSIvPjxjaXJjbGUgY3g9IjguNSIgY3k9IjkiIHI9IjciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjJweCIvPjxwYXRoIGQ9Im0xNi4wNSAxNi4zOS0yLjI4LTIuMjgiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48L2c+PC9zdmc+)}.scylla-icon--networking{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTB9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTIuNSIgcj0iNCIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6Ljk0cHgiLz48Y2lyY2xlIGN4PSI1IiBjeT0iMyIgcj0iMi41IiBjbGFzcz0iY2xzLTIiLz48Y2lyY2xlIGN4PSIxOSIgY3k9IjIwIiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjIyIiBjeT0iNi42IiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxjaXJjbGUgY3g9IjQuNSIgY3k9IjIyIiByPSIyLjUiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Im02LjgzIDUuNSAzLjI1IDQuMzNNMjAuMjMgNy44NSAxNS4zMyAxMU05LjgzIDE1LjA4bC00LjA5IDUuODRNMTQuNTggMTUuMzNsMyAzLjA5IiBjbGFzcz0iY2xzLTIiLz48Y2lyY2xlIGN4PSIxMi41IiBjeT0iMTIuNSIgcj0iMS41IiBzdHlsZT0iZmlsbDpncmF5Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--news{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTMgMTUuMTcgMTYuMzEgMy44MmExLjQ4IDEuNDggMCAwIDEgMi4yMi40Nmw1LjE1IDkuNjVhMS40NiAxLjQ2IDAgMCAxLS45MyAyLjEyTDUuNjkgMTkuOVpNOC43MSAxOS4zM2wuNzYgMi4yMmExLjUxIDEuNTEgMCAwIDAgMS44NSAxbDMuNTgtMS4wNmExLjUgMS41IDAgMCAwIDEtMS44NkwxNS40NSAxOE01LjU0IDIwbC0xLjgzIDFhLjkyLjkyIDAgMCAxLTEuMjUtLjM3TC42MSAxNy40OUEuOTIuOTIgMCAwIDEgMSAxNi4yNGwxLjgzLTFNOC41IDE0bDcuMzgtNS41IiBjbGFzcz0iY2xzLTEiLz48L3N2Zz4=)}.scylla-icon--newsletter{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwfS5jbHMtMntzdHJva2UtbGluZWNhcDpyb3VuZH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzQiIGRhdGEtbmFtZT0iQ2FscXVlIDQiPjxwYXRoIGQ9Ik0xOS41IDkuNWgzdjEyaC0yMHYtMTJoMyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTIuNjUgOS44NCA5Ljg1IDYuODggOC42My02Ljg4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtNS41IDcuNS0zIDJNMTQuMzUgMy44NmwtMS40Ni0xLjA5LTEuNDcgMS4wOU0yMS41IDkuNWwtMi0yTTE5LjUgMTEuNXYtN2gtMTR2Ny40NyIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--nsql-guides{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGcgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHJlY3Qgd2lkdGg9IjEuMTUiIGhlaWdodD0iOS43MiIgeD0iNC4zNyIgeT0iMTMuNzEiIHJ4PSIuNTQiIHJ5PSIuNTQiIHN0eWxlPSJmaWxsOmdyYXk7c3Ryb2tlLXdpZHRoOjEuMDlweDtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIgdHJhbnNmb3JtPSJyb3RhdGUoNDUgNC45NDggMTguNTcpIi8+PGNpcmNsZSBjeD0iMTIuMjUiIGN5PSIxMi4yNSIgcj0iNC43NSIgc3R5bGU9InN0cm9rZTpncmF5O3N0cm9rZS1taXRlcmxpbWl0OjEwO2ZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MS41cHgiLz48cGF0aCBkPSJNOC41IDIwLjV2M2gxNXYtMjFoLTE1djIiIHN0eWxlPSJzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtmaWxsOm5vbmU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMDZweCIvPjwvZz48L3N2Zz4=)}.scylla-icon--open-source{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNLjMxIDIxLjUxIDUgMTkuNjlhMi4zNyAyLjM3IDAgMCAxIDEuODguMTlsNS4yNCAxLjY4YTIuMjMgMi4yMyAwIDAgMCAyLS4xMmw5LjUtNC43NWMuOC0uNDQgMS42NC0xLjMxIDEuMTMtMS45MWEyLjM0IDIuMzQgMCAwIDAtMi42NC0uNDJMMTggMTYuMDkiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Im0uMjUgMTUuNjkgNC44OC0xLjIxYzEuMjUtLjMgMi4xNy0uNjMgMy40NC0uMTNhMTUuMiAxNS4yIDAgMCAwIDQgMS4xaDQuNTJjLjg1IDAgLjk1LjU0Ljk1IDEuMTNhMSAxIDAgMCAxLTEuMDggMSA2NiA2NiAwIDAgMS03LS4zMSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTguNTYgOS42OHYtLjgxYzAtLjkxLS4zOC0xLjIxLTEuMjktMS4yMUg3VjYuM2guMzFjLjkxIDAgMS4yOS0uMyAxLjI5LTEuMjF2LS44MWMwLTEuMi42Ni0xLjkyIDIuODItMi4zdjEuMTZjLTEuMjQuMzUtMS40My42OC0xLjQzIDEuNHYuODdBMS41MiAxLjUyIDAgMCAxIDguNzUgNyAxLjUyIDEuNTIgMCAwIDEgMTAgOC41NnYuODdjMCAuNzEuMTkgMSAxLjQzIDEuNFYxMmMtMi4yMS0uMzUtMi44Ny0xLjEyLTIuODctMi4zMk0xNy40MyA0LjN2LjgxYzAgLjkxLjM3IDEuMjEgMS4yOSAxLjIxSDE5djEuMzZoLS4zMWMtLjkyIDAtMS4yOS4zLTEuMjkgMS4yMXYuODFjMCAxLjItLjY1IDItMi44MSAyLjM1di0xLjJjMS4yNS0uMzYgMS40NC0uNjkgMS40NC0xLjR2LS44N0ExLjUzIDEuNTMgMCAwIDEgMTcuMjUgNyAxLjUzIDEuNTMgMCAwIDEgMTYgNS40M3YtLjg3YzAtLjcyLS4xOS0xLTEuNDQtMS40VjJjMi4yMi4zOCAyLjg3IDEuMSAyLjg3IDIuMyIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--operator{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjQuODEgMS4wMSAyOC4zMiAyNy42NCI+PHBhdGggZD0iTTMyLjUyIDE4cy0uMDkgMC0uMDktLjA1LS4wOCAwLS4xNyAwYTIuMiAyLjIgMCAwIDAtLjUxIDAgLjQ3LjQ3IDAgMCAxLS4yNi0uMDUgOS4zIDkuMyAwIDAgMS0xLjQ5LS4zMi41NC41NCAwIDAgMS0uMy0uMzFsLS4zNC0uMDhhMTEuMyAxMS4zIDAgMCAwLS4xOC0zLjc5IDExLjYgMTEuNiAwIDAgMC0xLjUtMy41MmwuMjYtLjI2YS42LjYgMCAwIDEgLjEzLS4zOSA3LjcgNy43IDAgMCAxIDEuMi0uODZsLjI2LS4xMy40Ny0uM3MuMDkgMCAuMTMtLjA4IDAtLjA1IDAtLjA5YS44NC44NCAwIDAgMCAuMTctMS4yLjc4Ljc4IDAgMCAwLS42LS4zIDEgMSAwIDAgMC0uNi4yMWMtLjA1LjA1LS4wOS4wOS0uMTMuMDlhMyAzIDAgMCAwLS4zNS4zOWMwIC4wOC0uMTMuMTMtLjE3LjE3YTUuNiA1LjYgMCAwIDEtMS4wNy45NC42LjYgMCAwIDEtLjI2LjA5LjI1LjI1IDAgMCAxLS4xNyAwaC0uMDVsLS4zNC4yMS0xLjA4LTFhMTEgMTEgMCAwIDAtNS42NS0yLjI3di0uMzRhLjYuNiAwIDAgMS0uMjItLjM0QTggOCAwIDAgMSAxOS42NiAzdi0uMjVjMC0uMDguMDUtLjM1LjA5LS41MnYtLjMxYS44Mi44MiAwIDAgMC0xLjQ2LS42Ljg2Ljg2IDAgMCAwLS4yNi42di4yMmExLjggMS44IDAgMCAwIC4wOS41MS42LjYgMCAwIDEgMCAuMjZWM2E5IDkgMCAwIDEgLjA4IDEuNDcuNi42IDAgMCAxLS4yMS4zNHYuNDNjLS40OCAwLTEgLjEzLTEuNDcuMjJhMTAuMTYgMTAuMTYgMCAwIDAtNS4yOCAzTDExIDguMjRoLS4xN2EuNy43IDAgMCAxLS4yNi0uMDkgOCA4IDAgMCAxLTEuMDctMWMwLS4wOC0uMTMtLjEzLS4xNy0uMTdzLS4yNS0uMi0uMzMtLjMzLS4wOCAwLS4xMy0uMDh2LS4wNWExIDEgMCAwIDAtLjYtLjIxLjY0LjY0IDAgMCAwLS42LjMuOTEuOTEgMCAwIDAgLjE3IDEuMnMwIC4wNSAwIC4wNS4wOS4wOC4xMy4wOGE1IDUgMCAwIDAgLjQ3LjI2bC4yNi4xM2E2LjYgNi42IDAgMCAxIDEuMjEuODYuNDcuNDcgMCAwIDEgLjEzLjM5di0uMDVsLjI1LjI2YTMgMyAwIDAgMS0uMTMuMjIgMTAuMiAxMC4yIDAgMCAwLTEuNSA3bC0uMzUuMDljMCAuMTMtLjE3LjIxLS4zLjNhOC42IDguNiAwIDAgMS0xLjQ2LjI2LjYuNiAwIDAgMC0uMjYgMGgtLjUyYy0uMTggMC0uMDguMDUtLjE3LjA1aC0uMDhhLjg0Ljg0IDAgMCAwLS42OSAxIC43OS43OSAwIDAgMCAuODYuNi40LjQgMCAwIDAgLjIxIDBoLjIyYTQgNCAwIDAgMCAuNDctLjE3LjY1LjY1IDAgMCAxIC4yNi0uMDggNy43IDcuNyAwIDAgMSAxLjQyLS4zOS41LjUgMCAwIDEgLjM1LjEzaC4zOWExMC4zIDEwLjMgMCAwIDAgMy41MyA1IDYuMyA2LjMgMCAwIDAgMS4xNi43N2wtLjIyLjNhLjUxLjUxIDAgMCAxIDAgLjQzIDYuNSA2LjUgMCAwIDEtLjY5IDEuMjR2LjA1YS44LjggMCAwIDEtLjE3LjIxYy0uMDkuMDktLjE3LjI2LS4zLjQzczAgLjA5LS4wOS4xMyAwIC4wNSAwIC4wNWEuODguODggMCAwIDAgLjM0IDEuMTYuOS45IDAgMCAwIC4zLjA4IDEgMSAwIDAgMCAuODItLjUxczAtLjA4LjA5LS4xMy4xMy0uMy4xNy0uNDdsLjA5LS4yNmE3IDcgMCAwIDEgLjU2LTEuMzMuNjIuNjIgMCAwIDEgLjM0LS4yNmwuMTctLjM1YTEwIDEwIDAgMCAwIDMuNzUuNjkgOC41IDguNSAwIDAgMCAyLjMyLS4zIDEyIDEyIDAgMCAwIDEuMzctLjM5bC4xOC4zMWEuNjIuNjIgMCAwIDEgLjM0LjI2IDcgNyAwIDAgMSAuNTYgMS4zM2wuMDkuMjZhMS4zIDEuMyAwIDAgMCAuMTcuNDdjMCAuMDUgMCAuMDkuMDkuMTNhMSAxIDAgMCAwIC44Mi41MSAxIDEgMCAwIDAgLjM0LS4wOC43Ni43NiAwIDAgMCAuMzktLjQ4IDEuMSAxLjEgMCAwIDAtLjA1LS42NC4yLjIgMCAwIDAtLjA4LS4xMyAxLjUgMS41IDAgMCAwLS4zMS0uNDMuNjUuNjUgMCAwIDAtLjE3LS4yMnYtLjA5YTUuMiA1LjIgMCAwIDEtLjY5LTEuMjQuNTEuNTEgMCAwIDEgLjA1LS40M2wtLjEzLS4zNEExMC42OCAxMC42OCAwIDAgMCAyOSAxOC44MmwuMzQuMDV2LS4wNWEuNTQuNTQgMCAwIDEgLjM1LS4xMyA4IDggMCAwIDEgMS4zOC4zOS42LjYgMCAwIDAgLjI2LjA5IDIuNCAyLjQgMCAwIDAgLjQ3LjIxcy4wOSAwIC4xNyAwaC4wOWEuNC40IDAgMCAwIC4yMSAwIC45NC45NCAwIDAgMCAuODYtLjYgMSAxIDAgMCAwLS43Ny0uOVptLTEyLjQzLTEuMzMtMS4xNi41Ni0xLjE2LS41Ni0uMy0xLjI1LjgxLTFoMS4yOWwuODIgMVptNy0yLjc5YTggOCAwIDAgMSAuMTcgMi43MWwtNC4xNS0uNzVjLS4zOC0uMDgtLjY4LS45LS43MS0xLjIyYTQgNCAwIDAgMSAuMjEtLjc0bDMuNDUtMi41NGE4LjYgOC42IDAgMCAxIDEuMDQgMi41NFptLTIuMzEtNC4xMy0zLjIyIDIuNjlhMS4yOCAxLjI4IDAgMCAxLTEuMjUtLjM3Yy0uMDktLjA5LS4zNy0uMjUtLjM3LS4zOFY3LjQzYTguMDcgOC4wNyAwIDAgMSA0Ljg2IDIuMzJaTTE3IDcuNTZsMS0uMTgtLjA2IDQuMzFjMCAuMzgtLjY0LjY4LTEgLjY4YTEuMSAxLjEgMCAwIDEtLjM1LS4wOEwxMyA5Ljc1YTguNCA4LjQgMCAwIDEgNC0yLjE5bS01LjI0IDMuNzggMy4zNyAyLjQ3LjMyLjUzYTEuMTQgMS4xNCAwIDAgMS0uMjUgMSAuNzguNzggMCAwIDEtLjM4LjMxbC00LjMxLjlhOSA5IDAgMCAxIDEuMjQtNS4yMVpNMTEgMTguNjFsNC4xLTEuMjNjLjM1IDAgLjg0LjcxLjg5IDEuMDZhLjUxLjUxIDAgMCAxLS4wNS40M2wtMS42MyAzLjk1QTguNCA4LjQgMCAwIDEgMTEgMTguNjFtOS43NiA1LjMzYTguNyA4LjcgMCAwIDEtMS44NS4yMSA5LjYgOS42IDAgMCAxLTIuNzEtLjQzbDEuNjYtNGMuMjEtLjI2IDEtLjIgMS4zMSAwYTIuNSAyLjUgMCAwIDEgLjM0LjNsMi4wNyAzLjc0YTYgNiAwIDAgMC0uOC4xOFpNMjYgMjAuMmE4LjQgOC40IDAgMCAxLTIuNTggMi41OGwtMS45Mi0zLjcyYTEuMTUgMS4xNSAwIDAgMSAuNDEtMWMuMjEtLjI1LjU5LS41OS43MS0uNTlsNC4yMiAxLjA2QTYuMyA2LjMgMCAwIDEgMjYgMjAuMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiIgc3R5bGU9ImZpbGw6IzRkNGQ0ZCIvPjwvc3ZnPg==)}.scylla-icon--overview{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIyLjYxIDMuNDVDMjIuNjEgNS4wNiAxOCA2LjUgMTIuNSA2LjVzLTEwLTEuNDQtMTAtMyA0LjUtMyAxMC0zIDEwLjExIDEuMzMgMTAuMTEgMi45NU0yMi42MSA5LjQ0YzAgMS42MS00LjY0IDMuMDYtMTAuMTEgMy4wNnMtMTAtMS40NS0xMC0zLjA2TTIyLjYxIDE1LjUxYzAgMS42Mi00LjY0IDMtMTAuMTEgM3MtMTAtMS4zNy0xMC0zTTIyLjYxIDIxLjU5YzAgMS42Mi00LjY0IDIuOTEtMTAuMTEgMi45MXMtMTAtMS4yOS0xMC0yLjkxTTIuNSAyMS40N1YzLjQ1TTIyLjUgMjEuNDdWMy40NSIgY2xhc3M9ImNscy0xIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--partners{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTE4LjUgOC4yNmgtNC43MmwtMS4yMyAxLjI3TTIuMzkgMTUuMDkuMTUgMTMuNzRsNC44Ny04LjQyIDIuMjQgMS4zNHpNMjIuNTkgMTUuMDlsMi4yNC0xLjM1LTQuODYtOC40Mi0yLjI0IDEuMzR6TTEwLjcxIDE1LjI2bC0yLjkzIDIuMjFNMTIuMTggMTYuNGwtMi45MyAyLjIxTTEzLjY4IDE3LjUzbC0yLjkzIDIuMjIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik02LjM4IDguM2gzLjc4YTIuMjcgMi4yNyAwIDAgMSAxLjM3LjQ3YzEuMjYgMSA0LjA5IDMuMTggNC40OCAzLjU2cy0xLjE0IDEuNjgtMi4yNyAxLjFhMTggMTggMCAwIDAtMi4xMS0uOTIuNTcuNTcgMCAwIDAtLjU2LjA5bC00Ljc5IDMuODlMMTIuMzMgMjFsOS40Ni03LjA5TTMuMjQgMTQuMjJsMy40IDEuODUiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--plus{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNyIgZmlsbD0ibm9uZSI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiBmaWxsPSIjYjNiYWM1IiByeD0iMSIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSA1YTEgMSAwIDEgMC0yIDB2Mi41SDVhMSAxIDAgMSAwIDAgMmgyLjVWMTJhMSAxIDAgMSAwIDIgMFY5LjVIMTJhMSAxIDAgMSAwIDAtMkg5LjV6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgNWExIDEgMCAxIDAtMiAwdjIuNUg1YTEgMSAwIDEgMCAwIDJoMi41VjEyYTEgMSAwIDEgMCAyIDBWOS41SDEyYTEgMSAwIDEgMCAwLTJIOS41eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS41IDVhMSAxIDAgMSAwLTIgMHYyLjVINWExIDEgMCAxIDAgMCAyaDIuNVYxMmExIDEgMCAxIDAgMiAwVjkuNUgxMmExIDEgMCAxIDAgMC0ySDkuNXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSA1YTEgMSAwIDEgMC0yIDB2Mi41SDVhMSAxIDAgMSAwIDAgMmgyLjVWMTJhMSAxIDAgMSAwIDIgMFY5LjVIMTJhMSAxIDAgMSAwIDAtMkg5LjV6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgNWExIDEgMCAxIDAtMiAwdjIuNUg1YTEgMSAwIDEgMCAwIDJoMi41VjEyYTEgMSAwIDEgMCAyIDBWOS41SDEyYTEgMSAwIDEgMCAwLTJIOS41eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+);filter:none}.scylla-icon--pricing{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0ibTIxLjczIDctMi40MS01LjEyYTIuNTIgMi41MiAwIDAgMC0yLjgyLTFsLTYuMDggMi4wNEExLjY5IDEuNjkgMCAwIDAgOS41MSA0TDMuOTMgMTkuMjlhMS4wNiAxLjA2IDAgMCAwIC42NCAxLjE3bDEwLjM0IDMuNzZhMSAxIDAgMCAwIDEuMjItLjQzbDUuNTgtMTUuMzNBMS44NyAxLjg3IDAgMCAwIDIxLjczIDciIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjE1LjczIiBjeT0iNS44OSIgcj0iMiIgY2xhc3M9ImNscy0xIi8+PHRleHQgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZpbGw6Z3JheTtmb250LWZhbWlseTpSb2JvdG8tTWVkaXVtLFJvYm90byIgdHJhbnNmb3JtPSJyb3RhdGUoMjAgLTQ4LjI0NCAzMC42NykiPiQ8L3RleHQ+PC9nPjwvc3ZnPg==)}.scylla-icon--release-note{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOTFweH08L3N0eWxlPjwvZGVmcz48ZyBpZD0iQ2FscXVlXzIiIGRhdGEtbmFtZT0iQ2FscXVlIDIiPjxwYXRoIGQ9Ik0yMS41IDI0LjVoLTE3VjUuN0w4Ljk1LjU0IDIxLjUuNXoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOXB4Ii8+PHBhdGggZD0iTTQuNjUgNS41SDkuNVYxTTcuNSA4LjVoMTFNNy41IDExLjVoMTFNNy41IDE0LjVoMTFNNy41IDE3LjVoMTFNNy41IDIwLjVoMTEiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--resource-center{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5jbHMtMntmaWxsOmdyYXl9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkNhbHF1ZV80IiBkYXRhLW5hbWU9IkNhbHF1ZSA0Ij48cGF0aCBkPSJNNS41IDIuNWg2LjkxbC4wOSAyMGgtN3oiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik04IDRoMnYxMC45N0w4IDE1eiIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTUuMzYgMi4yOSAyLjUgMy41djE4bDIuNzkgMS4xNCIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTEyLjU3IDIxLjg2IDEuNTcuNzUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouNjhweCIvPjxwYXRoIGQ9Im0xNC4xMSAyLjUtMS41NC41NyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOi44NXB4Ii8+PGNpcmNsZSBjeD0iOSIgY3k9IjE5IiByPSIxIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJNMTQuNSAyLjVoNi45NGwuMDYgMjBoLTd6IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNMTcgNGgydjEwLjk3TDE3IDE1eiIgY2xhc3M9ImNscy0yIi8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOSIgcj0iMSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTEyLjYgMi43M2gxLjY3VjIyLjZIMTIuNnpNMi41OCAyMS41bDIuNzUgMS4xVjIuNzNsLTIuNjYuOTR6IiBjbGFzcz0iY2xzLTIiLz48L2c+PC9zdmc+)}.scylla-icon--roadmap{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTpncmF5fS5jbHMtMXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOi45OHB4fS5jbHMtMntzdHJva2UtbWl0ZXJsaW1pdDoxMH0uY2xzLTN7ZmlsbDpncmF5fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibS41IDQuNSA4LTMgOCA0IDgtM3YxN2wtOCAzLTgtNC04IDN6TTguNSAxLjVWMThNMTYuNSA1LjVWMjIiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik0yLjUgMTMgNyAxNi41TTcgMTJsLTQuNSA1LjVNMTguNSA4bDQuNSAzLjVNMjMgN2wtNC41IDUuNSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTEwIDEzaDF2MWgtMXpNMTIgMTJoMXYxaC0xek0xNCAxMWgxdjFoLTF6IiBjbGFzcz0iY2xzLTMiLz48L2c+PC9zdmc+)}.scylla-icon--search{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTEwLjUgMThhNy41IDcuNSAwIDEgMCAwLTE1IDcuNSA3LjUgMCAwIDAgMCAxNU0yMSAyMWwtNS4yLTUuMiIvPjwvc3ZnPg==)}.scylla-icon--slack{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tISBGb250IEF3ZXNvbWUgUHJvIDYuMC4wIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIyIEZvbnRpY29ucywgSW5jLi0tPjxwYXRoIGQ9Ik05NC4xMiAzMTUuMWMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZTMCAzNDEgMCAzMTUuMXMyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNmg0Ny4wNnptMjMuNzIgMGMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ2MTE3Ljg0YzAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNnMtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZ6bTQ3LjA2LTE4OC45OGMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2UzEzOSAzMiAxNjQuOSAzMnM0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnY0Ny4wNnptMCAyMy43MmMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2SDQ3LjA2QzIxLjE2IDI0My45NiAwIDIyMi44IDAgMTk2LjlzMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZ6bTE4OC45OCA0Ny4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZTNDQ4IDE3MSA0NDggMTk2LjlzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2aC00Ny4wNnptLTIzLjcyIDBjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2cy00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlY3OS4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ6TTI4My4xIDM4NS44OGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZTMzA5IDQ4MCAyODMuMSA0ODBzLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2di00Ny4wNnptMC0yMy43MmMtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2czIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDExNy44NGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2eiIvPjwvc3ZnPg==)}.scylla-icon--stack-overflow{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIzMSIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJtMjEuOTQ5LjExMyAyLjA0MyAxMS42Ny0yLjUxNC40MzJMMTkuNDM1LjU0NXptLTE3Ljk3MyAyNiAxMS45NDUtLjAwNS0uMDAyLTIuNTMtMTEuOTQ0LjAwNnptMTIuMjMyLTUuNzc3TDQuMzE1IDE5LjI1bC0uMjM1IDIuNTIgMTEuODk0IDEuMDg1em0tMTAuNzUtNi4zNzUgMTEuNTM1IDMuMDc0LS42NjIgMi40NDMtMTEuNTM1LTMuMDc1em0xMy4wNC4xOEw4LjIxMiA4LjEyNmwtMS4yOTcgMi4xNzggMTAuMjg5IDYuMDE3em0tNC4yMDYtMTEuNTYgNi43MyA5Ljc4Ny0yLjEwOCAxLjQyNC02LjczLTkuNzg1eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTE3Ljk1IDE3Ljc4OVYyOC4xM0gyLjI4MlYxNy43ODlILjI0M3YxMi4zMjZIMTkuOThWMTcuNzg5eiIvPjwvc3ZnPg==)}.scylla-icon--summit{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJDYWxxdWVfMSIgZGF0YS1uYW1lPSJDYWxxdWUgMSIgdmlld0JveD0iMCAwIDI1IDI1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6IzRkNGQ0ZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0ibTE2LjUgMjIgMS02LjUtMTAgLjAzIDEgNi40MyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTMuNDYgMTJBNS42OSA1LjY5IDAgMCAxIDUgNy41IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MS4xcHgiLz48cGF0aCBkPSJNMTQuNjIgNWEyLjMzIDIuMzMgMCAwIDEtMi4yNSAyLjVjLTEuMzMgMC0yLTEuMTItMS45NS0yLjQ0cy43LTIuNSAyLTIuNDhBMi4yNyAyLjI3IDAgMCAxIDE0LjYyIDVNMTcuNTggMTJhMy4yMyAzLjIzIDAgMCAwLTMuNDYtMy41SDExQTMuMjYgMy4yNiAwIDAgMCA3LjUgMTIiIGNsYXNzPSJjbHMtMSIvPjxjaXJjbGUgY3g9IjQuOTQiIGN5PSI2Ljk2IiByPSIxLjAxIiBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjFweDtmaWxsOiM0ZDRkNGQiLz48cGF0aCBkPSJNNy41NCAxOC41SDQuNWwtMi02aDIwbC0yIDZoLTMiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==)}.scylla-icon--support{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTE4LjE5IDcuNWExMCAxMCAwIDAgMSAuMjEgMi4wN2MwIDQuMzYtMi42MyA2LjkzLTUuOSA2Ljkzcy01Ljk0LTIuNTctNS45NC02LjkzYTEwLjUgMTAuNSAwIDAgMSAuMjItMi4xMiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTcuNjcgMi4yM0E2LjU4IDYuNTggMCAwIDEgMTIuNS41YTUuNjUgNS42NSAwIDAgMSA0LjI5IDEuN2MxLjkzIDEuOTQgMi4zNSA1LjA3IDIuNDMgNi43MmExLjUgMS41IDAgMCAwLS43OS4wNSA5IDkgMCAwIDAtLjA4LTEuMTZoMGE1LjUzIDUuNTMgMCAwIDEtMS43Ny0yLjM0TDE2LjQ5IDVsLS4zOC4yMkExOSAxOSAwIDAgMSA2LjggNy4zOGEuNTIuNTIgMCAwIDAtLjQyLjE2Yy0uMjMuMjQtLjE1LjY1LS4wNyAxLjA4IDAgLjExIDAgLjIyLjA1LjMyYTEuNCAxLjQgMCAwIDAtLjU4IDBjLS4xLTEuNDUtLjA2LTQuNjggMS44OS02LjcxTTYuMzggOWMtLjY1LS4wOC0xIC4xLTEuMTQuNzlhMi4wNiAyLjA2IDAgMCAwIDEuMzcgMi4yOU0xOC41NiA5Yy42NS0uMDggMS4wNS4xIDEuMTQuNzlhMi4wNiAyLjA2IDAgMCAxLTEuMzcgMi4yOU05LjUgMTguMjNWMTUuNU0xNS41IDE1LjV2Mi43M00yLjUgMjQuMTZjLjI0LTIgLjU5LTMuNjMgMi40My00LjQ5YTI0LjMgMjQuMyAwIDAgMSA0LjgyLTEuMzdNMjIuNSAyNC4zM2MtLjI0LTItLjQyLTMuOC0yLjI2LTQuNjZhMjQuMyAyNC4zIDAgMCAwLTQuODItMS4zNyIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTE1LjM5IDE4LjM5YTQuMzcgNC4zNyAwIDAgMS0yLjkxIDEuMDcgNC40MiA0LjQyIDAgMCAxLTIuODktMS4wNSIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTExIDEzaDN2MmgtM3oiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTguMDcgMTJhOS4yIDkuMiAwIDAgMS01LjUzIDIuMDciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48L2c+PC9zdmc+)}.scylla-icon--tech-talks{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTguMzkgNC41SDIzLjV2MTNoLTE1IiBjbGFzcz0iY2xzLTEiLz48Y2lyY2xlIGN4PSI0LjUiIGN5PSI2LjUiIHI9IjIiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNMS41IDkuNWgybC44Ljg2LjctLjg2aDUuNThhMSAxIDAgMSAxIDAgMkg2LjV2MTAuODhhMSAxIDAgMCAxLTEgMS4xMiAxIDEgMCAwIDEtMS0xIDEgMSAwIDAgMS0xIDEgLjkzLjkzIDAgMCAxLTEtMXYtNmMtLjc4IDAtMi0uNDctMi0xdi01YTEgMSAwIDAgMSAxLTEiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--testing{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTYuNSA2LjVoMTJ2MTJoLTEyeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTQuNSA0LjVoMTZ2MTZoLTE2eiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTguNSAxMC41IDUgNSAxMS0xMiIgY2xhc3M9ImNscy0xIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--thumbs-up{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXRodW1icy11cCI+PHBhdGggZD0iTTE0IDlWNWEzIDMgMCAwIDAtMy0zbC00IDl2MTFoMTEuMjhhMiAyIDAgMCAwIDItMS43bDEuMzgtOWEyIDIgMCAwIDAtMi0yLjN6TTcgMjJINGEyIDIgMCAwIDEtMi0ydi03YTIgMiAwIDAgMSAyLTJoMyIvPjwvc3ZnPg==)}.scylla-icon--thumbs-down{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Y29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXRodW1icy1kb3duIj48cGF0aCBkPSJNMTAgMTV2NGEzIDMgMCAwIDAgMyAzbDQtOVYySDUuNzJhMiAyIDAgMCAwLTIgMS43bC0xLjM4IDlhMiAyIDAgMCAwIDIgMi4zem03LTEzaDIuNjdBMi4zMSAyLjMxIDAgMCAxIDIyIDR2N2EyLjMxIDIuMzEgMCAwIDEtMi4zMyAySDE3Ii8+PC9zdmc+)}.scylla-icon--tip{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEyIDI0QzUuNCAyNCAwIDE4LjYgMCAxMlM1LjQgMCAxMiAwczEyIDUuNCAxMiAxMi01LjQgMTItMTIgMTJtMC0yMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDIiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTEgMTZjLS4zIDAtLjUtLjEtLjctLjNsLTMtM2MtLjQtLjQtLjQtMSAwLTEuNHMxLS40IDEuNCAwbDMgM2MuNC40LjQgMSAwIDEuNC0uMi4yLS40LjMtLjcuMyIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMSAxNmMtLjMgMC0uNS0uMS0uNy0uMy0uNC0uNC0uNC0xIDAtMS40bDYtNmMuNC0uNCAxLS40IDEuNCAwcy40IDEgMCAxLjRsLTYgNmMtLjIuMi0uNC4zLS43LjMiLz48L3N2Zz4=)}.scylla-icon--training{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfMiIgZGF0YS1uYW1lPSJDYWxxdWUgMiI+PHBhdGggZD0iTTE3LjUgMTUuNUguNXYtMTNoMThNNS41IDI1bDQtNC4zIDQgNC4zIiBjbGFzcz0iY2xzLTEiLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjQiIHI9IjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjxwYXRoIGQ9Ik0yMy40MSA3LjVoLTEuNTJMMjEgOWwtLjktMS41SDEzQTEuOCAxLjggMCAwIDAgMTEuNSA5YTEuOCAxLjggMCAwIDAgMS41IDEuNWg0LjV2MTMuMjRBMS40MSAxLjQxIDAgMCAwIDE5IDI1YTEuNDIgMS40MiAwIDAgMCAxLjUtMS4yMiAxLjUzIDEuNTMgMCAwIDAgMyAwdi03LjExYTEuMTEgMS4xMSAwIDAgMCAxLjA5LTEuMThWOC42N2ExLjE4IDEuMTggMCAwIDAtMS4xOC0xLjE3TTkuNSAxNS40NHY1LjM4IiBjbGFzcz0iY2xzLTEiLz48L2c+PC9zdmc+)}.scylla-icon--triangle-down{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI1IiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSIjM2EyZDU1IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0wIDAgNSA1IDUtNXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==)}.scylla-icon--university{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0ibTEuNSA4LjUgMTEtNCAxMSA0djNsLTExIDQtMTEtNHoiIGNsYXNzPSJjbHMtMSIvPjxwYXRoIGQ9Ik01LjUgMTIuNXY1YTEyLjQ2IDEyLjQ2IDAgMCAwIDcgMiAxMS4yIDExLjIgMCAwIDAgNy0ydi01IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJtMTMuNSA5LjUgOCAxLjIzdjguNzdNMjIuNSAxNi41djMiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.scylla-icon--users-blog{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTIzLjUgMi41aC0yMnYxNmgxM3Y0LjE3bDQuMDQtNC4xNyA0Ljk2LS4wNHoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDouOThweCIvPjxwYXRoIGQ9Ik0xMC44NSA4QTEwLjQgMTAuNCAwIDAgMSAxMSA5LjVjMCAyLjQ3LTEuMjEgNC0zIDRzLTMuNS0yLTMuNS00LjVhNC4yIDQuMiAwIDAgMSAwLTEiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik01LjIgNS4wN2EzLjIyIDMuMjIgMCAwIDEgMi41LTEgMy4xNiAzLjE2IDAgMCAxIDIuNCAxIDYuMjIgNi4yMiAwIDAgMSAxLjMgMy44MS43NC43NCAwIDAgMC0uNDIgMGMwLS4yNCAwLS40NC0uMDUtLjY2aDBBMyAzIDAgMCAxIDEwIDYuOXYtLjI0bC0uMjEuMTJBOS42IDkuNiAwIDAgMSA0LjczIDhhLjI1LjI1IDAgMCAwLS4yMi4wOWMtLjEzLjE0LS4wOS4zNyAwIC42MXYuMThhLjkuOSAwIDAgMC0uMzIgMEE1LjM3IDUuMzcgMCAwIDEgNS4yIDUuMDdNNC41MSA4LjkzYy0uMzUgMC0uNTcuMDUtLjYxLjQ0YTEuMTcgMS4xNyAwIDAgMCAuNzMgMS4zTTExIDguOTNjLjM2IDAgLjU3LjA1LjYyLjQ0YTEuMTcgMS4xNyAwIDAgMS0uNzQgMS4zTTYuMzEgMTQuMTN2LS44NE05LjI1IDEzLjE5di45NE0yLjQyIDE4Yy4xMy0xLjE1LjU4LTIuNTIgMS41OC0zYTE1IDE1IDAgMCAxIDIuMzEtLjgyTTEzLjUgMThjLS4xMy0xLjE1LS41MS0yLjUyLTEuNS0zcy0yLjUtMS0yLjUtMSIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0iTTkuMzQgMTQuMjJhMi4yMyAyLjIzIDAgMCAxLTEuNTYuNjEgMi4zMiAyLjMyIDAgMCAxLTEuNTUtLjU5TTIxLjUgNi41aC03TTIxLjUgOS41aC03TTE4LjUgMTIuNWgtNCIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==)}.scylla-icon--warning{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PG1hc2sgaWQ9ImEiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMSIgeD0iMCIgeT0iMSIgbWFzay10eXBlPSJhbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZmlsbD0iIzA2MTkzOCIgZD0iTTMuNSAyMmMtLjUgMC0xLS4xLTEuNS0uNEMuNiAyMC44LjEgMTguOS45IDE3LjVMOS40IDMuM2MuMy0uNC42LS44IDEtMSAuNy0uNCAxLjUtLjUgMi4zLS4zczEuNC43IDEuOSAxLjRMMjMgMTcuNWMuMy41LjQgMSAuNCAxLjUgMCAuOC0uMyAxLjYtLjkgMi4xLS41LjYtMS4yLjktMiAuOXptNy42LTE3LjZMMi43IDE4LjVjLS4zLjUtLjEgMS4xLjQgMS40LjEuMS4zLjEuNC4xaDE2LjljLjMgMCAuNS0uMS43LS4zcy4zLS40LjMtLjdjMC0uMiAwLS4zLS4xLS41TDEyLjkgNC40Yy0uMy0uNS0uOS0uNi0xLjQtLjQtLjIuMS0uMy4yLS40LjQiLz48cGF0aCBmaWxsPSIjMDYxOTM4IiBkPSJNMTIgMTRjLS42IDAtMS0uNC0xLTFWOWMwLS42LjQtMSAxLTFzMSAuNCAxIDF2NGMwIC42LS40IDEtMSAxTTEyIDE4Yy0uMyAwLS41LS4xLS43LS4zcy0uMy0uNC0uMy0uN2MwLS4xIDAtLjMuMS0uNHMuMS0uMi4yLS4zLjItLjIuMy0uMmMuMi0uMS40LS4xLjYtLjEuMSAwIC4xIDAgLjIuMS4xIDAgLjEgMCAuMi4xIDAgMCAuMS4xLjIuMS4xLjEuMi4yLjIuM3MuMS4zLjEuNGMwIC4zLS4xLjUtLjMuNy0uMy4yLS41LjMtLjguMyIvPjwvbWFzaz48ZyBtYXNrPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjMDYxOTM4IiBkPSJNMCAwaDI0djI0SDB6Ii8+PC9nPjwvc3ZnPg==)}.scylla-icon--webinars{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTEuNSA1LjVoMjJ2MTRoLTIyeiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6Z3JheTtzdHJva2UtbWl0ZXJsaW1pdDoxMCIvPjxwYXRoIGQ9Ik05LjQ3IDIwLjV2MS44OE0xNS41IDIwLjV2Mk02LjUgMjIuNWgxMiIgY2xhc3M9ImNscy0yIi8+PHBhdGggZD0ibTkgOSA3LjUgMy41M0w5IDE2eiIgc3R5bGU9ImZpbGw6Z3JheSIvPjwvZz48L3N2Zz4=)}.scylla-icon--whitepapers{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMntmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTggOWg4djJIOHoiIHN0eWxlPSJmaWxsOmdyYXkiLz48cGF0aCBkPSJNMTQuMDYgMS41IDMuNSAxLjUyVjIzLjVoMTdWN3oiIGNsYXNzPSJjbHMtMiIvPjxwYXRoIGQ9Ik0xNC4zMiAxLjQydjMuMzdhMi4wNiAyLjA2IDAgMCAwIDIuMDggMi4xaDMuNjciIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmdyYXk7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNNi41IDE5LjVoNE0xMy41IDE5LjVoNE02LjUgMTYuNWg0TTEzLjUgMTYuNWg0TTYuNSAxMy41aDRNMTMuNSAxMy41aDQiIGNsYXNzPSJjbHMtMiIvPjwvZz48L3N2Zz4=)}.scylla-icon--workshop{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNSAyNSI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTJ7ZmlsbDpub25lO3N0cm9rZTojNGQ0ZDRkfS5jbHMtMXtzdHJva2UtbWl0ZXJsaW1pdDoxMH0uY2xzLTJ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJDYWxxdWVfNCIgZGF0YS1uYW1lPSJDYWxxdWUgNCI+PHBhdGggZD0iTTEuNSA1LjVoMjJ2MTRoLTIyeiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0ibTkuNSAxOS41LS4wMyAyLjg4TTE1LjUgMTkuNXYzTTYuNSAyMi41aDEyIiBjbGFzcz0iY2xzLTIiLz48cGF0aCBkPSJtNCA4IDIgOCAuOTctMy45NUwxMSAxMnoiIHN0eWxlPSJmaWxsOiM0ZDRkNGQiLz48cGF0aCBkPSJtNi40NyAxMS4zNCAzLjM3IDQuMjgiIGNsYXNzPSJjbHMtMSIvPjwvZz48L3N2Zz4=)}.button{background:transparent;border:1px solid var(--text-color);border-radius:4px;color:var(--text-color);display:inline;font-size:14px;letter-spacing:1px;line-height:21px;margin:0;padding:12px 14px}.button:focus,.button:hover{background:transparent;color:var(--link-color);text-decoration:none}.button--reverse{border:0}.button--reverse,.button--reverse:focus,.button--reverse:hover{background:var(--bg-color)}.tooltip{background-color:var(--tooltip-bg);border:0;border-radius:4px;font-size:12px;max-width:50%;padding:6px}.tooltip:before,.tooltip:empty{display:none!important}.has-tip{border:0;cursor:pointer}.content .has-tip{cursor:help;font-weight:inherit;text-decoration:underline;text-decoration-style:dotted}.scylla-dropdown{color:var(--text-color);font-size:14px;line-height:20px}.scylla-dropdown a,.scylla-dropdown a:focus,.scylla-dropdown a:hover{color:var(--text-emphasis)!important;padding:0!important}.scylla-dropdown__item{font-size:16px;padding:15px}.scylla-dropdown__title{align-items:center;color:inherit;display:flex!important;position:static!important}.scylla-dropdown__title:after{display:none!important}.scylla-dropdown__title .chevron{min-height:5px;width:10px}.scylla-dropdown__content{background:var(--white);border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);font-size:16px;list-style:none;margin-top:15px;overflow:hidden;padding:16px 0;width:max-content}.scylla-dropdown__content li{padding:7px 16px}.scylla-dropdown__content li a{align-items:center;display:flex}.scylla-dropdown__content li i{font-size:24px;margin-right:10px}.enlarge-image{cursor:zoom-in}.enlarge-image-reveal{background:transparent;border:none;cursor:zoom-out;padding:0;text-align:center;width:fit-content}.enlarge-image-reveal img{background-color:var(--white);padding:15px}.header{background-color:var(--card-bg);box-shadow:0 2px 22px rgba(0,0,0,.1);justify-content:space-between;padding:12.75px 0;position:fixed;width:100%;z-index:99}.header,.header-logo{align-items:center;display:flex}.header-logo{margin-left:20px;width:auto}.header-logo__img{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0ze2ZpbGw6IzRkOWJiNn0uY2xzLTR7ZmlsbDojM2IyZDU1fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8xIj48cGF0aCBkPSJNMTg1LjYgMTAzLjFjMi4xIDMuMSA0LjggNS41IDggNi45IDMuMyAxLjUgNi42IDIuMiAxMC4xIDIuMnMzLjktLjMgNS45LS45IDMuOC0xLjUgNS41LTIuN2MxLjYtMS4yIDMtMi43IDQtNC41czEuNi0zLjggMS42LTYuMi0xLTUuOC0zLjEtNy41LTQuNy0zLjItNy44LTQuM2MtMy4xLTEuMi02LjUtMi4zLTEwLjEtMy40LTMuNy0xLjEtNy0yLjYtMTAuMS00LjVxLTQuNjUtMi44NS03LjgtNy44Yy0yLjEtMy4zLTMuMS03LjctMy4xLTEzLjJzLjUtNS4yIDEuNi04IDIuOC01LjQgNS4xLTcuNyA1LjMtNC4zIDktNS45cTUuNTUtMi40IDEzLjItMi40YzcuNjUgMCA5LjEuNiAxMy40IDEuOXM4IDMuOSAxMS4yIDcuOWwtOS40IDguNmMtMS41LTIuMy0zLjUtNC4xLTYuMi01LjQtMi43LTEuNC01LjctMi4xLTkuMS0yLjFzLTUuOS40LTggMS4zcS0zLjE1IDEuMi01LjEgMy4zYy0xLjMgMS4zLTIuMiAyLjgtMi43IDQuM3MtLjggMi45LS44IDQuMmMwIDMuNiAxIDYuNCAzLjEgOC4zczQuNyAzLjUgNy44IDQuNyA2LjUgMi4zIDEwLjEgMy4zYzMuNyAxIDcgMi4zIDEwLjEgNHM1LjcgNC4xIDcuOCA3IDMuMSA3IDMuMSAxMi4xLS44IDcuOC0yLjQgMTEuMS0zLjcgNi4xLTYuMyA4LjNjLTIuNyAyLjMtNS44IDQtOS40IDUuMnMtNy41IDEuOC0xMS42IDEuOC0xMC43LTEtMTUuNi0yLjktOC44LTQuOS0xMS43LTguOWw5LjUtOC4yWk0yODYuMSA3OXEtMy0zLjE1LTYuMy00LjhjLTIuMi0xLjEtNC45LTEuNi03LjktMS42cy01LjYuNS03LjggMS42LTQuMSAyLjYtNS42IDQuNS0yLjYgNC4xLTMuNCA2LjVjLS44IDIuNS0xLjEgNS0xLjEgNy43cy40IDUuMiAxLjMgNy41Yy45IDIuNCAyLjEgNC40IDMuNyA2LjJzMy41IDMuMiA1LjggNC4yIDQuOCAxLjUgNy42IDEuNSA1LjctLjUgNy45LTEuNnEzLjMtMS42NSA2LTQuOGw3LjcgNy43Yy0yLjggMy4xLTYuMSA1LjQtOS44IDYuOHMtNy43IDIuMS0xMS45IDIuMS04LjUtLjctMTIuMS0yLjJjLTMuNy0xLjUtNi44LTMuNS05LjUtNi4xcy00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4xIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4zIDYzLjhoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN0gzNTZsLTI3LjIgNjkuNmMtMSAyLjUtMiA0LjgtMyA2LjgtMSAyLjEtMi4zIDMuOC0zLjcgNS4zcy0zLjIgMi42LTUuMiAzLjRxLTMgMS4yLTcuNSAxLjJjLTQuNSAwLTMuMi0uMS00LjktLjMtMS42LS4yLTMuMi0uNi00LjgtMS4zbDEuMy05LjljMi4yLjkgNC4zIDEuMyA2LjUgMS4zczMuMS0uMiA0LjMtLjdjMS4yLS40IDIuMi0xLjEgMy0xLjlxMS4yLTEuMiAyLjEtM2MuNi0xLjEgMS4xLTIuNCAxLjctMy45bDMuNS05LjEtMjMuNy01Ny42Wk0zNjQuMSAyOS43SDM3NVYxMjFoLTEwLjl6TTM4Ni43IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi44IDcwLjhjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczgtMi4xIDEyLjEtMi4xIDcuOC41IDEwLjggMS42YzMgMSA1LjUgMi41IDcuNCA0LjIgMS45IDEuOCAzLjQgMy44IDQuMyA2LjFzMS40IDQuNyAxLjQgNy4ydjI5LjJjMCAyIDAgMy45LjEgNS42IDAgMS43LjIgMy4zLjQgNC44aC05LjdjLS4yLTIuOS0uNC01LjgtLjQtOC43aC0uMmMtMi40IDMuNy01LjMgNi4zLTguNiA3LjktMy4zIDEuNS03LjEgMi4zLTExLjUgMi4zcy01LjItLjQtNy42LTEuMXEtMy42LTEuMDUtNi4zLTMuM2MtMS44LTEuNS0zLjItMy4yLTQuMy01LjQtMS0yLjEtMS42LTQuNi0xLjYtNy40cy44LTYuOCAyLjUtOS4zYzEuNi0yLjUgMy45LTQuNSA2LjgtNi4xczYuMi0yLjcgMTAtMy40IDcuOS0xIDEyLjMtMWg4di0yLjRjMC0xLjUtLjMtMi45LS44LTQuMy0uNi0xLjUtMS40LTIuOC0yLjUtMy45LTEuMS0xLjItMi41LTIuMS00LjItMi44cy0zLjctMS02LTEtMy45LjItNS41LjYtMyAuOS00LjMgMS41LTIuNSAxLjMtMy41IDIuMS0yLjEgMS42LTMgMi4zbC02LjUtNi44Wm0zMC43IDIyLjdjLTIuNiAwLTUuMi4xLTcuOS40cy01LjIuOC03LjQgMS42LTQgMS45LTUuNCAzLjQtMi4xIDMuMy0yLjEgNS42YzAgMy4zIDEuMSA1LjcgMy4zIDcuMSAyLjIgMS41IDUuMiAyLjIgOSAyLjJzNS41LS41IDcuNi0xLjVxMy4xNS0xLjUgNS4xLTMuOWMxLjMtMS42IDIuMi0zLjQgMi44LTUuNHMuOC0zLjkuOC01Ljl2LTMuNnpNNDczLjggMzUuNWgyOS44cTkgMCAxNS45IDIuMWM0LjYgMS40IDguNSAzLjIgMTEuOCA1LjVzNi4xIDQuOSA4LjMgNy45IDQgNiA1LjMgOS4yYzEuMyAzLjEgMi4yIDYuMyAyLjggOS40cy44IDYgLjggOC43cTAgOC4yNS0zIDE1LjljLTIgNS4xLTUgOS43LTguOSAxMy42LTQgNC04LjggNy4yLTE0LjcgOS42LTUuOCAyLjQtMTIuNiAzLjYtMjAuMiAzLjZoLTI3Ljl6bTExLjYgNzQuN0g1MDBjNC45IDAgOS42LS43IDE0LTJzOC4yLTMuMyAxMS41LTYgNS45LTYgNy45LTEwYzEuOS00IDIuOS04LjYgMi45LTEzLjlzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC40cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40djYzLjhaTTU2MS43IDM1LjVoMjkuN2MzLjcgMCA3LjEuNCAxMC4zIDEuM3M1LjkgMi4yIDguMiAzLjlxMy40NSAyLjU1IDUuNCA2LjZjMS4zIDIuNyAyIDUuOSAyIDkuNXMtMS40IDguOS00LjEgMTItNi4zIDUuNC0xMC42IDYuOHYuMmMyLjYuMiA1IC44IDcuMiAyIDIuMyAxLjIgNC4yIDIuNyA1LjkgNC42IDEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjRWMzUuNVpNNTczLjMgNzFoMTUuOGMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4ydjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yIDEuOC0xLjEgMy40LTIuNiA0LjctNC40IDEuMy0xLjkgMS45LTQuMyAxLjktNy40IDAtNS4xLTEuNy04LjktNS0xMS40cy03LjgtMy44LTEzLjQtMy44aC0xNy4ydjI5LjdaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNODYuMyA0LjJDNTMuNCA0LjIgMzAuNCAyNC43IDMwLjQgNTRzNC45IDM0LjggOS4xIDU1LjhjMyAxNS4xIDUuNiAyNy4zIDUuNyAyNy42LjggMy43IDQuNCA2LjEgOC4yIDUuNWguOGMwLS4xLS42LS43LS42LS43LTEuMS0xLjEtMS44LTIuNC0yLjMtMy44LS4yLS44LS4zLTEuNS0uNC0yLjEgMC0uMyAwLS42LS4xLS45bC0xLjUtOC45Yy0uNi00LTEuMy04LTEuOC0xMS44IDAtLjMuMS0uNS40LS41cy41LjEuNS40cTEuMiA1LjcgMi40IDExLjdsMS43IDguOGMwIC4zLjEuNi4yLjkuMS43LjMgMS40LjQgMiAuNSAxLjUgMS41IDIuOCAyLjggMy44LjEuMS4zLjIuNC4zLjguNCAxLjYuNyAyLjUuOS45LjEgMS44LjEgMi42IDAgLjktLjIgMS45LS42IDIuNy0xLjJsLjMtLjItLjItLjNjLS43LS45LTEuMS0xLjktMS40LTMtLjItLjgtLjMtMS41LS4zLTIuMnYtLjlsLS45LTguOWMtLjQtNC4xLS43LTguMS0xLTExLjkgMC0uMSAwLS4yLjEtLjMgMCAwIC4yLS4yLjMtLjIuMyAwIC41LjIuNS40LjUgMy44IDEuMSA3LjggMS42IDExLjhsMS4xIDguOWMwIC4zIDAgLjUuMS44IDAgLjcuMiAxLjQuMyAyIC4yLjcuNCAxLjMuOCAxLjkuNS45IDEuMiAxLjYgMiAyLjIgMCAwIDAgLjEuMS4xIDEuNCAxIDMuMyAxLjQgNSAxLjFzMy4zLTEuMiA0LjUtMi41Yy4zLS4zLjUtLjcuNy0xLjF2LS40Yy0uMS0uNC0uMi0uOC0uNC0xLjItLjEtLjYtLjItMS40LS4yLTIuM3YtNC40Yy0uMi01LjYtLjItMTEuMy0uMi0xNy42IDAtLjMuMi0uNS41LS41cy41LjIuNS40Yy40IDYuMy43IDEyIC45IDE3LjZsLjIgNC40YzAgLjggMCAxLjQuMiAyIC4xLjUuMyAxLjIuNyAxLjh2LjFjMS4yIDIuMiAzLjYgMy43IDYuMSAzLjdoLjFjMi41IDAgNS0xLjQgNi4zLTMuNy4zLS41LjUtMS4xLjctMS44LjEtLjYuMi0xLjIuMi0xLjlsLjItNC41Yy4yLTUuMy41LTExIC45LTE3LjYgMC0uMy4yLS41LjUtLjQuMiAwIC40LjIuNC41IDAgNi42IDAgMTIuMy0uMSAxNy42djQuNGMwIC42IDAgMS41LS4zIDIuMyAwIC40LS4yLjgtLjMgMS4ydi40Yy4yLjQuNS43LjcgMS4xIDEuMSAxLjQgMi43IDIuMyA0LjUgMi41IDEuNy4zIDMuNi0uMSA1LTEuMWguMWMuOC0uNiAxLjUtMS40IDItMi4yLjQtLjYuNi0xLjIuOC0xLjkuMS0uNi4yLTEuMy4zLTIgMC0uMyAwLS41LjEtLjhsMS4xLTguOWMuNS00IDEuMS04IDEuNi0xMS44IDAtLjEgMC0uMi4yLS4zLjEgMCAuMi0uMS4zIDAgLjIgMCAuNC4zLjQuNS0uMyAzLjgtLjcgNy44LTEgMTEuOWwtLjkgOC45di44YzAgLjctLjEgMS40LS4zIDIuMi0uMyAxLjEtLjcgMi4xLTEuNCAzbC0uMi4zLjMuMmMuOC42IDEuOCAxIDIuNyAxLjJzMS43LjIgMi42IDBjLjktLjEgMS43LS40IDIuNS0uOS4yIDAgLjMtLjIuNC0uMyAxLjMtLjkgMi4zLTIuMyAyLjgtMy44LjItLjUuMy0xLjMuNC0yIDAtLjMuMS0uNi4yLS44bDEuNy04LjhjLjgtNCAxLjYtOCAyLjQtMTEuNyAwLS4zLjMtLjQuNi0uNC4yIDAgLjQuMy40LjUtLjYgMy44LTEuMiA3LjgtMS44IDExLjhsLTEuNSA4LjljMCAuMy0uMS42LS4xLjktLjEuNy0uMiAxLjMtLjQgMi4yLS40IDEuNC0xLjIgMi43LTIuMyAzLjhsLS41LjUuNy4yYy40IDAgLjguMSAxLjIuMSAzLjMgMCA2LjMtMi4zIDctNS42IDAtLjMgMi44LTEyLjkgNS44LTI4LjUgNC4xLTIwLjkgOS00NyA5LTU1QzE0MiAyNSAxMTkgNC41IDg2LjEgNC41WiIgc3R5bGU9ImZpbGw6IzU3ZDFlNSIvPjxwYXRoIGQ9Ik0xMzMuMSAxMDkuN2MtMy4xIDE1LjctNS43IDI3LjUtNS43IDI3LjctLjcgMy4yLTMuNyA1LjQtNyA1LjRoLTEuNmwuMy0uNGMxLjEtMS4xIDEuOS0yLjQgMi4zLTMuOC4yLS44LjMtMS41LjQtMi4yIDAtLjQgMC0uNi4xLS45bDEuNS04LjljLjYtNCAxLjMtOCAxLjgtMTEuOCAwLS4zLS4yLS43LS41LS43aC0uNWMtLjEgMC0uMy4yLS4zLjQtLjggMy43LTEuNiA3LjctMi40IDExLjdsLTEuNyA4LjhjMCAuMiAwIC40LS4xLjZ2LjNjLS4yLjctLjMgMS40LS41IDEuOS0uNCAxLjUtMS40IDIuOC0yLjcgMy43LS4xIDAtLjMuMi0uNC4zLS43LjQtMS41LjctMi40LjhzLTEuNy4xLTIuNiAwYy0uOS0uMi0xLjgtLjYtMi42LTEuMmgtLjJjMC0uMS4xLS4zLjEtLjMuNy0xIDEuMS0yIDEuNC0zLjEuMi0uOC4zLTEuNS4zLTIuM3YtLjhsLjktOC45Yy40LTQuMS43LTguMSAxLTExLjkgMC0uMy0uMi0uNy0uNi0uNy0uMiAwLS4zIDAtLjUuMS0uMS4xLS4yLjMtLjMuNC0uNSAzLjgtMS4xIDcuNy0xLjYgMTEuOGwtMS4xIDguOWMwIC4zIDAgLjUtLjEuOCAwIC43LS4yIDEuNC0uMyAyLS4yLjYtLjQgMS4yLS44IDEuOC0uNS44LTEuMiAxLjYtMiAyLjEgMCAwIDAgLjEtLjEuMS0xLjQuOS0zLjIgMS4zLTQuOSAxLjFzLTMuMy0xLjEtNC4zLTIuNWMtLjMtLjMtLjUtLjctLjctMXYtLjJjLjEtLjQuMy0uOC40LTEuMi4yLS44LjItMS44LjItMi40di00LjRjLjItNS4yLjItMTAuOS4yLTE3LjYgMC0uMy0uMy0uNi0uNi0uNy0uNCAwLS43LjMtLjcuNi0uNCA2LjUtLjcgMTIuMy0uOSAxNy42bC0uMiA0LjVjMCAuNyAwIDEuMy0uMiAxLjktLjIuNy0uNCAxLjMtLjcgMS44LTEuMiAyLjItMy42IDMuNi02IDMuNkg4NmMtMi40IDAtNC44LTEuNC02LTMuNnYtLjFjLS4zLS42LS41LTEuMi0uNy0xLjctLjEtLjYtLjItMS4yLS4yLTJsLS4yLTQuNGMtLjItNS41LS41LTExLjMtLjktMTcuNiAwLS4zLS4zLS42LS43LS42cy0uNy4zLS43LjdjMCA2LjMgMCAxMiAuMSAxNy42djQuNHEwIDEuNS4zIDIuNGMuMS40LjIuOS40IDEuMnYuMmMtLjIuNC0uNS43LS43IDFhNy42IDcuNiAwIDAgMS00LjMgMi41Yy0xLjcuMy0zLjUtLjEtNC45LTEuMWgtLjFjLS44LS42LTEuNS0xLjMtMi0yLjItLjMtLjYtLjYtMS4yLS44LTEuOC0uMS0uNS0uMi0xLjItLjMtMiAwLS4zIDAtLjUtLjEtLjhsLTEuMS04LjljLS41LTQuMS0xLjEtOC4xLTEuNi0xMS44IDAtLjQtLjMtLjYtLjctLjYtLjIgMC0uMyAwLS40LjItLjEuMS0uMi4zLS4yLjUuMyAzLjguNyA3LjggMSAxMS45bC45IDguOXYuOWMwIC43LjEgMS40LjMgMi4yLjMgMS4xLjcgMi4xIDEuNCAzLjF2LjJjLjEgMCAwIC4xIDAgLjEtLjguNi0xLjcgMS0yLjYgMS4yLS44LjItMS43LjItMi42IDBxLTEuMzUtLjE1LTIuNC0uOWMtLjEgMC0uMy0uMi0uNC0uMy0xLjMtLjktMi4zLTIuMi0yLjctMy43LS4yLS41LS4zLTEuMi0uNC0xLjkgMC0uNC0uMS0uNy0uMi0uOWwtMS43LTguOGMtLjgtNC0xLjYtOC0yLjQtMTEuNyAwLS4zLS40LS42LS43LS41LS40IDAtLjYuNC0uNi43LjYgMy44IDEuMiA3LjggMS44IDExLjhsMS41IDguOWMwIC4zIDAgLjUuMS44LjEuOC4yIDEuNS40IDIuMy40IDEuNCAxLjIgMi43IDIuMyAzLjhsLjMuM2gtLjRjLTMuNy43LTcuMi0xLjctOC01LjMtLjMtMS4zLTMtMTMuMS01LjktMjcuNmw0LjIgMjhjMCAuMi4xLjUuMi43di4yYy4xLjIuMi4zLjMuNSAwIDAgMCAuMi4xLjMgMCAuMS4xLjIuMi40IDAgLjEuMS4yLjIuM3YuMmwuNi45Yy4xLjIuMi4zLjQuNS4xLjIuMy4zLjQuNSAxLjYgMS41IDMuNyAyLjMgNS45IDIuM3MxIDAgMS40LS4xbDMuMi0uNWMuNS4yIDEuMS40IDEuNy40IDEuMS4yIDIuMi4xIDMuMiAwIDEuMS0uMiAyLjMtLjcgMy4zLTEuNWwuOC0uNmMuMi4yLjUuNC44LjZsLjIuMmMxLjcgMS4xIDQgMS42IDYuMSAxLjNzNC4xLTEuNCA1LjQtMy4xYy4yLS4zLjUtLjYuNy0uOSAxLjUgMi41IDQuNCA0LjEgNy4zIDQuMWguMmMyLjkgMCA1LjctMS42IDcuMi00LjEuMi4zLjQuNy43LjkgMS4zIDEuNyAzLjMgMi44IDUuNCAzLjFoMS4zYzEuNyAwIDMuNC0uNSA0LjgtMS40IDAgMCAuMSAwIC4yLS4xLjMtLjIuNS0uNC44LS42bC44LjZxMS41IDEuMDUgMy4zIDEuNWMxIC4yIDIuMS4yIDMuMiAwcTEuMDUtLjE1IDIuMS0uNmwyLjcuN2guMWMuNS4xLjkuMSAxLjQuMSA0IDAgNy42LTIuOSA4LjUtNi44IDAtLjEgNC4yLTI4IDQuMi0yOFoiIGNsYXNzPSJjbHMtNCIvPjxwYXRoIGQ9Ik00Ni40IDE3LjdjLTEwLjEgOC44LTE2IDIxLjQtMTYgMzYuMnMxNC41IDgyLjggMTQuNyA4My41Yy4zIDEuNSAxLjQgMi42IDIuNCAzLjYtMy42LTE3LjQtMTUuNC03My41LTE1LjQtODYuNnM1LjItMjcuMiAxNC4zLTM2LjciIHN0eWxlPSJmaWxsOiM5M2UxZWYiLz48cGF0aCBkPSJNNzEuMyAyNS42QzU3LjkgMjUuNiA0NyAzNi41IDQ3IDQ5LjlzMTAuOSAyNC4zIDI0LjMgMjQuMyAyNC4zLTEwLjkgMjQuMy0yNC4zLTEwLjktMjQuMy0yNC4zLTI0LjMiIGNsYXNzPSJjbHMtMyIvPjxwYXRoIGQ9Ik00NC42IDQ4YzAgMTMuNCAxMC45IDI0LjMgMjQuMyAyNC4zUzkzLjIgNjEuNCA5My4yIDQ4IDgyLjMgMjMuNyA2OC45IDIzLjcgNDQuNiAzNC42IDQ0LjYgNDgiIHN0eWxlPSJmaWxsOiNmZmYiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=);background-position:50%;background-repeat:no-repeat;width:110px}.header-logo__img img{opacity:0}.dark .header-logo__img{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZn0uY2xzLTN7ZmlsbDojNGQ5YmI2fS5jbHMtNHtmaWxsOiMzYjJkNTV9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkxheWVyXzEiPjxwYXRoIGQ9Ik0xODUuNCAxMDMuMWMyLjEgMy4xIDQuOCA1LjUgOCA2LjkgMy4zIDEuNSA2LjYgMi4yIDEwLjEgMi4yczMuOS0uMyA1LjktLjkgMy44LTEuNSA1LjUtMi43YzEuNi0xLjIgMy0yLjcgNC00LjVzMS42LTMuOCAxLjYtNi4yLTEtNS44LTMuMS03LjUtNC43LTMuMi03LjgtNC4zYy0zLjEtMS4yLTYuNS0yLjMtMTAuMi0zLjRxLTUuNTUtMS42NS0xMC4yLTQuNXQtNy44LTcuOGMtMi4xLTMuMy0zLjEtNy43LTMuMS0xMy4ycy41LTUuMiAxLjYtOCAyLjgtNS40IDUuMS03LjcgNS4zLTQuMyA5LTUuOXE1LjU1LTIuNCAxMy4yLTIuNGM3LjY1IDAgOS4xLjYgMTMuNCAxLjlzOCAzLjkgMTEuMiA3LjlsLTkuNCA4LjZjLTEuNS0yLjMtMy41LTQuMS02LjItNS40LTIuNy0xLjQtNS43LTIuMS05LjEtMi4xcy01LjkuNC04IDEuM3EtMy4xNSAxLjItNS4xIDMuM2MtMS4zIDEuMy0yLjIgMi44LTIuNyA0LjNzLS44IDIuOS0uOCA0LjJjMCAzLjYgMSA2LjQgMy4xIDguM3M0LjcgMy41IDcuOCA0LjdxNC42NSAxLjggMTAuMiAzLjNjMy43IDEgNy4xIDIuMyAxMC4yIDRzNS43IDQuMSA3LjggNyAzLjEgNyAzLjEgMTIuMS0uOCA3LjgtMi40IDExLjEtMy43IDYuMS02LjMgOC4zYy0yLjcgMi4zLTUuOCA0LTkuNCA1LjJzLTcuNSAxLjgtMTEuNiAxLjgtMTAuNy0xLTE1LjYtMi45LTguOC00LjktMTEuNy04LjlsOS41LTguMlpNMjg2IDc5cS0zLTMuMTUtNi4zLTQuOGMtMi4yLTEuMS00LjktMS42LTcuOS0xLjZzLTUuNi41LTcuOCAxLjYtNC4xIDIuNi01LjYgNC41LTIuNiA0LjEtMy40IDYuNWMtLjggMi41LTEuMSA1LTEuMSA3LjdzLjQgNS4yIDEuMyA3LjVjLjkgMi40IDIuMSA0LjUgMy43IDYuMnMzLjUgMy4yIDUuOCA0LjIgNC44IDEuNSA3LjYgMS41IDUuNy0uNSA3LjktMS42cTMuMy0xLjY1IDYtNC44bDcuNyA3LjdjLTIuOCAzLjEtNi4xIDUuNC05LjkgNi44LTMuNyAxLjQtNy43IDIuMS0xMS45IDIuMXMtOC41LS43LTEyLjItMi4yLTYuOC0zLjUtOS41LTYuMS00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4yIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4yIDYzLjdoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN2gxMS42bC0yNy4yIDY5LjZjLTEgMi41LTIgNC44LTMgNi44LTEgMi4xLTIuMyAzLjgtMy43IDUuM3MtMy4yIDIuNi01LjIgMy40LTQuNiAxLjItNy41IDEuMi0zLjItLjEtNC45LS4zYy0xLjYtLjItMy4yLS42LTQuOC0xLjNsMS4zLTkuOWMyLjIuOSA0LjMgMS4zIDYuNSAxLjNzMy4xLS4yIDQuMy0uN2MxLjItLjQgMi4yLTEuMSAzLTEuOXExLjItMS4yIDIuMS0zYy42LTEuMSAxLjEtMi40IDEuNy0zLjlsMy41LTkuMS0yMy43LTU3LjZaTTM2My45IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTM4Ni42IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi43IDcwLjdjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczguMS0yLjEgMTIuMS0yLjEgNy44LjUgMTAuOCAxLjZjMyAxIDUuNSAyLjUgNy40IDQuMiAxLjkgMS44IDMuNCAzLjggNC4zIDYuMXMxLjQgNC43IDEuNCA3LjJ2MjkuMmMwIDIgMCAzLjkuMSA1LjYgMCAxLjcuMiAzLjMuNCA0LjhoLTkuN2MtLjItMi45LS40LTUuOC0uNC04LjdoLS4yYy0yLjQgMy43LTUuMyA2LjMtOC42IDcuOS0zLjMgMS41LTcuMSAyLjMtMTEuNSAyLjNzLTUuMi0uNC03LjYtMS4xcS0zLjYtMS4wNS02LjMtMy4zYy0xLjgtMS41LTMuMi0zLjItNC4zLTUuNC0xLTIuMS0xLjYtNC42LTEuNi03LjRzLjgtNi44IDIuNS05LjNjMS42LTIuNSAzLjktNC41IDYuOC02LjFzNi4yLTIuNyAxMC0zLjQgNy45LTEgMTIuMy0xaDh2LTIuNGMwLTEuNS0uMy0yLjktLjgtNC4zLS42LTEuNS0xLjQtMi44LTIuNS0zLjktMS4xLTEuMi0yLjUtMi4xLTQuMi0yLjhzLTMuNy0xLTYtMS0zLjkuMi01LjUuNi0zIC45LTQuMyAxLjUtMi41IDEuMy0zLjUgMi4xLTIuMSAxLjYtMyAyLjNsLTYuNS02LjhabTMwLjcgMjIuOGMtMi42IDAtNS4yLjEtNy45LjRzLTUuMi44LTcuNCAxLjYtNCAxLjktNS40IDMuNC0yLjEgMy4zLTIuMSA1LjZjMCAzLjMgMS4xIDUuNyAzLjMgNy4xIDIuMiAxLjUgNS4yIDIuMiA5IDIuMnM1LjUtLjUgNy42LTEuNXEzLjE1LTEuNSA1LjEtMy45YzEuMy0xLjYgMi4yLTMuNCAyLjgtNS40cy44LTMuOS44LTUuOXYtMy42ek00NzMuOCAzNS41aDI5LjlxOSAwIDE1LjkgMi4xYzQuNiAxLjQgOC41IDMuMiAxMS44IDUuNXM2LjEgNC45IDguMyA3LjkgNCA2IDUuMyA5LjJjMS4zIDMuMSAyLjIgNi4zIDIuOCA5LjRzLjggNiAuOCA4LjdxMCA4LjI1LTMgMTUuOWMtMiA1LjEtNSA5LjctOC45IDEzLjctNCA0LTguOCA3LjItMTQuNyA5LjYtNS44IDIuNC0xMi42IDMuNi0yMC4zIDMuNmgtMjcuOXptMTEuNiA3NC42SDUwMGM0LjkgMCA5LjYtLjcgMTQtMnM4LjItMy4zIDExLjUtNiA1LjktNiA3LjktMTBjMS45LTQgMi45LTguNiAyLjktMTRzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC41cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40VjExMFpNNTYxLjYgMzUuNWgyOS43YzMuNyAwIDcuMi40IDEwLjMgMS4zIDMuMi45IDUuOSAyLjIgOC4yIDMuOXEzLjQ1IDIuNTUgNS40IDYuNmMxLjMgMi43IDIgNS45IDIgOS41cy0xLjQgOC45LTQuMSAxMi02LjMgNS40LTEwLjYgNi44di4yYzIuNi4yIDUgLjggNy4zIDJzNC4yIDIuNyA1LjkgNC42YzEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjR6TTU3My4yIDcxSDU4OWMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4zdjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yczMuNC0yLjYgNC43LTQuNGMxLjMtMS45IDEuOS00LjMgMS45LTcuNCAwLTUuMS0xLjctOC45LTUtMTEuNHMtNy44LTMuOC0xMy40LTMuOGgtMTcuMnYyOS43WiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTg2LjMgNC4yQzUzLjQgNC4yIDMwLjQgMjQuNyAzMC40IDU0czQuOSAzNC44IDkuMSA1NS44YzMgMTUuMSA1LjYgMjcuMyA1LjcgMjcuNi44IDMuNyA0LjQgNi4xIDguMiA1LjVoLjhjMC0uMS0uNi0uNy0uNi0uNy0xLjEtMS4xLTEuOC0yLjQtMi4zLTMuOC0uMi0uOC0uMy0xLjUtLjQtMi4xIDAtLjMgMC0uNi0uMS0uOWwtMS41LTguOWMtLjYtNC0xLjMtOC0xLjgtMTEuOCAwLS4zLjEtLjUuNC0uNXMuNS4xLjUuNHExLjIgNS43IDIuNCAxMS43bDEuNyA4LjhjMCAuMy4xLjYuMi45LjEuNy4zIDEuNC40IDIgLjUgMS41IDEuNSAyLjggMi44IDMuOC4xLjEuMy4yLjQuMy44LjQgMS42LjcgMi41LjkuOS4xIDEuOC4xIDIuNiAwIC45LS4yIDEuOS0uNiAyLjctMS4ybC4zLS4yLS4yLS4zYy0uNy0uOS0xLjEtMS45LTEuNC0zLS4yLS44LS4zLTEuNS0uMy0yLjJ2LS45bC0uOS04LjljLS40LTQuMS0uNy04LjEtMS0xMS45IDAtLjEgMC0uMi4xLS4zIDAgMCAuMi0uMi4zLS4yLjMgMCAuNS4yLjUuNC41IDMuOCAxLjEgNy44IDEuNiAxMS44bDEuMSA4LjljMCAuMyAwIC41LjEuOCAwIC43LjIgMS40LjMgMiAuMi43LjQgMS4zLjggMS45LjUuOSAxLjIgMS42IDIgMi4yIDAgMCAwIC4xLjEuMSAxLjQgMSAzLjMgMS40IDUgMS4xczMuMy0xLjIgNC41LTIuNWMuMy0uMy41LS43LjctMS4xdi0uNGMtLjEtLjQtLjItLjgtLjQtMS4yLS4xLS42LS4yLTEuNC0uMi0yLjN2LTQuNGMtLjItNS42LS4yLTExLjMtLjItMTcuNiAwLS4zLjItLjUuNS0uNXMuNS4yLjUuNGMuNCA2LjMuNyAxMiAuOSAxNy42bC4yIDQuNGMwIC44IDAgMS40LjIgMiAuMS41LjMgMS4yLjcgMS44di4xYzEuMiAyLjIgMy42IDMuNyA2LjEgMy43aC4xYzIuNSAwIDUtMS40IDYuMy0zLjcuMy0uNS41LTEuMS43LTEuOC4xLS42LjItMS4yLjItMS45bC4yLTQuNWMuMi01LjMuNS0xMSAuOS0xNy42IDAtLjMuMi0uNS41LS40LjIgMCAuNC4yLjQuNSAwIDYuNiAwIDEyLjMtLjEgMTcuNnY0LjRjMCAuNiAwIDEuNS0uMyAyLjMgMCAuNC0uMi44LS4zIDEuMnYuNGMuMi40LjUuNy43IDEuMSAxLjEgMS40IDIuNyAyLjMgNC41IDIuNSAxLjcuMyAzLjYtLjEgNS0xLjFoLjFjLjgtLjYgMS41LTEuNCAyLTIuMi40LS42LjYtMS4yLjgtMS45LjEtLjYuMi0xLjMuMy0yIDAtLjMgMC0uNS4xLS44bDEuMS04LjljLjUtNCAxLjEtOCAxLjYtMTEuOCAwLS4xIDAtLjIuMi0uMy4xIDAgLjItLjEuMyAwIC4yIDAgLjQuMy40LjUtLjMgMy44LS43IDcuOC0xIDExLjlsLS45IDguOXYuOGMwIC43LS4xIDEuNC0uMyAyLjItLjMgMS4xLS43IDIuMS0xLjQgM2wtLjIuMy4zLjJjLjguNiAxLjggMSAyLjcgMS4yczEuNy4yIDIuNiAwYy45LS4xIDEuNy0uNCAyLjUtLjkuMiAwIC4zLS4yLjQtLjMgMS4zLS45IDIuMy0yLjMgMi44LTMuOC4yLS41LjMtMS4zLjQtMiAwLS4zLjEtLjYuMi0uOGwxLjctOC44Yy44LTQgMS42LTggMi40LTExLjcgMC0uMy4zLS40LjYtLjQuMiAwIC40LjMuNC41LS42IDMuOC0xLjIgNy44LTEuOCAxMS44bC0xLjUgOC45YzAgLjMtLjEuNi0uMS45LS4xLjctLjIgMS4zLS40IDIuMi0uNCAxLjQtMS4yIDIuNy0yLjMgMy44bC0uNS41LjcuMmMuNCAwIC44LjEgMS4yLjEgMy4zIDAgNi4zLTIuMyA3LTUuNiAwLS4zIDIuOC0xMi45IDUuOC0yOC41IDQuMS0yMC45IDktNDcgOS01NUMxNDIgMjUgMTE5IDQuNSA4Ni4xIDQuNVoiIHN0eWxlPSJmaWxsOiM1N2QxZTUiLz48cGF0aCBkPSJNMTMzLjEgMTA5LjdjLTMuMSAxNS43LTUuNyAyNy41LTUuNyAyNy43LS43IDMuMi0zLjcgNS40LTcgNS40aC0xLjZsLjMtLjRjMS4xLTEuMSAxLjktMi40IDIuMy0zLjguMi0uOC4zLTEuNS40LTIuMiAwLS40IDAtLjYuMS0uOWwxLjUtOC45Yy42LTQgMS4zLTggMS44LTExLjggMC0uMy0uMi0uNy0uNS0uN2gtLjVjLS4xIDAtLjMuMi0uMy40LS44IDMuNy0xLjYgNy43LTIuNCAxMS43bC0xLjcgOC44YzAgLjIgMCAuNC0uMS42di4zYy0uMi43LS4zIDEuNC0uNSAxLjktLjQgMS41LTEuNCAyLjgtMi43IDMuNy0uMSAwLS4zLjItLjQuMy0uNy40LTEuNS43LTIuNC44cy0xLjcuMS0yLjYgMGMtLjktLjItMS44LS42LTIuNi0xLjJoLS4yYzAtLjEuMS0uMy4xLS4zLjctMSAxLjEtMiAxLjQtMy4xLjItLjguMy0xLjUuMy0yLjN2LS44bC45LTguOWMuNC00LjEuNy04LjEgMS0xMS45IDAtLjMtLjItLjctLjYtLjctLjIgMC0uMyAwLS41LjEtLjEuMS0uMi4zLS4zLjQtLjUgMy44LTEuMSA3LjctMS42IDExLjhsLTEuMSA4LjljMCAuMyAwIC41LS4xLjggMCAuNy0uMiAxLjQtLjMgMi0uMi42LS40IDEuMi0uOCAxLjgtLjUuOC0xLjIgMS42LTIgMi4xIDAgMCAwIC4xLS4xLjEtMS40LjktMy4yIDEuMy00LjkgMS4xcy0zLjMtMS4xLTQuMy0yLjVjLS4zLS4zLS41LS43LS43LTF2LS4yYy4xLS40LjMtLjguNC0xLjIuMi0uOC4yLTEuOC4yLTIuNHYtNC40Yy4yLTUuMi4yLTEwLjkuMi0xNy42IDAtLjMtLjMtLjYtLjYtLjctLjQgMC0uNy4zLS43LjYtLjQgNi41LS43IDEyLjMtLjkgMTcuNmwtLjIgNC41YzAgLjcgMCAxLjMtLjIgMS45LS4yLjctLjQgMS4zLS43IDEuOC0xLjIgMi4yLTMuNiAzLjYtNiAzLjZIODZjLTIuNCAwLTQuOC0xLjQtNi0zLjZ2LS4xYy0uMy0uNi0uNS0xLjItLjctMS43LS4xLS42LS4yLTEuMi0uMi0ybC0uMi00LjRjLS4yLTUuNS0uNS0xMS4zLS45LTE3LjYgMC0uMy0uMy0uNi0uNy0uNnMtLjcuMy0uNy43YzAgNi4zIDAgMTIgLjEgMTcuNnY0LjRxMCAxLjUuMyAyLjRjLjEuNC4yLjkuNCAxLjJ2LjJjLS4yLjQtLjUuNy0uNyAxYTcuNiA3LjYgMCAwIDEtNC4zIDIuNWMtMS43LjMtMy41LS4xLTQuOS0xLjFoLS4xYy0uOC0uNi0xLjUtMS4zLTItMi4yLS4zLS42LS42LTEuMi0uOC0xLjgtLjEtLjUtLjItMS4yLS4zLTIgMC0uMyAwLS41LS4xLS44bC0xLjEtOC45Yy0uNS00LjEtMS4xLTguMS0xLjYtMTEuOCAwLS40LS4zLS42LS43LS42LS4yIDAtLjMgMC0uNC4yLS4xLjEtLjIuMy0uMi41LjMgMy44LjcgNy44IDEgMTEuOWwuOSA4Ljl2LjljMCAuNy4xIDEuNC4zIDIuMi4zIDEuMS43IDIuMSAxLjQgMy4xdi4yYy4xIDAgMCAuMSAwIC4xLS44LjYtMS43IDEtMi42IDEuMi0uOC4yLTEuNy4yLTIuNiAwcS0xLjM1LS4xNS0yLjQtLjljLS4xIDAtLjMtLjItLjQtLjMtMS4zLS45LTIuMy0yLjItMi43LTMuNy0uMi0uNS0uMy0xLjItLjQtMS45IDAtLjQtLjEtLjctLjItLjlsLTEuNy04LjhjLS44LTQtMS42LTgtMi40LTExLjcgMC0uMy0uNC0uNi0uNy0uNS0uNCAwLS42LjQtLjYuNy42IDMuOCAxLjIgNy44IDEuOCAxMS44bDEuNSA4LjljMCAuMyAwIC41LjEuOC4xLjguMiAxLjUuNCAyLjMuNCAxLjQgMS4yIDIuNyAyLjMgMy44bC4zLjNoLS40Yy0zLjcuNy03LjItMS43LTgtNS4zLS4zLTEuMy0zLTEzLjEtNS45LTI3LjZsNC4yIDI4YzAgLjIuMS41LjIuN3YuMmMuMS4yLjIuMy4zLjUgMCAwIDAgLjIuMS4zIDAgLjEuMS4yLjIuNCAwIC4xLjEuMi4yLjN2LjJsLjYuOWMuMS4yLjIuMy40LjUuMS4yLjMuMy40LjUgMS42IDEuNSAzLjcgMi4zIDUuOSAyLjNzMSAwIDEuNC0uMWwzLjItLjVjLjUuMiAxLjEuNCAxLjcuNCAxLjEuMiAyLjIuMSAzLjIgMCAxLjEtLjIgMi4zLS43IDMuMy0xLjVsLjgtLjZjLjIuMi41LjQuOC42bC4yLjJjMS43IDEuMSA0IDEuNiA2LjEgMS4zczQuMS0xLjQgNS40LTMuMWMuMi0uMy41LS42LjctLjkgMS41IDIuNSA0LjQgNC4xIDcuMyA0LjFoLjJjMi45IDAgNS43LTEuNiA3LjItNC4xLjIuMy40LjcuNy45IDEuMyAxLjcgMy4zIDIuOCA1LjQgMy4xaDEuM2MxLjcgMCAzLjQtLjUgNC44LTEuNCAwIDAgLjEgMCAuMi0uMS4zLS4yLjUtLjQuOC0uNmwuOC42cTEuNSAxLjA1IDMuMyAxLjVjMSAuMiAyLjEuMiAzLjIgMHExLjA1LS4xNSAyLjEtLjZsMi43LjdoLjFjLjUuMS45LjEgMS40LjEgNCAwIDcuNi0yLjkgOC41LTYuOCAwLS4xIDQuMi0yOCA0LjItMjhaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNNDYuNCAxNy43Yy0xMC4xIDguOC0xNiAyMS40LTE2IDM2LjJzMTQuNSA4Mi44IDE0LjcgODMuNWMuMyAxLjUgMS40IDIuNiAyLjQgMy42LTMuNi0xNy40LTE1LjQtNzMuNS0xNS40LTg2LjZzNS4yLTI3LjIgMTQuMy0zNi43IiBzdHlsZT0iZmlsbDojOTNlMWVmIi8+PHBhdGggZD0iTTcxLjMgMjUuNkM1Ny45IDI1LjYgNDcgMzYuNSA0NyA0OS45czEwLjkgMjQuMyAyNC4zIDI0LjMgMjQuMy0xMC45IDI0LjMtMjQuMy0xMC45LTI0LjMtMjQuMy0yNC4zIiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNDQuNiA0OGMwIDEzLjQgMTAuOSAyNC4zIDI0LjMgMjQuM1M5My4yIDYxLjQgOTMuMiA0OCA4Mi4zIDIzLjcgNjguOSAyMy43IDQ0LjYgMzQuNiA0NC42IDQ4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.header-logo__bar{background-color:var(--text-color);border-left:1px solid var(--text-color);height:11.56px;margin:0 7.5px;width:0}.header-logo__text{color:var(--text-color);font-size:10.11px;letter-spacing:.722408px;line-height:12px;text-transform:uppercase}.header-navigation{display:none}.header-button{display:none;margin-left:15px;text-transform:uppercase}.header-search-box{display:none;margin-right:20px;width:200px}.scylla-dropdown__content{background-color:var(--card-bg)}.scylla-dropdown--header .scylla-dropdown__item{font-size:14px}.scylla-dropdown--header .scylla-dropdown__title{text-transform:uppercase}.scylla-dropdown--header .scylla-dropdown__title .chevron{font-size:24px;line-height:.5em;margin-left:4px}.contents.local>ul>li .scylla-dropdown--header .scylla-dropdown__content a:before,.scylla-dropdown--header .scylla-dropdown__content .contents.local>ul>li a:before,.scylla-dropdown--header .scylla-dropdown__content .scylla-icon{min-height:20px;width:20px}@media screen and (min-width:1024px){.header{padding:18px 0}.header-logo__img{width:152px}.header-logo__bar{height:16px;margin:0 10px}.header-logo__text{font-size:14px;letter-spacing:.722408px;line-height:12px;text-transform:uppercase}.header-navigation{align-items:center;display:flex;justify-content:center}.header-search-box{align-items:center;display:flex;flex-direction:row;gap:20px}}@media screen and (min-width:1200px){.header-logo{margin-left:30px;width:357px}.header-search-box{margin-right:30px;max-width:20%;width:318px}.header-button{display:block}}.side-nav{background:var(--navigation-bg);display:none;height:100vh;left:0;line-height:24px;max-height:calc(100vh - 50px);overflow-y:auto;padding:20px 20px 0;position:fixed;top:50px;width:100%;z-index:100}.side-nav__title{font-weight:700;margin-bottom:20px}.side-nav__title a{color:var(--text-color);text-decoration:none}.side-nav__title a:hover{font-weight:700}.side-nav__content{max-width:90%;overflow-wrap:break-word}.side-nav__content label,.side-nav__content label i{align-items:center;display:flex;margin:0;padding:0}.side-nav__content label{color:inherit;font-size:22px;line-height:1;width:12px}.side-nav__content .scylla-icon--expand{height:5px;vertical-align:top;width:10px}.side-nav__content .toctree-checkbox{display:none;position:absolute;right:20px}.side-nav__content .toctree-checkbox~ul{display:none;margin-right:20px}.side-nav__content .toctree-checkbox:checked~ul{display:block}.side-nav__content ul{margin:0}.side-nav__content a:not(.current){color:var(--text-color)}.side-nav__content a:not(.current):hover{color:var(--link-color-hover);font-weight:400}.side-nav__content li{list-style:none;padding:0 0 24px}.side-nav__content li.has-children{align-items:center;display:flex;flex-wrap:wrap}.side-nav__content li.has-children>a{max-width:calc(100% - 15px)}.side-nav__content li.has-children.current{padding-bottom:20px}.side-nav__content li.has-children:hover{color:var(--link-color-hover)}.side-nav__content li.current-page{color:var(--link-color)}.side-nav__content li ul{margin-top:18px;width:100%}.side-nav__content li ul li{border-left:1px solid var(--link-color);padding:4px 0 4px 13px}.side-nav__content li ul ul{margin-left:0}.side-nav__content li .label{display:none}.side-nav__versions{max-width:90%}.side-nav__search,.side-nav__versions .dropdown{margin-bottom:20px}.collapsible-button{background:var(--white);background-color:var(--card-bg);border:0;border-radius:8px;border-radius:50%;bottom:10px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;display:none;font-size:0;left:300px;overflow:hidden;padding:13.5px;position:fixed}.collapsible-button i{display:block;font-size:20px}.side-nav--collapsed .collapsible-button{border-radius:0 30px 30px 0;left:-10px}.side-nav--collapsed .collapsible-button i{transform:rotate(180deg)}.layout--has-banner .side-nav{max-height:calc(100vh - 92.5px)}@media screen and (min-width:1024px){.side-nav{background-color:var(--navigation-bg);display:block;height:100%;left:auto;max-height:calc(100vh - 80px);padding:30px 40px;top:80px;width:286px;z-index:25}.side-nav__content{max-width:100%}.side-nav__search{display:none}.side-nav__versions{max-width:100%}.toctree-checkbox{right:40px}.layout--has-banner .side-nav{max-height:calc(100vh - 150px)}}@media screen and (min-width:1200px){.side-nav{width:357px}.side-nav--collapsed{background-color:transparent;padding-left:0;padding-right:0;width:126px}.side-nav--collapsed .side-nav-content{display:none}.collapsible-button{display:block}}.dark-theme-toggler,.side-nav-toggle{cursor:pointer;font-size:22px}.side-nav-toggle{display:flex;gap:10px;margin-right:20px;position:relative;z-index:300}@media screen and (min-width:1024px){.side-nav-toggle{display:none}}.secondary-side-nav{display:none;height:100%;line-height:24px;padding:20px;width:100%}.secondary-side-nav__content{overflow-wrap:break-word}.secondary-side-nav__content ul{list-style:none;margin:0}.secondary-side-nav__content li{border-bottom:1px solid var(--border-color);display:none;padding:10px 0;word-break:break-word}.secondary-side-nav__content li:last-child{border:0}.secondary-side-nav__content li .label{display:none}.secondary-side-nav__content li a{align-items:baseline;color:var(--text-muted);display:flex;font-size:14px}.secondary-side-nav__content li a:before{content:"";flex-shrink:0;font-size:8px;margin-right:10px;min-height:10px;opacity:.5}.secondary-side-nav__content li a.current,.secondary-side-nav__content li a:hover{color:var(--text-color);font-weight:400}.secondary-side-nav__content li a.current:before,.secondary-side-nav__content li a:hover:before{opacity:1}.secondary-side-nav__content li a.current{font-weight:700}.secondary-side-nav__content>ul>li>ul>li{display:block}.secondary-side-nav__content>ul>li{border:0;display:block}.secondary-side-nav__content>ul>li>a{display:none}@media screen and (min-width:1200px){.secondary-side-nav{display:block;max-height:100vh;max-height:calc(100vh - 80px);overflow-y:auto;padding:60px 60px 60px 20px;position:fixed;top:80px;width:286px}.layout--has-banner .secondary-side-nav{max-height:calc(100vh - 150px)}}.layout{background-color:var(--bg-color);display:flex}.pre-content{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.content{margin-top:50px;max-width:1440px;overflow-wrap:break-word;padding:20px;width:100%}.content .line-block,.content p{line-height:28px;margin-bottom:20px}.content ul{list-style:none}.content ul li:before{color:var(--text-muted);content:"•";float:left;font-family:FontAwesome;font-size:20px;font-weight:700;margin-left:-1em;margin-top:-2px;width:1em}.content ul ul{list-style:circle}.content ul ul li:before{content:""}.content ol ol{list-style:lower-latin}.content img{margin-bottom:30px}.content .inline-icon{font-size:22px}.content .inline-icon.icon-check{color:var(--primary)}.layout--full-width .content{max-width:100%;padding:0;width:100%}.layout--full-width .content .hero-wrapper,.layout--full-width .content .topics-grid{max-width:1190px}.layout--full-width .content.content--collapsed,.layout--full-width:not(.layout--sidebar) .content{margin-left:0}.landing__content{padding:0 16px}@media screen and (min-width:1024px){.content{margin-left:286px;margin-top:80px;min-height:calc(100vh - 260px);padding-bottom:100px;width:calc(100% - 286px)}}@media screen and (min-width:1200px){.content{margin-left:357px;padding:60px 40px 40px;width:calc(100% - 643px)}.content--collapsed{margin-left:126px;width:calc(100% - 412px)}.pre-content{margin-bottom:10px}.landing__content{padding:0 60px}.landing--floating .landing__content{position:relative;top:-70px}}.contents.local>ul{margin-bottom:30px;margin-left:0}.contents.local>ul>li{border-bottom:1px solid rgba(90,94,154,.1);padding:10px 0;word-break:break-word}.contents.local>ul>li:before{content:""}.contents.local>ul>li:last-child{border:0}.contents.local>ul>li ul{display:none}.contents.local>ul>li p{margin:0}.contents.local>ul>li a{font-size:14px}.contents.local>ul>li a:before{content:"";filter:invert(38%) sepia(71%) saturate(6789%) hue-rotate(231deg) brightness(90%) contrast(95%)!important;margin-right:10px;min-height:10px;opacity:.5;width:10px}.contents.local>ul>li a.current:before,.contents.local>ul>li a:hover:before{filter:brightness(0);opacity:1}.topic-title{color:var(--text-muted);font-size:10px;letter-spacing:1.5px;margin-bottom:0;text-transform:uppercase}.notice{margin-top:40px}.footer{background-color:var(--card-bg);box-shadow:0 -4px 10px rgba(0,0,0,.1);padding:30px 0;position:relative;width:100%;z-index:50}.footer-group{margin:0 auto;max-width:1030px;padding:0 20px}.footer-top{align-items:center;border-bottom:1px solid var(--border-color);display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:20px;text-align:center}.footer-logo{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0ze2ZpbGw6IzRkOWJiNn0uY2xzLTR7ZmlsbDojM2IyZDU1fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8xIj48cGF0aCBkPSJNMTg1LjYgMTAzLjFjMi4xIDMuMSA0LjggNS41IDggNi45IDMuMyAxLjUgNi42IDIuMiAxMC4xIDIuMnMzLjktLjMgNS45LS45IDMuOC0xLjUgNS41LTIuN2MxLjYtMS4yIDMtMi43IDQtNC41czEuNi0zLjggMS42LTYuMi0xLTUuOC0zLjEtNy41LTQuNy0zLjItNy44LTQuM2MtMy4xLTEuMi02LjUtMi4zLTEwLjEtMy40LTMuNy0xLjEtNy0yLjYtMTAuMS00LjVxLTQuNjUtMi44NS03LjgtNy44Yy0yLjEtMy4zLTMuMS03LjctMy4xLTEzLjJzLjUtNS4yIDEuNi04IDIuOC01LjQgNS4xLTcuNyA1LjMtNC4zIDktNS45cTUuNTUtMi40IDEzLjItMi40YzcuNjUgMCA5LjEuNiAxMy40IDEuOXM4IDMuOSAxMS4yIDcuOWwtOS40IDguNmMtMS41LTIuMy0zLjUtNC4xLTYuMi01LjQtMi43LTEuNC01LjctMi4xLTkuMS0yLjFzLTUuOS40LTggMS4zcS0zLjE1IDEuMi01LjEgMy4zYy0xLjMgMS4zLTIuMiAyLjgtMi43IDQuM3MtLjggMi45LS44IDQuMmMwIDMuNiAxIDYuNCAzLjEgOC4zczQuNyAzLjUgNy44IDQuNyA2LjUgMi4zIDEwLjEgMy4zYzMuNyAxIDcgMi4zIDEwLjEgNHM1LjcgNC4xIDcuOCA3IDMuMSA3IDMuMSAxMi4xLS44IDcuOC0yLjQgMTEuMS0zLjcgNi4xLTYuMyA4LjNjLTIuNyAyLjMtNS44IDQtOS40IDUuMnMtNy41IDEuOC0xMS42IDEuOC0xMC43LTEtMTUuNi0yLjktOC44LTQuOS0xMS43LTguOWw5LjUtOC4yWk0yODYuMSA3OXEtMy0zLjE1LTYuMy00LjhjLTIuMi0xLjEtNC45LTEuNi03LjktMS42cy01LjYuNS03LjggMS42LTQuMSAyLjYtNS42IDQuNS0yLjYgNC4xLTMuNCA2LjVjLS44IDIuNS0xLjEgNS0xLjEgNy43cy40IDUuMiAxLjMgNy41Yy45IDIuNCAyLjEgNC40IDMuNyA2LjJzMy41IDMuMiA1LjggNC4yIDQuOCAxLjUgNy42IDEuNSA1LjctLjUgNy45LTEuNnEzLjMtMS42NSA2LTQuOGw3LjcgNy43Yy0yLjggMy4xLTYuMSA1LjQtOS44IDYuOHMtNy43IDIuMS0xMS45IDIuMS04LjUtLjctMTIuMS0yLjJjLTMuNy0xLjUtNi44LTMuNS05LjUtNi4xcy00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4xIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4zIDYzLjhoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN0gzNTZsLTI3LjIgNjkuNmMtMSAyLjUtMiA0LjgtMyA2LjgtMSAyLjEtMi4zIDMuOC0zLjcgNS4zcy0zLjIgMi42LTUuMiAzLjRxLTMgMS4yLTcuNSAxLjJjLTQuNSAwLTMuMi0uMS00LjktLjMtMS42LS4yLTMuMi0uNi00LjgtMS4zbDEuMy05LjljMi4yLjkgNC4zIDEuMyA2LjUgMS4zczMuMS0uMiA0LjMtLjdjMS4yLS40IDIuMi0xLjEgMy0xLjlxMS4yLTEuMiAyLjEtM2MuNi0xLjEgMS4xLTIuNCAxLjctMy45bDMuNS05LjEtMjMuNy01Ny42Wk0zNjQuMSAyOS43SDM3NVYxMjFoLTEwLjl6TTM4Ni43IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi44IDcwLjhjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczgtMi4xIDEyLjEtMi4xIDcuOC41IDEwLjggMS42YzMgMSA1LjUgMi41IDcuNCA0LjIgMS45IDEuOCAzLjQgMy44IDQuMyA2LjFzMS40IDQuNyAxLjQgNy4ydjI5LjJjMCAyIDAgMy45LjEgNS42IDAgMS43LjIgMy4zLjQgNC44aC05LjdjLS4yLTIuOS0uNC01LjgtLjQtOC43aC0uMmMtMi40IDMuNy01LjMgNi4zLTguNiA3LjktMy4zIDEuNS03LjEgMi4zLTExLjUgMi4zcy01LjItLjQtNy42LTEuMXEtMy42LTEuMDUtNi4zLTMuM2MtMS44LTEuNS0zLjItMy4yLTQuMy01LjQtMS0yLjEtMS42LTQuNi0xLjYtNy40cy44LTYuOCAyLjUtOS4zYzEuNi0yLjUgMy45LTQuNSA2LjgtNi4xczYuMi0yLjcgMTAtMy40IDcuOS0xIDEyLjMtMWg4di0yLjRjMC0xLjUtLjMtMi45LS44LTQuMy0uNi0xLjUtMS40LTIuOC0yLjUtMy45LTEuMS0xLjItMi41LTIuMS00LjItMi44cy0zLjctMS02LTEtMy45LjItNS41LjYtMyAuOS00LjMgMS41LTIuNSAxLjMtMy41IDIuMS0yLjEgMS42LTMgMi4zbC02LjUtNi44Wm0zMC43IDIyLjdjLTIuNiAwLTUuMi4xLTcuOS40cy01LjIuOC03LjQgMS42LTQgMS45LTUuNCAzLjQtMi4xIDMuMy0yLjEgNS42YzAgMy4zIDEuMSA1LjcgMy4zIDcuMSAyLjIgMS41IDUuMiAyLjIgOSAyLjJzNS41LS41IDcuNi0xLjVxMy4xNS0xLjUgNS4xLTMuOWMxLjMtMS42IDIuMi0zLjQgMi44LTUuNHMuOC0zLjkuOC01Ljl2LTMuNnpNNDczLjggMzUuNWgyOS44cTkgMCAxNS45IDIuMWM0LjYgMS40IDguNSAzLjIgMTEuOCA1LjVzNi4xIDQuOSA4LjMgNy45IDQgNiA1LjMgOS4yYzEuMyAzLjEgMi4yIDYuMyAyLjggOS40cy44IDYgLjggOC43cTAgOC4yNS0zIDE1LjljLTIgNS4xLTUgOS43LTguOSAxMy42LTQgNC04LjggNy4yLTE0LjcgOS42LTUuOCAyLjQtMTIuNiAzLjYtMjAuMiAzLjZoLTI3Ljl6bTExLjYgNzQuN0g1MDBjNC45IDAgOS42LS43IDE0LTJzOC4yLTMuMyAxMS41LTYgNS45LTYgNy45LTEwYzEuOS00IDIuOS04LjYgMi45LTEzLjlzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC40cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40djYzLjhaTTU2MS43IDM1LjVoMjkuN2MzLjcgMCA3LjEuNCAxMC4zIDEuM3M1LjkgMi4yIDguMiAzLjlxMy40NSAyLjU1IDUuNCA2LjZjMS4zIDIuNyAyIDUuOSAyIDkuNXMtMS40IDguOS00LjEgMTItNi4zIDUuNC0xMC42IDYuOHYuMmMyLjYuMiA1IC44IDcuMiAyIDIuMyAxLjIgNC4yIDIuNyA1LjkgNC42IDEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjRWMzUuNVpNNTczLjMgNzFoMTUuOGMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4ydjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yIDEuOC0xLjEgMy40LTIuNiA0LjctNC40IDEuMy0xLjkgMS45LTQuMyAxLjktNy40IDAtNS4xLTEuNy04LjktNS0xMS40cy03LjgtMy44LTEzLjQtMy44aC0xNy4ydjI5LjdaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNODYuMyA0LjJDNTMuNCA0LjIgMzAuNCAyNC43IDMwLjQgNTRzNC45IDM0LjggOS4xIDU1LjhjMyAxNS4xIDUuNiAyNy4zIDUuNyAyNy42LjggMy43IDQuNCA2LjEgOC4yIDUuNWguOGMwLS4xLS42LS43LS42LS43LTEuMS0xLjEtMS44LTIuNC0yLjMtMy44LS4yLS44LS4zLTEuNS0uNC0yLjEgMC0uMyAwLS42LS4xLS45bC0xLjUtOC45Yy0uNi00LTEuMy04LTEuOC0xMS44IDAtLjMuMS0uNS40LS41cy41LjEuNS40cTEuMiA1LjcgMi40IDExLjdsMS43IDguOGMwIC4zLjEuNi4yLjkuMS43LjMgMS40LjQgMiAuNSAxLjUgMS41IDIuOCAyLjggMy44LjEuMS4zLjIuNC4zLjguNCAxLjYuNyAyLjUuOS45LjEgMS44LjEgMi42IDAgLjktLjIgMS45LS42IDIuNy0xLjJsLjMtLjItLjItLjNjLS43LS45LTEuMS0xLjktMS40LTMtLjItLjgtLjMtMS41LS4zLTIuMnYtLjlsLS45LTguOWMtLjQtNC4xLS43LTguMS0xLTExLjkgMC0uMSAwLS4yLjEtLjMgMCAwIC4yLS4yLjMtLjIuMyAwIC41LjIuNS40LjUgMy44IDEuMSA3LjggMS42IDExLjhsMS4xIDguOWMwIC4zIDAgLjUuMS44IDAgLjcuMiAxLjQuMyAyIC4yLjcuNCAxLjMuOCAxLjkuNS45IDEuMiAxLjYgMiAyLjIgMCAwIDAgLjEuMS4xIDEuNCAxIDMuMyAxLjQgNSAxLjFzMy4zLTEuMiA0LjUtMi41Yy4zLS4zLjUtLjcuNy0xLjF2LS40Yy0uMS0uNC0uMi0uOC0uNC0xLjItLjEtLjYtLjItMS40LS4yLTIuM3YtNC40Yy0uMi01LjYtLjItMTEuMy0uMi0xNy42IDAtLjMuMi0uNS41LS41cy41LjIuNS40Yy40IDYuMy43IDEyIC45IDE3LjZsLjIgNC40YzAgLjggMCAxLjQuMiAyIC4xLjUuMyAxLjIuNyAxLjh2LjFjMS4yIDIuMiAzLjYgMy43IDYuMSAzLjdoLjFjMi41IDAgNS0xLjQgNi4zLTMuNy4zLS41LjUtMS4xLjctMS44LjEtLjYuMi0xLjIuMi0xLjlsLjItNC41Yy4yLTUuMy41LTExIC45LTE3LjYgMC0uMy4yLS41LjUtLjQuMiAwIC40LjIuNC41IDAgNi42IDAgMTIuMy0uMSAxNy42djQuNGMwIC42IDAgMS41LS4zIDIuMyAwIC40LS4yLjgtLjMgMS4ydi40Yy4yLjQuNS43LjcgMS4xIDEuMSAxLjQgMi43IDIuMyA0LjUgMi41IDEuNy4zIDMuNi0uMSA1LTEuMWguMWMuOC0uNiAxLjUtMS40IDItMi4yLjQtLjYuNi0xLjIuOC0xLjkuMS0uNi4yLTEuMy4zLTIgMC0uMyAwLS41LjEtLjhsMS4xLTguOWMuNS00IDEuMS04IDEuNi0xMS44IDAtLjEgMC0uMi4yLS4zLjEgMCAuMi0uMS4zIDAgLjIgMCAuNC4zLjQuNS0uMyAzLjgtLjcgNy44LTEgMTEuOWwtLjkgOC45di44YzAgLjctLjEgMS40LS4zIDIuMi0uMyAxLjEtLjcgMi4xLTEuNCAzbC0uMi4zLjMuMmMuOC42IDEuOCAxIDIuNyAxLjJzMS43LjIgMi42IDBjLjktLjEgMS43LS40IDIuNS0uOS4yIDAgLjMtLjIuNC0uMyAxLjMtLjkgMi4zLTIuMyAyLjgtMy44LjItLjUuMy0xLjMuNC0yIDAtLjMuMS0uNi4yLS44bDEuNy04LjhjLjgtNCAxLjYtOCAyLjQtMTEuNyAwLS4zLjMtLjQuNi0uNC4yIDAgLjQuMy40LjUtLjYgMy44LTEuMiA3LjgtMS44IDExLjhsLTEuNSA4LjljMCAuMy0uMS42LS4xLjktLjEuNy0uMiAxLjMtLjQgMi4yLS40IDEuNC0xLjIgMi43LTIuMyAzLjhsLS41LjUuNy4yYy40IDAgLjguMSAxLjIuMSAzLjMgMCA2LjMtMi4zIDctNS42IDAtLjMgMi44LTEyLjkgNS44LTI4LjUgNC4xLTIwLjkgOS00NyA5LTU1QzE0MiAyNSAxMTkgNC41IDg2LjEgNC41WiIgc3R5bGU9ImZpbGw6IzU3ZDFlNSIvPjxwYXRoIGQ9Ik0xMzMuMSAxMDkuN2MtMy4xIDE1LjctNS43IDI3LjUtNS43IDI3LjctLjcgMy4yLTMuNyA1LjQtNyA1LjRoLTEuNmwuMy0uNGMxLjEtMS4xIDEuOS0yLjQgMi4zLTMuOC4yLS44LjMtMS41LjQtMi4yIDAtLjQgMC0uNi4xLS45bDEuNS04LjljLjYtNCAxLjMtOCAxLjgtMTEuOCAwLS4zLS4yLS43LS41LS43aC0uNWMtLjEgMC0uMy4yLS4zLjQtLjggMy43LTEuNiA3LjctMi40IDExLjdsLTEuNyA4LjhjMCAuMiAwIC40LS4xLjZ2LjNjLS4yLjctLjMgMS40LS41IDEuOS0uNCAxLjUtMS40IDIuOC0yLjcgMy43LS4xIDAtLjMuMi0uNC4zLS43LjQtMS41LjctMi40LjhzLTEuNy4xLTIuNiAwYy0uOS0uMi0xLjgtLjYtMi42LTEuMmgtLjJjMC0uMS4xLS4zLjEtLjMuNy0xIDEuMS0yIDEuNC0zLjEuMi0uOC4zLTEuNS4zLTIuM3YtLjhsLjktOC45Yy40LTQuMS43LTguMSAxLTExLjkgMC0uMy0uMi0uNy0uNi0uNy0uMiAwLS4zIDAtLjUuMS0uMS4xLS4yLjMtLjMuNC0uNSAzLjgtMS4xIDcuNy0xLjYgMTEuOGwtMS4xIDguOWMwIC4zIDAgLjUtLjEuOCAwIC43LS4yIDEuNC0uMyAyLS4yLjYtLjQgMS4yLS44IDEuOC0uNS44LTEuMiAxLjYtMiAyLjEgMCAwIDAgLjEtLjEuMS0xLjQuOS0zLjIgMS4zLTQuOSAxLjFzLTMuMy0xLjEtNC4zLTIuNWMtLjMtLjMtLjUtLjctLjctMXYtLjJjLjEtLjQuMy0uOC40LTEuMi4yLS44LjItMS44LjItMi40di00LjRjLjItNS4yLjItMTAuOS4yLTE3LjYgMC0uMy0uMy0uNi0uNi0uNy0uNCAwLS43LjMtLjcuNi0uNCA2LjUtLjcgMTIuMy0uOSAxNy42bC0uMiA0LjVjMCAuNyAwIDEuMy0uMiAxLjktLjIuNy0uNCAxLjMtLjcgMS44LTEuMiAyLjItMy42IDMuNi02IDMuNkg4NmMtMi40IDAtNC44LTEuNC02LTMuNnYtLjFjLS4zLS42LS41LTEuMi0uNy0xLjctLjEtLjYtLjItMS4yLS4yLTJsLS4yLTQuNGMtLjItNS41LS41LTExLjMtLjktMTcuNiAwLS4zLS4zLS42LS43LS42cy0uNy4zLS43LjdjMCA2LjMgMCAxMiAuMSAxNy42djQuNHEwIDEuNS4zIDIuNGMuMS40LjIuOS40IDEuMnYuMmMtLjIuNC0uNS43LS43IDFhNy42IDcuNiAwIDAgMS00LjMgMi41Yy0xLjcuMy0zLjUtLjEtNC45LTEuMWgtLjFjLS44LS42LTEuNS0xLjMtMi0yLjItLjMtLjYtLjYtMS4yLS44LTEuOC0uMS0uNS0uMi0xLjItLjMtMiAwLS4zIDAtLjUtLjEtLjhsLTEuMS04LjljLS41LTQuMS0xLjEtOC4xLTEuNi0xMS44IDAtLjQtLjMtLjYtLjctLjYtLjIgMC0uMyAwLS40LjItLjEuMS0uMi4zLS4yLjUuMyAzLjguNyA3LjggMSAxMS45bC45IDguOXYuOWMwIC43LjEgMS40LjMgMi4yLjMgMS4xLjcgMi4xIDEuNCAzLjF2LjJjLjEgMCAwIC4xIDAgLjEtLjguNi0xLjcgMS0yLjYgMS4yLS44LjItMS43LjItMi42IDBxLTEuMzUtLjE1LTIuNC0uOWMtLjEgMC0uMy0uMi0uNC0uMy0xLjMtLjktMi4zLTIuMi0yLjctMy43LS4yLS41LS4zLTEuMi0uNC0xLjkgMC0uNC0uMS0uNy0uMi0uOWwtMS43LTguOGMtLjgtNC0xLjYtOC0yLjQtMTEuNyAwLS4zLS40LS42LS43LS41LS40IDAtLjYuNC0uNi43LjYgMy44IDEuMiA3LjggMS44IDExLjhsMS41IDguOWMwIC4zIDAgLjUuMS44LjEuOC4yIDEuNS40IDIuMy40IDEuNCAxLjIgMi43IDIuMyAzLjhsLjMuM2gtLjRjLTMuNy43LTcuMi0xLjctOC01LjMtLjMtMS4zLTMtMTMuMS01LjktMjcuNmw0LjIgMjhjMCAuMi4xLjUuMi43di4yYy4xLjIuMi4zLjMuNSAwIDAgMCAuMi4xLjMgMCAuMS4xLjIuMi40IDAgLjEuMS4yLjIuM3YuMmwuNi45Yy4xLjIuMi4zLjQuNS4xLjIuMy4zLjQuNSAxLjYgMS41IDMuNyAyLjMgNS45IDIuM3MxIDAgMS40LS4xbDMuMi0uNWMuNS4yIDEuMS40IDEuNy40IDEuMS4yIDIuMi4xIDMuMiAwIDEuMS0uMiAyLjMtLjcgMy4zLTEuNWwuOC0uNmMuMi4yLjUuNC44LjZsLjIuMmMxLjcgMS4xIDQgMS42IDYuMSAxLjNzNC4xLTEuNCA1LjQtMy4xYy4yLS4zLjUtLjYuNy0uOSAxLjUgMi41IDQuNCA0LjEgNy4zIDQuMWguMmMyLjkgMCA1LjctMS42IDcuMi00LjEuMi4zLjQuNy43LjkgMS4zIDEuNyAzLjMgMi44IDUuNCAzLjFoMS4zYzEuNyAwIDMuNC0uNSA0LjgtMS40IDAgMCAuMSAwIC4yLS4xLjMtLjIuNS0uNC44LS42bC44LjZxMS41IDEuMDUgMy4zIDEuNWMxIC4yIDIuMS4yIDMuMiAwcTEuMDUtLjE1IDIuMS0uNmwyLjcuN2guMWMuNS4xLjkuMSAxLjQuMSA0IDAgNy42LTIuOSA4LjUtNi44IDAtLjEgNC4yLTI4IDQuMi0yOFoiIGNsYXNzPSJjbHMtNCIvPjxwYXRoIGQ9Ik00Ni40IDE3LjdjLTEwLjEgOC44LTE2IDIxLjQtMTYgMzYuMnMxNC41IDgyLjggMTQuNyA4My41Yy4zIDEuNSAxLjQgMi42IDIuNCAzLjYtMy42LTE3LjQtMTUuNC03My41LTE1LjQtODYuNnM1LjItMjcuMiAxNC4zLTM2LjciIHN0eWxlPSJmaWxsOiM5M2UxZWYiLz48cGF0aCBkPSJNNzEuMyAyNS42QzU3LjkgMjUuNiA0NyAzNi41IDQ3IDQ5LjlzMTAuOSAyNC4zIDI0LjMgMjQuMyAyNC4zLTEwLjkgMjQuMy0yNC4zLTEwLjktMjQuMy0yNC4zLTI0LjMiIGNsYXNzPSJjbHMtMyIvPjxwYXRoIGQ9Ik00NC42IDQ4YzAgMTMuNCAxMC45IDI0LjMgMjQuMyAyNC4zUzkzLjIgNjEuNCA5My4yIDQ4IDgyLjMgMjMuNyA2OC45IDIzLjcgNDQuNiAzNC42IDQ0LjYgNDgiIHN0eWxlPSJmaWxsOiNmZmYiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=);background-position:50%;background-repeat:no-repeat;height:36px;margin-bottom:0;width:156px!important}.dark .footer-logo{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NTAgMTUwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZn0uY2xzLTN7ZmlsbDojNGQ5YmI2fS5jbHMtNHtmaWxsOiMzYjJkNTV9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkxheWVyXzEiPjxwYXRoIGQ9Ik0xODUuNCAxMDMuMWMyLjEgMy4xIDQuOCA1LjUgOCA2LjkgMy4zIDEuNSA2LjYgMi4yIDEwLjEgMi4yczMuOS0uMyA1LjktLjkgMy44LTEuNSA1LjUtMi43YzEuNi0xLjIgMy0yLjcgNC00LjVzMS42LTMuOCAxLjYtNi4yLTEtNS44LTMuMS03LjUtNC43LTMuMi03LjgtNC4zYy0zLjEtMS4yLTYuNS0yLjMtMTAuMi0zLjRxLTUuNTUtMS42NS0xMC4yLTQuNXQtNy44LTcuOGMtMi4xLTMuMy0zLjEtNy43LTMuMS0xMy4ycy41LTUuMiAxLjYtOCAyLjgtNS40IDUuMS03LjcgNS4zLTQuMyA5LTUuOXE1LjU1LTIuNCAxMy4yLTIuNGM3LjY1IDAgOS4xLjYgMTMuNCAxLjlzOCAzLjkgMTEuMiA3LjlsLTkuNCA4LjZjLTEuNS0yLjMtMy41LTQuMS02LjItNS40LTIuNy0xLjQtNS43LTIuMS05LjEtMi4xcy01LjkuNC04IDEuM3EtMy4xNSAxLjItNS4xIDMuM2MtMS4zIDEuMy0yLjIgMi44LTIuNyA0LjNzLS44IDIuOS0uOCA0LjJjMCAzLjYgMSA2LjQgMy4xIDguM3M0LjcgMy41IDcuOCA0LjdxNC42NSAxLjggMTAuMiAzLjNjMy43IDEgNy4xIDIuMyAxMC4yIDRzNS43IDQuMSA3LjggNyAzLjEgNyAzLjEgMTIuMS0uOCA3LjgtMi40IDExLjEtMy43IDYuMS02LjMgOC4zYy0yLjcgMi4zLTUuOCA0LTkuNCA1LjJzLTcuNSAxLjgtMTEuNiAxLjgtMTAuNy0xLTE1LjYtMi45LTguOC00LjktMTEuNy04LjlsOS41LTguMlpNMjg2IDc5cS0zLTMuMTUtNi4zLTQuOGMtMi4yLTEuMS00LjktMS42LTcuOS0xLjZzLTUuNi41LTcuOCAxLjYtNC4xIDIuNi01LjYgNC41LTIuNiA0LjEtMy40IDYuNWMtLjggMi41LTEuMSA1LTEuMSA3LjdzLjQgNS4yIDEuMyA3LjVjLjkgMi40IDIuMSA0LjUgMy43IDYuMnMzLjUgMy4yIDUuOCA0LjIgNC44IDEuNSA3LjYgMS41IDUuNy0uNSA3LjktMS42cTMuMy0xLjY1IDYtNC44bDcuNyA3LjdjLTIuOCAzLjEtNi4xIDUuNC05LjkgNi44LTMuNyAxLjQtNy43IDIuMS0xMS45IDIuMXMtOC41LS43LTEyLjItMi4yLTYuOC0zLjUtOS41LTYuMS00LjctNS44LTYuMi05LjRjLTEuNS0zLjctMi4yLTcuNy0yLjItMTIuMXMuNy04LjUgMi4yLTEyLjIgMy41LTYuOSA2LjEtOS41YzIuNi0yLjcgNS44LTQuNyA5LjQtNi4yIDMuNy0xLjUgNy44LTIuMiAxMi4zLTIuMnM4LjIuNyAxMiAyLjIgNy4yIDMuOCAxMCA2LjhsLTguMiA3LjVaTTI5OC4yIDYzLjdoMTIuNmwxNyA0NC43aC4ybDE2LjMtNDQuN2gxMS42bC0yNy4yIDY5LjZjLTEgMi41LTIgNC44LTMgNi44LTEgMi4xLTIuMyAzLjgtMy43IDUuM3MtMy4yIDIuNi01LjIgMy40LTQuNiAxLjItNy41IDEuMi0zLjItLjEtNC45LS4zYy0xLjYtLjItMy4yLS42LTQuOC0xLjNsMS4zLTkuOWMyLjIuOSA0LjMgMS4zIDYuNSAxLjNzMy4xLS4yIDQuMy0uN2MxLjItLjQgMi4yLTEuMSAzLTEuOXExLjItMS4yIDIuMS0zYy42LTEuMSAxLjEtMi40IDEuNy0zLjlsMy41LTkuMS0yMy43LTU3LjZaTTM2My45IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTM4Ni42IDI5LjdoMTAuOVYxMjFoLTEwLjl6TTQxMi43IDcwLjdjMy4xLTIuOCA2LjYtNC45IDEwLjYtNi4zczguMS0yLjEgMTIuMS0yLjEgNy44LjUgMTAuOCAxLjZjMyAxIDUuNSAyLjUgNy40IDQuMiAxLjkgMS44IDMuNCAzLjggNC4zIDYuMXMxLjQgNC43IDEuNCA3LjJ2MjkuMmMwIDIgMCAzLjkuMSA1LjYgMCAxLjcuMiAzLjMuNCA0LjhoLTkuN2MtLjItMi45LS40LTUuOC0uNC04LjdoLS4yYy0yLjQgMy43LTUuMyA2LjMtOC42IDcuOS0zLjMgMS41LTcuMSAyLjMtMTEuNSAyLjNzLTUuMi0uNC03LjYtMS4xcS0zLjYtMS4wNS02LjMtMy4zYy0xLjgtMS41LTMuMi0zLjItNC4zLTUuNC0xLTIuMS0xLjYtNC42LTEuNi03LjRzLjgtNi44IDIuNS05LjNjMS42LTIuNSAzLjktNC41IDYuOC02LjFzNi4yLTIuNyAxMC0zLjQgNy45LTEgMTIuMy0xaDh2LTIuNGMwLTEuNS0uMy0yLjktLjgtNC4zLS42LTEuNS0xLjQtMi44LTIuNS0zLjktMS4xLTEuMi0yLjUtMi4xLTQuMi0yLjhzLTMuNy0xLTYtMS0zLjkuMi01LjUuNi0zIC45LTQuMyAxLjUtMi41IDEuMy0zLjUgMi4xLTIuMSAxLjYtMyAyLjNsLTYuNS02LjhabTMwLjcgMjIuOGMtMi42IDAtNS4yLjEtNy45LjRzLTUuMi44LTcuNCAxLjYtNCAxLjktNS40IDMuNC0yLjEgMy4zLTIuMSA1LjZjMCAzLjMgMS4xIDUuNyAzLjMgNy4xIDIuMiAxLjUgNS4yIDIuMiA5IDIuMnM1LjUtLjUgNy42LTEuNXEzLjE1LTEuNSA1LjEtMy45YzEuMy0xLjYgMi4yLTMuNCAyLjgtNS40cy44LTMuOS44LTUuOXYtMy42ek00NzMuOCAzNS41aDI5LjlxOSAwIDE1LjkgMi4xYzQuNiAxLjQgOC41IDMuMiAxMS44IDUuNXM2LjEgNC45IDguMyA3LjkgNCA2IDUuMyA5LjJjMS4zIDMuMSAyLjIgNi4zIDIuOCA5LjRzLjggNiAuOCA4LjdxMCA4LjI1LTMgMTUuOWMtMiA1LjEtNSA5LjctOC45IDEzLjctNCA0LTguOCA3LjItMTQuNyA5LjYtNS44IDIuNC0xMi42IDMuNi0yMC4zIDMuNmgtMjcuOXptMTEuNiA3NC42SDUwMGM0LjkgMCA5LjYtLjcgMTQtMnM4LjItMy4zIDExLjUtNiA1LjktNiA3LjktMTBjMS45LTQgMi45LTguNiAyLjktMTRzLS40LTUuOS0xLjMtOS42LTIuNi03LjEtNS0xMC41cS0zLjc1LTQuOTUtMTAuMi04LjRjLTQuMy0yLjMtMTAtMy40LTE2LjktMy40aC0xNy40VjExMFpNNTYxLjYgMzUuNWgyOS43YzMuNyAwIDcuMi40IDEwLjMgMS4zIDMuMi45IDUuOSAyLjIgOC4yIDMuOXEzLjQ1IDIuNTUgNS40IDYuNmMxLjMgMi43IDIgNS45IDIgOS41cy0xLjQgOC45LTQuMSAxMi02LjMgNS40LTEwLjYgNi44di4yYzIuNi4yIDUgLjggNy4zIDJzNC4yIDIuNyA1LjkgNC42YzEuNiAxLjkgMyA0LjEgMy45IDYuNnExLjUgMy43NSAxLjUgOC4xYzAgNC4zNS0uOCA3LjMtMi40IDEwLjJzLTMuNyA1LjQtNi41IDcuNGMtMi43IDItNS45IDMuNS05LjUgNC42LTMuNiAxLTcuNSAxLjYtMTEuNyAxLjZoLTI5LjR6TTU3My4yIDcxSDU4OWMyLjIgMCA0LjItLjIgNi4yLS43IDEuOS0uNCAzLjYtMS4yIDUuMS0yLjJzMi42LTIuNCAzLjQtNCAxLjMtMy42IDEuMy01LjljMC0zLjQtMS4xLTYuMy0zLjMtOC44cy01LjYtMy43LTEwLjMtMy43aC0xOC4zdjI1LjRabTAgMzkuOWgxN2MxLjggMCAzLjctLjIgNS45LS41IDIuMS0uNCA0LjEtMS4xIDYtMi4yczMuNC0yLjYgNC43LTQuNGMxLjMtMS45IDEuOS00LjMgMS45LTcuNCAwLTUuMS0xLjctOC45LTUtMTEuNHMtNy44LTMuOC0xMy40LTMuOGgtMTcuMnYyOS43WiIgY2xhc3M9ImNscy0xIi8+PHBhdGggZD0iTTg2LjMgNC4yQzUzLjQgNC4yIDMwLjQgMjQuNyAzMC40IDU0czQuOSAzNC44IDkuMSA1NS44YzMgMTUuMSA1LjYgMjcuMyA1LjcgMjcuNi44IDMuNyA0LjQgNi4xIDguMiA1LjVoLjhjMC0uMS0uNi0uNy0uNi0uNy0xLjEtMS4xLTEuOC0yLjQtMi4zLTMuOC0uMi0uOC0uMy0xLjUtLjQtMi4xIDAtLjMgMC0uNi0uMS0uOWwtMS41LTguOWMtLjYtNC0xLjMtOC0xLjgtMTEuOCAwLS4zLjEtLjUuNC0uNXMuNS4xLjUuNHExLjIgNS43IDIuNCAxMS43bDEuNyA4LjhjMCAuMy4xLjYuMi45LjEuNy4zIDEuNC40IDIgLjUgMS41IDEuNSAyLjggMi44IDMuOC4xLjEuMy4yLjQuMy44LjQgMS42LjcgMi41LjkuOS4xIDEuOC4xIDIuNiAwIC45LS4yIDEuOS0uNiAyLjctMS4ybC4zLS4yLS4yLS4zYy0uNy0uOS0xLjEtMS45LTEuNC0zLS4yLS44LS4zLTEuNS0uMy0yLjJ2LS45bC0uOS04LjljLS40LTQuMS0uNy04LjEtMS0xMS45IDAtLjEgMC0uMi4xLS4zIDAgMCAuMi0uMi4zLS4yLjMgMCAuNS4yLjUuNC41IDMuOCAxLjEgNy44IDEuNiAxMS44bDEuMSA4LjljMCAuMyAwIC41LjEuOCAwIC43LjIgMS40LjMgMiAuMi43LjQgMS4zLjggMS45LjUuOSAxLjIgMS42IDIgMi4yIDAgMCAwIC4xLjEuMSAxLjQgMSAzLjMgMS40IDUgMS4xczMuMy0xLjIgNC41LTIuNWMuMy0uMy41LS43LjctMS4xdi0uNGMtLjEtLjQtLjItLjgtLjQtMS4yLS4xLS42LS4yLTEuNC0uMi0yLjN2LTQuNGMtLjItNS42LS4yLTExLjMtLjItMTcuNiAwLS4zLjItLjUuNS0uNXMuNS4yLjUuNGMuNCA2LjMuNyAxMiAuOSAxNy42bC4yIDQuNGMwIC44IDAgMS40LjIgMiAuMS41LjMgMS4yLjcgMS44di4xYzEuMiAyLjIgMy42IDMuNyA2LjEgMy43aC4xYzIuNSAwIDUtMS40IDYuMy0zLjcuMy0uNS41LTEuMS43LTEuOC4xLS42LjItMS4yLjItMS45bC4yLTQuNWMuMi01LjMuNS0xMSAuOS0xNy42IDAtLjMuMi0uNS41LS40LjIgMCAuNC4yLjQuNSAwIDYuNiAwIDEyLjMtLjEgMTcuNnY0LjRjMCAuNiAwIDEuNS0uMyAyLjMgMCAuNC0uMi44LS4zIDEuMnYuNGMuMi40LjUuNy43IDEuMSAxLjEgMS40IDIuNyAyLjMgNC41IDIuNSAxLjcuMyAzLjYtLjEgNS0xLjFoLjFjLjgtLjYgMS41LTEuNCAyLTIuMi40LS42LjYtMS4yLjgtMS45LjEtLjYuMi0xLjMuMy0yIDAtLjMgMC0uNS4xLS44bDEuMS04LjljLjUtNCAxLjEtOCAxLjYtMTEuOCAwLS4xIDAtLjIuMi0uMy4xIDAgLjItLjEuMyAwIC4yIDAgLjQuMy40LjUtLjMgMy44LS43IDcuOC0xIDExLjlsLS45IDguOXYuOGMwIC43LS4xIDEuNC0uMyAyLjItLjMgMS4xLS43IDIuMS0xLjQgM2wtLjIuMy4zLjJjLjguNiAxLjggMSAyLjcgMS4yczEuNy4yIDIuNiAwYy45LS4xIDEuNy0uNCAyLjUtLjkuMiAwIC4zLS4yLjQtLjMgMS4zLS45IDIuMy0yLjMgMi44LTMuOC4yLS41LjMtMS4zLjQtMiAwLS4zLjEtLjYuMi0uOGwxLjctOC44Yy44LTQgMS42LTggMi40LTExLjcgMC0uMy4zLS40LjYtLjQuMiAwIC40LjMuNC41LS42IDMuOC0xLjIgNy44LTEuOCAxMS44bC0xLjUgOC45YzAgLjMtLjEuNi0uMS45LS4xLjctLjIgMS4zLS40IDIuMi0uNCAxLjQtMS4yIDIuNy0yLjMgMy44bC0uNS41LjcuMmMuNCAwIC44LjEgMS4yLjEgMy4zIDAgNi4zLTIuMyA3LTUuNiAwLS4zIDIuOC0xMi45IDUuOC0yOC41IDQuMS0yMC45IDktNDcgOS01NUMxNDIgMjUgMTE5IDQuNSA4Ni4xIDQuNVoiIHN0eWxlPSJmaWxsOiM1N2QxZTUiLz48cGF0aCBkPSJNMTMzLjEgMTA5LjdjLTMuMSAxNS43LTUuNyAyNy41LTUuNyAyNy43LS43IDMuMi0zLjcgNS40LTcgNS40aC0xLjZsLjMtLjRjMS4xLTEuMSAxLjktMi40IDIuMy0zLjguMi0uOC4zLTEuNS40LTIuMiAwLS40IDAtLjYuMS0uOWwxLjUtOC45Yy42LTQgMS4zLTggMS44LTExLjggMC0uMy0uMi0uNy0uNS0uN2gtLjVjLS4xIDAtLjMuMi0uMy40LS44IDMuNy0xLjYgNy43LTIuNCAxMS43bC0xLjcgOC44YzAgLjIgMCAuNC0uMS42di4zYy0uMi43LS4zIDEuNC0uNSAxLjktLjQgMS41LTEuNCAyLjgtMi43IDMuNy0uMSAwLS4zLjItLjQuMy0uNy40LTEuNS43LTIuNC44cy0xLjcuMS0yLjYgMGMtLjktLjItMS44LS42LTIuNi0xLjJoLS4yYzAtLjEuMS0uMy4xLS4zLjctMSAxLjEtMiAxLjQtMy4xLjItLjguMy0xLjUuMy0yLjN2LS44bC45LTguOWMuNC00LjEuNy04LjEgMS0xMS45IDAtLjMtLjItLjctLjYtLjctLjIgMC0uMyAwLS41LjEtLjEuMS0uMi4zLS4zLjQtLjUgMy44LTEuMSA3LjctMS42IDExLjhsLTEuMSA4LjljMCAuMyAwIC41LS4xLjggMCAuNy0uMiAxLjQtLjMgMi0uMi42LS40IDEuMi0uOCAxLjgtLjUuOC0xLjIgMS42LTIgMi4xIDAgMCAwIC4xLS4xLjEtMS40LjktMy4yIDEuMy00LjkgMS4xcy0zLjMtMS4xLTQuMy0yLjVjLS4zLS4zLS41LS43LS43LTF2LS4yYy4xLS40LjMtLjguNC0xLjIuMi0uOC4yLTEuOC4yLTIuNHYtNC40Yy4yLTUuMi4yLTEwLjkuMi0xNy42IDAtLjMtLjMtLjYtLjYtLjctLjQgMC0uNy4zLS43LjYtLjQgNi41LS43IDEyLjMtLjkgMTcuNmwtLjIgNC41YzAgLjcgMCAxLjMtLjIgMS45LS4yLjctLjQgMS4zLS43IDEuOC0xLjIgMi4yLTMuNiAzLjYtNiAzLjZIODZjLTIuNCAwLTQuOC0xLjQtNi0zLjZ2LS4xYy0uMy0uNi0uNS0xLjItLjctMS43LS4xLS42LS4yLTEuMi0uMi0ybC0uMi00LjRjLS4yLTUuNS0uNS0xMS4zLS45LTE3LjYgMC0uMy0uMy0uNi0uNy0uNnMtLjcuMy0uNy43YzAgNi4zIDAgMTIgLjEgMTcuNnY0LjRxMCAxLjUuMyAyLjRjLjEuNC4yLjkuNCAxLjJ2LjJjLS4yLjQtLjUuNy0uNyAxYTcuNiA3LjYgMCAwIDEtNC4zIDIuNWMtMS43LjMtMy41LS4xLTQuOS0xLjFoLS4xYy0uOC0uNi0xLjUtMS4zLTItMi4yLS4zLS42LS42LTEuMi0uOC0xLjgtLjEtLjUtLjItMS4yLS4zLTIgMC0uMyAwLS41LS4xLS44bC0xLjEtOC45Yy0uNS00LjEtMS4xLTguMS0xLjYtMTEuOCAwLS40LS4zLS42LS43LS42LS4yIDAtLjMgMC0uNC4yLS4xLjEtLjIuMy0uMi41LjMgMy44LjcgNy44IDEgMTEuOWwuOSA4Ljl2LjljMCAuNy4xIDEuNC4zIDIuMi4zIDEuMS43IDIuMSAxLjQgMy4xdi4yYy4xIDAgMCAuMSAwIC4xLS44LjYtMS43IDEtMi42IDEuMi0uOC4yLTEuNy4yLTIuNiAwcS0xLjM1LS4xNS0yLjQtLjljLS4xIDAtLjMtLjItLjQtLjMtMS4zLS45LTIuMy0yLjItMi43LTMuNy0uMi0uNS0uMy0xLjItLjQtMS45IDAtLjQtLjEtLjctLjItLjlsLTEuNy04LjhjLS44LTQtMS42LTgtMi40LTExLjcgMC0uMy0uNC0uNi0uNy0uNS0uNCAwLS42LjQtLjYuNy42IDMuOCAxLjIgNy44IDEuOCAxMS44bDEuNSA4LjljMCAuMyAwIC41LjEuOC4xLjguMiAxLjUuNCAyLjMuNCAxLjQgMS4yIDIuNyAyLjMgMy44bC4zLjNoLS40Yy0zLjcuNy03LjItMS43LTgtNS4zLS4zLTEuMy0zLTEzLjEtNS45LTI3LjZsNC4yIDI4YzAgLjIuMS41LjIuN3YuMmMuMS4yLjIuMy4zLjUgMCAwIDAgLjIuMS4zIDAgLjEuMS4yLjIuNCAwIC4xLjEuMi4yLjN2LjJsLjYuOWMuMS4yLjIuMy40LjUuMS4yLjMuMy40LjUgMS42IDEuNSAzLjcgMi4zIDUuOSAyLjNzMSAwIDEuNC0uMWwzLjItLjVjLjUuMiAxLjEuNCAxLjcuNCAxLjEuMiAyLjIuMSAzLjIgMCAxLjEtLjIgMi4zLS43IDMuMy0xLjVsLjgtLjZjLjIuMi41LjQuOC42bC4yLjJjMS43IDEuMSA0IDEuNiA2LjEgMS4zczQuMS0xLjQgNS40LTMuMWMuMi0uMy41LS42LjctLjkgMS41IDIuNSA0LjQgNC4xIDcuMyA0LjFoLjJjMi45IDAgNS43LTEuNiA3LjItNC4xLjIuMy40LjcuNy45IDEuMyAxLjcgMy4zIDIuOCA1LjQgMy4xaDEuM2MxLjcgMCAzLjQtLjUgNC44LTEuNCAwIDAgLjEgMCAuMi0uMS4zLS4yLjUtLjQuOC0uNmwuOC42cTEuNSAxLjA1IDMuMyAxLjVjMSAuMiAyLjEuMiAzLjIgMHExLjA1LS4xNSAyLjEtLjZsMi43LjdoLjFjLjUuMS45LjEgMS40LjEgNCAwIDcuNi0yLjkgOC41LTYuOCAwLS4xIDQuMi0yOCA0LjItMjhaIiBjbGFzcz0iY2xzLTQiLz48cGF0aCBkPSJNNDYuNCAxNy43Yy0xMC4xIDguOC0xNiAyMS40LTE2IDM2LjJzMTQuNSA4Mi44IDE0LjcgODMuNWMuMyAxLjUgMS40IDIuNiAyLjQgMy42LTMuNi0xNy40LTE1LjQtNzMuNS0xNS40LTg2LjZzNS4yLTI3LjIgMTQuMy0zNi43IiBzdHlsZT0iZmlsbDojOTNlMWVmIi8+PHBhdGggZD0iTTcxLjMgMjUuNkM1Ny45IDI1LjYgNDcgMzYuNSA0NyA0OS45czEwLjkgMjQuMyAyNC4zIDI0LjMgMjQuMy0xMC45IDI0LjMtMjQuMy0xMC45LTI0LjMtMjQuMy0yNC4zIiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNDQuNiA0OGMwIDEzLjQgMTAuOSAyNC4zIDI0LjMgMjQuM1M5My4yIDYxLjQgOTMuMiA0OCA4Mi4zIDIzLjcgNjguOSAyMy43IDQ0LjYgMzQuNiA0NC42IDQ4IiBjbGFzcz0iY2xzLTEiLz48cGF0aCBkPSJNNTMuOSA4Mi4zYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy0zIi8+PHBhdGggZD0iTTk4LjEgNzYuM2MtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJNNTMuNSA4MS4yYzE0LjggMi4yIDMwLjMtMS41IDQyLjUtMTAuMSAxLjctMS4xIDMuNCAxLjMgMS44IDIuNS02LjUgNC40LTEzLjggNy42LTIxLjQgOS4zcy0xNS42IDItMjMuMy44Yy0uNy0uMS0xLjItLjgtMS4xLTEuNXMuOC0xLjIgMS41LTEuMSIgY2xhc3M9ImNscy00Ii8+PHBhdGggZD0iTTk3LjcgNzUuMmMtLjQtMi0yLjItMy41LTQuMi0zLjYtMi4xLS4xLTEuOS0zLjIuMS0zLjEgMS43LjIgMy4yIDEuMSA0LjMgMi4zLjkuOSAzIDQuOS44IDUuMi0uNSAwLTEtLjMtMS4xLS44TTg1LjUgNDguM2MtLjQgMTAuMi03LjYgMTUuNi0xMi4zIDE0LjUtMy45LS45LTQuNC05LjYtMS45LTExLjkgMS42LTEuNSA0LjgtMS45IDQuOC0zcy0zLjEtMS43LTQuNi0zLjNjLTIuMy0yLjQtMS4yLTExIDIuOC0xMS43IDQuNy0uOCAxMS42IDUuMSAxMS4zIDE1LjMiIGNsYXNzPSJjbHMtNCIvPjwvZz48L3N2Zz4=)}.footer-links{margin-bottom:0!important;text-align:left}.footer-links__link{color:var(--text-color);font-size:12px;font-weight:500;letter-spacing:2.4px;margin-right:16px;text-transform:uppercase}.footer-actions{align-items:center;display:flex;gap:12px;justify-content:space-between}.footer-actions__link{color:var(--text-color);font-size:26px}.footer-bottom{color:var(--text-muted);display:flex;flex-wrap:wrap;font-size:12px;font-style:normal;font-weight:400;justify-content:center;letter-spacing:1.4px;line-height:23px;padding:20px 0 10px;text-align:center;text-transform:uppercase}@media screen and (max-width:510px){.footer-links{margin-bottom:20px}}@media screen and (min-width:1024px){.footer{padding:30px 0}.footer-group{padding:0}.footer-top{padding-bottom:30px}.footer-logo{margin:0;width:auto}.footer-links{padding:0 40px}.footer-links__link{font-size:14px;margin-right:28px}.footer-actions__link img{height:28px}.footer-bottom .footer-bottom__copyright,.footer-bottom .footer-bottom__last-updated,.footer-bottom .footer-bottom__version{padding:0 10px}.footer-bottom .footer-bottom__copyright{border-left:none}}.not-found{background-color:var(--navigation-bg);height:100%;overflow:hidden}.not-found__icon{display:block;margin:40px auto;max-width:300px}.not-found__text{text-align:center}.not-found__text h1{font-size:60px;line-height:1}.not-found__text p{margin:30px 0;width:100%}.not-found__button{text-transform:uppercase}.admonition{background-color:var(--body-bg);border-radius:4px;box-shadow:0 4px 4px rgba(0,0,0,.12);color:var(--text-muted);font-size:14px;line-height:20px;margin-bottom:30px;overflow:auto;padding:20px 20px 20px 52px;position:relative}.admonition:before{bottom:0;content:" ";left:0;position:absolute;right:0;top:0;z-index:-1}.admonition-title{color:var(--primary);display:flex;font-weight:700;left:-32px;position:relative}.admonition-title:before{background-image:none!important;content:"";font-size:24px;margin-right:8px;width:24px}.admonition p{margin-bottom:0!important}.admonition.tip{border:1px solid var(--success)}.admonition.tip:before{border-left:8px solid var(--success)}.admonition.tip .admonition-title{color:var(--success)!important}.admonition.note{border:1px solid var(--info)}.admonition.note:before{border-left:8px solid var(--info)}.admonition.note .admonition-title{color:var(--info)!important}.admonition.caution{border:1px solid var(--warning)}.admonition.caution:before{border-left:8px solid var(--warning)}.admonition.caution .admonition-title:before{content:""}.admonition.caution .admonition-title{color:var(--warning)!important}.admonition.warning{border:1px solid var(--danger)}.admonition.warning:before{border-left:8px solid var(--danger)}.admonition.warning .admonition-title:before{content:""}.admonition.warning .admonition-title{color:var(--danger)!important}.breadcrumbs{margin-bottom:0;text-transform:uppercase}.breadcrumbs .bread__item,.breadcrumbs .bread__item:not(.bread__item--last):after,.breadcrumbs a{color:var(--text-color);font-size:12px;font-weight:400;letter-spacing:1.5px;line-height:2;margin:0;padding:0}.breadcrumbs .bread__item:before{display:none}.breadcrumbs .bread__item:not(.bread__item--last):after{content:"/";margin:0 5px;opacity:1;position:relative}.breadcrumbs .bread__highlight{color:var(--link-color)}.breadcrumbs .bread__highlight:hover{font-weight:700;text-decoration:none}code{background-color:var(--well-bg);border:none;border-radius:4px;font-size:14px}code,code.download{color:var(--code-color)}code.download{background:none}.highlight{background:transparent!important}.highlight pre{background-color:var(--well-bg);border-radius:8px;color:var(--code-color);font-size:14px;line-height:26px;margin-bottom:30px;overflow:auto;padding:16px}.highlight a.copybtn{right:1em;top:1em}.highlighttable{background-color:var(--well-bg);border-radius:16px;box-shadow:none}.highlighttable tbody{background-color:transparent;border:0}.highlighttable tbody td{padding:15px!important}.highlighttable tbody tr{border-top:none}.highlighttable .linenos{background-color:var(--well-bg);color:var(--line-number);width:50px}.highlighttable .linenos span{line-height:26px}.highlighttable .highlight pre{background-color:transparent;margin:0;padding:0}.highlighttable .highlight a.copybtn{right:.2em;top:.2em}.copybtn{background-color:var(--card-bg)!important}.hide-copy-button .copybtn{display:none}.sphinx_collapse__label{color:var(--text-color);display:flex!important;flex-direction:row-reverse;font-size:medium;font-weight:700;justify-content:flex-end;margin-left:0!important}.sphinx_collapse__icon{border-top-color:var(--text-color)!important;margin-left:5px;margin-right:0}.sphinx_collapse__input:checked~.sphinx_collapse__label,.sphinx_collapse__label:hover{color:var(--link-color)}.sphinx_collapse__input:checked~.sphinx_collapse__label .sphinx_collapse__icon,.sphinx_collapse__label:hover .sphinx_collapse__icon{border-top-color:var(--link-color)!important}.sphinx_collapse__content{margin-top:10px}.contribute{margin:0 0 20px}.contribute__item{font-size:14px;list-style:none;padding-bottom:10px}.contribute__item a{align-items:center;display:flex}.contribute__item i{font-size:1.2em;line-height:1em;margin-right:5px}.content-navigation{display:flex;justify-content:space-between;margin-top:40px}.navigation{max-width:50%;word-break:break-word}.navigation,.navigation__link{display:flex}.navigation__title{color:var(--text-color);font-size:12px;font-weight:500;letter-spacing:1.5px;line-height:24px;text-transform:uppercase;word-wrap:break-word}.navigation__title .colored{color:var(--primary)}.navigation__button{background:var(--white);background-color:var(--card-bg);border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;display:none;font-size:0;height:fit-content;overflow:hidden;padding:8px}.navigation__button i{font-size:26px}.navigation--prev .navigation__title{margin-left:15px}.navigation--next .navigation__title{margin-right:15px;text-align:right}@media screen and (min-width:1200px){.navigation__title{display:inline-block}.navigation__button{display:block}.navigation--next .navigation__title{text-align:left}}.scylla-dropdown--versions .scylla-dropdown__item{background:var(--card-bg);border-radius:8px;box-shadow:0 28px 32px rgba(0,0,0,.06);width:100%}.scylla-dropdown--versions .scylla-dropdown__title{align-items:center;display:flex;justify-content:space-between}.scylla-dropdown--versions .scylla-dropdown__title .chevron{min-height:12px;transform:rotate(90deg);width:8px}@media screen and (min-width:1024px){.scylla-dropdown--versions .scylla-dropdown__item{box-shadow:none}}.feedback-container{font-size:16px;margin-top:40px;text-align:left}.feedback-container__title{font-weight:700;margin-bottom:5px!important}.feedback-container__button{background:var(--white);background-color:var(--card-bg)!important;border:0;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);cursor:pointer;margin:4px;overflow:hidden;padding:8px}.feedback-container__button.active{border-color:var(--primary)}.feedback-container__icon{font-size:22px}.feedback-container__message{font-size:16px;margin-top:10px}.hero{background:var(--navigation-bg);margin-bottom:30px;overflow:hidden;padding:30px 16px;text-align:left}.hero__title{font-size:28px;font-weight:500;line-height:38px;margin-bottom:14px;max-width:229px}.hero__text{font-size:16px;line-height:26px;max-width:343px}.hero__text a{border-bottom:1px dotted var(--text-color);color:var(--text-color)}.hero__text p{margin-bottom:0!important}.hero__img{position:absolute;right:-18px;top:20px}.hero__img img{margin-bottom:0!important;width:124px}.hero__button{margin-top:20px;text-transform:uppercase}.hero__button--bold{border-width:2px;font-weight:700}.hero__button .admonition-title:before,.hero__button .icon,.hero__button .search-box:before,.hero__button .secondary-side-nav__content li a:before,.hero__button .side-nav__content .scylla-icon--expand,.secondary-side-nav__content li .hero__button a:before,.side-nav__content .hero__button .scylla-icon--expand{margin-right:5px}.hero__button .icon--right{margin-left:5px;margin-right:0}.hero__button .icon--link,.hero__cta{color:var(--link-color)}.hero__search-box{box-shadow:0 4px 25px rgba(0,0,0,.02);margin-top:20px}.hero-wrapper{align-items:center;display:flex;justify-content:space-between;margin:0 auto;position:relative}@media screen and (min-width:640px){.hero{padding:60px 16px}.hero__title{font-size:32px;line-height:42px;max-width:482px}.hero__text{font-size:18px;line-height:26px;max-width:482px}.hero__img{display:block;position:static}.hero__img img{height:100%;width:295px}.hero .hero-wrapper{flex-direction:row-reverse}.hero .landing--floating .hero{padding:30px 16px 100px}}@media screen and (min-width:1024px){.hero{padding:60px}}.label{background-color:var(--navigation-bg);border:0;border-radius:4px;color:var(--white);font-size:inherit}.label--default{color:var(--text-color)}.label--note{background-color:var(--info)}.label--tip{background-color:var(--success)}.label--caution{background-color:var(--warning)}.label--warning{background-color:var(--danger)}.last-updated{color:var(--link);font-size:12px;letter-spacing:1.5px;margin:10px 0;text-transform:uppercase}.last-updated__icon{font-size:14px}@media screen and (min-width:1024px){.last-updated{float:right;margin:0}}.panel{border:0;border-radius:4px;margin-bottom:30px}.promo-banner{background-color:var(--header-border);background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDQwIiBoZWlnaHQ9IjcwIiBmaWxsPSJub25lIj48bWFzayBpZD0iYSIgd2lkdGg9IjE0NDAiIGhlaWdodD0iNzAiIHg9IjAiIHk9IjAiIG1hc2stdHlwZT0iYWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9IiM0NDU4YTMiIGQ9Ik0wIDBoMTQ0MHY3MEgweiIvPjwvbWFzaz48ZyBmaWxsPSIjNTA2NGFlIiBtYXNrPSJ1cmwoI2EpIj48cGF0aCBkPSJNLTE5MyAyMDEuODg0IDEuNS0xMzUgMzU3LjQzNiA3MC41bC0xOTQuNSAzMzYuODg0ek0xMDkyLjkyLTM4LjAwOSA5NzIuODAzLTI0Ni4wNTcgNDAyLjk5NiA4Mi45MiA1MjMuMTEzIDI5MC45N3oiLz48cGF0aCBkPSJtMTAzOC0zOC4wMDkgMTIwLjExNy0yMDguMDQ5IDU2OS44MDcgMzI4Ljk3OS0xMjAuMTE3IDIwOC4wNDl6Ii8+PC9nPjwvc3ZnPg==);background-position:50%;background-repeat:no-repeat;background-size:cover;display:none;overflow:hidden;position:fixed;top:0;width:100%;z-index:900}.promo-banner__icon{margin-right:15px}.promo-banner__icon img{height:40px}.promo-banner__title{color:var(--white);font-size:12px;line-height:16px;margin-right:15px}.promo-banner__button{background:var(--white);border-radius:4px;color:var(--black);font-size:12px;min-width:max-content;padding:5px}.promo-banner__close{display:none;position:absolute;right:16px;top:16px}.promo-banner__close i{color:var(--white);font-size:34px;height:34px;width:34px}.promo-banner__close:hover{cursor:pointer;filter:opacity(.8)}.promo-banner-wrapper{align-items:center;display:flex;justify-content:center;padding:5.85px 20px}@media(min-width:1024px){.promo-banner__title{font-size:18px;line-height:23px}.promo-banner__button{font-size:14px;padding:8.5px}.promo-banner__close{display:block}.promo-banner-wrapper{flex-direction:unset;padding:16px}}.custom-scroll-bar::-webkit-scrollbar{background-color:transparent;width:5px}.custom-scroll-bar::-webkit-scrollbar-thumb{background-color:var(--scollbar-bg);-webkit-border-radius:8px;border-radius:8px}.search-box{align-items:center;background:var(--well-bg);border-radius:4px;display:flex;flex-grow:1;padding:10px 15px}.search-box--hero{background-color:var(--well-bg);padding:12px 14px}.search-box:before{background-repeat:no-repeat;background-size:contain;content:"";display:inline-block;font-size:24px;margin-right:8px;min-height:18px;min-width:18px;vertical-align:middle;width:20px}.search-box .er-dummy-search,.search-box .er-dummy-search-box,.search-box .er-search-form,.search-box ci-search,.search-box input{margin:0!important;width:100%!important}.search-box input{background:transparent!important;color:var(--text-color)!important;font-size:14px!important;padding:0!important}.search-box input::placeholder{color:var(--text-muted)!important;opacity:1!important}.search-box button{display:none!important}.er_search_suggestions{background-color:var(--card-bg)!important;border:0!important;border-radius:var(--border-radius);box-shadow:0 4px 25px rgba(0,0,0,.15)!important;color:var(--text-muted)}.er_search_suggestions strong{color:var(--text-color)}.er_search_suggestions .er-cse-suggest-query{border-bottom:1px solid var(--border-color);padding:8px 20px!important}.er_search_suggestions .er-search-result-box{border-bottom:1px solid var(--border-color)!important;padding:0!important}.er_search_suggestions .er-search-result-box .text-container{padding:0!important}.er_search_suggestions .er-search-result-box .text-container>a{display:block;padding:12px 20px}.er_search_suggestions .er-search-result-box .er_highlight{border-bottom:1px solid var(--primary)!important;color:var(--text-emphasis)!important}.er_search_suggestions .er-search-result-box .title{color:var(--text-color)!important}.er_search_suggestions .er-search-result-box .text{color:var(--text-muted)!important}.er_search_suggestions .er-search-result-box:hover{background:var(--well-bg)!important}.er_search_suggestions .er_more_result_btn{color:var(--link-color)!important;cursor:pointer}.er_search_suggestions h3{font-size:16px!important}.er-search-content{background-color:var(--bg-color)!important;padding:32px!important}.er_search_results_count{border-bottom:1px solid var(--border-color)!important;color:var(--text-color)!important}.er-cse-shimmer .er-shimmer,.er-ecom-shimmer .er-shimmer{background-color:var(--well-bg)!important;background-image:linear-gradient(to right,var(--well-bg) 0,var(--card-bg) 20%,var(--well-bg) 40%,var(--well-bg) 0)!important}#er_search_results h3.heading{color:var(--text-color)!important}#er_search_results .er-search-result-box{border-bottom:var(--border-color);color:var(--text-muted);display:block!important;margin:10px auto 0!important;width:100%!important}#er_search_results .er-search-result-box .er_highlight{border-bottom:1px solid var(--primary)!important;color:var(--text-emphasis)!important}#er_search_results .er-search-result-box .title a,#er_search_results .er-search-result-box .url a{color:var(--link-color)!important}#er_search_results .er-search-result-box .text{color:var(--text-muted)!important}#er_search_results .er-search-result-box .text,#er_search_results .er-search-result-box .title a,#er_search_results .er-search-result-box .url a{max-width:100%!important}#search-result-input-form{box-shadow:0 4px 25px rgba(0,0,0,.15)!important;max-width:800px!important}#er_search_button{background-color:var(--card-bg)!important;color:var(--primary)!important;text-align:center}#er_search_input{background-color:var(--well-bg)!important;color:var(--text-color)!important;margin:0!important}#er_search_input::placeholder{color:var(--text-muted)!important;opacity:.5!important}#er_clear_input{color:var(--text-color)!important;right:0!important;top:0!important}.er_gcs_facet_ul::-webkit-scrollbar{background-color:transparent;width:5px}.er_gcs_facet_ul::-webkit-scrollbar-thumb{background-color:var(--scollbar-bg);-webkit-border-radius:8px;border-radius:8px}.er-facet-header{background-color:transparent!important;border:0!important;color:var(--text-color)!important;padding:0 0 8px!important}.er-facet-val{padding:5px 2px!important}.er-facet-val input{display:block!important;margin:0}.er-facet-val label{color:var(--text-color)!important}#er_search_pagination{margin-top:20px!important}#er_search_pagination li.er-paginator-list{color:var(--text-color)!important}#er_search_pagination li.er-paginator-list.er-active{border-bottom:0!important;font-weight:700}.er-suggestion-sm .er_search_input_dummy{margin:0!important}.er-suggestion-sm .er_search_button_dummy{border:0!important}#er_gcs_mobile_model_container .er-facet-values .er-facet-val{align-items:baseline}@media screen and (min-width:640px){.er-facets{display:none;max-width:300px!important;min-width:auto!important;width:auto!important}}@media screen and (min-width:1024px){.er-suggestions{left:15px!important}}@media screen and (min-width:1200px){.er-facets{display:block;position:fixed!important}.er-facet-count{display:none}}.sphinx-tabs{margin-bottom:30px}.sphinx-tabs-tab{border-bottom:1px solid var(--text-muted);color:var(--text-muted);cursor:pointer;font-size:14px;font-weight:500;line-height:13px;padding:20px 25px}.sphinx-tabs-tab[aria-selected=true]{border-bottom:2px solid var(--link-color);color:var(--link-color);padding-bottom:19px}.sphinx-tabs-panel{margin:30px 0}.table-wrapper{border:1px solid var(--border-color);border-radius:4px;box-shadow:1px 1px 2px rgba(0,0,0,.25);display:block;margin-bottom:30px;max-width:100%;overflow-x:auto;scrollbar-color:var(--border-color)}table{color:var(--text-color);font-size:14px;line-height:24px;margin:0;overflow:hidden}table p{margin:0!important}table caption{border-bottom:1px solid var(--border-color);color:var(--text-emphasis);padding:10px 25px}table caption,table thead{background:var(--navigation-bg)}table thead{border:0;border-bottom:1px solid var(--border-color)}table thead th{color:var(--text-emphasis);font-size:14px;font-weight:700}table td,table thead th{padding:20px 25px}table tbody{background:transparent;border:1px solid var(--border-color)}table tbody tr{background-color:transparent!important;border-top:1px solid var(--border-color);line-height:18px}table:not(.highlighttable) tbody tr:first-child{border-top:1px solid var(--header-border)}table.thead-border thead .row-odd th{color:var(--text-emphasis)}table.thead-border thead .row-even th{font-weight:400}table.thead-border thead th{border:1px solid var(--border-color)}table.thead-border thead tr:first-child th{border-top:none}table.thead-border thead tr:last-child th{border-bottom:none}table.thead-border thead tr th:first-child{border-left:none}table.thead-border thead tr th:last-child{border-right:none}.topics-grid{display:block;margin:0 auto 30px}.topics-grid__title{color:var(--text-emphasis);font-size:24px;font-weight:700;line-height:32px;margin-bottom:6px}.topics-grid__text{color:var(--text-color);font-size:18px;line-height:24px}.topics-grid--scrollable .hs{display:grid;grid-auto-flow:column;overflow-x:scroll;padding:20px 10px;-ms-overflow-style:none;scrollbar-width:none}.topics-grid--scrollable .hs::-webkit-scrollbar{display:none}.topics-grid--scrollable .hs .topic-box:last-child:after{content:"";width:20px}.topic-box{align-items:stretch;display:flex}.topic-box .card{background:var(--white);background-color:var(--card-bg)!important;border:1px solid transparent;border:1px solid var(--card-bg);border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);color:var(--text-color);display:flex;flex-direction:column;font-size:18px;margin:0 auto 30px;overflow:hidden;padding:20px;position:relative}.topic-box .card:hover{border:1px solid var(--text-color)!important;color:var(--text-color);font-weight:400}.topic-box__title{color:var(--text-emphasis);font-size:16px;font-weight:700;line-height:24px;margin-bottom:0}.topic-box__title img{bottom:0;opacity:.3;position:absolute;right:0;top:0}.topic-box__body{color:var(--text-color);display:flex;flex-direction:column;flex-grow:1;max-width:80%}.topic-box__body .container{flex-grow:1;margin:0;padding:0}.topic-box__body .line-block,.topic-box__body p{font-size:16px;line-height:19px;margin-top:10px}.topic-box__anchor{color:var(--link-color);font-size:14px;font-weight:700;line-height:24px}.topic-box__icon{display:block;font-size:50px;margin-bottom:20px}.topic-box__icon i{min-height:50px;width:100%}.topic-box__icon img{bottom:-12px;display:none;height:140px;margin:0;opacity:.3;position:absolute;right:-5px}.topic-box--product .card{box-shadow:none;padding:20px;text-align:center}.topic-box--product .card .topic-box__title{color:var(--text-color);font-size:14px}.topic-box--product .card .topic-box__body{display:flex;flex-direction:column;max-width:100%}.topic-box--product .card .topic-box__body .line-block,.topic-box--product .card .topic-box__body p{font-size:12px}.topic-box--product .card .topic-box__icon img{display:inline-block;max-height:84px;opacity:1;position:static}.topic-box--product .card:hover{background:var(--white);background-color:var(--card-bg);border:0;border:1px solid var(--text-color)!important;border-radius:8px;box-shadow:0 4px 25px rgba(0,0,0,.15);overflow:hidden}@media screen and (max-width:1024px){.topics-grid--scrollable .topic-box{width:280px!important}.topic-box--product:nth-last-child(-n+2) .card{margin-bottom:0}}@media screen and (min-width:1024px){.topics-grid{margin-bottom:10px}.topics-grid__text{font-size:16px}.topics-grid--scrollable .hs{display:flex;overflow-x:initial;padding:0}.topics-grid--scrollable .hs .topic-box:last-child:after{display:none}.topic-box .card{margin-bottom:60px;padding:45px 30px}.topic-box__title{font-size:20px;line-height:32px}.topic-box__body .line-block,.topic-box__body p{font-size:18px;line-height:26px}.topic-box__anchor{font-size:20px;line-height:26px}.topic-box .topic-box__icon img{display:inline-block}.topic-box--product .card{padding:20px}.topic-box--product .card .topic-box__title{font-size:18px;line-height:24px}.topic-box--product .card .topic-box__body .line-block,.topic-box--product .card .topic-box__body p{font-size:14px}.topic-box--product .card .topic-box__icon img{max-height:111px}.landing .topics-grid--products{margin-bottom:40px}} \ No newline at end of file diff --git a/v1.14/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css b/v1.14/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css new file mode 100644 index 00000000000..eb19f698afc --- /dev/null +++ b/v1.14/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/v1.14/_static/design-tabs.js b/v1.14/_static/design-tabs.js new file mode 100644 index 00000000000..36b38cf0d91 --- /dev/null +++ b/v1.14/_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/v1.14/_static/doctools.js b/v1.14/_static/doctools.js new file mode 100644 index 00000000000..4d67807d17d --- /dev/null +++ b/v1.14/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/v1.14/_static/documentation_options.js b/v1.14/_static/documentation_options.js new file mode 100644 index 00000000000..7e4c114f212 --- /dev/null +++ b/v1.14/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/v1.14/_static/file.png b/v1.14/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/banner-background.svg b/v1.14/_static/img/banner-background.svg new file mode 100644 index 00000000000..f8520d5b3e4 --- /dev/null +++ b/v1.14/_static/img/banner-background.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/v1.14/_static/img/favicon-228x228.png b/v1.14/_static/img/favicon-228x228.png new file mode 100644 index 0000000000000000000000000000000000000000..f30770c7edd4c0c8356c8f3c2ce60d84c395f9c7 GIT binary patch literal 4428 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/favicon-32x32.png b/v1.14/_static/img/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..aae1708f26fc93bd9b9e40284a4376a0e41f0494 GIT binary patch literal 837 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10qB_7Q#1%+e>xNqCh5|_t zGKc_@HWu;D2~9wTV{o~HZ=q*yubpE$L=BMZ-Mcby)2Wc7w?a?d58i(@VAUay>RI6z zp9bwXA9nunvb2athiah++x|x-ey3NdwQMqSUB14g?3w9~1u}nE7wzJ(aG9FkUgPBu z6ej3@WxA~3GgE^*Tl)K|TjKs|Z)Cdr<*>n*^B1)*nukA7a!tSNY;NlRhGAyDLkLsc zJO0Zid*!AopSkuX_Qci$27bZcP52T%vRepWTH|2v_xQp66_fc3TK!uqXFXFdXK;*W zeQCNy_p_*(!bUxleBM}lFZPb#Y0Z06ZeL%0FyxifpM2x! zQqN^u6{NCv-t3)weP!vs5U*kz`#ro5=J2c&S|Sl0H+kph zNZmh2R*>;5!~2>T^>Z6najoJC6zvf^bnfks`okQmFWMgIcy6jLaxNFCHLCa0bqLSi z_>Bh`k*X!G5hW>!C8<`)MX5lF!N|bKP}jg**T5pgz|zXp(8|mdKI;Vst0JRQDYXATM literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/favicon.ico b/v1.14/_static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6c7484f082f4dd44edbb9bccb87391e6fae208cd GIT binary patch literal 1150 zcmaizJ4gdT5QZlxSl9#v>y$QvwH7&oCW;S4jJ6?-k|?nWYUP!_Km@f@I}tk2UcB zP3WLEc>CrgsM*uK0lkm-W{g6?k*kY z-PJfx5Bb=v1$rkh?<#*i$#1WDE|;D;pUrXkabMShGdc4^FT6TS3woWq2=n{f3uDa3 zrf^0+O&)XUVdoo*JkWzf4rML$v~a(sS=`VA@R7hEzm_k5@YQ!){bZBRet;;dPM!+w6lJ2q1FIruC9NrA9`V7aRz*U(m&lh)kE~p+#5RRoqRP% zNZy0Vh+nNcWU}HTFTM@@C-S|+!bjZP_qK*e=AnzIGK;CNXChlAmnm^D#X6!7=ZqzD literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/icons/icon-about-team.svg b/v1.14/_static/img/icons/icon-about-team.svg new file mode 100644 index 00000000000..5448c7f007b --- /dev/null +++ b/v1.14/_static/img/icons/icon-about-team.svg @@ -0,0 +1 @@ +icon-about-team diff --git a/v1.14/_static/img/icons/icon-about-us-m.svg b/v1.14/_static/img/icons/icon-about-us-m.svg new file mode 100644 index 00000000000..09107d9520a --- /dev/null +++ b/v1.14/_static/img/icons/icon-about-us-m.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.14/_static/img/icons/icon-about-us.svg b/v1.14/_static/img/icons/icon-about-us.svg new file mode 100644 index 00000000000..1b1fcc83e30 --- /dev/null +++ b/v1.14/_static/img/icons/icon-about-us.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.14/_static/img/icons/icon-alternator.svg b/v1.14/_static/img/icons/icon-alternator.svg new file mode 100644 index 00000000000..7c2b4ebae0d --- /dev/null +++ b/v1.14/_static/img/icons/icon-alternator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.14/_static/img/icons/icon-apps.svg b/v1.14/_static/img/icons/icon-apps.svg new file mode 100644 index 00000000000..7e93612026b --- /dev/null +++ b/v1.14/_static/img/icons/icon-apps.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-architecture.svg b/v1.14/_static/img/icons/icon-architecture.svg new file mode 100644 index 00000000000..67ebbc2f38c --- /dev/null +++ b/v1.14/_static/img/icons/icon-architecture.svg @@ -0,0 +1 @@ +icon-architecture diff --git a/v1.14/_static/img/icons/icon-benchmarks.svg b/v1.14/_static/img/icons/icon-benchmarks.svg new file mode 100644 index 00000000000..e1ce2c1d784 --- /dev/null +++ b/v1.14/_static/img/icons/icon-benchmarks.svg @@ -0,0 +1 @@ +icon-benchmarks diff --git a/v1.14/_static/img/icons/icon-blog.svg b/v1.14/_static/img/icons/icon-blog.svg new file mode 100644 index 00000000000..f4096cbf111 --- /dev/null +++ b/v1.14/_static/img/icons/icon-blog.svg @@ -0,0 +1 @@ +icon-blog2 diff --git a/v1.14/_static/img/icons/icon-careers.svg b/v1.14/_static/img/icons/icon-careers.svg new file mode 100644 index 00000000000..2a7c6ea0b74 --- /dev/null +++ b/v1.14/_static/img/icons/icon-careers.svg @@ -0,0 +1 @@ +icon-careers diff --git a/v1.14/_static/img/icons/icon-chevron-left.svg b/v1.14/_static/img/icons/icon-chevron-left.svg new file mode 100644 index 00000000000..3afa25c4812 --- /dev/null +++ b/v1.14/_static/img/icons/icon-chevron-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.14/_static/img/icons/icon-chevron-right.svg b/v1.14/_static/img/icons/icon-chevron-right.svg new file mode 100644 index 00000000000..44eb829cdcb --- /dev/null +++ b/v1.14/_static/img/icons/icon-chevron-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.14/_static/img/icons/icon-circe.svg b/v1.14/_static/img/icons/icon-circe.svg new file mode 100644 index 00000000000..875e4216707 --- /dev/null +++ b/v1.14/_static/img/icons/icon-circe.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-clock.svg b/v1.14/_static/img/icons/icon-clock.svg new file mode 100644 index 00000000000..8c924698089 --- /dev/null +++ b/v1.14/_static/img/icons/icon-clock.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-close.svg b/v1.14/_static/img/icons/icon-close.svg new file mode 100644 index 00000000000..d1162b73e73 --- /dev/null +++ b/v1.14/_static/img/icons/icon-close.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/v1.14/_static/img/icons/icon-cloud-docs.svg b/v1.14/_static/img/icons/icon-cloud-docs.svg new file mode 100644 index 00000000000..a9069bb6e5c --- /dev/null +++ b/v1.14/_static/img/icons/icon-cloud-docs.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-cloud.svg b/v1.14/_static/img/icons/icon-cloud.svg new file mode 100644 index 00000000000..cfb2318daef --- /dev/null +++ b/v1.14/_static/img/icons/icon-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.14/_static/img/icons/icon-comparison.svg b/v1.14/_static/img/icons/icon-comparison.svg new file mode 100644 index 00000000000..49d809a5df4 --- /dev/null +++ b/v1.14/_static/img/icons/icon-comparison.svg @@ -0,0 +1 @@ +icon-comparison diff --git a/v1.14/_static/img/icons/icon-contact-us.svg b/v1.14/_static/img/icons/icon-contact-us.svg new file mode 100644 index 00000000000..9df3145dd21 --- /dev/null +++ b/v1.14/_static/img/icons/icon-contact-us.svg @@ -0,0 +1 @@ +icon-contact-us diff --git a/v1.14/_static/img/icons/icon-developers-blog.svg b/v1.14/_static/img/icons/icon-developers-blog.svg new file mode 100644 index 00000000000..ee804197a0b --- /dev/null +++ b/v1.14/_static/img/icons/icon-developers-blog.svg @@ -0,0 +1 @@ +icon-developers-blog diff --git a/v1.14/_static/img/icons/icon-docs.svg b/v1.14/_static/img/icons/icon-docs.svg new file mode 100644 index 00000000000..5501492f3e0 --- /dev/null +++ b/v1.14/_static/img/icons/icon-docs.svg @@ -0,0 +1 @@ +icon-docs diff --git a/v1.14/_static/img/icons/icon-enterprise-m.svg b/v1.14/_static/img/icons/icon-enterprise-m.svg new file mode 100644 index 00000000000..97be900b501 --- /dev/null +++ b/v1.14/_static/img/icons/icon-enterprise-m.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/icons/icon-enterprise.svg b/v1.14/_static/img/icons/icon-enterprise.svg new file mode 100644 index 00000000000..ee1ac26283d --- /dev/null +++ b/v1.14/_static/img/icons/icon-enterprise.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.14/_static/img/icons/icon-events.svg b/v1.14/_static/img/icons/icon-events.svg new file mode 100644 index 00000000000..ba5f2118644 --- /dev/null +++ b/v1.14/_static/img/icons/icon-events.svg @@ -0,0 +1 @@ +icon-events diff --git a/v1.14/_static/img/icons/icon-exclamation.svg b/v1.14/_static/img/icons/icon-exclamation.svg new file mode 100644 index 00000000000..a7eb4b77a42 --- /dev/null +++ b/v1.14/_static/img/icons/icon-exclamation.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/v1.14/_static/img/icons/icon-expand.svg b/v1.14/_static/img/icons/icon-expand.svg new file mode 100644 index 00000000000..38065653675 --- /dev/null +++ b/v1.14/_static/img/icons/icon-expand.svg @@ -0,0 +1,50 @@ + + + + + + + + + diff --git a/v1.14/_static/img/icons/icon-forum.svg b/v1.14/_static/img/icons/icon-forum.svg new file mode 100644 index 00000000000..37a709f7a8f --- /dev/null +++ b/v1.14/_static/img/icons/icon-forum.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-getting-started.svg b/v1.14/_static/img/icons/icon-getting-started.svg new file mode 100644 index 00000000000..702500be409 --- /dev/null +++ b/v1.14/_static/img/icons/icon-getting-started.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-glossary.svg b/v1.14/_static/img/icons/icon-glossary.svg new file mode 100644 index 00000000000..e8329c2afee --- /dev/null +++ b/v1.14/_static/img/icons/icon-glossary.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-help.svg b/v1.14/_static/img/icons/icon-help.svg new file mode 100644 index 00000000000..51fddd80de7 --- /dev/null +++ b/v1.14/_static/img/icons/icon-help.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.14/_static/img/icons/icon-home.svg b/v1.14/_static/img/icons/icon-home.svg new file mode 100644 index 00000000000..f0b9c25419c --- /dev/null +++ b/v1.14/_static/img/icons/icon-home.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-infoworld.svg b/v1.14/_static/img/icons/icon-infoworld.svg new file mode 100644 index 00000000000..906e87279c2 --- /dev/null +++ b/v1.14/_static/img/icons/icon-infoworld.svg @@ -0,0 +1 @@ +icon-infoworld diff --git a/v1.14/_static/img/icons/icon-integrations.svg b/v1.14/_static/img/icons/icon-integrations.svg new file mode 100644 index 00000000000..1ef0920d49e --- /dev/null +++ b/v1.14/_static/img/icons/icon-integrations.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-knowledge-base.svg b/v1.14/_static/img/icons/icon-knowledge-base.svg new file mode 100644 index 00000000000..884451270d2 --- /dev/null +++ b/v1.14/_static/img/icons/icon-knowledge-base.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-less.svg b/v1.14/_static/img/icons/icon-less.svg new file mode 100644 index 00000000000..3094127decf --- /dev/null +++ b/v1.14/_static/img/icons/icon-less.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/v1.14/_static/img/icons/icon-live-test.svg b/v1.14/_static/img/icons/icon-live-test.svg new file mode 100644 index 00000000000..dcb5916c264 --- /dev/null +++ b/v1.14/_static/img/icons/icon-live-test.svg @@ -0,0 +1 @@ +icon-live-test diff --git a/v1.14/_static/img/icons/icon-mail-list.svg b/v1.14/_static/img/icons/icon-mail-list.svg new file mode 100644 index 00000000000..0e6192a352c --- /dev/null +++ b/v1.14/_static/img/icons/icon-mail-list.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-manager.svg b/v1.14/_static/img/icons/icon-manager.svg new file mode 100644 index 00000000000..02b4e425beb --- /dev/null +++ b/v1.14/_static/img/icons/icon-manager.svg @@ -0,0 +1 @@ +icon-manager diff --git a/v1.14/_static/img/icons/icon-memory-management.svg b/v1.14/_static/img/icons/icon-memory-management.svg new file mode 100644 index 00000000000..e34eb4504f7 --- /dev/null +++ b/v1.14/_static/img/icons/icon-memory-management.svg @@ -0,0 +1 @@ +icon-memory-management diff --git a/v1.14/_static/img/icons/icon-modeling.svg b/v1.14/_static/img/icons/icon-modeling.svg new file mode 100644 index 00000000000..97fa3a0e213 --- /dev/null +++ b/v1.14/_static/img/icons/icon-modeling.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-monitoring.svg b/v1.14/_static/img/icons/icon-monitoring.svg new file mode 100644 index 00000000000..80b3787f668 --- /dev/null +++ b/v1.14/_static/img/icons/icon-monitoring.svg @@ -0,0 +1 @@ +icon-monitoring diff --git a/v1.14/_static/img/icons/icon-networking.svg b/v1.14/_static/img/icons/icon-networking.svg new file mode 100644 index 00000000000..40a3fd5f6f1 --- /dev/null +++ b/v1.14/_static/img/icons/icon-networking.svg @@ -0,0 +1 @@ +icon-networking diff --git a/v1.14/_static/img/icons/icon-news.svg b/v1.14/_static/img/icons/icon-news.svg new file mode 100644 index 00000000000..a952b59937d --- /dev/null +++ b/v1.14/_static/img/icons/icon-news.svg @@ -0,0 +1 @@ +icon-news diff --git a/v1.14/_static/img/icons/icon-newsletter.svg b/v1.14/_static/img/icons/icon-newsletter.svg new file mode 100644 index 00000000000..5b8d47eb157 --- /dev/null +++ b/v1.14/_static/img/icons/icon-newsletter.svg @@ -0,0 +1 @@ +icon-newsletter diff --git a/v1.14/_static/img/icons/icon-nsql-guides.svg b/v1.14/_static/img/icons/icon-nsql-guides.svg new file mode 100644 index 00000000000..60ebab37953 --- /dev/null +++ b/v1.14/_static/img/icons/icon-nsql-guides.svg @@ -0,0 +1 @@ +icon-nsql-guides diff --git a/v1.14/_static/img/icons/icon-open-source.svg b/v1.14/_static/img/icons/icon-open-source.svg new file mode 100644 index 00000000000..98c2ea7d5bf --- /dev/null +++ b/v1.14/_static/img/icons/icon-open-source.svg @@ -0,0 +1 @@ +icon-open-source diff --git a/v1.14/_static/img/icons/icon-operator.svg b/v1.14/_static/img/icons/icon-operator.svg new file mode 100644 index 00000000000..bb7d8d3ea86 --- /dev/null +++ b/v1.14/_static/img/icons/icon-operator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.14/_static/img/icons/icon-overview.svg b/v1.14/_static/img/icons/icon-overview.svg new file mode 100644 index 00000000000..515c1528a2a --- /dev/null +++ b/v1.14/_static/img/icons/icon-overview.svg @@ -0,0 +1 @@ +icon-overview diff --git a/v1.14/_static/img/icons/icon-partners.svg b/v1.14/_static/img/icons/icon-partners.svg new file mode 100644 index 00000000000..d0146fc4972 --- /dev/null +++ b/v1.14/_static/img/icons/icon-partners.svg @@ -0,0 +1 @@ +icon-partners diff --git a/v1.14/_static/img/icons/icon-plus.svg b/v1.14/_static/img/icons/icon-plus.svg new file mode 100644 index 00000000000..5757435085a --- /dev/null +++ b/v1.14/_static/img/icons/icon-plus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/v1.14/_static/img/icons/icon-pricing.svg b/v1.14/_static/img/icons/icon-pricing.svg new file mode 100644 index 00000000000..74b01db1684 --- /dev/null +++ b/v1.14/_static/img/icons/icon-pricing.svg @@ -0,0 +1 @@ +icon-pricing$ diff --git a/v1.14/_static/img/icons/icon-release-notes.svg b/v1.14/_static/img/icons/icon-release-notes.svg new file mode 100644 index 00000000000..80c490c7b01 --- /dev/null +++ b/v1.14/_static/img/icons/icon-release-notes.svg @@ -0,0 +1 @@ +icon-release-notes diff --git a/v1.14/_static/img/icons/icon-resource-center.svg b/v1.14/_static/img/icons/icon-resource-center.svg new file mode 100644 index 00000000000..6e3ab08e792 --- /dev/null +++ b/v1.14/_static/img/icons/icon-resource-center.svg @@ -0,0 +1 @@ +icon-ressource-center diff --git a/v1.14/_static/img/icons/icon-roadmap.svg b/v1.14/_static/img/icons/icon-roadmap.svg new file mode 100644 index 00000000000..c8cbf67c8cf --- /dev/null +++ b/v1.14/_static/img/icons/icon-roadmap.svg @@ -0,0 +1 @@ +icon-roadmap-4 diff --git a/v1.14/_static/img/icons/icon-search.svg b/v1.14/_static/img/icons/icon-search.svg new file mode 100644 index 00000000000..81aae93eef6 --- /dev/null +++ b/v1.14/_static/img/icons/icon-search.svg @@ -0,0 +1,4 @@ + + + + diff --git a/v1.14/_static/img/icons/icon-slack.svg b/v1.14/_static/img/icons/icon-slack.svg new file mode 100644 index 00000000000..fc164ea1e77 --- /dev/null +++ b/v1.14/_static/img/icons/icon-slack.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-stack-overflow.svg b/v1.14/_static/img/icons/icon-stack-overflow.svg new file mode 100644 index 00000000000..bebe9b82742 --- /dev/null +++ b/v1.14/_static/img/icons/icon-stack-overflow.svg @@ -0,0 +1,4 @@ + + + + diff --git a/v1.14/_static/img/icons/icon-summit.svg b/v1.14/_static/img/icons/icon-summit.svg new file mode 100644 index 00000000000..4b900bd0c0a --- /dev/null +++ b/v1.14/_static/img/icons/icon-summit.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/icons/icon-support.svg b/v1.14/_static/img/icons/icon-support.svg new file mode 100644 index 00000000000..a4228b34e86 --- /dev/null +++ b/v1.14/_static/img/icons/icon-support.svg @@ -0,0 +1 @@ +icon-support diff --git a/v1.14/_static/img/icons/icon-tech-talks.svg b/v1.14/_static/img/icons/icon-tech-talks.svg new file mode 100644 index 00000000000..df42b5522ba --- /dev/null +++ b/v1.14/_static/img/icons/icon-tech-talks.svg @@ -0,0 +1 @@ +icon-tech-talks diff --git a/v1.14/_static/img/icons/icon-testing.svg b/v1.14/_static/img/icons/icon-testing.svg new file mode 100644 index 00000000000..2fe54efdbc3 --- /dev/null +++ b/v1.14/_static/img/icons/icon-testing.svg @@ -0,0 +1 @@ +icon-testing diff --git a/v1.14/_static/img/icons/icon-thumbs-down.svg b/v1.14/_static/img/icons/icon-thumbs-down.svg new file mode 100644 index 00000000000..3e7bcd6d905 --- /dev/null +++ b/v1.14/_static/img/icons/icon-thumbs-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.14/_static/img/icons/icon-thumbs-up.svg b/v1.14/_static/img/icons/icon-thumbs-up.svg new file mode 100644 index 00000000000..226c44d853c --- /dev/null +++ b/v1.14/_static/img/icons/icon-thumbs-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.14/_static/img/icons/icon-tip.svg b/v1.14/_static/img/icons/icon-tip.svg new file mode 100644 index 00000000000..bf7aa6af840 --- /dev/null +++ b/v1.14/_static/img/icons/icon-tip.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/v1.14/_static/img/icons/icon-training.svg b/v1.14/_static/img/icons/icon-training.svg new file mode 100644 index 00000000000..08b95a88eda --- /dev/null +++ b/v1.14/_static/img/icons/icon-training.svg @@ -0,0 +1 @@ +icon-training diff --git a/v1.14/_static/img/icons/icon-triangle-down.svg b/v1.14/_static/img/icons/icon-triangle-down.svg new file mode 100644 index 00000000000..e8ae088106f --- /dev/null +++ b/v1.14/_static/img/icons/icon-triangle-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.14/_static/img/icons/icon-university.svg b/v1.14/_static/img/icons/icon-university.svg new file mode 100644 index 00000000000..f7547ab9599 --- /dev/null +++ b/v1.14/_static/img/icons/icon-university.svg @@ -0,0 +1 @@ +icon-university diff --git a/v1.14/_static/img/icons/icon-users-blog.svg b/v1.14/_static/img/icons/icon-users-blog.svg new file mode 100644 index 00000000000..47e56cddcf7 --- /dev/null +++ b/v1.14/_static/img/icons/icon-users-blog.svg @@ -0,0 +1 @@ +icon-users-blog diff --git a/v1.14/_static/img/icons/icon-warning.svg b/v1.14/_static/img/icons/icon-warning.svg new file mode 100644 index 00000000000..e4b1d40331b --- /dev/null +++ b/v1.14/_static/img/icons/icon-warning.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/v1.14/_static/img/icons/icon-webinars.svg b/v1.14/_static/img/icons/icon-webinars.svg new file mode 100644 index 00000000000..5e9f5cd4270 --- /dev/null +++ b/v1.14/_static/img/icons/icon-webinars.svg @@ -0,0 +1 @@ +icon-webinars diff --git a/v1.14/_static/img/icons/icon-whitepapers.svg b/v1.14/_static/img/icons/icon-whitepapers.svg new file mode 100644 index 00000000000..3351e51d23c --- /dev/null +++ b/v1.14/_static/img/icons/icon-whitepapers.svg @@ -0,0 +1 @@ +icon-whitepapers diff --git a/v1.14/_static/img/icons/icon-workshop.svg b/v1.14/_static/img/icons/icon-workshop.svg new file mode 100644 index 00000000000..5206e58e986 --- /dev/null +++ b/v1.14/_static/img/icons/icon-workshop.svg @@ -0,0 +1 @@ + diff --git a/v1.14/_static/img/logo-scylla-horizontal-color.svg b/v1.14/_static/img/logo-scylla-horizontal-color.svg new file mode 100644 index 00000000000..0feee9e1373 --- /dev/null +++ b/v1.14/_static/img/logo-scylla-horizontal-color.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/v1.14/_static/img/logo-scylla-horizontal-light.svg b/v1.14/_static/img/logo-scylla-horizontal-light.svg new file mode 100644 index 00000000000..6c6758f7d72 --- /dev/null +++ b/v1.14/_static/img/logo-scylla-horizontal-light.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/v1.14/_static/img/mascots-2/2-monster-laptop.svg b/v1.14/_static/img/mascots-2/2-monster-laptop.svg new file mode 100644 index 00000000000..b0cdb2caac8 --- /dev/null +++ b/v1.14/_static/img/mascots-2/2-monster-laptop.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/alternator.svg b/v1.14/_static/img/mascots-2/alternator.svg new file mode 100644 index 00000000000..066e2390aeb --- /dev/null +++ b/v1.14/_static/img/mascots-2/alternator.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/award.svg b/v1.14/_static/img/mascots-2/award.svg new file mode 100644 index 00000000000..dcb4be862ce --- /dev/null +++ b/v1.14/_static/img/mascots-2/award.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/care-pet.svg b/v1.14/_static/img/mascots-2/care-pet.svg new file mode 100644 index 00000000000..dd528340c76 --- /dev/null +++ b/v1.14/_static/img/mascots-2/care-pet.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/cdc.svg b/v1.14/_static/img/mascots-2/cdc.svg new file mode 100644 index 00000000000..4b6530d7c7b --- /dev/null +++ b/v1.14/_static/img/mascots-2/cdc.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/chef.svg b/v1.14/_static/img/mascots-2/chef.svg new file mode 100644 index 00000000000..4705a253c36 --- /dev/null +++ b/v1.14/_static/img/mascots-2/chef.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/cloud.svg b/v1.14/_static/img/mascots-2/cloud.svg new file mode 100644 index 00000000000..94e535b44be --- /dev/null +++ b/v1.14/_static/img/mascots-2/cloud.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/default.svg b/v1.14/_static/img/mascots-2/default.svg new file mode 100644 index 00000000000..41939b5aeab --- /dev/null +++ b/v1.14/_static/img/mascots-2/default.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/docs.svg b/v1.14/_static/img/mascots-2/docs.svg new file mode 100644 index 00000000000..1edb30b2d84 --- /dev/null +++ b/v1.14/_static/img/mascots-2/docs.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/driver.svg b/v1.14/_static/img/mascots-2/driver.svg new file mode 100644 index 00000000000..5b1a3c4011e --- /dev/null +++ b/v1.14/_static/img/mascots-2/driver.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/enterprise.svg b/v1.14/_static/img/mascots-2/enterprise.svg new file mode 100644 index 00000000000..6bf7d4ab0c7 --- /dev/null +++ b/v1.14/_static/img/mascots-2/enterprise.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/forward-2.svg b/v1.14/_static/img/mascots-2/forward-2.svg new file mode 100644 index 00000000000..11c53943a2f --- /dev/null +++ b/v1.14/_static/img/mascots-2/forward-2.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/forward.svg b/v1.14/_static/img/mascots-2/forward.svg new file mode 100644 index 00000000000..e2d7559db39 --- /dev/null +++ b/v1.14/_static/img/mascots-2/forward.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/headphones.svg b/v1.14/_static/img/mascots-2/headphones.svg new file mode 100644 index 00000000000..09845dd9fa8 --- /dev/null +++ b/v1.14/_static/img/mascots-2/headphones.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/heart.svg b/v1.14/_static/img/mascots-2/heart.svg new file mode 100644 index 00000000000..5f397de2c22 --- /dev/null +++ b/v1.14/_static/img/mascots-2/heart.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/laptop.svg b/v1.14/_static/img/mascots-2/laptop.svg new file mode 100644 index 00000000000..debb3f5dde5 --- /dev/null +++ b/v1.14/_static/img/mascots-2/laptop.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/magnifying-glass.svg b/v1.14/_static/img/mascots-2/magnifying-glass.svg new file mode 100644 index 00000000000..5668fc4844d --- /dev/null +++ b/v1.14/_static/img/mascots-2/magnifying-glass.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/manager.svg b/v1.14/_static/img/mascots-2/manager.svg new file mode 100644 index 00000000000..523d5a0c859 --- /dev/null +++ b/v1.14/_static/img/mascots-2/manager.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/monitor.svg b/v1.14/_static/img/mascots-2/monitor.svg new file mode 100644 index 00000000000..2aa1a147ab9 --- /dev/null +++ b/v1.14/_static/img/mascots-2/monitor.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/open-mouth.svg b/v1.14/_static/img/mascots-2/open-mouth.svg new file mode 100644 index 00000000000..062f25b7772 --- /dev/null +++ b/v1.14/_static/img/mascots-2/open-mouth.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/operator.svg b/v1.14/_static/img/mascots-2/operator.svg new file mode 100644 index 00000000000..3a794489398 --- /dev/null +++ b/v1.14/_static/img/mascots-2/operator.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/plug.svg b/v1.14/_static/img/mascots-2/plug.svg new file mode 100644 index 00000000000..e06ac69f3e3 --- /dev/null +++ b/v1.14/_static/img/mascots-2/plug.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/repair.svg b/v1.14/_static/img/mascots-2/repair.svg new file mode 100644 index 00000000000..8a2f27b3166 --- /dev/null +++ b/v1.14/_static/img/mascots-2/repair.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/server.svg b/v1.14/_static/img/mascots-2/server.svg new file mode 100644 index 00000000000..805b85f4626 --- /dev/null +++ b/v1.14/_static/img/mascots-2/server.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/sleepy.svg b/v1.14/_static/img/mascots-2/sleepy.svg new file mode 100644 index 00000000000..376ada21206 --- /dev/null +++ b/v1.14/_static/img/mascots-2/sleepy.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/smile-learning.svg b/v1.14/_static/img/mascots-2/smile-learning.svg new file mode 100644 index 00000000000..46fd91af9f6 --- /dev/null +++ b/v1.14/_static/img/mascots-2/smile-learning.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/stretched-up.svg b/v1.14/_static/img/mascots-2/stretched-up.svg new file mode 100644 index 00000000000..3d24b2c671c --- /dev/null +++ b/v1.14/_static/img/mascots-2/stretched-up.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/toolbox.svg b/v1.14/_static/img/mascots-2/toolbox.svg new file mode 100644 index 00000000000..218d7c0ceb3 --- /dev/null +++ b/v1.14/_static/img/mascots-2/toolbox.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/university.svg b/v1.14/_static/img/mascots-2/university.svg new file mode 100644 index 00000000000..086914cffcc --- /dev/null +++ b/v1.14/_static/img/mascots-2/university.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/workshop.svg b/v1.14/_static/img/mascots-2/workshop.svg new file mode 100644 index 00000000000..27d50a3ca5a --- /dev/null +++ b/v1.14/_static/img/mascots-2/workshop.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/wow-up.svg b/v1.14/_static/img/mascots-2/wow-up.svg new file mode 100644 index 00000000000..bea380c19a1 --- /dev/null +++ b/v1.14/_static/img/mascots-2/wow-up.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/wow.svg b/v1.14/_static/img/mascots-2/wow.svg new file mode 100644 index 00000000000..d809f8f074a --- /dev/null +++ b/v1.14/_static/img/mascots-2/wow.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots-2/yummy.svg b/v1.14/_static/img/mascots-2/yummy.svg new file mode 100644 index 00000000000..f93596e8cfa --- /dev/null +++ b/v1.14/_static/img/mascots-2/yummy.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/v1.14/_static/img/mascots/404.jpg b/v1.14/_static/img/mascots/404.jpg new file mode 100644 index 0000000000000000000000000000000000000000..769fa0889f8b33a7edfa1b6903e9bb33bd27da3a GIT binary patch literal 29400 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

                Zz!li-hthDV>I~6>+Qw*c^i-)cYBMjGVuFivgPQEe`y@HV6{02dAacglX0sRD$pxs0-z^lx21nL@M&WhDs(Jxlq8wk*y*g?4!{R zX)sR^yRpDc$PPdd4FA-|b?IwUu3VbMsP+kF*tXJOY4RXP&!~ChUsISS+4;d5tP704 zddBBUJi|=n6BY`CO|YMu+1ACgap9#N6iQKHY7QZviQzj`txiU;34yYX;JC^vAK0nW ze3)nzxF*FC2BOs}GHjk=dvWk@UMRs(avPMbK>ZsPd65Z(FpvViw3uDVxgSd#A)FCn z@;-!34Aol%zMz$hW~kDs83y#B&kXLxGD3BPdsvwWH4i`tM#|h9*tT z^hYq1oCYyfWS0vkUOdK|A%+|6MejVai=x0iDtFNXyMSS^eG- z&-R!Al`A`nkJch2cy%| *o#A4Bm2Pwzp|eK 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

                AsHsQZ?@8G~>-T9LgVg?Qm;9iIbZON|N- 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-advisor-crystal.png b/v1.14/_static/img/mascots/scylla-advisor-crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..d33fddd62f0900fceaf8bc7785aad0dd6badf111 GIT binary patch literal 67593 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 HdEoy8fIc?4 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-alternator.svg b/v1.14/_static/img/mascots/scylla-alternator.svg new file mode 100644 index 00000000000..0462f893d5f --- /dev/null +++ b/v1.14/_static/img/mascots/scylla-alternator.svg @@ -0,0 +1 @@ +scylla-alternator diff --git a/v1.14/_static/img/mascots/scylla-cloud.svg b/v1.14/_static/img/mascots/scylla-cloud.svg new file mode 100644 index 00000000000..a6c6a26fc99 --- /dev/null +++ b/v1.14/_static/img/mascots/scylla-cloud.svg @@ -0,0 +1 @@ +scylla-cloud diff --git a/v1.14/_static/img/mascots/scylla-computer-3-monsters.png b/v1.14/_static/img/mascots/scylla-computer-3-monsters.png new file mode 100644 index 0000000000000000000000000000000000000000..d0368a7027b1ee216abf8d8a1a83cb13dcf732c7 GIT binary patch literal 44539 zcmd>l^;er+uyt`OPH_$H#WlDVx8m+@p_Bkci(7Elphb$7qAkVUU5Yyt4bGSMe)qq) zKO|Y}S?kG}nKNt7o;~|SYpN?^W0GUOdGiKaSxHX&%^Re{H*XM<&{5$}rW5JR;Xh;` zc>|D+yB)~a(#!UZw2ix!Ev>SvrM<1Tt)-2h=a8-Vn>RIi%5u`WpO;TMu~YTt0$&5= z>`1k2KI0=GsW$1dCBMb2#FFplFbrZ${E&@U+xy~IuV!WO&P1cgAO*4JBc>^~jr96F zz08s1I|rj)=4`I#0qIoc`!L>lDOq&8By>VjGet{_N%4LEGoVM-l79ir`&MHA(Q-|| z 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-computer-headset.png b/v1.14/_static/img/mascots/scylla-computer-headset.png new file mode 100644 index 0000000000000000000000000000000000000000..0cdadaa2167503eaedfd33ca50de93801b46b4d8 GIT binary patch literal 22297 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

                k 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 diff --git a/v1.14/_static/img/mascots/scylla-drivers.svg b/v1.14/_static/img/mascots/scylla-drivers.svg new file mode 100644 index 00000000000..6012e71679b --- /dev/null +++ b/v1.14/_static/img/mascots/scylla-drivers.svg @@ -0,0 +1 @@ +scylla-manager diff --git a/v1.14/_static/img/mascots/scylla-enterprise.svg b/v1.14/_static/img/mascots/scylla-enterprise.svg new file mode 100644 index 00000000000..a1aa0b46ac1 --- /dev/null +++ b/v1.14/_static/img/mascots/scylla-enterprise.svg @@ -0,0 +1 @@ +scylla-enterprise diff --git a/v1.14/_static/img/mascots/scylla-forklift-boxes.png b/v1.14/_static/img/mascots/scylla-forklift-boxes.png new file mode 100644 index 0000000000000000000000000000000000000000..f64c29e6c7c37c8d30c704311ef9269553e87e81 GIT binary patch literal 29196 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 QE6QPBsOhT0m0w5vAK^}|lK=n! literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-forklift-migration.png b/v1.14/_static/img/mascots/scylla-forklift-migration.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f645c645adae7e881e0cb9cc099ec7a80faa34 GIT binary patch literal 24191 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-gear.png b/v1.14/_static/img/mascots/scylla-gear.png new file mode 100644 index 0000000000000000000000000000000000000000..0f53b26afa5a7e94e2e87b8baa568dd6c7dfb2da GIT binary patch literal 64841 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-hardhat.png b/v1.14/_static/img/mascots/scylla-hardhat.png new file mode 100644 index 0000000000000000000000000000000000000000..630f2d909427ebd1cf94b141b405c30e8a84f6ce GIT binary patch literal 20163 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-headband.png b/v1.14/_static/img/mascots/scylla-headband.png new file mode 100644 index 0000000000000000000000000000000000000000..c87abe684d5b67e5972edef5ad41990dcb2a6686 GIT binary patch literal 40533 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 CA}Z$q literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-looking-down.png b/v1.14/_static/img/mascots/scylla-looking-down.png new file mode 100644 index 0000000000000000000000000000000000000000..75cccbfdf12dfe20458552b79aadb3c21ad21d33 GIT binary patch literal 70044 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 HDWM4fznpb_ literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-looking-up.png b/v1.14/_static/img/mascots/scylla-looking-up.png new file mode 100644 index 0000000000000000000000000000000000000000..6f10405f2182a1f8359cb01cc51910d1ef88be41 GIT binary patch literal 69083 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 VQ?0M~bpRiX>}QZKi0@A5;BPd-mKvHm| zQhxXT{1x9H7LR++x%Zs=y03FyujlLejD4)DP7P!O5)cqjYakH@1O$XB|9t>t_#chA3qx}2LdH~cUuRDhO5mp2LlHi`vA{j2YCVll?4ril9B)7K^|=i z(@f_!dmbwph?QltfKDA9Z{*=CF!h=#(JtSJ0tI@)6=gYow`ie{IbGtrqLgH2^n%NM zy<^}|I^vTs@kebgs8z2-N&19bFP>lKvPDh}9Kg8|lN&G6JHR+g#!u;zflTPyo`X6oLrC_m1`bg_0_^ z>sf`Od|73WALEaM{35~&d^s{H!?Im!`=i1Gl?kD(U@AbLi@C&8enA#yYA$=K4%@fe zb9pPxYky95?`d#&#r#FPE20dw@%=Z4N5as{4nb*jOstW7It`(^wIQ?FFv2>4f0k%C za^moz_083CYSBPz?_k2o&!d-PYiEo9O0z*g0CZK=u1l1I+NL{nW@uf__XeN^`h6sH zvPS%o<*M%S4v7dDpppFdr0ND>iiYrwLIuVSV2mK;sWK2{OYZM7scK5g=$_=Q>CUTQ zt;Z7ww-AwLma4R^4=IfP>hwUsl;wRkmoI2gmg8qqW4kz#ke(i7JKDd_s7(hdXBVdl zh#=A`9&ggj9#$2AAcWT)o2nB(ygQnCW~wdmO1qWsltnc+9P@S&m*rW}B8(ZO#1dZ2 z3bi%kXU*&C`guCc|Ib8zgsPwzeW=%~kVWJMKq zpCkmVQmS*7`9MpIkpZAVFdC(-ECAs(m=P$B)s`k}j9yR8h{r`j#ZuDA_0^`09&dsxRC5Fd_|T;+Bf;bC?BJ z(*Xg)IsW&TQ0kG)>tU4@6(O?Z666`vp-^72@H_R{JnDqd1tuDweoH5RK#HO4@pvoG zU_zwuT$`^mRAt`{Rc{DKHboUpG|8F?a`e&Oaqd&)x9(FhL(Aab+XWD6C1EL4XwC%h z6bU8ajL2WkD=iJyu~k@%J{)6(im9X$ZmUEZea`fC+%l696TNS5F+f)oma^GjG}ZKg zE$yuXl#2uM~pvMuJPZ(aL`TtT9B~j}ogoh*eMjyW!CL#UYxi(v$K? z#)&^+`&}xcoK5;WOVBv)M$xZ_iQT99={Kw^ri>u^I=lh1)T{T7K-=(_VwNa`44vH7 z7psly*mOp`fn!bOQyd!6XELCKy6Pu&Y!LdwB8-LChVMX5^J)pEm}CGxEzVI>F*4Qb zw5;-^Xhx}lybjcd;BZo9VR%oftPG;Em<2Z&}!f7A@8`Nr^(eyu$}w}nkmSz zjfesRa6DX&TFOXNIhWk>OM$jO(%C3v-t*||+#*#%s8~O7<`&QPIM%wKAom}q=}E-j z6Y8R;*RrFX%GgE(2(8}VM$%IMA{TZ{qaIJBjPn4|7Vpxu-+*aQRPWCGx8r7J71#XV zt~M@}ZOjkSV4(_E=j@$%G4`QeXN+0b*1qDA{X*Q*j_%1JL5kB)C^{ zNEJntriF8S=f4x}DDHmFsO5oWlOJl)UI8^sU2}l{PdRNfUbU3)A%FboquCg*e_nrjjp z#(TK5&rWvQrm212pwLmDc1H@s>`mn%9MwWN>s0Fwh{HvhAOt3yLM?PwR1wnhJXRn& zuSNujQLe?5cI0>VGH2;qq)z%mZ?hc?be5*RvPhYeyG8mL>Me_qxStz*h!s^#TynT17B> zT(#p=Kn4S`rG{BNx~LgSS`Q|aUf zSHFJ|smFmahj96*8sR>L`3)f}iE{k(Jj?~_{gERcjzO(q&pR1GE7i&UuZlHn@tbr) zAa9tqJSc|kOU8@C7^Ir-G5zY$?w)g)Pb3aPWZ{d^8d@S@ev)|1Anb zeGhMBGl;JxG-YtcEr=uJkkn?tc$nV4le`*a24w{0RneZ#J*Qu5VUV-w2iS7eCkR`R z^GSXMrlO$-sj7rilb6=+C4U~5?0dbjCK5)hx7llolk(E-7cHb5NC5majBh+>45;2I z6^d9gANESFS>yO56KuYf)D4ln*eeO+{Q_Gk?*AMRg!S~;GTS|wx64=7CD;own%U)m z0+DZL2W>OYzA(9;LeL@p&o^6OoF9{=jQf$QgyW{MD(xyzYn8Cw3ia~T^P%-0wOt()wDG) z)0t?WTF~*UNtC=MN@LW`G2u1E!N0x*F(E4+GlD0!0s8Pld%9}co4&~1wmwRgQcLl` zxGz3Hr2VWqLp7~J|9^+m!?NQQ$i4|e8WaV%viv11U;C@lX+PtLBBF0QBOEQ#I9)Db zOh)t(TgO|+k>es^EBTqbj45ADA?Adi4tZE{@b{3H9CTQ65qZY=Ugr=%N%9@A2YSs~@)oridtPgYUDX z{b(&yI9&)P7ps+Tvw9gFxkJ=o=SNRVZ~^9uii$4evzIo1^OcAq?rTEh%f0&#j-&zc zBn(`Bd>P5KP46>Z$?hHw^mx8HmrRm=ZS3n<&)*Q^7%MQ-B0f6th{+2+Q(T5vxRvj9=*vWC*I5lsNMh$h*u31gc6^6Au z#fLlNKa(E{h0q@p~cN?Y;WQi2~W@Z|9F6ZrFNvIO78z9i0s8_nsDSUp#p> zLC&sCw_6+rY9=~vfdbyq=6EGmW-L1yIzk|!iYviijsnj)A2;d^ad?<=hMYeU-Ph_5 z4wV`FGuu0!^;nirm{i$oxI`tv(!J~1>FKG^KdwqmbX4uFH77lci1H!28to65cLfd| z2|)Vj+WmI~r@YG)%2*$ctXRL1v3Gb1BI+o!^1I@CPP$;6H<~Z0%QTatUn|XZxf&|@ zbJe?adonxd*UZ3y+_%L1Pn`ob|1R>6-Pd*HPiEVFp3~h?_>f7Z7anG22uB&hG3@)q zHI)H{+iIb|xaN+C--Aq{rGA~xRGoE_pK3%%Y9C!Mh}#RdCMyMPaED%&;Y_}<1&4w~ zz#UwkY0Wy$n>(puyK7i~P-OTWWjZL#`n~2}9NSocO{*Ymg%O11h0LR`K4o^t?C+(q zcj~;DIpet`OI!hjee<+mgx3nq3#p^vI|ANkV^^ca)Yl~w6{ zcKUN2n|yZ)OTvm$4{02h{oXY@wMT&Q74cv_`VA!dRjYP;)KqwPh-MC^8U9b7Am?bO2 z+6VbTPg9MXQ+fXc@zZ_zEBP=!=r~y3I+&l-Cx@s${D0TbbZnn!88<5-Bb+7O1ErMk zdR@WMAmQ+Kt(cMLB!iw+js}4A)oKsOEN>s|}Z{j2NcOI%+YCZxf$lyX1=oYsjD@>Ml#?++iy5$8jS_@|~LLNaNsz=li zD4X|Dj-ZQrAu$qn^YbP?b3^g){YQO-7Y$g;aYS&v!qvTI{~f8aP&F;d*Jts3nObiY z*%!Az>k#?Hj?w?^V+&Yus+M^7VWg~vo9lTHN#RuEuEWOHPyd{5MbJOn-~8~WD4taO zJ7zoTS`t44{gh;MD3b6HYovs=uiS}`ZDzt40|)Dv~uYKE15 zAK6H5J#+U`SLPK zGqW+}z%bbx%a26UZ-@{FwxkCYB8$3{zyLw@ow+JD)?XurQgWG2LWhCYNx0QRn#xx; z`|eFz!RH}xZMzZbg59ee=v;=0!~lzVg7+PCIBYf}dSbYbJ?_slu?+|#DA`DTrwx8Z z6&tYJ{O>~Ho;doBx!9d6KT!I_4S6E*6|Lz4qGWcbB zp0pgGv=}H_``7k8)AvtnA|uEQvUUHR_XQro+p4I8ks>ClJMFOpFE1rXNC1w6p%I3G;>u5bd^lGdzah|B>BuDM0%+eKW;0yg}K^F+AZJ zAD9&JrNMc-uPF__5+iaFH>>`jDkXhs^#{QgfHAcmmPb^G$Extq9@R}`o3wk$St|X{ z<-pS47ifZ(6^nTLKHz)yc%nk$(l{*a^Q1$ICDJTMZXdNPl`2YtlrB%b=pD@rtEJ)9 zz|GfbvB?*ByG!ibeH)0tEv>o8JkUqCwD)Qf4{Z94ZoAj^#i~ZGe)(f_V0C{G)c|6V za|e?P@*5>*d^lOtB!tGAahC{rKe9F~=6+N+Qh^jNHA+ls;`dk7a-H8G=@Fw(neGx= z7UvZQ11!;DVpUP1Ai8^pPRC~<$-zhb1Ab<&PZ?O1qF)3cu9zAlnHS^x|9!yvQ)BvD6CK0S|Ab+ z9t_7RYn(rJ`Q>qkGzu}m8haLgUtfH|#KTgRFyeRebY6-52z9!GC>8R&ERz{5v*|!3 z0HOFQYFhG=j`n*1;`tpoVrRktfPvA#w2~mKZ{*46M)C_O;}J0~nQ_(jEA&nKnj|E9 zYrm+U)5v2j@_q-V|S_!|n$ux4=giX@_8d9g)Skn+0a2rta zvX9<;nE9HhFqQP~ti$DDJUg(COI&D<)#zw)rT|Qd6gLcb9{rVQSjrL`yY6U@C0za< z3gIKHgt&!V_c^UHWfH;a;Pzm?;X+baVkEwy@Y1SF3>C5$&=*pTa*YxyeT@M9!@r#KcZ@a-<{PX znkrIs#N6)Hrq#mek{imVTX?Kpbx`n7yjzCQ z<^?r$Q<-qs-B9&E50-?+_idihMs23b%NQ4jA?MG3wuvox>tm4Hw~^&6ug!xF=5zt? z!!}bRc3vx)CS6?d)r{29ywK$*$#2BpQ{hk{i60YqKWVhAHaVK zZ>#c~2yD+A)m=Vhrq4W+yx;;N56jbs*41XKeA-g=;CLFvoo-|I$_?( z5omtHuti*O%{@pyM~zzZukjhXTbulV=2-=GoQPFFRaH=-W7&Ml*2#yk7Q1*P z{CYsCR$29{&L&as$n5jNJWmtDAR=2}Kc`GH8bxA|c!O5-AIC3Y=)>m0*Ehj@7PjW0 zpDbYzs(0ITL8W@X<})7>+EDd%l1|h1DP7M-4)L)q^cm6coydNwv$laFBihD)bA>+K zU@zAT6-|u6n3+L%^|F{_KC|{IQE4b(>}S?7V`pdPuLF}NTQ4TQ>vpYmbc@cw3gbfY z-hz+x7lAl)TG&aZUBt?sGUDk(n^a@XyM}nom?nNz<-tQdw9-Q&phvqMj-imzS&3lex==pI6%@>eX|+LmcNFbP)K+)3;_3%?;f5K-zT>O}E-M;s%=>25#@@u?BJlEX)4g+rQ4@i-Mic zzzLxxUFdxW6o%Vg7}e}1@;z!y`|mABEj+|J4rzwII*6ZkE_X6ykRFtFJM>%Qv}nyT z7h?co2BHoJ()yL{88U}}8i8gaeO{HLo8iU%x<9?*mx6tjZC&4dYG(g>ATd1tp@#sA+u%nz2L?ILz$o)+J9jV9$*R5|B^eSP!%x+A29zIsT+_~O zTXF~At~xPedw}7Tl-0`9G<=Shet!*P16EGWZ6DIuTMQcvLb;YTU*mg`fswEM9d^Vi zpJpTA9cZXyXj-(Dq1&Vh`@Y@ccQn5%$>j53JY1rw-&&{pN4uyYXeTYhsu>0Nb9m96 z|I#EY2{m-gkNQjhPqsR_WkaIa>-uCtJCz7a`~DMGxK6iVC(l!z*NPYO7pRt(v@P{q zH~7VfdwI<%Bb5}F<$!@kicQS^651~kQ-ku{tiLkoi)S*B;O(rt277;@hMA8S#;%W) zF1Nn;pnapgw*lSHzgb)47)@rHRln&FceDv6$RX9jFRXf5@gWqHeeM#RD2xaXr7zUY z^5M{krgu1$#E@JDj4(%Cgj1L^@ADkWQsMpY2lDj?%QwxJ?JOVshb&By-e(4NH~4_7 z^d&#swEeUt%%jTqdvKXWlBYShCl@8Y2dFl3SD8-k?;d;Cg;or^R#Sa{@!ks_!9JDS z-5k|&COVm`UiH`tb!IHJXU!klrbp`gk&oebF<%o&ak6;KwQH>*WL0F>`}c7BFY6^{ zqkk`j%=4_5mWv-JO7;c&CkTfutJha}n{nfP!A+QiU55!VnFsjF%Jhc5d|HLu)e_tG zi~PS@kLkRcG);Pp=H!xD~RP67yvt)OzUb9xo z3w!>NE_QWK-;ZoSD)yd7$e&i`;+n5`Q{n52g>}j(R=hoD_NH(>*$jQzhhbC zv`W4h%8F!lAme177K@I!p^Z_l=@6M- zL7Bd}If_HLv29OTR%>0&x#wgV(e{tuxy(V&F6opBHBy6?W zNY$f9e>||2@-)@(FfVt~1wF%j(tui+xZV8|@$`S4Vwt8LLZ%|C!1$8s%u}Th1c|F& zNb9b~uZr0X$9{vjfQ~Yjd-ihutQQ^|ZNQT*7_R`cH=xH3j}Q%xbAJ*J{r7s+dq8z& zW*T3aiyQjk%*V>@y7s)Y08socsq^}-UifitxYU4XLH8FgR;KaHKkEE?{10C32wczk zX~$d0gHHT^%@m%xTjLU4J0Hz@|NH%{TVeu_Go7u)cs@z}of5!y9{lG8J86`x?W%yP zA)+>@hM|>DEKgeMYgUnQ?<=-Oh8iQXpHNsfa5nVj(rzT1yw46_3%f^_o$hV%nR9FK&P?EDw!Yt$==HHaoIYHv>i6?h1w1;u z_}M)P)~ip`?;;R&l@w#!>m?EXaj5||+o}3n4l{@l<#HTfmA|kt!P0H7VxL|7lA-yy zAQ0S@@dpAM0ux1jC7PN9?n+dH#-gZix(f}&+CUP5+CU+c(r(8=a=f%{9TuH z?T#Bw*w1+O!2Aazzs{eM43)^Wu zd~_fs*7@AY`U1fBP+s@wr3o8@+{@z8Kh6J6DwwvzQvR%uREjm*^8N=G-UOD(?H18n zNzpwFr>Ycx(=&BWTRo6bKBXH}+XGgpUq)|#jk-&LBM5!z5GGK`8N z{8{)ebouAxvx%>XnG$FYO_EJcJU;g9tb_dbw0bW-0TPi4ZHUWPagC{ff33W-`m4zgJX>uQ*fDmZDa(YVct}pZ4k}EPtuUej(#njIZR+A z)oQ8`XR|+t%ah6~>6ous?KKiVLm#SiY;0!!`^|~^!0!@%@Z>mSr@RNBFRo2ye92{vRK}HXKVdkC=1(X#$@|-^A zewEpqoIP?!M%wI%!rP40mIpATi~#XoFxbygzolJVR*`*+y|=?7b@-mVsx6nduUC-$ zX!lttgemS~^%p4a(IL-lByS9iY&vy|1)r5oMK-K*zWSUQov+?F%N(lg$o*>Mc?Z8x zZr-KfmugaH5;p;Ri+z@j%hAW5wj7zL%Ue9{{U@OJ*Kgvf3K?YWh~J+&t|Bn!+QuQeeCO-o+nB@ z3NN;3yX_iHJ(hxK)1`8$u!OHErroPUObs6~IA2%+*p^+oZ^mDkDB(0yEW&QKdVT2B zpj?hmcbkAuveGQZsj3kAK_AcU|8@vMBcUDc>tUjN1hx_5`Co(RYHB2*sFdCcc--F6+HP%Bud7ATnht(d*s6$APU#FY zvMjwt2{4|fp*ro_Wdp@xvuU6rya}v^hnQpdvtw`L^2I{~qA22y`B z*e@e~qt<`4=mX#HIDa{wiZ%RTeIO~C7}?dYtiDd5s~S<_*(2TSR{a3Y?YAuA*7&Nb zo>#QGgP8J3eSpQAR(}g^%BU#Prv!h5FI($Vq@rWh8<}4UFn5NuWX47fH#wi6Ha08W zNfu2Cc>xuPIfW#srP^H?XDA2Cz4DHpaQuVO>W2-PgZNt@5L*L9{&>7*6?L3=jtI(w zmVK(-mADK_AwAJ=h`;iYeZg@tTE8t>H`tjvRgSmTAG~Ml1U(=SrdG1Uyb?<4EVRpu`tIRwsuX-O`mQM3y1s!cF}?Blif8t{)9@jp+@ZY+tlk)CYj6SlOCrKC zaS-z4^t>idub*!cMf4^k(i_|dzcj8*HizUDMco?z+>r8)I7(1LgggsDMM7g^KC3c5 zz4F7ldWHGR{%X~Cnn%mrfK8~`@zp1pSF7`mT}Omk@0P>-M|M8m^2e!blJs3$H9P$6 zVDPh9s7u;*U??R+v#azou}cmT<5Kt*PN;GR$S={*+4apDAydw>HQd9xUa41;D$*tn zkF5rCnZ4fowr!^lI)ITM+Jkw`VhsXah{#c4&to|EEAsNpPCLslk^&y9`6c}3Ej>IL=@AUk#(wHzR!Cba9BH_^K+Zk;+~o8V<|D`O5NiC+O5oZ`pe~Q z1?|Jijy~=bZ)%hDzbzxzM~oecn|942{N^M)y}CSII=1l_}{28|g|hL3g=!7L1)pc1c@GAsqFh zPgQlOC4W-A+-ClcL%yRFw(mIIKy$7~b*%2hCs)x9)0?uLeO|C_)0BFCxeyO?o>d!G zh;DhsjDw#jAJAZ8oI;NqC%fj4{Hn$w^lkMa5p@)p&b^Cz>=ULf+-F+}?y^=#iuGT) z<0tVd2(z~clElknpoMWrIc z2t`@_A_86ri!hd{k4J{494DY4cV*TV3%VVDU6Q{qW2BeAh&;L}{>Kb3#wIeR$n%&t z*tb%;$I9A4tcd37Xyohj#)i3J^bI8=1}DLB`hLgJn0ZOM_tu$h9ky#H^5L-@F#SvA zjWv831RWTkab)d({-U*=)_g!&03?e~dG<6+a#4dz)4_5P4dPJVUwzZ1{m*GV2>q5k z`#9Ye$70sD}3~ADBzQqpCM26f?!!lH#}A->ypk;E#i4KLL;{Jn+mJDK{jb!^0*Bb$?iT)*!SlbIVyn2VR}un#Kk_CU zmy4Ud?U#QWYC+_cH#jU=_k~siVdh#XjI&c+tCEkym|MS34BR2qb3N9|BDXZ*og_S! zB`t>PMAD~W8q_Vztvss?UN5XmiPvt$8i4rF5d=_u2P2!;N)6vi{Zr@z-0W}aC%VtXt0$>y_(B(Cx{C7 zW1fzdW3pGns&BvQZT3SdRTUNHhDF!?4cXbk5q$lK!>m>Mg0Gob@=LyO?=zj|D*8Bb zy71^%Q8Yk+r;FoGL`fTm^C~4ZMJ%4;_t)Rn%Hhw)1oyb2&$S2Wxk>~{^ee{`B>+Vd ztZ66HE@%$W;j{@d$zBTCacMqUl)wIv)Y{H4s zM5x)4S*1(%kg-fel@#Se%Aq0#MzoJEh@KHC2Zh~tH-o&KF53@VNUvX8Od_S=aE}p% zDS!1(#etNA07EvrsA+Qn$U1hWxLtQ!>C?Tu>+JGG&jwjK4)-rjZ=)bwJ;5^+I5Im( z13cpE&lBI1bXl|^0*t4hJitPBa#R7Hw00021;!-3Mlwm!09v(o)9}_^_xCc$h;02v)ReU3~cz zAAP+nLP;Fg1My zk{N{%UM-|Op}|U;Unn(Hc6P=gEvLmET(!I&?ZN{C0J`)G=|c@PprG&Ug5^8bonsmTpvcNkBk z!5V-euY!-}84VXM^0?`}ue9`}R9kBLrnMR#X3H#Yh5lyWCr&`7Oo{fU@(02l{_^{IBrw7G3YHHzE=@ssIXz*^2 zCJKIFB-34aHk)7y)nTJ}_x(W>lk!_7@j8WMdAI*kySnYAWanqCncQpKOIcI(r!B2H~4K3aYK=hAGJ z*EIx)b>t61&l$>m(N<(i+8RKWAU`fR5x_A2B0TAvF>-k zpJtjJML9mtAW+S8V}t|y7MKWq`eU`1CxH~SVseQ$PXG4)V~ZA}Z;}f6;a9NxGTqmHLVXR1k04IX%WvB!u%Sh-iYj|;&LdbHU>3+LISB|^=PGklNM!$V_iwlwF{ z2d@P63G3{jqy^&cQmXdSrBTRvh`HR$yo`2XK9O!z!bYNe3ravp!#f|AHJ^=ko4XrN z_>U%6{+&nSG?4}-n$T(~|CNHu^sDJa<5NBYyvktnoRS5DuMRM@h$rzWW+|{?vfcWm z_zD#slIi6BxVowJx1|*sC+X7-w)}ar<=ce$Uh;=+=jBHAg<}t8Ii2=_XGx0C^$f2P z)=TtN@C_5#Ro&|2mTE4C`kVDfffV4OlWVhA6X3cq|C9Ie7FwRBWS!~)5KnZdQZf(5 z_+6pb`@4?Qeek0>(e8`*fX>ne5U5lXWf>-PcAjBHjHmKMxEOEWd84{%_MlycO9m{O zGLjkUhaChx6Y`&rDEIHq!*}wjgKLIdoDr@TnljL}&h)N1nFkf`i5<)U%h}|vBmSvx z5hn|;VqKZ8yOc(%da@Cm%Er4wluo+>howZM2wJlQ>stgTqEAa+&F@?Dj{&J42;UnF zg3tH^ZZBpiSTHV~v@FuqLGwQYGjdZJHH?pF#+(wz0>Bi45u3m%D2=i(Qi0B7 zhL$#<<7!a2f+&tr_^Tlw^ZZc}v}o2{X15tx>R``0T`S#xhS2qpCQO1fJGV zS2dC@V#a&Of3c%l(d}y?itZz!;{{@F!N_bFk(sM=v0!1Z<&SlDlM;d7sNXFxZ&y|c zEup_Nq0 zF&PsMP93E9vTV&&nYT}Jv#0_;!r>LfEyFBuy}B?21olc{;UD2{7gWmbblR*-G`cd& zmNDJiZzw&`NK`UnT8A#(j7%TmB}1yQZrq~e_wy##DkFt_S0}{oG%m($t$MAZm#5qf)d*E;^I2xVCa8{lpGN>L}{qz2E!eqqfEF@Y)OmS^JM%uo6jQkE(M za}I7ok}7@*eiU6c6oxp!yfQ^$`Uj+UmqOsY2;oGsUh}4zLF{|yHQ{bBhM75QC>o^t zn7J-%WFul9VRC_*X7KL-BTpr>YlT+=v%4y-SU%w1jn;oc^`EBdIM9B?PT9n(JGslw zXpa6W<`o9V+Zot3z2@5Z%B~`unV&)lU^<*6Ix5QmA~g_W)AVigM{bVQCK6 zH?2c+gwGV4tR{RJs*YR?3-oDW-G_*3GosGHR#S|W$efgSzlIrA){?S+v9_8Jkxxf2 zO}ttzC|7&jFr?`bU90|84I#iKc}E*l#nBB0B;}Asu`+|q5phizk#E0$*DlOpsi?ep z!%u5XwwWmvBRk8Cveq$ZMgF85ND4LqtBf;cd6UFujmP{z{S zYF3upjl?vv*n6drYWKQ4hiNTn-=$GzHj`H^s`orkAE1m+B#n{-rvRbh=9J0CYAu-u zR?i!R=kDEsxZNwaUy$%@xI}tA0kwVYi%+P%vW``>OPLfAA9y4H$y6qqL&g7vBdEn{ z9JoyAIhzQof&K#3l81Wq(&1+9qkIVxCZ%`%NcnNaqA5l1(PUQq!QFx#RsTHHjk)v| z&$mN^c;;O-G_P{zj4@>$rdaI~Q)ntl8r@~aq{D=7i7a)0gam8lXc)-%%Pq)D%fIv;s`*(52bdy}_S zTc@{WPp`*^>T*^}^I0Fh``Iaothp1AQNU;wb4iOQ=TJ)1gp2>U1+r;rILjj(qg%$0 zQ+3#E;)XtFU%JJLzB3aQ4dYE+VP}rn=}Ds~#`pVg{`w#LpjvY834r( zRigV5lz1Xq2~*k!f8;w`aH z<((W!o7Ot}uCo&gGe|&F$OK~fIehl?t26MU%2nFgTReM3zj|m%`DJ@UpGs7}QD@9b z>w9}n^rUKsouytx&SQmx7$!%r3vbKL55I-*G6J4AJ^JwbOsU3DGbkozr;EZ^J%z%| zOq9z&^(DH?mp;N5LN~Dox`4{D8!%g`UW(!2BIIU6^dGD7519MTK{fr58ldUuS*-|3 z&e4@Nl@9xGG-8Di-o!}&7PK<-XCmtPLr%(Ti~^vYE_SAI79~GB-k8NZ#a>0YP8JoJ zusL$E?{1GQr`fdD+LPv55$^zT1f;7<|A{E@18P_rXE(HqZt+wZe)%-Iwbh78b+0GZ zA}yNfg}Oy^fw?7jQW(-a+n=$_P_^|cZnquZ&kR}%_o=3($cSa~9i`1lRw(}vx9y!9 z&E$I%D?fnMhwpUZl`3C>glz*V=Om`}o_BMR$MWqFr+vkZs+^0zy zsCNH(SX-aUg9z=cdJV;dVU(1{RzTo_h^O=q-I$71lmE4QFIsq^BhO_^S?m#g^fXia z&E}-%_UFg3ZKHK_6p9Jbd=;v%-aO64e5&(LAxe8DOd>L4{V#>4yYf00-N$NIU-3_3F}n=R>Nc^z*)->%2mO?SpCwYP3e=|r-W7nj33VBN`7UwS z-+n<>e>Otk(9N4tVZ#upLmAIP%mWSrh$X|2}{FgZP^xH2RIQzWSM^DK}m()Ax44gfYd!6bc#c z{2pJg@c_wzShw|Xr%qt*mPryGVI$3vP!qJcYc!`Mt!U$6(A7h0fhb#iIhz>9v34Ez zJvXcW3}2}jMIlupO8FG{WrPpShV3ILU^~2zkg179xj!N(F&!Amk;yZ~RK0}Fd&Xx> zHbGD4epXL!lj-Fg$a2M@zk5v>F{X5wK{Y6f?(h7k8yK9U&6761T$W`1Xc8W*ZUojf zQu+mr(>QSa?0rl$p(mYcXHl^iqki0qm!YaUol$va|5!nD^FIkz3F=g*F)@S4e&}_! zO4&>Mi|!YUBT6$7=GBOLp8WgX!`LvXR1Km6Oc9CiRT;@19@U}{v8c~%dLv0eIrEqL zO^7#dK`cereu+s?Y$f}D)k>yPE%)4tpkH6k8-<$pyvQc;auVe0h2lm2lrJ1)F z({GtiE+L(DuU36J@0U@B$2r~QesMLfDa^ZyZ9=3Q@@BK3WZwr`4Xkm_K z92|du4W*K!mdF@BIC(>7HY0{r&R)vQhE*sMq-)K?BJ5BzZ_quCKxh2_6OU|>>Pf10 zZk9fkOgZMhOOLkOmQb~jUCQY>+qX>b4kM!@6kmI&{>#9hh$krD!z(X_%h;qF)=tpXJk3vj*7WQ@TI~9E-9DP=lw2)A zW@KWn8tvbiV9+LYgcc`B#?h&{n2xgG0o}3y)yXJx#!C6&T3=%ySKlE z21#HMbA@8P$<7pFxi^nqj?j}fXOJvNJbL0Ix~zK$(kx|}nV@NGP zaL;SCDrA;3iE{2sIO|XBKIeqmE$e3}lBS*2HZZKYMQ5;w|D#J$*Q*suPR@U56;pHxcRhVfC)Oys1` z2&&#mbZio#Z}C`$WrB8?%=eqSr_Vjp=M6st@*kUcU%c6jS-n4FOa>mH@7es2PFQo* z64P~#JNuITqtP<%KK8DeOS3SZ@u!Qh4iNeNm-2@iVuat>h`*?xl#dwAYQ<;QL6)xJ z5Pi=Uq!4&Po{y&}OMUQtyh`%BLr%$NEnNUhv9%rbf@kZ>Jjz%1E=V|{{iBx%F2JAU z*LJkCWq@u;-Dz7M4$m4f--!B|U6IQihu>cJVbk{U$jJCd;`3O2?JohX;8c$P8^cBS zWm2=^kKNq8Cd0l$Rzq&#VTlel&@MvYR`VKQvaI&%)_#2G28Y^w(`^M?6t7K~^!e6; zuFfYNe2dTD-*-=@KYsTAe`{)c7qbaJt#_H!TAP3N+(*+FTCvRMEP(65cj>IT#Mk9J z%TLFxC5(~DD)(tATiN%N2&J`x^MbvfrewymN3`||*5(-=`p$Q#s(Gs%aI1NhV&*pW zb8NmX$vZ!KvKHMCt~w~z*OX*4>&^LGuHSP)Ca1DoUwGK=dgwQ{^tZEg#AMbpE^L_a zg_AQzvs|)PPjtQZ|F7R%ZptKViq@T#l6#s#$;ke|lU-cz-=|*Mq}$ADcig$sPmiV6 zkzqBX*zux3AH|kpEz_4dp9*zt;+cV4&R>d5R;!-0BgiN)LFs1ZdbRGQoR{Xk`M4|k zE$4?SK8|`!w0;i*@f8{rwlqcszMqckwHY-*=oYv~bN;{3wE*5`(TSB2mXsEF!1`u2<)79 SK@E5k2!p4qpUXO@geCwl#5%|T literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-magnifying-glass.png b/v1.14/_static/img/mascots/scylla-magnifying-glass.png new file mode 100644 index 0000000000000000000000000000000000000000..74ad66950056c9952006d05ff406e4f74966322d GIT binary patch literal 16651 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 zwzscylla-manager-2 diff --git a/v1.14/_static/img/mascots/scylla-monitor.svg b/v1.14/_static/img/mascots/scylla-monitor.svg new file mode 100644 index 00000000000..48bec7dde32 --- /dev/null +++ b/v1.14/_static/img/mascots/scylla-monitor.svg @@ -0,0 +1 @@ +scylla-monitor diff --git a/v1.14/_static/img/mascots/scylla-movement-fast.png b/v1.14/_static/img/mascots/scylla-movement-fast.png new file mode 100644 index 0000000000000000000000000000000000000000..956d1dd0e227eb1a2ca927bfafe1551890c1ba57 GIT binary patch literal 18439 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-movement.png b/v1.14/_static/img/mascots/scylla-movement.png new file mode 100644 index 0000000000000000000000000000000000000000..7ee2b043384aff3efefccd431719dfe2fce9569d GIT binary patch literal 14720 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-opensource.svg b/v1.14/_static/img/mascots/scylla-opensource.svg new file mode 100644 index 00000000000..299e9cb9955 --- /dev/null +++ b/v1.14/_static/img/mascots/scylla-opensource.svg @@ -0,0 +1 @@ +Plan de travail 1 diff --git a/v1.14/_static/img/mascots/scylla-operator.svg b/v1.14/_static/img/mascots/scylla-operator.svg new file mode 100644 index 00000000000..655a450b2a4 --- /dev/null +++ b/v1.14/_static/img/mascots/scylla-operator.svg @@ -0,0 +1 @@ +scylla-operator diff --git a/v1.14/_static/img/mascots/scylla-plugin.png b/v1.14/_static/img/mascots/scylla-plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..b28dc857ccfefaf6b20f893ae11c51d827c70e0d GIT binary patch literal 52683 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-release-mascot.png b/v1.14/_static/img/mascots/scylla-release-mascot.png new file mode 100644 index 0000000000000000000000000000000000000000..09342ac6875c5ac16477e7cddb811569e0eff483 GIT binary patch literal 31893 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-repair.png b/v1.14/_static/img/mascots/scylla-repair.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4c613e702e46802b3a2921f81f339d3c153bb6 GIT binary patch literal 21261 zcmb?iWmj9@)1`&t8iEyv06|;a3j_@gh2l^kKykMsEf6G7EVvhKp}0H69SRh;;_gYX5Jq2Z_kJ}M?|#(l;H*OM+8u45)*HvBiAgrdn8Si~_i`uQ z=v2h{x2Mac@MH={s|t1~GEtY|fHnx91r3|bbOkty!`S-a-{aNJQBS;g!!3`7i|>fo z%E6Q>2Nc4v#$+=lS>cEXSAXq;S_8_A9b`f86hY{r#A|enE@BC4r`ayLN)|Yk*+jL5 z{oF|MVGzb7?fcZ%6nmiumn;r{Xk{buYfKR-QU32RjQjpXQiLNKG)5T@Ii^^$yE5-WC@oxLf(j3a2Qx<#&CzyiSnZ zU!5wYRm|hFzVS3FJ5L$p^!SWY3$Bj3MVlVV#)U5NLEB7f`r}v((%;Fa@=YlLKL~Ag zf;@IUtOe>qY|s4*@GzNaS9J)L4I8Ccay5~8Q3Wk{aAyThKD{dA-13z#mWn%%3pYs? zzmGgNvutrd#@BIc?fq6!%$Ws+ga>#F!JTY^oL z_vVm~J_z3g`puBRBwh#9wg~~Dht=^LH7KLp1>%kisy3X6Uv+5^)ir-Og^E1OPD^{| z$K_=V;|k)6L|K1qk=mcMP#+^J5jV_qm<1WM%}ip^>-Hi+{L+qL_q+8)y}vwtySGY5 z{Rc9};j=-EYHTJPirXLm-jWu;-($%mQ7dDL+WaWB18-7-8(rW+DkFUb^}w=88`RFw zy^}{pUoX3CdBB>kh|=`g4Fz@v>8OCe+;VT-c2K!j3vB zk}#%+yQzH_o*t658Lmv&K$|#w99$Eu!igMk3YdX4_qVGMLIFy!~@t-od|gp27eXH;4em z97rCddbPhJ6%ySEzK&`a9q`NyL5)JKBvmQwJA?aL3zpjN;-^fsEA_XdFBSe$9P{=~ zrg*x6i^s z`QB8X&mmQCU!ve(DGpd*NWHh-@MEarhJcj*5aYMwT@0#C4Kkh(~@7Y2)|?MOY~M*sbBKP3a)w2@UyuLL-)ZdkY~{p8J?l}SfI;z5(~7OSpT4QLGQ=<& zqT)x~deN%UC-?52j!X609JQZh(?nxL#}fX5yY4X=r4IfZX@o0OC|5&sl$e(8QfKXb zM_mZSq;>-pMFzm;R&bF9Ns6U1C(*aBOeOhEGsUF9uhbCEVW4b+n9p8@&xeAy|2rov z$mCdLxN%huXnW!ug1Y%56+>&sWoh{wTw8|S?Q@0>iik# zFg7Ei`^H6h;C}D5J`cd~R+PtdzC-p%t zi&Drl^6@11En8G4^Ica(_dU*g$8LRI*n_^K<5W#RzkKk=1(M$@vWh)vA&S++1|lOn zG!q4jC`ckC!y{L%t5iSMl?mErRby36woS}?riD@6;8ZXdxKXxV$J=3vvkp{Y2sa~E zN^q6G+PwDeF)-4(nP+RXd^e=xMuF(>+hdK4bFoWO0nx$ z+2j6{i64_V3;zq^PL|Id_dKpy2E#8dkK3S)n*W1J%&3?)Qzi!Q)uEuO7vijjRS{X~ z2Q7JSuyMt=8qv@T=L*ac(R}C3mQ2Qz2kVg%4++lXN4x)b*J^TQxUo^&66^wfo8=Vl z8gHK9*~N1Ku8|%Rao>&LP9@fi?wa3j93fn(`tR?=%9pS!UzY@P;{vl~9b8y*m#_ap zM!ip8=0OjYAv6UFP6VmNJCGw;7`cg3`Gu)w}loZ#;{*QV#G?VHgjb~;JA;St=m=6M(dH* z8SnLzQ3p5}vX^%B@rW(ok-aeC^#M}|*X_^yCLA%KlDquHT+wWPn2k71IP^crn5PT& z?uyX;N23C%=JKa2YL3Z?f`cvcEgbY|HXp%p^C7n*mKpVP<3LqZ9x%WwwDG@+=@?}_ z#AUpnjt%A>K6Q`R66Wk%=x^h9E|7kS1_=7Y7i*YD#VDZi-~8HKxjhTLv$L2P!a7X@ z-*Lo<2O5mtm^4D3$-AYUbUc(~$xtJOIt%Dgv-?sggJxRW7@MQM@c;Aaa*Ixi4G4ao zM*2DhrxQMfKj?N)6+HZ3vfNY#GrIh9c6@!aquV24=QB;F1lQvf4h*J%5X$IZyWFeP zPvOTupvN0qAgrj3;!q~x%2j1f!(zI*n|i_#pFUtZyH~mn3c+t?bpJ$X?4ET*$4dk~ zCz1mY)+~O66ORxozBbT6nG#W<`H_bR`q7Bn!HWj=*6R0%M{m44;{v0vG)z=Neq;+^JKbS0Uhk$aWr`>_*J`rX#Q>h)EZjV1z5n;JOe?|taNHf>;briA z5P!z)PZ&%Vo3*?&bR-6qHknA3zZ7BVYp1O@Jz7!sprrqnBDJ%I8=Z^L-bZC8&G1tYLetb5g7L!sHId|%|1XzAv3?V`WfZc~2Db@2 zDNq83 z^I{hBo#f2GAvYYWnyXq=xUIm~j{s%DeviBx5pVarU(Wml>I))vnBA}s2D0l9WGSHx zSAPC{c4<=2kf&UUuSfYD4N~PtAHX-z%F>HkjS4GjHGFzFl|KgJ%qQfK&!Oi7Pt*1x zBSvl%07x!Zn*Ms2+5S~}i>(`Fyhn{bi8Tu-_N#Pf=eLE&!02H`?9ghMMbq?0yU6=D z`dIU~Y4ThEX*Z3ZAo@s@ACi^8j7X(Jgbq0^j@aUpOMKRZvXa(Mf0k|T0OeIJF4TtQ zEao{R>i=j5`6`JhIe5z}A$pO1MgUwZM9*Z+`(_H~W!Km?3Q%_`+`_ioK_8IX=@9%- z?e{Pm^~wA6tS?^Brm!RA^})Z#3NxUe)89rBJ@Le71>EsC-u#}3gQ6%RA!pJZzwv=U z$CX+Hzt_?2s8Q)3*=P05OtGFvCNJ7ajtbYB8W|~SMv8i zH8ExK;KW|i!KlarS>XTRNvLN5m-MRCAkfWuJ!YH!2kBNGc`q1NY zZ^)6Z-`--})WF}c%LE*H9s!zB&GR>rlt;ozI;WDAeyTME`wZQF(hL*$LRPoYFFJ17 zt9fA9-EqNM^ehtK5{Uv<+fMZedtN84`k@>FgPlfEp91iYUJ4L=BHt8Cjaa4~{ zc#Q@D%imR5Im=9uV-ql6doH8{m7Y6&OfgksDJaQ!)0ycQZli|gUhDU?h&wHv-whZd zH}%A*rB`sO zqBfgtE|w@Ji};(yjol+Y2q?3w!Ib-50ro~$^R1D6ID%~2?`7Hj$)jY4?}1G#E)H#B zlapIo+@Uz)^$gkSUnYKIJf65Yn<`Y89n>t_Mrtv0lQ`7U=|w2R~h$lCPJViBtudAjo0B@dyzO|c8%#9Mj zKb7ru@J8=7;n`ai0mf{ZASDY1k?on-Z-K4PIBs5JsN{meA_{8dXvN}-laeOUeN=jnUElNi zV49&wE%PkzN?`Dy?kuONd&M#q*e_4_x3gybRI20q0{Pn%<1~NBh0%*HuNz`nBw);%sVp zZ1NY_#KC2!97Xw{y(kdCC%cZWyUn!YaP7VkSir#WJ5n&-MJ-VMuqG#mt-XDnk$Hz9 z|G6H*VM+Yhf&BiOj<|($zq6~Dw#6~Udr+~WVfGE{C@S(e+-SDtN1`8(e;n3*)6ba( zfofYX^iZwVWxv_JdWoctBT+ghnmK&jKKYm8{GIF~cC``%FfRWBJ;+E(P|^4zSK(}i z+Idl)5XJ!f=+SL|{Tm(5WlP-I*(Bz@UNAeXHuKor2~cTPMxn3?HKw2)obieO(C^-p z-@MWbG#qioO#~A~kL4|M)RCq=9l+DWr8g;M{`mZ~^Cn3i|8=7@SypY2+uUyy`TEdDZwCK*QO*?;bPD|yzNS~}D>Z%g{w9Z`L z;_tX2WLr(tbG{pvGk+sD$#Qy1g&mu7ovo-~G0vmH)nr@%!nYuW?XzZ-eY38ZC3dp9 z%5sa?43=t=Ej7JY%G32grJ_;CcjA9X2lF;FyN+zpr|2S=J{Pt&?}4FWPHuH0YU&2( zW~o2lK97IMsCX*;dzk0zz!l!!G@RitTcs4KykM|!le1;Pf{?s2=0Tyg!Ir^yjKx1g z691~aS?E#Vs8oUwXFqhV&fDV;_BQ6~bFuhdP&jk;0uaJbbq(nVUSSUC;cY5QvWB6B zFVZF&0!6we=o4z62u5c4|7$BQ=t_Wz{MBiZOeq2kItMu0<|YS#o?((CylT-gz$D7h zV@vxJa_>^$8)}6 z-A_3loPDtuJ!gy2naKFBViA z;H#?vTjG;4L!IAp8XESMhjjDaH^Vr2U_a~6c)sR??v^&~ng`dboO?MY7VFG7kYd}Q zD$;&odIM&<$CG~yfe+nk*Z&@Wrpq;|lxp<696d{4c32n#Ty5PgRrh<>_3#a<>WBU) z{q}=PC^KJmR!wM9jhsklX>a~1=JKlX%5aTAPx9=`2b0rEpWHU)%c21^74G)a+pVCU zX&Cvku-Q^BnE2Ca@lL?OZl7yXWRr68uRKkFni2)OO_c#Rf(Q~ADT&{UPSg--P*V~8 z@I>4gnk;S65Dk8Az};wO`0(L)k%rM>{wF%)X}NO+^swf@xy|5OyXI}of8-y&Fd{W& zXXsqZ-TFV%JEX9nCt1H1rX+Jvd=bC&ZQ=#QXHETr(74%Qj4Xtrqq%v)WQ(B0FNvxW zs0<*DDA>UuQMQVI2pZF`{|2g7(;a^K@OMG4ow@y1$%v`H?HcPeEz0s)3^xPh|KfjA0)`EwReQ7k|B4((H z8KcE)?RrD=)8c4Jijl83YS9>(O?czCQCjX!@6or2bynlK-TH+Lv=Y4IT=Glg@~3pk zpVihmlz{=IAWuWfprA5~Sbf$j)Id22=j`^^V-EG|W70dE2CVPB7Y0VYJnt$if&6JU zv3ePtDG+e*_9Ugf9hG_z{^jfKjuzTPp-8!Ial{U5^PohYGEmENf#WrO8mw_TN-waw ziFgOyptqWZ8B844lWgpg7+FB~Uy#BHDJkcyHi14Z6*!E7wny@~UIf()Ta0O%OtYCu zoSwE#imr9zSpN*8qC{CD-u>Gwk(MNA&tw7G>~!84ZY0}5kBc@iRLw$=oVD4878GSv z@=8swm~vN$??E{iw3ezUY~U}9I2?wO;Ks>be>kjg^j$S|_Raq$L7>mwqC7xD zbqP(+4_K{ek4_r=L6_;!#(|{R(!mG60GCUj+%Zxws`xCt={LDrRBs+R=2h@Jw82nm zN-u8gexaeA#=J%-=pcIW7*1=qVA=AML|aZo<9K^j>2qd*ftHuj;KcN3gQIiv;U z!%k*_XJyoKZUAAO9r2Lj?-h%Wlbj1u&aecJms{%D1h_0(Q-@dGj5xKj#~b=z-Y0ikel~W8_IR4Z%Ux$j8zKI>pld{no%7#?~^x zMsi%fh6T8~@WntSev1>*iI4X6=QEB!pPv!o&L7Z}&Zu<^@w{PRx5e%?)nf{B@XV~$ zn`?@PKugkg0^XX8CJ$0ogR;R+fZi9otO;1?l=!gLdT_V@MWx@i-J?WA;igzq%`RlG zal1Fqc>^mcWF>C)WZ;)QABB3&ei+m3vt!wJ560vxZ)Jqj=)Nazik?Cl9!eA#ky8E#WPJ2~_5tdTS3hZ6C7 z-722us)&ok8SkzeL+3|#Pqd&~dAAMfah>zK0QST|7s+K9Z=B;4u(0SLYTT3Z=CS-% z)6#sL7L&h(yU`=qb0X4;Dby`Vy~n|R;G~Xqd^HV{mX}X6o9 zjgv)FV;A0*V!2wc*7fr0r0)mD63FI@&O!O$?OUd&} z*mkrHt%M~)j^$kvQ@Avn~n#@AfW;N6G# zpVHDo8oqYpZ$@LzIg);D&gk}$4MsalOsVC9rj_t=6Z{!}^pUa{+gi+dcG~=V%RaVo zqBJ%;h|yIMdEd$#>$rpcV9C2;p{CrAP?jDyjO|DIe8RO-jzJ|D=Ve+&lpAMC{$n3XB9L?8Em%J-UG12KRQnyCm8dT#Dn*blM zMFR*`cJmK?kVd(Q_zp0V5RuCYYRO})#w5$W{9~$ zwO>WAI3dkvA4G?`bH$b=M3fr`rtRt3la!v%Ytt7m%S688Lcpt9!y(ho#dRL zI%WS3bu>&RRAvdR=jvV?^N9uLKg>GNuq1!-Kkyqq)U-DMc*6!%=JzUoy-oRdYHu6_ z6-Ow}lz&$g*BC~NFv)o*p)u!Dp35ajPa__`zhkaP3O5+$iFr&DunOKuHeyFtoR1IL zj^yMSek(D96=2$-_hD}P3#9m;0>caGZ2?wlt~Wp>e(AMmP=v$=Z6SXJ#g0geyz;%X zGSUY#;!RhL>y8S0BD;w4j1PA*KW}_Rh0k|jl9!u09c$wTkEKD1DqKZ&FszTT zxMPu0cwI5~HDU;Iq^qjz?wB8_3P|GR{r85u-`{y3-Nux9u*(7+bi~2}9QhNECZ8(6 zE(~+qWG~P6f4z4?!G}=Hh^Cqh2ZGf_l*BpK`VMRBL!3$GF>FFNmnc`_p&-u!fZW0kEA3veo%k9~iPH-df{l zd=(iGYc6lQm+jC?ENeodG2Moazj~FWKZGf4+?+%i<$1ic2H-`6Lu@J4%rkL#spl0I zwP*^VRwsXWhFO!(Z=u^nI=MA@W0p9F$pAJ4+sq4%+>wE_xQFb9GNTpTE7PKB(@_1u zi+I68(G-&tU&Uvs@ozpmzFft-Nc!Q)a?_)VBFV6?=kc2!xxfr&M z=Rks`!k5J@5SgT1(Mdg|4YhRMM2vD>m9}p|w9YTm4S zcWW%2L29|b!)^M0qQrnXK2Zho?8Ro$)}IegY$F~?@(MyQR`q~idn4^W2qgswko+oCM0x!uuir}6Oi|Qvy@7kja=vnWtkv^TGRjv8~gze3v8;RdzhSY1~i#YJ~YLalp%>gyfymUle)YpM~<- zWQz9GC7OT6TfJC)H)lShuU;u*7C}H;%JmkI!KCP##0pdvuEKPrsf1qO9nr4rxXj>N zw}ep)TR~)T8i59YS{=GjK5+>R%~w%`aKK<&?3?03&F=3R)(0(GrG)iQGqHZ{@#8k&`mR($UkUvX$~B7bR{9s_Td?4w60xUSlpsBx1Cf z??CqzSp~fXJNnznN6|_<$3HUi<0#ol-!+3dOwZt$_jW^85wA)vFK$G4ES;7ov1zyc z_WGmhG!Mlf?iN|0OM>Mdt7X)GE@MmPweL0xL(ESHfokwa?Luq^VI1i(QuXcQ=vk3|u|LMTUw%px>` z7!WKi{w|Cvw3tt!x_{J(o%T#J{TlJJgsm(5J)2t7Z}Q<2Lqw6LAy%~Mt4prh? zm8@=D2PaN-|B)ka?n_i8cLK~7!i~vkysu+3Z3fofhbM4y$E!MiBSmG1m~-0tFTwi+ z$oRx5Gn$F{Vu0-*g(;7t5`2A~1B9U`mWsk8Km~3R6*mwfgDBaR?Urqw{mIA#7=E-kb0y(1YKQ?5E?sb)73CUb8f7G7$U%b|4Tx zSA(LEA}-r)5nI9ID_RluJ1SB1Ni!b3g1xGGjxZ{(BNq&}cK~}3d!j;<^4Qxu93l+B zuvlwX`rrA&D01))XE$tg|9w|iOJRli7?&L@C#o98pidmfGs>Bf({cPFGeU_tU|UP& zcYm|rR%CKPc1&^+i(OR@V~GO}C59sH**D(OBFivi_(nJBMgoe(HePWq#n8`LZ5pi_ zr7QVd4x6<}-ON6ZocLiZj>%ivWm%hX=#iOsFP)2)INS|Ltcvk7HdjuJIRL)}D3=%h z4xuiRsT>cK06uNN$|KAQMW_ismh3<5iB!U3Itp4YW`>(4+PY6 z8W-5nQHG>&rG$Ws&^UbU58y~24&p9}I&{=&lbF@Mu3q^eL|mlHa>EdH{g`5=wu4!1 z9L0fwx07$!{0FP6f=FVC<6T7n$jfm~d|PPoB+2H_uMTTO!ALRlew=5qST9{|5{-~A z04iaBK7$P$fs$PmJ;+uaNR!p3_mq88B(V%VRB~ z?8)_!-0slE{_T;>*eG3Zz<9GnIpJ4LJIr~5nHNHTc2u{a3S4UpI-$QAlV$s2RjkJB zCLeR&;x_P9)k@h971pctbbA^(JO6Y1O`lelfLkjn&{g&dY%IFXGDS)J0-)@B`9XFp zT@rERII~$@VeXxg{bLhA^7vEcr@`GcT&;To3+GXWYa`6O?X#c9GAo@G01EO+d#C>u z%?WUUEK6UlM_LQg;uhZejJ=)IWo1j&|HO`dRPOc>iro-d&{O@P(H+SVe`&;*_#*Ov zOGDS!kkn^f(6@~oRWfOw-L2VRmx3Kf z%@Qep3p82LQz9sNP_lBnEnMFstI%#xc3xWP<63ZdQV3RpJOGSo;p>{Hx?XJY+F9)p zr3P3wUU{s3R&U-Zp!D;@qXwJ*ik}hsk`%diyTZR7GP-!U3jHV=v|9DKJG{9!_ERGi zpH@g`B-K}qeVhvJx@T4al+wS-boNWPR>*5X-TvH)^l<%| zeEzHWy-$(CpU&z}PAsA~|Bf$ZN1b>sHIIP~3TOY*!ld|a=dwWAz0Lotm?hK{p|IDv z{R~x?c=Ne&%_Uv2_0(hRZ4|HyIj-o>i@^u`=dQ-S&j!UVoI6$t`R_wh?-%yljgL5s z2OK_0VTF%_=){J8({7y@Xym;7s~qjNgNMw_puU=5b)9^9lq30Z%=P9R+Efwu?dwJtIU;ZL>jO(&g8&~qB|!>11LIy&j>Eg;?1UyIkQo7$ zlu*hnuCQlfZktE-GV( z3UqcDaEViqLLA&W`6mz;5k77gXaqXr;!-y2bgV}fc5`Mvo0ZNTp%YPPq-azz01#cL zEM4_F&xJN591k$|&CLSb=ZICL`WNZBDx~$viM-iJMr=?as@p9???cvXk1>1K&tub6 ztsl5+_cKO2?@KMF4kU8t!mBO*=JF%LWB8`x7wpz}HAKhuDI+IEfzJ|Y#4GK}oC)Rx zWUG!{X{#{aDmF=Cvvk#5ze!3l`MCBkuu*<+^=URzvj01WHr+dhiR_|^D17v>B+$#s zB{#ic{G)sqlEdE*^$Ox2#FQ`QSPsw-qK(6faS^$0uGmpb_T+x*MIYMR7<-Bsv=%2z1}utMEZ_e5Jas@P#Ww^ zL)UFln?Hy|?tPq)PB*b!r(otcbH_&dF@#|^+&z=|(0D(U7D~#P&Q{-UJ8oqyh~4eo z|M^+h2MPx;LZo?4+<%2-Wexwr<}h^mtHOqCydg|A~&uv)1C` zDh1U;e|kLOSZ}DG$9CPbHFQ{duMm%chR)Y6!qgA$jYUqY&4#~ip(jS>GR>!cR`Md( zLII&Y&G=<~Uo+u%n17H(Pe&GJ-g{!2aLf4VFIg(p9$r3Qj=UX+H6&VSo0-lw*9r5? zOTT+At+@=d6TallM3*4?NTi$+=J5J5?tf8MUa|u?v}wL=k62EtJfQuI&vJDZm zL=oV=ReH?>6t&s*ZyZz@bv7FKFM3^m|D{D9^?KT!Ar+hu9-j4LK_Gbfch#Q!`YP9JU0yT{AmA(p2 z_-%sdZ#*fc4l|v~mE9InY7d&rEg=%3BsBbtX09)y1-I6+N#3NE@B4vpI+tmN;uaR` zKvv!tU{rv!yBmfSw#X7y}zi4J+ZN7(?QW(=U(@P@O?Ef68$%b}=< zImx*ySkPUt;eqto7wmA%P4EFH?gdj@vxinoeB~pk-v;1u&o&lUFa*u=FzA0veTO5F zM~@%urqdh)l>jQ|pS7BcC>jvPRc^2z%?0oMw&`6DaB4_)R%f5lNZ+i@1Z7(Gj(6Hrt1_ww%_}}keECPhQ*{|*~sp}hteEXCWMWe!5DvnZ?#v_`7Hq?;w(m6 zETDR{Qr2<$A#geQ*@t{hqz4?irU!`xC(;(tSVEu@j#gshz@f|25q|>1%yeQ4a#7_? z^Z)S0Y78>10=_w|mYy?U*)+%+uL{rzg+Oa9P4sE2wb=2jNs&@Ogaj)B`@j7*nr?`uS2@dR1;~@3rz=>kUT=W);sp9ReFlh$S z;aUm#n8M7j`9N@(#sZmd=4~H}_AXYmR50^XGZ;rvn(~?y6U~2En18n|^`ylui41vg zoL`bE!765K{w8r+siOEBYsK)>)NgWs1&JVtCMw}W_$NOWCW4a&dgg;Uq(s!(;F0*D z%~H;sI_FOTXt+YW+=r_wd|J>ls!D5#Pn#uT6e%JbR=^6{fLt+n5O>Ph+@<{fr3g((C!mC{UK4XC-AJU1Ac$ zbwDS}&yQ<85vRa$Tz&IJZ!yLlHid7biZi(1+%Fg#U2n-c(_22U0jqk$i5%3A9%`;; zJ<|l&bT?{y9n&HDg`A*A{1c3{;*DEfHqDC~S_07YpOSR``@SY2UHVRw?7|JEFmVbh z9~X^WP%)m>f{NTPUK*6TzZ-Z<#+>|Z&cacW0ZBZ9sIQ3RP?-G118< zB(1gDXL19z9hxZEC-P)nu03!~?mA1NQYKUz_)BI}hT)U={wKvti95m<2_L9I#{rjv zpl_m(aMP@wtZ7kV=xM5FYnJ{tiW;E+?TU>AJN%A$xGjz7uC)f|o+GeuvRW{dcDLL)>W2sNm263Lm zEoRL=EoXPoxF7VVUCKTu0=CeZkwQVP(TvE6hF051jy>+kj2^K;Us3xp1;wS4JWXUl z@c>+!f><%4AcjOBGqVNLErR8XjO-|?V8QTGUReZd)(x`t#JS1y*fIAI~H>BKjI`B$|yXrspIT>4@|hu?i3 zU!z>H)Pq$z;XZdO;|+|CLA9QzX$g!YzUWp6~;y zT~BwzRfSO%yvg5x=?aO5I$O)C%~8D>*hcUrMxap(|&K9VgLH@olYf0Qj1*TFH=9>ir0x&HjCn-|06Zas1tUe^66*>LrY;mHClVlfTWdv1 zEMA%>7fw-|`nVYcq-ceRb27ykq(M7qn@rSF5Oa6vtk6XT@ zkMiT_iWVVF+wsZ|8d0oyVE`?9Pi}-g-dfC&L+|HRf-IVu6r{zvo(>v12%mBTKT&|} zWg}DH>|qQ$vg>vcq&zN2_V_Yi^CdX3dV(`BrbJvuzIuQVcTnkXj0|bOuZhl3q(xAZ zY{zrzfzufN_i~#Mk{JT##Aw&0f*8oAI;9t4drH&n^56?3jd4ca$W5bFLSbKF@|rFfpo?A9x+F3BcV7`vS4HLKi%; zv1~NdP~AYYy4l5s8mK1v)mB)VT(wkcL(jF5%unNY+AYPzHA@AOafZN8l1I>68xOeu zkMEGQ9=bRcIXJDx&^`xyVi@jLao|Ow43g|_Mk!g?{DswNuva8@XIQa?+{h-1&C$A9 zN>2D)W!k8yksBmZ`uj0Voswc$so9rB3w-f;XVk0Ntg+wO6tEs)v2QiLkI#|pb@tb} zVl64f^7St*dCb=?a-F!enUj?QAWY(FPiSk^hBn2yU7qIlj8-!v%NOfMNGQRLf4aC0 z9H`#C@SF=Ru_U|*QEcx~o6gmHEZJx?uDNpsC zbol44v7TY8ae`Wp&7T}RRD;wJmER-PcHI)BHxx$eNeCBT!ADA>#q>|edAkRo&8E04 zu4k=O56X3dOOh$m)`>?O^hj%Lp>W7Ndrsuf$FKZdZiejwAY~>EeOEPirnYz|B*a!M z*IBHTXoI!)4TUf=^Jz$GkbTH{0%WAfZuwhH_`_or8EB}t39GPgn-Mt{IHmj!7_rEJQAbVJhb7M*6U4N7hgA`V`5Kd2c+j(&6= z=~&ggJcxnVqE)xC7v^t^)aIam$ks|yBwaZoQW?+^zM#qd{f<%`tp^Xs09_B=X9qOMz!Qv zl0bCfGpV1>ZUqKD1 z#Md(XS-Q|k8h__EaKeKkv)<&$ATt1vyqX_4`Ik z$cH8jeyK$wUUtB~TT+|ZFjGZv0a2{Wv0;B?<&W}0V$ZI+GMJkSD%qKT)>3soqjTV84uF72j4Y>BaL^eOlh z(yq{*S7?o20)oo>JLu%N*JZIykH8dC{8EtASrZvUJpEvude3#Z{i28$Rggu%0tTcGJThU0BeTQ_z9Zf4ze@}q z)LPBg&;ZE^IIr*qQ!7;BVv9i>OD>{k;uVBOu^K( zd}_?hVbkFt1;#a6S-$S#o{glQkO8u7M!jV73oBf!v(r}gv|pr}U>5mNtXaYuSrJu(F;>i4k|Krj4347NPLqoVIl6C?BqU5Gy%PTmCh6| za0@Bsu4LZ9(3pzTqiB?KxxVD%?~%VU7H2=Agt%ej5vE3Y|4q6`)YdFf-Dmx#ruXFN znAH%$q>>C9{zbf_unlGmE|FB2THr->%p*)CW*uMPFixnMjtqpcx2s67nh4u`-hksJ zdA5QiT})j9??QS?_pd4+$GzudtkcEA;vRBYE*AnV-{wa&kbKA-cM@t0sK7oKH(g!3 z;>X(mcXY^t{^|b6EK;Q`oF1#ZDF)S(FuC{iqAFg}_loWfH@5euF#cXW zeYXDvXS?%4z-^L6H@X>Fn^Qnn5k|T(I9!_Jp&>A&cm-5VF}|6LSCWP{LKf@ z1mNSSHV6T~^Y)G``edpbdD8r8dO_a_35+5^2F0u5N3~jF^GbuW;uz&8e-mz;K6QOk zY{W3YihvP?X$)gAp?CKSC{?7`sk<3qLp!wq$gB+G$J)!f!P(^=Ob+(yXGp!Pth{4N z2ihi@uE=C(nN6m6!Ip~oTJ42 z=&7xWn>^jSJ$0_Zpt-2$tx5$&WCsU*Y3_@zdfb* zbwH5-h>SuuGL-Oc&HBzfdF?X2%17YuNF|;>sfoBFJvxDouvAhmae?%cKa$+}-5lIB z61@H~qOPt~X{>OUZh0~Kn@_Trs9!996|cES)3d9TK>K98CZU(*E3~wxg$q#dSXB zJ|#@{QuwpRp7qN@YfL`j4vm_;XfmseV7uVHd{sT(uZ_ek0c;&W2vR^R8k@S!nCt%oC!=&3Xb52I@4HpZw?}TZV zUCT%R(I0^yi;v+029d=QHmjxA-e1XK?B0r)4#9-Ck^{t1t}U3`&{IBgn>bub#@c_V ztv!4MAS(!kaQmKBCMioX1_GLu>ep}xR&}xZ%yVvN^7j`h>Q(?aS~Um&U%e*^THSAg zkR}?I7iel&h~1nPgV3BwP1T4ZT6B&Zz1G~f;Yq9^QYMT4dP7I5eEL zc1FpgC_bgZc1WsIs)_da`n=QfVrtLJxYtdR86Hw&ct?rs7zMGoS&l7hkpf_g3q9pW zzL~VKxZFVB3>zWUc^AwcP{yI`+rE`w7wi$!GgP10r>Ii>k|=8pc5DcH+gVxs0{0M3 z%&@s97@1&RJ;d>ZwW^(@?(NQlI38M{xkgf5LVIN^CMZ%=qYCp&yFxDS(QoFSWdVdI ziF5oP!+R!26h%Z65rCf zbhBw~Ha&Oj2wf}UF1=b59iPay3FgxrF=E&vd4PP=NPSxgau1ioUdE^skZ)Z7^lB1g zPrMvooPFCZ2Ntp@!G(3^&l?ns{s6?5V3WTA_c&#As@6C+WR|pk@7X2@ie9|u0I88d z_euG;mqR~07OZ)O8buh-4+9G|_4BZ+7U4(rj&`8O1Gf*tjA35`5BL=%_p;Glif^5l z2!iPymxarocl(4IT>;0{2;=zxHnNRlmOI$zv)`^fcf36&;M)^v!v$XGH=xie27TtYc2oC+sXlICFnNQ}}z4^I>;= zfDwX`f{$l20OdGe%W?n$xI*Z8`&8Kx*M^))wHoJB!Tl%*U>RT*xjMB3KE{BS%$VVh z$hAqSNB6U}UO2}LT#m|P-JklE^H*%oTIJymgT+ru>M7 zGB~t}6ZYpadZkP~R^>0kMtdQ7BFF$isZ>|lpnq87mW%C;LkZL;8NcpjM75LrwOwpv zg`=Y}rIITD55L+rmpPmgV}J=~Z|^O)$zkEY55s^I5&C5)cq-@g*jZT&Bq!OiKvC!E zJSm+%eUYkY*{S51stnbXrjfzBy0}38JWx<+NtMXIvFsKE>CyI{VelInCBe)$5SlVC(@8E$!t*wHeMpy$0`~~dPCyh+E!#>gs@1%tg0^xSd)f zj+F!Q)AC{QsQxQDwx8h1iZGlC84w*jaak4VR-}9Bs@Vf+?4wnEyhw9u_5h`hqKnx1 zprGwc$Z)-TH=RtYP$;=-Kkc64;%sPWUQ#g`~Km$o_`xsc(t{TlAnGSOhp7 zx)>bhqX_Ahw0>kvyt~NhU8o-ytKR3U$&&*zp9CAtX8bj?uK8Wc5`H5T$Sg0qUvhU| zFzsC*uXh;AwdLRYdVvVWDBarakP3MNgT5rmQU_XRT2BU_bb-Tob8SRtBT`(NO{5MV0q z%<|DyqGSSPfmgIl-k9#y*}jjeZxU9`jPA9Zc{62O`f^qrHNhxy?;$|3CnlL^98@a+ zhK0>NpTK>a(vTJlJh8bS#_#>jc7=#&c7%!1jMSUN*}b+U3j{JWKJBEfJ&8l38QR@~HWcDT8bYU%fF>lWN5~LpO@FvJw#7)#-A})*<|{{Qww>>mPbE?2RM%|_%eQ@4 z76RiO&JRRO^LQf^9Bei5q(uug{Ns{4K!RmtRPQkyN)llu(f+sxQvj@Fn-Ye5xpD!< z=%AnOluJ3Pe;Q`WKJ7cMx^DSY85BWH-O24Z98>6{tE}A-ZBY)_o%xRDj?21qe4r6a zA^UQ59dv4vg!W6Ht8SQ9&f^UL+loJmr0}*CGXK60efe_e9nzgHT;rR+f=Is=zo_w5 zi9eD4BPanSr)#OdgynwEjPExDY9sK-S8o&U5nc*~IpdmcW3 z{VWZ>UoRk&Qa7c-KVIg_c`VyxL7rg(AA z1v77bwQa)QpV_(CFW@-Lt25qNobRZQ_ghzLtJ>*fLR#$#AkbV~o+H79s4-o~Arv&6B5PmtOnnRK zu+NYXR-j1Hyl%oAdnMiP;*m$ z?2jqiSNUc5owJLdv|v{1^@H;@>DsNtfPbp)>O5?^_t`iavZTG!E|HKQROEAOEj1Ct#mU3rSujjHVs7MEx|WsF z8+HgADzF~A1&0cr-AO<*T)t-n%F*Le-J3`~ zz+1>s)|us5TcSFCs#lBO=y-hYx|#c)vDZk)P4xqZ+6!)suU(5F!?T)5hVvTvr;~Y3 zl^{lBw>2OBwi>+-jU^p6xQAX_MCY11f{!%KUpwr5H=UZ4hijj_F-r-q%$Eq860O7w z41XV56GPy<9$sRRx6A($g5m{DTup*=s{^S+ENyL9eh}Q^yhXT(R;J4Hk@yp1x)^2% z&nkDOFvI5hma)$PuI1@yA%3J9pY?N2-YfZIB3xE0t`Rk%L39>Cj!f%!(X^UL0S9~$ z46IL+Db$;7)s^RhvdrN@xE-FRVz9RWM(s`t!q@dh650a&uqxuJIYzT!@u312wnSpy z*8}#TWUR&&vyiJ`hUa#qD&ox~O8c^@iNP&Yns6nZk(UO&$)(m$_~m_D&e=*j+ho4f zU#fkwxFY$BZ?2{1$r& zK1-n|pkxn{S|zi2MP>I+dX-dD~hntl4_n&#A;OHEA=qGZo)i0{UBC(o)w~t5UHE`yaSa Bgz*3X literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-server.png b/v1.14/_static/img/mascots/scylla-server.png new file mode 100644 index 0000000000000000000000000000000000000000..96dc785298bdb82ffdac74c64e6d360f12dfccff GIT binary patch literal 48529 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

                kp; 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-sleeping.png b/v1.14/_static/img/mascots/scylla-sleeping.png new file mode 100644 index 0000000000000000000000000000000000000000..f88598e05ad61c07b8fd4dd2df25db2c3b331ec5 GIT binary patch literal 12942 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 UO=AtOBHIEKWK^W9B;N=AKL$v=ApigX literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-tall-measure.png b/v1.14/_static/img/mascots/scylla-tall-measure.png new file mode 100644 index 0000000000000000000000000000000000000000..6f0ca146c0d4a9ca231919e5a38d26cecb176fd3 GIT binary patch literal 18996 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

                7V#U-M2EVk_UGHzyn=t98lh6Suk{M*aQ=9*yn^ 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 v$lNm9so>ZzZN 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/menu.svg b/v1.14/_static/img/menu.svg new file mode 100644 index 00000000000..30ea1d901e1 --- /dev/null +++ b/v1.14/_static/img/menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/v1.14/_static/img/scylladb-logo-horizontal.svg b/v1.14/_static/img/scylladb-logo-horizontal.svg new file mode 100644 index 00000000000..ad5cf5016f3 --- /dev/null +++ b/v1.14/_static/img/scylladb-logo-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v1.14/_static/js/main.bundle.js b/v1.14/_static/js/main.bundle.js new file mode 100644 index 00000000000..454abe3b00a --- /dev/null +++ b/v1.14/_static/js/main.bundle.js @@ -0,0 +1,2 @@ +/*! For license information please see main.bundle.js.LICENSE.txt */ +(self.webpackChunksphinx_scylladb_theme=self.webpackChunksphinx_scylladb_theme||[]).push([[792],{452:(t,e,n)=>{var i;self,i=function(t){return function(){"use strict";var e={"./js/foundation.abide.js":function(t,e,n){n.r(e),n.d(e,{Abide:function(){return f}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function l(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};this.$element=t,this.options=o().extend(!0,{},d.defaults,this.$element.data(),e),this.isEnabled=!0,this.formnovalidate=null,this.className="Abide",this._init()}},{key:"_init",value:function(){var t=this;this.$inputs=o().merge(this.$element.find("input").not('[type="submit"]'),this.$element.find("textarea, select")),this.$submits=this.$element.find('[type="submit"]');var e=this.$element.find("[data-abide-error]");this.options.a11yAttributes&&(this.$inputs.each((function(e,n){return t.addA11yAttributes(o()(n))})),e.each((function(e,n){return t.addGlobalErrorA11yAttributes(o()(n))}))),this._events()}},{key:"_events",value:function(){var t=this;this.$element.off(".abide").on("reset.zf.abide",(function(){t.resetForm()})).on("submit.zf.abide",(function(){return t.validateForm()})),this.$submits.off("click.zf.abide keydown.zf.abide").on("click.zf.abide keydown.zf.abide",(function(e){e.key&&" "!==e.key&&"Enter"!==e.key||(e.preventDefault(),t.formnovalidate=null!==e.target.getAttribute("formnovalidate"),t.$element.submit())})),"fieldChange"===this.options.validateOn&&this.$inputs.off("change.zf.abide").on("change.zf.abide",(function(e){t.validateInput(o()(e.target))})),this.options.liveValidate&&this.$inputs.off("input.zf.abide").on("input.zf.abide",(function(e){t.validateInput(o()(e.target))})),this.options.validateOnBlur&&this.$inputs.off("blur.zf.abide").on("blur.zf.abide",(function(e){t.validateInput(o()(e.target))}))}},{key:"_reflow",value:function(){this._init()}},{key:"_validationIsDisabled",value:function(){return!1===this.isEnabled||("boolean"==typeof this.formnovalidate?this.formnovalidate:!!this.$submits.length&&null!==this.$submits[0].getAttribute("formnovalidate"))}},{key:"enableValidation",value:function(){this.isEnabled=!0}},{key:"disableValidation",value:function(){this.isEnabled=!1}},{key:"requiredCheck",value:function(t){if(!t.attr("required"))return!0;var e=!0;switch(t[0].type){case"checkbox":e=t[0].checked;break;case"select":case"select-one":case"select-multiple":var n=t.find("option:selected");n.length&&n.val()||(e=!1);break;default:t.val()&&t.val().length||(e=!1)}return e}},{key:"findFormError",value:function(t,e){var n=this,i=t.length?t[0].id:"",o=t.siblings(this.options.formErrorSelector);return o.length||(o=t.parent().find(this.options.formErrorSelector)),i&&(o=o.add(this.$element.find('[data-form-error-for="'.concat(i,'"]')))),e&&(o=o.not("[data-form-error-on]"),e.forEach((function(e){o=(o=o.add(t.siblings('[data-form-error-on="'.concat(e,'"]')))).add(n.$element.find('[data-form-error-for="'.concat(i,'"][data-form-error-on="').concat(e,'"]')))}))),o}},{key:"findLabel",value:function(t){var e=t[0].id,n=this.$element.find('label[for="'.concat(e,'"]'));return n.length?n:t.closest("label")}},{key:"findRadioLabels",value:function(t){var e=this,n=t.map((function(t,n){var i=n.id,r=e.$element.find('label[for="'.concat(i,'"]'));return r.length||(r=o()(n).closest("label")),r[0]}));return o()(n)}},{key:"findCheckboxLabels",value:function(t){var e=this,n=t.map((function(t,n){var i=n.id,r=e.$element.find('label[for="'.concat(i,'"]'));return r.length||(r=o()(n).closest("label")),r[0]}));return o()(n)}},{key:"addErrorClasses",value:function(t,e){var n=this.findLabel(t),i=this.findFormError(t,e);n.length&&n.addClass(this.options.labelErrorClass),i.length&&i.addClass(this.options.formErrorClass),t.addClass(this.options.inputErrorClass).attr({"data-invalid":"","aria-invalid":!0}),i.filter(":visible").length&&this.addA11yErrorDescribe(t,i)}},{key:"addA11yAttributes",value:function(t){var e=this.findFormError(t),n=e.filter("label");if(e.length){var i=e.filter(":visible").first();if(i.length&&this.addA11yErrorDescribe(t,i),n.filter("[for]").length=s&&(i=!0)),!0!==this.initialized&&s>1||(n.each((function(t,n){i?e.removeErrorClasses(o()(n)):e.addErrorClasses(o()(n),["required"])})),i)}},{key:"matchValidation",value:function(t,e,n){var i=this;return n=!!n,-1===e.split(" ").map((function(e){return i.options.validators[e](t,n,t.parent())})).indexOf(!1)}},{key:"resetForm",value:function(){var t=this.$element,e=this.options;o()(".".concat(e.labelErrorClass),t).not("small").removeClass(e.labelErrorClass),o()(".".concat(e.inputErrorClass),t).not("small").removeClass(e.inputErrorClass),o()("".concat(e.formErrorSelector,".").concat(e.formErrorClass)).removeClass(e.formErrorClass),t.find("[data-abide-error]").css("display","none"),o()(":input",t).not(":button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]").val("").attr({"data-invalid":null,"aria-invalid":null}),o()(":input:radio",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),o()(":input:checkbox",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),t.trigger("formreset.zf.abide",[t])}},{key:"_destroy",value:function(){var t=this;this.$element.off(".abide").find("[data-abide-error]").css("display","none"),this.$inputs.off(".abide").each((function(){t.removeErrorClasses(o()(this))})),this.$submits.off(".abide")}}],n&&l(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),d}(r.Plugin);f.defaults={validateOn:"fieldChange",labelErrorClass:"is-invalid-label",inputErrorClass:"is-invalid-input",formErrorSelector:".form-error",formErrorClass:"is-visible",a11yAttributes:!0,a11yErrorLevel:"assertive",liveValidate:!1,validateOnBlur:!1,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^((?:(https?|ftps?|file|ssh|sftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,website:{test:function(t){return f.defaults.patterns.domain.test(t)||f.defaults.patterns.url.test(t)}}},validators:{equalTo:function(t){return o()("#".concat(t.attr("data-equalto"))).val()===t.val()}}}},"./js/foundation.accordion.js":function(t,e,n){n.r(e),n.d(e,{Accordion:function(){return d}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js");function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){for(var n=0;n'),t.options.submenuToggle?(n.addClass("has-submenu-toggle"),n.children("a").after('")):n.attr({"aria-controls":r,"aria-expanded":s,id:e}),i.attr({"aria-labelledby":e,"aria-hidden":!s,role:"group",id:r})}));var e=this.$element.find(".is-active");e.length&&e.each((function(){t.down(o()(this))})),this._events()}},{key:"_events",value:function(){var t=this;this.$element.find("li").each((function(){var e=o()(this).children("[data-submenu]");e.length&&(t.options.submenuToggle?o()(this).children(".submenu-toggle").off("click.zf.accordionMenu").on("click.zf.accordionMenu",(function(){t.toggle(e)})):o()(this).children("a").off("click.zf.accordionMenu").on("click.zf.accordionMenu",(function(n){n.preventDefault(),t.toggle(e)})))})).on("keydown.zf.accordionMenu",(function(e){var n,i,s=o()(this),a=s.parent("ul").children("li"),l=s.children("[data-submenu]");a.each((function(t){if(o()(this).is(s))return n=a.eq(Math.max(0,t-1)).find("a").first(),i=a.eq(Math.min(t+1,a.length-1)).find("a").first(),o()(this).children("[data-submenu]:visible").length&&(i=s.find("li:first-child").find("a").first()),o()(this).is(":first-child")?n=s.parents("li").first().find("a").first():n.parents("li").first().children("[data-submenu]:visible").length&&(n=n.parents("li").find("li:last-child").find("a").first()),void(o()(this).is(":last-child")&&(i=s.parents("li").first().next("li").find("a").first()))})),r.Keyboard.handleKey(e,"AccordionMenu",{open:function(){l.is(":hidden")&&(t.down(l),l.find("li").first().find("a").first().focus())},close:function(){l.length&&!l.is(":hidden")?t.up(l):s.parent("[data-submenu]").length&&(t.up(s.parent("[data-submenu]")),s.parents("li").first().find("a").first().focus())},up:function(){return n.focus(),!0},down:function(){return i.focus(),!0},toggle:function(){return!t.options.submenuToggle&&(s.children("[data-submenu]").length?(t.toggle(s.children("[data-submenu]")),!0):void 0)},closeAll:function(){t.hideAll()},handled:function(t){t&&e.preventDefault()}})}))}},{key:"hideAll",value:function(){this.up(this.$element.find("[data-submenu]"))}},{key:"showAll",value:function(){this.down(this.$element.find("[data-submenu]"))}},{key:"toggle",value:function(t){t.is(":animated")||(t.is(":hidden")?this.down(t):this.up(t))}},{key:"down",value:function(t){var e=this;if(!this.options.multiOpen){var n=t.parentsUntil(this.$element).add(t).add(t.find(".is-active")),i=this.$element.find(".is-active").not(n);this.up(i)}t.addClass("is-active").attr({"aria-hidden":!1}),this.options.submenuToggle?t.prev(".submenu-toggle").attr({"aria-expanded":!0}):t.parent(".is-accordion-submenu-parent").attr({"aria-expanded":!0}),t.slideDown(this.options.slideSpeed,(function(){e.$element.trigger("down.zf.accordionMenu",[t])}))}},{key:"up",value:function(t){var e=this,n=t.find("[data-submenu]"),i=t.add(n);n.slideUp(0),i.removeClass("is-active").attr("aria-hidden",!0),this.options.submenuToggle?i.prev(".submenu-toggle").attr("aria-expanded",!1):i.parent(".is-accordion-submenu-parent").attr("aria-expanded",!1),t.slideUp(this.options.slideSpeed,(function(){e.$element.trigger("up.zf.accordionMenu",[t])}))}},{key:"_destroy",value:function(){this.$element.find("[data-submenu]").slideDown(0).css("display",""),this.$element.find("a").off("click.zf.accordionMenu"),this.$element.find("[data-is-parent-link]").detach(),this.options.submenuToggle&&(this.$element.find(".has-submenu-toggle").removeClass("has-submenu-toggle"),this.$element.find(".submenu-toggle").remove()),s.Nest.Burn(this.$element,"accordion")}}])&&u(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),p}(n("./js/foundation.core.plugin.js").Plugin);d.defaults={parentLink:!1,slideSpeed:250,submenuToggle:!1,submenuToggleText:"Toggle menu",multiOpen:!0}},"./js/foundation.core.js":function(t,e,n){n.r(e),n.d(e,{Foundation:function(){return l}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.mediaQuery.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var l={version:"6.8.1",_plugins:{},_uuids:[],plugin:function(t,e){var n=e||u(t),i=c(n);this._plugins[i]=this[n]=t},registerPlugin:function(t,e){var n=e?c(e):u(t.constructor).toLowerCase();t.uuid=(0,r.GetYoDigits)(6,n),t.$element.attr("data-".concat(n))||t.$element.attr("data-".concat(n),t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf.".concat(n)),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var e=c(u(t.$element.data("zfPlugin").constructor));for(var n in this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-".concat(e)).removeData("zfPlugin").trigger("destroyed.zf.".concat(e)),t)"function"==typeof t[n]&&(t[n]=null)},reInit:function(t){var e=t instanceof o();try{if(e)t.each((function(){o()(this).data("zfPlugin")._init()}));else{var n=a(t),i=this;({object:function(t){t.forEach((function(t){t=c(t),o()("[data-"+t+"]").foundation("_init")}))},string:function(){t=c(t),o()("[data-"+t+"]").foundation("_init")},undefined:function(){this.object(Object.keys(i._plugins))}})[n](t)}}catch(t){console.error(t)}finally{return t}},reflow:function(t,e){void 0===e?e=Object.keys(this._plugins):"string"==typeof e&&(e=[e]);var n=this;o().each(e,(function(e,i){var r=n._plugins[i];o()(t).find("[data-"+i+"]").addBack("[data-"+i+"]").filter((function(){return void 0===o()(this).data("zfPlugin")})).each((function(){var t=o()(this),e={reflow:!0};t.attr("data-options")&&t.attr("data-options").split(";").forEach((function(t){var n,i=t.split(":").map((function(t){return t.trim()}));i[0]&&(e[i[0]]="true"===(n=i[1])||"false"!==n&&(isNaN(1*n)?n:parseFloat(n)))}));try{t.data("zfPlugin",new r(o()(this),e))}catch(t){console.error(t)}finally{return}}))}))},getFnName:u,addToJquery:function(){return o().fn.foundation=function(t){var e=a(t),n=o()(".no-js");if(n.length&&n.removeClass("no-js"),"undefined"===e)s.MediaQuery._init(),l.reflow(this);else{if("string"!==e)throw new TypeError("We're sorry, ".concat(e," is not a valid parameter. You must use a string representing the method you wish to invoke."));var i=Array.prototype.slice.call(arguments,1),r=this.data("zfPlugin");if(void 0===r||void 0===r[t])throw new ReferenceError("We're sorry, '"+t+"' is not an available method for "+(r?u(r):"this element")+".");1===this.length?r[t].apply(r,i):this.each((function(e,n){r[t].apply(o()(n).data("zfPlugin"),i)}))}return this},o()}};function u(t){if(void 0===Function.prototype.name){var e=/function\s([^(]{1,})\(/.exec(t.toString());return e&&e.length>1?e[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function c(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}l.util={throttle:function(t,e){var n=null;return function(){var i=this,o=arguments;null===n&&(n=setTimeout((function(){t.apply(i,o),n=null}),e))}}},window.Foundation=l,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e0&&void 0!==arguments[0]?arguments[0]:6,e=arguments.length>1?arguments[1]:void 0,n="",i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=e.ignoreLeaveWindow,i=void 0!==n&&n,r=e.ignoreReappear,s=void 0!==r&&r;return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a'),e.data("savedHref",e.attr("href")).removeAttr("href").attr("tabindex",0),e.children("[data-submenu]").attr({"aria-hidden":!0,tabindex:0,role:"group"}),t._events(e)})),this.$submenus.each((function(){var e=o()(this);if(!e.find(".js-drilldown-back").length)switch(t.options.backButtonPosition){case"bottom":e.append(t.options.backButton);break;case"top":e.prepend(t.options.backButton);break;default:console.error("Unsupported backButtonPosition value '"+t.options.backButtonPosition+"'")}t._back(e)})),this.$submenus.addClass("invisible"),this.options.autoHeight||this.$submenus.addClass("drilldown-submenu-cover-previous"),this.$element.parent().hasClass("is-drilldown")||(this.$wrapper=o()(this.options.wrapper).addClass("is-drilldown"),this.options.animateHeight&&this.$wrapper.addClass("animate-height"),this.$element.wrap(this.$wrapper)),this.$wrapper=this.$element.parent(),this.$wrapper.css(this._getMaxDims())}},{key:"_resize",value:function(){this.$wrapper.css({"max-width":"none","min-height":"none"}),this.$wrapper.css(this._getMaxDims())}},{key:"_events",value:function(t){var e=this;t.off("click.zf.drilldown").on("click.zf.drilldown",(function(n){if(o()(n.target).parentsUntil("ul","li").hasClass("is-drilldown-submenu-parent")&&n.preventDefault(),e._show(t.parent("li")),e.options.closeOnClick){var i=o()("body");i.off(".zf.drilldown").on("click.zf.drilldown",(function(t){t.target===e.$element[0]||o().contains(e.$element[0],t.target)||(t.preventDefault(),e._hideAll(),i.off(".zf.drilldown"))}))}}))}},{key:"_registerEvents",value:function(){this.options.scrollTop&&(this._bindHandler=this._scrollTop.bind(this),this.$element.on("open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown",this._bindHandler)),this.$element.on("mutateme.zf.trigger",this._resize.bind(this))}},{key:"_scrollTop",value:function(){var t=this,e=""!==t.options.scrollTopElement?o()(t.options.scrollTopElement):t.$element,n=parseInt(e.offset().top+t.options.scrollTopOffset,10);o()("html, body").stop(!0).animate({scrollTop:n},t.options.animationDuration,t.options.animationEasing,(function(){this===o()("html")[0]&&t.$element.trigger("scrollme.zf.drilldown")}))}},{key:"_keyboardEvents",value:function(){var t=this;this.$menuItems.add(this.$element.find(".js-drilldown-back > a, .is-submenu-parent-item > a")).on("keydown.zf.drilldown",(function(e){var n,i,s=o()(this),l=s.parent("li").parent("ul").children("li").children("a");l.each((function(t){if(o()(this).is(s))return n=l.eq(Math.max(0,t-1)),void(i=l.eq(Math.min(t+1,l.length-1)))})),r.Keyboard.handleKey(e,"Drilldown",{next:function(){if(s.is(t.$submenuAnchors))return t._show(s.parent("li")),s.parent("li").one((0,a.transitionend)(s),(function(){s.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()})),!0},previous:function(){return t._hide(s.parent("li").parent("ul")),s.parent("li").parent("ul").one((0,a.transitionend)(s),(function(){setTimeout((function(){s.parent("li").parent("ul").parent("li").children("a").first().focus()}),1)})),!0},up:function(){return n.focus(),!s.is(t.$element.find("> li:first-child > a"))},down:function(){return i.focus(),!s.is(t.$element.find("> li:last-child > a"))},close:function(){s.is(t.$element.find("> li > a"))||(t._hide(s.parent().parent()),s.parent().parent().siblings("a").focus())},open:function(){return(!t.options.parentLink||!s.attr("href"))&&(s.is(t.$menuItems)?s.is(t.$submenuAnchors)?(t._show(s.parent("li")),s.parent("li").one((0,a.transitionend)(s),(function(){s.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()})),!0):void 0:(t._hide(s.parent("li").parent("ul")),s.parent("li").parent("ul").one((0,a.transitionend)(s),(function(){setTimeout((function(){s.parent("li").parent("ul").parent("li").children("a").first().focus()}),1)})),!0))},handled:function(t){t&&e.preventDefault()}})}))}},{key:"_hideAll",value:function(){var t=this,e=this.$element.find(".is-drilldown-submenu.is-active");if(e.addClass("is-closing"),e.parent().closest("ul").removeClass("invisible"),this.options.autoHeight){var n=e.parent().closest("ul").data("calcHeight");this.$wrapper.css({height:n})}this.$element.trigger("close.zf.drilldown"),e.one((0,a.transitionend)(e),(function(){e.removeClass("is-active is-closing"),t.$element.trigger("closed.zf.drilldown")}))}},{key:"_back",value:function(t){var e=this;t.off("click.zf.drilldown"),t.children(".js-drilldown-back").on("click.zf.drilldown",(function(){e._hide(t);var n=t.parent("li").parent("ul").parent("li");n.length?e._show(n):e.$currentMenu=e.$element}))}},{key:"_menuLinkEvents",value:function(){var t=this;this.$menuItems.not(".is-drilldown-submenu-parent").off("click.zf.drilldown").on("click.zf.drilldown",(function(){setTimeout((function(){t._hideAll()}),0)}))}},{key:"_setShowSubMenuClasses",value:function(t,e){t.addClass("is-active").removeClass("invisible").attr("aria-hidden",!1),t.parent("li").attr("aria-expanded",!0),!0===e&&this.$element.trigger("open.zf.drilldown",[t])}},{key:"_setHideSubMenuClasses",value:function(t,e){t.removeClass("is-active").addClass("invisible").attr("aria-hidden",!0),t.parent("li").attr("aria-expanded",!1),!0===e&&t.trigger("hide.zf.drilldown",[t])}},{key:"_showMenu",value:function(t,e){var n=this;if(this.$element.find('li[aria-expanded="true"] > ul[data-submenu]').each((function(){n._setHideSubMenuClasses(o()(this))})),this.$currentMenu=t,t.is("[data-drilldown]"))return!0===e&&t.find("li > a").first().focus(),void(this.options.autoHeight&&this.$wrapper.css("height",t.data("calcHeight")));var i=t.children().first().parentsUntil("[data-drilldown]","[data-submenu]");i.each((function(r){0===r&&n.options.autoHeight&&n.$wrapper.css("height",o()(this).data("calcHeight"));var s=r===i.length-1;!0===s&&o()(this).one((0,a.transitionend)(o()(this)),(function(){!0===e&&t.find("li > a").first().focus()})),n._setShowSubMenuClasses(o()(this),s)}))}},{key:"_show",value:function(t){var e=t.children("[data-submenu]");t.attr("aria-expanded",!0),this.$currentMenu=e,t.parent().closest("ul").addClass("invisible"),e.addClass("is-active visible").removeClass("invisible").attr("aria-hidden",!1),this.options.autoHeight&&this.$wrapper.css({height:e.data("calcHeight")}),this.$element.trigger("open.zf.drilldown",[t])}},{key:"_hide",value:function(t){this.options.autoHeight&&this.$wrapper.css({height:t.parent().closest("ul").data("calcHeight")}),t.parent().closest("ul").removeClass("invisible"),t.parent("li").attr("aria-expanded",!1),t.attr("aria-hidden",!0),t.addClass("is-closing").one((0,a.transitionend)(t),(function(){t.removeClass("is-active is-closing visible"),t.blur().addClass("invisible")})),t.trigger("hide.zf.drilldown",[t])}},{key:"_getMaxDims",value:function(){var t=0,e={},n=this;return this.$submenus.add(this.$element).each((function(){var e=l.Box.GetDimensions(this).height;t=e>t?e:t,n.options.autoHeight&&o()(this).data("calcHeight",e)})),this.options.autoHeight?e.height=this.$currentMenu.data("calcHeight"):e["min-height"]="".concat(t,"px"),e["max-width"]="".concat(this.$element[0].getBoundingClientRect().width,"px"),e}},{key:"_destroy",value:function(){o()("body").off(".zf.drilldown"),this.options.scrollTop&&this.$element.off(".zf.drilldown",this._bindHandler),this._hideAll(),this.$element.off("mutateme.zf.trigger"),s.Nest.Burn(this.$element,"drilldown"),this.$element.unwrap().find(".js-drilldown-back, .is-submenu-parent-item").remove().end().find(".is-active, .is-closing, .is-drilldown-submenu").removeClass("is-active is-closing is-drilldown-submenu").off("transitionend otransitionend webkitTransitionEnd").end().find("[data-submenu]").removeAttr("aria-hidden tabindex role"),this.$submenuAnchors.each((function(){o()(this).off(".zf.drilldown")})),this.$element.find("[data-is-parent-link]").detach(),this.$submenus.removeClass("drilldown-submenu-cover-previous invisible"),this.$element.find("a").each((function(){var t=o()(this);t.removeAttr("tabindex"),t.data("savedHref")&&t.attr("href",t.data("savedHref")).removeData("savedHref")}))}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(n("./js/foundation.core.plugin.js").Plugin);h.defaults={autoApplyClass:!0,backButton:'
              1. Back
              2. ',backButtonPosition:"top",wrapper:"
                ",parentLink:!1,closeOnClick:!1,autoHeight:!1,animateHeight:!1,scrollTop:!1,scrollTopElement:"",scrollTopOffset:0,animationDuration:500,animationEasing:"swing"}},"./js/foundation.dropdown.js":function(t,e,n){n.r(e),n.d(e,{Dropdown:function(){return v}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.positionable.js"),l=n("./js/foundation.util.triggers.js"),u=n("./js/foundation.util.touch.js");function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function f(t,e){for(var n=0;n-1,l=s?t.$tabs:r.siblings("li").add(r);l.each((function(t){if(o()(this).is(r))return n=l.eq(t-1),void(i=l.eq(t+1))}));var u=function(){i.children("a:first").focus(),e.preventDefault()},c=function(){n.children("a:first").focus(),e.preventDefault()},f=function(){var n=r.children("ul.is-dropdown-submenu");n.length&&(t._show(n),r.find("li > a:first").focus(),e.preventDefault())},d=function(){var n=r.parent("ul").parent("li");n.children("a:first").focus(),t._hide(n),e.preventDefault()},h={open:f,close:function(){t._hide(t.$element),t.$menuItems.eq(0).children("a").focus(),e.preventDefault()}};s?t._isVertical()?t._isRtl()?o().extend(h,{down:u,up:c,next:d,previous:f}):o().extend(h,{down:u,up:c,next:f,previous:d}):t._isRtl()?o().extend(h,{next:c,previous:u,down:f,up:d}):o().extend(h,{next:u,previous:c,down:f,up:d}):t._isRtl()?o().extend(h,{next:d,previous:f,down:u,up:c}):o().extend(h,{next:f,previous:d,down:u,up:c}),a.Keyboard.handleKey(e,"DropdownMenu",h)}))}},{key:"_addBodyHandler",value:function(){var t=this,e=o()(document.body);this._removeBodyHandler(),e.on("click.zf.dropdownMenu tap.zf.dropdownMenu",(function(e){o()(e.target).closest(t.$element).length||(t._hide(),t._removeBodyHandler())}))}},{key:"_removeBodyHandler",value:function(){o()(document.body).off("click.zf.dropdownMenu tap.zf.dropdownMenu")}},{key:"_show",value:function(t){var e=this.$tabs.index(this.$tabs.filter((function(e,n){return o()(n).find(t).length>0}))),n=t.parent("li.is-dropdown-submenu-parent").siblings("li.is-dropdown-submenu-parent");this._hide(n,e),t.css("visibility","hidden").addClass("js-dropdown-active").parent("li.is-dropdown-submenu-parent").addClass("is-active");var i=u.Box.ImNotTouchingYou(t,null,!0);if(!i){var r="left"===this.options.alignment?"-right":"-left",s=t.parent(".is-dropdown-submenu-parent");s.removeClass("opens".concat(r)).addClass("opens-".concat(this.options.alignment)),(i=u.Box.ImNotTouchingYou(t,null,!0))||s.removeClass("opens-".concat(this.options.alignment)).addClass("opens-inner"),this.changed=!0}t.css("visibility",""),this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdownMenu",[t])}},{key:"_hide",value:function(t,e){var n;if((n=t&&t.length?t:void 0!==e?this.$tabs.not((function(t){return t===e})):this.$element).hasClass("is-active")||n.find(".is-active").length>0){var i=n.find("li.is-active");if(i.add(n).attr({"data-is-click":!1}).removeClass("is-active"),n.find("ul.js-dropdown-active").removeClass("js-dropdown-active"),this.changed||n.find("opens-inner").length){var o="left"===this.options.alignment?"right":"left";n.find("li.is-dropdown-submenu-parent").add(n).removeClass("opens-inner opens-".concat(this.options.alignment)).addClass("opens-".concat(o)),this.changed=!1}clearTimeout(i.data("_delay")),this._removeBodyHandler(),this.$element.trigger("hide.zf.dropdownMenu",[n])}}},{key:"_destroy",value:function(){this.$menuItems.off(".zf.dropdownMenu").removeAttr("data-is-click").removeClass("is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner"),o()(document.body).off(".zf.dropdownMenu"),l.Nest.Burn(this.$element,"dropdown")}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),m}(r.Plugin);v.defaults={disableHover:!1,disableHoverOnTouch:!0,autoclose:!0,hoverDelay:50,clickOpen:!1,closingTime:500,alignment:"auto",closeOnClick:!0,closeOnClickInside:!0,verticalClass:"vertical",rightClass:"align-right",forceFollow:!0}},"./js/foundation.equalizer.js":function(t,e,n){n.r(e),n.d(e,{Equalizer:function(){return d}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.imageLoader.js"),a=n("./js/foundation.core.utils.js");function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){for(var n=0;n0,this.isNested=this.$element.parentsUntil(document.body,"[data-equalizer]").length>0,this.isOn=!1,this._bindHandler={onResizeMeBound:this._onResizeMe.bind(this),onPostEqualizedBound:this._onPostEqualized.bind(this)};var n,i=this.$element.find("img");this.options.equalizeOn?(n=this._checkMQ(),o()(window).on("changed.zf.mediaquery",this._checkMQ.bind(this))):this._events(),(void 0!==n&&!1===n||void 0===n)&&(i.length?(0,s.onImagesLoaded)(i,this._reflow.bind(this)):this._reflow())}},{key:"_pauseEvents",value:function(){this.isOn=!1,this.$element.off({".zf.equalizer":this._bindHandler.onPostEqualizedBound,"resizeme.zf.trigger":this._bindHandler.onResizeMeBound,"mutateme.zf.trigger":this._bindHandler.onResizeMeBound})}},{key:"_onResizeMe",value:function(){this._reflow()}},{key:"_onPostEqualized",value:function(t){t.target!==this.$element[0]&&this._reflow()}},{key:"_events",value:function(){this._pauseEvents(),this.hasNested?this.$element.on("postequalized.zf.equalizer",this._bindHandler.onPostEqualizedBound):(this.$element.on("resizeme.zf.trigger",this._bindHandler.onResizeMeBound),this.$element.on("mutateme.zf.trigger",this._bindHandler.onResizeMeBound)),this.isOn=!0}},{key:"_checkMQ",value:function(){var t=!r.MediaQuery.is(this.options.equalizeOn);return t?this.isOn&&(this._pauseEvents(),this.$watched.css("height","auto")):this.isOn||this._events(),t}},{key:"_killswitch",value:function(){}},{key:"_reflow",value:function(){if(!this.options.equalizeOnStack&&this._isStacked())return this.$watched.css("height","auto"),!1;this.options.equalizeByRow?this.getHeightsByRow(this.applyHeightByRow.bind(this)):this.getHeights(this.applyHeight.bind(this))}},{key:"_isStacked",value:function(){return!this.$watched[0]||!this.$watched[1]||this.$watched[0].getBoundingClientRect().top!==this.$watched[1].getBoundingClientRect().top}},{key:"getHeights",value:function(t){for(var e=[],n=0,i=this.$watched.length;nn;if(this.scrollPos=n,n0&&"push"===this.options.transition&&(this.options.contentScroll=!1);var r=this.$element.attr("class").match(/\bin-canvas-for-(\w+)/);r&&2===r.length?this.options.inCanvasOn=r[1]:this.options.inCanvasOn&&this.$element.addClass("in-canvas-for-".concat(this.options.inCanvasOn)),this.options.inCanvasOn&&this._checkInCanvas(),this._removeContentClasses()}},{key:"_events",value:function(){var t=this;this.$element.off(".zf.trigger .zf.offCanvas").on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"keydown.zf.offCanvas":this._handleKeyboard.bind(this)}),!0===this.options.closeOnClick&&(this.options.contentOverlay?this.$overlay:this.$content).on({"click.zf.offCanvas":this.close.bind(this)}),this.options.inCanvasOn&&o()(window).on("changed.zf.mediaquery",(function(){t._checkInCanvas()}))}},{key:"_setMQChecker",value:function(){var t=this;this.onLoadListener=(0,s.onLoad)(o()(window),(function(){l.MediaQuery.atLeast(t.options.revealOn)&&t.reveal(!0)})),o()(window).on("changed.zf.mediaquery",(function(){l.MediaQuery.atLeast(t.options.revealOn)?t.reveal(!0):t.reveal(!1)}))}},{key:"_checkInCanvas",value:function(){this.isInCanvas=l.MediaQuery.atLeast(this.options.inCanvasOn),!0===this.isInCanvas&&this.close()}},{key:"_removeContentClasses",value:function(t){"boolean"!=typeof t?this.$content.removeClass(this.contentClasses.base.join(" ")):!1===t&&this.$content.removeClass("has-reveal-".concat(this.position))}},{key:"_addContentClasses",value:function(t){this._removeContentClasses(t),"boolean"!=typeof t?this.$content.addClass("has-transition-".concat(this.options.transition," has-position-").concat(this.position)):!0===t&&this.$content.addClass("has-reveal-".concat(this.position))}},{key:"_fixStickyElements",value:function(){this.$sticky.each((function(t,e){var n=o()(e);if("fixed"===n.css("position")){var i=parseInt(n.css("top"),10);n.data("offCanvasSticky",{top:i});var r=o()(document).scrollTop()+i;n.css({top:"".concat(r,"px"),width:"100%",transition:"none"})}}))}},{key:"_unfixStickyElements",value:function(){this.$sticky.each((function(t,e){var n=o()(e),i=n.data("offCanvasSticky");"object"===c(i)&&(n.css({top:"".concat(i.top,"px"),width:"",transition:""}),n.data("offCanvasSticky",""))}))}},{key:"reveal",value:function(t){t?(this.close(),this.isRevealed=!0,this.$element.attr("aria-hidden","false"),this.$element.off("open.zf.trigger toggle.zf.trigger"),this.$element.removeClass("is-closed")):(this.isRevealed=!1,this.$element.attr("aria-hidden","true"),this.$element.off("open.zf.trigger toggle.zf.trigger").on({"open.zf.trigger":this.open.bind(this),"toggle.zf.trigger":this.toggle.bind(this)}),this.$element.addClass("is-closed")),this._addContentClasses(t)}},{key:"_stopScrolling",value:function(){return!1}},{key:"_recordScrollable",value:function(t){this.lastY=t.touches[0].pageY}},{key:"_preventDefaultAtEdges",value:function(t){var e=this,n=t.data,i=e.lastY-t.touches[0].pageY;e.lastY=t.touches[0].pageY,n._canScroll(i,e)||t.preventDefault()}},{key:"_scrollboxTouchMoved",value:function(t){var e=this,n=t.data,i=e.closest("[data-off-canvas], [data-off-canvas-scrollbox-outer]"),o=e.lastY-t.touches[0].pageY;i.lastY=e.lastY=t.touches[0].pageY,t.stopPropagation(),n._canScroll(o,e)||(n._canScroll(o,i)?i.scrollTop+=o:t.preventDefault())}},{key:"_canScroll",value:function(t,e){var n=t<0,i=t>0,o=e.scrollTop>0,r=e.scrollTop1&&this.geoSync(),this.options.accessible&&this.$wrapper.attr("tabindex",0)}},{key:"_loadBullets",value:function(){this.$bullets=this.$element.find(".".concat(this.options.boxOfBullets)).find("button")}},{key:"geoSync",value:function(){var t=this;this.timer=new a.Timer(this.$element,{duration:this.options.timerDelay,infinite:!1},(function(){t.changeSlide(!0)})),this.timer.start()}},{key:"_prepareForOrbit",value:function(){this._setWrapperHeight()}},{key:"_setWrapperHeight",value:function(t){var e,n=0,i=0,r=this;this.$slides.each((function(){e=this.getBoundingClientRect().height,o()(this).attr("data-slide",i),/mui/g.test(o()(this)[0].className)||r.$slides.filter(".is-active")[0]===r.$slides.eq(i)[0]||o()(this).css({display:"none"}),n=e>n?e:n,i++})),i===this.$slides.length&&(this.$wrapper.css({height:n}),t&&t(n))}},{key:"_setSlideHeight",value:function(t){this.$slides.each((function(){o()(this).css("max-height",t)}))}},{key:"_events",value:function(){var t=this;this.$element.off(".resizeme.zf.trigger").on({"resizeme.zf.trigger":this._prepareForOrbit.bind(this)}),this.$slides.length>1&&(this.options.swipe&&this.$slides.off("swipeleft.zf.orbit swiperight.zf.orbit").on("swipeleft.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(!0)})).on("swiperight.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(!1)})),this.options.autoPlay&&(this.$slides.on("click.zf.orbit",(function(){t.$element.data("clickedOn",!t.$element.data("clickedOn")),t.timer[t.$element.data("clickedOn")?"pause":"start"]()})),this.options.pauseOnHover&&this.$element.on("mouseenter.zf.orbit",(function(){t.timer.pause()})).on("mouseleave.zf.orbit",(function(){t.$element.data("clickedOn")||t.timer.start()}))),this.options.navButtons&&this.$element.find(".".concat(this.options.nextClass,", .").concat(this.options.prevClass)).attr("tabindex",0).on("click.zf.orbit touchend.zf.orbit",(function(e){e.preventDefault(),t.changeSlide(o()(this).hasClass(t.options.nextClass))})),this.options.bullets&&this.$bullets.on("click.zf.orbit touchend.zf.orbit",(function(){if(/is-active/g.test(this.className))return!1;var e=o()(this).data("slide"),n=e>t.$slides.filter(".is-active").data("slide"),i=t.$slides.eq(e);t.changeSlide(n,i,e)})),this.options.accessible&&this.$wrapper.add(this.$bullets).on("keydown.zf.orbit",(function(e){r.Keyboard.handleKey(e,"Orbit",{next:function(){t.changeSlide(!0)},previous:function(){t.changeSlide(!1)},handled:function(){o()(e.target).is(t.$bullets)&&t.$bullets.filter(".is-active").focus()}})})))}},{key:"_reset",value:function(){void 0!==this.$slides&&this.$slides.length>1&&(this.$element.off(".zf.orbit").find("*").off(".zf.orbit"),this.options.autoPlay&&this.timer.restart(),this.$slides.each((function(t){o()(t).removeClass("is-active is-active is-in").removeAttr("aria-live").hide()})),this.$slides.first().addClass("is-active").show(),this.$element.trigger("slidechange.zf.orbit",[this.$slides.first()]),this.options.bullets&&this._updateBullets(0))}},{key:"changeSlide",value:function(t,e,n){if(this.$slides){var i=this.$slides.filter(".is-active").eq(0);if(/mui/g.test(i[0].className))return!1;var o,r=this.$slides.first(),a=this.$slides.last(),l=t?"Right":"Left",u=t?"Left":"Right",c=this;(o=e||(t?this.options.infiniteWrap?i.next(".".concat(this.options.slideClass)).length?i.next(".".concat(this.options.slideClass)):r:i.next(".".concat(this.options.slideClass)):this.options.infiniteWrap?i.prev(".".concat(this.options.slideClass)).length?i.prev(".".concat(this.options.slideClass)):a:i.prev(".".concat(this.options.slideClass)))).length&&(this.$element.trigger("beforeslidechange.zf.orbit",[i,o]),this.options.bullets&&(n=n||this.$slides.index(o),this._updateBullets(n)),this.options.useMUI&&!this.$element.is(":hidden")?(s.Motion.animateIn(o.addClass("is-active"),this.options["animInFrom".concat(l)],(function(){o.css({display:"block"}).attr("aria-live","polite")})),s.Motion.animateOut(i.removeClass("is-active"),this.options["animOutTo".concat(u)],(function(){i.removeAttr("aria-live"),c.options.autoPlay&&!c.timer.isPaused&&c.timer.restart()}))):(i.removeClass("is-active is-in").removeAttr("aria-live").hide(),o.addClass("is-active is-in").attr("aria-live","polite").show(),this.options.autoPlay&&!this.timer.isPaused&&this.timer.restart()),this.$element.trigger("slidechange.zf.orbit",[o]))}}},{key:"_updateBullets",value:function(t){var e=this.$bullets.filter(".is-active"),n=this.$bullets.not(".is-active"),i=this.$bullets.eq(t);e.removeClass("is-active").blur(),i.addClass("is-active");var r=e.children("[data-slide-active-label]").last();if(!r.length){var s=e.children("span");n.toArray().map((function(t){return o()(t).children("span").length})).every((function(t){return t1?i[0]:"small",a=i.length>1?i[1]:i[0];null!==v[a]&&(t[s]=v[a])}this.rules=t}this._getAllOptions(),o().isEmptyObject(this.rules)||this._checkMediaQueries()}},{key:"_getAllOptions",value:function(){var t=this;for(var e in t.allOptions={},v)if(v.hasOwnProperty(e)){var n=v[e];try{var i=o()("
                  "),r=new n.plugin(i,t.options);for(var s in r.options)if(r.options.hasOwnProperty(s)&&"zfPlugin"!==s){var a=r.options[s];t.allOptions[s]=a}r.destroy()}catch(t){console.warn("Warning: Problems getting Accordion/Tab options: ".concat(t))}}}},{key:"_events",value:function(){this._changedZfMediaQueryHandler=this._checkMediaQueries.bind(this),o()(window).on("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}},{key:"_checkMediaQueries",value:function(){var t,e=this;o().each(this.rules,(function(e){r.MediaQuery.atLeast(e)&&(t=e)})),t&&(this.currentPlugin instanceof this.rules[t].plugin||(o().each(v,(function(t,n){e.$element.removeClass(n.cssClass)})),this.$element.addClass(this.rules[t].cssClass),this.currentPlugin&&(!this.currentPlugin.$element.data("zfPlugin")&&this.storezfData&&this.currentPlugin.$element.data("zfPlugin",this.storezfData),this.currentPlugin.destroy()),this._handleMarkup(this.rules[t].cssClass),this.currentRule=this.rules[t],this.currentPlugin=new this.currentRule.plugin(this.$element,this.options),this.storezfData=this.currentPlugin.$element.data("zfPlugin")))}},{key:"_handleMarkup",value:function(t){var e=this,n="accordion",i=o()("[data-tabs-content="+this.$element.attr("id")+"]");if(i.length&&(n="tabs"),n!==t){var r=e.allOptions.linkClass?e.allOptions.linkClass:"tabs-title",a=e.allOptions.panelClass?e.allOptions.panelClass:"tabs-panel";this.$element.removeAttr("role");var l=this.$element.children("."+r+",[data-accordion-item]").removeClass(r).removeClass("accordion-item").removeAttr("data-accordion-item"),u=l.children("a").removeClass("accordion-title");if("tabs"===n?(i=i.children("."+a).removeClass(a).removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby")).children("a").removeAttr("role").removeAttr("aria-controls").removeAttr("aria-selected"):i=l.children("[data-tab-content]").removeClass("accordion-content"),i.css({display:"",visibility:""}),l.css({display:"",visibility:""}),"accordion"===t)i.each((function(t,n){o()(n).appendTo(l.get(t)).addClass("accordion-content").attr("data-tab-content","").removeClass("is-active").css({height:""}),o()("[data-tabs-content="+e.$element.attr("id")+"]").after('
                  ').detach(),l.addClass("accordion-item").attr("data-accordion-item",""),u.addClass("accordion-title")}));else if("tabs"===t){var c=o()("[data-tabs-content="+e.$element.attr("id")+"]"),f=o()("#tabs-placeholder-"+e.$element.attr("id"));f.length?(c=o()('
                  ').insertAfter(f).attr("data-tabs-content",e.$element.attr("id")),f.remove()):c=o()('
                  ').insertAfter(e.$element).attr("data-tabs-content",e.$element.attr("id")),i.each((function(t,e){var n=o()(e).appendTo(c).addClass(a),i=u.get(t).hash.slice(1),r=o()(e).attr("id")||(0,s.GetYoDigits)(6,"accordion");i!==r&&(""!==i?o()(e).attr("id",i):(i=r,o()(e).attr("id",i),o()(u.get(t)).attr("href",o()(u.get(t)).attr("href").replace("#","")+"#"+i))),o()(l.get(t)).hasClass("is-active")&&n.addClass("is-active")})),l.addClass(r)}}}},{key:"open",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.open)return(t=this.currentRule).open.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"close",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.close)return(t=this.currentRule).close.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"toggle",value:function(){var t;if(this.currentRule&&"function"==typeof this.currentRule.toggle)return(t=this.currentRule).toggle.apply(t,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"_destroy",value:function(){this.currentPlugin&&this.currentPlugin.destroy(),o()(window).off("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}}],n&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(a.Plugin);m.defaults={}},"./js/foundation.responsiveMenu.js":function(t,e,n){n.r(e),n.d(e,{ResponsiveMenu:function(){return m}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.core.plugin.js"),l=n("./js/foundation.dropdownMenu.js"),u=n("./js/foundation.drilldown.js"),c=n("./js/foundation.accordionMenu.js");function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function d(t,e){for(var n=0;n1?i[0]:"small",l=i.length>1?i[1]:i[0];null!==v[l]&&(t[a]=v[l])}this.rules=t}o().isEmptyObject(this.rules)||this._checkMediaQueries(),this.$element.attr("data-mutate",this.$element.attr("data-mutate")||(0,s.GetYoDigits)(6,"responsive-menu"))}},{key:"_events",value:function(){var t=this;o()(window).on("changed.zf.mediaquery",(function(){t._checkMediaQueries()}))}},{key:"_checkMediaQueries",value:function(){var t,e=this;o().each(this.rules,(function(e){r.MediaQuery.atLeast(e)&&(t=e)})),t&&(this.currentPlugin instanceof this.rules[t].plugin||(o().each(v,(function(t,n){e.$element.removeClass(n.cssClass)})),this.$element.addClass(this.rules[t].cssClass),this.currentPlugin&&this.currentPlugin.destroy(),this.currentPlugin=new this.rules[t].plugin(this.$element,{})))}},{key:"_destroy",value:function(){this.currentPlugin.destroy(),o()(window).off(".zf.ResponsiveMenu")}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(a.Plugin);m.defaults={}},"./js/foundation.responsiveToggle.js":function(t,e,n){n.r(e),n.d(e,{ResponsiveToggle:function(){return f}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.motion.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function l(t,e){for(var n=0;n").addClass("reveal-overlay"+t).appendTo(this.options.appendTo)}},{key:"_updatePosition",value:function(){var t,e=this.$element.outerWidth(),n=o()(window).width(),i=this.$element.outerHeight(),r=o()(window).height(),s=null;t="auto"===this.options.hOffset?parseInt((n-e)/2,10):parseInt(this.options.hOffset,10),"auto"===this.options.vOffset?s=i>r?parseInt(Math.min(100,r/10),10):parseInt((r-i)/4,10):null!==this.options.vOffset&&(s=parseInt(this.options.vOffset,10)),null!==s&&this.$element.css({top:s+"px"}),this.$overlay&&"auto"===this.options.hOffset||(this.$element.css({left:t+"px"}),this.$element.css({margin:"0px"}))}},{key:"_events",value:function(){var t=this,e=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":function(n,i){if(n.target===e.$element[0]||o()(n.target).parents("[data-closable]")[0]===i)return t.close.apply(t)},"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":function(){e._updatePosition()}}),this.options.closeOnClick&&this.options.overlay&&this.$overlay.off(".zf.reveal").on("click.zf.dropdown tap.zf.dropdown",(function(t){t.target!==e.$element[0]&&!o().contains(e.$element[0],t.target)&&o().contains(document,t.target)&&e.close()})),this.options.deepLink&&o()(window).on("hashchange.zf.reveal:".concat(this.id),this._handleState.bind(this))}},{key:"_handleState",value:function(){window.location.hash!=="#"+this.id||this.isActive?this.close():this.open()}},{key:"_disableScroll",value:function(t){t=t||o()(window).scrollTop(),o()(document).height()>o()(window).height()&&o()("html").css("top",-t)}},{key:"_enableScroll",value:function(t){t=t||parseInt(o()("html").css("top"),10),o()(document).height()>o()(window).height()&&(o()("html").css("top",""),o()(window).scrollTop(-t))}},{key:"open",value:function(){var t=this,e="#".concat(this.id);this.options.deepLink&&window.location.hash!==e&&(window.history.pushState?this.options.updateHistory?window.history.pushState({},"",e):window.history.replaceState({},"",e):window.location.hash=e),this.$activeAnchor=o()(document.activeElement).is(this.$anchor)?o()(document.activeElement):this.$anchor,this.isActive=!0,this.$element.css({visibility:"hidden"}).show().scrollTop(0),this.options.overlay&&this.$overlay.css({visibility:"hidden"}).show(),this._updatePosition(),this.$element.hide().css({visibility:""}),this.$overlay&&(this.$overlay.css({visibility:""}).hide(),this.$element.hasClass("fast")?this.$overlay.addClass("fast"):this.$element.hasClass("slow")&&this.$overlay.addClass("slow")),this.options.multipleOpened||this.$element.trigger("closeme.zf.reveal",this.id),0===o()(".reveal:visible").length&&this._disableScroll();var n=this;this.options.animationIn?(this.options.overlay&&u.Motion.animateIn(this.$overlay,"fade-in"),u.Motion.animateIn(this.$element,this.options.animationIn,(function(){t.$element&&(t.focusableElements=a.Keyboard.findFocusable(t.$element),n.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),n._addGlobalClasses(),a.Keyboard.trapFocus(n.$element))}))):(this.options.overlay&&this.$overlay.show(0),this.$element.show(this.options.showDelay)),this.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),a.Keyboard.trapFocus(this.$element),this._addGlobalClasses(),this._addGlobalListeners(),this.$element.trigger("open.zf.reveal")}},{key:"_addGlobalClasses",value:function(){var t=function(){o()("html").toggleClass("zf-has-scroll",!!(o()(document).height()>o()(window).height()))};this.$element.on("resizeme.zf.trigger.revealScrollbarListener",(function(){return t()})),t(),o()("html").addClass("is-reveal-open")}},{key:"_removeGlobalClasses",value:function(){this.$element.off("resizeme.zf.trigger.revealScrollbarListener"),o()("html").removeClass("is-reveal-open"),o()("html").removeClass("zf-has-scroll")}},{key:"_addGlobalListeners",value:function(){var t=this;this.$element&&(this.focusableElements=a.Keyboard.findFocusable(this.$element),this.options.overlay||!this.options.closeOnClick||this.options.fullScreen||o()("body").on("click.zf.dropdown tap.zf.dropdown",(function(e){e.target!==t.$element[0]&&!o().contains(t.$element[0],e.target)&&o().contains(document,e.target)&&t.close()})),this.options.closeOnEsc&&o()(window).on("keydown.zf.reveal",(function(e){a.Keyboard.handleKey(e,"Reveal",{close:function(){t.options.closeOnEsc&&t.close()}})})))}},{key:"close",value:function(){if(!this.isActive||!this.$element.is(":visible"))return!1;var t=this;function e(){var e=parseInt(o()("html").css("top"),10);0===o()(".reveal:visible").length&&t._removeGlobalClasses(),a.Keyboard.releaseFocus(t.$element),t.$element.attr("aria-hidden",!0),0===o()(".reveal:visible").length&&t._enableScroll(e),t.$element.trigger("closed.zf.reveal")}if(this.options.animationOut?(this.options.overlay&&u.Motion.animateOut(this.$overlay,"fade-out"),u.Motion.animateOut(this.$element,this.options.animationOut,e)):(this.$element.hide(this.options.hideDelay),this.options.overlay?this.$overlay.hide(0,e):e()),this.options.closeOnEsc&&o()(window).off("keydown.zf.reveal"),!this.options.overlay&&this.options.closeOnClick&&o()("body").off("click.zf.dropdown tap.zf.dropdown"),this.$element.off("keydown.zf.reveal"),this.options.resetOnClose&&this.$element.html(this.$element.html()),this.isActive=!1,t.options.deepLink&&window.location.hash==="#".concat(this.id))if(window.history.replaceState){var n=window.location.pathname+window.location.search;this.options.updateHistory?window.history.pushState({},"",n):window.history.replaceState("",document.title,n)}else window.location.hash="";this.$activeAnchor.focus()}},{key:"toggle",value:function(){this.isActive?this.close():this.open()}},{key:"_destroy",value:function(){this.options.overlay&&(this.$element.appendTo(o()(this.options.appendTo)),this.$overlay.hide().off().remove()),this.$element.hide().off(),this.$anchor.off(".zf"),o()(window).off(".zf.reveal:".concat(this.id)),this.onLoadListener&&o()(window).off(this.onLoadListener),0===o()(".reveal:visible").length&&this._removeGlobalClasses()}}])&&h(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),y}(r.Plugin);m.defaults={animationIn:"",animationOut:"",showDelay:0,hideDelay:0,closeOnClick:!0,closeOnEsc:!0,multipleOpened:!1,vOffset:"auto",hOffset:"auto",fullScreen:!1,overlay:!0,resetOnClose:!1,deepLink:!1,updateHistory:!1,appendTo:"body",additionalOverlayClasses:""}},"./js/foundation.slider.js":function(t,e,n){n.r(e),n.d(e,{Slider:function(){return v}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.util.motion.js"),a=n("./js/foundation.core.utils.js"),l=n("./js/foundation.core.plugin.js"),u=n("./js/foundation.util.touch.js"),c=n("./js/foundation.util.triggers.js");function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function d(t,e){for(var n=0;n1?this.inputs.eq(1):o()("#".concat(this.$handle2.attr("aria-controls"))),this.inputs[1]||(this.inputs=this.inputs.add(this.$input2)),this._setInitAttr(1)),this.setHandles(),this._events(),this.initialized=!0}},{key:"setHandles",value:function(){var t=this;this.handles[1]?this._setHandlePos(this.$handle,this.inputs.eq(0).val(),(function(){t._setHandlePos(t.$handle2,t.inputs.eq(1).val())})):this._setHandlePos(this.$handle,this.inputs.eq(0).val())}},{key:"_reflow",value:function(){this.setHandles()}},{key:"_pctOfBar",value:function(t){var e=m(t-this.options.start,this.options.end-this.options.start);switch(this.options.positionValueFunction){case"pow":e=this._logTransform(e);break;case"log":e=this._powTransform(e)}return e.toFixed(2)}},{key:"_value",value:function(t){switch(this.options.positionValueFunction){case"pow":t=this._powTransform(t);break;case"log":t=this._logTransform(t)}return this.options.vertical?parseFloat(this.options.end)+t*(this.options.start-this.options.end):(this.options.end-this.options.start)*t+parseFloat(this.options.start)}},{key:"_logTransform",value:function(t){return function(t,e){return Math.log(e)/Math.log(t)}(this.options.nonLinearBase,t*(this.options.nonLinearBase-1)+1)}},{key:"_powTransform",value:function(t){return(Math.pow(this.options.nonLinearBase,t)-1)/(this.options.nonLinearBase-1)}},{key:"_setHandlePos",value:function(t,e,n){if(!this.$element.hasClass(this.options.disabledClass)){(e=parseFloat(e))this.options.end&&(e=this.options.end);var i=this.options.doubleSided;if(i)if(0===this.handles.index(t)){var o=parseFloat(this.$handle2.attr("aria-valuenow"));e=e>=o?o-this.options.step:e}else{var r=parseFloat(this.$handle.attr("aria-valuenow"));e=e<=r?r+this.options.step:e}var a=this,l=this.options.vertical,u=l?"height":"width",c=l?"top":"left",f=t[0].getBoundingClientRect()[u],d=this.$element[0].getBoundingClientRect()[u],h=this._pctOfBar(e),p=(100*m((d-f)*h,d)).toFixed(this.options.decimal);e=parseFloat(e.toFixed(this.options.decimal));var v={};if(this._setValues(t,e),i){var y,g=0===this.handles.index(t),b=Math.floor(100*m(f,d));if(g)v[c]="".concat(p,"%"),y=parseFloat(this.$handle2[0].style[c])-p+b,n&&"function"==typeof n&&n();else{var w=parseFloat(this.$handle[0].style[c]);y=p-(isNaN(w)?(this.options.initialStart-this.options.start)/((this.options.end-this.options.start)/100):w)+b}v["min-".concat(u)]="".concat(y,"%")}var k=this.$element.data("dragging")?1e3/60:this.options.moveTime;(0,s.Move)(k,t,(function(){isNaN(p)?t.css(c,"".concat(100*h,"%")):t.css(c,"".concat(p,"%")),a.options.doubleSided?a.$fill.css(v):a.$fill.css(u,"".concat(100*h,"%"))})),this.initialized&&(this.$element.one("finished.zf.animate",(function(){a.$element.trigger("moved.zf.slider",[t])})),clearTimeout(a.timeout),a.timeout=setTimeout((function(){a.$element.trigger("changed.zf.slider",[t])}),a.options.changedDelay))}}},{key:"_setInitAttr",value:function(t){var e=0===t?this.options.initialStart:this.options.initialEnd,n=this.inputs.eq(t).attr("id")||(0,a.GetYoDigits)(6,"slider");this.inputs.eq(t).attr({id:n,max:this.options.end,min:this.options.start,step:this.options.step}),this.inputs.eq(t).val(e),this.handles.eq(t).attr({role:"slider","aria-controls":n,"aria-valuemax":this.options.end,"aria-valuemin":this.options.start,"aria-valuenow":e,"aria-orientation":this.options.vertical?"vertical":"horizontal",tabindex:0})}},{key:"_setValues",value:function(t,e){var n=this.options.doubleSided?this.handles.index(t):0;this.inputs.eq(n).val(e),t.attr("aria-valuenow",e)}},{key:"_handleEvent",value:function(t,e,n){var i;if(n)i=this._adjustValue(null,n);else{t.preventDefault();var r=this.options.vertical,s=r?"height":"width",l=r?"top":"left",u=r?t.pageY:t.pageX,c=this.$element[0].getBoundingClientRect()[s],f=r?o()(window).scrollTop():o()(window).scrollLeft(),d=this.$element.offset()[l];t.clientY===t.pageY&&(u+=f);var h,p=u-d,v=m(h=p<0?0:p>c?c:p,c);i=this._value(v),(0,a.rtl)()&&!this.options.vertical&&(i=this.options.end-i),i=this._adjustValue(null,i),e||(e=y(this.$handle,l,h,s)<=y(this.$handle2,l,h,s)?this.$handle:this.$handle2)}this._setHandlePos(e,i)}},{key:"_adjustValue",value:function(t,e){var n,i,o,r=this.options.step,s=parseFloat(r/2);return 0===(i=(n=t?parseFloat(t.attr("aria-valuenow")):e)>=0?n%r:r+n%r)?n:n=n>=(o=n-i)+s?o+r:o}},{key:"_events",value:function(){this._eventsForHandle(this.$handle),this.handles[1]&&this._eventsForHandle(this.$handle2)}},{key:"_eventsForHandle",value:function(t){var e,n=this,i=function(t){var e=n.inputs.index(o()(this));n._handleEvent(t,n.handles.eq(e),o()(this).val())};if(this.inputs.off("keyup.zf.slider").on("keyup.zf.slider",(function(t){13===t.keyCode&&i.call(this,t)})),this.inputs.off("change.zf.slider").on("change.zf.slider",i),this.options.clickSelect&&this.$element.off("click.zf.slider").on("click.zf.slider",(function(t){if(n.$element.data("dragging"))return!1;o()(t.target).is("[data-slider-handle]")||(n.options.doubleSided?n._handleEvent(t):n._handleEvent(t,n.$handle))})),this.options.draggable){this.handles.addTouch();var s=o()("body");t.off("mousedown.zf.slider").on("mousedown.zf.slider",(function(i){t.addClass("is-dragging"),n.$fill.addClass("is-dragging"),n.$element.data("dragging",!0),e=o()(i.currentTarget),s.on("mousemove.zf.slider",(function(t){t.preventDefault(),n._handleEvent(t,e)})).on("mouseup.zf.slider",(function(i){n._handleEvent(i,e),t.removeClass("is-dragging"),n.$fill.removeClass("is-dragging"),n.$element.data("dragging",!1),s.off("mousemove.zf.slider mouseup.zf.slider")}))})).on("selectstart.zf.slider touchmove.zf.slider",(function(t){t.preventDefault()}))}t.off("keydown.zf.slider").on("keydown.zf.slider",(function(e){var i,s=o()(this),a=(n.options.doubleSided&&n.handles.index(s),parseFloat(t.attr("aria-valuenow")));r.Keyboard.handleKey(e,"Slider",{decrease:function(){i=a-n.options.step},increase:function(){i=a+n.options.step},decreaseFast:function(){i=a-10*n.options.step},increaseFast:function(){i=a+10*n.options.step},min:function(){i=n.options.start},max:function(){i=n.options.end},handled:function(){e.preventDefault(),n._setHandlePos(s,i)}})}))}},{key:"_destroy",value:function(){this.handles.off(".zf.slider"),this.inputs.off(".zf.slider"),this.$element.off(".zf.slider"),clearTimeout(this.timeout)}}])&&d(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),g}(l.Plugin);function m(t,e){return t/e}function y(t,e,n,i){return Math.abs(t.position()[e]+t[i]()/2-n)}v.defaults={start:0,end:100,step:1,initialStart:0,initialEnd:100,binding:!1,clickSelect:!0,vertical:!1,draggable:!0,disabled:!1,doubleSided:!1,decimal:2,moveTime:200,disabledClass:"disabled",invertVertical:!1,changedDelay:500,nonLinearBase:5,positionValueFunction:"linear"}},"./js/foundation.smoothScroll.js":function(t,e,n){n.r(e),n.d(e,{SmoothScroll:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js");function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function a(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:h.defaults,n=arguments.length>2?arguments[2]:void 0,i=o()(t);if(!i.length)return!1;var r=Math.round(i.offset().top-e.threshold/2-e.offset);o()("html, body").stop(!0).animate({scrollTop:r},e.animationDuration,e.animationEasing,(function(){"function"==typeof n&&n()}))}}],(n=[{key:"_setup",value:function(t,e){this.$element=t,this.options=o().extend({},h.defaults,this.$element.data(),e),this.className="SmoothScroll",this._init()}},{key:"_init",value:function(){var t=this.$element[0].id||(0,r.GetYoDigits)(6,"smooth-scroll");this.$element.attr({id:t}),this._events()}},{key:"_events",value:function(){this._linkClickListener=this._handleLinkClick.bind(this),this.$element.on("click.zf.smoothScroll",this._linkClickListener),this.$element.on("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}},{key:"_handleLinkClick",value:function(t){var e=this;if(o()(t.currentTarget).is('a[href^="#"]')){var n=t.currentTarget.getAttribute("href");this._inTransition=!0,h.scrollToLoc(n,this.options,(function(){e._inTransition=!1})),t.preventDefault()}}},{key:"_destroy",value:function(){this.$element.off("click.zf.smoothScroll",this._linkClickListener),this.$element.off("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}}])&&a(e.prototype,n),i&&a(e,i),Object.defineProperty(e,"prototype",{writable:!1}),h}(n("./js/foundation.core.plugin.js").Plugin);c.defaults={animationDuration:500,animationEasing:"linear",threshold:50,offset:0}},"./js/foundation.sticky.js":function(t,e,n){n.r(e),n.d(e,{Sticky:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.mediaQuery.js"),l=n("./js/foundation.util.triggers.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n=n.topPoint))})),n._events(e.split("-").reverse().join("-"))}))}},{key:"_parsePoints",value:function(){for(var t=[""===this.options.topAnchor?1:this.options.topAnchor,""===this.options.btmAnchor?document.documentElement.scrollHeight:this.options.btmAnchor],e={},n=0,i=t.length;n=this.topPoint?e<=this.bottomPoint?this.isStuck||this._setSticky():this.isStuck&&this._removeSticky(!1):this.isStuck&&this._removeSticky(!0)}},{key:"_setSticky",value:function(){var t=this,e=this.options.stickTo,n="top"===e?"marginTop":"marginBottom",i="top"===e?"bottom":"top",o={};o[n]="".concat(this.options[n],"em"),o[e]=0,o[i]="auto",this.isStuck=!0,this.$element.removeClass("is-anchored is-at-".concat(i)).addClass("is-stuck is-at-".concat(e)).css(o).trigger("sticky.zf.stuckto:".concat(e)),this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",(function(){t._setSizes()}))}},{key:"_removeSticky",value:function(t){var e=this.options.stickTo,n="top"===e,i={},o=(this.points?this.points[1]-this.points[0]:this.anchorHeight)-this.elemHeight,r=t?"top":"bottom";i[n?"marginTop":"marginBottom"]=0,i.bottom="auto",i.top=t?0:o,this.isStuck=!1,this.$element.removeClass("is-stuck is-at-".concat(e)).addClass("is-anchored is-at-".concat(r)).css(i).trigger("sticky.zf.unstuckfrom:".concat(r))}},{key:"_setSizes",value:function(t){this.canStick=a.MediaQuery.is(this.options.stickyOn),this.canStick||t&&"function"==typeof t&&t();var e=this.$container[0].getBoundingClientRect().width,n=window.getComputedStyle(this.$container[0]),i=parseInt(n["padding-left"],10),o=parseInt(n["padding-right"],10);if(this.$anchor&&this.$anchor.length?this.anchorHeight=this.$anchor[0].getBoundingClientRect().height:this._parsePoints(),this.$element.css({"max-width":"".concat(e-i-o,"px")}),this.options.dynamicHeight||!this.containerHeight){var r=this.$element[0].getBoundingClientRect().height||this.containerHeight;r="none"===this.$element.css("display")?0:r,this.$container.css("height",r),this.containerHeight=r}if(this.elemHeight=this.containerHeight,!this.isStuck&&this.$element.hasClass("is-at-bottom")){var s=(this.points?this.points[1]-this.$container.offset().top:this.anchorHeight)-this.elemHeight;this.$element.css("top",s)}this._setBreakPoints(this.containerHeight,(function(){t&&"function"==typeof t&&t()}))}},{key:"_setBreakPoints",value:function(t,e){if(!this.canStick){if(!e||"function"!=typeof e)return!1;e()}var n=p(this.options.marginTop),i=p(this.options.marginBottom),o=this.points?this.points[0]:this.$anchor.offset().top,r=this.points?this.points[1]:o+this.anchorHeight,s=window.innerHeight;"top"===this.options.stickTo?(o-=n,r-=t+n):"bottom"===this.options.stickTo&&(o-=s-(t+i),r-=s-i),this.topPoint=o,this.bottomPoint=r,e&&"function"==typeof e&&e()}},{key:"_destroy",value:function(){this._removeSticky(!0),this.$element.removeClass("".concat(this.options.stickyClass," is-anchored is-at-top")).css({height:"",top:"",bottom:"","max-width":""}).off("resizeme.zf.trigger").off("mutateme.zf.trigger"),this.$anchor&&this.$anchor.length&&this.$anchor.off("change.zf.sticky"),this.scrollListener&&o()(window).off(this.scrollListener),this.onLoadListener&&o()(window).off(this.onLoadListener),this.wasWrapped?this.$element.unwrap():this.$container.removeClass(this.options.containerClass).css({height:""})}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(r.Plugin);function p(t){return parseInt(window.getComputedStyle(document.body,null).fontSize,10)*t}h.defaults={container:"
                  ",stickTo:"top",anchor:"",topAnchor:"",btmAnchor:"",marginTop:1,marginBottom:1,stickyOn:"medium",stickyClass:"sticky",containerClass:"sticky-container",dynamicHeight:!0,checkEvery:-1}},"./js/foundation.tabs.js":function(t,e,n){n.r(e),n.d(e,{Tabs:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js"),l=n("./js/foundation.util.imageLoader.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n=0?e.slice(1):e,i=n&&o()("#".concat(n)),r=e&&t.$element.find('[href$="'.concat(e,'"],[data-tabs-target="').concat(n,'"]')).first();if(i.length&&r.length){if(i&&i.length&&r&&r.length?t.selectTab(i,!0):t._collapse(),t.options.deepLinkSmudge){var s=t.$element.offset();o()("html, body").animate({scrollTop:s.top-t.options.deepLinkSmudgeOffset},t.options.deepLinkSmudgeDelay)}t.$element.trigger("deeplink.zf.tabs",[r,i])}},this.options.deepLink&&this._checkDeepLink(),this._events(),this._isInitializing=!1}},{key:"_events",value:function(){this._addKeyHandler(),this._addClickHandler(),this._setHeightMqHandler=null,this.options.matchHeight&&(this._setHeightMqHandler=this._setHeight.bind(this),o()(window).on("changed.zf.mediaquery",this._setHeightMqHandler)),this.options.deepLink&&o()(window).on("hashchange",this._checkDeepLink)}},{key:"_addClickHandler",value:function(){var t=this;this.$element.off("click.zf.tabs").on("click.zf.tabs",".".concat(this.options.linkClass),(function(e){e.preventDefault(),t._handleTabChange(o()(this))}))}},{key:"_addKeyHandler",value:function(){var t=this;this.$tabTitles.off("keydown.zf.tabs").on("keydown.zf.tabs",(function(e){if(9!==e.which){var n,i,r=o()(this),s=r.parent("ul").children("li");s.each((function(e){o()(this).is(r)&&(t.options.wrapOnKeys?(n=0===e?s.last():s.eq(e-1),i=e===s.length-1?s.first():s.eq(e+1)):(n=s.eq(Math.max(0,e-1)),i=s.eq(Math.min(e+1,s.length-1))))})),a.Keyboard.handleKey(e,"Tabs",{open:function(){r.find('[role="tab"]').focus(),t._handleTabChange(r)},previous:function(){n.find('[role="tab"]').focus(),t._handleTabChange(n)},next:function(){i.find('[role="tab"]').focus(),t._handleTabChange(i)},handled:function(){e.preventDefault()}})}}))}},{key:"_handleTabChange",value:function(t,e){if(t.hasClass("".concat(this.options.linkActiveClass)))this.options.activeCollapse&&this._collapse();else{var n=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass)),i=t.find('[role="tab"]'),o=i.attr("data-tabs-target"),r=o&&o.length?"#".concat(o):i[0].hash,s=this.$tabContent.find(r);this._collapseTab(n),this._openTab(t),this.options.deepLink&&!e&&(this.options.updateHistory?history.pushState({},"",r):history.replaceState({},"",r)),this.$element.trigger("change.zf.tabs",[t,s]),s.find("[data-mutate]").trigger("mutateme.zf.trigger")}}},{key:"_openTab",value:function(t){var e=t.find('[role="tab"]'),n=e.attr("data-tabs-target")||e[0].hash.slice(1),i=this.$tabContent.find("#".concat(n));t.addClass("".concat(this.options.linkActiveClass)),e.attr({"aria-selected":"true",tabindex:"0"}),i.addClass("".concat(this.options.panelActiveClass)).removeAttr("aria-hidden")}},{key:"_collapseTab",value:function(t){var e=t.removeClass("".concat(this.options.linkActiveClass)).find('[role="tab"]').attr({"aria-selected":"false",tabindex:-1});o()("#".concat(e.attr("aria-controls"))).removeClass("".concat(this.options.panelActiveClass)).attr({"aria-hidden":"true"})}},{key:"_collapse",value:function(){var t=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass));t.length&&(this._collapseTab(t),this.$element.trigger("collapse.zf.tabs",[t]))}},{key:"selectTab",value:function(t,e){var n,i;(n="object"===u(t)?t[0].id:t).indexOf("#")<0?i="#".concat(n):(i=n,n=n.slice(1));var o=this.$tabTitles.has('[href$="'.concat(i,'"],[data-tabs-target="').concat(n,'"]')).first();this._handleTabChange(o,e)}},{key:"_setHeight",value:function(){var t=0,e=this;this.$tabContent&&this.$tabContent.find(".".concat(this.options.panelClass)).css("min-height","").each((function(){var n=o()(this),i=n.hasClass("".concat(e.options.panelActiveClass));i||n.css({visibility:"hidden",display:"block"});var r=this.getBoundingClientRect().height;i||n.css({visibility:"",display:""}),t=r>t?r:t})).css("min-height","".concat(t,"px"))}},{key:"_destroy",value:function(){this.$element.find(".".concat(this.options.linkClass)).off(".zf.tabs").hide().end().find(".".concat(this.options.panelClass)).hide(),this.options.matchHeight&&null!=this._setHeightMqHandler&&o()(window).off("changed.zf.mediaquery",this._setHeightMqHandler),this.options.deepLink&&o()(window).off("hashchange",this._checkDeepLink),this.onLoadListener&&o()(window).off(this.onLoadListener)}}])&&c(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),p}(r.Plugin);h.defaults={deepLink:!1,deepLinkSmudge:!1,deepLinkSmudgeDelay:300,deepLinkSmudgeOffset:0,updateHistory:!1,autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,activeCollapse:!1,linkClass:"tabs-title",linkActiveClass:"is-active",panelClass:"tabs-panel",panelActiveClass:"is-active"}},"./js/foundation.toggler.js":function(t,e,n){n.r(e),n.d(e,{Toggler:function(){return h}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.util.motion.js"),s=n("./js/foundation.core.plugin.js"),a=n("./js/foundation.core.utils.js"),l=n("./js/foundation.util.triggers.js");function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function c(t,e){for(var n=0;n").addClass(e).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:t})}},{key:"_setPosition",value:function(){c(d(v.prototype),"_setPosition",this).call(this,this.$element,this.template)}},{key:"show",value:function(){if("all"!==this.options.showOn&&!s.MediaQuery.is(this.options.showOn))return!1;this.template.css("visibility","hidden").show(),this._setPosition(),this.template.removeClass("top bottom left right").addClass(this.position),this.template.removeClass("align-top align-bottom align-left align-right align-center").addClass("align-"+this.alignment),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),this.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,(function(){})),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,(function(){t.isActive=!1,t.isClick=!1})),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var t=this,e="ontouchstart"in window||void 0!==window.ontouchstart,n=!1;e&&this.options.disableForTouch||(this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",(function(){t.isActive||(t.timeout=setTimeout((function(){t.show()}),t.options.hoverDelay))})).on("mouseleave.zf.tooltip",(0,r.ignoreMousedisappear)((function(){clearTimeout(t.timeout),(!n||t.isClick&&!t.options.clickOpen)&&t.hide()}))),e&&this.$element.on("tap.zf.tooltip touchend.zf.tooltip",(function(){t.isActive?t.hide():t.show()})),this.options.clickOpen?this.$element.on("mousedown.zf.tooltip",(function(){t.isClick||(t.isClick=!0,!t.options.disableHover&&t.$element.attr("tabindex")||t.isActive||t.show())})):this.$element.on("mousedown.zf.tooltip",(function(){t.isClick=!0})),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",(function(){if(n=!0,t.isClick)return t.options.clickOpen||(n=!1),!1;t.show()})).on("focusout.zf.tooltip",(function(){n=!1,t.isClick=!1,t.hide()})).on("resizeme.zf.trigger",(function(){t.isActive&&t._setPosition()})))}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"_destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tooltip").removeClass(this.options.triggerClass).removeClass("top right left bottom").removeAttr("aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box"),this.template.remove()}}])&&u(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),v}(n("./js/foundation.positionable.js").Positionable);h.defaults={hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,disableForTouch:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,position:"auto",alignment:"auto",allowOverlap:!1,allowBottomOverlap:!1,vOffset:0,hOffset:0,tooltipHeight:14,tooltipWidth:12,allowHtml:!1}},"./js/foundation.util.box.js":function(t,e,n){n.r(e),n.d(e,{Box:function(){return i}});var i={ImNotTouchingYou:function(t,e,n,i,r){return 0===o(t,e,n,i,r)},OverlapArea:o,GetDimensions:r,GetExplicitOffsets:function(t,e,n,i,o,s,a){var l,u,c=r(t),f=e?r(e):null;if(null!==f){switch(n){case"top":l=f.offset.top-(c.height+o);break;case"bottom":l=f.offset.top+f.height+o;break;case"left":u=f.offset.left-(c.width+s);break;case"right":u=f.offset.left+f.width+s}switch(n){case"top":case"bottom":switch(i){case"left":u=f.offset.left+s;break;case"right":u=f.offset.left-c.width+f.width-s;break;case"center":u=a?s:f.offset.left+f.width/2-c.width/2+s}break;case"right":case"left":switch(i){case"bottom":l=f.offset.top-o+f.height-c.height;break;case"top":l=f.offset.top+o;break;case"center":l=f.offset.top+o+f.height/2-c.height/2}}}return{top:l,left:u}}};function o(t,e,n,i,o){var s,a,l,u,c=r(t);if(e){var f=r(e);a=f.height+f.offset.top-(c.offset.top+c.height),s=c.offset.top-f.offset.top,l=c.offset.left-f.offset.left,u=f.width+f.offset.left-(c.offset.left+c.width)}else a=c.windowDims.height+c.windowDims.offset.top-(c.offset.top+c.height),s=c.offset.top-c.windowDims.offset.top,l=c.offset.left-c.windowDims.offset.left,u=c.windowDims.width-(c.offset.left+c.width);return a=o?0:Math.min(a,0),s=Math.min(s,0),l=Math.min(l,0),u=Math.min(u,0),n?l+u:i?s+a:Math.sqrt(s*s+a*a+l*l+u*u)}function r(t){if((t=t.length?t[0]:t)===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var e=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),i=document.body.getBoundingClientRect(),o=window.pageYOffset,r=window.pageXOffset;return{width:e.width,height:e.height,offset:{top:e.top+o,left:e.left+r},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+r}},windowDims:{width:i.width,height:i.height,offset:{top:o,left:r}}}}},"./js/foundation.util.imageLoader.js":function(t,e,n){n.r(e),n.d(e,{onImagesLoaded:function(){return r}});var i=n("jquery"),o=n.n(i);function r(t,e){var n=t.length;function i(){0==--n&&e()}0===n&&e(),t.each((function(){if(this.complete&&void 0!==this.naturalWidth)i();else{var t=new Image,e="load.zf.images error.zf.images";o()(t).one(e,(function t(){o()(this).off(e,t),i()})),t.src=o()(this).attr("src")}}))}},"./js/foundation.util.keyboard.js":function(t,e,n){n.r(e),n.d(e,{Keyboard:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",35:"END",36:"HOME",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},a={};function l(t){return!!t&&t.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter((function(){return!(!o()(this).is(":visible")||o()(this).attr("tabindex")<0)})).sort((function(t,e){if(o()(t).attr("tabindex")===o()(e).attr("tabindex"))return 0;var n=parseInt(o()(t).attr("tabindex"),10),i=parseInt(o()(e).attr("tabindex"),10);return void 0===o()(t).attr("tabindex")&&i>0?1:void 0===o()(e).attr("tabindex")&&n>0?-1:0===n&&i>0?1:0===i&&n>0||ni?1:void 0}))}function u(t){var e=s[t.which||t.keyCode]||String.fromCharCode(t.which).toUpperCase();return e=e.replace(/\W+/,""),t.shiftKey&&(e="SHIFT_".concat(e)),t.ctrlKey&&(e="CTRL_".concat(e)),t.altKey&&(e="ALT_".concat(e)),e.replace(/_$/,"")}var c={keys:function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[t[n]]=t[n]);return e}(s),parseKey:u,handleKey:function(t,e,n){var i,s=a[e],l=this.parseKey(t);if(!s)return console.warn("Component not defined!");if(!0!==t.zfIsKeyHandled)if((i=n[(void 0===s.ltr?s:(0,r.rtl)()?o().extend({},s.ltr,s.rtl):o().extend({},s.rtl,s.ltr))[l]])&&"function"==typeof i){var u=i.apply();t.zfIsKeyHandled=!0,(n.handled||"function"==typeof n.handled)&&n.handled(u)}else(n.unhandled||"function"==typeof n.unhandled)&&n.unhandled()},findFocusable:l,register:function(t,e){a[t]=e},trapFocus:function(t){var e=l(t),n=e.eq(0),i=e.eq(-1);t.on("keydown.zf.trapfocus",(function(t){t.target===i[0]&&"TAB"===u(t)?(t.preventDefault(),n.focus()):t.target===n[0]&&"SHIFT_TAB"===u(t)&&(t.preventDefault(),i.focus())}))},releaseFocus:function(t){t.off("keydown.zf.trapfocus")}}},"./js/foundation.util.mediaQuery.js":function(t,e,n){n.r(e),n.d(e,{MediaQuery:function(){return a}});var i=n("jquery"),o=n.n(i);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n').appendTo(document.head);var t,e,n,i=o()(".foundation-mq").css("font-family");for(var r in n=void 0,n={},t="string"!=typeof(e=i)?n:(e=e.trim().slice(1,-1))?(n=e.split("&").reduce((function(t,e){var n=e.replace(/\+/g," ").split("="),i=n[0],o=n[1];return i=decodeURIComponent(i),o=void 0===o?null:decodeURIComponent(o),t.hasOwnProperty(i)?Array.isArray(t[i])?t[i].push(o):t[i]=[t[i],o]:t[i]=o,t}),{}),n):n,this.queries=[],t)t.hasOwnProperty(r)&&this.queries.push({name:r,value:"only screen and (min-width: ".concat(t[r],")")});this.current=this._getCurrentSize(),this._watcher()},_reInit:function(){this.isInitialized=!1,this._init()},atLeast:function(t){var e=this.get(t);return!!e&&window.matchMedia(e).matches},only:function(t){return t===this._getCurrentSize()},upTo:function(t){var e=this.next(t);return!e||!this.atLeast(e)},is:function(t){var e,n,i=(e=t.trim().split(" ").filter((function(t){return!!t.length})),n=2,function(t){if(Array.isArray(t))return t}(e)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,o,r,s,a=[],l=!0,u=!1;try{if(r=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=r.call(n)).done)&&(a.push(i.value),a.length!==e);l=!0);}catch(t){u=!0,o=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(u)throw o}}return a}}(e,n)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(t,e):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=i[0],r=i[1],a=void 0===r?"":r;if("only"===a)return this.only(o);if(!a||"up"===a)return this.atLeast(o);if("down"===a)return this.upTo(o);throw new Error('\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like " ", got "'.concat(t,'".\n '))},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var n=this.queries[e];if(t===n.name)return n.value}return null},next:function(t){var e=this,n=this.queries.findIndex((function(n){return e._getQueryName(n)===t}));if(-1===n)throw new Error('\n Unknown breakpoint "'.concat(t,'" passed to MediaQuery.next().\n Ensure it is present in your Sass "$breakpoints" setting.\n '));var i=this.queries[n+1];return i?i.name:null},_getQueryName:function(t){if("string"==typeof t)return t;if("object"===r(t))return t.name;throw new TypeError('\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got "'.concat(t,'" (').concat(r(t),")\n "))},_getCurrentSize:function(){for(var t,e=0;e1&&void 0!==arguments[1]?arguments[1]:"zf";t.attr("role","menubar"),t.find("a").attr({role:"menuitem"});var n=t.find("li").attr({role:"none"}),i="is-".concat(e,"-submenu"),r="".concat(i,"-item"),s="is-".concat(e,"-submenu-parent"),a="accordion"!==e;n.each((function(){var t=o()(this),n=t.children("ul");if(n.length){if(t.addClass(s),a){var l=t.children("a:first");l.attr({"aria-haspopup":!0,"aria-label":l.attr("aria-label")||l.text()}),"drilldown"===e&&t.attr({"aria-expanded":!1})}n.addClass("submenu ".concat(i)).attr({"data-submenu":"",role:"menubar"}),"drilldown"===e&&n.attr({"aria-hidden":!0})}t.parent("[data-submenu]").length&&t.addClass("is-submenu-item ".concat(r))}))},Burn:function(t,e){var n="is-".concat(e,"-submenu"),i="".concat(n,"-item"),o="is-".concat(e,"-submenu-parent");t.find(">li, > li > ul, .menu, .menu > li, [data-submenu] > li").removeClass("".concat(n," ").concat(i," ").concat(o," is-submenu-item submenu is-active")).removeAttr("data-submenu").css("display","")}}},"./js/foundation.util.timer.js":function(t,e,n){function i(t,e,n){var i,o,r=this,s=e.duration,a=Object.keys(t.data())[0]||"timer",l=-1;this.isPaused=!1,this.restart=function(){l=-1,clearTimeout(o),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(o),l=l<=0?s:l,t.data("paused",!1),i=Date.now(),o=setTimeout((function(){e.infinite&&r.restart(),n&&"function"==typeof n&&n()}),l),t.trigger("timerstart.zf.".concat(a))},this.pause=function(){this.isPaused=!0,clearTimeout(o),t.data("paused",!0);var e=Date.now();l-=e-i,t.trigger("timerpaused.zf.".concat(a))}}n.r(e),n.d(e,{Timer:function(){return i}})},"./js/foundation.util.touch.js":function(t,e,n){n.r(e),n.d(e,{Touch:function(){return f}});var i=n("jquery"),o=n.n(i);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function s(t,e){for(var n=0;n=o().spotSwipe.moveThreshold&&u<=o().spotSwipe.timeThreshold&&(e=i>0?"left":"right"),e&&(t.preventDefault(),p.apply(this,arguments),o()(this).trigger(o().Event("swipe",Object.assign({},t)),e).trigger(o().Event("swipe".concat(e),Object.assign({},t))))}}function m(t){1===t.touches.length&&(a=t.touches[0].pageX,c=t,d=!0,h=!1,l=(new Date).getTime(),this.addEventListener("touchmove",v,{passive:!0===o().spotSwipe.preventDefault}),this.addEventListener("touchend",p,!1))}function y(){this.addEventListener&&this.addEventListener("touchstart",m,{passive:!0})}var g=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.version="1.0.0",this.enabled="ontouchstart"in document.documentElement,this.preventDefault=!1,this.moveThreshold=75,this.timeThreshold=200,this._init()}var e,n;return e=t,(n=[{key:"_init",value:function(){o().event.special.swipe={setup:y},o().event.special.tap={setup:y},o().each(["left","up","down","right"],(function(){o().event.special["swipe".concat(this)]={setup:function(){o()(this).on("swipe",o().noop)}}}))}}])&&s(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();f.setupSpotSwipe=function(){o().spotSwipe=new g(o())},f.setupTouchHandler=function(){o().fn.addTouch=function(){this.each((function(e,n){o()(n).bind("touchstart touchmove touchend touchcancel",(function(e){t(e)}))}));var t=function(t){var e,n=t.changedTouches[0],i={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"}[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=new window.MouseEvent(i,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(e)}}},f.init=function(){void 0===o().spotSwipe&&(f.setupSpotSwipe(o()),f.setupTouchHandler(o()))}},"./js/foundation.util.triggers.js":function(t,e,n){n.r(e),n.d(e,{Triggers:function(){return c}});var i=n("jquery"),o=n.n(i),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.motion.js");function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var l=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e0&&e-1 in t)}function S(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}C.fn=C.prototype={jquery:_,constructor:C,length:0,toArray:function(){return a.call(this)},get:function(t){return null==t?a.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=C.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return C.each(this,t)},map:function(t){return this.pushStack(C.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return this.pushStack(a.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(C.grep(this,(function(t,e){return(e+1)%2})))},odd:function(){return this.pushStack(C.grep(this,(function(t,e){return e%2})))},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n+~]|"+P+")"+P+"*"),F=new RegExp(P+"|>"),N=new RegExp(M),B=new RegExp("^"+A+"$"),W={ID:new RegExp("^#("+A+")"),CLASS:new RegExp("^\\.("+A+")"),TAG:new RegExp("^("+A+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+M),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:new RegExp("^(?:"+x+")$","i"),needsContext:new RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},Q=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,G=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Y=/[+~]/,U=new RegExp("\\\\[\\da-fA-F]{1,6}"+P+"?|\\\\([^\\r\\n\\f])","g"),V=function(t,e){var n="0x"+t.slice(1)-65536;return e||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},X=function(){lt()},Z=dt((function(t){return!0===t.disabled&&S(t,"fieldset")}),{dir:"parentNode",next:"legend"});try{v.apply(r=a.call(D.childNodes),D.childNodes),r[D.childNodes.length].nodeType}catch(t){v={apply:function(t,e){L.apply(t,a.call(e))},call:function(t){L.apply(t,a.call(arguments,1))}}}function J(t,e,n,i){var o,r,s,a,u,c,h,p=e&&e.ownerDocument,g=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==g&&9!==g&&11!==g)return n;if(!i&&(lt(e),e=e||l,f)){if(11!==g&&(u=G.exec(t)))if(o=u[1]){if(9===g){if(!(s=e.getElementById(o)))return n;if(s.id===o)return v.call(n,s),n}else if(p&&(s=p.getElementById(o))&&J.contains(e,s)&&s.id===o)return v.call(n,s),n}else{if(u[2])return v.apply(n,e.getElementsByTagName(t)),n;if((o=u[3])&&e.getElementsByClassName)return v.apply(n,e.getElementsByClassName(o)),n}if(!(_[t+" "]||d&&d.test(t))){if(h=t,p=e,1===g&&(F.test(t)||I.test(t))){for((p=Y.test(t)&&at(e.parentNode)||e)==e&&m.scope||((a=e.getAttribute("id"))?a=C.escapeSelector(a):e.setAttribute("id",a=y)),r=(c=ct(t)).length;r--;)c[r]=(a?"#"+a:":scope")+" "+ft(c[r]);h=c.join(",")}try{return v.apply(n,p.querySelectorAll(h)),n}catch(e){_(t,!0)}finally{a===y&&e.removeAttribute("id")}}}return gt(t.replace(z,"$1"),e,n,i)}function tt(){var t=[];return function n(i,o){return t.push(i+" ")>e.cacheLength&&delete n[t.shift()],n[i+" "]=o}}function et(t){return t[y]=!0,t}function nt(t){var e=l.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function it(t){return function(e){return S(e,"input")&&e.type===t}}function ot(t){return function(e){return(S(e,"input")||S(e,"button"))&&e.type===t}}function rt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&Z(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function st(t){return et((function(e){return e=+e,et((function(n,i){for(var o,r=t([],n.length,e),s=r.length;s--;)n[o=r[s]]&&(n[o]=!(i[o]=n[o]))}))}))}function at(t){return t&&void 0!==t.getElementsByTagName&&t}function lt(t){var n,i=t?t.ownerDocument||t:D;return i!=l&&9===i.nodeType&&i.documentElement?(u=(l=i).documentElement,f=!C.isXMLDoc(l),p=u.matches||u.webkitMatchesSelector||u.msMatchesSelector,u.msMatchesSelector&&D!=l&&(n=l.defaultView)&&n.top!==n&&n.addEventListener("unload",X),m.getById=nt((function(t){return u.appendChild(t).id=C.expando,!l.getElementsByName||!l.getElementsByName(C.expando).length})),m.disconnectedMatch=nt((function(t){return p.call(t,"*")})),m.scope=nt((function(){return l.querySelectorAll(":scope")})),m.cssHas=nt((function(){try{return l.querySelector(":has(*,:jqfake)"),!1}catch(t){return!0}})),m.getById?(e.filter.ID=function(t){var e=t.replace(U,V);return function(t){return t.getAttribute("id")===e}},e.find.ID=function(t,e){if(void 0!==e.getElementById&&f){var n=e.getElementById(t);return n?[n]:[]}}):(e.filter.ID=function(t){var e=t.replace(U,V);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},e.find.ID=function(t,e){if(void 0!==e.getElementById&&f){var n,i,o,r=e.getElementById(t);if(r){if((n=r.getAttributeNode("id"))&&n.value===t)return[r];for(o=e.getElementsByName(t),i=0;r=o[i++];)if((n=r.getAttributeNode("id"))&&n.value===t)return[r]}return[]}}),e.find.TAG=function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):e.querySelectorAll(t)},e.find.CLASS=function(t,e){if(void 0!==e.getElementsByClassName&&f)return e.getElementsByClassName(t)},d=[],nt((function(t){var e;u.appendChild(t).innerHTML="",t.querySelectorAll("[selected]").length||d.push("\\["+P+"*(?:value|"+x+")"),t.querySelectorAll("[id~="+y+"-]").length||d.push("~="),t.querySelectorAll("a#"+y+"+*").length||d.push(".#.+[+~]"),t.querySelectorAll(":checked").length||d.push(":checked"),(e=l.createElement("input")).setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),u.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(e=l.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||d.push("\\["+P+"*name"+P+"*="+P+"*(?:''|\"\")")})),m.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),$=function(t,e){if(t===e)return s=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(1&(n=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!m.sortDetached&&e.compareDocumentPosition(t)===n?t===l||t.ownerDocument==D&&J.contains(D,t)?-1:e===l||e.ownerDocument==D&&J.contains(D,e)?1:o?c.call(o,t)-c.call(o,e):0:4&n?-1:1)},l):l}for(t in J.matches=function(t,e){return J(t,null,null,e)},J.matchesSelector=function(t,e){if(lt(t),f&&!_[e+" "]&&(!d||!d.test(e)))try{var n=p.call(t,e);if(n||m.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){_(e,!0)}return J(e,l,null,[t]).length>0},J.contains=function(t,e){return(t.ownerDocument||t)!=l&<(t),C.contains(t,e)},J.attr=function(t,n){(t.ownerDocument||t)!=l&<(t);var i=e.attrHandle[n.toLowerCase()],o=i&&h.call(e.attrHandle,n.toLowerCase())?i(t,n,!f):void 0;return void 0!==o?o:t.getAttribute(n)},J.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},C.uniqueSort=function(t){var e,n=[],i=0,r=0;if(s=!m.sortStable,o=!m.sortStable&&a.call(t,0),T.call(t,$),s){for(;e=t[r++];)e===t[r]&&(i=n.push(r));for(;i--;)E.call(t,n[i],1)}return o=null,t},C.fn.uniqueSort=function(){return this.pushStack(C.uniqueSort(a.apply(this)))},e=C.expr={cacheLength:50,createPseudo:et,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(U,V),t[3]=(t[3]||t[4]||t[5]||"").replace(U,V),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||J.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&J.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return W.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&N.test(n)&&(e=ct(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(U,V).toLowerCase();return"*"===t?function(){return!0}:function(t){return S(t,e)}},CLASS:function(t){var e=w[t+" "];return e||(e=new RegExp("(^|"+P+")"+t+"("+P+"|$)"))&&w(t,(function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")}))},ATTR:function(t,e,n){return function(i){var o=J.attr(i,t);return null==o?"!="===e:!e||(o+="","="===e?o===n:"!="===e?o!==n:"^="===e?n&&0===o.indexOf(n):"*="===e?n&&o.indexOf(n)>-1:"$="===e?n&&o.slice(-n.length)===n:"~="===e?(" "+o.replace(H," ")+" ").indexOf(n)>-1:"|="===e&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,n,i,o){var r="nth"!==t.slice(0,3),s="last"!==t.slice(-4),a="of-type"===e;return 1===i&&0===o?function(t){return!!t.parentNode}:function(e,n,l){var u,c,f,d,h,p=r!==s?"nextSibling":"previousSibling",v=e.parentNode,m=a&&e.nodeName.toLowerCase(),b=!l&&!a,w=!1;if(v){if(r){for(;p;){for(f=e;f=f[p];)if(a?S(f,m):1===f.nodeType)return!1;h=p="only"===t&&!h&&"nextSibling"}return!0}if(h=[s?v.firstChild:v.lastChild],s&&b){for(w=(d=(u=(c=v[y]||(v[y]={}))[t]||[])[0]===g&&u[1])&&u[2],f=d&&v.childNodes[d];f=++d&&f&&f[p]||(w=d=0)||h.pop();)if(1===f.nodeType&&++w&&f===e){c[t]=[g,d,w];break}}else if(b&&(w=d=(u=(c=e[y]||(e[y]={}))[t]||[])[0]===g&&u[1]),!1===w)for(;(f=++d&&f&&f[p]||(w=d=0)||h.pop())&&(!(a?S(f,m):1===f.nodeType)||!++w||(b&&((c=f[y]||(f[y]={}))[t]=[g,w]),f!==e)););return(w-=o)===i||w%i==0&&w/i>=0}}},PSEUDO:function(t,n){var i,o=e.pseudos[t]||e.setFilters[t.toLowerCase()]||J.error("unsupported pseudo: "+t);return o[y]?o(n):o.length>1?(i=[t,t,"",n],e.setFilters.hasOwnProperty(t.toLowerCase())?et((function(t,e){for(var i,r=o(t,n),s=r.length;s--;)t[i=c.call(t,r[s])]=!(e[i]=r[s])})):function(t){return o(t,0,i)}):o}},pseudos:{not:et((function(t){var e=[],n=[],i=yt(t.replace(z,"$1"));return i[y]?et((function(t,e,n,o){for(var r,s=i(t,null,o,[]),a=t.length;a--;)(r=s[a])&&(t[a]=!(e[a]=r))})):function(t,o,r){return e[0]=t,i(e,null,r,n),e[0]=null,!n.pop()}})),has:et((function(t){return function(e){return J(t,e).length>0}})),contains:et((function(t){return t=t.replace(U,V),function(e){return(e.textContent||C.text(e)).indexOf(t)>-1}})),lang:et((function(t){return B.test(t||"")||J.error("unsupported lang: "+t),t=t.replace(U,V).toLowerCase(),function(e){var n;do{if(n=f?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}})),target:function(t){var e=i.location&&i.location.hash;return e&&e.slice(1)===t.id},root:function(t){return t===u},focus:function(t){return t===function(){try{return l.activeElement}catch(t){}}()&&l.hasFocus()&&!!(t.type||t.href||~t.tabIndex)},enabled:rt(!1),disabled:rt(!0),checked:function(t){return S(t,"input")&&!!t.checked||S(t,"option")&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!e.pseudos.empty(t)},header:function(t){return K.test(t.nodeName)},input:function(t){return Q.test(t.nodeName)},button:function(t){return S(t,"input")&&"button"===t.type||S(t,"button")},text:function(t){var e;return S(t,"input")&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:st((function(){return[0]})),last:st((function(t,e){return[e-1]})),eq:st((function(t,e,n){return[n<0?n+e:n]})),even:st((function(t,e){for(var n=0;ne?e:n;--i>=0;)t.push(i);return t})),gt:st((function(t,e,n){for(var i=n<0?n+e:n;++i1?function(e,n,i){for(var o=t.length;o--;)if(!t[o](e,n,i))return!1;return!0}:t[0]}function pt(t,e,n,i,o){for(var r,s=[],a=0,l=t.length,u=null!=e;a-1&&(r[u]=!(s[u]=d))}}else h=pt(h===s?h.splice(y,h.length):h),o?o(null,s,h,l):v.apply(s,h)}))}function mt(t){for(var i,o,r,s=t.length,a=e.relative[t[0].type],l=a||e.relative[" "],u=a?1:0,f=dt((function(t){return t===i}),l,!0),d=dt((function(t){return c.call(i,t)>-1}),l,!0),h=[function(t,e,o){var r=!a&&(o||e!=n)||((i=e).nodeType?f(t,e,o):d(t,e,o));return i=null,r}];u1&&ht(h),u>1&&ft(t.slice(0,u-1).concat({value:" "===t[u-2].type?"*":""})).replace(z,"$1"),o,u0,r=t.length>0,s=function(s,a,u,c,d){var h,p,m,y=0,b="0",w=s&&[],k=[],j=n,_=s||r&&e.find.TAG("*",d),$=g+=null==j?1:Math.random()||.1,x=_.length;for(d&&(n=a==l||a||d);b!==x&&null!=(h=_[b]);b++){if(r&&h){for(p=0,a||h.ownerDocument==l||(lt(h),u=!f);m=t[p++];)if(m(h,a||l,u)){v.call(c,h);break}d&&(g=$)}o&&((h=!m&&h)&&y--,s&&w.push(h))}if(y+=b,o&&b!==y){for(p=0;m=i[p++];)m(w,k,a,u);if(s){if(y>0)for(;b--;)w[b]||k[b]||(k[b]=O.call(c));k=pt(k)}v.apply(c,k),d&&!s&&k.length>0&&y+i.length>1&&C.uniqueSort(c)}return d&&(g=$,n=j),w};return o?et(s):s}(s,r)),a.selector=t}return a}function gt(t,n,i,o){var r,s,a,l,u,c="function"==typeof t&&t,d=!o&&ct(t=c.selector||t);if(i=i||[],1===d.length){if((s=d[0]=d[0].slice(0)).length>2&&"ID"===(a=s[0]).type&&9===n.nodeType&&f&&e.relative[s[1].type]){if(!(n=(e.find.ID(a.matches[0].replace(U,V),n)||[])[0]))return i;c&&(n=n.parentNode),t=t.slice(s.shift().value.length)}for(r=W.needsContext.test(t)?0:s.length;r--&&(a=s[r],!e.relative[l=a.type]);)if((u=e.find[l])&&(o=u(a.matches[0].replace(U,V),Y.test(s[0].type)&&at(n.parentNode)||n))){if(s.splice(r,1),!(t=o.length&&ft(s)))return v.apply(i,o),i;break}}return(c||yt(t,d))(o,n,!f,i,!n||Y.test(t)&&at(n.parentNode)||n),i}ut.prototype=e.filters=e.pseudos,e.setFilters=new ut,m.sortStable=y.split("").sort($).join("")===y,lt(),m.sortDetached=nt((function(t){return 1&t.compareDocumentPosition(l.createElement("fieldset"))})),C.find=J,C.expr[":"]=C.expr.pseudos,C.unique=C.uniqueSort,J.compile=yt,J.select=gt,J.setDocument=lt,J.tokenize=ct,J.escape=C.escapeSelector,J.getText=C.text,J.isXML=C.isXMLDoc,J.selectors=C.expr,J.support=C.support,J.uniqueSort=C.uniqueSort}();var M=function(t,e,n){for(var i=[],o=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(o&&C(t).is(n))break;i.push(t)}return i},H=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},q=C.expr.match.needsContext,I=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function F(t,e,n){return y(e)?C.grep(t,(function(t,i){return!!e.call(t,i,t)!==n})):e.nodeType?C.grep(t,(function(t){return t===e!==n})):"string"!=typeof e?C.grep(t,(function(t){return c.call(e,t)>-1!==n})):C.filter(e,t,n)}C.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?C.find.matchesSelector(i,t)?[i]:[]:C.find.matches(t,C.grep(e,(function(t){return 1===t.nodeType})))},C.fn.extend({find:function(t){var e,n,i=this.length,o=this;if("string"!=typeof t)return this.pushStack(C(t).filter((function(){for(e=0;e1?C.uniqueSort(n):n},filter:function(t){return this.pushStack(F(this,t||[],!1))},not:function(t){return this.pushStack(F(this,t||[],!0))},is:function(t){return!!F(this,"string"==typeof t&&q.test(t)?C(t):t||[],!1).length}});var N,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(C.fn.init=function(t,e,n){var i,o;if(!t)return this;if(n=n||N,"string"==typeof t){if(!(i="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:B.exec(t))||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof C?e[0]:e,C.merge(this,C.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:b,!0)),I.test(i[1])&&C.isPlainObject(e))for(i in e)y(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(o=b.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):y(t)?void 0!==n.ready?n.ready(t):t(C):C.makeArray(t,this)}).prototype=C.fn,N=C(b);var W=/^(?:parents|prev(?:Until|All))/,Q={children:!0,contents:!0,next:!0,prev:!0};function K(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}C.fn.extend({has:function(t){var e=C(t,this),n=e.length;return this.filter((function(){for(var t=0;t-1:1===n.nodeType&&C.find.matchesSelector(n,t))){r.push(n);break}return this.pushStack(r.length>1?C.uniqueSort(r):r)},index:function(t){return t?"string"==typeof t?c.call(C(t),this[0]):c.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(C.uniqueSort(C.merge(this.get(),C(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),C.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return M(t,"parentNode")},parentsUntil:function(t,e,n){return M(t,"parentNode",n)},next:function(t){return K(t,"nextSibling")},prev:function(t){return K(t,"previousSibling")},nextAll:function(t){return M(t,"nextSibling")},prevAll:function(t){return M(t,"previousSibling")},nextUntil:function(t,e,n){return M(t,"nextSibling",n)},prevUntil:function(t,e,n){return M(t,"previousSibling",n)},siblings:function(t){return H((t.parentNode||{}).firstChild,t)},children:function(t){return H(t.firstChild)},contents:function(t){return null!=t.contentDocument&&s(t.contentDocument)?t.contentDocument:(S(t,"template")&&(t=t.content||t),C.merge([],t.childNodes))}},(function(t,e){C.fn[t]=function(n,i){var o=C.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(o=C.filter(i,o)),this.length>1&&(Q[t]||C.uniqueSort(o),W.test(t)&&o.reverse()),this.pushStack(o)}}));var G=/[^\x20\t\r\n\f]+/g;function Y(t){return t}function U(t){throw t}function V(t,e,n,i){var o;try{t&&y(o=t.promise)?o.call(t).done(e).fail(n):t&&y(o=t.then)?o.call(t,e,n):e.apply(void 0,[t].slice(i))}catch(t){n.apply(void 0,[t])}}C.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return C.each(t.match(G)||[],(function(t,n){e[n]=!0})),e}(t):C.extend({},t);var e,n,i,o,r=[],s=[],a=-1,l=function(){for(o=o||t.once,i=e=!0;s.length;a=-1)for(n=s.shift();++a-1;)r.splice(n,1),n<=a&&a--})),this},has:function(t){return t?C.inArray(t,r)>-1:r.length>0},empty:function(){return r&&(r=[]),this},disable:function(){return o=s=[],r=n="",this},disabled:function(){return!r},lock:function(){return o=s=[],n||e||(r=n=""),this},locked:function(){return!!o},fireWith:function(t,n){return o||(n=[t,(n=n||[]).slice?n.slice():n],s.push(n),e||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},C.extend({Deferred:function(t){var e=[["notify","progress",C.Callbacks("memory"),C.Callbacks("memory"),2],["resolve","done",C.Callbacks("once memory"),C.Callbacks("once memory"),0,"resolved"],["reject","fail",C.Callbacks("once memory"),C.Callbacks("once memory"),1,"rejected"]],n="pending",o={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},catch:function(t){return o.then(null,t)},pipe:function(){var t=arguments;return C.Deferred((function(n){C.each(e,(function(e,i){var o=y(t[i[4]])&&t[i[4]];r[i[1]]((function(){var t=o&&o.apply(this,arguments);t&&y(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[i[0]+"With"](this,o?[t]:arguments)}))})),t=null})).promise()},then:function(t,n,o){var r=0;function s(t,e,n,o){return function(){var a=this,l=arguments,u=function(){var i,u;if(!(t=r&&(n!==U&&(a=void 0,l=[i]),e.rejectWith(a,l))}};t?c():(C.Deferred.getErrorHook?c.error=C.Deferred.getErrorHook():C.Deferred.getStackHook&&(c.error=C.Deferred.getStackHook()),i.setTimeout(c))}}return C.Deferred((function(i){e[0][3].add(s(0,i,y(o)?o:Y,i.notifyWith)),e[1][3].add(s(0,i,y(t)?t:Y)),e[2][3].add(s(0,i,y(n)?n:U))})).promise()},promise:function(t){return null!=t?C.extend(t,o):o}},r={};return C.each(e,(function(t,i){var s=i[2],a=i[5];o[i[1]]=s.add,a&&s.add((function(){n=a}),e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),s.add(i[3].fire),r[i[0]]=function(){return r[i[0]+"With"](this===r?void 0:this,arguments),this},r[i[0]+"With"]=s.fireWith})),o.promise(r),t&&t.call(r,r),r},when:function(t){var e=arguments.length,n=e,i=Array(n),o=a.call(arguments),r=C.Deferred(),s=function(t){return function(n){i[t]=this,o[t]=arguments.length>1?a.call(arguments):n,--e||r.resolveWith(i,o)}};if(e<=1&&(V(t,r.done(s(n)).resolve,r.reject,!e),"pending"===r.state()||y(o[n]&&o[n].then)))return r.then();for(;n--;)V(o[n],s(n),r.reject);return r.promise()}});var X=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;C.Deferred.exceptionHook=function(t,e){i.console&&i.console.warn&&t&&X.test(t.name)&&i.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},C.readyException=function(t){i.setTimeout((function(){throw t}))};var Z=C.Deferred();function J(){b.removeEventListener("DOMContentLoaded",J),i.removeEventListener("load",J),C.ready()}C.fn.ready=function(t){return Z.then(t).catch((function(t){C.readyException(t)})),this},C.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--C.readyWait:C.isReady)||(C.isReady=!0,!0!==t&&--C.readyWait>0||Z.resolveWith(b,[C]))}}),C.ready.then=Z.then,"complete"===b.readyState||"loading"!==b.readyState&&!b.documentElement.doScroll?i.setTimeout(C.ready):(b.addEventListener("DOMContentLoaded",J),i.addEventListener("load",J));var tt=function(t,e,n,i,o,r,s){var a=0,l=t.length,u=null==n;if("object"===j(n))for(a in o=!0,n)tt(t,e,a,n[a],!0,r,s);else if(void 0!==i&&(o=!0,y(i)||(s=!0),u&&(s?(e.call(t,i),e=null):(u=e,e=function(t,e,n){return u.call(C(t),n)})),e))for(;a1,null,!0)},removeData:function(t){return this.each((function(){lt.remove(this,t)}))}}),C.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=at.get(t,e),n&&(!i||Array.isArray(n)?i=at.access(t,e,C.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=C.queue(t,e),i=n.length,o=n.shift(),r=C._queueHooks(t,e);"inprogress"===o&&(o=n.shift(),i--),o&&("fx"===e&&n.unshift("inprogress"),delete r.stop,o.call(t,(function(){C.dequeue(t,e)}),r)),!i&&r&&r.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return at.get(t,n)||at.access(t,n,{empty:C.Callbacks("once memory").add((function(){at.remove(t,[e+"queue",n])}))})}}),C.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]*)/i,St=/^$|^module$|\/(?:java|ecma)script/i;_t=b.createDocumentFragment().appendChild(b.createElement("div")),($t=b.createElement("input")).setAttribute("type","radio"),$t.setAttribute("checked","checked"),$t.setAttribute("name","t"),_t.appendChild($t),m.checkClone=_t.cloneNode(!0).cloneNode(!0).lastChild.checked,_t.innerHTML="",m.noCloneChecked=!!_t.cloneNode(!0).lastChild.defaultValue,_t.innerHTML="",m.option=!!_t.lastChild;var Ot={thead:[1,"","
                  "],col:[2,"","
                  "],tr:[2,"","
                  "],td:[3,"","
                  "],_default:[0,"",""]};function Tt(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&S(t,e)?C.merge([t],n):n}function Et(t,e){for(var n=0,i=t.length;n",""]);var Pt=/<|&#?\w+;/;function zt(t,e,n,i,o){for(var r,s,a,l,u,c,f=e.createDocumentFragment(),d=[],h=0,p=t.length;h-1)o&&o.push(r);else if(u=mt(r),s=Tt(f.appendChild(r),"script"),u&&Et(s),n)for(c=0;r=s[c++];)St.test(r.type||"")&&n.push(r);return f}var At=/^([^.]*)(?:\.(.+)|)/;function Rt(){return!0}function Dt(){return!1}function Lt(t,e,n,i,o,r){var s,a;if("object"==typeof e){for(a in"string"!=typeof n&&(i=i||n,n=void 0),e)Lt(t,a,n,i,e[a],r);return t}if(null==i&&null==o?(o=n,i=n=void 0):null==o&&("string"==typeof n?(o=i,i=void 0):(o=i,i=n,n=void 0)),!1===o)o=Dt;else if(!o)return t;return 1===r&&(s=o,o=function(t){return C().off(t),s.apply(this,arguments)},o.guid=s.guid||(s.guid=C.guid++)),t.each((function(){C.event.add(this,e,o,i,n)}))}function Mt(t,e,n){n?(at.set(t,e,!1),C.event.add(t,e,{namespace:!1,handler:function(t){var n,i=at.get(this,e);if(1&t.isTrigger&&this[e]){if(i)(C.event.special[e]||{}).delegateType&&t.stopPropagation();else if(i=a.call(arguments),at.set(this,e,i),this[e](),n=at.get(this,e),at.set(this,e,!1),i!==n)return t.stopImmediatePropagation(),t.preventDefault(),n}else i&&(at.set(this,e,C.event.trigger(i[0],i.slice(1),this)),t.stopPropagation(),t.isImmediatePropagationStopped=Rt)}})):void 0===at.get(t,e)&&C.event.add(t,e,Rt)}C.event={global:{},add:function(t,e,n,i,o){var r,s,a,l,u,c,f,d,h,p,v,m=at.get(t);if(rt(t))for(n.handler&&(n=(r=n).handler,o=r.selector),o&&C.find.matchesSelector(vt,o),n.guid||(n.guid=C.guid++),(l=m.events)||(l=m.events=Object.create(null)),(s=m.handle)||(s=m.handle=function(e){return void 0!==C&&C.event.triggered!==e.type?C.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(G)||[""]).length;u--;)h=v=(a=At.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),h&&(f=C.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=C.event.special[h]||{},c=C.extend({type:h,origType:v,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&C.expr.match.needsContext.test(o),namespace:p.join(".")},r),(d=l[h])||((d=l[h]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,i,p,s)||t.addEventListener&&t.addEventListener(h,s)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),o?d.splice(d.delegateCount++,0,c):d.push(c),C.event.global[h]=!0)},remove:function(t,e,n,i,o){var r,s,a,l,u,c,f,d,h,p,v,m=at.hasData(t)&&at.get(t);if(m&&(l=m.events)){for(u=(e=(e||"").match(G)||[""]).length;u--;)if(h=v=(a=At.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),h){for(f=C.event.special[h]||{},d=l[h=(i?f.delegateType:f.bindType)||h]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=r=d.length;r--;)c=d[r],!o&&v!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||i&&i!==c.selector&&("**"!==i||!c.selector)||(d.splice(r,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(t,c));s&&!d.length&&(f.teardown&&!1!==f.teardown.call(t,p,m.handle)||C.removeEvent(t,h,m.handle),delete l[h])}else for(h in l)C.event.remove(t,h+e[u],n,i,!0);C.isEmptyObject(l)&&at.remove(t,"handle events")}},dispatch:function(t){var e,n,i,o,r,s,a=new Array(arguments.length),l=C.event.fix(t),u=(at.get(this,"events")||Object.create(null))[l.type]||[],c=C.event.special[l.type]||{};for(a[0]=l,e=1;e=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(r=[],s={},n=0;n-1:C.find(o,this,null,[u]).length),s[o]&&r.push(i);r.length&&a.push({elem:u,handlers:r})}return u=this,l\s*$/g;function Ft(t,e){return S(t,"table")&&S(11!==e.nodeType?e:e.firstChild,"tr")&&C(t).children("tbody")[0]||t}function Nt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Bt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Wt(t,e){var n,i,o,r,s,a;if(1===e.nodeType){if(at.hasData(t)&&(a=at.get(t).events))for(o in at.remove(e,"handle events"),a)for(n=0,i=a[o].length;n1&&"string"==typeof p&&!m.checkClone&&qt.test(p))return t.each((function(o){var r=t.eq(o);v&&(e[0]=p.call(this,o,r.html())),Kt(r,e,n,i)}));if(d&&(r=(o=zt(e,t[0].ownerDocument,!1,t,i)).firstChild,1===o.childNodes.length&&(o=r),r||i)){for(a=(s=C.map(Tt(o,"script"),Nt)).length;f0&&Et(s,!l&&Tt(t,"script")),a},cleanData:function(t){for(var e,n,i,o=C.event.special,r=0;void 0!==(n=t[r]);r++)if(rt(n)){if(e=n[at.expando]){if(e.events)for(i in e.events)o[i]?C.event.remove(n,i):C.removeEvent(n,i,e.handle);n[at.expando]=void 0}n[lt.expando]&&(n[lt.expando]=void 0)}}}),C.fn.extend({detach:function(t){return Gt(this,t,!0)},remove:function(t){return Gt(this,t)},text:function(t){return tt(this,(function(t){return void 0===t?C.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)}))}),null,t,arguments.length)},append:function(){return Kt(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ft(this,t).appendChild(t)}))},prepend:function(){return Kt(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=Ft(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return Kt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return Kt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)}))},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(C.cleanData(Tt(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return C.clone(this,t,e)}))},html:function(t){return tt(this,(function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!Ht.test(t)&&!Ot[(xt.exec(t)||["",""])[1].toLowerCase()]){t=C.htmlPrefilter(t);try{for(;n=0&&(l+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-r-l-a-.5))||0),l+u}function ce(t,e,n){var i=Vt(t),o=(!m.boxSizingReliable()||n)&&"border-box"===C.css(t,"boxSizing",!1,i),r=o,s=Jt(t,e,i),a="offset"+e[0].toUpperCase()+e.slice(1);if(Yt.test(s)){if(!n)return s;s="auto"}return(!m.boxSizingReliable()&&o||!m.reliableTrDimensions()&&S(t,"tr")||"auto"===s||!parseFloat(s)&&"inline"===C.css(t,"display",!1,i))&&t.getClientRects().length&&(o="border-box"===C.css(t,"boxSizing",!1,i),(r=a in t)&&(s=t[a])),(s=parseFloat(s)||0)+ue(t,e,n||(o?"border":"content"),r,i,s)+"px"}function fe(t,e,n,i,o){return new fe.prototype.init(t,e,n,i,o)}C.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=Jt(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(t,e,n,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var o,r,s,a=ot(e),l=Ut.test(e),u=t.style;if(l||(e=oe(a)),s=C.cssHooks[e]||C.cssHooks[a],void 0===n)return s&&"get"in s&&void 0!==(o=s.get(t,!1,i))?o:u[e];"string"==(r=typeof n)&&(o=ht.exec(n))&&o[1]&&(n=bt(t,e,o),r="number"),null!=n&&n==n&&("number"!==r||l||(n+=o&&o[3]||(C.cssNumber[a]?"":"px")),m.clearCloneStyle||""!==n||0!==e.indexOf("background")||(u[e]="inherit"),s&&"set"in s&&void 0===(n=s.set(t,n,i))||(l?u.setProperty(e,n):u[e]=n))}},css:function(t,e,n,i){var o,r,s,a=ot(e);return Ut.test(e)||(e=oe(a)),(s=C.cssHooks[e]||C.cssHooks[a])&&"get"in s&&(o=s.get(t,!0,n)),void 0===o&&(o=Jt(t,e,i)),"normal"===o&&e in ae&&(o=ae[e]),""===n||n?(r=parseFloat(o),!0===n||isFinite(r)?r||0:o):o}}),C.each(["height","width"],(function(t,e){C.cssHooks[e]={get:function(t,n,i){if(n)return!re.test(C.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?ce(t,e,i):Xt(t,se,(function(){return ce(t,e,i)}))},set:function(t,n,i){var o,r=Vt(t),s=!m.scrollboxSize()&&"absolute"===r.position,a=(s||i)&&"border-box"===C.css(t,"boxSizing",!1,r),l=i?ue(t,e,i,a,r):0;return a&&s&&(l-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(r[e])-ue(t,e,"border",!1,r)-.5)),l&&(o=ht.exec(n))&&"px"!==(o[3]||"px")&&(t.style[e]=n,n=C.css(t,e)),le(0,n,l)}}})),C.cssHooks.marginLeft=te(m.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Jt(t,"marginLeft"))||t.getBoundingClientRect().left-Xt(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),C.each({margin:"",padding:"",border:"Width"},(function(t,e){C.cssHooks[t+e]={expand:function(n){for(var i=0,o={},r="string"==typeof n?n.split(" "):[n];i<4;i++)o[t+pt[i]+e]=r[i]||r[i-2]||r[0];return o}},"margin"!==t&&(C.cssHooks[t+e].set=le)})),C.fn.extend({css:function(t,e){return tt(this,(function(t,e,n){var i,o,r={},s=0;if(Array.isArray(e)){for(i=Vt(t),o=e.length;s1)}}),C.Tween=fe,fe.prototype={constructor:fe,init:function(t,e,n,i,o,r){this.elem=t,this.prop=n,this.easing=o||C.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=i,this.unit=r||(C.cssNumber[n]?"":"px")},cur:function(){var t=fe.propHooks[this.prop];return t&&t.get?t.get(this):fe.propHooks._default.get(this)},run:function(t){var e,n=fe.propHooks[this.prop];return this.options.duration?this.pos=e=C.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):fe.propHooks._default.set(this),this}},fe.prototype.init.prototype=fe.prototype,fe.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=C.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){C.fx.step[t.prop]?C.fx.step[t.prop](t):1!==t.elem.nodeType||!C.cssHooks[t.prop]&&null==t.elem.style[oe(t.prop)]?t.elem[t.prop]=t.now:C.style(t.elem,t.prop,t.now+t.unit)}}},fe.propHooks.scrollTop=fe.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},C.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},C.fx=fe.prototype.init,C.fx.step={};var de,he,pe=/^(?:toggle|show|hide)$/,ve=/queueHooks$/;function me(){he&&(!1===b.hidden&&i.requestAnimationFrame?i.requestAnimationFrame(me):i.setTimeout(me,C.fx.interval),C.fx.tick())}function ye(){return i.setTimeout((function(){de=void 0})),de=Date.now()}function ge(t,e){var n,i=0,o={height:t};for(e=e?1:0;i<4;i+=2-e)o["margin"+(n=pt[i])]=o["padding"+n]=t;return e&&(o.opacity=o.width=t),o}function be(t,e,n){for(var i,o=(we.tweeners[e]||[]).concat(we.tweeners["*"]),r=0,s=o.length;r1)},removeAttr:function(t){return this.each((function(){C.removeAttr(this,t)}))}}),C.extend({attr:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return void 0===t.getAttribute?C.prop(t,e,n):(1===r&&C.isXMLDoc(t)||(o=C.attrHooks[e.toLowerCase()]||(C.expr.match.bool.test(e)?ke:void 0)),void 0!==n?null===n?void C.removeAttr(t,e):o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:(t.setAttribute(e,n+""),n):o&&"get"in o&&null!==(i=o.get(t,e))?i:null==(i=C.find.attr(t,e))?void 0:i)},attrHooks:{type:{set:function(t,e){if(!m.radioValue&&"radio"===e&&S(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,i=0,o=e&&e.match(G);if(o&&1===t.nodeType)for(;n=o[i++];)t.removeAttribute(n)}}),ke={set:function(t,e,n){return!1===e?C.removeAttr(t,n):t.setAttribute(n,n),n}},C.each(C.expr.match.bool.source.match(/\w+/g),(function(t,e){var n=je[e]||C.find.attr;je[e]=function(t,e,i){var o,r,s=e.toLowerCase();return i||(r=je[s],je[s]=o,o=null!=n(t,e,i)?s:null,je[s]=r),o}}));var _e=/^(?:input|select|textarea|button)$/i,$e=/^(?:a|area)$/i;function Ce(t){return(t.match(G)||[]).join(" ")}function xe(t){return t.getAttribute&&t.getAttribute("class")||""}function Se(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(G)||[]}C.fn.extend({prop:function(t,e){return tt(this,C.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[C.propFix[t]||t]}))}}),C.extend({prop:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return 1===r&&C.isXMLDoc(t)||(e=C.propFix[e]||e,o=C.propHooks[e]),void 0!==n?o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:t[e]=n:o&&"get"in o&&null!==(i=o.get(t,e))?i:t[e]},propHooks:{tabIndex:{get:function(t){var e=C.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||$e.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),m.optSelected||(C.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),C.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){C.propFix[this.toLowerCase()]=this})),C.fn.extend({addClass:function(t){var e,n,i,o,r,s;return y(t)?this.each((function(e){C(this).addClass(t.call(this,e,xe(this)))})):(e=Se(t)).length?this.each((function(){if(i=xe(this),n=1===this.nodeType&&" "+Ce(i)+" "){for(r=0;r-1;)n=n.replace(" "+o+" "," ");s=Ce(n),i!==s&&this.setAttribute("class",s)}})):this:this.attr("class","")},toggleClass:function(t,e){var n,i,o,r,s=typeof t,a="string"===s||Array.isArray(t);return y(t)?this.each((function(n){C(this).toggleClass(t.call(this,n,xe(this),e),e)})):"boolean"==typeof e&&a?e?this.addClass(t):this.removeClass(t):(n=Se(t),this.each((function(){if(a)for(r=C(this),o=0;o-1)return!0;return!1}});var Oe=/\r/g;C.fn.extend({val:function(t){var e,n,i,o=this[0];return arguments.length?(i=y(t),this.each((function(n){var o;1===this.nodeType&&(null==(o=i?t.call(this,n,C(this).val()):t)?o="":"number"==typeof o?o+="":Array.isArray(o)&&(o=C.map(o,(function(t){return null==t?"":t+""}))),(e=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,o,"value")||(this.value=o))}))):o?(e=C.valHooks[o.type]||C.valHooks[o.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(o,"value"))?n:"string"==typeof(n=o.value)?n.replace(Oe,""):null==n?"":n:void 0}}),C.extend({valHooks:{option:{get:function(t){var e=C.find.attr(t,"value");return null!=e?e:Ce(C.text(t))}},select:{get:function(t){var e,n,i,o=t.options,r=t.selectedIndex,s="select-one"===t.type,a=s?null:[],l=s?r+1:o.length;for(i=r<0?l:s?r:0;i-1)&&(n=!0);return n||(t.selectedIndex=-1),r}}}}),C.each(["radio","checkbox"],(function(){C.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=C.inArray(C(t).val(),e)>-1}},m.checkOn||(C.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})}));var Te=i.location,Ee={guid:Date.now()},Pe=/\?/;C.parseXML=function(t){var e,n;if(!t||"string"!=typeof t)return null;try{e=(new i.DOMParser).parseFromString(t,"text/xml")}catch(t){}return n=e&&e.getElementsByTagName("parsererror")[0],e&&!n||C.error("Invalid XML: "+(n?C.map(n.childNodes,(function(t){return t.textContent})).join("\n"):t)),e};var ze=/^(?:focusinfocus|focusoutblur)$/,Ae=function(t){t.stopPropagation()};C.extend(C.event,{trigger:function(t,e,n,o){var r,s,a,l,u,c,f,d,p=[n||b],v=h.call(t,"type")?t.type:t,m=h.call(t,"namespace")?t.namespace.split("."):[];if(s=d=a=n=n||b,3!==n.nodeType&&8!==n.nodeType&&!ze.test(v+C.event.triggered)&&(v.indexOf(".")>-1&&(m=v.split("."),v=m.shift(),m.sort()),u=v.indexOf(":")<0&&"on"+v,(t=t[C.expando]?t:new C.Event(v,"object"==typeof t&&t)).isTrigger=o?2:3,t.namespace=m.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=n),e=null==e?[t]:C.makeArray(e,[t]),f=C.event.special[v]||{},o||!f.trigger||!1!==f.trigger.apply(n,e))){if(!o&&!f.noBubble&&!g(n)){for(l=f.delegateType||v,ze.test(l+v)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(n.ownerDocument||b)&&p.push(a.defaultView||a.parentWindow||i)}for(r=0;(s=p[r++])&&!t.isPropagationStopped();)d=s,t.type=r>1?l:f.bindType||v,(c=(at.get(s,"events")||Object.create(null))[t.type]&&at.get(s,"handle"))&&c.apply(s,e),(c=u&&s[u])&&c.apply&&rt(s)&&(t.result=c.apply(s,e),!1===t.result&&t.preventDefault());return t.type=v,o||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),e)||!rt(n)||u&&y(n[v])&&!g(n)&&((a=n[u])&&(n[u]=null),C.event.triggered=v,t.isPropagationStopped()&&d.addEventListener(v,Ae),n[v](),t.isPropagationStopped()&&d.removeEventListener(v,Ae),C.event.triggered=void 0,a&&(n[u]=a)),t.result}},simulate:function(t,e,n){var i=C.extend(new C.Event,n,{type:t,isSimulated:!0});C.event.trigger(i,null,e)}}),C.fn.extend({trigger:function(t,e){return this.each((function(){C.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var n=this[0];if(n)return C.event.trigger(t,e,n,!0)}});var Re=/\[\]$/,De=/\r?\n/g,Le=/^(?:submit|button|image|reset|file)$/i,Me=/^(?:input|select|textarea|keygen)/i;function He(t,e,n,i){var o;if(Array.isArray(e))C.each(e,(function(e,o){n||Re.test(t)?i(t,o):He(t+"["+("object"==typeof o&&null!=o?e:"")+"]",o,n,i)}));else if(n||"object"!==j(e))i(t,e);else for(o in e)He(t+"["+o+"]",e[o],n,i)}C.param=function(t,e){var n,i=[],o=function(t,e){var n=y(e)?e():e;i[i.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!C.isPlainObject(t))C.each(t,(function(){o(this.name,this.value)}));else for(n in t)He(n,t[n],e,o);return i.join("&")},C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=C.prop(this,"elements");return t?C.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!C(this).is(":disabled")&&Me.test(this.nodeName)&&!Le.test(t)&&(this.checked||!Ct.test(t))})).map((function(t,e){var n=C(this).val();return null==n?null:Array.isArray(n)?C.map(n,(function(t){return{name:e.name,value:t.replace(De,"\r\n")}})):{name:e.name,value:n.replace(De,"\r\n")}})).get()}});var qe=/%20/g,Ie=/#.*$/,Fe=/([?&])_=[^&]*/,Ne=/^(.*?):[ \t]*([^\r\n]*)$/gm,Be=/^(?:GET|HEAD)$/,We=/^\/\//,Qe={},Ke={},Ge="*/".concat("*"),Ye=b.createElement("a");function Ue(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var i,o=0,r=e.toLowerCase().match(G)||[];if(y(n))for(;i=r[o++];)"+"===i[0]?(i=i.slice(1)||"*",(t[i]=t[i]||[]).unshift(n)):(t[i]=t[i]||[]).push(n)}}function Ve(t,e,n,i){var o={},r=t===Ke;function s(a){var l;return o[a]=!0,C.each(t[a]||[],(function(t,a){var u=a(e,n,i);return"string"!=typeof u||r||o[u]?r?!(l=u):void 0:(e.dataTypes.unshift(u),s(u),!1)})),l}return s(e.dataTypes[0])||!o["*"]&&s("*")}function Xe(t,e){var n,i,o=C.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((o[n]?t:i||(i={}))[n]=e[n]);return i&&C.extend(!0,t,i),t}Ye.href=Te.href,C.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Te.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Te.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":C.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?Xe(Xe(t,C.ajaxSettings),e):Xe(C.ajaxSettings,t)},ajaxPrefilter:Ue(Qe),ajaxTransport:Ue(Ke),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};var n,o,r,s,a,l,u,c,f,d,h=C.ajaxSetup({},e),p=h.context||h,v=h.context&&(p.nodeType||p.jquery)?C(p):C.event,m=C.Deferred(),y=C.Callbacks("once memory"),g=h.statusCode||{},w={},k={},j="canceled",_={readyState:0,getResponseHeader:function(t){var e;if(u){if(!s)for(s={};e=Ne.exec(r);)s[e[1].toLowerCase()+" "]=(s[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=s[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return u?r:null},setRequestHeader:function(t,e){return null==u&&(t=k[t.toLowerCase()]=k[t.toLowerCase()]||t,w[t]=e),this},overrideMimeType:function(t){return null==u&&(h.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)_.always(t[_.status]);else for(e in t)g[e]=[g[e],t[e]];return this},abort:function(t){var e=t||j;return n&&n.abort(e),$(0,e),this}};if(m.promise(_),h.url=((t||h.url||Te.href)+"").replace(We,Te.protocol+"//"),h.type=e.method||e.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(G)||[""],null==h.crossDomain){l=b.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Ye.protocol+"//"+Ye.host!=l.protocol+"//"+l.host}catch(t){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=C.param(h.data,h.traditional)),Ve(Qe,h,e,_),u)return _;for(f in(c=C.event&&h.global)&&0==C.active++&&C.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Be.test(h.type),o=h.url.replace(Ie,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qe,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(Pe.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Fe,"$1"),d=(Pe.test(o)?"&":"?")+"_="+Ee.guid+++d),h.url=o+d),h.ifModified&&(C.lastModified[o]&&_.setRequestHeader("If-Modified-Since",C.lastModified[o]),C.etag[o]&&_.setRequestHeader("If-None-Match",C.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||e.contentType)&&_.setRequestHeader("Content-Type",h.contentType),_.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ge+"; q=0.01":""):h.accepts["*"]),h.headers)_.setRequestHeader(f,h.headers[f]);if(h.beforeSend&&(!1===h.beforeSend.call(p,_,h)||u))return _.abort();if(j="abort",y.add(h.complete),_.done(h.success),_.fail(h.error),n=Ve(Ke,h,e,_)){if(_.readyState=1,c&&v.trigger("ajaxSend",[_,h]),u)return _;h.async&&h.timeout>0&&(a=i.setTimeout((function(){_.abort("timeout")}),h.timeout));try{u=!1,n.send(w,$)}catch(t){if(u)throw t;$(-1,t)}}else $(-1,"No Transport");function $(t,e,s,l){var f,d,b,w,k,j=e;u||(u=!0,a&&i.clearTimeout(a),n=void 0,r=l||"",_.readyState=t>0?4:0,f=t>=200&&t<300||304===t,s&&(w=function(t,e,n){for(var i,o,r,s,a=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=t.mimeType||e.getResponseHeader("Content-Type"));if(i)for(o in a)if(a[o]&&a[o].test(i)){l.unshift(o);break}if(l[0]in n)r=l[0];else{for(o in n){if(!l[0]||t.converters[o+" "+l[0]]){r=o;break}s||(s=o)}r=r||s}if(r)return r!==l[0]&&l.unshift(r),n[r]}(h,_,s)),!f&&C.inArray("script",h.dataTypes)>-1&&C.inArray("json",h.dataTypes)<0&&(h.converters["text script"]=function(){}),w=function(t,e,n,i){var o,r,s,a,l,u={},c=t.dataTypes.slice();if(c[1])for(s in t.converters)u[s.toLowerCase()]=t.converters[s];for(r=c.shift();r;)if(t.responseFields[r]&&(n[t.responseFields[r]]=e),!l&&i&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=r,r=c.shift())if("*"===r)r=l;else if("*"!==l&&l!==r){if(!(s=u[l+" "+r]||u["* "+r]))for(o in u)if((a=o.split(" "))[1]===r&&(s=u[l+" "+a[0]]||u["* "+a[0]])){!0===s?s=u[o]:!0!==u[o]&&(r=a[0],c.unshift(a[1]));break}if(!0!==s)if(s&&t.throws)e=s(e);else try{e=s(e)}catch(t){return{state:"parsererror",error:s?t:"No conversion from "+l+" to "+r}}}return{state:"success",data:e}}(h,w,_,f),f?(h.ifModified&&((k=_.getResponseHeader("Last-Modified"))&&(C.lastModified[o]=k),(k=_.getResponseHeader("etag"))&&(C.etag[o]=k)),204===t||"HEAD"===h.type?j="nocontent":304===t?j="notmodified":(j=w.state,d=w.data,f=!(b=w.error))):(b=j,!t&&j||(j="error",t<0&&(t=0))),_.status=t,_.statusText=(e||j)+"",f?m.resolveWith(p,[d,j,_]):m.rejectWith(p,[_,j,b]),_.statusCode(g),g=void 0,c&&v.trigger(f?"ajaxSuccess":"ajaxError",[_,h,f?d:b]),y.fireWith(p,[_,j]),c&&(v.trigger("ajaxComplete",[_,h]),--C.active||C.event.trigger("ajaxStop")))}return _},getJSON:function(t,e,n){return C.get(t,e,n,"json")},getScript:function(t,e){return C.get(t,void 0,e,"script")}}),C.each(["get","post"],(function(t,e){C[e]=function(t,n,i,o){return y(n)&&(o=o||i,i=n,n=void 0),C.ajax(C.extend({url:t,type:e,dataType:o,data:n,success:i},C.isPlainObject(t)&&t))}})),C.ajaxPrefilter((function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")})),C._evalUrl=function(t,e,n){return C.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){C.globalEval(t,e,n)}})},C.fn.extend({wrapAll:function(t){var e;return this[0]&&(y(t)&&(t=t.call(this[0])),e=C(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map((function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t})).append(this)),this},wrapInner:function(t){return y(t)?this.each((function(e){C(this).wrapInner(t.call(this,e))})):this.each((function(){var e=C(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)}))},wrap:function(t){var e=y(t);return this.each((function(n){C(this).wrapAll(e?t.call(this,n):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){C(this).replaceWith(this.childNodes)})),this}}),C.expr.pseudos.hidden=function(t){return!C.expr.pseudos.visible(t)},C.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},C.ajaxSettings.xhr=function(){try{return new i.XMLHttpRequest}catch(t){}};var Ze={0:200,1223:204},Je=C.ajaxSettings.xhr();m.cors=!!Je&&"withCredentials"in Je,m.ajax=Je=!!Je,C.ajaxTransport((function(t){var e,n;if(m.cors||Je&&!t.crossDomain)return{send:function(o,r){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];for(s in t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest"),o)a.setRequestHeader(s,o[s]);e=function(t){return function(){e&&(e=n=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===t?a.abort():"error"===t?"number"!=typeof a.status?r(0,"error"):r(a.status,a.statusText):r(Ze[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=e(),n=a.onerror=a.ontimeout=e("error"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&i.setTimeout((function(){e&&n()}))},e=e("abort");try{a.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),C.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),C.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return C.globalEval(t),t}}}),C.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),C.ajaxTransport("script",(function(t){var e,n;if(t.crossDomain||t.scriptAttrs)return{send:function(i,o){e=C(" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  scylla.scylladb.com

                  + +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/api-reference/groups/scylla.scylladb.com/nodeconfigs.html b/v1.14/api-reference/groups/scylla.scylladb.com/nodeconfigs.html new file mode 100644 index 00000000000..fe69c809fc2 --- /dev/null +++ b/v1.14/api-reference/groups/scylla.scylladb.com/nodeconfigs.html @@ -0,0 +1,2830 @@ + + + + + + + + + + + + + NodeConfig (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  NodeConfig (scylla.scylladb.com/v1alpha1)

                  +
                  +
                  APIVersion: scylla.scylladb.com/v1alpha1
                  +
                  Kind: NodeConfig
                  +
                  PluralName: nodeconfigs
                  +
                  SingularName: nodeconfig
                  +
                  Scope: Cluster
                  +
                  ListKind: NodeConfigList
                  +
                  Served: true
                  +
                  Storage: true
                  +
                  +
                  +

                  Description

                  +
                  +
                  +

                  Specification

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  apiVersion

                  string

                  APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

                  kind

                  string

                  Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

                  metadata

                  object

                  spec

                  object

                  status

                  object

                  +
                  +

                  .metadata

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  disableOptimizations

                  boolean

                  disableOptimizations controls if nodes matching placement requirements are going to be optimized. Turning off optimizations on already optimized Nodes does not revert changes.

                  localDiskSetup

                  object

                  localDiskSetup contains options of automatic local disk setup.

                  placement

                  object

                  placement contains scheduling rules for NodeConfig Pods.

                  +
                  +
                  +
                  +

                  .spec.localDiskSetup

                  +
                  +

                  Description

                  +

                  localDiskSetup contains options of automatic local disk setup.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  filesystems

                  array (object)

                  filesystems is a list of filesystem configurations.

                  loopDevices

                  array (object)

                  loops is a list of loop device configurations.

                  mounts

                  array (object)

                  mounts is a list of mount configuration.

                  raids

                  array (object)

                  raids is a list of raid configurations.

                  +
                  +
                  +
                  +

                  .spec.localDiskSetup.filesystems[]

                  +
                  +

                  Description

                  +

                  FilesystemConfiguration specifies filesystem configuration options.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  device

                  string

                  device is a path to the device where the desired filesystem should be created.

                  type

                  string

                  type is a desired filesystem type.

                  +
                  +
                  +
                  +

                  .spec.localDiskSetup.loopDevices[]

                  +
                  +

                  Description

                  +

                  LoopDeviceConfiguration specifies loop device configuration options.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  imagePath

                  string

                  imagePath specifies path on host where backing image file for loop device should be located.

                  name

                  string

                  name specifies the name of the symlink that will point to actual loop device, created under /dev/loops/.

                  size

                  size specifies the size of the loop device.

                  +
                  +
                  +
                  +

                  .spec.localDiskSetup.mounts[]

                  +
                  +

                  Description

                  +

                  MountConfiguration specifies mount configuration options.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  device

                  string

                  device is path to a device that should be mounted.

                  fsType

                  string

                  fsType specifies the filesystem on the device.

                  mountPoint

                  string

                  mountPoint is a path where the device should be mounted at. If the mountPoint is a symlink, the mount will be set up for the target.

                  unsupportedOptions

                  array (string)

                  unsupportedOptions is a list of mount options used during device mounting. unsupported in this field name means that we won’t support all the available options passed down using this field.

                  +
                  +
                  +
                  +

                  .spec.localDiskSetup.raids[]

                  +
                  +

                  Description

                  +

                  RAIDConfiguration is a configuration of a raid array.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  RAID0

                  object

                  RAID0 specifies RAID0 options.

                  name

                  string

                  name specifies the name of the raid device to be created under in /dev/md/.

                  type

                  string

                  type is a type of raid array.

                  +
                  +
                  +
                  +

                  .spec.localDiskSetup.raids[].RAID0

                  +
                  +

                  Description

                  +

                  RAID0 specifies RAID0 options.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  devices

                  object

                  devices defines which devices constitute the raid array.

                  +
                  +
                  +
                  +

                  .spec.localDiskSetup.raids[].RAID0.devices

                  +
                  +

                  Description

                  +

                  devices defines which devices constitute the raid array.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  modelRegex

                  string

                  modelRegex is a regular expression filtering devices by their model name.

                  nameRegex

                  string

                  nameRegex is a regular expression filtering devices by their name.

                  +
                  +
                  +
                  +

                  .spec.placement

                  +
                  +

                  Description

                  +

                  placement contains scheduling rules for NodeConfig Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  affinity

                  object

                  affinity is a group of affinity scheduling rules for NodeConfig Pods.

                  nodeSelector

                  object

                  nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node.

                  tolerations

                  array (object)

                  tolerations is a group of tolerations NodeConfig Pods are going to have.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity

                  +
                  +

                  Description

                  +

                  affinity is a group of affinity scheduling rules for NodeConfig Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  nodeAffinity

                  object

                  Describes node affinity scheduling rules for the pod.

                  podAffinity

                  object

                  Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

                  podAntiAffinity

                  object

                  Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.nodeAffinity

                  +
                  +

                  Description

                  +

                  Describes node affinity scheduling rules for the pod.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  object

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preference

                  object

                  A node selector term, associated with the corresponding weight.

                  weight

                  integer

                  Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

                  +
                  +

                  Description

                  +

                  A node selector term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  A list of node selector requirements by node’s labels.

                  matchFields

                  array (object)

                  A list of node selector requirements by node’s fields.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

                  +
                  +

                  Description

                  +

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  nodeSelectorTerms

                  array (object)

                  Required. A list of node selector terms. The terms are ORed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

                  +
                  +

                  Description

                  +

                  A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  A list of node selector requirements by node’s labels.

                  matchFields

                  array (object)

                  A list of node selector requirements by node’s fields.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity

                  +
                  +

                  Description

                  +

                  Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  podAffinityTerm

                  object

                  Required. A pod affinity term, associated with the corresponding weight.

                  weight

                  integer

                  weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

                  +
                  +

                  Description

                  +

                  Required. A pod affinity term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity

                  +
                  +

                  Description

                  +

                  Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  podAffinityTerm

                  object

                  Required. A pod affinity term, associated with the corresponding weight.

                  weight

                  integer

                  weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

                  +
                  +

                  Description

                  +

                  Required. A pod affinity term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.placement.nodeSelector

                  +
                  +

                  Description

                  +

                  nodeSelector is a selector which must be true for the NodeConfig Pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.placement.tolerations[]

                  +
                  +

                  Description

                  +

                  The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  effect

                  string

                  Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

                  key

                  string

                  Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

                  operator

                  string

                  Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

                  tolerationSeconds

                  integer

                  TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

                  value

                  string

                  Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

                  +
                  +
                  +
                  +

                  .status

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  conditions

                  array (object)

                  conditions represents the latest available observations of current state.

                  nodeStatuses

                  array (object)

                  nodeStatuses hold the status for each tuned node.

                  observedGeneration

                  integer

                  observedGeneration indicates the most recent generation observed by the controller.

                  +
                  +
                  +
                  +

                  .status.conditions[]

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  lastTransitionTime

                  string

                  lastTransitionTime is last time the condition transitioned from one status to another.

                  message

                  string

                  message is a human-readable message indicating details about the transition.

                  observedGeneration

                  integer

                  observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

                  reason

                  string

                  reason is the reason for condition’s last transition.

                  status

                  string

                  status represents the state of the condition, one of True, False, or Unknown.

                  type

                  string

                  type is the type of the NodeConfig condition.

                  +
                  +
                  +
                  +

                  .status.nodeStatuses[]

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  tunedContainers

                  array (string)

                  tunedNode

                  boolean

                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/api-reference/groups/scylla.scylladb.com/scyllaclusters.html b/v1.14/api-reference/groups/scylla.scylladb.com/scyllaclusters.html new file mode 100644 index 00000000000..354ce0a74ec --- /dev/null +++ b/v1.14/api-reference/groups/scylla.scylladb.com/scyllaclusters.html @@ -0,0 +1,7429 @@ + + + + + + + + + + + + + ScyllaCluster (scylla.scylladb.com/v1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  ScyllaCluster (scylla.scylladb.com/v1)

                  +
                  +
                  APIVersion: scylla.scylladb.com/v1
                  +
                  Kind: ScyllaCluster
                  +
                  PluralName: scyllaclusters
                  +
                  SingularName: scyllacluster
                  +
                  Scope: Namespaced
                  +
                  ListKind: ScyllaClusterList
                  +
                  Served: true
                  +
                  Storage: true
                  +
                  +
                  +

                  Description

                  +

                  ScyllaCluster defines a Scylla cluster.

                  +
                  +
                  +

                  Specification

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  apiVersion

                  string

                  APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

                  kind

                  string

                  Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

                  metadata

                  object

                  spec

                  object

                  spec defines the desired state of this scylla cluster.

                  status

                  object

                  status is the current status of this scylla cluster.

                  +
                  +

                  .metadata

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec

                  +
                  +

                  Description

                  +

                  spec defines the desired state of this scylla cluster.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  agentRepository

                  string

                  agentRepository is the repository to pull the agent image from.

                  agentVersion

                  string

                  agentVersion indicates the version of Scylla Manager Agent to use.

                  alternator

                  object

                  alternator designates this cluster an Alternator cluster.

                  automaticOrphanedNodeCleanup

                  boolean

                  automaticOrphanedNodeCleanup controls if automatic orphan node cleanup should be performed.

                  backups

                  array (object)

                  backups specifies backup tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored.

                  cpuset

                  boolean

                  cpuset determines if the cluster will use cpu-pinning. Deprecated: cpuset is deprecated and may be ignored in the future.

                  datacenter

                  object

                  datacenter holds a specification of a datacenter.

                  developerMode

                  boolean

                  developerMode determines if the cluster runs in developer-mode.

                  dnsDomains

                  array (string)

                  dnsDomains is a list of DNS domains this cluster is reachable by. These domains are used when setting up the infrastructure, like certificates. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

                  exposeOptions

                  object

                  exposeOptions specifies options for exposing ScyllaCluster services. This field is immutable. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

                  externalSeeds

                  array (string)

                  externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as “seeds” parameter of seed-provider.

                  forceRedeploymentReason

                  string

                  forceRedeploymentReason can be used to force a rolling update of all racks by providing a unique string.

                  genericUpgrade

                  object

                  genericUpgrade allows to configure behavior of generic upgrade logic.

                  imagePullSecrets

                  array (object)

                  imagePullSecrets is an optional list of references to secrets in the same namespace used for pulling Scylla and Agent images.

                  minReadySeconds

                  integer

                  minReadySeconds is the minimum number of seconds for which a newly created ScyllaDB node should be ready for it to be considered available. When used to control load balanced traffic, this can give the load balancer in front of a node enough time to notice that the node is ready and start forwarding traffic in time. Because it all depends on timing, the order is not guaranteed and, if possible, you should use readinessGates instead. If not provided, Operator will determine this value.

                  minTerminationGracePeriodSeconds

                  integer

                  minTerminationGracePeriodSeconds specifies minimum duration in seconds to wait before every drained node is terminated. This gives time to potential load balancer in front of a node to notice that node is not ready anymore and stop forwarding new requests. This applies only when node is terminated gracefully. If not provided, Operator will determine this value. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

                  network

                  object

                  network holds the networking config.

                  podMetadata

                  object

                  podMetadata controls shared metadata for all pods created based on this spec.

                  readinessGates

                  array (object)

                  readinessGates specifies custom readiness gates that will be evaluated for every ScyllaDB Pod readiness. It’s projected into every ScyllaDB Pod as its readinessGate. Refer to upstream documentation to learn more about readiness gates.

                  repairs

                  array (object)

                  repairs specify repair tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored.

                  repository

                  string

                  repository is the image repository to pull the Scylla image from.

                  scyllaArgs

                  string

                  scyllaArgs will be appended to Scylla binary during startup. This is supported from 4.2.0 Scylla version.

                  sysctls

                  array (string)

                  sysctls holds the sysctl properties to be applied during initialization given as a list of key=value pairs. Example: fs.aio-max-nr=232323

                  version

                  string

                  version is a version tag of Scylla to use.

                  +
                  +
                  +
                  +

                  .spec.alternator

                  +
                  +

                  Description

                  +

                  alternator designates this cluster an Alternator cluster.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  insecureDisableAuthorization

                  boolean

                  insecureDisableAuthorization disables Alternator authorization. If not specified, the authorization is enabled. For backwards compatibility the authorization is disabled when this field is not specified and a manual port is used.

                  insecureEnableHTTP

                  boolean

                  insecureEnableHTTP enables serving Alternator traffic also on insecure HTTP port.

                  port

                  integer

                  port is the port number used to bind the Alternator API. Deprecated: port is deprecated and may be ignored in the future. Please make sure to avoid using hostNetworking and work with standard Kubernetes concepts like Services.

                  servingCertificate

                  object

                  servingCertificate references a TLS certificate for serving secure traffic.

                  writeIsolation

                  string

                  writeIsolation indicates the isolation level.

                  +
                  +
                  +
                  +

                  .spec.alternator.servingCertificate

                  +
                  +

                  Description

                  +

                  servingCertificate references a TLS certificate for serving secure traffic.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  operatorManagedOptions

                  object

                  operatorManagedOptions specifies options for certificates manged by the operator.

                  type

                  string

                  type determines the source of this certificate.

                  userManagedOptions

                  object

                  userManagedOptions specifies options for certificates manged by users.

                  +
                  +
                  +
                  +

                  .spec.alternator.servingCertificate.operatorManagedOptions

                  +
                  +

                  Description

                  +

                  operatorManagedOptions specifies options for certificates manged by the operator.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  additionalDNSNames

                  array (string)

                  additionalDNSNames represents external DNS names that the certificates should be signed for.

                  additionalIPAddresses

                  array (string)

                  additionalIPAddresses represents external IP addresses that the certificates should be signed for.

                  +
                  +
                  +
                  +

                  .spec.alternator.servingCertificate.userManagedOptions

                  +
                  +

                  Description

                  +

                  userManagedOptions specifies options for certificates manged by users.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  secretName

                  string

                  secretName references a kubernetes.io/tls type secret containing the TLS cert and key.

                  +
                  +
                  +
                  +

                  .spec.backups[]

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  cron

                  string

                  cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s].

                  dc

                  array (string)

                  dc is a list of datacenter glob patterns, e.g. ‘dc1,!otherdc*’ used to specify the DCs to include or exclude from backup.

                  interval

                  string

                  interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead.

                  keyspace

                  array (string)

                  keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

                  location

                  array (string)

                  location is a list of backup locations in the format [<dc>:]<provider>:<name> ex. s3:my-bucket. The <dc>: part is optional and is only needed when different datacenters are being used to upload data to different locations. <name> must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden. The only supported storage <provider> at the moment are s3 and gcs.

                  name

                  string

                  name specifies the name of a task.

                  numRetries

                  integer

                  numRetries indicates how many times a scheduled task will be retried before failing.

                  rateLimit

                  array (string)

                  rateLimit is a list of megabytes (MiB) per second rate limits expressed in the format [<dc>:]<limit>. The <dc>: part is optional and only needed when different datacenters need different upload limits. Set to 0 for no limit (default 100).

                  retention

                  integer

                  retention is the number of backups which are to be stored.

                  snapshotParallel

                  array (string)

                  snapshotParallel is a list of snapshot parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set, the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

                  startDate

                  string

                  startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

                  timezone

                  string

                  timezone specifies the timezone of cron field.

                  uploadParallel

                  array (string)

                  uploadParallel is a list of upload parallelism limits in the format [<dc>:]<limit>. The <dc>: part is optional and allows for specifying different limits in selected datacenters. If The <dc>: part is not set the limit is global (e.g. ‘dc1:2,5’) the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters.

                  +
                  +
                  +
                  +

                  .spec.datacenter

                  +
                  +

                  Description

                  +

                  datacenter holds a specification of a datacenter.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  name is the name of the scylla datacenter. Used in the cassandra-rackdc.properties file.

                  racks

                  array (object)

                  racks specify the racks in the datacenter.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[]

                  +
                  +

                  Description

                  +

                  RackSpec is the desired state for a Scylla Rack.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  agentResources

                  object

                  agentResources specify the resources for the Agent container.

                  agentVolumeMounts

                  array (object)

                  AgentVolumeMounts to be added to Agent container.

                  members

                  integer

                  members is the number of Scylla instances in this rack.

                  name

                  string

                  name is the name of the Scylla Rack. Used in the cassandra-rackdc.properties file.

                  placement

                  object

                  placement describes restrictions for the nodes Scylla is scheduled on.

                  resources

                  object

                  resources the Scylla container will use.

                  scyllaAgentConfig

                  string

                  Scylla config map name to customize scylla manager agent

                  scyllaConfig

                  string

                  Scylla config map name to customize scylla.yaml

                  storage

                  object

                  storage describes the underlying storage that Scylla will consume.

                  volumeMounts

                  array (object)

                  VolumeMounts to be added to Scylla container.

                  volumes

                  array (object)

                  Volumes added to Scylla Pod.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].agentResources

                  +
                  +

                  Description

                  +

                  agentResources specify the resources for the Agent container.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  claims

                  array (object)

                  +
                  Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

                  This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

                  +
                  +
                  +

                  limits

                  object

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  requests

                  object

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].agentResources.claims[]

                  +
                  +

                  Description

                  +

                  ResourceClaim references one entry in PodSpec.ResourceClaims.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].agentResources.limits

                  +
                  +

                  Description

                  +

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].agentResources.requests

                  +
                  +

                  Description

                  +

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].agentVolumeMounts[]

                  +
                  +

                  Description

                  +

                  VolumeMount describes a mounting of a Volume within a container.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  mountPath

                  string

                  Path within the container at which the volume should be mounted. Must not contain ‘:’.

                  mountPropagation

                  string

                  mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

                  name

                  string

                  This must match the Name of a Volume.

                  readOnly

                  boolean

                  Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

                  subPath

                  string

                  Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

                  subPathExpr

                  string

                  Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement

                  +
                  +

                  Description

                  +

                  placement describes restrictions for the nodes Scylla is scheduled on.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  nodeAffinity

                  object

                  nodeAffinity describes node affinity scheduling rules for the pod.

                  podAffinity

                  object

                  podAffinity describes pod affinity scheduling rules.

                  podAntiAffinity

                  object

                  podAntiAffinity describes pod anti-affinity scheduling rules.

                  tolerations

                  array (object)

                  tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.nodeAffinity

                  +
                  +

                  Description

                  +

                  nodeAffinity describes node affinity scheduling rules for the pod.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  object

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preference

                  object

                  A node selector term, associated with the corresponding weight.

                  weight

                  integer

                  Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

                  +
                  +

                  Description

                  +

                  A node selector term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  A list of node selector requirements by node’s labels.

                  matchFields

                  array (object)

                  A list of node selector requirements by node’s fields.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

                  +
                  +

                  Description

                  +

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  nodeSelectorTerms

                  array (object)

                  Required. A list of node selector terms. The terms are ORed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

                  +
                  +

                  Description

                  +

                  A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  A list of node selector requirements by node’s labels.

                  matchFields

                  array (object)

                  A list of node selector requirements by node’s fields.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity

                  +
                  +

                  Description

                  +

                  podAffinity describes pod affinity scheduling rules.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  podAffinityTerm

                  object

                  Required. A pod affinity term, associated with the corresponding weight.

                  weight

                  integer

                  weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

                  +
                  +

                  Description

                  +

                  Required. A pod affinity term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity

                  +
                  +

                  Description

                  +

                  podAntiAffinity describes pod anti-affinity scheduling rules.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  podAffinityTerm

                  object

                  Required. A pod affinity term, associated with the corresponding weight.

                  weight

                  integer

                  weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

                  +
                  +

                  Description

                  +

                  Required. A pod affinity term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].placement.tolerations[]

                  +
                  +

                  Description

                  +

                  The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  effect

                  string

                  Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

                  key

                  string

                  Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

                  operator

                  string

                  Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

                  tolerationSeconds

                  integer

                  TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

                  value

                  string

                  Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].resources

                  +
                  +

                  Description

                  +

                  resources the Scylla container will use.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  claims

                  array (object)

                  +
                  Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

                  This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

                  +
                  +
                  +

                  limits

                  object

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  requests

                  object

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].resources.claims[]

                  +
                  +

                  Description

                  +

                  ResourceClaim references one entry in PodSpec.ResourceClaims.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].resources.limits

                  +
                  +

                  Description

                  +

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].resources.requests

                  +
                  +

                  Description

                  +

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].storage

                  +
                  +

                  Description

                  +

                  storage describes the underlying storage that Scylla will consume.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  capacity

                  string

                  capacity describes the requested size of each persistent volume.

                  metadata

                  object

                  metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

                  storageClassName

                  string

                  storageClassName is the name of a storageClass to request.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].storage.metadata

                  +
                  +

                  Description

                  +

                  metadata controls shared metadata for the volume claim for this rack. At this point, the values are applied only for the initial claim and are not reconciled during its lifetime. Note that this may get fixed in the future and this behaviour shouldn’t be relied on in any way.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  annotations

                  object

                  annotations is a custom key value map that gets merged with managed object annotations.

                  labels

                  object

                  labels is a custom key value map that gets merged with managed object labels.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].storage.metadata.annotations

                  +
                  +

                  Description

                  +

                  annotations is a custom key value map that gets merged with managed object annotations.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].storage.metadata.labels

                  +
                  +

                  Description

                  +

                  labels is a custom key value map that gets merged with managed object labels.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumeMounts[]

                  +
                  +

                  Description

                  +

                  VolumeMount describes a mounting of a Volume within a container.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  mountPath

                  string

                  Path within the container at which the volume should be mounted. Must not contain ‘:’.

                  mountPropagation

                  string

                  mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

                  name

                  string

                  This must match the Name of a Volume.

                  readOnly

                  boolean

                  Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

                  subPath

                  string

                  Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root).

                  subPathExpr

                  string

                  Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[]

                  +
                  +

                  Description

                  +

                  Volume represents a named volume in a pod that may be accessed by any container in the pod.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  awsElasticBlockStore

                  object

                  awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

                  azureDisk

                  object

                  azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

                  azureFile

                  object

                  azureFile represents an Azure File Service mount on the host and bind mount to the pod.

                  cephfs

                  object

                  cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

                  cinder

                  object

                  cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

                  configMap

                  object

                  configMap represents a configMap that should populate this volume

                  csi

                  object

                  csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

                  downwardAPI

                  object

                  downwardAPI represents downward API about the pod that should populate this volume

                  emptyDir

                  object

                  emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

                  ephemeral

                  object

                  +
                  ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

                  Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

                  +
                  +
                  +

                  fc

                  object

                  fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

                  flexVolume

                  object

                  flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

                  flocker

                  object

                  flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

                  gcePersistentDisk

                  object

                  gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

                  gitRepo

                  object

                  gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

                  glusterfs

                  object

                  glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

                  hostPath

                  object

                  hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

                  iscsi

                  object

                  iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

                  name

                  string

                  name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

                  nfs

                  object

                  nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

                  persistentVolumeClaim

                  object

                  persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

                  photonPersistentDisk

                  object

                  photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

                  portworxVolume

                  object

                  portworxVolume represents a portworx volume attached and mounted on kubelets host machine

                  projected

                  object

                  projected items for all in one resources secrets, configmaps, and downward API

                  quobyte

                  object

                  quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

                  rbd

                  object

                  rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

                  scaleIO

                  object

                  scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

                  secret

                  object

                  secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

                  storageos

                  object

                  storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

                  vsphereVolume

                  object

                  vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].awsElasticBlockStore

                  +
                  +

                  Description

                  +

                  awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fsType

                  string

                  fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine

                  partition

                  integer

                  partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty).

                  readOnly

                  boolean

                  readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

                  volumeID

                  string

                  volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].azureDisk

                  +
                  +

                  Description

                  +

                  azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  cachingMode

                  string

                  cachingMode is the Host Caching mode: None, Read Only, Read Write.

                  diskName

                  string

                  diskName is the Name of the data disk in the blob storage

                  diskURI

                  string

                  diskURI is the URI of data disk in the blob storage

                  fsType

                  string

                  fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

                  kind

                  string

                  kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared

                  readOnly

                  boolean

                  readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].azureFile

                  +
                  +

                  Description

                  +

                  azureFile represents an Azure File Service mount on the host and bind mount to the pod.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  readOnly

                  boolean

                  readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

                  secretName

                  string

                  secretName is the name of secret that contains Azure Storage Account Name and Key

                  shareName

                  string

                  shareName is the azure share Name

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].cephfs

                  +
                  +

                  Description

                  +

                  cephFS represents a Ceph FS mount on the host that shares a pod’s lifetime

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  monitors

                  array (string)

                  monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

                  path

                  string

                  path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /

                  readOnly

                  boolean

                  readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

                  secretFile

                  string

                  secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

                  secretRef

                  object

                  secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

                  user

                  string

                  user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].cephfs.secretRef

                  +
                  +

                  Description

                  +

                  secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].cinder

                  +
                  +

                  Description

                  +

                  cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fsType

                  string

                  fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

                  readOnly

                  boolean

                  readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

                  secretRef

                  object

                  secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

                  volumeID

                  string

                  volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].cinder.secretRef

                  +
                  +

                  Description

                  +

                  secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].configMap

                  +
                  +

                  Description

                  +

                  configMap represents a configMap that should populate this volume

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  defaultMode

                  integer

                  defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

                  items

                  array (object)

                  items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  optional

                  boolean

                  optional specify whether the ConfigMap or its keys must be defined

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].configMap.items[]

                  +
                  +

                  Description

                  +

                  Maps a string key to a path within a volume.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the key to project.

                  mode

                  integer

                  mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

                  path

                  string

                  path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].csi

                  +
                  +

                  Description

                  +

                  csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  driver

                  string

                  driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.

                  fsType

                  string

                  fsType to mount. Ex. “ext4”, “xfs”, “ntfs”. If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.

                  nodePublishSecretRef

                  object

                  nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

                  readOnly

                  boolean

                  readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).

                  volumeAttributes

                  object

                  volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef

                  +
                  +

                  Description

                  +

                  nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].csi.volumeAttributes

                  +
                  +

                  Description

                  +

                  volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver’s documentation for supported values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].downwardAPI

                  +
                  +

                  Description

                  +

                  downwardAPI represents downward API about the pod that should populate this volume

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  defaultMode

                  integer

                  Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

                  items

                  array (object)

                  Items is a list of downward API volume file

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].downwardAPI.items[]

                  +
                  +

                  Description

                  +

                  DownwardAPIVolumeFile represents information to create the file containing the pod field

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fieldRef

                  object

                  Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

                  mode

                  integer

                  Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

                  path

                  string

                  Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

                  resourceFieldRef

                  object

                  Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef

                  +
                  +

                  Description

                  +

                  Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  apiVersion

                  string

                  Version of the schema the FieldPath is written in terms of, defaults to “v1”.

                  fieldPath

                  string

                  Path of the field to select in the specified API version.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef

                  +
                  +

                  Description

                  +

                  Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  containerName

                  string

                  Container name: required for volumes, optional for env vars

                  divisor

                  Specifies the output format of the exposed resources, defaults to “1”

                  resource

                  string

                  Required: resource to select

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].emptyDir

                  +
                  +

                  Description

                  +

                  emptyDir represents a temporary directory that shares a pod’s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  medium

                  string

                  medium represents what type of storage medium should back this directory. The default is “” which means to use the node’s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

                  sizeLimit

                  sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral

                  +
                  +

                  Description

                  +
                  +
                  ephemeral represents a volume that is handled by a cluster storage driver. The volume’s lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.

                  Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). +Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. +Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. +A pod can use both types of ephemeral volumes and persistent volumes at the same time.

                  +
                  +
                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  volumeClaimTemplate

                  object

                  +
                  Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

                  An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

                  +
                  +
                  +
                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate

                  +
                  +

                  Description

                  +
                  +
                  Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be <pod name>-<volume name> where <volume name> is the name from the PodSpec.Volumes array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).

                  An existing PVC with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. +This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. +Required, must not be nil.

                  +
                  +
                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  metadata

                  object

                  May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

                  spec

                  object

                  The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata

                  +
                  +

                  Description

                  +

                  May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec

                  +
                  +

                  Description

                  +

                  The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  accessModes

                  array (string)

                  accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

                  dataSource

                  object

                  dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

                  dataSourceRef

                  object

                  dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

                  resources

                  object

                  resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

                  selector

                  object

                  selector is a label query over volumes to consider for binding.

                  storageClassName

                  string

                  storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

                  volumeAttributesClassName

                  string

                  volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

                  volumeMode

                  string

                  volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

                  volumeName

                  string

                  volumeName is the binding reference to the PersistentVolume backing this claim.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource

                  +
                  +

                  Description

                  +

                  dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  apiGroup

                  string

                  APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

                  kind

                  string

                  Kind is the type of resource being referenced

                  name

                  string

                  Name is the name of resource being referenced

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef

                  +
                  +

                  Description

                  +

                  dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  apiGroup

                  string

                  APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

                  kind

                  string

                  Kind is the type of resource being referenced

                  name

                  string

                  Name is the name of resource being referenced

                  namespace

                  string

                  Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources

                  +
                  +

                  Description

                  +

                  resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  limits

                  object

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  requests

                  object

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits

                  +
                  +

                  Description

                  +

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests

                  +
                  +

                  Description

                  +

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector

                  +
                  +

                  Description

                  +

                  selector is a label query over volumes to consider for binding.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].fc

                  +
                  +

                  Description

                  +

                  fc represents a Fibre Channel resource that is attached to a kubelet’s host machine and then exposed to the pod.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fsType

                  string

                  fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine

                  lun

                  integer

                  lun is Optional: FC target lun number

                  readOnly

                  boolean

                  readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

                  targetWWNs

                  array (string)

                  targetWWNs is Optional: FC target worldwide names (WWNs)

                  wwids

                  array (string)

                  wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].flexVolume

                  +
                  +

                  Description

                  +

                  flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  driver

                  string

                  driver is the name of the driver to use for this volume.

                  fsType

                  string

                  fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. The default filesystem depends on FlexVolume script.

                  options

                  object

                  options is Optional: this field holds extra command options if any.

                  readOnly

                  boolean

                  readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

                  secretRef

                  object

                  secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].flexVolume.options

                  +
                  +

                  Description

                  +

                  options is Optional: this field holds extra command options if any.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].flexVolume.secretRef

                  +
                  +

                  Description

                  +

                  secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].flocker

                  +
                  +

                  Description

                  +

                  flocker represents a Flocker volume attached to a kubelet’s host machine. This depends on the Flocker control service being running

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  datasetName

                  string

                  datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated

                  datasetUUID

                  string

                  datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].gcePersistentDisk

                  +
                  +

                  Description

                  +

                  gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fsType

                  string

                  fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine

                  partition

                  integer

                  partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as “1”. Similarly, the volume partition for /dev/sda is “0” (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

                  pdName

                  string

                  pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

                  readOnly

                  boolean

                  readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].gitRepo

                  +
                  +

                  Description

                  +

                  gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod’s container.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  directory

                  string

                  directory is the target directory name. Must not contain or start with ‘..’. If ‘.’ is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.

                  repository

                  string

                  repository is the URL

                  revision

                  string

                  revision is the commit hash for the specified revision.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].glusterfs

                  +
                  +

                  Description

                  +

                  glusterfs represents a Glusterfs mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  endpoints

                  string

                  endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

                  path

                  string

                  path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

                  readOnly

                  boolean

                  readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].hostPath

                  +
                  +

                  Description

                  +

                  hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath — TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  path

                  string

                  path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

                  type

                  string

                  type for HostPath Volume Defaults to “” More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].iscsi

                  +
                  +

                  Description

                  +

                  iscsi represents an ISCSI Disk resource that is attached to a kubelet’s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  chapAuthDiscovery

                  boolean

                  chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication

                  chapAuthSession

                  boolean

                  chapAuthSession defines whether support iSCSI Session CHAP authentication

                  fsType

                  string

                  fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine

                  initiatorName

                  string

                  initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.

                  iqn

                  string

                  iqn is the target iSCSI Qualified Name.

                  iscsiInterface

                  string

                  iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to ‘default’ (tcp).

                  lun

                  integer

                  lun represents iSCSI Target Lun number.

                  portals

                  array (string)

                  portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

                  readOnly

                  boolean

                  readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.

                  secretRef

                  object

                  secretRef is the CHAP Secret for iSCSI target and initiator authentication

                  targetPortal

                  string

                  targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].iscsi.secretRef

                  +
                  +

                  Description

                  +

                  secretRef is the CHAP Secret for iSCSI target and initiator authentication

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].nfs

                  +
                  +

                  Description

                  +

                  nfs represents an NFS mount on the host that shares a pod’s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  path

                  string

                  path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

                  readOnly

                  boolean

                  readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

                  server

                  string

                  server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].persistentVolumeClaim

                  +
                  +

                  Description

                  +

                  persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  claimName

                  string

                  claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims

                  readOnly

                  boolean

                  readOnly Will force the ReadOnly setting in VolumeMounts. Default false.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].photonPersistentDisk

                  +
                  +

                  Description

                  +

                  photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fsType

                  string

                  fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

                  pdID

                  string

                  pdID is the ID that identifies Photon Controller persistent disk

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].portworxVolume

                  +
                  +

                  Description

                  +

                  portworxVolume represents a portworx volume attached and mounted on kubelets host machine

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fsType

                  string

                  fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”. Implicitly inferred to be “ext4” if unspecified.

                  readOnly

                  boolean

                  readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

                  volumeID

                  string

                  volumeID uniquely identifies a Portworx volume

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected

                  +
                  +

                  Description

                  +

                  projected items for all in one resources secrets, configmaps, and downward API

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  defaultMode

                  integer

                  defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

                  sources

                  array (object)

                  sources is the list of volume projections

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[]

                  +
                  +

                  Description

                  +

                  Projection that may be projected along with other supported volume types

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  clusterTrustBundle

                  object

                  +
                  ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

                  Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

                  +
                  +
                  +

                  configMap

                  object

                  configMap information about the configMap data to project

                  downwardAPI

                  object

                  downwardAPI information about the downwardAPI data to project

                  secret

                  object

                  secret information about the secret data to project

                  serviceAccountToken

                  object

                  serviceAccountToken is information about the serviceAccountToken data to project

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle

                  +
                  +

                  Description

                  +
                  +
                  ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file.

                  Alpha, gated by the ClusterTrustBundleProjection feature gate. +ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. +Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.

                  +
                  +
                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

                  name

                  string

                  Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.

                  optional

                  boolean

                  If true, don’t block pod startup if the referenced ClusterTrustBundle(s) aren’t available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.

                  path

                  string

                  Relative path from the volume root to write the bundle.

                  signerName

                  string

                  Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector

                  +
                  +

                  Description

                  +

                  Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as “match nothing”. If set but empty, interpreted as “match everything”.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].configMap

                  +
                  +

                  Description

                  +

                  configMap information about the configMap data to project

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  items

                  array (object)

                  items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  optional

                  boolean

                  optional specify whether the ConfigMap or its keys must be defined

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]

                  +
                  +

                  Description

                  +

                  Maps a string key to a path within a volume.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the key to project.

                  mode

                  integer

                  mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

                  path

                  string

                  path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI

                  +
                  +

                  Description

                  +

                  downwardAPI information about the downwardAPI data to project

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  items

                  array (object)

                  Items is a list of DownwardAPIVolume file

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]

                  +
                  +

                  Description

                  +

                  DownwardAPIVolumeFile represents information to create the file containing the pod field

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fieldRef

                  object

                  Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

                  mode

                  integer

                  Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

                  path

                  string

                  Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ‘..’ path. Must be utf-8 encoded. The first item of the relative path must not start with ‘..’

                  resourceFieldRef

                  object

                  Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef

                  +
                  +

                  Description

                  +

                  Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  apiVersion

                  string

                  Version of the schema the FieldPath is written in terms of, defaults to “v1”.

                  fieldPath

                  string

                  Path of the field to select in the specified API version.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef

                  +
                  +

                  Description

                  +

                  Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  containerName

                  string

                  Container name: required for volumes, optional for env vars

                  divisor

                  Specifies the output format of the exposed resources, defaults to “1”

                  resource

                  string

                  Required: resource to select

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].secret

                  +
                  +

                  Description

                  +

                  secret information about the secret data to project

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  items

                  array (object)

                  items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  optional

                  boolean

                  optional field specify whether the Secret or its key must be defined

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]

                  +
                  +

                  Description

                  +

                  Maps a string key to a path within a volume.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the key to project.

                  mode

                  integer

                  mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

                  path

                  string

                  path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken

                  +
                  +

                  Description

                  +

                  serviceAccountToken is information about the serviceAccountToken data to project

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  audience

                  string

                  audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.

                  expirationSeconds

                  integer

                  expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.

                  path

                  string

                  path is the path relative to the mount point of the file to project the token into.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].quobyte

                  +
                  +

                  Description

                  +

                  quobyte represents a Quobyte mount on the host that shares a pod’s lifetime

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  group

                  string

                  group to map volume access to Default is no group

                  readOnly

                  boolean

                  readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.

                  registry

                  string

                  registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes

                  tenant

                  string

                  tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin

                  user

                  string

                  user to map volume access to Defaults to serivceaccount user

                  volume

                  string

                  volume is a string that references an already created Quobyte volume by name.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].rbd

                  +
                  +

                  Description

                  +

                  rbd represents a Rados Block Device mount on the host that shares a pod’s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fsType

                  string

                  fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine

                  image

                  string

                  image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

                  keyring

                  string

                  keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

                  monitors

                  array (string)

                  monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

                  pool

                  string

                  pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

                  readOnly

                  boolean

                  readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

                  secretRef

                  object

                  secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

                  user

                  string

                  user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].rbd.secretRef

                  +
                  +

                  Description

                  +

                  secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].scaleIO

                  +
                  +

                  Description

                  +

                  scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fsType

                  string

                  fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Default is “xfs”.

                  gateway

                  string

                  gateway is the host address of the ScaleIO API Gateway.

                  protectionDomain

                  string

                  protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.

                  readOnly

                  boolean

                  readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

                  secretRef

                  object

                  secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

                  sslEnabled

                  boolean

                  sslEnabled Flag enable/disable SSL communication with Gateway, default false

                  storageMode

                  string

                  storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.

                  storagePool

                  string

                  storagePool is the ScaleIO Storage Pool associated with the protection domain.

                  system

                  string

                  system is the name of the storage system as configured in ScaleIO.

                  volumeName

                  string

                  volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].scaleIO.secretRef

                  +
                  +

                  Description

                  +

                  secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].secret

                  +
                  +

                  Description

                  +

                  secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  defaultMode

                  integer

                  defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

                  items

                  array (object)

                  items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the ‘..’ path or start with ‘..’.

                  optional

                  boolean

                  optional field specify whether the Secret or its keys must be defined

                  secretName

                  string

                  secretName is the name of the secret in the pod’s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].secret.items[]

                  +
                  +

                  Description

                  +

                  Maps a string key to a path within a volume.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the key to project.

                  mode

                  integer

                  mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.

                  path

                  string

                  path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element ‘..’. May not start with the string ‘..’.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].storageos

                  +
                  +

                  Description

                  +

                  storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fsType

                  string

                  fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

                  readOnly

                  boolean

                  readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

                  secretRef

                  object

                  secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

                  volumeName

                  string

                  volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.

                  volumeNamespace

                  string

                  volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod’s namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to “default” if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].storageos.secretRef

                  +
                  +

                  Description

                  +

                  secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  +
                  +
                  +
                  +

                  .spec.datacenter.racks[].volumes[].vsphereVolume

                  +
                  +

                  Description

                  +

                  vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  fsType

                  string

                  fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. “ext4”, “xfs”, “ntfs”. Implicitly inferred to be “ext4” if unspecified.

                  storagePolicyID

                  string

                  storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.

                  storagePolicyName

                  string

                  storagePolicyName is the storage Policy Based Management (SPBM) profile name.

                  volumePath

                  string

                  volumePath is the path that identifies vSphere volume vmdk

                  +
                  +
                  +
                  +

                  .spec.exposeOptions

                  +
                  +

                  Description

                  +

                  exposeOptions specifies options for exposing ScyllaCluster services. This field is immutable. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  broadcastOptions

                  object

                  BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

                  cql

                  object

                  cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

                  nodeService

                  object

                  nodeService controls properties of Service dedicated for each ScyllaCluster node.

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.broadcastOptions

                  +
                  +

                  Description

                  +

                  BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  clients

                  object

                  clients specifies options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

                  nodes

                  object

                  nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.broadcastOptions.clients

                  +
                  +

                  Description

                  +

                  clients specifies options related to the address that is broadcasted for communication with clients. This field controls the broadcast_rpc_address value in ScyllaDB config.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  podIP

                  object

                  podIP holds options related to Pod IP address.

                  type

                  string

                  type of the address that is broadcasted.

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.broadcastOptions.clients.podIP

                  +
                  +

                  Description

                  +

                  podIP holds options related to Pod IP address.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  source

                  string

                  sourceType specifies source of the Pod IP.

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.broadcastOptions.nodes

                  +
                  +

                  Description

                  +

                  nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the broadcast_address value in ScyllaDB config.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  podIP

                  object

                  podIP holds options related to Pod IP address.

                  type

                  string

                  type of the address that is broadcasted.

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.broadcastOptions.nodes.podIP

                  +
                  +

                  Description

                  +

                  podIP holds options related to Pod IP address.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  source

                  string

                  sourceType specifies source of the Pod IP.

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.cql

                  +
                  +

                  Description

                  +

                  cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  ingress

                  object

                  ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.cql.ingress

                  +
                  +

                  Description

                  +

                  ingress is an Ingress configuration options. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  annotations

                  object

                  annotations is a custom key value map that gets merged with managed object annotations.

                  disabled

                  boolean

                  disabled controls if Ingress object creation is disabled. Unless disabled, there is an Ingress objects created for every Scylla node. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

                  ingressClassName

                  string

                  ingressClassName specifies Ingress class name. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.

                  labels

                  object

                  labels is a custom key value map that gets merged with managed object labels.

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.cql.ingress.annotations

                  +
                  +

                  Description

                  +

                  annotations is a custom key value map that gets merged with managed object annotations.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.cql.ingress.labels

                  +
                  +

                  Description

                  +

                  labels is a custom key value map that gets merged with managed object labels.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.nodeService

                  +
                  +

                  Description

                  +

                  nodeService controls properties of Service dedicated for each ScyllaCluster node.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  allocateLoadBalancerNodePorts

                  boolean

                  allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

                  annotations

                  object

                  annotations is a custom key value map that gets merged with managed object annotations.

                  externalTrafficPolicy

                  string

                  externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

                  internalTrafficPolicy

                  string

                  internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

                  labels

                  object

                  labels is a custom key value map that gets merged with managed object labels.

                  loadBalancerClass

                  string

                  loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.

                  type

                  string

                  type is the Kubernetes Service type.

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.nodeService.annotations

                  +
                  +

                  Description

                  +

                  annotations is a custom key value map that gets merged with managed object annotations.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.exposeOptions.nodeService.labels

                  +
                  +

                  Description

                  +

                  labels is a custom key value map that gets merged with managed object labels.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.genericUpgrade

                  +
                  +

                  Description

                  +

                  genericUpgrade allows to configure behavior of generic upgrade logic.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  failureStrategy

                  string

                  failureStrategy specifies which logic is executed when upgrade failure happens. Currently only Retry is supported.

                  pollInterval

                  string

                  pollInterval specifies how often upgrade logic polls on state updates. Increasing this value should lower number of requests sent to apiserver, but it may affect overall time spent during upgrade. DEPRECATED.

                  +
                  +
                  +
                  +

                  .spec.imagePullSecrets[]

                  +
                  +

                  Description

                  +

                  LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?

                  +
                  +
                  +
                  +

                  .spec.network

                  +
                  +

                  Description

                  +

                  network holds the networking config.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  dnsPolicy

                  string

                  dnsPolicy defines how a pod’s DNS will be configured.

                  hostNetworking

                  boolean

                  hostNetworking determines if scylla uses the host’s network namespace. Setting this option avoids going through Kubernetes SDN and exposes scylla on node’s IP.

                  +
                  +
                  +
                  +

                  .spec.podMetadata

                  +
                  +

                  Description

                  +

                  podMetadata controls shared metadata for all pods created based on this spec.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  annotations

                  object

                  annotations is a custom key value map that gets merged with managed object annotations.

                  labels

                  object

                  labels is a custom key value map that gets merged with managed object labels.

                  +
                  +
                  +
                  +

                  .spec.podMetadata.annotations

                  +
                  +

                  Description

                  +

                  annotations is a custom key value map that gets merged with managed object annotations.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.podMetadata.labels

                  +
                  +

                  Description

                  +

                  labels is a custom key value map that gets merged with managed object labels.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.readinessGates[]

                  +
                  +

                  Description

                  +

                  PodReadinessGate contains the reference to a pod condition

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  conditionType

                  string

                  ConditionType refers to a condition in the pod’s condition list with matching type.

                  +
                  +
                  +
                  +

                  .spec.repairs[]

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  cron

                  string

                  cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s].

                  dc

                  array (string)

                  dc is a list of datacenter glob patterns, e.g. ‘dc1’, ‘!otherdc*’ used to specify the DCs to include or exclude from backup.

                  failFast

                  boolean

                  failFast indicates if a repair should be stopped on first error.

                  host

                  string

                  host specifies a host to repair. If empty, all hosts are repaired.

                  intensity

                  string

                  intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1. If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs). Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs. Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume. For Scylla clusters that do not support row-level repair, intensity can be a decimal between (0,1). In that case it specifies percent of shards that can be repaired in parallel on a repair master node. For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1.

                  interval

                  string

                  interval represents a task schedule interval e.g. 3d2h10m, valid units are d, h, m, s. Deprecated: please use cron instead.

                  keyspace

                  array (string)

                  keyspace is a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

                  name

                  string

                  name specifies the name of a task.

                  numRetries

                  integer

                  numRetries indicates how many times a scheduled task will be retried before failing.

                  parallel

                  integer

                  parallel is the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas). Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used. The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes. The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2.

                  smallTableThreshold

                  string

                  smallTableThreshold enable small table optimization for tables of size lower than given threshold. Supported units [B, MiB, GiB, TiB].

                  startDate

                  string

                  startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s.

                  timezone

                  string

                  timezone specifies the timezone of cron field.

                  +
                  +
                  +
                  +

                  .status

                  +
                  +

                  Description

                  +

                  status is the current status of this scylla cluster.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  availableMembers

                  integer

                  availableMembers is the number of ScyllaDB members in all racks that are available.

                  backups

                  array (object)

                  backups reflects status of backup tasks.

                  conditions

                  array (object)

                  conditions hold conditions describing ScyllaCluster state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False.

                  managerId

                  string

                  managerId contains ID under which cluster was registered in Scylla Manager.

                  members

                  integer

                  members is the number of ScyllaDB members in all racks.

                  observedGeneration

                  integer

                  observedGeneration is the most recent generation observed for this ScyllaCluster. It corresponds to the ScyllaCluster’s generation, which is updated on mutation by the API Server.

                  rackCount

                  integer

                  rackCount is the number of ScyllaDB racks in this cluster.

                  racks

                  object

                  racks reflect status of cluster racks.

                  readyMembers

                  integer

                  readyMembers is the number of ScyllaDB members in all racks that are ready.

                  repairs

                  array (object)

                  repairs reflects status of repair tasks.

                  upgrade

                  object

                  upgrade reflects state of ongoing upgrade procedure.

                  +
                  +
                  +
                  +

                  .status.backups[]

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  cron

                  string

                  cron reflects the task schedule as a cron expression.

                  dc

                  array (string)

                  dc reflects a list of datacenter glob patterns, e.g. ‘dc1,!otherdc*’ used to specify the DCs to include or exclude from backup.

                  error

                  string

                  error holds the task error, if any.

                  id

                  string

                  id reflects identification number of the repair task.

                  interval

                  string

                  interval reflects a task schedule interval.

                  keyspace

                  array (string)

                  keyspace reflects a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

                  location

                  array (string)

                  location reflects a list of backup locations in the format [<dc>:]<provider>:<name> ex. s3:my-bucket.

                  name

                  string

                  name reflects the name of a task.

                  numRetries

                  integer

                  numRetries reflects how many times a scheduled task will be retried before failing.

                  rateLimit

                  array (string)

                  rateLimit reflects a list of megabytes (MiB) per second rate limits expressed in the format [<dc>:]<limit>.

                  retention

                  integer

                  retention reflects the number of backups which are to be stored.

                  snapshotParallel

                  array (string)

                  snapshotParallel reflects a list of snapshot parallelism limits in the format [<dc>:]<limit>.

                  startDate

                  string

                  startDate reflects the task start date expressed in the RFC3339 format

                  timezone

                  string

                  timezone reflects the timezone of cron field.

                  uploadParallel

                  array (string)

                  uploadParallel reflects a list of upload parallelism limits in the format [<dc>:]<limit>.

                  +
                  +
                  +
                  +

                  .status.conditions[]

                  +
                  +

                  Description

                  +
                  +
                  Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example,

                  type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:”conditions,omitempty” patchStrategy:”merge” patchMergeKey:”type” protobuf:”bytes,1,rep,name=conditions” +// other fields }

                  +
                  +
                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  lastTransitionTime

                  string

                  lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

                  message

                  string

                  message is a human readable message indicating details about the transition. This may be an empty string.

                  observedGeneration

                  integer

                  observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

                  reason

                  string

                  reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

                  status

                  string

                  status of the condition, one of True, False, Unknown.

                  type

                  string

                  type of condition in CamelCase or in foo.example.com/CamelCase. — Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

                  +
                  +
                  +
                  +

                  .status.racks

                  +
                  +

                  Description

                  +

                  racks reflect status of cluster racks.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .status.repairs[]

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  cron

                  string

                  cron reflects the task schedule as a cron expression.

                  dc

                  array (string)

                  dc reflects a list of datacenter glob patterns, e.g. ‘dc1’, ‘!otherdc*’ used to specify the DCs to include or exclude from repair.

                  error

                  string

                  error holds the task error, if any.

                  failFast

                  boolean

                  failFast indicates if a repair should be stopped on first error.

                  host

                  string

                  host reflects a host to repair.

                  id

                  string

                  id reflects identification number of the repair task.

                  intensity

                  string

                  intensity indicates how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1.

                  interval

                  string

                  interval reflects a task schedule interval.

                  keyspace

                  array (string)

                  keyspace reflects a list of keyspace/tables glob patterns, e.g. ‘keyspace,!keyspace.table_prefix_*’ used to include or exclude keyspaces from repair.

                  name

                  string

                  name reflects the name of a task.

                  numRetries

                  integer

                  numRetries reflects how many times a scheduled task will be retried before failing.

                  parallel

                  integer

                  parallel reflects the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas).

                  smallTableThreshold

                  string

                  smallTableThreshold reflects whether small table optimization for tables, of size lower than given threshold, are enabled.

                  startDate

                  string

                  startDate reflects the task start date expressed in the RFC3339 format

                  timezone

                  string

                  timezone reflects the timezone of cron field.

                  +
                  +
                  +
                  +

                  .status.upgrade

                  +
                  +

                  Description

                  +

                  upgrade reflects state of ongoing upgrade procedure.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  currentNode

                  string

                  currentNode node under upgrade. DEPRECATED.

                  currentRack

                  string

                  currentRack rack under upgrade. DEPRECATED.

                  dataSnapshotTag

                  string

                  dataSnapshotTag is the snapshot tag of data keyspaces.

                  fromVersion

                  string

                  fromVersion reflects from which version ScyllaCluster is being upgraded.

                  state

                  string

                  state reflects current upgrade state.

                  systemSnapshotTag

                  string

                  systemSnapshotTag is the snapshot tag of system keyspaces.

                  toVersion

                  string

                  toVersion reflects to which version ScyllaCluster is being upgraded.

                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html b/v1.14/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html new file mode 100644 index 00000000000..37d8f7990c0 --- /dev/null +++ b/v1.14/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.html @@ -0,0 +1,5287 @@ + + + + + + + + + + + + + ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)

                  +
                  +
                  APIVersion: scylla.scylladb.com/v1alpha1
                  +
                  Kind: ScyllaDBMonitoring
                  +
                  PluralName: scylladbmonitorings
                  +
                  SingularName: scylladbmonitoring
                  +
                  Scope: Namespaced
                  +
                  ListKind: ScyllaDBMonitoringList
                  +
                  Served: true
                  +
                  Storage: true
                  +
                  +
                  +

                  Description

                  +

                  ScyllaDBMonitoring defines a monitoring instance for ScyllaDB clusters.

                  +
                  +
                  +

                  Specification

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  apiVersion

                  string

                  APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

                  kind

                  string

                  Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

                  metadata

                  object

                  spec

                  object

                  spec defines the desired state of this ScyllaDBMonitoring.

                  status

                  object

                  status is the current status of this ScyllaDBMonitoring.

                  +
                  +

                  .metadata

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec

                  +
                  +

                  Description

                  +

                  spec defines the desired state of this ScyllaDBMonitoring.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  components

                  object

                  components hold additional config for the monitoring components in use.

                  endpointsSelector

                  object

                  endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors.

                  type

                  string

                  type determines the platform type of the monitoring setup.

                  +
                  +
                  +
                  +

                  .spec.components

                  +
                  +

                  Description

                  +

                  components hold additional config for the monitoring components in use.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  grafana

                  object

                  grafana holds configuration for the grafana instance, if any.

                  prometheus

                  object

                  prometheus holds configuration for the prometheus instance, if any.

                  +
                  +
                  +
                  +

                  .spec.components.grafana

                  +
                  +

                  Description

                  +

                  grafana holds configuration for the grafana instance, if any.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  authentication

                  object

                  authentication hold the authentication options for accessing Grafana.

                  exposeOptions

                  object

                  exposeOptions specifies options for exposing Grafana UI.

                  placement

                  object

                  placement describes restrictions for the nodes Grafana is scheduled on.

                  resources

                  object

                  resources the Grafana container will use.

                  servingCertSecretName

                  string

                  servingCertSecretName is the name of the secret holding a serving cert-key pair. If not specified, the operator will create a self-signed CA that creates the default serving cert-key pair.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.authentication

                  +
                  +

                  Description

                  +

                  authentication hold the authentication options for accessing Grafana.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  insecureEnableAnonymousAccess

                  boolean

                  insecureEnableAnonymousAccess allows access to Grafana without authentication.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.exposeOptions

                  +
                  +

                  Description

                  +

                  exposeOptions specifies options for exposing Grafana UI.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  webInterface

                  object

                  webInterface specifies expose options for the user web interface.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.exposeOptions.webInterface

                  +
                  +

                  Description

                  +

                  webInterface specifies expose options for the user web interface.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  ingress

                  object

                  ingress is an Ingress configuration options.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.exposeOptions.webInterface.ingress

                  +
                  +

                  Description

                  +

                  ingress is an Ingress configuration options.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  annotations

                  object

                  annotations specifies custom annotations merged into every Ingress object.

                  disabled

                  boolean

                  disabled controls if Ingress object creation is disabled.

                  dnsDomains

                  array (string)

                  dnsDomains is a list of DNS domains this ingress is reachable by.

                  ingressClassName

                  string

                  ingressClassName specifies Ingress class name.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.exposeOptions.webInterface.ingress.annotations

                  +
                  +

                  Description

                  +

                  annotations specifies custom annotations merged into every Ingress object.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement

                  +
                  +

                  Description

                  +

                  placement describes restrictions for the nodes Grafana is scheduled on.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  nodeAffinity

                  object

                  nodeAffinity describes node affinity scheduling rules for the pod.

                  podAffinity

                  object

                  podAffinity describes pod affinity scheduling rules.

                  podAntiAffinity

                  object

                  podAntiAffinity describes pod anti-affinity scheduling rules.

                  tolerations

                  array (object)

                  tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.nodeAffinity

                  +
                  +

                  Description

                  +

                  nodeAffinity describes node affinity scheduling rules for the pod.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  object

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preference

                  object

                  A node selector term, associated with the corresponding weight.

                  weight

                  integer

                  Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

                  +
                  +

                  Description

                  +

                  A node selector term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  A list of node selector requirements by node’s labels.

                  matchFields

                  array (object)

                  A list of node selector requirements by node’s fields.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

                  +
                  +

                  Description

                  +

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  nodeSelectorTerms

                  array (object)

                  Required. A list of node selector terms. The terms are ORed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

                  +
                  +

                  Description

                  +

                  A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  A list of node selector requirements by node’s labels.

                  matchFields

                  array (object)

                  A list of node selector requirements by node’s fields.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity

                  +
                  +

                  Description

                  +

                  podAffinity describes pod affinity scheduling rules.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  podAffinityTerm

                  object

                  Required. A pod affinity term, associated with the corresponding weight.

                  weight

                  integer

                  weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

                  +
                  +

                  Description

                  +

                  Required. A pod affinity term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity

                  +
                  +

                  Description

                  +

                  podAntiAffinity describes pod anti-affinity scheduling rules.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  podAffinityTerm

                  object

                  Required. A pod affinity term, associated with the corresponding weight.

                  weight

                  integer

                  weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

                  +
                  +

                  Description

                  +

                  Required. A pod affinity term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.grafana.placement.tolerations[]

                  +
                  +

                  Description

                  +

                  The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  effect

                  string

                  Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

                  key

                  string

                  Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

                  operator

                  string

                  Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

                  tolerationSeconds

                  integer

                  TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

                  value

                  string

                  Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.resources

                  +
                  +

                  Description

                  +

                  resources the Grafana container will use.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  claims

                  array (object)

                  +
                  Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

                  This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

                  +
                  +
                  +

                  limits

                  object

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  requests

                  object

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +
                  +

                  .spec.components.grafana.resources.claims[]

                  +
                  +

                  Description

                  +

                  ResourceClaim references one entry in PodSpec.ResourceClaims.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

                  +
                  +
                  +
                  +

                  .spec.components.grafana.resources.limits

                  +
                  +

                  Description

                  +

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.grafana.resources.requests

                  +
                  +

                  Description

                  +

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus

                  +
                  +

                  Description

                  +

                  prometheus holds configuration for the prometheus instance, if any.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  exposeOptions

                  object

                  exposeOptions specifies options for exposing Prometheus UI.

                  placement

                  object

                  placement describes restrictions for the nodes Prometheus is scheduled on.

                  resources

                  object

                  resources the Prometheus container will use.

                  storage

                  object

                  storage describes the underlying storage that Prometheus will consume.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.exposeOptions

                  +
                  +

                  Description

                  +

                  exposeOptions specifies options for exposing Prometheus UI.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  webInterface

                  object

                  webInterface specifies expose options for the user web interface.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.exposeOptions.webInterface

                  +
                  +

                  Description

                  +

                  webInterface specifies expose options for the user web interface.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  ingress

                  object

                  ingress is an Ingress configuration options.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.exposeOptions.webInterface.ingress

                  +
                  +

                  Description

                  +

                  ingress is an Ingress configuration options.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  annotations

                  object

                  annotations specifies custom annotations merged into every Ingress object.

                  disabled

                  boolean

                  disabled controls if Ingress object creation is disabled.

                  dnsDomains

                  array (string)

                  dnsDomains is a list of DNS domains this ingress is reachable by.

                  ingressClassName

                  string

                  ingressClassName specifies Ingress class name.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.exposeOptions.webInterface.ingress.annotations

                  +
                  +

                  Description

                  +

                  annotations specifies custom annotations merged into every Ingress object.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement

                  +
                  +

                  Description

                  +

                  placement describes restrictions for the nodes Prometheus is scheduled on.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  nodeAffinity

                  object

                  nodeAffinity describes node affinity scheduling rules for the pod.

                  podAffinity

                  object

                  podAffinity describes pod affinity scheduling rules.

                  podAntiAffinity

                  object

                  podAntiAffinity describes pod anti-affinity scheduling rules.

                  tolerations

                  array (object)

                  tolerations allow the pod to tolerate any taint that matches the triple <key,value,effect> using the matching operator.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.nodeAffinity

                  +
                  +

                  Description

                  +

                  nodeAffinity describes node affinity scheduling rules for the pod.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  object

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preference

                  object

                  A node selector term, associated with the corresponding weight.

                  weight

                  integer

                  Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference

                  +
                  +

                  Description

                  +

                  A node selector term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  A list of node selector requirements by node’s labels.

                  matchFields

                  array (object)

                  A list of node selector requirements by node’s fields.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

                  +
                  +

                  Description

                  +

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  nodeSelectorTerms

                  array (object)

                  Required. A list of node selector terms. The terms are ORed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]

                  +
                  +

                  Description

                  +

                  A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  A list of node selector requirements by node’s labels.

                  matchFields

                  array (object)

                  A list of node selector requirements by node’s fields.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]

                  +
                  +

                  Description

                  +

                  A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  The label key that the selector applies to.

                  operator

                  string

                  Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

                  values

                  array (string)

                  An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity

                  +
                  +

                  Description

                  +

                  podAffinity describes pod affinity scheduling rules.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  podAffinityTerm

                  object

                  Required. A pod affinity term, associated with the corresponding weight.

                  weight

                  integer

                  weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

                  +
                  +

                  Description

                  +

                  Required. A pod affinity term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity

                  +
                  +

                  Description

                  +

                  podAntiAffinity describes pod anti-affinity scheduling rules.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  preferredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

                  requiredDuringSchedulingIgnoredDuringExecution

                  array (object)

                  If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  podAffinityTerm

                  object

                  Required. A pod affinity term, associated with the corresponding weight.

                  weight

                  integer

                  weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm

                  +
                  +

                  Description

                  +

                  Required. A pod affinity term, associated with the corresponding weight.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]

                  +
                  +

                  Description

                  +

                  Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  labelSelector

                  object

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  matchLabelKeys

                  array (string)

                  MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  mismatchLabelKeys

                  array (string)

                  MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with LabelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod’s pod (anti) affinity. Keys that don’t exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn’t set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.

                  namespaceSelector

                  object

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  namespaces

                  array (string)

                  namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means “this pod’s namespace”.

                  topologyKey

                  string

                  This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector

                  +
                  +

                  Description

                  +

                  A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector

                  +
                  +

                  Description

                  +

                  A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.placement.tolerations[]

                  +
                  +

                  Description

                  +

                  The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  effect

                  string

                  Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

                  key

                  string

                  Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

                  operator

                  string

                  Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

                  tolerationSeconds

                  integer

                  TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

                  value

                  string

                  Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.resources

                  +
                  +

                  Description

                  +

                  resources the Prometheus container will use.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  claims

                  array (object)

                  +
                  Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

                  This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. +This field is immutable. It can only be set for containers.

                  +
                  +
                  +

                  limits

                  object

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  requests

                  object

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.resources.claims[]

                  +
                  +

                  Description

                  +

                  ResourceClaim references one entry in PodSpec.ResourceClaims.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  name

                  string

                  Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.resources.limits

                  +
                  +

                  Description

                  +

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.resources.requests

                  +
                  +

                  Description

                  +

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage

                  +
                  +

                  Description

                  +

                  storage describes the underlying storage that Prometheus will consume.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  annotations

                  object

                  Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations

                  labels

                  object

                  Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels

                  volumeClaimTemplate

                  object

                  volumeClaimTemplates is a PVC template defining storage to be used by Prometheus.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.annotations

                  +
                  +

                  Description

                  +

                  Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.labels

                  +
                  +

                  Description

                  +

                  Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.volumeClaimTemplate

                  +
                  +

                  Description

                  +

                  volumeClaimTemplates is a PVC template defining storage to be used by Prometheus.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  metadata

                  object

                  May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

                  spec

                  object

                  The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.volumeClaimTemplate.metadata

                  +
                  +

                  Description

                  +

                  May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.volumeClaimTemplate.spec

                  +
                  +

                  Description

                  +

                  The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  accessModes

                  array (string)

                  accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

                  dataSource

                  object

                  dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

                  dataSourceRef

                  object

                  dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

                  resources

                  object

                  resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

                  selector

                  object

                  selector is a label query over volumes to consider for binding.

                  storageClassName

                  string

                  storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

                  volumeAttributesClassName

                  string

                  volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it’s not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.

                  volumeMode

                  string

                  volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.

                  volumeName

                  string

                  volumeName is the binding reference to the PersistentVolume backing this claim.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource

                  +
                  +

                  Description

                  +

                  dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  apiGroup

                  string

                  APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

                  kind

                  string

                  Kind is the type of resource being referenced

                  name

                  string

                  Name is the name of resource being referenced

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef

                  +
                  +

                  Description

                  +

                  dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn’t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn’t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  apiGroup

                  string

                  APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.

                  kind

                  string

                  Kind is the type of resource being referenced

                  name

                  string

                  Name is the name of resource being referenced

                  namespace

                  string

                  Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace’s owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources

                  +
                  +

                  Description

                  +

                  resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  limits

                  object

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  requests

                  object

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits

                  +
                  +

                  Description

                  +

                  Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests

                  +
                  +

                  Description

                  +

                  Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector

                  +
                  +

                  Description

                  +

                  selector is a label query over volumes to consider for binding.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec.endpointsSelector

                  +
                  +

                  Description

                  +

                  endpointsSelector select which Endpoints should be scraped. For local ScyllaDB clusters or datacenters, this is the same selector as if you were trying to select member Services. For remote ScyllaDB clusters, this can select any endpoints that are created manually or for a Service without selectors.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  matchExpressions

                  array (object)

                  matchExpressions is a list of label selector requirements. The requirements are ANDed.

                  matchLabels

                  object

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +
                  +

                  .spec.endpointsSelector.matchExpressions[]

                  +
                  +

                  Description

                  +

                  A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  key

                  string

                  key is the label key that the selector applies to.

                  operator

                  string

                  operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

                  values

                  array (string)

                  values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

                  +
                  +
                  +
                  +

                  .spec.endpointsSelector.matchLabels

                  +
                  +

                  Description

                  +

                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .status

                  +
                  +

                  Description

                  +

                  status is the current status of this ScyllaDBMonitoring.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  conditions

                  array (object)

                  conditions hold conditions describing ScyllaDBMonitoring state. To determine whether a cluster rollout is finished, look for Available=True,Progressing=False,Degraded=False.

                  observedGeneration

                  integer

                  observedGeneration is the most recent generation observed for this ScyllaDBMonitoring. It corresponds to the ScyllaDBMonitoring’s generation, which is updated on mutation by the API Server.

                  +
                  +
                  +
                  +

                  .status.conditions[]

                  +
                  +

                  Description

                  +
                  +
                  Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example,

                  type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:”conditions,omitempty” patchStrategy:”merge” patchMergeKey:”type” protobuf:”bytes,1,rep,name=conditions” +// other fields }

                  +
                  +
                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  lastTransitionTime

                  string

                  lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

                  message

                  string

                  message is a human readable message indicating details about the transition. This may be an empty string.

                  observedGeneration

                  integer

                  observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

                  reason

                  string

                  reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

                  status

                  string

                  status of the condition, one of True, False, Unknown.

                  type

                  string

                  type of condition in CamelCase or in foo.example.com/CamelCase. — Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html b/v1.14/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html new file mode 100644 index 00000000000..c2a3a47c204 --- /dev/null +++ b/v1.14/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.html @@ -0,0 +1,780 @@ + + + + + + + + + + + + + ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)

                  +
                  +
                  APIVersion: scylla.scylladb.com/v1alpha1
                  +
                  Kind: ScyllaOperatorConfig
                  +
                  PluralName: scyllaoperatorconfigs
                  +
                  SingularName: scyllaoperatorconfig
                  +
                  Scope: Cluster
                  +
                  ListKind: ScyllaOperatorConfigList
                  +
                  Served: true
                  +
                  Storage: true
                  +
                  +
                  +

                  Description

                  +

                  ScyllaOperatorConfig describes the Scylla Operator configuration.

                  +
                  +
                  +

                  Specification

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  apiVersion

                  string

                  APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

                  kind

                  string

                  Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

                  metadata

                  object

                  spec

                  object

                  spec defines the desired state of the operator.

                  status

                  object

                  status defines the observed state of the operator.

                  +
                  +

                  .metadata

                  +
                  +

                  Description

                  +
                  +
                  +

                  Type

                  +

                  object

                  +
                  +
                  +
                  +

                  .spec

                  +
                  +

                  Description

                  +

                  spec defines the desired state of the operator.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  scyllaUtilsImage

                  string

                  scyllaUtilsImage is a ScyllaDB image used for running ScyllaDB utilities.

                  unsupportedBashToolsImageOverride

                  string

                  unsupportedBashToolsImageOverride allows to adjust a generic Bash image with extra tools used by the operator for auxiliary purposes. Setting this field renders your cluster unsupported. Use at your own risk.

                  unsupportedGrafanaImageOverride

                  string

                  unsupportedGrafanaImageOverride allows to adjust Grafana image used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk.

                  unsupportedPrometheusVersionOverride

                  string

                  unsupportedPrometheusVersionOverride allows to adjust Prometheus version used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk.

                  +
                  +
                  +
                  +

                  .status

                  +
                  +

                  Description

                  +

                  status defines the observed state of the operator.

                  +
                  +
                  +

                  Type

                  +

                  object

                  + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Property

                  Type

                  Description

                  bashToolsImage

                  string

                  bashToolsImage is a generic Bash image with extra tools used by the operator for auxiliary purposes.

                  grafanaImage

                  string

                  grafanaImage is the image used by the operator to create a Grafana instance.

                  observedGeneration

                  integer

                  observedGeneration is the most recent generation observed for this ScyllaOperatorConfig. It corresponds to the ScyllaOperatorConfig’s generation, which is updated on mutation by the API Server.

                  prometheusVersion

                  string

                  prometheusVersion is the Prometheus version used by the operator to create a Prometheus instance.

                  scyllaDBUtilsImage

                  string

                  scyllaDBUtilsImage is the ScyllaDB image used for running ScyllaDB utilities.

                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/api-reference/index.html b/v1.14/api-reference/index.html new file mode 100644 index 00000000000..19eb0706d68 --- /dev/null +++ b/v1.14/api-reference/index.html @@ -0,0 +1,614 @@ + + + + + + + + + + + + + API Reference | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  API Reference

                  +

                  All APIs provided by Scylla Operator are defined using CRDs and adhere to Kubernetes API standards. You can find out how Kubernetes style REST APIs work on https://kubernetes.io/docs/reference/using-api/ and https://kubernetes.io/docs/reference/access-authn-authz/.

                  +
                  +

                  API Groups and Kinds

                  + +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/clients/alternator.html b/v1.14/clients/alternator.html new file mode 100644 index 00000000000..82ab304a6e0 --- /dev/null +++ b/v1.14/clients/alternator.html @@ -0,0 +1,693 @@ + + + + + + + + + + + + + Using Alternator (DynamoDB) | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Using Alternator (DynamoDB)

                  +

                  Alternator is a DynamoDB compatible API provided by ScyllaDB. +You can enable it on your ScyllaClusters by adding this section:

                  +
                  spec:
                  +  alternator: {}
                  +
                  +
                  +

                  While this is enough to turn it on, there are more options available. +Please refer to our API documentation for details.

                  +
                  +

                  Note

                  +

                  Contrary to CQL clients, Alternator clients don’t need to connect to every ScyllaDB node directly, nor discover the ScyllaDB node IP addresses. +Alternator protocol is based on HTTP and you can also expose the service “manually” with other networking concepts like Ingresses.

                  +
                  +
                  +

                  Credentials

                  +

                  Scylla Operator enables Alternator authorization by default. +Here is a quick example of how to get the token for accessing Alternator API. +To find out more, please refer to ScyllaDB Alternator documentation.

                  +
                  +

                  Caution

                  +

                  The salted_hash is only present if password authentication for CQL is set up.

                  +

                  Always make sure your clusters are configured to use Authentication and Authorization.

                  +
                  +
                  +

                  Tip

                  +

                  You can find a quick example that enables Authentication and Authorization here.

                  +
                  +
                  kubectl exec -it service/<sc-name>-client -c scylla -- cqlsh --user <cql_user> \
                  +-e "SELECT salted_hash FROM system_auth.roles WHERE role = '<cql_user>'"
                  +
                  +
                  +
                  +
                  +

                  AWS CLI

                  +

                  This paragraph shows how to use aws dynamodb cli to remotely connect to ScyllaDB Alternator API.

                  +
                  +

                  Note

                  +

                  This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured networking options differently, +or are using additional networking concepts like Ingresses, this address will need to be adjusted.

                  +
                  +
                  +

                  Caution

                  +

                  At the time of writing this document kubectl exec -i echoes passwords into the terminal. +It can be avoided by manually running kubectl exec -it and copying the output into a file / variable. +Because using kubectl exec with -t option merges standard and error outputs, we can’t use it in the scripts bellow.

                  +

                  See https://github.com/kubernetes/kubernetes/issues/123913 for more details.

                  +
                  +
                  SCYLLACLUSTER_NAME=scylladb
                  +CQL_USER=cassandra
                  +
                  +
                  +
                  SCYLLADB_EP="$( kubectl get "service/${SCYLLACLUSTER_NAME}-client" -o='jsonpath={.spec.clusterIP}' )"
                  +AWS_ENDPOINT_URL_DYNAMODB="https://${SCYLLADB_EP}:8043"
                  +export AWS_ENDPOINT_URL_DYNAMODB
                  +
                  +AWS_ACCESS_KEY_ID="${CQL_USER}"
                  +export AWS_ACCESS_KEY_ID
                  +AWS_SECRET_ACCESS_KEY="$( kubectl exec -i "service/${SCYLLACLUSTER_NAME}-client" -c scylla -- cqlsh --user ${CQL_USER} --no-color \
                  +-e "SELECT salted_hash from system_auth.roles WHERE role = '${AWS_ACCESS_KEY_ID}';" \
                  +| sed -e 's/\r//g' | sed -e '4q;d' | sed -E -e 's/^\s+//' )"
                  +export AWS_SECRET_ACCESS_KEY
                  +
                  +AWS_CA_BUNDLE="$( mktemp )"
                  +export AWS_CA_BUNDLE
                  +kubectl get "configmap/${SCYLLACLUSTER_NAME}-alternator-local-serving-ca" --template='{{ index .data "ca-bundle.crt" }}' > "${AWS_CA_BUNDLE}"
                  +
                  +
                  +

                  Now we can use aws dynamodb cli without modifications.

                  +
                  aws dynamodb create-table --table-name MusicCollection --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
                  +
                  +
                  +
                  TABLEDESCRIPTION        2024-03-01T16:35:41+01:00       5c8aae70-d7e1-11ee-a99e-6f31aaf1d6d3    MusicCollection ACTIVE
                  +ATTRIBUTEDEFINITIONS    Artist  S
                  +ATTRIBUTEDEFINITIONS    SongTitle       S
                  +KEYSCHEMA       Artist  HASH
                  +KEYSCHEMA       SongTitle       RANGE
                  +PROVISIONEDTHROUGHPUT   5       5
                  +
                  +
                  +
                  aws dynamodb list-tables
                  +
                  +
                  +
                  TABLENAMES      MusicCollection
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/clients/cql.html b/v1.14/clients/cql.html new file mode 100644 index 00000000000..fc64a9b768c --- /dev/null +++ b/v1.14/clients/cql.html @@ -0,0 +1,739 @@ + + + + + + + + + + + + + Using CQL | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + + + +
                  +

                  Using CQL

                  +

                  cqlsh is the CQL shell for ScyllaDB. You can learn more about it in ScyllaDB documentation.

                  +
                  +

                  Authentication and Authorization

                  +

                  For security reasons, you should always enable Authentication and Authorization. +At this point, this needs to be done manually in ScyllaDB Config. +You can find an example configuration bellow:

                  +
                  apiVersion: v1
                  +kind: ConfigMap
                  +metadata:
                  +  name: scylla-config
                  +data:
                  +  scylla.yaml: |
                  +    authenticator: PasswordAuthenticator
                  +    authorizer: CassandraAuthorizer
                  +
                  +
                  +
                  +
                  +

                  Embedded cqlsh (aka localhost)

                  +

                  Every ScyllaDB node has an integrated cqlsh available. Here is an example of how it can be used:

                  +
                  + +
                  +
                  kubectl exec -it service/<sc-name>-client -c scylla -- cqlsh -u <user>
                  +
                  +
                  +
                  + +
                  +
                  kubectl exec -it pod/<sc-name>-<datacenter>-<node-index> -c scylla -- cqlsh -u <user>
                  +
                  +
                  +
                  +
                  +
                  Password: 
                  +Connected to scylla at 127.0.0.1:9042
                  +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4]
                  +Use HELP for help.
                  +<user>@cqlsh>
                  +
                  +
                  +
                  +
                  +

                  Remote cqlsh

                  +

                  This paragraph shows how to use cqlsh to remotely connect to a ScyllaDB node. +It is strongly recommended to access CQL over TLS connections on port 9142 instead of unencrypted 9042. +Note that Scylla Operator sets up TLS certificates by default and makes them accessible in the Kubernetes API, +so the encrypted port 9142 works by default.

                  +
                  +

                  Caution

                  +

                  In future releases the unencrypted port 9042 will be disabled by default, unless explicitly opted-in.

                  +
                  +
                  +

                  Caution

                  +

                  To avoid unnecessary complexity, the following example simplifies how the credentials file is created. +Please create the credentials file with your text editor and avoid your password leaking into your bash history or environment variables. +To store the configuration permanently, please adjust SCYLLADB_CONFIG variable to an empty folder of your choice.

                  +
                  +
                  +

                  Note

                  +

                  This example uses Service ClusterIP to connect to the ScyllaDB cluster. If you have configured the networking options differently, +you may need to adjust this endpoint. Please refer to discovery documentation page.

                  +
                  +
                  SCYLLADB_CONFIG="$( mktemp -d )" 
                  +
                  +cat <<EOF > "${SCYLLADB_CONFIG}/credentials"
                  +[PlainTextAuthProvider]
                  +username = <your_username>
                  +password = <your_password>
                  +EOF
                  +chmod 600 "${SCYLLADB_CONFIG}/credentials"
                  +
                  +SCYLLADB_DISCOVERY_EP="$( kubectl get service/<sc-name>-client -o='jsonpath={.spec.clusterIP}' )"
                  +kubectl get configmap/<sc-name>-local-serving-ca -o='jsonpath={.data.ca-bundle\.crt}' > "${SCYLLADB_CONFIG}/serving-ca-bundle.crt"
                  +kubectl get secret/<sc-name>-local-user-admin -o='jsonpath={.data.tls\.crt}' | base64 -d > "${SCYLLADB_CONFIG}/admin.crt"
                  +kubectl get secret/<sc-name>-local-user-admin -o='jsonpath={.data.tls\.key}' | base64 -d > "${SCYLLADB_CONFIG}/admin.key"
                  +
                  +cat <<EOF > "${SCYLLADB_CONFIG}/cqlshrc"
                  +[authentication]
                  +credentials = ${SCYLLADB_CONFIG}/credentials
                  +[connection]
                  +hostname = ${SCYLLADB_DISCOVERY_EP}
                  +port = 9142
                  +ssl=true
                  +factory = cqlshlib.ssl.ssl_transport_factory
                  +[ssl]
                  +validate=true
                  +certfile=${SCYLLADB_CONFIG}/serving-ca-bundle.crt
                  +usercert=${SCYLLADB_CONFIG}/admin.crt
                  +userkey=${SCYLLADB_CONFIG}/admin.key
                  +EOF
                  +
                  +
                  +
                  + +
                  +
                  cqlsh --cqlshrc="${SCYLLADB_CONFIG}/cqlshrc"
                  +
                  +
                  +
                  + +
                  +
                  podman run -it --rm --entrypoint=cqlsh \
                  +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro,Z" \
                  +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro,Z" \
                  +docker.io/scylladb/scylla:5.4.3
                  +
                  +
                  +
                  + +
                  +
                  docker run -it --rm --entrypoint=cqlsh \
                  +-v="${SCYLLADB_CONFIG}:${SCYLLADB_CONFIG}:ro" \
                  +-v="${SCYLLADB_CONFIG}/cqlshrc:/root/.cassandra/cqlshrc:ro" \
                  +docker.io/scylladb/scylla:5.4.3
                  +
                  +
                  +
                  +
                  +
                  Connected to scylla at <CLUSTER_IP>:9142
                  +[cqlsh 6.2.0 | Scylla 5.4.0-0.20231205.58a89e7a4231 | CQL spec 3.3.1 | Native protocol v4]
                  +Use HELP for help.
                  +<your_username>@cqlsh> 
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/clients/discovery.html b/v1.14/clients/discovery.html new file mode 100644 index 00000000000..7fcaab9c6a1 --- /dev/null +++ b/v1.14/clients/discovery.html @@ -0,0 +1,678 @@ + + + + + + + + + + + + + Discovering ScyllaDB Nodes | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Discovering ScyllaDB Nodes

                  +
                  +

                  Preface

                  +

                  Outside the Kubernetes ecosystem, ScyllaDB nodes are usually set up on static IP addresses +and a fixed subset of them is configured as the initial contact points for ScyllaDB clients. +This has several disadvantages because this particular subset of nodes can be down at the time the client is (re)started, +or the nodes can be replaced and change their IP addresses. +The latter can be mitigated by using DNS and updating the records.

                  +

                  Scylla Operator allows setting up ScyllaDB in several network configurations, some of which are based on ephemeral IPs. +This makes solving the above-mentioned issues more pressing.

                  +
                  +
                  +

                  ScyllaDB Discovery Endpoint

                  +

                  For every ScyllaCluster, the operator will set up a Kubernetes Service (an internal load balancer) selecting all ScyllaDB nodes +and the internal Kubernetes controllers make sure to continuously update its endpoints with a subset of ScyllaDB nodes that are ready. +Because of that, you can always talk to ScyllaDB through this endpoint, as long as there are nodes to back it. +In case you are in the same Kubernetes cluster you can also use internal DNS for this service.

                  +

                  Clients can use this endpoint for the initial connection to reach one of the ScyllaDB nodes that are ready +and from there the drivers will automatically discover the per-node IP address for every ScyllaDB node that’s part of this cluster.

                  +

                  This service is called <sc-name>-client and in its default configuration it uses ClusterIP which is virtual and local to the Kubernetes cluster. +It can be configured to be backed by an external load balancer, be exposed through an Ingress, an additional hop or in other ways. +Depending on how you have configured the networking, use the appropriate IP address or DNS name for your client.

                  +

                  Here is an example of how the unmodified service looks like:

                  +
                  kubectl get scyllacluster/scylla service/scylla-client
                  +
                  +
                  +
                  NAME                                       READY   MEMBERS   RACKS   AVAILABLE   PROGRESSING   DEGRADED   AGE
                  +scyllacluster.scylla.scylladb.com/scylla   1       1         1       True        True          True       10d
                  +
                  +NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                                                                                   AGE
                  +service/scylla-client   ClusterIP   10.102.44.43   <none>        7000/TCP,7001/TCP,9042/TCP,9142/TCP,19042/TCP,19142/TCP,7199/TCP,10001/TCP,9180/TCP,5090/TCP,9100/TCP,9160/TCP,8043/TCP   10d
                  +
                  +
                  +

                  You can get only the ClusterIP using

                  +
                  kubectl get service/scylla-client -o='jsonpath={.spec.clusterIP}'
                  +
                  +
                  +

                  or use its DNS name (scylla-client.<sc-namespace>.svc).

                  +
                  +

                  Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary

                  +

                  In case you are connecting from outside the Kubernetes cluster and using Pod IPs as your exposure type, you can expose just the <sc-name>-client service using an internal load balancer. +Having a stable contact point is especially important when using ephemeral Pod IPs. +Services configure internal load balancer using provider-specific annotations, so this may differ with your provider.

                  +
                  +

                  Tip

                  +

                  To learn more about exposing ScyllaClusters, visit our dedicated documentation page.

                  +
                  +
                  + +
                  +
                  kubectl patch service/<sc-name>-client -p '{"metadata": {"annotations": {"networking.gke.io/load-balancer-type": "Internal"}}, "spec": {"type": "LoadBalancer"}}'
                  +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/<sc-name>-client
                  +kubectl get service/<sc-name>-client -o='jsonpath={.status.loadBalancer.ingress[0].ip}'
                  +
                  +
                  +
                  + +
                  +
                  kubectl patch service/<sc-name>-client -p '{"metadata": {"annotations": {"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal", "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "tcp"}}, "spec": {"type": "LoadBalancer"}}'
                  +kubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/<sc-name>-client
                  +kubectl get service/<sc-name>-client -o='jsonpath={.status.loadBalancer.ingress[0].hostname}'
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/clients/index.html b/v1.14/clients/index.html new file mode 100644 index 00000000000..ee9830a9bba --- /dev/null +++ b/v1.14/clients/index.html @@ -0,0 +1,595 @@ + + + + + + + + + + + + + Using ScyllaDB APIs | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Using ScyllaDB APIs

                  + +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/contributing.html b/v1.14/contributing.html new file mode 100644 index 00000000000..f7a498747b3 --- /dev/null +++ b/v1.14/contributing.html @@ -0,0 +1,755 @@ + + + + + + + + + + + + + Contributing to Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Contributing to Scylla Operator

                  +
                  +

                  Prerequisites

                  +

                  To develop on scylla-operator, your environment must have the following:

                  +
                    +
                  1. Go 1.13

                    +
                      +
                    • Make sure GOPATH is set to GOPATH=$HOME/go.

                    • +
                    +
                  2. +
                  3. Kustomize v3.1.0

                  4. +
                  5. kubebuilder v2.3.1

                  6. +
                  7. Docker

                  8. +
                  9. Git client installed

                  10. +
                  11. Github account

                  12. +
                  +

                  To install all dependencies (Go, kustomize, kubebuilder, dep), simply run:

                  +
                  ./install-dependencies.sh
                  +
                  +
                  +
                  +
                  +

                  Initial Setup

                  +
                  +

                  Create a Fork

                  +

                  From your browser navigate to http://github.com/scylladb/scylla-operator and click the “Fork” button.

                  +
                  +
                  +

                  Clone Your Fork

                  +

                  Open a console window and do the following:

                  +
                  # Create the scylla operator repo path
                  +mkdir -p $GOPATH/src/github.com/scylladb
                  +
                  +# Navigate to the local repo path and clone your fork
                  +cd $GOPATH/src/github.com/scylladb
                  +
                  +# Clone your fork, where <user> is your GitHub account name
                  +git clone https://github.com/<user>/scylla-operator.git
                  +
                  +
                  +
                  +
                  +

                  Add Upstream Remote

                  +

                  First you will need to add the upstream remote to your local git:

                  +
                  # Add 'upstream' to the list of remotes
                  +git remote add upstream https://github.com/scylladb/scylla-operator.git
                  +
                  +# Verify the remote was added
                  +git remote -v
                  +
                  +
                  +

                  Now you should have at least origin and upstream remotes. You can also add other remotes to collaborate with other contributors.

                  +
                  +
                  +
                  +

                  Development

                  +

                  To add a feature or to make a bug fix, you will need to create a branch in your fork and then submit a pull request (PR) from the branch.

                  +
                  +

                  Building the project

                  +

                  You can build the project using the Makefile commands:

                  +
                    +
                  • Open the Makefile and change the IMG environment variable to a repository you have access to.

                  • +
                  • Run make docker-push and wait for the image to be built and uploaded in your repo.

                  • +
                  +
                  +
                  +

                  Create a Branch

                  +

                  From a console, create a new branch based on your fork and start working on it:

                  +
                  # Ensure all your remotes are up to date with the latest
                  +git fetch --all
                  +
                  +# Create a new branch that is based off upstream master.  Give it a simple, but descriptive name.
                  +# Generally it will be two to three words separated by dashes and without numbers.
                  +git checkout -b feature-name upstream/master
                  +
                  +
                  +

                  Now you are ready to make the changes and commit to your branch.

                  +
                  +
                  +

                  Updating Your Fork

                  +

                  During the development lifecycle, you will need to keep up-to-date with the latest upstream master. As others on the team push changes, you will need to rebase your commits on top of the latest. This avoids unnecessary merge commits and keeps the commit history clean.

                  +

                  Whenever you need to update your local repository, you never want to merge. You always will rebase. Otherwise you will end up with merge commits in the git history. If you have any modified files, you will first have to stash them (git stash save -u "<some description>").

                  +
                  git fetch --all
                  +git rebase upstream/master
                  +
                  +
                  +

                  Rebasing is a very powerful feature of Git. You need to understand how it works or else you will risk losing your work. Read about it in the Git documentation, it will be well worth it. In a nutshell, rebasing does the following:

                  +
                    +
                  • “Unwinds” your local commits. Your local commits are removed temporarily from the history.

                  • +
                  • The latest changes from upstream are added to the history

                  • +
                  • Your local commits are re-applied one by one

                  • +
                  • If there are merge conflicts, you will be prompted to fix them before continuing. Read the output closely. It will tell you how to complete the rebase.

                  • +
                  • When done rebasing, you will see all of your commits in the history.

                  • +
                  +
                  +
                  +
                  +

                  Submitting a Pull Request

                  +

                  Once you have implemented the feature or bug fix in your branch, you will open a PR to the upstream repo. Before opening the PR ensure you have added unit tests, are passing the integration tests, cleaned your commit history, and have rebased on the latest upstream.

                  +

                  In order to open a pull request (PR) it is required to be up to date with the latest changes upstream. If other commits are pushed upstream before your PR is merged, you will also need to rebase again before it will be merged.

                  +
                  +

                  Commit History

                  +

                  To prepare your branch to open a PR, you will need to have the minimal number of logical commits so we can maintain +a clean commit history. Most commonly a PR will include a single commit where all changes are squashed, although +sometimes there will be multiple logical commits.

                  +
                  # Inspect your commit history to determine if you need to squash commits
                  +git log
                  +
                  +# Rebase the commits and edit, squash, or even reorder them as you determine will keep the history clean.
                  +# In this example, the last 5 commits will be opened in the git rebase tool.
                  +git rebase -i HEAD~5
                  +
                  +
                  +

                  Once your commit history is clean, ensure you have based on the latest upstream before you open the PR.

                  +
                  +
                  +

                  Commit messages

                  +

                  Please make the first line of your commit message a summary of the change that a user (not a developer) of Operator would like to read, +and prefix it with the most relevant directory of the change followed by a colon. +The changelog gets made by looking at just these first lines so make it good!

                  +

                  If you have more to say about the commit, then enter a blank line and carry on the description. +Remember to say why the change was needed - the commit itself shows what was changed.

                  +

                  Writing more is better than less. Comparing the behaviour before the change to that after the change is very useful. +Imagine you are writing to yourself in 12 months time when you’ve forgotten everything about what you just did, and you need to get up to speed quickly.

                  +

                  If the change fixes an issue then write Fixes #1234 in the commit message. +This can be on the subject line if it will fit. If you don’t want to close the associated issue just put #1234 and the change will get linked into the issue.

                  +

                  Here is an example of a short commit message:

                  +
                  sidecar: log on reconcile loop - fixes #1234
                  +
                  +
                  +

                  And here is an example of a longer one:

                  +
                  
                  +api: now supports host networking (#1234)
                  +
                  +The operator CRD now has a "network" property that can be used to
                  +select host networking as well as setting the apropriate DNS policy.
                  +
                  +Fixes #1234
                  +
                  +
                  +
                  +
                  +

                  Submitting

                  +

                  Go to the Scylla Operator github to open the PR. If you have pushed recently, you should see an obvious link to open the PR. If you have not pushed recently, go to the Pull Request tab and select your fork and branch for the PR.

                  +

                  After the PR is open, you can make changes simply by pushing new commits. Your PR will track the changes in your fork and update automatically.

                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/eks.html b/v1.14/eks.html new file mode 100644 index 00000000000..0c82fccd8d8 --- /dev/null +++ b/v1.14/eks.html @@ -0,0 +1,749 @@ + + + + + + + + + + + + + Deploying Scylla on EKS | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Deploying Scylla on EKS

                  +

                  This guide is focused on deploying Scylla on EKS with improved performance. +Performance tricks used by the script won’t work with different machine tiers. +It sets up the kubelets on EKS nodes to run with static cpu policy and uses local sdd disks in RAID0 for maximum performance.

                  +

                  Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the general guide.

                  +
                  +

                  TL;DR;

                  +

                  If you don’t want to run the commands step-by-step, you can just run a script that will set everything up for you:

                  +
                  # Edit according to your preference
                  +EKS_REGION=us-east-1
                  +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c
                  +
                  +# From inside the examples/eks folder
                  +cd examples/eks
                  +./eks.sh -z "$EKS_ZONES" -r "$EKS_REGION"
                  +
                  +
                  +

                  After you deploy, see how you can benchmark your cluster with cassandra-stress.

                  +
                  +
                  +

                  Walkthrough

                  +
                  +

                  EKS Setup

                  +
                  +

                  Configure environment variables

                  +

                  First of all, we export all the configuration options as environment variables. +Edit according to your own environment.

                  +
                  EKS_REGION=us-east-1
                  +EKS_ZONES=us-east-1a,us-east-1b,us-east-1c
                  +CLUSTER_NAME=scylla-demo
                  +
                  +
                  +
                  +
                  +

                  Creating an EKS cluster

                  +

                  For this guide, we’ll create an EKS cluster with the following:

                  +
                    +
                  • A NodeGroup of 3 i3-2xlarge Nodes, where the Scylla Pods will be deployed. These nodes will only accept pods having scylla-clusters toleration.

                  • +
                  +
                    - name: scylla-pool
                  +    instanceType: i3.2xlarge
                  +    desiredCapacity: 3
                  +    labels:
                  +      scylla.scylladb.com/node-type: scylla
                  +    taints:
                  +      role: "scylla-clusters:NoSchedule"
                  +    ssh:
                  +      allow: true
                  +    kubeletExtraConfig:
                  +      cpuManagerPolicy: static
                  +
                  +
                  +
                    +
                  • A NodeGroup of 4 c4.2xlarge Nodes to deploy cassandra-stress later on. These nodes will only accept pods having cassandra-stress toleration.

                  • +
                  +
                    - name: cassandra-stress-pool
                  +    instanceType: c4.2xlarge
                  +    desiredCapacity: 4
                  +    labels:
                  +      pool: "cassandra-stress-pool"
                  +    taints:
                  +      role: "cassandra-stress:NoSchedule"
                  +    ssh:
                  +      allow: true
                  +
                  +
                  +
                    +
                  • A NodeGroup of 1 i3.large Node, where the monitoring stack and operator will be deployed.

                  • +
                  +
                    - name: monitoring-pool
                  +    instanceType: i3.large
                  +    desiredCapacity: 1
                  +    labels:
                  +      pool: "monitoring-pool"
                  +    ssh:
                  +      allow: true
                  +
                  +
                  +
                  +
                  +
                  +

                  Prerequisites

                  +
                  +

                  Installing script third party dependencies

                  +

                  Script requires several dependencies:

                  +
                    +
                  • eksctl - See: https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html

                  • +
                  • kubectl - See: https://kubernetes.io/docs/tasks/tools/install-kubectl/

                  • +
                  +
                  +
                  +
                  +

                  Deploying ScyllaDB Operator

                  +

                  Refer to Deploying Scylla on a Kubernetes Cluster in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites.

                  +
                  +

                  Setting up nodes for ScyllaDB

                  +

                  ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you’ll first need to form a RAID array from those disks. +NodeConfig performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in Performance tuning section of ScyllaDB Operator’s documentation.

                  +

                  Deploy NodeConfig to let it take care of the above operations:

                  +
                  kubectl apply --server-side -f examples/eks/nodeconfig-alpha.yaml
                  +
                  +
                  +
                  +
                  +

                  Deploying Local Volume Provisioner

                  +

                  Afterwards, deploy ScyllaDB’s Local Volume Provisioner, capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays.

                  +
                  kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/
                  +
                  +
                  +
                  +
                  +
                  +

                  Deploying ScyllaDB

                  +

                  Now you can follow the steps described in Deploying Scylla on a Kubernetes Cluster to launch your ScyllaDB cluster in a highly performant environment.

                  +
                  +

                  Accessing the database

                  +

                  Instructions on how to access the database can also be found in the generic guide.

                  +
                  +
                  +
                  +

                  Deleting an EKS cluster

                  +

                  Once you are done with your experiments delete your cluster using the following command:

                  +
                  eksctl delete cluster "${CLUSTER_NAME}"
                  +
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/exposing.html b/v1.14/exposing.html new file mode 100644 index 00000000000..c2a2220e798 --- /dev/null +++ b/v1.14/exposing.html @@ -0,0 +1,900 @@ + + + + + + + + + + + + + Exposing ScyllaCluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Exposing ScyllaCluster

                  +

                  This document explains how ScyllaDB Operator exposes ScyllaClusters in different network setups. +A ScyllaCluster can be exposed in various network configurations, independently to clients and nodes.

                  +
                  +

                  Note

                  +

                  ScyllaClusters can be only exposed when the ScyllaDB version used version is >=2023.1 ScyllaDB Enterprise or >=5.2 ScyllaDB Open Source.

                  +
                  +
                  +

                  Expose Options

                  +
                  +

                  Note

                  +

                  exposeOptions are immutable, they cannot be changed after ScyllaCluster is created.

                  +
                  +

                  exposeOptions specifies configuration options for exposing ScyllaCluster’s. +A ScyllaCluster created without any exposeOptions is equivalent to the following:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    nodeService:
                  +     type: ClusterIP
                  +    broadcastOptions:
                  +      clients:
                  +        type: ServiceClusterIP
                  +      nodes:
                  +        type: ServiceClusterIP
                  +
                  +
                  +

                  The following sections cover what every field controls and what the configuration options are.

                  +
                  +

                  Node Service Template

                  +

                  nodeService serves as a template for a node-dedicated Service managed by the Scylla Operator for each node within a ScyllaCluster. +The properties of the Services depend on the selected type. +Additionally, there’s an option to define custom annotations, incorporated into each node’s Service, +which might be useful for further tweaking the Service properties or related objects.

                  +
                  +

                  Headless Type

                  +

                  For Headless type, Scylla Operator creates a Headless Service with a selector pointing to the particular node in the ScyllaCluster. +Such Service doesn’t provide any additional IP addresses, and the internal DNS record resolves to the PodIP of a node.

                  +

                  This type of Service is useful when ScyllaCluster nodes broadcast PodIPs to clients and other nodes.

                  +

                  Example:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    nodeService:
                  +     type: Headless
                  +
                  +
                  +
                  +
                  +

                  ClusterIP Type

                  +

                  For ClusterIP type, Scylla Operator creates a ClusterIP Service backed by a specific node in the ScyllaCluster.

                  +

                  These IP addresses are only routable within the same Kubernetes cluster, so it’s a good fit, if you don’t want to expose them to other networks.

                  +

                  Example:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    nodeService:
                  +     type: ClusterIP
                  +
                  +
                  +
                  +
                  +

                  LoadBalancer Type

                  +

                  For the LoadBalancer type, Scylla Operator generates a LoadBalancer Service that directs traffic to a specific node within the ScyllaCluster. +On platforms with support for external load balancers, this Service provisions one. +The accessibility of this load balancer’s address depends on the platform and any customizations made; in some cases it may be reachable from the internal network or public Internet.

                  +

                  Customizations are usually managed via Service annotations, key-value pairs provided in annotations field are merged into each Service object. +LoadBalancer Services should be configured to pass through entire traffic.
                  +For example, to expose LoadBalancer only to internal network use the following annotations:

                  +
                  + +
                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    nodeService:
                  +     type: LoadBalancer
                  +     annotations:
                  +       service.beta.kubernetes.io/aws-load-balancer-scheme: internal
                  +       service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
                  +
                  +
                  +
                  + +
                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    nodeService:
                  +     type: LoadBalancer
                  +     annotations:
                  +       networking.gke.io/load-balancer-type: Internal
                  +
                  +
                  +
                  +
                  +

                  Check platform-specific documentation regarding LoadBalancer configuration to learn more about available options.

                  +

                  LoadBalancer Service is a superset of ClusterIP Service, implying that each LoadBalancer Service also contains an allocated ClusterIP. +They can be configured using the following fields, which propagate to every node Service:

                  +
                    +
                  • externalTrafficPolicy

                  • +
                  • internalTrafficPolicy

                  • +
                  • loadBalancerClass

                  • +
                  • allocateLoadBalancerNodePorts

                  • +
                  +

                  Check Kubernetes Service documentation to learn more about these options.

                  +

                  Example:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    nodeService:
                  +     type: LoadBalancer
                  +     loadBalancerClass: my-custom-load-balancer-class
                  +
                  +
                  +
                  +
                  +
                  +
                  +

                  Broadcast Options

                  +

                  Broadcast options control what is the source of the address being broadcasted to clients and nodes. +It’s configured independently for clients and nodes because you may want to expose these two types of traffic on different networks. +Using different networks can help manage costs, reliability, latency, security policies or other metrics you care about.

                  +
                  +

                  PodIP Type

                  +

                  Address broadcasted to clients/nodes is taken from Pod. +By default, the address is taken from Pod’s status.PodIP field. +Because a Pod can use multiple address, you may want to provide source options by specifying podIP.source.

                  +

                  Example:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    broadcastOptions:
                  +       clients:
                  +         type: PodIP
                  +         podIP:
                  +           source: Status
                  +
                  +
                  +
                  +
                  +

                  ServiceClusterIP Type

                  +

                  Address broadcasted to clients or nodes is taken from spec.ClusterIP field of a node’s dedicated Service.

                  +

                  In order to configure it, the nodeService template must specify a Service having a ClusterIP assigned.

                  +

                  Example:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    broadcastOptions:
                  +       clients:
                  +         type: ServiceClusterIP
                  +
                  +
                  +
                  +
                  +

                  ServiceLoadBalancerIngress Type

                  +

                  Address broadcasted to clients/nodes is taken from the node dedicated Service, from status.ingress[0].ipAddress or status.ingress[0].hostname field.

                  +

                  In order to configure it, the nodeService template must specify the LoadBalancer Service.

                  +

                  Example:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    broadcastOptions:
                  +       clients:
                  +         type: ServiceLoadBalancerIngress
                  +         podIP:
                  +           source: Status
                  +
                  +
                  +
                  +
                  +
                  +
                  +

                  Deployment Examples

                  +

                  The following section contains several specific examples of various network scenarios and explains how nodes and clients communicate with one another.

                  +
                  +

                  In-cluster only

                  +

                  ScyllaCluster definition:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    nodeService:
                  +      type: ClusterIP
                  +    broadcastOptions:
                  +      clients:
                  +        type: ServiceClusterIP
                  +      nodes:
                  +        type: ServiceClusterIP
                  +
                  +
                  +

                  Both client and nodes are deployed within the same Kubernetes cluster. +They talk through ClusterIP addresses taken from the Service. +Because ClusterIP Services are only routable within the same Kubernetes cluster, this cluster won’t be reachable from outside.

                  +

                  ClusterIPs

                  +
                  +
                  +

                  In-cluster node-to-node, VPC clients-to-nodes

                  +

                  ScyllaCluster definition:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    nodeService:
                  +      type: ClusterIP
                  +    broadcastOptions:
                  +      clients:
                  +        type: PodIP
                  +      nodes:
                  +        type: ServiceClusterIP
                  +
                  +
                  +

                  In this scenario, we assume that the Pod IP subnet is routable within a VPC. +Clients within the VPC network can communicate directly with ScyllaCluster nodes using PodIPs. +Nodes communicate with each other exclusively within the same Kubernetes cluster.

                  +

                  PodIPs

                  +
                  +
                  +

                  Multi VPC

                  +

                  ScyllaCluster definition:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    nodeService:
                  +      type: Headless
                  +    broadcastOptions:
                  +      clients:
                  +        type: PodIP
                  +      nodes:
                  +        type: PodIP
                  +
                  +
                  +

                  In this scenario, we set up two separate Kubernetes clusters in distinct VPCs. +These VPCs are interconnected to facilitate inter-VPC connectivity. +We operate on the assumption that the Pod IP subnet is routable within each VPC.

                  +

                  Both ScyllaClusters use the same exposeOptions, nodes broadcast their Pod IP addresses, enabling them to establish connections with one another. +****Check other documentation pages to know how to connect two ScyllaClusters into one logical cluster.

                  +

                  Clients, whether deployed within the same Kubernetes cluster or within a VPC, have the capability to reach nodes using their Pod IPs. +Since there is no requirement for any address other than the Pod IP, the Headless service type is sufficient.

                  +

                  MultiVPC

                  +
                  +
                  +

                  Internet

                  +

                  ScyllaCluster definition:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    nodeService:
                  +      type: LoadBalancer
                  +    broadcastOptions:
                  +      clients:
                  +        type: ServiceLoadBalancerIngress
                  +      nodes:
                  +        type: ClusterIP 
                  +
                  +
                  +

                  We assume that a Kubernetes cluster has been deployed in a cloud provider environment that supports external load balancers. +By specifying the LoadBalancer type in the nodeService template, the Scylla Operator generates a dedicated LB Service for each node. +The cloud provider then establishes an external load balancer with an internet-accessible address. +ScyllaDB nodes broadcast this external address to clients, enabling drivers to connect and discover other nodes. +Since all ScyllaDB nodes reside within the same Kubernetes cluster, there is no need to route traffic through the internet. +Consequently, the nodes are configured to communicate via ClusterIP, which is also accessible within LoadBalancer Services.

                  +

                  Internet

                  +
                  +

                  Other more complex scenarios can be built upon these simple ones.

                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/generic.html b/v1.14/generic.html new file mode 100644 index 00000000000..8352690e416 --- /dev/null +++ b/v1.14/generic.html @@ -0,0 +1,953 @@ + + + + + + + + + + + + + Deploying Scylla on a Kubernetes Cluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Deploying Scylla on a Kubernetes Cluster

                  +

                  This is a guide to deploy a Scylla Cluster in a generic Kubernetes environment, meaning that Scylla will not be deployed with the ideal performance. +Scylla performs the best when it has fast disks and direct access to the cpu. +This requires some extra setup, which is platform-specific. +For specific configuration and setup, check for details about your particular environment:

                  + +
                  +

                  Prerequisites

                  + +
                  +
                  +

                  Running locally

                  +

                  Running kubernetes locally is a daunting and error prone task. +Fortunately there are ways to make life easier and Minikube makes it a breeze.

                  +

                  We need to give minikube a little bit more resources than default so start minikube like this:

                  +
                  minikube start --cpus=6
                  +
                  +
                  +

                  Then make kubectl aware of this local installation like this:

                  +
                  eval $(minikube docker-env)
                  +
                  +
                  +
                  +
                  +

                  Download Scylla Operator

                  +

                  In this guide you will be using the examples and manifests from Scylla Operator repository, so start off by cloning it to your local machine.

                  +
                  git clone git@github.com:scylladb/scylla-operator.git
                  +cd scylla-operator
                  +
                  +
                  +
                  +
                  +

                  Deploy Cert Manager

                  +

                  First deploy Cert Manager, you can either follow upsteam instructions or use following command:

                  +
                  kubectl apply -f examples/common/cert-manager.yaml
                  +
                  +
                  +

                  This will install Cert Manager to provision a self-signed certificate.

                  +

                  Once it’s deployed, wait until Cert Manager is ready:

                  +
                  kubectl wait --for condition=established crd/certificates.cert-manager.io crd/issuers.cert-manager.io
                  +kubectl -n cert-manager rollout status deployment.apps/cert-manager-webhook
                  +
                  +
                  +
                  +
                  +

                  Deploy Scylla Operator

                  +

                  Deploy the Scylla Operator using the following commands:

                  +
                  kubectl apply -f deploy/operator.yaml
                  +
                  +
                  +

                  This will install the operator in namespace scylla-operator. +Wait until it’s ready:

                  +
                  kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
                  +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
                  +
                  +
                  +

                  If you want to check the logs of the operator you can do so with:

                  +
                  kubectl -n scylla-operator logs deployment.apps/scylla-operator
                  +
                  +
                  +
                  +
                  +

                  Create and Initialize a Scylla Cluster

                  +

                  Now that the operator is running, we can create an instance of a Scylla cluster by creating an instance of the clusters.scylla.scylladb.com resource. +Some of that resource’s values are configurable, so feel free to browse cluster.yaml and tweak the settings to your liking. +Full details for all the configuration options can be found in the Scylla Cluster CRD documentation.

                  +

                  When you are ready to create a Scylla cluster, simply run:

                  +
                  kubectl create -f examples/generic/cluster.yaml
                  +
                  +
                  +

                  We can verify that a Kubernetes object has been created that represents our new Scylla cluster with the command below. +This is important because it shows that has successfully extended Kubernetes to make Scylla clusters a first class citizen in the Kubernetes cloud-native environment.

                  +
                  kubectl -n scylla get ScyllaCluster
                  +
                  +
                  +

                  Checking the pods that are created is as easy as:

                  +
                  kubectl -n scylla get pods
                  +
                  +
                  +

                  The output should be something like:

                  +
                  NAME                                    READY   STATUS    RESTARTS   AGE
                  +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          9m49s
                  +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          7m43s
                  +simple-cluster-us-east-1-us-east-1a-2   2/2     Running   0          6m46s
                  +
                  +
                  +

                  It is important to note that the operator creates these instances according to a pattern. +This pattern is as follows: CLUSTER_NAME-DATACENTER_NAME-RACK_NAME-INSTANCE_NUMBER as specified in cluster.yaml.

                  +

                  In the above example we have the following properties:

                  +
                    +
                  • CLUSTER_NAME: simple-cluster

                  • +
                  • DATACENTER_NAME: us-east-1

                  • +
                  • RACK_NAME: us-east-1a

                  • +
                  • INSTANCE_NUMBER: An automatically generated number attached to the pod name.

                  • +
                  +

                  We picked the names to resemble something you can find in a cloud service but this is inconsequential, they can be set to anything you want.

                  +

                  To check if all the desired members are running, you should see the same number of entries from the following command as the number of members that was specified in cluster.yaml:

                  +
                  kubectl -n scylla get pod -l app=scylla
                  +
                  +
                  +

                  You can also track the state of a Scylla cluster from its status. To check the current status of a Cluster, run:

                  +
                  kubectl -n scylla describe ScyllaCluster simple-cluster
                  +
                  +
                  +

                  Checking the logs of the running scylla instances can be done like this:

                  +
                  kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0 scylla
                  +
                  +
                  +
                  +

                  Configure container kernel parameters

                  +

                  Sometimes it is necessary to run the container with different kernel parameters. +In order to support this, the Scylla Operator defines a cluster property sysctls that is a list of the desired key-value pairs to set.

                  +

                  For example: To increase the number events available for asynchronous IO processing in the Linux kernel to N set sysctls tofs.aio-max-nr=N.

                  +
                  spec:
                  +  sysctls:
                  +  - "fs.aio-max-nr=2097152"
                  +
                  +
                  +
                  +
                  +

                  Deploying Alternator

                  +

                  The operator is also capable of deploying Alternator instead of the regular Scylla. +This requires a small change in the cluster definition. +Change the cluster.yaml file from this:

                  +
                  spec:
                  +  agentVersion: 3.3.0
                  +  version: 6.1.1
                  +  developerMode: true
                  +  datacenter:
                  +    name: us-east-1
                  +
                  +
                  +

                  to this:

                  +
                  spec:
                  +  version: 6.1.1
                  +  alternator:
                  +    port: 8000
                  +    writeIsolation: only_rmw_uses_lwt
                  +  agentVersion: 3.3.0
                  +  developerMode: true
                  +  datacenter:
                  +    name: us-east-1
                  +
                  +
                  +

                  You can specify whichever port you want.

                  +

                  You must provide desired write isolation, supported values are: “always”, “forbid_rmw”, “only_rmw_uses_lwt”. +Difference between those isolation levels can be found in Scylla Alternator documentation.

                  +

                  Once this is done the regular CQL ports will no longer be available, the cluster is a pure Alternator cluster.

                  +
                  +
                  +
                  +

                  Accessing the Database

                  +
                    +
                  • From kubectl:

                  • +
                  +

                  To get a cqlsh shell in your new Cluster:

                  +
                  kubectl exec -n scylla -it simple-cluster-us-east-1-us-east-1a-0 -- cqlsh
                  +> DESCRIBE KEYSPACES;
                  +
                  +
                  +
                    +
                  • From inside a Pod:

                  • +
                  +

                  When you create a new Cluster, automatically creates a Service for the clients to use in order to access the Cluster. +The service’s name follows the convention <cluster-name>-client. +You can see this Service in your cluster by running:

                  +
                  kubectl -n scylla describe service simple-cluster-client
                  +
                  +
                  +

                  Pods running inside the Kubernetes cluster can use this Service to connect to Scylla. +Here’s an example using the Python Driver:

                  +
                  from cassandra.cluster import Cluster
                  +
                  +cluster = Cluster(['simple-cluster-client.scylla.svc'])
                  +session = cluster.connect()
                  +
                  +
                  +

                  If you are running the Alternator you can access the API on the port you specified using plain http.

                  +
                  +
                  +

                  Configure Scylla

                  +

                  The operator can take a ConfigMap and apply it to the scylla.yaml configuration file. +This is done by adding a ConfigMap to Kubernetes and refering to this in the Rack specification. +The ConfigMap is just a file called scylla.yaml that has the properties you want to change in it. +The operator will take the default properties for the rest of the configuration.

                  +
                    +
                  • Create a ConfigMap the default name that the operator uses is scylla-config:

                  • +
                  +
                  kubectl create configmap scylla-config -n scylla --from-file=/path/to/scylla.yaml
                  +
                  +
                  +
                    +
                  • Wait for the mount to propagate and then restart the cluster:

                  • +
                  +
                  kubectl rollout restart -n scylla statefulset/simple-cluster-us-east-1-us-east-1a
                  +
                  +
                  +
                    +
                  • The new config should be applied automatically by the operator, check the logs to be sure.

                  • +
                  +

                  Configuring cassandra-rackdc.properties is done by adding the file to the same mount as scylla.yaml.

                  +
                  kubectl create configmap scylla-config -n scylla --from-file=/tmp/scylla.yaml --from-file=/tmp/cassandra-rackdc.properties -o yaml --dry-run | kubectl replace -f -
                  +
                  +
                  +

                  The operator will then apply the overridable properties prefer_local and dc_suffix if they are available in the provided mounted file.

                  +
                  +

                  Note

                  +

                  If you want to enable authentication, you first need to adjust system_auth keyspace replication factor to the number of nodes in the datacenter via cqlsh. It allows you to ensure that the user’s information is kept highly available for the cluster. If system_auth is not equal to the number of nodes and a node fails, the user whose information is on that node will be denied access. +For production environments only use NetworkTopologyStrategy.

                  +
                  kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : <replication_factor>};"
                  +
                  +
                  +

                  You can read more about enabling authentication in the Enable authentication section of ScyllaDB’s documentation.

                  +
                  +
                  +
                  +

                  Configure Scylla Manager Agent

                  +

                  The operator creates a second container for each scylla instance that runs Scylla Manager Agent. +This container serves as a sidecar and it’s the main endpoint for interacting with Scylla API. +The Scylla Manager Agent can be configured with various things such as the security token used to allow access to Scylla API and storage providers for backups.

                  +

                  To configure the agent you just create a new secret called scylla-agent-config-secret and populate it with the contents in the scylla-manager-agent.yaml file like this:

                  +
                  kubectl create secret -n scylla generic scylla-agent-config-secret --from-file scylla-manager-agent.yaml
                  +
                  +
                  +

                  See Scylla Manager Agent configuration for a complete reference of the Scylla Manager agent config file.

                  +
                  +

                  Scylla Manager Agent auth token

                  +

                  Operator provisions Agent auth token by copying value from user provided config secret or auto generates it if it’s empty. +To check which value is being used, decode content of <cluster-name>-auth-token secret. +To change it simply remove the secret. Operator will create a new one. To pick up the change in the cluster, initiate a rolling restart.

                  +
                  +
                  +
                  +

                  Set up monitoring

                  +

                  To set up monitoring using Prometheus and Grafana follow this guide.

                  +
                  +
                  +

                  Scale a ScyllaCluster

                  +

                  The operator supports adding new nodes to existing racks, adding new racks to the cluster, as well as removing both single nodes and entire racks. To introduce the changes, edit the cluster with:

                  +
                  kubectl -n scylla edit scyllaclusters.scylla.scylladb.com/simple-cluster
                  +
                  +
                  +
                    +
                  • To modify the number of nodes in a rack, update the members field of the selected rack to a desired value.

                  • +
                  • To add a new rack, append it to the .spec.datacenter.racks list. Remember to choose a unique rack name for the new rack.

                  • +
                  • To remove a rack, first scale it down to zero nodes, and then remove it from .spec.datacenter.racks list.

                  • +
                  +

                  Having edited and saved the yaml, you can check your cluster’s Status and Events to retrieve information about what’s happening:

                  +
                  kubectl -n scylla describe scyllaclusters.scylla.scylladb.com/simple-cluster
                  +
                  +
                  +
                  +

                  Note

                  +

                  If you have configured ScyllaDB with authenticator set to PasswordAuthenticator, you need to manually configure the replication factor of the system_auth keyspace with every scaling operation.

                  +
                  kubectl -n scylla exec -it pods/simple-cluster-us-east-1-us-east-1a-0 -c scylla -- cqlsh -u <username> -p <password> -e "ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'us-east-1' : <new_replication_factor>};"
                  +
                  +
                  +

                  It is recommended to set system_auth replication factor to the number of nodes in each datacenter.

                  +
                  +
                  +
                  +

                  Benchmark with cassandra-stress

                  +

                  After deploying our cluster along with the monitoring, we can benchmark it using cassandra-stress and see its performance in Grafana. We have a mini cli that generates Kubernetes Jobs that run cassandra-stress against a cluster.

                  +
                  +

                  Because cassandra-stress doesn’t scale well to multiple cores, we use multiple jobs with a small core count for each

                  +
                  +
                  # Run a benchmark with 10 jobs, with 6 cpus and 50.000.000 operations each.
                  +# Each Job will throttle throughput to 30.000 ops/sec for a total of 300.000 ops/sec.
                  +hack/cass-stress-gen.py --num-jobs=10 --cpu=6 --memory=20G --ops=50000000 --limit=30000
                  +kubectl apply -f scripts/cassandra-stress.yaml
                  +
                  +
                  +

                  Make sure you set the proper arguments in case you have altered things such as name or namespace.

                  +
                  ./hack/cass-stress-gen.py -h
                  +usage: cass-stress-gen.py [-h] [--num-jobs NUM_JOBS] [--name NAME] [--namespace NAMESPACE] [--scylla-version SCYLLA_VERSION] [--host HOST] [--cpu CPU] [--memory MEMORY] [--ops OPS] [--threads THREADS] [--limit LIMIT]
                  +                          [--connections-per-host CONNECTIONS_PER_HOST] [--print-to-stdout] [--nodeselector NODESELECTOR]
                  +
                  +Generate cassandra-stress job templates for Kubernetes.
                  +
                  +optional arguments:
                  +  -h, --help            show this help message and exit
                  +  --num-jobs NUM_JOBS   number of Kubernetes jobs to generate - defaults to 1
                  +  --name NAME           name of the generated yaml file - defaults to cassandra-stress
                  +  --namespace NAMESPACE
                  +                        namespace of the cassandra-stress jobs - defaults to "default"
                  +  --scylla-version SCYLLA_VERSION
                  +                        version of scylla server to use for cassandra-stress - defaults to 4.0.0
                  +  --host HOST           ip or dns name of host to connect to - defaults to scylla-cluster-client.scylla.svc
                  +  --cpu CPU             number of cpus that will be used for each job - defaults to 1
                  +  --memory MEMORY       memory that will be used for each job in GB, ie 2G - defaults to 2G * cpu
                  +  --ops OPS             number of operations for each job - defaults to 10000000
                  +  --threads THREADS     number of threads used for each job - defaults to 50 * cpu
                  +  --limit LIMIT         rate limit for each job - defaults to no rate-limiting
                  +  --connections-per-host CONNECTIONS_PER_HOST
                  +                        number of connections per host - defaults to number of cpus
                  +  --print-to-stdout     print to stdout instead of writing to a file
                  +  --nodeselector NODESELECTOR
                  +                        nodeselector limits cassandra-stress pods to certain nodes. Use as a label selector, eg. --nodeselector role=scylla
                  +
                  +
                  +

                  While the benchmark is running, open up Grafana and take a look at the monitoring metrics.

                  +

                  After the Jobs finish, clean them up with:

                  +
                  kubectl delete -f scripts/cassandra-stress.yaml
                  +
                  +
                  +
                  +
                  +

                  Clean Up

                  +

                  To clean up all resources associated with this walk-through, you can run the commands below.

                  +

                  NOTE: this will destroy your database and delete all of its associated data.

                  +
                  kubectl delete -f examples/generic/cluster.yaml
                  +kubectl delete -f deploy/operator.yaml
                  +kubectl delete -f examples/common/cert-manager.yaml
                  +
                  +
                  +
                  +
                  +

                  Troubleshooting

                  +

                  If the cluster does not come up, the first step would be to examine the operator’s logs:

                  +
                  kubectl -n scylla-operator logs deployment.apps/scylla-operator
                  +
                  +
                  +

                  If everything looks OK in the operator logs, you can also look in the logs for one of the Scylla instances:

                  +
                  kubectl -n scylla logs simple-cluster-us-east-1-us-east-1a-0
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/genindex.html b/v1.14/genindex.html new file mode 100644 index 00000000000..3c34fbca00b --- /dev/null +++ b/v1.14/genindex.html @@ -0,0 +1,572 @@ + + + + + + + + + + + + + Index | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + + + +
                  + + + + + +
                  + + +
                  + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/gke.html b/v1.14/gke.html new file mode 100644 index 00000000000..29c34ec8a3f --- /dev/null +++ b/v1.14/gke.html @@ -0,0 +1,789 @@ + + + + + + + + + + + + + Deploying Scylla on GKE | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Deploying Scylla on GKE

                  +

                  This guide is focused on deploying Scylla on GKE with maximum performance (without any persistence guarantees). +It sets up the kubelets on GKE nodes to run with static cpu policy and uses local sdd disks in RAID0 for maximum performance.

                  +

                  Most of the commands used to setup the Scylla cluster are the same for all environments +As such we have tried to keep them separate in the general guide.

                  +
                  +

                  TL;DR;

                  +

                  If you don’t want to run the commands step-by-step, you can just run a script that will set everything up for you:

                  +
                  # Edit according to your preference
                  +GCP_USER=$(gcloud config list account --format "value(core.account)")
                  +GCP_PROJECT=$(gcloud config list project --format "value(core.project)")
                  +GCP_ZONE=us-west1-b
                  +
                  +# From inside the examples/gke folder
                  +cd examples/gke
                  +./gke.sh -u "$GCP_USER" -p "$GCP_PROJECT" -z "$GCP_ZONE"
                  +
                  +# Example:
                  +# ./gke.sh -u yanniszark@arrikto.com -p gke-demo-226716 -z us-west1-b
                  +
                  +
                  +
                  +

                  Warning

                  +

                  Make sure to pass a ZONE (ex.: us-west1-b) and not a REGION (ex.: us-west1) or it will deploy nodes in each ZONE available in the region.

                  +
                  +

                  After you deploy, see how you can benchmark your cluster with cassandra-stress.

                  +
                  +
                  +

                  Walkthrough

                  +
                  +

                  Google Kubernetes Engine Setup

                  +
                  +

                  Configure environment variables

                  +

                  First of all, we export all the configuration options as environment variables. +Edit according to your own environment.

                  +
                  GCP_USER=$( gcloud config list account --format "value(core.account)" )
                  +GCP_PROJECT=$( gcloud config list project --format "value(core.project)" )
                  +GCP_REGION=us-west1
                  +GCP_ZONE=us-west1-b
                  +CLUSTER_NAME=scylla-demo
                  +CLUSTER_VERSION=$( gcloud container get-server-config --zone ${GCP_ZONE} --format "value(validMasterVersions[0])" )
                  +
                  +
                  +
                  +
                  +

                  Creating a GKE cluster

                  +

                  First we need to change kubelet CPU Manager policy to static by providing a config file. Create file called systemconfig.yaml with the following content:

                  +
                  kubeletConfig:
                  +  cpuManagerPolicy: static
                  +
                  +
                  +

                  Then we’ll create a GKE cluster with the following:

                  +
                    +
                  1. A NodePool of 2 n1-standard-8 Nodes, where the operator and the monitoring stack will be deployed. These are generic Nodes and their free capacity can be used for other purposes.

                    +
                    gcloud container \
                    +clusters create "${CLUSTER_NAME}" \
                    +--cluster-version "${CLUSTER_VERSION}" \
                    +--node-version "${CLUSTER_VERSION}" \
                    +--machine-type "n1-standard-8" \
                    +--num-nodes "2" \
                    +--disk-type "pd-ssd" --disk-size "20" \
                    +--image-type "UBUNTU_CONTAINERD" \
                    +--enable-stackdriver-kubernetes \
                    +--no-enable-autoupgrade \
                    +--no-enable-autorepair
                    +
                    +
                    +
                  2. +
                  3. A NodePool of 2 n1-standard-32 Nodes to deploy cassandra-stress later on.

                    +
                    gcloud container --project "${GCP_PROJECT}" \
                    +node-pools create "cassandra-stress-pool" \
                    +--cluster "${CLUSTER_NAME}" \
                    +--zone "${GCP_ZONE}" \
                    +--node-version "${CLUSTER_VERSION}" \
                    +--machine-type "n1-standard-32" \
                    +--num-nodes "2" \
                    +--disk-type "pd-ssd" --disk-size "20" \
                    +--node-taints role=cassandra-stress:NoSchedule \
                    +--image-type "UBUNTU_CONTAINERD" \
                    +--no-enable-autoupgrade \
                    +--no-enable-autorepair
                    +
                    +
                    +
                  4. +
                  5. A NodePool of 4 n1-standard-32 Nodes, where the Scylla Pods will be deployed. Each of these Nodes has 8 local NVMe SSDs attached, which are provided as raw block devices. It is important to disable autoupgrade and autorepair. Automatic cluster upgrade or node repair has a hard timeout after which it no longer respect PDBs and force deletes the Compute Engine instances, which also deletes all data on the local SSDs. At this point, it’s better to handle upgrades manually, with more control over the process and error handling.

                    +
                    gcloud container \
                    +node-pools create "scylla-pool" \
                    +--cluster "${CLUSTER_NAME}" \
                    +--node-version "${CLUSTER_VERSION}" \
                    +--machine-type "n1-standard-32" \
                    +--num-nodes "4" \
                    +--disk-type "pd-ssd" --disk-size "20" \
                    +--local-nvme-ssd-block count="8" \
                    +--node-taints role=scylla-clusters:NoSchedule \
                    +--node-labels scylla.scylladb.com/node-type=scylla \
                    +--image-type "UBUNTU_CONTAINERD" \
                    +--system-config-from-file=systemconfig.yaml \
                    +--no-enable-autoupgrade \
                    +--no-enable-autorepair
                    +
                    +
                    +
                  6. +
                  +
                  +
                  +

                  Setting Yourself as cluster-admin

                  +
                  +

                  (By default GKE doesn’t give you the necessary RBAC permissions)

                  +
                  +

                  Get the credentials for your new cluster

                  +
                  gcloud container clusters get-credentials "${CLUSTER_NAME}" --zone="${GCP_ZONE}"
                  +
                  +
                  +

                  Create a ClusterRoleBinding for your user. +In order for this to work you need to have at least permission container.clusterRoleBindings.create. +The easiest way to obtain this permission is to enable the Kubernetes Engine Admin role for your user in the GCP IAM web interface.

                  +
                  kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user "${GCP_USER}"
                  +
                  +
                  +
                  +
                  +
                  +

                  Prerequisites

                  +
                  +
                  +

                  Deploying ScyllaDB Operator

                  +

                  Refer to Deploying Scylla on a Kubernetes Cluster in the ScyllaDB Operator documentation to deploy the ScyllaDB Operator and its prerequisites.

                  +
                  +

                  Setting up nodes for ScyllaDB

                  +

                  ScyllaDB, except when in developer mode, requires storage with XFS filesystem. The local NVMes from the cloud provider usually come as individual devices. To use their full capacity together, you’ll first need to form a RAID array from those disks. +NodeConfig performs the necessary RAID configuration and XFS filesystem creation, as well as it optimizes the nodes. You can read more about it in Performance tuning section of ScyllaDB Operator’s documentation.

                  +

                  Deploy NodeConfig to let it take care of the above operations:

                  +
                  kubectl apply --server-side -f examples/gke/nodeconfig-alpha.yaml
                  +
                  +
                  +
                  +
                  +

                  Deploying Local Volume Provisioner

                  +

                  Afterwards, deploy ScyllaDB’s Local Volume Provisioner, capable of dynamically provisioning PersistentVolumes for your ScyllaDB clusters on mounted XFS filesystems, earlier created over the configured RAID0 arrays.

                  +
                  kubectl -n local-csi-driver apply --server-side -f examples/common/local-volume-provisioner/local-csi-driver/
                  +kubectl apply --server-side -f examples/common/local-volume-provisioner/storageclass_xfs.yaml
                  +
                  +
                  +
                  +
                  +
                  +

                  Deploy Scylla cluster

                  +

                  In order for the example to work you need to modify the cluster definition in the following way:

                  +
                  sed -i "s/<gcp_region>/${GCP_REGION}/g;s/<gcp_zone>/${GCP_ZONE}/g" examples/gke/cluster.yaml
                  +
                  +
                  +

                  This will inject your region and zone into the cluster definition so that it matches the kubernetes cluster you just created.

                  +
                  +
                  +

                  Deploying ScyllaDB

                  +

                  Now you can follow the steps described in Deploying Scylla on a Kubernetes Cluster to launch your ScyllaDB cluster in a highly performant environment.

                  +
                  +

                  Accessing the database

                  +

                  Instructions on how to access the database can also be found in the generic guide.

                  +
                  +
                  +
                  +

                  Deleting a GKE cluster

                  +

                  Once you are done with your experiments delete your cluster using the following command:

                  +
                  gcloud container --project "${GCP_PROJECT}" clusters delete --zone "${GCP_ZONE}" "${CLUSTER_NAME}"
                  +
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/helm.html b/v1.14/helm.html new file mode 100644 index 00000000000..92068ae34d9 --- /dev/null +++ b/v1.14/helm.html @@ -0,0 +1,937 @@ + + + + + + + + + + + + + Deploying Scylla stack using Helm Charts | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Deploying Scylla stack using Helm Charts

                  +

                  In this example we will install Scylla stack on Kubernetes. This includes the following components:

                  +
                    +
                  • Scylla Operator

                  • +
                  • Scylla Manager

                  • +
                  • Scylla

                  • +
                  +

                  We will use Minikube K8s cluster, but this could be any K8s cluster supported by the Scylla Operator.

                  +
                  +

                  Prerequisites

                  +
                    +
                  • Kubernetes 1.16+

                  • +
                  • Helm 3+

                  • +
                  +
                  +
                  +

                  TL;DR

                  +
                  helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable
                  +helm repo update
                  +kubectl apply -f examples/common/cert-manager.yaml 
                  +helm install scylla-operator scylla/scylla-operator --create-namespace --namespace scylla-operator
                  +helm install scylla-manager scylla/scylla-manager --create-namespace --namespace scylla-manager
                  +helm install scylla scylla/scylla --create-namespace --namespace scylla
                  +
                  +
                  +
                  +
                  +

                  Deploy Cert Manager

                  +

                  This step is optional if you want to use your own certificate. +If you don’t have one, make sure to not disable autogeneration using Scylla Operator Helm Chart.

                  +

                  First deploy Cert Manager, you can either follow upsteam instructions or use following command:

                  +
                  kubectl apply -f examples/common/cert-manager.yaml
                  +
                  +
                  +

                  Once it’s deployed, wait until all Cert Manager pods will enter into Running state:

                  +
                  kubectl wait -n cert-manager --for=condition=ready pod -l app=cert-manager --timeout=60s
                  +
                  +
                  +
                  +
                  +

                  Helm Chart repository

                  +

                  To install Scylla Helm Chart repository execute the following commands:

                  +
                  helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable
                  +helm repo update
                  +
                  +
                  +

                  Then you can search through repository, it should contain at least three Helm charts:

                  +
                  helm search repo scylla
                  +NAME                   CHART VERSION   APP VERSION     DESCRIPTION                                       
                  +scylla/scylla          1.0.1           v1.0.1          Scylla is a close-to-the-hardware rewrite of Ca...
                  +scylla/scylla-manager  1.0.1           v1.0.1          Scylla Manager automates database operations.     
                  +scylla/scylla-operator 1.0.1           v1.0.1          Scylla Operator is a Kubernetes Operator for ma...
                  +
                  +
                  +

                  All these charts should be installable without any need of customizing (defaults are provided). +Although Helm is used for this particular reason, so lets customize them a bit.

                  +
                  +
                  +

                  Scylla Operator Chart

                  +

                  This chart is very simple, most interesting customizable fields are image, resources and webhook. +All others can be looked up in Chart source in Scylla Operator repository.

                  +
                  +

                  image

                  +

                  Image allows to define which Scylla Operator image will be used. By default it downloads the image from main +Docker Hub repository, using version defined in Helm Chart. +You can also change pullPolicy if default one does not +fullfill your needs. In Kubernetes documentation you +can read more about different pull policies.

                  +

                  Image URL will be composed based on these fields in follwing pattern: +repository/scylla-operator:tag

                  +
                  image:
                  +  repository: scylladb
                  +  pullPolicy: IfNotPresent
                  +  tag: ""
                  +
                  +
                  +
                  +
                  +

                  resources

                  +

                  You can customize how much resources will be allocated for Operator pods via resource field:

                  +
                  resources:
                  +  limits:
                  +    cpu: 100m
                  +    memory: 128Mi
                  +  requests:
                  +    cpu: 100m
                  +    memory: 32Mi
                  +
                  +
                  +

                  To read more about resource specification, follow Kubernetes documentation.

                  +
                  +
                  +

                  webhook

                  +

                  Webhook field allows to decide whether you want to use autogenerated self-signed certificate using Cert Manager or +whether you want to provide your own certificate.

                  +

                  createSelfSignedCertificate specifies whether a self-signed certificate should be created using Cert Manager +certificateSecretName: name of a secret containing custom certificate.

                  +
                  webhook:
                  +  createSelfSignedCertificate: true
                  +  certificateSecretName: ""
                  +
                  +
                  +
                  +
                  +

                  Customization

                  +

                  You can customize all these fields and others by providing file containing desired values. +Content of this file will overwrite default values.

                  +

                  You can find an example in Scylla Operator repository under examples/helm/values.operator.yaml

                  +
                  +
                  +

                  Installation

                  +

                  To deploy Scylla Operator using customized values file execute the following:

                  +
                  helm install scylla-operator scylla/scylla-operator --values examples/helm/values.operator.yaml --create-namespace --namespace scylla-operator
                  +
                  +
                  +
                  +
                  +
                  +

                  Scylla Helm Chart

                  +

                  Scylla Chart allows to customize and deploy Scylla cluster. +By default Scylla Helm charts deploys working Scylla cluster, but of course we can customize it.

                  +
                  +

                  Customization

                  +

                  Versions of images used in the cluster can be set via scyllaImage and agentImage

                  +
                  scyllaImage:
                  +  repository: scylladb/scylla
                  +  tag: 4.3.0
                  +
                  +agentImage:
                  +  repository: scylladb/scylla-manager-agent
                  +  tag: 2.2.1
                  +
                  +
                  +

                  A minimal Scylla cluster can be expressed as:

                  +
                  datacenter: us-east-1
                  +racks:
                  +- name: us-east-1b
                  +  members: 2
                  +  storage:
                  +    capacity: 5G
                  +  resources:
                  +    limits:
                  +      cpu: 1
                  +      memory: 1Gi
                  +    requests:
                  +      cpu: 1
                  +      memory: 1Gi
                  +
                  +
                  +

                  Above cluster will use 4.3.0 Scylla, 2.2.1 Scylla Manager Agent sidecar and will have a single rack having 2 nodes. +Each node will have a single CPU and 1 GiB of memory.

                  +

                  For other customizable fields, please refer to ScyllaCluster CRD. +CRD Rack Spec and Helm Chart Rack should have the same fields.

                  +
                  +
                  +

                  Installation

                  +

                  To deploy Scylla cluster using customzied values file execute the following command:

                  +
                  helm install scylla scylla/scylla --values examples/helm/values.cluster.yaml --create-namespace --namespace scylla
                  +
                  +
                  +

                  Scylla Operator will provision this cluster on your K8s environment.

                  +
                  +
                  +
                  +

                  Scylla Manager Helm Chart

                  +

                  Scylla Manager Chart allows to customize and deploy Scylla Manager in K8s environment. +Scylla Manager consist of two applications (Scylla Manager itself and Scylla Manager Controller) and additional Scylla cluster.

                  +

                  To read more about Scylla Manager see Manager guide.

                  +
                  +

                  Scylla Manager

                  +

                  To set version of used Scylla Manager you can use image field:

                  +
                  image:
                  +  repository: scylladb
                  +  pullPolicy: IfNotPresent
                  +  tag: 2.2.1
                  +
                  +
                  +

                  To control how many resources are allocated for Scylla Manager use resource field:

                  +
                  resources:
                  +  limits:
                  +    cpu: 500m
                  +    memory: 500Mi
                  +  requests:
                  +    cpu: 500m
                  +    memory: 500Mi
                  +
                  +
                  +
                  +
                  +

                  Scylla Manager Controller

                  +

                  Similarly Scylla Manager Controller image can be customized:

                  +
                  controllerImage:
                  +  repository: scylladb
                  +  pullPolicy: IfNotPresent
                  +  tag: ""
                  +
                  +
                  +

                  And allocated resources:

                  +
                  controllerResources:
                  +  limits:
                  +    cpu: 100m
                  +    memory: 30Mi
                  +  requests:
                  +    cpu: 100m
                  +    memory: 20Mi
                  +
                  +
                  +
                  +
                  +

                  Scylla

                  +

                  To customize internal Scylla instance dedicated to Scylla Manager, see guide above customizing Scylla Helm Chart. +It’s definition should land as a scylla field.

                  +
                  +
                  +

                  Customization

                  +

                  All others customizable fields can be looked up in Chart source in Scylla Operator repository.

                  +
                  +
                  +

                  Installation

                  +

                  To deploy Scylla Manager using customized values file execute the following command:

                  +
                  helm install scylla-manager scylla/scylla-manager --values examples/helm/values.manager.yaml --create-namespace --namespace scylla-manager
                  +
                  +
                  +
                  +
                  +
                  +

                  Results

                  +

                  Scylla need some time to bootstrap all nodes, but after some time you should be ready to roll. It was simple isn’t it? +You can validate if everything was set up correctly by looking at the all resources created in used namespaces.

                  +

                  Scylla Operator:

                  +
                  $ kubectl -n scylla-operator get all
                  +
                  +NAME                                   READY   STATUS    RESTARTS   AGE
                  +pod/scylla-operator-5dbcb54f5c-vjm4m   1/1     Running   0          51s
                  +pod/scylla-operator-5dbcb54f5c-wfjbw   1/1     Running   0          51s
                  +
                  +NAME                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
                  +service/scylla-operator-webhook   ClusterIP   10.105.207.130   <none>        443/TCP   51s
                  +
                  +NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
                  +deployment.apps/scylla-operator   2/2     2            2           51s
                  +
                  +NAME                                         DESIRED   CURRENT   READY   AGE
                  +replicaset.apps/scylla-operator-5dbcb54f5c   2         2         2       51s
                  +
                  +
                  +

                  Operator is running!

                  +

                  Scylla Manager:

                  +
                  $ kubectl -n scylla-manager get all 
                  +
                  +NAME                                             READY   STATUS    RESTARTS   AGE
                  +pod/scylla-manager-669db64dd-bcm4v               1/1     Running   0          89s
                  +pod/scylla-manager-controller-844ccc56c4-drbth   1/1     Running   0          89s
                  +pod/scylla-manager-controller-844ccc56c4-rhwqx   1/1     Running   0          89s
                  +
                  +NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
                  +service/scylla-manager          ClusterIP   10.105.231.53   <none>        80/TCP,5090/TCP     89s
                  +service/scylla-manager-client   ClusterIP   None            <none>        9180/TCP,5090/TCP   89s
                  +
                  +NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
                  +deployment.apps/scylla-manager              1/1     1            1           89s
                  +deployment.apps/scylla-manager-controller   2/2     2            2           89s
                  +
                  +NAME                                                   DESIRED   CURRENT   READY   AGE
                  +replicaset.apps/scylla-manager-669db64dd               1         1         1       89s
                  +replicaset.apps/scylla-manager-controller-844ccc56c4   2         2         2       89s
                  +
                  +
                  +

                  Good to go, ready to serve!

                  +

                  Scylla itself:

                  +
                  $ kubectl -n scylla get all        
                  +
                  +NAME                                READY   STATUS    RESTARTS   AGE
                  +pod/scylla-us-east-1-us-east-1b-0   2/2     Running   0          5m58s
                  +pod/scylla-us-east-1-us-east-1b-1   2/2     Running   0          4m29s
                  +
                  +NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
                  +service/scylla-client                   ClusterIP   None           <none>        9180/TCP,5090/TCP                                                 5m59s
                  +service/scylla-us-east-1-us-east-1b-0   ClusterIP   10.43.149.92   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   5m58s
                  +service/scylla-us-east-1-us-east-1b-1   ClusterIP   10.43.49.0     <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   4m29s
                  +
                  +NAME                                           READY   AGE
                  +statefulset.apps/scylla-us-east-1-us-east-1b   2/2     5m59s
                  +
                  +
                  +

                  Two running nodes, exactly what we were asking for.

                  +
                  +
                  +

                  Monitoring

                  +

                  To spin up a Prometheus monitoring refer to monitoring guide.

                  +

                  Helm charts can create ServiceMonitors needed to observe Scylla Manager and Scylla. +Both of these Helm Charts allows to specify whether you want to create a ServiceMonitor:

                  +
                  serviceMonitor:
                  +  create: false
                  +
                  +
                  +

                  Change create to true and update your current deployment using:

                  +
                  helm upgrade --install scylla --namespace scylla scylla/scylla -f examples/helm/values.cluster.yaml
                  +
                  +
                  +

                  Helm should notice the difference, install the ServiceMonitor, and then Prometheous will be able to scrape metrics.

                  +
                  +
                  +

                  Cleanup

                  +

                  To remove these applications you can simply uninstall them using Helm CLI:

                  +
                  helm uninstall scylla -n scylla
                  +helm uninstall scylla-manager -n scylla-manager
                  +helm uninstall scylla-operator -n scylla-operator
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/index.html b/v1.14/index.html new file mode 100644 index 00000000000..9f53ba27912 --- /dev/null +++ b/v1.14/index.html @@ -0,0 +1,618 @@ + + + + + + + + + + + + + Scylla Operator Documentation | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Scylla Operator Documentation

                  +
                  +
                  +

                  Scylla Operator is an open source project which helps users of Scylla Open Source and Scylla Enterprise run Scylla on Kubernetes (K8s) +The Scylla operator manages Scylla clusters deployed to Kubernetes and automates tasks related to operating a Scylla cluster, like installation, out and downscale, rolling upgrades.

                  +_images/logo.png +

                  For the latest status of the project, and reports issue, see the Github Project. Also check out the K8s Operator lesson on Scylla University.

                  +

                  scylla-operator is a Kubernetes Operator for managing Scylla clusters.

                  +

                  Currently it supports:

                  +
                    +
                  • Deploying multi-zone clusters

                  • +
                  • Scaling up or adding new racks

                  • +
                  • Scaling down

                  • +
                  • Monitoring with Prometheus and Grafana

                  • +
                  • Integration with Scylla Manager

                  • +
                  • Dead node replacement

                  • +
                  • Version Upgrade

                  • +
                  • Backup

                  • +
                  • Repairs

                  • +
                  • Autohealing

                  • +
                  +

                  Choose a topic to begin:

                  + +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/manager.html b/v1.14/manager.html new file mode 100644 index 00000000000..9c53f352838 --- /dev/null +++ b/v1.14/manager.html @@ -0,0 +1,824 @@ + + + + + + + + + + + + + Deploying Scylla Manager on a Kubernetes Cluster | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Deploying Scylla Manager on a Kubernetes Cluster

                  +

                  Scylla Manager is a product for database operations automation, +it can schedule tasks such as repairs and backups. +Scylla Manager can manage multiple Scylla clusters and run cluster-wide tasks +in a controlled and predictable way.

                  +

                  Scylla Manager is available for Scylla Enterprise customers and Scylla Open Source users. +With Scylla Open Source, Scylla Manager is limited to 5 nodes. +See the Scylla Manager Proprietary Software License Agreement for details.

                  +
                  +

                  Prerequisites

                  + +
                  +
                  +

                  Architecture

                  +

                  Scylla Manager in K8s consist of:

                  +
                    +
                  • Dedicated Scylla Cluster

                    +

                    Scylla Manager persists its state to a Scylla cluster. +Additional small single node cluster is spawned in the Manager namespace.

                    +
                  • +
                  • Scylla Manager Controller

                    +

                    Main mission of Controller is to watch changes of Scylla Clusters, and synchronize three states.

                    +
                      +
                    1. What user wants - task definition in CRD.

                    2. +
                    3. What Controller registered - Task name to Task ID mapping - CRD status.

                    4. +
                    5. Scylla Manager task listing - internal state of Scylla Manager.

                    6. +
                    +

                    When Scylla Cluster CRD is being deployed Controller will register it in Scylla Manager once cluster reaches desired node count. +Once Cluster is fully up and running it will schedule all tasks defined in Cluster CRD. +Controller also supports task updates and unscheduling.

                    +
                  • +
                  • Scylla Manager

                    +

                    Regular Scylla Manager, the same used in cloud and bare metal deployments.

                    +
                  • +
                  +
                  +
                  +

                  Deploy Scylla Manager

                  +

                  Deploy the Scylla Manager using the following commands:

                  +
                  kubectl apply -f deploy/manager-prod.yaml
                  +
                  +
                  +

                  This will install the Scylla Manager in the scylla-manager namespace. +You can check if the Scylla Manager is up and running with:

                  +
                  kubectl -n scylla-manager get pods
                  +NAME                                               READY   STATUS    RESTARTS   AGE
                  +scylla-manager-cluster-manager-dc-manager-rack-0   2/2     Running   0          37m
                  +scylla-manager-controller-0                        1/1     Running   0          28m
                  +scylla-manager-scylla-manager-7bd9f968b9-w25jw     1/1     Running   0          37m
                  +
                  +
                  +

                  As you can see there are three pods:

                  +
                    +
                  • scylla-manager-cluster-manager-dc-manager-rack-0 - is a single node Scylla cluster.

                  • +
                  • scylla-manager-controller-0 - Scylla Manager Controller.

                  • +
                  • scylla-manager-scylla-manager-7bd9f968b9-w25jw - Scylla Manager.

                  • +
                  +

                  To see if Scylla Manager is fully up and running we can check their logs. +To do this, execute following command:

                  +
                  kubectl -n scylla-manager logs scylla-manager-controller-0
                  +
                  +
                  +

                  The output should be something like:

                  +
                  {"L":"INFO","T":"2020-09-23T11:25:27.882Z","M":"Scylla Manager Controller started","version":"","build_date":"","commit":"","built_by":"","go_version":"","options":{"Name":"scylla-manager-controller-0","Namespace":"scylla-manager","LogLevel":"debug","ApiAddress":"http://127.0.0.1:5080/api/v1"},"_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"}
                  +{"L":"INFO","T":"2020-09-23T11:25:28.435Z","M":"Registering Components.","_trace_id":"LQEJV3kDR5Gx9M3XQ2YnnQ"}
                  +
                  +
                  +

                  To check logs of Scylla Manager itself, use following command:

                  +
                  kubectl -n scylla-manager logs scylla-manager-scylla-manager-7bd9f968b9-w25jw
                  +
                  +
                  +

                  The output should be something like:

                  +
                  {"L":"INFO","T":"2020-09-23T11:26:53.238Z","M":"Scylla Manager Server","version":"2.1.2-0.20200816.76cc4dcc","pid":1,"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
                  +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Using config","config":{"HTTP":"127.0.0.1:5080","HTTPS":"","TLSCertFile":"/var/lib/scylla-manager/scylla_manager.crt","TLSKeyFile":"/var/lib/scylla-manager/scylla_manager.key","TLSCAFile":"","Prometheus":":56090","PrometheusScrapeInterval":5000000000,"debug":"127.0.0.1:56112","Logger":{"Mode":"stderr","Level":"info","Development":false},"Database":{"Hosts":["scylla-manager-cluster-manager-dc-manager-rack-0.scylla-manager.svc"],"SSL":false,"User":"","Password":"","LocalDC":"","Keyspace":"scylla_manager","MigrateDir":"/etc/scylla-manager/cql","MigrateTimeout":30000000000,"MigrateMaxWaitSchemaAgreement":300000000000,"ReplicationFactor":1,"Timeout":600000000,"TokenAware":true},"SSL":{"CertFile":"","Validate":true,"UserCertFile":"","UserKeyFile":""},"Healthcheck":{"Timeout":250000000,"SSLTimeout":750000000},"Backup":{"DiskSpaceFreeMinPercent":10,"AgeMax":43200000000000},"Repair":{"SegmentsPerRepair":1,"ShardParallelMax":0,"ShardFailedSegmentsMax":100,"PollInterval":200000000,"ErrorBackoff":300000000000,"AgeMax":0,"ShardingIgnoreMsbBits":12}},"config_files":["/mnt/etc/scylla-manager/scylla-manager.yaml"],"_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
                  +{"L":"INFO","T":"2020-09-23T11:26:54.519Z","M":"Checking database connectivity...","_trace_id":"xQhkJ0OuR8e6iMDEpM62Hg"}
                  +
                  +
                  +

                  If there are no errors in the logs, let’s spin a Scylla Cluster.

                  +
                  +
                  +

                  Cluster registration

                  +

                  When the Scylla Manager is fully up and running, lets create a regular instance of Scylla cluster.

                  +

                  See generic tutorial to spawn your cluster.

                  +

                  Note: If you already have some Scylla Clusters, after installing Manager they should be +automatically registered in Scylla Manager.

                  +

                  Once cluster reaches desired node count, cluster status will be updated with ID under which it was registered in Manager.

                  +
                  kubectl -n scylla describe Cluster
                  +
                  +[...]
                  +Status:
                  + Manager Id:  d1d532cd-49f2-4c97-9263-25126532803b
                  + Racks:
                  +   us-east-1a:
                  +     Members:        3
                  +     Ready Members:  3
                  +     Version:        4.0.0
                  +
                  +
                  +

                  You can use this ID to talk to Scylla Manager using sctool CLI installed in Scylla Manager Pod. +You can also use Cluster name in namespace/cluster-name format.

                  +
                  kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list
                  +
                  +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b)
                  +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮
                  +│ Task                                                        │ Arguments                            │ Next run                       │ Status │
                  +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤
                  +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b            │                                      │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE   │
                  +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd       │                                      │ 23 Sep 20 14:29:57 CEST (+1m)  │ NEW    │
                  +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯
                  +
                  +
                  +

                  Scylla Manager by default registers recurring healhcheck tasks for Agent and for each of the enabled frontends (CQL, Alternator).

                  +

                  In this task listing we can see CQL and REST healthchecks.

                  +
                  +
                  +

                  Task scheduling

                  +

                  You can either define tasks prior Cluster creation, or for existing Cluster. +Let’s edit already running cluster definition to add repair and backup task.

                  +
                  kubectl -n scylla edit Cluster simple-cluster
                  +
                  +
                  +

                  Add following task definition to Cluster spec:

                  +
                    repairs:
                  +    - name: "users repair"
                  +      keyspace: ["users"]
                  +      interval: "1d"
                  +  backups:
                  +    - name: "weekly backup"
                  +      location: ["s3:cluster-backups"]
                  +      retention: 3
                  +      interval: "7d"
                  +    - name: "daily backup"
                  +      location: ["s3:cluster-backups"]
                  +      retention: 7
                  +      interval: "1d"
                  +
                  +
                  +

                  For full task definition configuration consult ScyllaCluster CRD.

                  +

                  Note: Scylla Manager Agent must have access to above bucket prior the update in order to schedule backup task. +Consult Scylla Manager documentation for details on how to set it up.

                  +

                  Scylla Manager Controller will spot this change and will schedule tasks in Scylla Manager.

                  +
                  kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task list
                  +
                  +Cluster: scylla/simple-cluster (d1d532cd-49f2-4c97-9263-25126532803b)
                  +╭─────────────────────────────────────────────────────────────┬──────────────────────────────────────┬────────────────────────────────┬────────╮
                  +│ Task                                                        │ Arguments                            │ Next run                       │ Status │
                  +├─────────────────────────────────────────────────────────────┼──────────────────────────────────────┼────────────────────────────────┼────────┤
                  +│ healthcheck/400b2723-eec5-422a-b7f3-236a0e10575b            │                                      │ 23 Sep 20 14:28:42 CEST (+15s) │ DONE   │
                  +│ backup/275aae7f-c436-4fc8-bcec-479e65fb8372                 │ -L s3:cluster-backups  --retention 3 │ 23 Sep 20 14:28:58 CEST (+7d)  │ NEW    │
                  +│ healthcheck_rest/28169610-a969-4c20-9d11-ab7568b8a1bd       │                                      │ 23 Sep 20 14:29:57 CEST (+1m)  │ NEW    │
                  +│ repair/d4946360-c29d-4bb4-8b9d-619ada495c2a                 │                                      │ 23 Sep 20 14:38:42 CEST        │ NEW    │
                  +╰─────────────────────────────────────────────────────────────┴──────────────────────────────────────┴────────────────────────────────┴────────╯
                  +
                  +
                  +

                  As you can see, we have two new tasks, weekly recurring backup, and one repair which should start shortly.

                  +

                  To check progress of run you can use following command:

                  +
                  kubectl -n scylla-manager exec -ti scylla-manager-scylla-manager-7bd9f968b9-w25jw -- sctool task progress --cluster d1d532cd-49f2-4c97-9263-25126532803b repair/d4946360-c29d-4bb4-8b9d-619ada495c2a
                  +Status:         RUNNING
                  +Start time:     23 Sep 20 14:38:42 UTC
                  +Duration:       13s
                  +Progress:       2.69%
                  +Datacenters:
                  +  - us-east-1
                  ++--------------------+-------+
                  +| system_auth        | 8.06% |
                  +| system_distributed | 0.00% |
                  +| system_traces      | 0.00% |
                  ++--------------------+-------+
                  +
                  +
                  +

                  Other tasks can be also tracked using the same command, but using different task ID. +Task IDs are present in Cluster Status as well as in task listing.

                  +
                  +
                  +

                  Clean Up

                  +

                  To clean up all resources associated with Scylla Manager, you can run the commands below.

                  +

                  NOTE: this will destroy your Scylla Manager database and delete all of its associated data.

                  +
                  kubectl delete -f deploy/manager-prod.yaml
                  +
                  +
                  +
                  +
                  +

                  Troubleshooting

                  +

                  Manager is not running

                  +

                  If the Scylla Manager does not come up, the first step would be to examine the Manager and Controller logs:

                  +
                  kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-controller
                  +kubectl -n scylla-manager logs -f scylla-manager-controller-0 scylla-manager-scylla-manager-7bd9f968b9-w25jw
                  +
                  +
                  +

                  My task wasn’t scheduled

                  +

                  If your task wasn’t scheduled, Cluster status will be updated with error messages for each failed task. +You can also consult Scylla Manager logs.

                  +

                  Example:

                  +

                  Following status describes error when backup task cannot be scheduled, due to lack of access to bucket:

                  +
                  Status:
                  +  Backups:
                  +    Error:     create backup target: location is not accessible: 10.100.16.62: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.100.16.62 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.107.193.33: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.107.193.33 and run "scylla-manager-agent check-location -L s3:manager-test --debug"; 10.109.197.60: giving up after 2 attempts: after 15s: timeout - make sure the location is correct and credentials are set, to debug SSH to 10.109.197.60 and run "scylla-manager-agent check-location -L s3:manager-test --debug"
                  +    Id:        00000000-0000-0000-0000-000000000000
                  +    Interval:  0
                  +    Location:
                  +      s3:manager-test
                  +    Name:         adhoc backup
                  +    Num Retries:  3
                  +    Retention:    3
                  +    Start Date:   now
                  +  Manager Id:     2b9dbe8c-9daa-4703-a66d-c29f63a917c8
                  +  Racks:
                  +    us-east-1a:
                  +      Members:        3
                  +      Ready Members:  3
                  +      Version:        4.0.0
                  +
                  +
                  +

                  Because Controller is infinitely retrying to schedule each defined task, once permission issues will be resolved, +task should appear in task listing and Cluster status.

                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/migration.html b/v1.14/migration.html new file mode 100644 index 00000000000..461f58a3eff --- /dev/null +++ b/v1.14/migration.html @@ -0,0 +1,761 @@ + + + + + + + + + + + + + Version migrations | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Version migrations

                  +
                  +

                  v0.3.0 -> v1.0.0 migration

                  +

                  v0.3.0 used a very common name as a CRD kind (Cluster). In v1.0.0 this issue was solved by using less common kind +which is easier to disambiguate (ScyllaCluster). +This change is backward incompatible, which means manual migration is needed.

                  +

                  This procedure involves having two CRDs registered at the same time. We will detach Scylla Pods +from Scylla Operator for a short period to ensure that nothing is garbage collected when Scylla Operator is upgraded. +Compared to the upgrade guide where full deletion is requested, this procedure shouldn’t cause downtimes. +Although detaching resources from their controller is considered hacky. This means that you shouldn’t run procedure +out of the box on production. Make sure this procedure works well multiple times on your staging environment first.

                  +

                  Read the whole procedure and make sure you understand what is going on before executing any of the commands!

                  +

                  In case of any issues or questions regarding this procedure, you’re welcomed on our Scylla Users Slack +on #kubernetes channel.

                  +
                  +
                  +

                  Procedure

                  +
                    +
                  1. Execute this whole procedure for each cluster sequentially. To get a list of existing clusters execute the following

                    +
                    kubectl -n scylla get cluster.scylla.scylladb.com
                    +
                    +NAME             AGE
                    +simple-cluster   30m
                    +
                    +
                    +

                    All below commands will use scylla namespace and simple-cluster as a cluster name.

                    +
                  2. +
                  3. Make sure you’re using v1.0.0 tag:

                    +
                    git checkout v1.0.0
                    +
                    +
                    +
                  4. +
                  5. Upgrade your cert-manager to v1.0.0. If you installed it from a static file from this repo, simply execute the following:

                    +
                     kubectl apply -f examples/common/cert-manager.yaml
                    +
                    +
                    +

                    If your cert-manager was installed in another way, follow official instructions on cert-manager website.

                    +
                  6. +
                  7. deploy/operator.yaml file contains multiple resources. Extract only CustomResourceDefinition to separate file.

                  8. +
                  9. Install v1.0.0 CRD definition from file created in the previous step:

                    +
                    kubectl apply -f examples/common/crd.yaml
                    +
                    +
                    +
                  10. +
                  11. Save your existing simple-cluster Cluster definition to a file:

                    +
                    kubectl -n scylla get cluster.scylla.scylladb.com simple-cluster -o yaml > existing-cluster.yaml
                    +
                    +
                    +
                  12. +
                  13. Migrate Kind and ApiVersion to new values using:

                    +
                    sed -i 's/scylla.scylladb.com\/v1alpha1/scylla.scylladb.com\/v1/g' existing-cluster.yaml
                    +sed -i 's/kind: Cluster/kind: ScyllaCluster/g' existing-cluster.yaml
                    +
                    +
                    +
                  14. +
                  15. Install migrated CRD instance

                    +
                    kubectl apply -f existing-cluster.yaml
                    +
                    +
                    +

                    At this point, we should have two CRDs describing your Scylla cluster, although the new one is not controlled by the Operator.

                    +
                  16. +
                  17. Get UUID of newly created ScyllaCluster resource:

                    +
                    kubectl -n scylla get ScyllaCluster simple-cluster --template="{{ .metadata.uid }}"
                    +
                    +12a3678d-8511-4c9c-8a48-fa78d3992694
                    +
                    +
                    +

                    Save output UUID somewhere, it will be referred as <new-cluster-uid> in commands below.

                    +

                    Depending on your shell, you might get additional ‘%’ sign at the end of UUID, make sure to remove it!

                    +
                  18. +
                  19. Upgrade ClusterRole attached to each of the Scylla nodes to grant them permission to lookup Scylla clusters:

                    +
                    kubectl patch ClusterRole simple-cluster-member --type "json" -p '[{"op":"add","path":"/rules/-","value":{"apiGroups":["scylla.scylladb.com"],"resources":["scyllaclusters"],"verbs":["get"]}}]'
                    +
                    +
                    +

                    Amend role name according to your cluster name, it should look like <scylla-cluster-name>-member.

                    +
                  20. +
                  21. Get a list of all Services associated with your cluster. First get list of all services:

                    +
                     kubectl -n scylla get svc -l "scylla/cluster=simple-cluster"
                    +
                    + NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
                    + simple-cluster-client                   ClusterIP   None           <none>        9180/TCP                                                          109m
                    + simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.23.96    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   109m
                    + simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.66.22    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   108m
                    + simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.246.25   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   106m
                    +
                    +
                    +
                    +
                  22. +
                  23. For each service, change its ownerReference to point to new CRD instance:

                    +
                     kubectl -n scylla patch svc <cluster-svc-name> --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":"<new-cluster-uid>"}]'
                    +
                    +
                    +

                    Replace <cluster-svc-name> with Service name, and <new-cluster-uid> with saved UUID from one of the previous steps.

                    +
                  24. +
                  25. Get a list of all Services again to see if none was deleted. Check also “Age” column, it shouldn’t be lower than previous result.

                    +
                     kubectl -n scylla get svc -l "scylla/cluster=simple-cluster"
                    +
                    + NAME                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                           AGE
                    + simple-cluster-client                   ClusterIP   None           <none>        9180/TCP                                                          110m
                    + simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.23.96    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   110m
                    + simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.66.22    <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   109m
                    + simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.246.25   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   107m
                    +
                    +
                    +
                    +
                  26. +
                  27. Get a list of StatefulSets associated with your cluster:

                    +
                    kubectl -n scylla get sts -l "scylla/cluster=simple-cluster"
                    +
                    +NAME                                  READY   AGE
                    +simple-cluster-us-east-1-us-east-1a   3/3     104m
                    +
                    +
                    +
                  28. +
                  29. For each StatefulSet from previous step, change its ownerReference to point to new CRD instance.

                    +
                     kubectl -n scylla patch sts <cluster-sts-name> --type='json' -p='[{"op": "replace", "path": "/metadata/ownerReferences/0/apiVersion", "value":"scylla.scylladb.com/v1"}, {"op": "replace", "path": "/metadata/ownerReferences/0/kind", "value":"ScyllaCluster"}, {"op": "replace", "path": "/metadata/ownerReferences/0/uid", "value":"<new-cluster-uid>"}]'
                    +
                    +
                    +

                    Replace <cluster-sts-name> with StatefulSet name, and <new-cluster-uid> with saved UUID from one of the previous steps.

                    +
                  30. +
                  31. Now when all k8s resources bound to Scylla are attached to new CRD, we can remove 0.3.0 Operator and old CRD definition. +Checkout v0.3.0 version, and remove Scylla Operator, and old CRD:

                    +
                     git checkout v0.3.0
                    + kubectl delete -f examples/generic/operator.yaml
                    +
                    +
                    +
                  32. +
                  33. Checkout v1.0.0, and install upgraded Scylla Operator:

                    +
                     git checkout v1.0.0
                    + kubectl apply -f deploy/operator.yaml
                    +
                    +
                    +
                  34. +
                  35. Wait until Scylla Operator boots up:

                    +
                     kubectl -n scylla-operator-system wait --for=condition=ready pod --all --timeout=600s
                    +
                    +
                    +
                  36. +
                  37. Get a list of StatefulSets associated with your cluster:

                    +
                    kubectl -n scylla get sts -l "scylla/cluster=simple-cluster"
                    +
                    +NAME                                  READY   AGE
                    +simple-cluster-us-east-1-us-east-1a   3/3     104m
                    +
                    +
                    +
                  38. +
                  39. For each StatefulSet from previous step, change its sidecar container image to v1.0.0, and wait until change will be propagated. This step will initiate a rolling restart of pods one by one.

                    +
                    kubectl -n scylla patch sts <cluster-sts> --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/initContainers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]'
                    +kubectl -n scylla rollout status sts <cluster-sts>
                    +
                    +
                    +

                    Replace <cluster-sts-name> with StatefulSet name.

                    +
                  40. +
                  41. If you’re using Scylla Manager, bump Scylla Manager Controller image to v1.0.0

                    +
                     kubectl -n scylla-manager-system patch sts scylla-manager-controller --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"scylladb/scylla-operator:v1.0.0"}]'
                    +
                    +
                    +
                  42. +
                  43. Your Scylla cluster is now migrated to v1.0.0.

                  44. +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/monitoring.html b/v1.14/monitoring.html new file mode 100644 index 00000000000..6bcb87f99a9 --- /dev/null +++ b/v1.14/monitoring.html @@ -0,0 +1,807 @@ + + + + + + + + + + + + + Monitoring | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Monitoring

                  +

                  Scylla Operator 1.8 introduced a new API resource ScyllaDBMonitoring, allowing users to deploy a managed monitoring +setup for their Scylla Clusters.

                  +
                  apiVersion: scylla.scylladb.com/v1alpha1
                  +kind: ScyllaDBMonitoring
                  +metadata:
                  +  name: example
                  +spec:
                  +  type: Platform
                  +  endpointsSelector:
                  +    matchLabels:
                  +      app.kubernetes.io/name: scylla
                  +      scylla-operator.scylladb.com/scylla-service-type: member
                  +      scylla/cluster: replace-with-your-scyllacluster-name
                  +  components:
                  +    prometheus:
                  +      storage:
                  +        volumeClaimTemplate:
                  +          spec:
                  +            storageClassName: scylladb-local-xfs
                  +            resources:
                  +              requests:
                  +                storage: 1Gi
                  +    grafana:
                  +      exposeOptions:
                  +        webInterface:
                  +          ingress:
                  +            ingressClassName: haproxy
                  +            dnsDomains:
                  +            - test-grafana.test.svc.cluster.local
                  +            annotations:
                  +              haproxy-ingress.github.io/ssl-passthrough: "true"
                  +
                  +
                  +

                  For details, refer to the below command:

                  +
                  $ kubectl explain scylladbmonitorings.scylla.scylladb.com/v1alpha1
                  +
                  +
                  +
                  +

                  Deploy managed monitoring

                  +

                  Note: as of v1.8, ScyllaDBMonitoring is experimental. The API is currently in version v1alpha1 and may change in future versions.

                  +
                  +

                  Requirements

                  +

                  Before you can set up your ScyllaDB monitoring, you need Scylla Operator already installed in your Kubernetes cluster. +For more information on how to deploy Scylla Operator, see:

                  + +

                  The above example of the monitoring setup also makes use of HAProxy Ingress and Prometheus Operator. +You can deploy them in your Kubernetes cluster using the provided third party examples. If you already have them deployed +in your cluster, you can skip the below steps.

                  +
                  +

                  Deploy Prometheus Operator

                  +

                  Deploy Prometheus Operator using kubectl:

                  +
                  $ kubectl -n prometheus-operator apply --server-side -f ./examples/third-party/prometheus-operator
                  +
                  +
                  +
                  +
                  Wait for Prometheus Operator to roll out
                  +
                  $ kubectl -n prometheus-operator rollout status --timeout=5m deployments.apps/prometheus-operator
                  +deployment "prometheus-operator" successfully rolled out
                  +
                  +
                  +
                  +
                  +
                  +

                  Deploy HAProxy Ingress

                  +

                  Deploy HAProxy Ingress using kubectl:

                  +
                  $ kubectl -n haproxy-ingress apply --server-side -f ./examples/third-party/haproxy-ingress
                  +
                  +
                  +
                  +
                  Wait for HAProxy Ingress to roll out
                  +
                  $ kubectl -n haproxy-ingress rollout status --timeout=5m deployments.apps/haproxy-ingress
                  +deployment "haproxy-ingress" successfully rolled out
                  +
                  +
                  +
                  +
                  +
                  +
                  +

                  Deploy ScyllaDBMonitoring

                  +

                  First, update the endpointsSelector in examples/monitoring/v1alpha1/scylladbmonitoring.yaml with a label +matching your ScyllaCluster instance name.

                  +

                  Deploy the monitoring setup using kubectl:

                  +
                  $ kubectl -n scylla apply --server-side -f ./examples/monitoring/v1alpha1/scylladbmonitoring.yaml
                  +
                  +
                  +

                  Scylla Operator will notice the new ScyllaDBMonitoring object, and it will reconcile all necessary resources.

                  +
                  +

                  Wait for ScyllaDBMonitoring to roll out

                  +
                  $ kubectl wait --for='condition=Progressing=False' scylladbmonitorings.scylla.scylladb.com/example
                  +scylladbmonitoring.scylla.scylladb.com/example condition met
                  +
                  +$ kubectl wait --for='condition=Degraded=False' scylladbmonitorings.scylla.scylladb.com/example
                  +scylladbmonitoring.scylla.scylladb.com/example condition met
                  +
                  +$ kubectl wait --for='condition=Available=True' scylladbmonitorings.scylla.scylladb.com/example
                  +scylladbmonitoring.scylla.scylladb.com/example condition met
                  +
                  +
                  +
                  +
                  +

                  Wait for Prometheus to roll out

                  +
                  $ kubectl rollout status --timeout=5m statefulset.apps/prometheus-example
                  +statefulset rolling update complete 1 pods at revision prometheus-example-65b89d55bb...
                  +
                  +
                  +
                  +
                  +

                  Wait for Grafana to roll out

                  +
                  $ kubectl rollout status --timeout=5m deployments.apps/example-grafana
                  +deployment "example-grafana" successfully rolled out
                  +
                  +
                  +
                  +
                  +
                  +

                  Accessing Grafana

                  +

                  For accessing Grafana service from outside the Kubernetes cluster we recommend using an Ingress, although there are many other ways to do so. +When using Ingress, what matters is to direct your packets to the ingress controller Service/Pods and have the correct TLS SNI field set by the caller when reaching out to the service, so it is routed properly, and your client can successfully validate the grafana serving certificate. +This is easier when you are using a real DNS domain that resolves to your Ingress controller’s IP address but most clients and tools allow setting the SNI field manually.

                  +
                  +
                  +

                  Prerequisites

                  +

                  To access Grafana, you first need to collect the serving CA and the credentials.

                  +
                  $ GRAFANA_SERVING_CERT="$( kubectl -n scylla get secret/example-grafana-serving-ca --template '{{ index .data "tls.crt" }}' | base64 -d )"
                  +$ GRAFANA_USER="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "username" }}' | base64 -d )"
                  +$ GRAFANA_PASSWORD="$( kubectl -n scylla get secret/example-grafana-admin-credentials --template '{{ index .data "password" }}' | base64 -d )"
                  +
                  +
                  +
                  +
                  +

                  Connecting through Ingress using a resolvable domain

                  +

                  In production clusters, the Ingress controller and appropriate DNS records should be set up already. Often there is already a generic wildcard record like *.app.mydomain pointing to the Ingress controller’s external IP. For custom service domains, it is usually a CNAME pointing to the Ingress controller’s A record.

                  +

                  Note: The ScyllaDBMonitoring example creates an Ingress object with test-grafana.test.svc.cluster.local DNS domain that you should adjust to your domain. Below examples use example-grafana.apps.mydomain.

                  +

                  Note: To test a resolvable domain from your machine without creating DNS records, you can adjust /etc/hosts or similar.

                  +
                  $ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://example-grafana.apps.mydomain" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}"
                  +200
                  +
                  +
                  +
                  +
                  +

                  Connecting through Ingress using an unresolvable domain

                  +

                  To connect to an Ingress without a resolvable domain you first need to find out your Ingress controller’s IP that can be resolved externally. Again, there are many ways to do so beyond the below examples.

                  +

                  Unless stated otherwise, we assume your Ingress is running on port 443.

                  +
                  $ INGRESS_PORT=443
                  +
                  +
                  +
                  +

                  Variants

                  +
                  +
                  Ingress ExternalIP
                  +

                  When you are running in a real cluster there is usually a cloud LoadBalancer or a bare metal alternative providing you with an externally reachable IP address.

                  +
                  $ INGRESS_IP="$( kubectl -n=haproxy-ingress get service/haproxy-ingress --template='{{ ( index .status.loadBalancer.ingress 0 ).ip }}' )"
                  +
                  +
                  +
                  +
                  +
                  Ingress NodePort
                  +

                  NodePort is slightly less convenient, but it’s available in development clusters as well.

                  +
                  $ INGRESS_IP="$( kubectl get nodes --template='{{ $internal_ip := "" }}{{ $external_ip := "" }}{{ range ( index .items 0 ).status.addresses }}{{ if eq .type "InternalIP" }}{{ $internal_ip = .address }}{{ else if eq .type "ExternalIP" }}{{ $external_ip = .address }}{{ end }}{{ end }}{{ if $external_ip }}{{ $external_ip }}{{ else }}{{ $internal_ip }}{{ end }}' )"
                  +$ INGRESS_PORT="$( kubectl -n=haproxy-ingress get services/haproxy-ingress --template='{{ range .spec.ports }}{{ if eq .port 443 }}{{ .nodePort }}{{ end }}{{ end }}' )"
                  +
                  +
                  +
                  +
                  +
                  Connection
                  +
                  $ curl --fail -s -o /dev/null -w '%{http_code}' -L --cacert <( echo "${GRAFANA_SERVING_CERT}" ) "https://test-grafana.test.svc.cluster.local:${INGRESS_PORT}" --resolve "test-grafana.test.svc.cluster.local:${INGRESS_PORT}:${INGRESS_IP}" --user "${GRAFANA_USER}:${GRAFANA_PASSWORD}"
                  +200
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/multidc/eks.html b/v1.14/multidc/eks.html new file mode 100644 index 00000000000..5486c14e53a --- /dev/null +++ b/v1.14/multidc/eks.html @@ -0,0 +1,790 @@ + + + + + + + + + + + + + Build multiple Amazon EKS clusters with inter-Kubernetes networking | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Build multiple Amazon EKS clusters with inter-Kubernetes networking

                  +

                  This document describes the process of creating multiple Amazon EKS clusters in different regions, using separate VPCs, and explains the steps necessary for configuring inter-Kubernetes networking between the clusters. +The interconnected clusters can serve as a platform for deploying a multi-datacenter ScyllaDB cluster.

                  +

                  This guide will walk you through the process of creating and configuring EKS clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference.

                  +
                  +

                  Prerequisites

                  +

                  To follow the below guide, you first need to install and configure the tools that you will need to create and manage AWS and Kubernetes resources:

                  +
                    +
                  • eksctl – A command line tool for working with EKS clusters.

                  • +
                  • kubectl – A command line tool for working with Kubernetes clusters.

                  • +
                  +

                  For more information see Getting started with Amazon EKS – eksctl in AWS documentation.

                  +
                  +
                  +

                  Create EKS clusters

                  +
                  +

                  Create the first EKS cluster

                  +

                  Below is the required specification for the first cluster.

                  +
                  apiVersion: eksctl.io/v1alpha5
                  +kind: ClusterConfig
                  +
                  +metadata:
                  +  name: scylladb-us-east-1
                  +  region: us-east-1
                  +
                  +availabilityZones:
                  +- us-east-1a
                  +- us-east-1b
                  +- us-east-1c
                  +
                  +vpc:
                  +  cidr: 10.0.0.0/16
                  +
                  +nodeGroups:
                  +  ...
                  +
                  +
                  +

                  Specify the first cluster’s configuration file and save it as cluster-us-east-1.yaml. +Refer to Creating an EKS cluster section of ScyllaDB Operator documentation for the reference of the configuration of node groups.

                  +

                  To deploy the first cluster, use the below command:

                  +
                  eksctl create cluster -f=cluster-us-east-1.yaml
                  +
                  +
                  +

                  Run the following command to learn the status and VPC ID of the cluster:

                  +
                  eksctl get cluster --name=scylladb-us-east-1 --region=us-east-1
                  +
                  +
                  +

                  You will need to get the cluster’s context for future operations. To do so, use the below command:

                  +
                  kubectl config current-context
                  +
                  +
                  +

                  For any kubectl commands that you will want to run against this cluster, use the --context flag with the value returned by the above command.

                  +
                  +

                  Deploy ScyllaDB Operator

                  +

                  Once the cluster is ready, refer to Deploying Scylla on a Kubernetes Cluster to deploy the ScyllaDB Operator and its prerequisites.

                  +
                  +
                  +

                  Prepare nodes for running ScyllaDB

                  +

                  Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in Deploying Scylla on EKS in ScyllaDB Operator documentation.

                  +
                  +
                  +
                  +

                  Create the second EKS cluster

                  +

                  Below is the required specification for the second cluster. As was the case with the first cluster, the provided values are only exemplary and can be adjusted according to your needs.

                  +
                  +

                  Caution

                  +

                  It is required that the VPCs of the two EKS clusters have non-overlapping IPv4 network ranges.

                  +
                  +
                  apiVersion: eksctl.io/v1alpha5
                  +kind: ClusterConfig
                  +
                  +metadata:
                  +  name: scylladb-us-east-2
                  +  region: us-east-2
                  +
                  +availabilityZones:
                  +- us-east-2a
                  +- us-east-2b
                  +- us-east-2c
                  +
                  +vpc:
                  +  cidr: 172.16.0.0/16
                  +
                  +nodeGroups:
                  +  ...
                  +
                  +
                  +

                  Follow analogous steps to create the second EKS cluster and prepare it for running ScyllaDB.

                  +
                  +
                  +
                  +

                  Configure the network

                  +

                  The prepared Kubernetes clusters each have a dedicated VPC network. +To be able to route the traffic between the two VPC networks, you need to create a networking connection between them, otherwise known as VPC peering.

                  +
                  +

                  Create VPC peering

                  +

                  Refer to Create a VPC peering connection in AWS documentation for instructions on creating a VPC peering connection between the two earlier created VPCs.

                  +

                  In this example, the ID of the created VPC peering connection is pcx-08077dcc008fbbab6.

                  +
                  +
                  +

                  Update route tables

                  +

                  To enable private IPv4 traffic between the instances in the VPC peered network, you need to establish a communication channel by adding a route to the route tables associated with all the subnets associated with the instances for both VPCs. +The destination of the new route in a given route table is the CIDR of the VPC of the other cluster and the target is the ID of the VPC peering connection.

                  +

                  The following is an example of the route tables that enable communication of instances in two peered VPCs. Each table has a local route and the added route which sends traffic targeted at the other VPC to the peered network connection. The other preconfigured routes are omitted for readability.

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  Route tableDestinationTarget
                  eksctl-scylladb-us-east-1-cluster/PublicRouteTable10.0.0.0/16local
                  172.16.0.0/16pcx-08077dcc008fbbab6
                  eksctl-scylladb-us-east-2-cluster/PublicRouteTable172.16.0.0/16local
                  10.0.0.0/16pcx-08077dcc008fbbab6
                  +

                  Refer to Update your route tables for a VPC peering connection in AWS documentation for more information.

                  +
                  +
                  +

                  Update security groups

                  +

                  To allow traffic to flow to and from instances associated with security groups in the peered VPC, you need to update the inbound rules of the VPCs’ shared security groups.

                  +

                  Below is an example of the inbound rules that to be added to the corresponding security groups of the two VPCs.

                  + + + + + + + + + + + + + + + + + + + + + + + +

                  Security group name

                  Type

                  Protocol

                  Port range

                  Source

                  eksctl-scylladb-us-east-1-cluster-ClusterSharedNodeSecurityGroup-TD05V9EVU3B8

                  All traffic

                  All

                  All

                  Custom 172.16.0.0/16

                  eksctl-scylladb-us-east-2-cluster-ClusterSharedNodeSecurityGroup-1FR9YDLU0VE7M

                  All traffic

                  All

                  All

                  Custom 10.0.0.0/16

                  +

                  The names of the shared security groups of your VPCs should be similar to the ones presented in the example.

                  +
                  +

                  Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters in ScyllaDB Operator documentation for guidance.

                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/multidc/gke.html b/v1.14/multidc/gke.html new file mode 100644 index 00000000000..27d59dd49dd --- /dev/null +++ b/v1.14/multidc/gke.html @@ -0,0 +1,760 @@ + + + + + + + + + + + + + Build multiple GKE clusters with inter-Kubernetes networking | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Build multiple GKE clusters with inter-Kubernetes networking

                  +

                  This document describes the process of creating multiple GKE clusters in a shared VPC and explains the steps necessary for configuring inter-Kubernetes networking between clusters in different regions. +The interconnected clusters can serve as a platform for deploying a Multi Datacenter ScyllaDB cluster.

                  +

                  This guide will walk you through the process of creating and configuring GKE clusters in two distinct regions. Although it is only an example setup, it can easily be built upon to create infrastructure tailored to your specific needs. +For simplicity, several predefined values are used throughout the document. The values are only exemplary and can be adjusted to your preference.

                  +
                  +

                  Prerequisites

                  +

                  To follow the below guide, you first need to install and configure the following tools that you will need to create and manage GCP and Kubernetes resources:

                  +
                    +
                  • gcloud CLI - Google Cloud Command Line Interface, a command line tool for working with Google Cloud resources and services directly.

                  • +
                  • kubectl – A command line tool for working with Kubernetes clusters.

                  • +
                  +

                  See Install the Google Cloud CLI in GCP documentation and Install Tools in Kubernetes documentation for reference.

                  +
                  +
                  +

                  Create and configure a VPC network

                  +

                  For the clusters to have inter-Kubernetes networking, you will create a virtual network shared between all the instances, with dedicated subnets for each of the clusters. +To create the subnets manually, create the network in custom subnet mode.

                  +
                  +

                  Create the VPC network

                  +

                  Run the below command to create the network:

                  +
                  gcloud compute networks create scylladb --subnet-mode=custom
                  +
                  +
                  +

                  With the VPC network created, create a dedicated subnet with secondary CIDR ranges for their Pod and Service pools in each region which the clusters will reside in.

                  +
                  +
                  +

                  Create VPC network subnets

                  +

                  To create a subnet for the first cluster in region us-east1, run the below command:

                  +
                  gcloud compute networks subnets create scylladb-us-east1 \
                  +    --region=us-east1 \
                  +    --network=scylladb \
                  +    --range=10.0.0.0/20 \
                  +    --secondary-range='cluster=10.1.0.0/16,services=10.2.0.0/20'
                  +
                  +
                  +

                  To create a subnet for the second cluster in region us-west1, run the below command:

                  +
                  gcloud compute networks subnets create scylladb-us-west1 \
                  +    --region=us-west1 \
                  +    --network=scylladb \
                  +    --range=172.16.0.0/20 \
                  +    --secondary-range='cluster=172.17.0.0/16,services=172.18.0.0/20'
                  +
                  +
                  +
                  +

                  Caution

                  +

                  It is required that the IPv4 address ranges of the subnets allocated for the GKE clusters do not overlap.

                  +
                  +

                  Refer to Create a VPC-native cluster and Alias IP ranges in GKE documentation for more information about VPC native clusters and alias IP ranges.

                  +
                  +
                  +
                  +

                  Create GKE clusters

                  +

                  With the VPC network created, you will now create two VPC native GKE clusters in dedicated regions.

                  +
                  +

                  Create the first GKE cluster

                  +

                  Run the following command to create the first GKE cluster in the us-east1 region:

                  +
                  gcloud container clusters create scylladb-us-east1 \
                  +    --location=us-east1-b \
                  +    --node-locations='us-east1-b,us-east1-c' \
                  +    --machine-type=n1-standard-8 \
                  +    --num-nodes=1 \
                  +    --disk-type=pd-ssd \
                  +    --disk-size=20 \
                  +    --image-type=UBUNTU_CONTAINERD \
                  +    --no-enable-autoupgrade \
                  +    --no-enable-autorepair \
                  +    --enable-ip-alias \
                  +    --network=scylladb \
                  +    --subnetwork=scylladb-us-east1 \
                  +    --cluster-secondary-range-name=cluster \
                  +    --services-secondary-range-name=services
                  +
                  +
                  +

                  Refer to Creating a GKE cluster section of ScyllaDB Operator documentation for more information regarding the configuration and deployment of additional node pools, including the one dedicated for ScyllaDB nodes.

                  +

                  You will need to get the cluster’s context for future operations. To do so, use the below command:

                  +
                  kubectl config current-context
                  +
                  +
                  +

                  For any kubectl commands that you will want to run against this cluster, use the --context flag with the value returned by the above command.

                  +
                  +

                  Deploy ScyllaDB Operator

                  +

                  Once the cluster is ready, refer to Deploying Scylla on a Kubernetes Cluster to deploy the ScyllaDB Operator and its prerequisites.

                  +
                  +
                  +

                  Prepare nodes for running ScyllaDB

                  +

                  Then, prepare the nodes for running ScyllaDB workloads and deploy a volume provisioner following the steps described in Deploying Scylla on GKE page of the documentation.

                  +
                  +
                  +
                  +

                  Create the second GKE cluster

                  +

                  Run the following command to create the second GKE cluster in the us-west1 region:

                  +
                  gcloud container clusters create scylladb-us-west1 \
                  +    --location=us-west1-b \
                  +    --node-locations='us-west1-b,us-west1-c' \
                  +    --machine-type=n1-standard-8 \
                  +    --num-nodes=1 \
                  +    --disk-type=pd-ssd \
                  +    --disk-size=20 \
                  +    --image-type=UBUNTU_CONTAINERD \
                  +    --no-enable-autoupgrade \
                  +    --no-enable-autorepair \
                  +    --enable-ip-alias \
                  +    --network=scylladb \
                  +    --subnetwork=scylladb-us-west1 \
                  +    --cluster-secondary-range-name=cluster \
                  +    --services-secondary-range-name=services
                  +
                  +
                  +

                  Follow analogous steps to create the second GKE cluster and prepare it for running ScyllaDB.

                  +
                  +
                  +
                  +

                  Configure the firewall rules

                  +

                  When creating a cluster, GKE creates several ingress firewall rules that enable the instances to communicate with each other. +To establish interconnectivity between the two created Kubernetes clusters, you will now add the allocated IPv4 address ranges to their corresponding source address ranges.

                  +

                  First, retrieve the name of the firewall rule associated with the first cluster, which permits traffic between all Pods on a cluster, as required by the Kubernetes networking model. +The rule name is in the following format: gke-[cluster-name]-[cluster-hash]-all.

                  +

                  To retrieve it, run the below command:

                  +
                  gcloud compute firewall-rules list --filter='name~gke-scylladb-us-east1-.*-all'
                  +
                  +
                  +

                  The output should resemble the following:

                  +
                  NAME                                NETWORK   DIRECTION  PRIORITY  ALLOW                     DENY  DISABLED
                  +gke-scylladb-us-east1-f17db261-all  scylladb  INGRESS    1000      udp,icmp,esp,ah,sctp,tcp        False
                  +
                  +
                  +

                  Modify the rule by updating the rule’s source ranges with the allocated Pod IPv4 address ranges of both clusters:

                  +
                  gcloud compute firewall-rules update gke-scylladb-us-east1-f17db261-all --source-ranges='10.1.0.0/16,172.17.0.0/16'
                  +
                  +
                  +

                  Follow the analogous steps for the other cluster. In this example, its corresponding firewall rule name is gke-scylladb-us-west1-0bb60902-all. To update it, you would run:

                  +
                  gcloud compute firewall-rules update gke-scylladb-us-west1-0bb60902-all --source-ranges='10.1.0.0/16,172.17.0.0/16'
                  +
                  +
                  +

                  Refer to Automatically created firewall rules in GKE documentation for more information.

                  +
                  +

                  Having followed the above steps, you should now have a platform prepared for deploying a multi-datacenter ScyllaDB cluster. +Refer to Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters in ScyllaDB Operator documentation for guidance.

                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/multidc/index.html b/v1.14/multidc/index.html new file mode 100644 index 00000000000..803191273f7 --- /dev/null +++ b/v1.14/multidc/index.html @@ -0,0 +1,601 @@ + + + + + + + + + + + + + Deploying multi-datacenter ScyllaDB clusters in Kubernetes | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Deploying multi-datacenter ScyllaDB clusters in Kubernetes

                  +

                  Prepare a platform for a multi datacenter ScyllaDB cluster deployment:

                  + +

                  Deploy a multi-datacenter ScyllaDB cluster in Kubernetes:

                  + +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/multidc/multidc.html b/v1.14/multidc/multidc.html new file mode 100644 index 00000000000..9b6e2f2af2f --- /dev/null +++ b/v1.14/multidc/multidc.html @@ -0,0 +1,1191 @@ + + + + + + + + + + + + + Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters

                  +

                  This document describes the process of deploying a Multi Datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters.

                  +

                  This guide will walk you through the example procedure of deploying two datacenters in distinct regions of a selected cloud provider.

                  +
                  +

                  Note

                  +

                  This guide is dedicated to deploying multi-datacenter ScyllaDB clusters and does not discuss unrelated configuration options. +For details of ScyllaDB cluster deployments and their configuration, refer to Deploying Scylla on a Kubernetes Cluster in ScyllaDB Operator documentation.

                  +
                  +
                  +

                  Prerequisites

                  +

                  As this document describes the procedure of deploying a Multi Datacenter ScyllaDB cluster, you are expected to have the required infrastructure prepared. +Let’s assume two interconnected Kubernetes clusters, capable of communicating with each other over PodIPs, with each cluster meeting the following requirements:

                  +
                    +
                  • a node pool dedicated to ScyllaDB nodes composed of at least 3 nodes running in different zones (with unique topology.kubernetes.io/zone label), configured to run ScyllaDB, each labeled with scylla.scylladb.com/node-type: scylla

                  • +
                  • running ScyllaDB Operator and its prerequisites

                  • +
                  • running a storage provisioner capable of provisioning XFS volumes of StorageClass scylladb-local-xfs in each of the nodes dedicated to ScyllaDB instances

                  • +
                  +

                  You can refer to one of our guides describing the process of preparing such infrastructure:

                  + +

                  Additionally, to follow the below guide, you need to install and configure the following tools that you will need to manage Kubernetes resources:

                  +
                    +
                  • kubectl – A command line tool for working with Kubernetes clusters.

                  • +
                  +

                  See Install Tools in Kubernetes documentation for reference.

                  +
                  +
                  +

                  Multi Datacenter ScyllaDB Cluster

                  +

                  In v1.11, ScyllaDB Operator introduced support for manual multi-datacenter ScyllaDB cluster deployments.

                  +
                  +

                  Warning

                  +

                  ScyllaDB Operator only supports manual configuration of multi-datacenter ScyllaDB clusters. +In other words, although ScyllaCluster API exposes the machinery necessary for setting up multi-datacenter ScylaDB clusters, the ScyllaDB Operator only automates operations for a single datacenter.

                  +

                  Operations related to multiple datacenters may require manual intervention of a human operator. +Most notably, destroying one of the Kubernetes clusters or ScyllaDB datacenters is going to leave DN nodes behind in other datacenters, and their removal has to be carried out manually.

                  +
                  +

                  The main mechanism used to set up a manual multi-datacenter ScyllaDB cluster is a field in ScyllaCluster’s specification - externalSeeds.

                  +
                  +

                  External seeds

                  +

                  The externalSeeds field in ScyllaCluster’s specification enables control over external seeds that are propagated to ScyllaDB binary as --seed-provider-parameters seeds=<external-seeds>. +In this context, external should be understood as “external to the datacenter being specified by the API”. +The provided seeds are used by the nodes as initial points of contact, which allows them to discover the cluster ring topology when joining it.

                  +

                  Refer to Scylla Seed Nodes in ScyllaDB documentation for more information regarding the function of seed nodes in ScyllaDB. +For more details regarding the function and implementation of external seeds, refer to the original enhancement proposal.

                  +
                  +
                  +

                  Networking

                  +

                  Since this guide assumes interconnectivity over PodIPs of the Kubernetes clusters, you are going to configure the ScyllaDB cluster’s nodes to communicate over PodIPs. +This is enabled by a subset of exposeOptions specified in ScyllaCluster API, introduced in v1.11.

                  +

                  For this particular setup, define the ScyllaClusers as follows:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +spec:
                  +  exposeOptions:
                  +    nodeService:
                  +      type: Headless
                  +    broadcastOptions:
                  +      clients:
                  +        type: PodIP
                  +      nodes:
                  +        type: PodIP
                  +
                  +
                  +

                  However, other configuration options allow for the manual deployment of multi-datacenter ScyllaDB clusters in different network setups. For details, refer to Exposing ScyllaClusters in ScyllaDB Operator documentation.

                  +
                  +

                  Deploy a multi-datacenter ScyllaDB Cluster

                  +
                  +
                  +

                  Using context

                  +

                  Let’s specify contexts for kubectl commands used throughout the guide. +To retrieve the context of your current cluster, run:

                  +
                  kubectl config current-context
                  +
                  +
                  +

                  Save the contexts of the two clusters, which you are going to deploy the datacenters in, as CONTEXT_DC1 and CONTEXT_DC2 environment variables correspondingly.

                  +
                  +
                  +

                  Deploy the first datacenter

                  +

                  First, run the below command to create a dedicated ‘scylla’ namespace:

                  +
                  kubectl --context="${CONTEXT_DC1}" create ns scylla
                  +
                  +
                  +

                  For this guide, let’s assume that your cluster is running in us-east-1 region and the nodes dedicated to running ScyllaDB nodes are running in zones us-east-1a, us-east-1b and us-east-1c correspondingly. If that is not the case, adjust the manifest accordingly.

                  +
                  +

                  Caution

                  +

                  The .spec.name field of the ScyllaCluster objects represents the ScyllaDB cluster name and has to be consistent across all datacenters of this ScyllaDB cluster. +The names of the datacenters, specified in .spec.datacenter.name, have to be unique across the entire multi-datacenter cluster.

                  +

                  For more information see Create a ScyllaDB Cluster - Multi Data Centers (DC) in ScyllaDB documentation.

                  +
                  +

                  Save the ScyllaCluster manifest in dc1.yaml:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +metadata:
                  +  name: scylla-cluster
                  +  namespace: scylla
                  +spec:
                  +  agentVersion: 3.3.0
                  +  version: 6.1.1
                  +  cpuset: true
                  +  sysctls:
                  +  - "fs.aio-max-nr=2097152"
                  +  automaticOrphanedNodeCleanup: true
                  +  exposeOptions:
                  +    broadcastOptions:
                  +      clients:
                  +        type: PodIP
                  +      nodes:
                  +        type: PodIP
                  +    nodeService:
                  +      type: Headless
                  +  datacenter:
                  +    name: us-east-1
                  +    racks:
                  +    - name: a
                  +      members: 1
                  +      storage:
                  +        storageClassName: scylladb-local-xfs
                  +        capacity: 1800G
                  +      agentResources:
                  +        requests:
                  +          cpu: 100m
                  +          memory: 250M
                  +        limits:
                  +          cpu: 100m
                  +          memory: 250M
                  +      resources:
                  +        requests:
                  +          cpu: 7
                  +          memory: 56G
                  +        limits:
                  +          cpu: 7
                  +          memory: 56G
                  +      placement:
                  +        podAntiAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +          - topologyKey: kubernetes.io/hostname
                  +            labelSelector:
                  +              matchLabels:
                  +                app.kubernetes.io/name: scylla
                  +                scylla/cluster: scylla-cluster
                  +        nodeAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +            nodeSelectorTerms:
                  +            - matchExpressions:
                  +              - key: topology.kubernetes.io/zone
                  +                operator: In
                  +                values:
                  +                - us-east-1a
                  +              - key: scylla.scylladb.com/node-type
                  +                operator: In
                  +                values:
                  +                - scylla
                  +        tolerations:
                  +        - key: role
                  +          operator: Equal
                  +          value: scylla-clusters
                  +          effect: NoSchedule
                  +    - name: b
                  +      members: 1
                  +      storage:
                  +        storageClassName: scylladb-local-xfs
                  +        capacity: 1800G
                  +      agentResources:
                  +        requests:
                  +          cpu: 100m
                  +          memory: 250M
                  +        limits:
                  +          cpu: 100m
                  +          memory: 250M
                  +      resources:
                  +        requests:
                  +          cpu: 7
                  +          memory: 56G
                  +        limits:
                  +          cpu: 7
                  +          memory: 56G
                  +      placement:
                  +        podAntiAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +          - topologyKey: kubernetes.io/hostname
                  +            labelSelector:
                  +              matchLabels:
                  +                app.kubernetes.io/name: scylla
                  +                scylla/cluster: scylla-cluster
                  +        nodeAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +            nodeSelectorTerms:
                  +            - matchExpressions:
                  +              - key: topology.kubernetes.io/zone
                  +                operator: In
                  +                values:
                  +                - us-east-1b
                  +              - key: scylla.scylladb.com/node-type
                  +                operator: In
                  +                values:
                  +                - scylla
                  +        tolerations:
                  +        - key: role
                  +          operator: Equal
                  +          value: scylla-clusters
                  +          effect: NoSchedule
                  +    - name: c
                  +      members: 1
                  +      storage:
                  +        storageClassName: scylladb-local-xfs
                  +        capacity: 1800G
                  +      agentResources:
                  +        requests:
                  +          cpu: 100m
                  +          memory: 250M
                  +        limits:
                  +          cpu: 100m
                  +          memory: 250M
                  +      resources:
                  +        requests:
                  +          cpu: 7
                  +          memory: 56G
                  +        limits:
                  +          cpu: 7
                  +          memory: 56G
                  +      placement:
                  +        podAntiAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +          - topologyKey: kubernetes.io/hostname
                  +            labelSelector:
                  +              matchLabels:
                  +                app.kubernetes.io/name: scylla
                  +                scylla/cluster: scylla-cluster
                  +        nodeAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +            nodeSelectorTerms:
                  +            - matchExpressions:
                  +              - key: topology.kubernetes.io/zone
                  +                operator: In
                  +                values:
                  +                - us-east-1c
                  +              - key: scylla.scylladb.com/node-type
                  +                operator: In
                  +                values:
                  +                - scylla
                  +        tolerations:
                  +        - key: role
                  +          operator: Equal
                  +          value: scylla-clusters
                  +          effect: NoSchedule
                  +
                  +
                  +

                  Apply the manifest:

                  +
                  kubectl --context="${CONTEXT_DC1}" apply --server-side -f=dc1.yaml
                  +
                  +
                  +

                  Wait for the cluster to be fully rolled out:

                  +
                  kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
                  +
                  +
                  +
                  scyllacluster.scylla.scylladb.com/scylla-cluster condition met
                  +
                  +
                  +
                  kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
                  +
                  +
                  +
                  scyllacluster.scylla.scylladb.com/scylla-cluster condition met
                  +
                  +
                  +
                  kubectl --context="${CONTEXT_DC1}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster
                  +
                  +
                  +
                  scyllacluster.scylla.scylladb.com/scylla-cluster condition met
                  +
                  +
                  +

                  You can now verify that all the nodes of your cluster are in UN state:

                  +
                  kubectl --context="${CONTEXT_DC1}" -n=scylla exec -it pod/scylla-cluster-us-east-1-a-0 -c=scylla -- nodetool status
                  +
                  +
                  +

                  The expected output should look similar to the below:

                  +
                  Datacenter: us-east-1
                  +=====================
                  +Status=Up/Down
                  +|/ State=Normal/Leaving/Joining/Moving
                  +--  Address      Load       Tokens       Owns    Host ID                               Rack
                  +UN  10.0.70.195  290 KB     256          ?       494277b9-121c-4af9-bd63-3d0a7b9305f7  c
                  +UN  10.0.59.24   559 KB     256          ?       a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37  b
                  +UN  10.0.19.237  107 KB     256          ?       64b6292a-327f-4128-852a-6004039f402e  a
                  +
                  +
                  +
                  +
                  Retrieve PodIPs of ScyllaDB nodes for use as external seeds
                  +
                  +

                  Warning

                  +

                  Due to the ephemeral nature of PodIPs, it is ill-advised to use them as seeds in production environments. +This is because there is a high likelihood that the Pods of your ScyllaDB clusters will change their IPs during the cluster’s lifecycle, and so the provided seeds will no longer point to the ScyllaDB nodes. +It is undesired, as the seeds provided on node’s startup may serve as fallback contact points when all of the node’s peers are unreachable. +In production environments, it is recommended that you use domain names or non-ephemeral IP addresses as external seeds. +PodIPs are being used in this example for the sheer simplicity of this setup.

                  +
                  +

                  Use the below commands and their expected outputs as a reference for retrieving the PodIPs used by the cluster for inter-node communication.

                  +
                  kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-a-0 --template='{{ .status.podIP }}'
                  +
                  +
                  +
                  10.0.19.237
                  +
                  +
                  +
                  kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-b-0 --template='{{ .status.podIP }}'
                  +
                  +
                  +
                  10.0.59.24
                  +
                  +
                  +
                  kubectl --context="${CONTEXT_DC1}" -n=scylla get pod/scylla-cluster-us-east-1-c-0 --template='{{ .status.podIP }}'
                  +
                  +
                  +
                  10.0.70.195
                  +
                  +
                  +

                  You are going to utilize the retrieved addresses as seeds for the other datacenter.

                  +
                  +
                  +
                  +

                  Deploy the second datacenter

                  +

                  To deploy the second datacenter, you will follow similar steps.

                  +

                  First, create a dedicated ‘scylla’ namespace:

                  +
                  kubectl --context="${CONTEXT_DC2}" create ns scylla
                  +
                  +
                  +

                  Replace the values in .spec.externalSeeds of the below manifest with the Pod IP addresses that you retrieved earlier. +The provided values are going to serve as initial contact points for the joining nodes of the second datacenter.

                  +

                  For this guide, let’s assume that the second cluster is running in us-east-2 region and the nodes dedicated for running ScyllaDB nodes are running in zones us-east-2a, us-east-2b and us-east-2c correspondingly. If that is not the case, adjust the manifest accordingly. +Having configured it, save the manifest as dc2.yaml:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +metadata:
                  +  name: scylla-cluster
                  +  namespace: scylla
                  +spec:
                  +  agentVersion: 3.3.0
                  +  version: 6.1.1
                  +  cpuset: true
                  +  sysctls:
                  +  - "fs.aio-max-nr=2097152"
                  +  automaticOrphanedNodeCleanup: true
                  +  exposeOptions:
                  +    broadcastOptions:
                  +      clients:
                  +        type: PodIP
                  +      nodes:
                  +        type: PodIP
                  +    nodeService:
                  +      type: Headless
                  +  externalSeeds:
                  +  - 10.0.19.237
                  +  - 10.0.59.24
                  +  - 10.0.70.195
                  +  datacenter:
                  +    name: us-east-2
                  +    racks:
                  +    - name: a
                  +      members: 1
                  +      storage:
                  +        storageClassName: scylladb-local-xfs
                  +        capacity: 1800G
                  +      agentResources:
                  +        requests:
                  +          cpu: 100m
                  +          memory: 250M
                  +        limits:
                  +          cpu: 100m
                  +          memory: 250M
                  +      resources:
                  +        requests:
                  +          cpu: 7
                  +          memory: 56G
                  +        limits:
                  +          cpu: 7
                  +          memory: 56G
                  +      placement:
                  +        podAntiAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +          - topologyKey: kubernetes.io/hostname
                  +            labelSelector:
                  +              matchLabels:
                  +                app.kubernetes.io/name: scylla
                  +                scylla/cluster: scylla-cluster
                  +        nodeAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +            nodeSelectorTerms:
                  +            - matchExpressions:
                  +              - key: topology.kubernetes.io/zone
                  +                operator: In
                  +                values:
                  +                - us-east-2a
                  +              - key: scylla.scylladb.com/node-type
                  +                operator: In
                  +                values:
                  +                - scylla
                  +        tolerations:
                  +        - key: role
                  +          operator: Equal
                  +          value: scylla-clusters
                  +          effect: NoSchedule
                  +    - name: b
                  +      members: 1
                  +      storage:
                  +        storageClassName: scylladb-local-xfs
                  +        capacity: 1800G
                  +      agentResources:
                  +        requests:
                  +          cpu: 100m
                  +          memory: 250M
                  +        limits:
                  +          cpu: 100m
                  +          memory: 250M
                  +      resources:
                  +        requests:
                  +          cpu: 7
                  +          memory: 56G
                  +        limits:
                  +          cpu: 7
                  +          memory: 56G
                  +      placement:
                  +        podAntiAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +          - topologyKey: kubernetes.io/hostname
                  +            labelSelector:
                  +              matchLabels:
                  +                app.kubernetes.io/name: scylla
                  +                scylla/cluster: scylla-cluster
                  +        nodeAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +            nodeSelectorTerms:
                  +            - matchExpressions:
                  +              - key: topology.kubernetes.io/zone
                  +                operator: In
                  +                values:
                  +                - us-east-2b
                  +              - key: scylla.scylladb.com/node-type
                  +                operator: In
                  +                values:
                  +                - scylla
                  +        tolerations:
                  +        - key: role
                  +          operator: Equal
                  +          value: scylla-clusters
                  +          effect: NoSchedule
                  +    - name: c
                  +      members: 1
                  +      storage:
                  +        storageClassName: scylladb-local-xfs
                  +        capacity: 1800G
                  +      agentResources:
                  +        requests:
                  +          cpu: 100m
                  +          memory: 250M
                  +        limits:
                  +          cpu: 100m
                  +          memory: 250M
                  +      resources:
                  +        requests:
                  +          cpu: 7
                  +          memory: 56G
                  +        limits:
                  +          cpu: 7
                  +          memory: 56G
                  +      placement:
                  +        podAntiAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +          - topologyKey: kubernetes.io/hostname
                  +            labelSelector:
                  +              matchLabels:
                  +                app.kubernetes.io/name: scylla
                  +                scylla/cluster: scylla-cluster
                  +        nodeAffinity:
                  +          requiredDuringSchedulingIgnoredDuringExecution:
                  +            nodeSelectorTerms:
                  +            - matchExpressions:
                  +              - key: topology.kubernetes.io/zone
                  +                operator: In
                  +                values:
                  +                - us-east-2c
                  +              - key: scylla.scylladb.com/node-type
                  +                operator: In
                  +                values:
                  +                - scylla
                  +        tolerations:
                  +        - key: role
                  +          operator: Equal
                  +          value: scylla-clusters
                  +          effect: NoSchedule
                  +
                  +
                  +

                  To apply the manifest, run:

                  +
                  kubectl --context="${CONTEXT_DC2}" -n=scylla apply --server-side -f=dc2.yaml
                  +
                  +
                  +

                  Wait for the second datacenter to roll out:

                  +
                  kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
                  +
                  +
                  +
                  scyllacluster.scylla.scylladb.com/scylla-cluster condition met
                  +
                  +
                  +
                  kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-cluster
                  +
                  +
                  +
                  scyllacluster.scylla.scylladb.com/scylla-cluster condition met
                  +
                  +
                  +
                  kubectl --context="${CONTEXT_DC2}" -n=scylla wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-cluster
                  +
                  +
                  +
                  scyllacluster.scylla.scylladb.com/scylla-cluster condition met
                  +
                  +
                  +

                  You can verify that the nodes have joined the existing cluster and that you are now running a multi-datacenter ScyllaDB cluster by running nodetool status with the below command:

                  +
                  kubectl --context="${CONTEXT_DC2}" -n=scylla exec -it pod/scylla-cluster-us-east-2-a-0 -c=scylla -- nodetool status
                  +
                  +
                  +
                  Datacenter: us-east-1
                  +=====================
                  +Status=Up/Down
                  +|/ State=Normal/Leaving/Joining/Moving
                  +--  Address        Load       Tokens       Owns    Host ID                               Rack
                  +UN  10.0.70.195    705 KB     256          ?       494277b9-121c-4af9-bd63-3d0a7b9305f7  c
                  +UN  10.0.59.24     764 KB     256          ?       a3a98e08-0dfd-4a25-a96a-c5ab2f47eb37  b
                  +UN  10.0.19.237    634 KB     256          ?       64b6292a-327f-4128-852a-6004039f402e  a
                  +Datacenter: us-east-2
                  +=====================
                  +Status=Up/Down
                  +|/ State=Normal/Leaving/Joining/Moving
                  +--  Address        Load       Tokens       Owns    Host ID                               Rack
                  +UN  172.16.39.209  336 KB     256          ?       7c30ea55-7a4f-4d93-86f7-c881772ebe62  b
                  +UN  172.16.25.18   759 KB     256          ?       665dde7e-e420-4db3-8c54-ca71efd39b2e  a
                  +UN  172.16.87.27   503 KB     256          ?       c19c89cb-e24c-4062-9df4-2aa90ab29a99  c
                  +
                  +
                  +
                  +
                  +
                  +
                  +

                  Scylla Manager

                  +

                  To integrate a multi-datacenter ScyllaDB cluster with Scylla Manager, you must deploy the Scylla Manager in only one datacenter.

                  +

                  In this example, let’s choose the Kubernetes cluster deployed in the first datacenter to host it. +To deploy Scylla Manager, follow the steps described in Deploying Scylla Manager on a Kubernetes Cluster +in ScyllaDB Operator documentation.

                  +

                  In order to define the Scylla Manager tasks, add them to the ScyllaCluster object deployed in the same Kubernetes cluster +in which your Scylla Manager is running.

                  +

                  Every datacenter (represented by ScyllaCluster CR) is, by default, provisioned with a new, random Scylla Manager Agent auth token. +To use Scylla Manager with multiple datacenter (represented by ScyllaClusters), you have to make sure they all use the same token.

                  +

                  Extract it from the first datacenter with the below command:

                  +
                  kubectl --context="${CONTEXT_DC1}" -n=scylla get secrets/scylla-cluster-auth-token --template='{{ index .data "auth-token.yaml" }}' | base64 -d
                  +
                  +
                  +
                  auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf
                  +
                  +
                  +

                  Save the output, replace the token with your own, and patch the secret in the second datacenter with the below command:

                  +
                  kubectl --context="${CONTEXT_DC2}" -n=scylla patch secret/scylla-cluster-auth-token--type='json' -p='[{"op": "add", "path": "/stringData", "value": {"auth-token.yaml": "auth_token: 84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf"}}]'
                  +
                  +
                  +

                  Execute a rolling restart of the nodes in DC2 to make sure they pick up the new token:

                  +
                  kubectl --context="${CONTEXT_DC2}" -n=scylla patch scyllacluster/scylla-cluster --type='merge' -p='{"spec": {"forceRedeploymentReason": "sync scylla-manager-agent token ('"$( date )"')"}}'
                  +
                  +
                  +
                  +
                  +

                  ScyllaDBMonitoring

                  +

                  To monitor your cluster, deploy ScyllaDBMonitoring in every datacenter independently. +To deploy ScyllaDB Monitoring, follow the steps described in Deploy managed monitoring in ScyllaDB Operator documentation.

                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/nodeoperations/automatic-cleanup.html b/v1.14/nodeoperations/automatic-cleanup.html new file mode 100644 index 00000000000..418c6a81be1 --- /dev/null +++ b/v1.14/nodeoperations/automatic-cleanup.html @@ -0,0 +1,598 @@ + + + + + + + + + + + + + Automatic cleanup and replacement in case when k8s node is lost | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Automatic cleanup and replacement in case when k8s node is lost

                  +

                  In case when your k8s cluster loses one of the nodes due to incident or explicit removal, Scylla Pods may become unschedulable due to PVC node affinity.

                  +

                  When automaticOrphanedNodeCleanup flag is enabled in your ScyllaCluster, Scylla Operator will perform automatic +node replacement of a Pod which lost his bound resources.

                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/nodeoperations/index.html b/v1.14/nodeoperations/index.html new file mode 100644 index 00000000000..ade4a3f919d --- /dev/null +++ b/v1.14/nodeoperations/index.html @@ -0,0 +1,597 @@ + + + + + + + + + + + + + Node operations using Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Node operations using Scylla Operator

                  + +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/nodeoperations/maintenance-mode.html b/v1.14/nodeoperations/maintenance-mode.html new file mode 100644 index 00000000000..dd6762c990b --- /dev/null +++ b/v1.14/nodeoperations/maintenance-mode.html @@ -0,0 +1,607 @@ + + + + + + + + + + + + + Maintenance mode | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + + + +
                  +

                  Maintenance mode

                  +

                  When maintenance mode is enabled, readiness probe of Scylla Pod will always return failure and liveness probe will always succeed. This causes that Pod under maintenance +is being removed from K8s Load Balancer and DNS registry but Pod itself stays alive.

                  +

                  This allows the Scylla Operator to interact with Scylla and Scylla dependencies inside the Pod. +For example user may turn off Scylla process, do something with the filesystem and bring the process back again.

                  +

                  To enable maintenance mode add scylla/node-maintenance label to service in front of Scylla Pod.

                  +
                  kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance=""
                  +
                  +
                  +

                  To disable, simply remove this label from service.

                  +
                  kubectl -n scylla label svc simple-cluster-us-east1-b-us-east1-2 scylla/node-maintenance-
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/nodeoperations/replace-node.html b/v1.14/nodeoperations/replace-node.html new file mode 100644 index 00000000000..d7dc1be297c --- /dev/null +++ b/v1.14/nodeoperations/replace-node.html @@ -0,0 +1,681 @@ + + + + + + + + + + + + + Replacing a Scylla node | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + + + +
                  +

                  Replacing a Scylla node

                  +
                  +

                  Replacing a dead node

                  +

                  In the case of a host failure, it may not be possible to bring back the node to life.

                  +

                  Replace dead node operation will cause the other nodes in the cluster to stream data to the node that was replaced. +This operation can take some time (depending on the data size and network bandwidth).

                  +

                  This procedure is for replacing one dead node. To replace more than one dead node, run the full procedure to completion one node at a time

                  +

                  Procedure

                  +
                    +
                  1. Verify the status of the node using nodetool status command, the node with status DN is down and need to be replaced

                    +
                    kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status
                    +Datacenter: us-east-1
                    +=====================
                    +Status=Up/Down
                    +|/ State=Normal/Leaving/Joining/Moving
                    +--  Address        Load       Tokens       Owns    Host ID                               Rack
                    +UN  10.43.125.110  74.63 KB   256          ?       8ebd6114-969c-44af-a978-87a4a6c65c3e  us-east-1a
                    +UN  10.43.231.189  91.03 KB   256          ?       35d0cb19-35ef-482b-92a4-b63eee4527e5  us-east-1a
                    +DN  10.43.43.51    74.77 KB   256          ?       1ffa7a82-c41c-4706-8f5f-4d45a39c7003  us-east-1a
                    +
                    +
                    +
                  2. +
                  3. Identify service which is bound to down node by checking IP address

                    +
                    kubectl -n scylla get svc
                    +NAME                                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                           AGE
                    +simple-cluster-client                   ClusterIP   None            <none>        9180/TCP                                                          3h12m
                    +simple-cluster-us-east-1-us-east-1a-0   ClusterIP   10.43.231.189   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h12m
                    +simple-cluster-us-east-1-us-east-1a-1   ClusterIP   10.43.125.110   <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h11m
                    +simple-cluster-us-east-1-us-east-1a-2   ClusterIP   10.43.43.51     <none>        7000/TCP,7001/TCP,7199/TCP,10001/TCP,9042/TCP,9142/TCP,9160/TCP   3h5m
                    +
                    +
                    +
                  4. +
                  5. Drain node which we would like to replace using. This command may delete your data from local disks attached to given node!

                    +
                    kubectl drain gke-scylla-demo-default-pool-b4b390a1-6j12 --ignore-daemonsets --delete-local-data
                    +
                    +
                    +

                    Pod which will be replaced should enter the Pending state

                    +
                    kubectl -n scylla get pods
                    +NAME                                    READY   STATUS    RESTARTS   AGE
                    +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          3h21m
                    +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          3h19m
                    +simple-cluster-us-east-1-us-east-1a-2   0/2     Pending   0          8m14s
                    +
                    +
                    +
                  6. +
                  7. To being node replacing, add scylla/replace="" label to service bound to pod we are replacing.

                    +
                    kubectl -n scylla label svc simple-cluster-us-east-1-us-east-1a-2 scylla/replace=""
                    +
                    +
                    +

                    Your failed Pod should be recreated on available k8s node

                    +
                    kubectl -n scylla get pods
                    +NAME                                    READY   STATUS    RESTARTS   AGE
                    +simple-cluster-us-east-1-us-east-1a-0   2/2     Running   0          3h27m
                    +simple-cluster-us-east-1-us-east-1a-1   2/2     Running   0          3h25m
                    +simple-cluster-us-east-1-us-east-1a-2   1/2     Running   0          9s
                    +
                    +
                    +

                    Because other nodes in cluster must stream data to new node this operation might take some time depending on how much data your cluster stores. +After bootstraping is over, your new Pod should be ready to go. +Old one shouldn’t be no longer visible in nodetool status

                    +
                    kubectl -n scylla exec -ti simple-cluster-us-east-1-us-east-1a-0 -c scylla -- nodetool status
                    +Datacenter: us-east-1
                    +=====================
                    +Status=Up/Down
                    +|/ State=Normal/Leaving/Joining/Moving
                    +--  Address        Load       Tokens       Owns    Host ID                               Rack
                    +UN  10.43.125.110  74.62 KB   256          ?       8ebd6114-969c-44af-a978-87a4a6c65c3e  us-east-1a
                    +UN  10.43.231.189  91.03 KB   256          ?       35d0cb19-35ef-482b-92a4-b63eee4527e5  us-east-1a
                    +UN  10.43.191.172  74.77 KB   256          ?       1ffa7a82-c41c-4706-8f5f-4d45a39c7003  us-east-1a
                    +
                    +
                    +
                  8. +
                  9. Run the repair on the cluster to make sure that the data is synced with the other nodes in the cluster. +You can use Scylla Manager to run the repair.

                  10. +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/nodeoperations/restore.html b/v1.14/nodeoperations/restore.html new file mode 100644 index 00000000000..526d5a3c331 --- /dev/null +++ b/v1.14/nodeoperations/restore.html @@ -0,0 +1,832 @@ + + + + + + + + + + + + + Restore from backup | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + + + +
                  +

                  Restore from backup

                  +

                  This procedure will describe how to restore from backup taken using Scylla Manager to a fresh empty cluster of any size.

                  +
                  +

                  Warning

                  +

                  Restoring schema with ScyllaDB OS 5.4.X or ScyllaDB Enterprise 2024.1.X and consistent_cluster_management isn’t supported.

                  +

                  When creating the target ScyllaDB cluster, configure it with consistent_cluster_management: false. +Refer to API Reference to learn how to customize ScyllaDB configuration files.

                  +

                  When following the steps for schema restore, ensure you follow the additional steps dedicated to affected ScyllaDB versions.

                  +
                  +

                  In the following example, the ScyllaCluster, which was used to take the backup, is called source. Backup will be restored into the ScyllaCluster named target.

                  +
                  + +
                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +metadata:
                  +  name: source
                  +spec:
                  +  agentVersion: 3.3.0
                  +  version: 6.1.1
                  +  developerMode: true
                  +  backups:
                  +  - name: foo
                  +    location:
                  +    - s3:source-backup
                  +    keyspace:
                  +    - '*'
                  +  datacenter:
                  +    name: us-east-1
                  +    racks:
                  +    - name: us-east-1a
                  +      members: 1
                  +      storage:
                  +        capacity: 1Gi
                  +      resources:
                  +        limits:
                  +          cpu: 1
                  +          memory: 1Gi
                  +
                  +
                  +
                  + +
                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +metadata:
                  +  name: target
                  +spec:
                  +  agentVersion: 3.3.0
                  +  version: 6.1.1
                  +  developerMode: true
                  +  datacenter:
                  +    name: us-east-1
                  +    racks:
                  +    - name: us-east-1a
                  +      members: 1
                  +      storage:
                  +        capacity: 1Gi
                  +      resources:
                  +        limits:
                  +          cpu: 1
                  +          memory: 1Gi
                  +
                  +
                  +
                  +
                  +

                  Make sure your target cluster is already registered in Scylla Manager. To get a list of all registered clusters, execute the following command:

                  +
                  $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool cluster list
                  ++--------------------------------------+---------------------------------------+---------+-----------------+
                  +| ID                                   | Name                                  | Port    | CQL credentials |
                  ++--------------------------------------+---------------------------------------+---------+-----------------+
                  +| af1dd5cd-0406-4974-949f-dc9842980080 | scylla/target                        | default | set             |
                  +| ebd82268-efb7-407e-a540-3619ae053778 | scylla/source                        | default | set             |
                  ++--------------------------------------+---------------------------------------+---------+-----------------+
                  +
                  +
                  +

                  Identify the tag of a snapshot which you want to restore. To get a list of all available snapshots, execute following command:

                  +
                  kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c <CLUSTER_ID> --all-clusters -L <BACKUP_LOCATION>
                  +
                  +
                  +

                  Where:

                  +
                    +
                  • CLUSTER_ID - the name or ID of a registered cluster with access to BACKUP_LOCATION.

                  • +
                  • BACKUP_LOCATION - the location in which the backup is stored.

                  • +
                  +

                  In this example, BACKUP_LOCATION is s3:source-backup. Use the name of cluster which has access to the backup location for CLUSTER_ID. +In this example, it’s scylla/target.

                  +
                  $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool backup list -c scylla/target --all-clusters -L s3:source-backup
                  +backup/ff36d7e0-af2e-458c-afe6-868e0f3396b2
                  +Snapshots:
                  +  - sm_20240105115931UTC (409MiB, 1 nodes)
                  +Keyspaces:
                  +  - system_schema (15 tables)
                  +  - users (9 tables)
                  +
                  +
                  +
                  +

                  Restore schema

                  +

                  In the below commands, we are restoring the sm_20240105115931UTC snapshot. Replace it with a tag of a snapshot that you want to restore. +Restoring consist of two steps. First, you’ll restore the schema, and then the data. +To restore schema, create a restore task manually on target ScyllaCluster by executing following command:

                  +
                  kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager --  sctool restore -c <CLUSTER_ID> -L <BACKUP_LOCATION> -T <SNAPSHOT_TAG> --restore-schema
                  +
                  +
                  +

                  Where:

                  +
                    +
                  • CLUSTER_ID - a name or ID of a cluster you want to restore into.

                  • +
                  • BACKUP_LOCATION - the location in which the backup is stored.

                  • +
                  • SNAPSHOT_TAG - a tag of a snapshot that you want to restore.

                  • +
                  +

                  When the task is created, the command will output the ID of a restore task.

                  +
                  $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-schema
                  +restore/57228c52-7cf6-4271-8c8d-d446ff160747
                  +
                  +
                  +

                  Use the following command to check progress of the restore task:

                  +
                  $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/57228c52-7cf6-4271-8c8d-d446ff160747
                  +Restore progress
                  +Run:            0dd20cdf-abc4-11ee-951c-6e7993cf42ed
                  +Status:         DONE - restart required (see restore docs)
                  +Start time:     05 Jan 24 12:15:02 UTC
                  +End time:       05 Jan 24 12:15:09 UTC
                  +Duration:       6s
                  +Progress:       100% | 100%
                  +Snapshot Tag:   sm_20240105115931UTC
                  +
                  ++---------------+-------------+----------+----------+------------+--------+
                  +| Keyspace      |    Progress |     Size |  Success | Downloaded | Failed |
                  ++---------------+-------------+----------+----------+------------+--------+
                  +| system_schema | 100% | 100% | 214.150k | 214.150k |   214.150k |      0 |
                  ++---------------+-------------+----------+----------+------------+--------+
                  +
                  +
                  +

                  As suggested in the progress output, you will need to execute a rolling restart of the ScyllaCluster.

                  +
                  kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "schema restored"}}'
                  +
                  +
                  +

                  Use the following commands to wait until restart is finished:

                  +
                  $ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target
                  +scyllacluster.scylla.scylladb.com/target condition met
                  +
                  +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target
                  +scyllacluster.scylla.scylladb.com/target condition met
                  +
                  +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target
                  +scyllacluster.scylla.scylladb.com/target condition met
                  +
                  +
                  +
                  +

                  Caution

                  +

                  Restoring schema with ScyllaDB OS 5.4.X or ScyllaDB Enterprise 2024.1.X and consistent_cluster_management

                  +

                  After you’ve followed the above steps with a ScyllaDB target cluster with consistent_cluster_management disabled, you’ll need to enable Raft by configuring the target cluster with consistent_cluster_management: true. +Refer to API Reference to learn how to customize ScyllaDB configuration files.

                  +

                  You will then need to execute a rolling restart of the ScyllaCluster for the change to take effect.

                  +
                  kubectl patch scyllacluster/target --type=merge -p='{"spec": {"forceRedeploymentReason": "raft enabled"}}'
                  +
                  +
                  +

                  Use the following commands to wait until restart is finished:

                  +
                  $ kubectl wait --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/target
                  +scyllacluster.scylla.scylladb.com/target condition met
                  +
                  +$ kubectl wait --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/target
                  +scyllacluster.scylla.scylladb.com/target condition met
                  +
                  +$ kubectl wait --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/target
                  +scyllacluster.scylla.scylladb.com/target condition met
                  +
                  +
                  +
                  +
                  +
                  +

                  Restore tables

                  +

                  To restore the tables content, create a restore task manually on target ScyllaCluster by executing the following command:

                  +
                  kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c <CLUSTER_ID> -L <BACKUP_LOCATION> -T <SNAPSHOT_TAG> --restore-tables
                  +
                  +
                  +

                  Where:

                  +
                    +
                  • CLUSTER_ID - a name or ID of a cluster you want to restore into.

                  • +
                  • BACKUP_LOCATION - the location in which the backup is stored.

                  • +
                  • SNAPSHOT_TAG - a tag of a snapshot that you want to restore.

                  • +
                  +

                  When the task is created, the command will output the ID of a restore task.

                  +
                  $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool restore -c scylla/target -L s3:source-backup -T sm_20240105115931UTC --restore-tables
                  +restore/63642069-bed5-4def-ba0f-68c49e47ace1
                  +
                  +
                  +

                  Use the following command to check progress of the restore task:

                  +
                  $ kubectl -n scylla-manager exec -ti deployment.apps/scylla-manager -- sctool progress -c scylla/target restore/63642069-bed5-4def-ba0f-68c49e47ace1
                  +Restore progress
                  +Run:            ab015cef-abc8-11ee-9521-6e7993cf42ed
                  +Status:         DONE
                  +Start time:     05 Jan 24 12:48:04 UTC
                  +End time:       05 Jan 24 12:48:15 UTC
                  +Duration:       11s
                  +Progress:       100% | 100%
                  +Snapshot Tag:   sm_20240105115931UTC
                  +
                  ++-------------+-------------+--------+---------+------------+--------+
                  +| Keyspace    |    Progress |   Size | Success | Downloaded | Failed |
                  ++-------------+-------------+--------+---------+------------+--------+
                  +| users       | 100% | 100% | 409MiB |  409MiB |     409MiB |      0 |
                  ++-------------+-------------+--------+---------+------------+--------+
                  +
                  +Post-restore repair progress
                  +Run:            ab015cef-abc8-11ee-9521-6e7993cf42ed
                  +Status:         DONE
                  +Start time:     05 Jan 24 12:48:04 UTC
                  +End time:       05 Jan 24 12:48:15 UTC
                  +Duration:       11s
                  +Progress:       100%
                  +Intensity:      1
                  +Parallel:       0
                  +Datacenters:
                  +  - us-east-1
                  +
                  ++-------------+--------------+----------+----------+
                  +| Keyspace    |        Table | Progress | Duration |
                  ++-------------+--------------+----------+----------+
                  +| users       | users        | 100%     | 0s       |
                  ++-------------+--------------+----------+----------+
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/nodeoperations/scylla-upgrade.html b/v1.14/nodeoperations/scylla-upgrade.html new file mode 100644 index 00000000000..b9e8b3d8c2f --- /dev/null +++ b/v1.14/nodeoperations/scylla-upgrade.html @@ -0,0 +1,680 @@ + + + + + + + + + + + + + Upgrading version of Scylla | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Upgrading version of Scylla

                  +

                  To upgrade Scylla version using Operator user have to modify existing ScyllaCluster definition.

                  +

                  In this example cluster will be upgraded to version 4.4.5.

                  +
                  kubectl -n scylla patch ScyllaCluster simple-cluster  -p '{"spec":{"version": "4.4.5"}}' --type=merge
                  +
                  +
                  +

                  Operator supports two types of version upgrades:

                  +
                    +
                  1. Patch upgrade

                  2. +
                  3. Generic upgrade

                  4. +
                  +

                  Patch upgrade

                  +

                  Patch upgrade is executed when only patch version change is detected according to semantic versioning format. +Procedure simply rolls out a restart of whole cluster and upgrades Scylla container image for each node one by one.

                  +

                  Example: 4.0.0 -> 4.0.1

                  +

                  Generic upgrade

                  +

                  Generic upgrades are executed for the non patch version changes.

                  +

                  Example: 4.0.0 -> 2020.1.0 or 4.0.0 -> 4.1.0 or even 4.0.0 -> nightly

                  +

                  User can observe current state of upgrade in ScyllaCluster status.

                  +
                  kubectl -n scylla describe ScyllaCluster simple-cluster
                  +[...]
                  +Status:
                  +  Racks:
                  +    us-east-1a:
                  +      Members:        3
                  +      Ready Members:  3
                  +      Version:        4.1.9
                  +  Upgrade:
                  +    Current Node:         simple-cluster-us-east-1-us-east-1a-2
                  +    Current Rack:         us-east-1a
                  +    Data Snapshot Tag:    so_data_20201228135002UTC
                  +    From Version:         4.1.9
                  +    State:                validate_upgrade
                  +    System Snapshot Tag:  so_system_20201228135002UTC
                  +    To Version:           4.2.2
                  +
                  +
                  +

                  Each upgrade begins with taking a snapshot of system and system_schema keyspaces on all nodes in parallel. +Name of this snapshot tag is saved in upgrade status under System Snapshot Tag.

                  +

                  Before nodes in rack are upgraded, underlying StatefulSet is changed to use OnDelete UpgradeStrategy. +This allows Operator have a full control over when Pod image is changed.

                  +

                  When a node is being upgraded, maintenance mode is enabled, then the node is drained and snapshot of all data keyspaces is taken. +Snapshot tag is saved under Data Snapshot Tag and is the same for all nodes during the procedure. +Once everything is set up, maintenance mode is disabled and Scylla Pod is deleted. Underlying StatefulSet will bring up a new +Pod with upgraded version. +Once Pod will become ready, data snapshot from this particular node is removed, and Operator moves to next node.

                  +

                  Once every rack is upgraded, system snapshot is removed from all nodes in parallel and previous StatefulSet UpgradeStrategy is restored. +At this point, all your nodes should be already in desired version.

                  +

                  Current state of upgrade can be traced using Current Node, Current Rack and State status fields.

                  +
                    +
                  • Current Node shows which node is being upgraded.

                  • +
                  • Current Rack displays which rack is being upgraded.

                  • +
                  • State contain information at which stage upgrade is.

                  • +
                  +

                  State can have following values:

                  +
                    +
                  • begin_upgrade - upgrade is starting

                  • +
                  • check_schema_agreement - Operator waits until all nodes reach schema agreement. It waits for it for 1 minute, prints an error log message and check is retried.

                  • +
                  • create_system_backup - system keyspaces snapshot is being taken

                  • +
                  • find_next_rack - Operator finds out which rack must be upgraded next, decision is saved in Current Rack

                  • +
                  • upgrade_image_in_pod_spec - Image and UpgradeStrategy is upgraded in underlying StatefulSet

                  • +
                  • find_next_node - Operator finds out which node must be upgraded next, decision is saved in Current Node

                  • +
                  • enable_maintenance_mode - maintenance mode is being enabled

                  • +
                  • drain_node - node is being drained

                  • +
                  • backup_data - snapshot of data keyspaces is being taken

                  • +
                  • disable_maintenance_mode - maintenance mode is being disabled

                  • +
                  • delete_pod - Scylla Pod is being deleted

                  • +
                  • validate_upgrade - Operator validates if new pod enters Ready state and if Scylla version is upgraded

                  • +
                  • clear_data_backup - snapshot of data keyspaces is being removed

                  • +
                  • clear_system_backup - snapshot of system keyspaces is being removed

                  • +
                  • restore_upgrade_strategy - restore UpgradeStrategy in underlying StatefulSet

                  • +
                  • finish_upgrade - upgrade cleanup

                  • +
                  +

                  Recovering from upgrade failure

                  +

                  Upgrade may get stuck on validate_upgrade stage. This happens when Scylla Pod refuses to properly boot up.

                  +

                  To continue with upgrade, first turn off operator by scaling Operator replicas to zero:

                  +
                  kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=0
                  +
                  +
                  +

                  Then user have to manually resolve issue with Scylla by checking what is the root cause of a failure in Scylla container logs. +If needed data and system keyspaces SSTable snapshots are available on the node. You can check ScyllaCluster status for their names.

                  +

                  Once issue is resolved and Scylla Pod is up and running (Pod is in Ready state), scale Operator back to two replicas:

                  +
                  kubectl -n scylla-operator scale deployment.apps/scylla-operator --replicas=2
                  +
                  +
                  +

                  Operator should continue upgrade process from where it left off.

                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/objects.inv b/v1.14/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..383fdb04d9e293c5e782ea725a0a39b715c1422c GIT binary patch literal 6766 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 QXrCMue<*eSAE3w3KrTJ+00000 literal 0 HcmV?d00001 diff --git a/v1.14/performance.html b/v1.14/performance.html new file mode 100644 index 00000000000..150786ce600 --- /dev/null +++ b/v1.14/performance.html @@ -0,0 +1,689 @@ + + + + + + + + + + + + + Performance tuning | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Performance tuning

                  +

                  Scylla Operator 1.6 introduces a new experimental feature allowing users to optimize Kubernetes nodes.

                  +
                  +

                  Warning

                  +

                  We recommend that you first try out the performance tuning on a pre-production instance. +Given the nature of the underlying tuning script, undoing the changes requires rebooting the Kubernetes node(s).

                  +
                  +
                  +

                  Node tuning

                  +

                  Starting from Operator 1.6, a new CRD called NodeConfig is available, allowing users to target Nodes which should be tuned. +When a Node is supposed to be optimized, the Scylla Operator creates a DaemonSet covering these Nodes. +Nodes matching the provided placement conditions will be subject to tuning.

                  +

                  Below example NodeConfig tunes nodes having scylla.scylladb.com/node-type=scylla label:

                  +
                  apiVersion: scylla.scylladb.com/v1alpha1
                  +kind: NodeConfig
                  +metadata:
                  + name: cluster
                  +spec:
                  + placement:
                  +   nodeSelector:
                  +     scylla.scylladb.com/node-type: scylla
                  +
                  +
                  +

                  For more details about new CRD use:

                  +
                  kubectl explain nodeconfigs.scylla.scylladb.com/v1alpha1
                  +
                  +
                  +

                  For all optimizations we use a Python script available in the Scylla image called perftune. +Perftune executes the performance optmizations like tuning the kernel, network, disk devices, spreading IRQs across CPUs and more.

                  +

                  Tuning consists of two separate optimizations: common node tuning, and tuning based on Scylla Pods and their resource assignment. +Node tuning is executed immediately. Pod tuning is executed when Scylla Pod lands on the same Node.

                  +

                  Scylla works most efficently when it’s pinned to CPU and not interrupted. +One of the most common causes of context-switching are network interrupts. Packets coming to a node need to be processed, +and this requires CPU shares.

                  +

                  On K8s we always have at least a couple of processes running on the node: kubelet, kubernetes provider applications, daemons etc. +These processes require CPU shares, so we cannot dedicate entire node processing power to Scylla, we need to leave space for others.
                  +We take advantage of it, and we pin IRQs to CPUs not used by any Scylla Pods exclusively.

                  +

                  Tuning resources are created in a special namespace called scylla-operator-node-tuning.

                  +

                  The tuning is applied only to pods with Guaranteed QoS class. Please double check your ScyllaCluster resource specification +to see if it meets all conditions.

                  +
                  +
                  +

                  Kubernetes tuning

                  +

                  By default, the kubelet uses the CFS quota to enforce pod CPU limits.
                  +When the node runs many CPU-bound pods, the workload can move around different CPU cores depending on whether the pod +is throttled and which CPU cores are available. +However, kubelet may be configured to assign CPUs exclusively, by setting the CPU manager policy to static.

                  +

                  Setting up kubelet configuration is provider specific. Please check the docs for your distribution or talk to your +provider.

                  +

                  Only pods within the Guaranteed QoS class) can take advantage of this option. +When such pod lands on a Node, kubelet will pin them to specific CPUs, and those won’t be part of the shared pool.

                  +

                  In our case there are two requirements each ScyllaCluster must fulfill to receive a Guaranteed QoS class:

                  +
                    +
                  • resource request and limits must be equal or only limits have to be provided

                  • +
                  • agentResources must be provided and their requests and limits must be equal, or only limits have to be provided

                  • +
                  +

                  An example of such a ScyllaCluster that receives a Guaranteed QoS class is below:

                  +
                  apiVersion: scylla.scylladb.com/v1
                  +kind: ScyllaCluster
                  +metadata:
                  +  name: guaranteed-cluster
                  +  namespace: scylla
                  +spec:
                  +  agentVersion: 3.3.0
                  +  version: 6.1.1
                  +  datacenter:
                  +    name: us-east-1
                  +    racks:
                  +    - name: us-east-1a
                  +      members: 3
                  +      storage:
                  +        capacity: 500Gi
                  +      agentResources:
                  +        requests:
                  +          cpu: 1
                  +          memory: 1G
                  +        limits:
                  +          cpu: 1
                  +          memory: 1G
                  +      resources:
                  +        requests:
                  +          cpu: 4
                  +          memory: 16G
                  +        limits:
                  +          cpu: 4
                  +          memory: 16G
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/releases.html b/v1.14/releases.html new file mode 100644 index 00000000000..0008370e11b --- /dev/null +++ b/v1.14/releases.html @@ -0,0 +1,848 @@ + + + + + + + + + + + + + Releases | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Releases

                  +
                  +

                  Schedule

                  +

                  We are aiming to ship a new release approximately every 6 weeks. The following release schedule is only advisory, there are no commitments made to hitting these dates.

                  + + + + + + + + + + + + + +

                  Release

                  Code freeze

                  General availability

                  1.14

                  2024-08-14

                  2024-08-31

                  +
                  +
                  +

                  Supported releases

                  +

                  We support the latest 2 releases of the operator to give everyone time to upgrade.

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Release

                  General availability

                  Support ends

                  1.13

                  2024-06-20

                  Release of 1.15

                  1.12

                  2024-03-28

                  Release of 1.14

                  1.11

                  2023-11-09

                  2024-06-20

                  1.10

                  2023-08-25

                  2024-03-28

                  1.9

                  2023-07-04

                  2023-11-09

                  1.8

                  2023-01-25

                  2023-08-25

                  1.7

                  2022-01-27

                  2023-07-04

                  1.6

                  2021-12-03

                  2023-01-25

                  1.5

                  2021-09-16

                  2022-01-27

                  1.4

                  2021-08-10

                  2021-12-03

                  1.3

                  2021-06-17

                  2021-09-16

                  1.2

                  2021-05-06

                  2021-08-10

                  1.1

                  2021-03-22

                  2021-06-17

                  1.0

                  2021-01-21

                  2021-05-06

                  +
                  +

                  Backport policy

                  +

                  Usually, only important bug fixes are eligible for being backported. +This may depend on the situation and assessment of the maintainers.

                  +
                  +
                  +
                  +

                  CI/CD

                  +

                  We use GitHub actions for our CI/CD. Every merge to a supported branch, or a creation of a tag will automatically trigger a job to build, test and publish the container image and other artifacts like helm charts. Before we publish any image, it must pass the e2e suite.

                  +
                  +

                  Automated promotions

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Git reference

                  Type

                  Container image

                  master

                  branch

                  docker.io/scylladb/scylla-operator:latest

                  vX.Y

                  branch

                  docker.io/scylladb/scylla-operator:X.Y

                  vX.Y.Z

                  tag

                  docker.io/scylladb/scylla-operator:X.Y.Z

                  vX.Y.Z-alpha.N

                  tag

                  docker.io/scylladb/scylla-operator:X.Y.Z-alpha.N

                  vX.Y.Z-beta.N

                  tag

                  docker.io/scylladb/scylla-operator:X.Y.Z-beta.N

                  vX.Y.Z-rc.N

                  tag

                  docker.io/scylladb/scylla-operator:X.Y.Z-rc.N

                  +
                  +
                  +

                  Generally available

                  +

                  GA images aren’t build from scratch but rather promoted from an existing release candidates. When we decide a release candidate has the acceptable quality and QA sings it off, the release candidate is promoted to become the GA release. This makes sure the image has exactly the same content and SHA as the tested release candidate.

                  +
                  +
                  +
                  +

                  Support matrix

                  +

                  Support matrix table shows the version requirements for a particular scylla-operator version. Be sure to match these requirements, otherwise some functionality will not work.

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  Component

                  v1.13

                  v1.12

                  v1.11

                  v1.10

                  Kubernetes

                  >=1.21

                  >=1.21

                  >=1.21

                  >=1.21

                  CRI API

                  v1

                  v1

                  v1

                  v1

                  Scylla OS

                  >=5.4

                  >=5.0

                  >=5.0

                  >=5.0

                  Scylla Enterprise

                  >=2023.1

                  >=2021.1

                  >=2021.1

                  >=2021.1

                  Scylla Manager

                  >=3.2.8

                  >=3.2.6

                  >=3.2

                  >=2.6

                  Scylla Monitoring

                  (CRD)

                  (CRD)

                  (CRD)

                  >=4.0

                  +
                  +

                  Supported Kubernetes platforms

                  +

                  We officially test and recommend to use the following platforms:

                  + + + + + + + + + + + + + + +

                  Platform

                  OS Image

                  GKE

                  Ubuntu

                  EKS

                  Amazon Linux

                  +

                  While our APIs generally work on any Kubernetes conformant cluster, +performance tuning and other pieces that need to interact with the host OS, kubelet, CRI, kernel, etc. might hit some incompatibilities.

                  +
                  +

                  Warning

                  +

                  The following platforms are known not to work correctly at this time.

                  + + + + + + + + + + + + + + + + + +

                  Platform

                  OS Image

                  Details

                  GKE

                  Container OS

                  EKS

                  Bottlerocket

                  Suspected kernel/cgroups issue that breaks available memory detection for ScyllaDB

                  +
                  +
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/search.html b/v1.14/search.html new file mode 100644 index 00000000000..b0d5ef985e8 --- /dev/null +++ b/v1.14/search.html @@ -0,0 +1,575 @@ + + + + + + + + + + + + + Search | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + + + +
                  + + + + + +
                  + + +
                  + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/searchindex.js b/v1.14/searchindex.js new file mode 100644 index 00000000000..608a5fca5f2 --- /dev/null +++ b/v1.14/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {".metadata": [[1, "metadata"], [2, "metadata"], [3, "metadata"], [4, "metadata"]], ".spec": [[1, "spec"], [2, "spec"], [3, "spec"], [4, "spec"]], ".spec.alternator": [[2, "spec-alternator"]], ".spec.alternator.servingCertificate": [[2, "spec-alternator-servingcertificate"]], ".spec.alternator.servingCertificate.operatorManagedOptions": [[2, "spec-alternator-servingcertificate-operatormanagedoptions"]], ".spec.alternator.servingCertificate.userManagedOptions": [[2, "spec-alternator-servingcertificate-usermanagedoptions"]], ".spec.backups[]": [[2, "spec-backups"]], ".spec.components": [[3, "spec-components"]], ".spec.components.grafana": [[3, "spec-components-grafana"]], ".spec.components.grafana.authentication": [[3, "spec-components-grafana-authentication"]], ".spec.components.grafana.exposeOptions": [[3, "spec-components-grafana-exposeoptions"]], ".spec.components.grafana.exposeOptions.webInterface": [[3, "spec-components-grafana-exposeoptions-webinterface"]], ".spec.components.grafana.exposeOptions.webInterface.ingress": [[3, "spec-components-grafana-exposeoptions-webinterface-ingress"]], ".spec.components.grafana.exposeOptions.webInterface.ingress.annotations": [[3, "spec-components-grafana-exposeoptions-webinterface-ingress-annotations"]], ".spec.components.grafana.placement": [[3, "spec-components-grafana-placement"]], ".spec.components.grafana.placement.nodeAffinity": [[3, "spec-components-grafana-placement-nodeaffinity"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.components.grafana.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[3, "spec-components-grafana-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.components.grafana.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[3, "spec-components-grafana-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.components.grafana.placement.podAffinity": [[3, "spec-components-grafana-placement-podaffinity"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity": [[3, "spec-components-grafana-placement-podantiaffinity"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.grafana.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-grafana-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.grafana.placement.tolerations[]": [[3, "spec-components-grafana-placement-tolerations"]], ".spec.components.grafana.resources": [[3, "spec-components-grafana-resources"]], ".spec.components.grafana.resources.claims[]": [[3, "spec-components-grafana-resources-claims"]], ".spec.components.grafana.resources.limits": [[3, "spec-components-grafana-resources-limits"]], ".spec.components.grafana.resources.requests": [[3, "spec-components-grafana-resources-requests"]], ".spec.components.prometheus": [[3, "spec-components-prometheus"]], ".spec.components.prometheus.exposeOptions": [[3, "spec-components-prometheus-exposeoptions"]], ".spec.components.prometheus.exposeOptions.webInterface": [[3, "spec-components-prometheus-exposeoptions-webinterface"]], ".spec.components.prometheus.exposeOptions.webInterface.ingress": [[3, "spec-components-prometheus-exposeoptions-webinterface-ingress"]], ".spec.components.prometheus.exposeOptions.webInterface.ingress.annotations": [[3, "spec-components-prometheus-exposeoptions-webinterface-ingress-annotations"]], ".spec.components.prometheus.placement": [[3, "spec-components-prometheus-placement"]], ".spec.components.prometheus.placement.nodeAffinity": [[3, "spec-components-prometheus-placement-nodeaffinity"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.components.prometheus.placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[3, "spec-components-prometheus-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.components.prometheus.placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[3, "spec-components-prometheus-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.components.prometheus.placement.podAffinity": [[3, "spec-components-prometheus-placement-podaffinity"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity": [[3, "spec-components-prometheus-placement-podantiaffinity"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.components.prometheus.placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[3, "spec-components-prometheus-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.components.prometheus.placement.tolerations[]": [[3, "spec-components-prometheus-placement-tolerations"]], ".spec.components.prometheus.resources": [[3, "spec-components-prometheus-resources"]], ".spec.components.prometheus.resources.claims[]": [[3, "spec-components-prometheus-resources-claims"]], ".spec.components.prometheus.resources.limits": [[3, "spec-components-prometheus-resources-limits"]], ".spec.components.prometheus.resources.requests": [[3, "spec-components-prometheus-resources-requests"]], ".spec.components.prometheus.storage": [[3, "spec-components-prometheus-storage"]], ".spec.components.prometheus.storage.annotations": [[3, "spec-components-prometheus-storage-annotations"]], ".spec.components.prometheus.storage.labels": [[3, "spec-components-prometheus-storage-labels"]], ".spec.components.prometheus.storage.volumeClaimTemplate": [[3, "spec-components-prometheus-storage-volumeclaimtemplate"]], ".spec.components.prometheus.storage.volumeClaimTemplate.metadata": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-metadata"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSource": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-datasource"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.dataSourceRef": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-datasourceref"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.limits": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources-limits"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.resources.requests": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-resources-requests"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchExpressions[]": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.components.prometheus.storage.volumeClaimTemplate.spec.selector.matchLabels": [[3, "spec-components-prometheus-storage-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.datacenter": [[2, "spec-datacenter"]], ".spec.datacenter.racks[]": [[2, "spec-datacenter-racks"]], ".spec.datacenter.racks[].agentResources": [[2, "spec-datacenter-racks-agentresources"]], ".spec.datacenter.racks[].agentResources.claims[]": [[2, "spec-datacenter-racks-agentresources-claims"]], ".spec.datacenter.racks[].agentResources.limits": [[2, "spec-datacenter-racks-agentresources-limits"]], ".spec.datacenter.racks[].agentResources.requests": [[2, "spec-datacenter-racks-agentresources-requests"]], ".spec.datacenter.racks[].agentVolumeMounts[]": [[2, "spec-datacenter-racks-agentvolumemounts"]], ".spec.datacenter.racks[].placement": [[2, "spec-datacenter-racks-placement"]], ".spec.datacenter.racks[].placement.nodeAffinity": [[2, "spec-datacenter-racks-placement-nodeaffinity"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.datacenter.racks[].placement.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.datacenter.racks[].placement.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[2, "spec-datacenter-racks-placement-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.datacenter.racks[].placement.podAffinity": [[2, "spec-datacenter-racks-placement-podaffinity"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity": [[2, "spec-datacenter-racks-placement-podantiaffinity"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.datacenter.racks[].placement.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[2, "spec-datacenter-racks-placement-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.datacenter.racks[].placement.tolerations[]": [[2, "spec-datacenter-racks-placement-tolerations"]], ".spec.datacenter.racks[].resources": [[2, "spec-datacenter-racks-resources"]], ".spec.datacenter.racks[].resources.claims[]": [[2, "spec-datacenter-racks-resources-claims"]], ".spec.datacenter.racks[].resources.limits": [[2, "spec-datacenter-racks-resources-limits"]], ".spec.datacenter.racks[].resources.requests": [[2, "spec-datacenter-racks-resources-requests"]], ".spec.datacenter.racks[].storage": [[2, "spec-datacenter-racks-storage"]], ".spec.datacenter.racks[].storage.metadata": [[2, "spec-datacenter-racks-storage-metadata"]], ".spec.datacenter.racks[].storage.metadata.annotations": [[2, "spec-datacenter-racks-storage-metadata-annotations"]], ".spec.datacenter.racks[].storage.metadata.labels": [[2, "spec-datacenter-racks-storage-metadata-labels"]], ".spec.datacenter.racks[].volumeMounts[]": [[2, "spec-datacenter-racks-volumemounts"]], ".spec.datacenter.racks[].volumes[]": [[2, "spec-datacenter-racks-volumes"]], ".spec.datacenter.racks[].volumes[].awsElasticBlockStore": [[2, "spec-datacenter-racks-volumes-awselasticblockstore"]], ".spec.datacenter.racks[].volumes[].azureDisk": [[2, "spec-datacenter-racks-volumes-azuredisk"]], ".spec.datacenter.racks[].volumes[].azureFile": [[2, "spec-datacenter-racks-volumes-azurefile"]], ".spec.datacenter.racks[].volumes[].cephfs": [[2, "spec-datacenter-racks-volumes-cephfs"]], ".spec.datacenter.racks[].volumes[].cephfs.secretRef": [[2, "spec-datacenter-racks-volumes-cephfs-secretref"]], ".spec.datacenter.racks[].volumes[].cinder": [[2, "spec-datacenter-racks-volumes-cinder"]], ".spec.datacenter.racks[].volumes[].cinder.secretRef": [[2, "spec-datacenter-racks-volumes-cinder-secretref"]], ".spec.datacenter.racks[].volumes[].configMap": [[2, "spec-datacenter-racks-volumes-configmap"]], ".spec.datacenter.racks[].volumes[].configMap.items[]": [[2, "spec-datacenter-racks-volumes-configmap-items"]], ".spec.datacenter.racks[].volumes[].csi": [[2, "spec-datacenter-racks-volumes-csi"]], ".spec.datacenter.racks[].volumes[].csi.nodePublishSecretRef": [[2, "spec-datacenter-racks-volumes-csi-nodepublishsecretref"]], ".spec.datacenter.racks[].volumes[].csi.volumeAttributes": [[2, "spec-datacenter-racks-volumes-csi-volumeattributes"]], ".spec.datacenter.racks[].volumes[].downwardAPI": [[2, "spec-datacenter-racks-volumes-downwardapi"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[]": [[2, "spec-datacenter-racks-volumes-downwardapi-items"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[].fieldRef": [[2, "spec-datacenter-racks-volumes-downwardapi-items-fieldref"]], ".spec.datacenter.racks[].volumes[].downwardAPI.items[].resourceFieldRef": [[2, "spec-datacenter-racks-volumes-downwardapi-items-resourcefieldref"]], ".spec.datacenter.racks[].volumes[].emptyDir": [[2, "spec-datacenter-racks-volumes-emptydir"]], ".spec.datacenter.racks[].volumes[].ephemeral": [[2, "spec-datacenter-racks-volumes-ephemeral"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.metadata": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-metadata"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSource": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-datasource"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.dataSourceRef": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-datasourceref"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.limits": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources-limits"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.resources.requests": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-resources-requests"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchExpressions[]": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchexpressions"]], ".spec.datacenter.racks[].volumes[].ephemeral.volumeClaimTemplate.spec.selector.matchLabels": [[2, "spec-datacenter-racks-volumes-ephemeral-volumeclaimtemplate-spec-selector-matchlabels"]], ".spec.datacenter.racks[].volumes[].fc": [[2, "spec-datacenter-racks-volumes-fc"]], ".spec.datacenter.racks[].volumes[].flexVolume": [[2, "spec-datacenter-racks-volumes-flexvolume"]], ".spec.datacenter.racks[].volumes[].flexVolume.options": [[2, "spec-datacenter-racks-volumes-flexvolume-options"]], ".spec.datacenter.racks[].volumes[].flexVolume.secretRef": [[2, "spec-datacenter-racks-volumes-flexvolume-secretref"]], ".spec.datacenter.racks[].volumes[].flocker": [[2, "spec-datacenter-racks-volumes-flocker"]], ".spec.datacenter.racks[].volumes[].gcePersistentDisk": [[2, "spec-datacenter-racks-volumes-gcepersistentdisk"]], ".spec.datacenter.racks[].volumes[].gitRepo": [[2, "spec-datacenter-racks-volumes-gitrepo"]], ".spec.datacenter.racks[].volumes[].glusterfs": [[2, "spec-datacenter-racks-volumes-glusterfs"]], ".spec.datacenter.racks[].volumes[].hostPath": [[2, "spec-datacenter-racks-volumes-hostpath"]], ".spec.datacenter.racks[].volumes[].iscsi": [[2, "spec-datacenter-racks-volumes-iscsi"]], ".spec.datacenter.racks[].volumes[].iscsi.secretRef": [[2, "spec-datacenter-racks-volumes-iscsi-secretref"]], ".spec.datacenter.racks[].volumes[].nfs": [[2, "spec-datacenter-racks-volumes-nfs"]], ".spec.datacenter.racks[].volumes[].persistentVolumeClaim": [[2, "spec-datacenter-racks-volumes-persistentvolumeclaim"]], ".spec.datacenter.racks[].volumes[].photonPersistentDisk": [[2, "spec-datacenter-racks-volumes-photonpersistentdisk"]], ".spec.datacenter.racks[].volumes[].portworxVolume": [[2, "spec-datacenter-racks-volumes-portworxvolume"]], ".spec.datacenter.racks[].volumes[].projected": [[2, "spec-datacenter-racks-volumes-projected"]], ".spec.datacenter.racks[].volumes[].projected.sources[]": [[2, "spec-datacenter-racks-volumes-projected-sources"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchExpressions[]": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector-matchexpressions"]], ".spec.datacenter.racks[].volumes[].projected.sources[].clusterTrustBundle.labelSelector.matchLabels": [[2, "spec-datacenter-racks-volumes-projected-sources-clustertrustbundle-labelselector-matchlabels"]], ".spec.datacenter.racks[].volumes[].projected.sources[].configMap": [[2, "spec-datacenter-racks-volumes-projected-sources-configmap"]], ".spec.datacenter.racks[].volumes[].projected.sources[].configMap.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-configmap-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].fieldRef": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items-fieldref"]], ".spec.datacenter.racks[].volumes[].projected.sources[].downwardAPI.items[].resourceFieldRef": [[2, "spec-datacenter-racks-volumes-projected-sources-downwardapi-items-resourcefieldref"]], ".spec.datacenter.racks[].volumes[].projected.sources[].secret": [[2, "spec-datacenter-racks-volumes-projected-sources-secret"]], ".spec.datacenter.racks[].volumes[].projected.sources[].secret.items[]": [[2, "spec-datacenter-racks-volumes-projected-sources-secret-items"]], ".spec.datacenter.racks[].volumes[].projected.sources[].serviceAccountToken": [[2, "spec-datacenter-racks-volumes-projected-sources-serviceaccounttoken"]], ".spec.datacenter.racks[].volumes[].quobyte": [[2, "spec-datacenter-racks-volumes-quobyte"]], ".spec.datacenter.racks[].volumes[].rbd": [[2, "spec-datacenter-racks-volumes-rbd"]], ".spec.datacenter.racks[].volumes[].rbd.secretRef": [[2, "spec-datacenter-racks-volumes-rbd-secretref"]], ".spec.datacenter.racks[].volumes[].scaleIO": [[2, "spec-datacenter-racks-volumes-scaleio"]], ".spec.datacenter.racks[].volumes[].scaleIO.secretRef": [[2, "spec-datacenter-racks-volumes-scaleio-secretref"]], ".spec.datacenter.racks[].volumes[].secret": [[2, "spec-datacenter-racks-volumes-secret"]], ".spec.datacenter.racks[].volumes[].secret.items[]": [[2, "spec-datacenter-racks-volumes-secret-items"]], ".spec.datacenter.racks[].volumes[].storageos": [[2, "spec-datacenter-racks-volumes-storageos"]], ".spec.datacenter.racks[].volumes[].storageos.secretRef": [[2, "spec-datacenter-racks-volumes-storageos-secretref"]], ".spec.datacenter.racks[].volumes[].vsphereVolume": [[2, "spec-datacenter-racks-volumes-vspherevolume"]], ".spec.endpointsSelector": [[3, "spec-endpointsselector"]], ".spec.endpointsSelector.matchExpressions[]": [[3, "spec-endpointsselector-matchexpressions"]], ".spec.endpointsSelector.matchLabels": [[3, "spec-endpointsselector-matchlabels"]], ".spec.exposeOptions": [[2, "spec-exposeoptions"]], ".spec.exposeOptions.broadcastOptions": [[2, "spec-exposeoptions-broadcastoptions"]], ".spec.exposeOptions.broadcastOptions.clients": [[2, "spec-exposeoptions-broadcastoptions-clients"]], ".spec.exposeOptions.broadcastOptions.clients.podIP": [[2, "spec-exposeoptions-broadcastoptions-clients-podip"]], ".spec.exposeOptions.broadcastOptions.nodes": [[2, "spec-exposeoptions-broadcastoptions-nodes"]], ".spec.exposeOptions.broadcastOptions.nodes.podIP": [[2, "spec-exposeoptions-broadcastoptions-nodes-podip"]], ".spec.exposeOptions.cql": [[2, "spec-exposeoptions-cql"]], ".spec.exposeOptions.cql.ingress": [[2, "spec-exposeoptions-cql-ingress"]], ".spec.exposeOptions.cql.ingress.annotations": [[2, "spec-exposeoptions-cql-ingress-annotations"]], ".spec.exposeOptions.cql.ingress.labels": [[2, "spec-exposeoptions-cql-ingress-labels"]], ".spec.exposeOptions.nodeService": [[2, "spec-exposeoptions-nodeservice"]], ".spec.exposeOptions.nodeService.annotations": [[2, "spec-exposeoptions-nodeservice-annotations"]], ".spec.exposeOptions.nodeService.labels": [[2, "spec-exposeoptions-nodeservice-labels"]], ".spec.genericUpgrade": [[2, "spec-genericupgrade"]], ".spec.imagePullSecrets[]": [[2, "spec-imagepullsecrets"]], ".spec.localDiskSetup": [[1, "spec-localdisksetup"]], ".spec.localDiskSetup.filesystems[]": [[1, "spec-localdisksetup-filesystems"]], ".spec.localDiskSetup.loopDevices[]": [[1, "spec-localdisksetup-loopdevices"]], ".spec.localDiskSetup.mounts[]": [[1, "spec-localdisksetup-mounts"]], ".spec.localDiskSetup.raids[]": [[1, "spec-localdisksetup-raids"]], ".spec.localDiskSetup.raids[].RAID0": [[1, "spec-localdisksetup-raids-raid0"]], ".spec.localDiskSetup.raids[].RAID0.devices": [[1, "spec-localdisksetup-raids-raid0-devices"]], ".spec.network": [[2, "spec-network"]], ".spec.placement": [[1, "spec-placement"]], ".spec.placement.affinity": [[1, "spec-placement-affinity"]], ".spec.placement.affinity.nodeAffinity": [[1, "spec-placement-affinity-nodeaffinity"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchexpressions"]], ".spec.placement.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchFields[]": [[1, "spec-placement-affinity-nodeaffinity-preferredduringschedulingignoredduringexecution-preference-matchfields"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchExpressions[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchexpressions"]], ".spec.placement.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[].matchFields[]": [[1, "spec-placement-affinity-nodeaffinity-requiredduringschedulingignoredduringexecution-nodeselectorterms-matchfields"]], ".spec.placement.affinity.podAffinity": [[1, "spec-placement-affinity-podaffinity"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity": [[1, "spec-placement-affinity-podantiaffinity"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.labelSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-labelselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[].podAffinityTerm.namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-preferredduringschedulingignoredduringexecution-podaffinityterm-namespaceselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].labelSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-labelselector-matchlabels"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchExpressions[]": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchexpressions"]], ".spec.placement.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[].namespaceSelector.matchLabels": [[1, "spec-placement-affinity-podantiaffinity-requiredduringschedulingignoredduringexecution-namespaceselector-matchlabels"]], ".spec.placement.nodeSelector": [[1, "spec-placement-nodeselector"]], ".spec.placement.tolerations[]": [[1, "spec-placement-tolerations"]], ".spec.podMetadata": [[2, "spec-podmetadata"]], ".spec.podMetadata.annotations": [[2, "spec-podmetadata-annotations"]], ".spec.podMetadata.labels": [[2, "spec-podmetadata-labels"]], ".spec.readinessGates[]": [[2, "spec-readinessgates"]], ".spec.repairs[]": [[2, "spec-repairs"]], ".status": [[1, "status"], [2, "status"], [3, "status"], [4, "status"]], ".status.backups[]": [[2, "status-backups"]], ".status.conditions[]": [[1, "status-conditions"], [2, "status-conditions"], [3, "status-conditions"]], ".status.nodeStatuses[]": [[1, "status-nodestatuses"]], ".status.racks": [[2, "status-racks"]], ".status.repairs[]": [[2, "status-repairs"]], ".status.upgrade": [[2, "status-upgrade"]], "API Groups and Kinds": [[5, "api-groups-and-kinds"]], "API Reference": [[5, null]], "AWS CLI": [[6, "aws-cli"]], "Accessing Grafana": [[19, "accessing-grafana"]], "Accessing the Database": [[13, "accessing-the-database"]], "Accessing the database": [[11, "accessing-the-database"], [14, "accessing-the-database"]], "Add Upstream Remote": [[10, "add-upstream-remote"]], "Architecture": [[17, "architecture"]], "Authentication and Authorization": [[7, "authentication-and-authorization"]], "Automated promotions": [[31, "automated-promotions"]], "Automatic cleanup and replacement in case when k8s node is lost": [[24, null]], "Backport policy": [[31, "backport-policy"]], "Benchmark with cassandra-stress": [[13, "benchmark-with-cassandra-stress"]], "Broadcast Options": [[12, "broadcast-options"]], "Build multiple Amazon EKS clusters with inter-Kubernetes networking": [[20, null]], "Build multiple GKE clusters with inter-Kubernetes networking": [[21, null]], "Building the project": [[10, "building-the-project"]], "CI/CD": [[31, "ci-cd"]], "Clean Up": [[13, "clean-up"], [17, "clean-up"]], "Cleanup": [[15, "cleanup"]], "Clone Your Fork": [[10, "clone-your-fork"]], "Cluster registration": [[17, "cluster-registration"]], "ClusterIP Type": [[12, "clusterip-type"]], "Collecting every resource in the cluster": [[34, "collecting-every-resource-in-the-cluster"]], "Commit History": [[10, "commit-history"]], "Commit messages": [[10, "commit-messages"]], "Configure Scylla": [[13, "configure-scylla"]], "Configure Scylla Manager Agent": [[13, "configure-scylla-manager-agent"]], "Configure container kernel parameters": [[13, "configure-container-kernel-parameters"]], "Configure environment variables": [[11, "configure-environment-variables"], [14, "configure-environment-variables"]], "Configure the firewall rules": [[21, "configure-the-firewall-rules"]], "Configure the network": [[20, "configure-the-network"]], "Connecting through Ingress using a resolvable domain": [[19, "connecting-through-ingress-using-a-resolvable-domain"]], "Connecting through Ingress using an unresolvable domain": [[19, "connecting-through-ingress-using-an-unresolvable-domain"]], "Connection": [[19, "connection"]], "Contributing to Scylla Operator": [[10, null]], "Create EKS clusters": [[20, "create-eks-clusters"]], "Create GKE clusters": [[21, "create-gke-clusters"]], "Create VPC network subnets": [[21, "create-vpc-network-subnets"]], "Create VPC peering": [[20, "create-vpc-peering"]], "Create a Branch": [[10, "create-a-branch"]], "Create a Fork": [[10, "create-a-fork"]], "Create and Initialize a Scylla Cluster": [[13, "create-and-initialize-a-scylla-cluster"]], "Create and configure a VPC network": [[21, "create-and-configure-a-vpc-network"]], "Create the VPC network": [[21, "create-the-vpc-network"]], "Create the first EKS cluster": [[20, "create-the-first-eks-cluster"]], "Create the first GKE cluster": [[21, "create-the-first-gke-cluster"]], "Create the second EKS cluster": [[20, "create-the-second-eks-cluster"]], "Create the second GKE cluster": [[21, "create-the-second-gke-cluster"]], "Creating a GKE cluster": [[14, "creating-a-gke-cluster"]], "Creating an EKS cluster": [[11, "creating-an-eks-cluster"]], "Credentials": [[6, "credentials"]], "Custom CNI": [[37, "custom-cni"]], "Customization": [[15, "customization"], [15, "id1"], [15, "id3"]], "Deleting a GKE cluster": [[14, "deleting-a-gke-cluster"]], "Deleting an EKS cluster": [[11, "deleting-an-eks-cluster"]], "Deploy Cert Manager": [[13, "deploy-cert-manager"], [15, "deploy-cert-manager"]], "Deploy HAProxy Ingress": [[19, "deploy-haproxy-ingress"]], "Deploy Prometheus Operator": [[19, "deploy-prometheus-operator"]], "Deploy Scylla Manager": [[17, "deploy-scylla-manager"]], "Deploy Scylla Operator": [[13, "deploy-scylla-operator"]], "Deploy Scylla cluster": [[14, "deploy-scylla-cluster"]], "Deploy ScyllaDB Operator": [[20, "deploy-scylladb-operator"], [21, "deploy-scylladb-operator"]], "Deploy ScyllaDBMonitoring": [[19, "deploy-scylladbmonitoring"]], "Deploy a multi-datacenter ScyllaDB Cluster": [[23, "deploy-a-multi-datacenter-scylladb-cluster"]], "Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters": [[23, null]], "Deploy managed monitoring": [[19, "deploy-managed-monitoring"]], "Deploy the first datacenter": [[23, "deploy-the-first-datacenter"]], "Deploy the second datacenter": [[23, "deploy-the-second-datacenter"]], "Deploying Alternator": [[13, "deploying-alternator"]], "Deploying Local Volume Provisioner": [[11, "deploying-local-volume-provisioner"], [14, "deploying-local-volume-provisioner"]], "Deploying Scylla Manager on a Kubernetes Cluster": [[17, null]], "Deploying Scylla on EKS": [[11, null]], "Deploying Scylla on GKE": [[14, null]], "Deploying Scylla on a Kubernetes Cluster": [[13, null]], "Deploying Scylla stack using Helm Charts": [[15, null]], "Deploying ScyllaDB": [[11, "deploying-scylladb"], [14, "deploying-scylladb"]], "Deploying ScyllaDB Operator": [[11, "deploying-scylladb-operator"], [14, "deploying-scylladb-operator"]], "Deploying multi-datacenter ScyllaDB clusters in Kubernetes": [[22, null]], "Deployment Examples": [[12, "deployment-examples"]], "Description": [[1, "description"], [1, "id1"], [1, "id2"], [1, "id4"], [1, "id6"], [1, "id8"], [1, "id10"], [1, "id12"], [1, "id14"], [1, "id16"], [1, "id18"], [1, "id20"], [1, "id22"], [1, "id24"], [1, "id26"], [1, "id28"], [1, "id30"], [1, "id32"], [1, "id34"], [1, "id36"], [1, "id38"], [1, "id40"], [1, "id42"], [1, "id44"], [1, "id46"], [1, "id48"], [1, "id50"], [1, "id52"], [1, "id54"], [1, "id56"], [1, "id58"], [1, "id60"], [1, "id62"], [1, "id64"], [1, "id66"], [1, "id68"], [1, "id70"], [1, "id72"], [1, "id74"], [1, "id76"], [1, "id78"], [1, "id80"], [1, "id82"], [1, "id84"], [1, "id86"], [1, "id88"], [1, "id90"], [1, "id92"], [1, "id94"], [1, "id96"], [1, "id98"], [1, "id100"], [1, "id102"], [1, "id104"], [1, "id106"], [1, "id108"], [1, "id110"], [1, "id112"], [2, "description"], [2, "id1"], [2, "id2"], [2, "id4"], [2, "id6"], [2, "id8"], [2, "id10"], [2, "id12"], [2, "id14"], [2, "id16"], [2, "id18"], [2, "id20"], [2, "id22"], [2, "id24"], [2, "id26"], [2, "id28"], [2, "id30"], [2, "id32"], [2, "id34"], [2, "id36"], [2, "id38"], [2, "id40"], [2, "id42"], [2, "id44"], [2, "id46"], [2, "id48"], [2, "id50"], [2, "id52"], [2, "id54"], [2, "id56"], [2, "id58"], [2, "id60"], [2, "id62"], [2, "id64"], [2, "id66"], [2, "id68"], [2, "id70"], [2, "id72"], [2, "id74"], [2, "id76"], [2, "id78"], [2, "id80"], [2, "id82"], [2, "id84"], [2, "id86"], [2, "id88"], [2, "id90"], [2, "id92"], [2, "id94"], [2, "id96"], [2, "id98"], [2, "id100"], [2, "id102"], [2, "id104"], [2, "id106"], [2, "id108"], [2, "id110"], [2, "id112"], [2, "id114"], [2, "id116"], [2, "id118"], [2, "id120"], [2, "id122"], [2, "id124"], [2, "id126"], [2, "id128"], [2, "id130"], [2, "id132"], [2, "id134"], [2, "id136"], [2, "id138"], [2, "id140"], [2, "id142"], [2, "id144"], [2, "id146"], [2, "id148"], [2, "id150"], [2, "id152"], [2, "id154"], [2, "id156"], [2, "id158"], [2, "id160"], [2, "id162"], [2, "id164"], [2, "id166"], [2, "id168"], [2, "id170"], [2, "id172"], [2, "id174"], [2, "id176"], [2, "id178"], [2, "id180"], [2, "id182"], [2, "id184"], [2, "id186"], [2, "id188"], [2, "id190"], [2, "id192"], [2, "id194"], [2, "id196"], [2, "id198"], [2, "id200"], [2, "id202"], [2, "id204"], [2, "id206"], [2, "id208"], [2, "id210"], [2, "id212"], [2, "id214"], [2, "id216"], [2, "id218"], [2, "id220"], [2, "id222"], [2, "id224"], [2, "id226"], [2, "id228"], [2, "id230"], [2, "id232"], [2, "id234"], [2, "id236"], [2, "id238"], [2, "id240"], [2, "id242"], [2, "id244"], [2, "id246"], [2, "id248"], [2, "id250"], [2, "id252"], [2, "id254"], [2, "id256"], [2, "id258"], [2, "id260"], [2, "id262"], [2, "id264"], [2, "id266"], [2, "id268"], [2, "id270"], [2, "id272"], [2, "id274"], [2, "id276"], [2, "id278"], [2, "id280"], [2, "id282"], [2, "id284"], [2, "id286"], [2, "id288"], [2, "id290"], [2, "id292"], [2, "id294"], [2, "id296"], [2, "id298"], [2, "id300"], [2, "id302"], [2, "id304"], [2, "id306"], [2, "id308"], [2, "id310"], [2, "id312"], [2, "id314"], [2, "id316"], [2, "id318"], [2, "id320"], [2, "id322"], [2, "id324"], [3, "description"], [3, "id1"], [3, "id2"], [3, "id4"], [3, "id6"], [3, "id8"], [3, "id10"], [3, "id12"], [3, "id14"], [3, "id16"], [3, "id18"], [3, "id20"], [3, "id22"], [3, "id24"], [3, "id26"], [3, "id28"], [3, "id30"], [3, "id32"], [3, "id34"], [3, "id36"], [3, "id38"], [3, "id40"], [3, "id42"], [3, "id44"], [3, "id46"], [3, "id48"], [3, "id50"], [3, "id52"], [3, "id54"], [3, "id56"], [3, "id58"], [3, "id60"], [3, "id62"], [3, "id64"], [3, "id66"], [3, "id68"], [3, "id70"], [3, "id72"], [3, "id74"], [3, "id76"], [3, "id78"], [3, "id80"], [3, "id82"], [3, "id84"], [3, "id86"], [3, "id88"], [3, "id90"], [3, "id92"], [3, "id94"], [3, "id96"], [3, "id98"], [3, "id100"], [3, "id102"], [3, "id104"], [3, "id106"], [3, "id108"], [3, "id110"], [3, "id112"], [3, "id114"], [3, "id116"], [3, "id118"], [3, "id120"], [3, "id122"], [3, "id124"], [3, "id126"], [3, "id128"], [3, "id130"], [3, "id132"], [3, "id134"], [3, "id136"], [3, "id138"], [3, "id140"], [3, "id142"], [3, "id144"], [3, "id146"], [3, "id148"], [3, "id150"], [3, "id152"], [3, "id154"], [3, "id156"], [3, "id158"], [3, "id160"], [3, "id162"], [3, "id164"], [3, "id166"], [3, "id168"], [3, "id170"], [3, "id172"], [3, "id174"], [3, "id176"], [3, "id178"], [3, "id180"], [3, "id182"], [3, "id184"], [3, "id186"], [3, "id188"], [3, "id190"], [3, "id192"], [3, "id194"], [3, "id196"], [3, "id198"], [3, "id200"], [3, "id202"], [3, "id204"], [3, "id206"], [3, "id208"], [3, "id210"], [3, "id212"], [3, "id214"], [3, "id216"], [3, "id218"], [3, "id220"], [3, "id222"], [3, "id224"], [3, "id226"], [3, "id228"], [3, "id230"], [3, "id232"], [3, "id234"], [3, "id236"], [3, "id238"], [3, "id240"], [3, "id242"], [3, "id244"], [3, "id246"], [3, "id248"], [3, "id250"], [3, "id252"], [4, "description"], [4, "id1"], [4, "id2"], [4, "id4"]], "Development": [[10, "development"]], "Discovering ScyllaDB Nodes": [[8, null]], "Docker": [[34, "docker"]], "Download Scylla Operator": [[13, "download-scylla-operator"]], "EKS": [[37, "eks"]], "EKS Setup": [[11, "eks-setup"]], "Embedded cqlsh (aka localhost)": [[7, "embedded-cqlsh-aka-localhost"]], "Expose Options": [[12, "expose-options"]], "Exposing Discovery Endpoint Behind Kubernetes Cluster Boundary": [[8, "exposing-discovery-endpoint-behind-kubernetes-cluster-boundary"]], "Exposing ScyllaCluster": [[12, null]], "External seeds": [[23, "external-seeds"]], "GKE": [[37, "gke"]], "Gather data about your cluster": [[35, "gather-data-about-your-cluster"]], "Gathering data with must-gather": [[34, null]], "Generally available": [[31, "generally-available"]], "Get support": [[35, "get-support"]], "Google Kubernetes Engine Setup": [[14, "google-kubernetes-engine-setup"]], "Headless Type": [[12, "headless-type"]], "Helm Chart repository": [[15, "helm-chart-repository"]], "In-cluster node-to-node, VPC clients-to-nodes": [[12, "in-cluster-node-to-node-vpc-clients-to-nodes"]], "In-cluster only": [[12, "in-cluster-only"]], "Ingress ExternalIP": [[19, "ingress-externalip"]], "Ingress NodePort": [[19, "ingress-nodeport"]], "Initial Setup": [[10, "initial-setup"]], "Installation": [[15, "installation"], [15, "id2"], [15, "id4"]], "Installing script third party dependencies": [[11, "installing-script-third-party-dependencies"]], "Internet": [[12, "internet"]], "Known issues": [[33, null]], "Kubernetes tuning": [[30, "kubernetes-tuning"]], "Limiting must-gather to a particular namespace": [[34, "limiting-must-gather-to-a-particular-namespace"]], "LoadBalancer Type": [[12, "loadbalancer-type"]], "Maintenance mode": [[26, null]], "Monitoring": [[15, "monitoring"], [19, null]], "Multi Datacenter ScyllaDB Cluster": [[23, "multi-datacenter-scylladb-cluster"]], "Multi VPC": [[12, "multi-vpc"]], "Networking": [[23, "networking"]], "Node Service Template": [[12, "node-service-template"]], "Node operations using Scylla Operator": [[25, null]], "Node tuning": [[30, "node-tuning"]], "NodeConfig (scylla.scylladb.com/v1alpha1)": [[1, null]], "Performance tuning": [[30, null]], "PodIP Type": [[12, "podip-type"]], "Podman": [[34, "podman"]], "Preface": [[8, "preface"]], "Prepare nodes for running ScyllaDB": [[20, "prepare-nodes-for-running-scylladb"], [21, "prepare-nodes-for-running-scylladb"]], "Prerequisites": [[10, "prerequisites"], [11, "prerequisites"], [13, "prerequisites"], [14, "prerequisites"], [15, "prerequisites"], [17, "prerequisites"], [19, "prerequisites"], [20, "prerequisites"], [21, "prerequisites"], [23, "prerequisites"], [34, "prerequisites"]], "Private clusters": [[37, "private-clusters"]], "Procedure": [[18, "procedure"]], "Releases": [[31, null]], "Remote cqlsh": [[7, "remote-cqlsh"]], "Replacing a Scylla node": [[27, null]], "Replacing a dead node": [[27, "replacing-a-dead-node"]], "Requirements": [[19, "requirements"]], "Restore from backup": [[28, null]], "Restore schema": [[28, "restore-schema"]], "Restore tables": [[28, "restore-tables"]], "Results": [[15, "results"]], "Retrieve PodIPs of ScyllaDB nodes for use as external seeds": [[23, "retrieve-podips-of-scylladb-nodes-for-use-as-external-seeds"]], "Running locally": [[13, "running-locally"]], "Running must-gather": [[34, "running-must-gather"]], "Scale a ScyllaCluster": [[13, "scale-a-scyllacluster"]], "Schedule": [[31, "schedule"]], "Scylla": [[15, "scylla"]], "Scylla Helm Chart": [[15, "scylla-helm-chart"]], "Scylla Manager": [[15, "scylla-manager"], [23, "scylla-manager"]], "Scylla Manager Agent auth token": [[13, "scylla-manager-agent-auth-token"]], "Scylla Manager Controller": [[15, "scylla-manager-controller"]], "Scylla Manager Helm Chart": [[15, "scylla-manager-helm-chart"]], "Scylla Manager does not boot up on Minikube": [[33, "scylla-manager-does-not-boot-up-on-minikube"]], "Scylla Operator Chart": [[15, "scylla-operator-chart"]], "Scylla Operator Documentation": [[16, null]], "ScyllaCluster (scylla.scylladb.com/v1)": [[2, null]], "ScyllaDB Discovery Endpoint": [[8, "scylladb-discovery-endpoint"]], "ScyllaDBMonitoring": [[23, "scylladbmonitoring"]], "ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)": [[3, null]], "ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)": [[4, null]], "ServiceClusterIP Type": [[12, "serviceclusterip-type"]], "ServiceLoadBalancerIngress Type": [[12, "serviceloadbalanceringress-type"]], "Set up monitoring": [[13, "set-up-monitoring"]], "Setting Yourself as cluster-admin": [[14, "setting-yourself-as-cluster-admin"]], "Setting up nodes for ScyllaDB": [[11, "setting-up-nodes-for-scylladb"], [14, "setting-up-nodes-for-scylladb"]], "Specification": [[1, "specification"], [2, "specification"], [3, "specification"], [4, "specification"]], "Submitting": [[10, "submitting"]], "Submitting a Pull Request": [[10, "submitting-a-pull-request"]], "Support": [[32, null]], "Support matrix": [[31, "support-matrix"]], "Support overview": [[35, null]], "Supported Kubernetes platforms": [[31, "supported-kubernetes-platforms"]], "Supported releases": [[31, "supported-releases"]], "TL;DR": [[15, "tl-dr"]], "TL;DR;": [[11, "tl-dr"], [14, "tl-dr"]], "TRUNCATE queries does not work on Minikube": [[33, "truncate-queries-does-not-work-on-minikube"]], "Task scheduling": [[17, "task-scheduling"]], "Troubleshooting": [[13, "troubleshooting"], [17, "troubleshooting"], [36, null]], "Troubleshooting installation issues": [[37, null]], "Troubleshooting issues": [[35, "troubleshooting-issues"]], "Type": [[1, "type"], [1, "id3"], [1, "id5"], [1, "id7"], [1, "id9"], [1, "id11"], [1, "id13"], [1, "id15"], [1, "id17"], [1, "id19"], [1, "id21"], [1, "id23"], [1, "id25"], [1, "id27"], [1, "id29"], [1, "id31"], [1, "id33"], [1, "id35"], [1, "id37"], [1, "id39"], [1, "id41"], [1, "id43"], [1, "id45"], [1, "id47"], [1, "id49"], [1, "id51"], [1, "id53"], [1, "id55"], [1, "id57"], [1, "id59"], [1, "id61"], [1, "id63"], [1, "id65"], [1, "id67"], [1, "id69"], [1, "id71"], [1, "id73"], [1, "id75"], [1, "id77"], [1, "id79"], [1, "id81"], [1, "id83"], [1, "id85"], [1, "id87"], [1, "id89"], [1, "id91"], [1, "id93"], [1, "id95"], [1, "id97"], [1, "id99"], [1, "id101"], [1, "id103"], [1, "id105"], [1, "id107"], [1, "id109"], [1, "id111"], [1, "id113"], [2, "type"], [2, "id3"], [2, "id5"], [2, "id7"], [2, "id9"], [2, "id11"], [2, "id13"], [2, "id15"], [2, "id17"], [2, "id19"], [2, "id21"], [2, "id23"], [2, "id25"], [2, "id27"], [2, "id29"], [2, "id31"], [2, "id33"], [2, "id35"], [2, "id37"], [2, "id39"], [2, "id41"], [2, "id43"], [2, "id45"], [2, "id47"], [2, "id49"], [2, "id51"], [2, "id53"], [2, "id55"], [2, "id57"], [2, "id59"], [2, "id61"], [2, "id63"], [2, "id65"], [2, "id67"], [2, "id69"], [2, "id71"], [2, "id73"], [2, "id75"], [2, "id77"], [2, "id79"], [2, "id81"], [2, "id83"], [2, "id85"], [2, "id87"], [2, "id89"], [2, "id91"], [2, "id93"], [2, "id95"], [2, "id97"], [2, "id99"], [2, "id101"], [2, "id103"], [2, "id105"], [2, "id107"], [2, "id109"], [2, "id111"], [2, "id113"], [2, "id115"], [2, "id117"], [2, "id119"], [2, "id121"], [2, "id123"], [2, "id125"], [2, "id127"], [2, "id129"], [2, "id131"], [2, "id133"], [2, "id135"], [2, "id137"], [2, "id139"], [2, "id141"], [2, "id143"], [2, "id145"], [2, "id147"], [2, "id149"], [2, "id151"], [2, "id153"], [2, "id155"], [2, "id157"], [2, "id159"], [2, "id161"], [2, "id163"], [2, "id165"], [2, "id167"], [2, "id169"], [2, "id171"], [2, "id173"], [2, "id175"], [2, "id177"], [2, "id179"], [2, "id181"], [2, "id183"], [2, "id185"], [2, "id187"], [2, "id189"], [2, "id191"], [2, "id193"], [2, "id195"], [2, "id197"], [2, "id199"], [2, "id201"], [2, "id203"], [2, "id205"], [2, "id207"], [2, "id209"], [2, "id211"], [2, "id213"], [2, "id215"], [2, "id217"], [2, "id219"], [2, "id221"], [2, "id223"], [2, "id225"], [2, "id227"], [2, "id229"], [2, "id231"], [2, "id233"], [2, "id235"], [2, "id237"], [2, "id239"], [2, "id241"], [2, "id243"], [2, "id245"], [2, "id247"], [2, "id249"], [2, "id251"], [2, "id253"], [2, "id255"], [2, "id257"], [2, "id259"], [2, "id261"], [2, "id263"], [2, "id265"], [2, "id267"], [2, "id269"], [2, "id271"], [2, "id273"], [2, "id275"], [2, "id277"], [2, "id279"], [2, "id281"], [2, "id283"], [2, "id285"], [2, "id287"], [2, "id289"], [2, "id291"], [2, "id293"], [2, "id295"], [2, "id297"], [2, "id299"], [2, "id301"], [2, "id303"], [2, "id305"], [2, "id307"], [2, "id309"], [2, "id311"], [2, "id313"], [2, "id315"], [2, "id317"], [2, "id319"], [2, "id321"], [2, "id323"], [2, "id325"], [3, "type"], [3, "id3"], [3, "id5"], [3, "id7"], [3, "id9"], [3, "id11"], [3, "id13"], [3, "id15"], [3, "id17"], [3, "id19"], [3, "id21"], [3, "id23"], [3, "id25"], [3, "id27"], [3, "id29"], [3, "id31"], [3, "id33"], [3, "id35"], [3, "id37"], [3, "id39"], [3, "id41"], [3, "id43"], [3, "id45"], [3, "id47"], [3, "id49"], [3, "id51"], [3, "id53"], [3, "id55"], [3, "id57"], [3, "id59"], [3, "id61"], [3, "id63"], [3, "id65"], [3, "id67"], [3, "id69"], [3, "id71"], [3, "id73"], [3, "id75"], [3, "id77"], [3, "id79"], [3, "id81"], [3, "id83"], [3, "id85"], [3, "id87"], [3, "id89"], [3, "id91"], [3, "id93"], [3, "id95"], [3, "id97"], [3, "id99"], [3, "id101"], [3, "id103"], [3, "id105"], [3, "id107"], [3, "id109"], [3, "id111"], [3, "id113"], [3, "id115"], [3, "id117"], [3, "id119"], [3, "id121"], [3, "id123"], [3, "id125"], [3, "id127"], [3, "id129"], [3, "id131"], [3, "id133"], [3, "id135"], [3, "id137"], [3, "id139"], [3, "id141"], [3, "id143"], [3, "id145"], [3, "id147"], [3, "id149"], [3, "id151"], [3, "id153"], [3, "id155"], [3, "id157"], [3, "id159"], [3, "id161"], [3, "id163"], [3, "id165"], [3, "id167"], [3, "id169"], [3, "id171"], [3, "id173"], [3, "id175"], [3, "id177"], [3, "id179"], [3, "id181"], [3, "id183"], [3, "id185"], [3, "id187"], [3, "id189"], [3, "id191"], [3, "id193"], [3, "id195"], [3, "id197"], [3, "id199"], [3, "id201"], [3, "id203"], [3, "id205"], [3, "id207"], [3, "id209"], [3, "id211"], [3, "id213"], [3, "id215"], [3, "id217"], [3, "id219"], [3, "id221"], [3, "id223"], [3, "id225"], [3, "id227"], [3, "id229"], [3, "id231"], [3, "id233"], [3, "id235"], [3, "id237"], [3, "id239"], [3, "id241"], [3, "id243"], [3, "id245"], [3, "id247"], [3, "id249"], [3, "id251"], [3, "id253"], [4, "type"], [4, "id3"], [4, "id5"]], "Update route tables": [[20, "update-route-tables"]], "Update security groups": [[20, "update-security-groups"]], "Updating Your Fork": [[10, "updating-your-fork"]], "Upgrade of Scylla Operator": [[38, null]], "Upgrade via Helm": [[38, "upgrade-via-helm"]], "Upgrade via kubectl": [[38, "upgrade-via-kubectl"]], "Upgrading version of Scylla": [[29, null]], "Using Alternator (DynamoDB)": [[6, null]], "Using CQL": [[7, null]], "Using ScyllaDB APIs": [[9, null]], "Using context": [[23, "using-context"]], "Variants": [[19, "variants"]], "Version migrations": [[18, null]], "Wait for Grafana to roll out": [[19, "wait-for-grafana-to-roll-out"]], "Wait for HAProxy Ingress to roll out": [[19, "wait-for-haproxy-ingress-to-roll-out"]], "Wait for Prometheus Operator to roll out": [[19, "wait-for-prometheus-operator-to-roll-out"]], "Wait for Prometheus to roll out": [[19, "wait-for-prometheus-to-roll-out"]], "Wait for ScyllaDBMonitoring to roll out": [[19, "wait-for-scylladbmonitoring-to-roll-out"]], "Walkthrough": [[11, "walkthrough"], [14, "walkthrough"]], "Webhooks": [[37, "webhooks"]], "image": [[15, "image"]], "resources": [[15, "resources"]], "scylla.scylladb.com": [[0, null]], "v0.3.0 -> v1.0.0": [[38, "v0-3-0-v1-0-0"]], "v0.3.0 -> v1.0.0 migration": [[18, "v0-3-0-v1-0-0-migration"]], "v1.0.0 -> v1.1.0": [[38, "v1-0-0-v1-1-0"]], "v1.1.0 -> v1.2.0": [[38, "v1-1-0-v1-2-0"]], "v1.2.0 -> v1.3.0": [[38, "v1-2-0-v1-3-0"]], "webhook": [[15, "webhook"]]}, "docnames": ["api-reference/groups/scylla.scylladb.com", "api-reference/groups/scylla.scylladb.com/nodeconfigs", "api-reference/groups/scylla.scylladb.com/scyllaclusters", "api-reference/groups/scylla.scylladb.com/scylladbmonitorings", "api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs", "api-reference/index", "clients/alternator", "clients/cql", "clients/discovery", "clients/index", "contributing", "eks", "exposing", "generic", "gke", "helm", "index", "manager", "migration", "monitoring", "multidc/eks", "multidc/gke", "multidc/index", "multidc/multidc", "nodeoperations/automatic-cleanup", "nodeoperations/index", "nodeoperations/maintenance-mode", "nodeoperations/replace-node", "nodeoperations/restore", "nodeoperations/scylla-upgrade", "performance", "releases", "support/index", "support/known-issues", "support/must-gather", "support/overview", "support/troubleshooting/index", "support/troubleshooting/installation", "upgrade"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2}, "filenames": ["api-reference/groups/scylla.scylladb.com.rst", "api-reference/groups/scylla.scylladb.com/nodeconfigs.rst", "api-reference/groups/scylla.scylladb.com/scyllaclusters.rst", "api-reference/groups/scylla.scylladb.com/scylladbmonitorings.rst", "api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst", "api-reference/index.rst", "clients/alternator.md", "clients/cql.md", "clients/discovery.md", "clients/index.rst", "contributing.md", "eks.md", "exposing.md", "generic.md", "gke.md", "helm.md", "index.rst", "manager.md", "migration.md", "monitoring.md", "multidc/eks.md", "multidc/gke.md", "multidc/index.rst", "multidc/multidc.md", "nodeoperations/automatic-cleanup.md", "nodeoperations/index.rst", "nodeoperations/maintenance-mode.md", "nodeoperations/replace-node.md", "nodeoperations/restore.md", "nodeoperations/scylla-upgrade.md", "performance.md", "releases.md", "support/index.rst", "support/known-issues.md", "support/must-gather.md", "support/overview.md", "support/troubleshooting/index.rst", "support/troubleshooting/installation.md", "upgrade.md"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [1, 2, 3, 4, 6, 8, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 30, 34, 37, 38], "0": [1, 2, 3, 7, 8, 10, 12, 13, 14, 15, 17, 19, 20, 21, 23, 27, 28, 29, 30, 31, 34], "00": [6, 17], "000": 13, "0000": [2, 17], "00000000": 17, "000000000000": 17, "008_": 33, "01": [6, 31], "01t16": 6, "02": 28, "03": [6, 27, 31], "04": [28, 31], "0406": 28, "05": [28, 31], "06": [17, 31], "0644": 2, "07": 31, "0777": 2, "08": 31, "08077dcc008fbbab6": 20, "09": [17, 28, 31], "0bb60902": 21, "0dd20cdf": 28, "0dfd": 23, "1": [1, 2, 3, 7, 8, 10, 11, 12, 13, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31], "10": [2, 8, 13, 15, 17, 18, 20, 21, 23, 27, 31], "100": [1, 2, 3, 17, 28], "1000": 21, "10000000": 13, "10001": [8, 15, 18, 27], "100m": [15, 23], "102": 8, "104m": 18, "105": 15, "106m": 18, "107": [17, 23], "107m": 18, "108m": 18, "109": 17, "109m": 18, "10d": 8, "11": [23, 28, 31], "110": 27, "110m": 18, "11ee": [6, 28], "12": [1, 2, 3, 10, 17, 28, 31], "121c": 23, "1234": 10, "123913": 6, "125": 27, "127": [7, 17], "128mi": 15, "12a3678d": 18, "13": [10, 17, 31], "130": 15, "14": [17, 31], "149": 15, "15": [17, 28, 31], "150k": 28, "16": [15, 17, 20, 21, 23, 31], "16g": 30, "17": [21, 31], "172": [20, 21, 23, 27], "18": [21, 23], "1800g": 23, "189": 27, "19": 23, "19042": 8, "191": 27, "19142": 8, "193": 17, "195": 23, "197": 17, "1a": [11, 13, 17, 18, 20, 23, 27, 28, 29, 30], "1b": [11, 15, 20, 23], "1c": [11, 20, 23], "1d": 17, "1ffa7a82": 27, "1fr9ydlu0ve7m": 20, "1g": 30, "1gi": [15, 19, 28], "1h": 34, "1m": 17, "2": [2, 7, 12, 13, 14, 15, 17, 18, 20, 21, 23, 26, 27, 29, 31], "20": [14, 17, 21, 31], "200": 19, "200000000": 17, "2020": [17, 29], "20200816": 17, "2021": 31, "2022": 31, "2023": [12, 31], "20231205": 7, "2024": [6, 28, 31], "207": 15, "209": 23, "2097152": [13, 23], "20g": 13, "20mi": 15, "21": 31, "214": 28, "22": [18, 31], "226716": 14, "23": [17, 18], "231": [15, 27], "232323": 2, "236a0e10575b": 17, "237": 23, "238z": 17, "23t11": 17, "24": [2, 23, 28], "246": 18, "25": [17, 18, 23, 31], "250000000": 17, "250m": 23, "25126532803b": 17, "256": [23, 27], "26": 17, "27": [17, 23, 31], "275aae7f": 17, "28": [17, 31], "28169610": 17, "28m": 17, "29": 17, "290": 23, "2a": [20, 23], "2aa90ab29a99": 23, "2b": [20, 23], "2b9dbe8c": 17, "2c": [20, 23], "2g": 13, "2xlarg": 11, "3": [2, 7, 10, 11, 13, 15, 17, 23, 28, 29, 30, 31], "30": 13, "300": 13, "30000": 13, "30000000000": 17, "300000000000": 17, "30m": [18, 38], "30mi": 15, "31": 31, "32": 14, "3260": 2, "327f": 23, "32mi": 15, "33": 17, "336": 23, "35": 6, "35d0cb19": 27, "35ef": 27, "3619ae053778": 28, "37m": 17, "38": 17, "39": 23, "3d0a7b9305f7": 23, "3d2h10m": 2, "3h11m": 27, "3h12m": 27, "3h19m": 27, "3h21m": 27, "3h25m": 27, "3h27m": 27, "3h5m": 27, "4": [2, 7, 11, 13, 14, 15, 17, 28, 29, 30, 31], "400b2723": 17, "4062": 23, "407e": 28, "409mib": 28, "41": 6, "4128": 23, "42": 17, "422a": 17, "4271": 28, "43": [8, 15, 18, 27], "43200000000000": 17, "435z": 17, "44": 8, "443": [15, 19], "44af": 27, "458c": 28, "4703": 17, "4706": 27, "479e65fb8372": 17, "48": 28, "482b": 27, "49": 15, "494277b9": 23, "4974": 28, "49f2": 17, "4a25": 23, "4af9": 23, "4bb4": 17, "4c20": 17, "4c97": 17, "4c9c": 18, "4d45a39c7003": 27, "4d93": 23, "4db3": 23, "4def": 28, "4fc8": 17, "4m29": 15, "4q": 6, "5": [2, 6, 7, 10, 12, 17, 28, 29, 31], "50": 13, "50000000": 13, "5000000000": 17, "500gi": 30, "500m": 15, "500mi": 15, "503": 23, "5080": 17, "5090": [8, 15], "51": [15, 27], "511": 2, "519z": 17, "53": [15, 17], "54": 17, "559": 23, "56090": 17, "56112": 17, "56g": 23, "57": 17, "57228c52": 28, "58": 17, "5871": 38, "58a89e7a4231": 7, "59": 23, "5c8aae70": 6, "5dbcb54f5c": 15, "5g": 15, "5m": 19, "5m58": 15, "5m59": 15, "6": [2, 7, 13, 23, 28, 30, 31], "60": [15, 17], "600": [7, 18], "600000000": 17, "6004039f402e": 23, "619ada495c2a": 17, "62": [17, 27], "63": 27, "634": 23, "63642069": 28, "64b6292a": 23, "65b89d55bb": 19, "66": 18, "665dde7e": 23, "669db64dd": 15, "68c49e47ace1": 28, "69": 17, "6e7993cf42": 28, "6f31aaf1d6d3": 6, "6j12": 27, "6m46": 13, "7": [17, 23, 31], "70": 23, "7000": [8, 15, 18, 27], "7001": [8, 15, 18, 27], "705": 23, "7199": [8, 15, 18, 27], "74": 27, "750000000": 17, "759": 23, "764": 23, "76cc4dcc": 17, "77": 27, "7735": 38, "7a4f": 23, "7bd9f968b9": 17, "7c30ea55": 23, "7cf6": 28, "7d": 17, "7m43": 13, "8": [2, 14, 17, 19, 21, 31], "80": [2, 15], "8000": 13, "8043": [6, 8], "8080": 38, "844ccc56c4": 15, "84qtsfvm98qzmps8s65zr2vtpb8rg4sdzcbg4pbmg2pfhxwpg952654gj86tzdljfqnsghndljm58mmhpmwfgpsvjx2kkmnns8bnblmgkbl9n8l9f64rs6tcvttm7kmf": 23, "8511": 18, "852a": 23, "860": 2, "868e0f3396b2": 28, "86f7": 23, "87": 23, "87a4a6c65c3": 27, "882z": 17, "89": 15, "8a48": 18, "8b9d": 17, "8c54": 23, "8c8d": 28, "8ebd6114": 27, "8f5f": 27, "8m14": 27, "8th": 33, "9": [1, 2, 3, 27, 28, 29, 31, 38], "9042": [7, 8, 15, 18, 27], "91": 27, "9100": 8, "9142": [7, 8, 15, 18, 27], "9160": [8, 15, 18, 27], "9180": [8, 15, 18, 27], "92": 15, "9263": 17, "92a4": 27, "949f": 28, "951c": 28, "9521": 28, "95m": 38, "96": 18, "969c": 27, "9d11": 17, "9daa": 17, "9df4": 23, "9m49": 13, "A": [1, 2, 3, 11, 12, 13, 14, 15, 19, 20, 21, 23, 38], "ANDed": [1, 2, 3], "And": [10, 15], "As": [2, 10, 11, 14, 17, 20, 23, 28, 34], "At": [2, 6, 7, 14, 18, 29], "Be": 31, "By": [1, 2, 3, 12, 14, 15, 30, 34], "For": [1, 2, 3, 7, 8, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 23, 26, 30], "If": [1, 2, 3, 6, 7, 10, 11, 13, 14, 15, 17, 18, 19, 23, 29, 33, 34, 37], "In": [1, 2, 3, 4, 7, 8, 10, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 27, 28, 29, 30, 34, 38], "It": [2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 20, 21, 23, 29], "NOT": 2, "No": [2, 3], "ORed": [1, 2, 3], "On": [12, 30, 33], "One": 30, "Such": 12, "TO": 15, "That": 34, "The": [1, 2, 3, 6, 8, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 23, 30, 31, 33, 34], "Then": [13, 14, 15, 20, 21, 29], "There": [2, 3, 34, 37, 38], "These": [2, 11, 12, 14, 30, 38], "To": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 33, 35, 37, 38], "WITH": 13, "Will": 2, "With": [17, 21], "_trace_id": 17, "a3a98e08": 23, "a540": 28, "a66d": 17, "a969": 17, "a96a": 23, "a978": 27, "a99": 6, "ab015cef": 28, "ab7568b8a1bd": 17, "abc4": 28, "abc8": 28, "abil": [2, 3], "abl": [15, 20, 37], "about": [1, 2, 3, 7, 8, 10, 11, 12, 13, 14, 15, 21, 30], "abov": [8, 11, 13, 14, 15, 17, 19, 20, 21, 28, 38], "absolut": 2, "accept": [2, 3, 11, 31], "access": [2, 3, 5, 6, 7, 10, 12, 17, 28], "accessmod": [2, 3], "accord": [11, 13, 14, 18, 20, 29], "accordingli": 23, "account": [2, 10, 14], "across": [2, 3, 23, 30], "act": 2, "action": 31, "activ": 6, "actual": 1, "ad": [1, 2, 3, 6, 10, 13, 16, 20], "add": [2, 13, 15, 17, 18, 21, 23, 26, 27, 38], "addit": [3, 6, 8, 12, 15, 17, 18, 21, 28, 38], "addition": [12, 23], "additionaldnsnam": 2, "additionalipaddress": 2, "address": [2, 6, 8, 12, 19, 21, 23, 27], "adher": 5, "adhoc": 17, "adjust": [2, 4, 6, 7, 13, 19, 20, 21, 23, 34], "admin": [2, 7, 19, 34], "administr": 35, "advantag": 30, "advis": [23, 34, 37], "advisori": 31, "af1dd5cd": 28, "af2": 28, "afe6": 28, "affect": [2, 28, 34], "affin": [2, 3, 24], "after": [2, 3, 10, 11, 12, 13, 14, 15, 17, 27, 28], "afterward": [11, 14], "ag": [8, 13, 15, 17, 18, 27, 38], "again": [10, 18, 19, 26], "against": [13, 20, 21], "agemax": 17, "agent": [2, 15, 17, 23], "agentimag": 15, "agentrepositori": 2, "agentresourc": [23, 30], "agentvers": [2, 13, 23, 28, 30], "aggress": 2, "agreement": [17, 29], "ah": 21, "aim": 31, "aio": [2, 13, 23], "alia": 21, "aliv": 26, "all": [1, 2, 3, 5, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 28, 29, 30, 34], "alloc": [12, 15, 21], "allocateloadbalancernodeport": [2, 12], "allow": [1, 2, 3, 4, 8, 11, 13, 15, 19, 20, 21, 23, 26, 29, 30, 37], "alon": 2, "along": [2, 13], "alpha": [1, 2, 3, 11, 14, 31], "alphanumer": 2, "alreadi": [1, 2, 17, 19, 28, 29], "also": [1, 2, 3, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 34], "alter": 13, "altern": [9, 17, 19], "although": [10, 15, 18, 19, 20, 21, 23], "alwai": [6, 7, 8, 10, 13, 26, 30, 34], "amazon": [2, 11, 22, 23, 31], "amend": 18, "amount": [2, 3], "an": [1, 2, 3, 4, 7, 8, 10, 12, 13, 15, 16, 20, 21, 29, 30, 31, 34, 35, 37, 38], "analog": [20, 21], "ani": [1, 2, 3, 7, 10, 12, 14, 15, 18, 20, 21, 28, 30, 31], "annot": [8, 12, 19], "anoth": [1, 2, 3, 12, 18, 37], "anti": [1, 2, 3], "anymor": 2, "anyth": 13, "anyvolumedatasourc": [2, 3], "api": [1, 2, 3, 4, 6, 7, 10, 13, 16, 17, 19, 23, 28, 31, 34, 37], "apiaddress": 17, "apigroup": [2, 3, 18], "apiserv": [2, 37], "apivers": [1, 2, 3, 4, 7, 12, 18, 19, 20, 23, 28, 30, 38], "app": [13, 15, 19, 23, 28, 29, 38], "appear": 17, "append": [2, 13], "appli": [1, 2, 3, 10, 11, 13, 14, 15, 17, 18, 19, 23, 30, 33, 34, 38], "applic": [2, 15, 30], "approach": 2, "appropri": [8, 19], "approxim": 31, "apropri": 10, "ar": [1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31, 34, 35, 37, 38], "arbitrari": [2, 3], "architectur": [1, 2, 3, 4], "archiv": [34, 35], "aren": [2, 31], "argument": [13, 17, 34], "aris": 35, "around": [2, 30], "arrai": [1, 2, 3, 11, 14], "arrikto": 14, "artifact": 31, "artist": 6, "ask": 15, "aspect": [2, 3], "assess": 31, "assign": [12, 30], "associ": [1, 2, 3, 10, 13, 17, 18, 20, 21], "assum": [12, 19, 23, 34], "assumpt": 12, "asynchron": 13, "attach": [1, 2, 3, 13, 14, 18, 27, 34, 35], "attempt": [2, 17], "attribut": [2, 3, 6], "attributedefinit": 6, "attributenam": 6, "attributetyp": 6, "audienc": 2, "auth": 23, "auth_token": 23, "authent": [2, 6, 13, 34], "authn": 5, "author": [2, 6], "authz": 5, "auto": [2, 13], "autogener": 15, "autoh": 16, "autom": [15, 16, 17, 23, 38], "automat": [1, 2, 3, 8, 10, 13, 14, 17, 21, 25, 31, 38], "automaticorphanednodecleanup": [2, 23, 24], "autorepair": [14, 21], "autoupgrad": [14, 21], "auxiliari": 4, "avail": [1, 2, 3, 6, 7, 8, 12, 13, 14, 15, 17, 19, 23, 27, 28, 29, 30, 34, 38], "availabilityzon": 20, "availablememb": 2, "avoid": [1, 2, 6, 7, 10, 34, 37], "aw": [2, 8, 11, 12, 20], "awar": 13, "aws_access_key_id": 6, "aws_ca_bundl": 6, "aws_endpoint_url_dynamodb": 6, "aws_secret_access_kei": 6, "azur": 2, "b": [2, 10, 14, 21, 23, 26], "b4b390a1": 27, "b63eee4527e5": 27, "b7f3": 17, "ba0f": 28, "back": [1, 2, 3, 8, 12, 26, 27, 29], "backend": [2, 8, 12], "backup": [13, 16, 17, 25, 38], "backup_data": 29, "backup_loc": 28, "backward": [2, 3, 18, 38], "balanc": [2, 8, 12, 26], "bandwidth": 27, "bare": [17, 19], "base": [1, 2, 3, 6, 8, 10, 15, 30], "base64": [7, 19, 23], "bash": [4, 7], "bashtoolsimag": 4, "bcec": 17, "bcm4v": 15, "bd63": 23, "becaus": [2, 3, 6, 8, 12, 13, 17, 23, 27, 34], "becom": [24, 29, 31], "bed5": 28, "been": [2, 12, 13], "befor": [2, 10, 18, 19, 29, 31, 34, 37, 38], "begin": [16, 29], "begin_upgrad": 29, "behav": 2, "behavior": 2, "behaviour": [2, 10], "behind": 23, "being": [2, 3, 12, 13, 17, 23, 26, 27, 29, 31], "bellow": [6, 7], "below": [2, 13, 17, 18, 19, 20, 21, 23, 28, 30], "benchmark": [11, 14], "best": 13, "beta": [2, 3, 8, 12, 31], "better": [10, 14], "between": [2, 3, 13, 20, 21], "beyond": [19, 37], "binari": [2, 23, 34], "bind": [2, 3, 14], "bit": [2, 13, 15], "blank": 10, "blob": 2, "block": [2, 14, 37], "boolean": [1, 2, 3], "boot": [18, 29], "bootstrap": [15, 27], "both": [1, 2, 3, 12, 13, 15, 20, 21], "bottlerocket": 31, "bound": [18, 24, 27, 30], "box": 18, "branch": [31, 38], "break": [31, 37], "breez": 13, "bring": [26, 27, 29, 38], "broadcast": 2, "broadcast_address": 2, "broadcast_rpc_address": 2, "broadcastopt": [12, 23], "broken": 2, "brought": 38, "brows": 13, "browser": 10, "bucket": [2, 17], "bug": [10, 31, 35], "build": [22, 23, 31], "build_dat": 17, "built": [10, 12, 20, 21], "built_bi": 17, "bump": 18, "bundl": [2, 6, 7], "button": 10, "byte": [2, 3], "c": [2, 6, 7, 13, 21, 23, 27, 28], "c19c89cb": 23, "c29d": 17, "c29f63a917c8": 17, "c4": 11, "c41c": 27, "c436": 17, "c5ab2f47eb37": 23, "c881772ebe62": 23, "ca": [3, 6, 7, 15, 19], "ca71efd39b2": 23, "cacert": 19, "cach": 2, "cachingmod": 2, "calcul": 2, "call": [2, 8, 13, 14, 28, 30, 35, 37, 38], "caller": 19, "camelcas": [1, 2, 3, 4], "can": [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 29, 30, 34, 35, 37], "candid": 31, "cannot": [1, 2, 3, 4, 12, 17, 30], "capabl": [11, 12, 13, 14, 23], "capac": [2, 3, 11, 14, 15, 23, 28, 30], "care": [11, 12, 14], "carri": [10, 23], "case": [1, 2, 3, 8, 12, 13, 18, 20, 23, 25, 27, 30, 34, 37, 38], "cass": 13, "cassandra": [2, 6, 7, 11, 14], "cassandraauthor": 7, "cat": [7, 38], "categor": 3, "categori": [1, 2, 3], "caus": [18, 26, 27, 29, 30], "cd": [10, 11, 13, 14], "ceas": [1, 2, 3], "censor": 34, "center": 23, "central": 2, "ceph": 2, "cert": [2, 3, 18], "certain": [2, 13], "certfil": [7, 17], "certif": [2, 7, 13, 15, 19], "certificatesecretnam": 15, "cest": 17, "cf": 30, "cgroup": 31, "chang": [1, 2, 3, 8, 10, 12, 13, 14, 15, 17, 18, 19, 23, 28, 29, 30, 38], "changelog": 10, "channel": [2, 18, 20], "chap": 2, "chapauthdiscoveri": 2, "chapauthsess": 2, "charact": 2, "chart": [16, 19, 31, 38], "check": [2, 12, 13, 16, 17, 18, 27, 28, 29, 30, 34, 38], "check_schema_agr": 29, "checkout": [10, 18, 38], "chmod": 7, "choic": 7, "choos": [1, 2, 3, 13, 16, 23], "cidr": [20, 21], "citizen": 13, "claimnam": 2, "class": [2, 3, 12, 13, 30], "clean": 10, "cleanup": [2, 25, 29], "clear_data_backup": 29, "clear_system_backup": 29, "cli": [13, 15, 17, 21], "click": 10, "client": [1, 3, 4, 6, 7, 8, 10, 13, 15, 18, 19, 23, 27], "clone": [2, 13], "close": [10, 15], "cloud": [11, 12, 13, 14, 17, 19, 21, 23], "cluster": [1, 2, 3, 4, 6, 7, 15, 16, 18, 19, 24, 26, 27, 28, 29, 30, 31, 38], "cluster_id": 28, "cluster_ip": 7, "cluster_nam": [11, 13, 14], "cluster_vers": 14, "clusterconfig": 20, "clusterip": [6, 7, 8, 15, 18, 27], "clusterrol": [14, 18, 34], "clusterrolebind": [14, 34], "clustersharednodesecuritygroup": 20, "clustertrustbundleproject": 2, "cname": 19, "co": [1, 2, 3], "code": [31, 38], "collabor": 10, "collect": [2, 18, 19, 35], "colon": 10, "color": 6, "column": 18, "com": [5, 6, 8, 10, 11, 12, 13, 14, 15, 18, 19, 23, 28, 30, 34, 38], "combin": [1, 2, 3], "come": [11, 13, 14, 17, 30], "comma": 2, "command": [2, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 33, 34], "comment": 2, "commit": [2, 17, 31], "common": [11, 13, 14, 15, 18, 30, 34, 37, 38], "commonli": 10, "commun": [1, 2, 3, 4, 12, 20, 21, 23], "compar": [10, 18], "compat": [2, 3, 6], "complet": [2, 10, 13, 19, 27], "complex": [7, 12], "compon": [15, 17, 19, 31], "compos": [15, 23], "compromis": 2, "comput": [1, 2, 3, 14, 21], "concaten": 2, "concept": [2, 3, 6], "condit": [13, 15, 18, 19, 23, 28, 30, 38], "conditiontyp": 2, "config": [2, 3, 7, 13, 14, 17, 20, 21, 23, 34], "config_fil": 17, "configmap": [6, 7, 13], "configur": [1, 2, 3, 4, 6, 7, 8, 12, 17, 23, 28, 30, 37, 38], "conflict": [2, 10], "conform": [31, 37], "connect": [2, 6, 7, 8, 12, 13, 17, 20], "connections_per_host": 13, "consequ": 12, "consid": [2, 3, 18], "consider": [1, 2, 3], "consist": [2, 3, 15, 17, 23, 28, 30], "consistent_cluster_manag": 28, "consol": 10, "constitut": 1, "consult": [2, 17], "consum": [2, 3], "contact": [8, 23], "contain": [1, 2, 3, 12, 14, 15, 18, 21, 29, 31, 34, 35, 38], "containernam": 2, "content": [2, 3, 13, 14, 15, 28, 31], "context": [20, 21, 30, 34], "context_dc1": 23, "context_dc2": 23, "continu": [8, 10, 29], "contrari": 6, "contribut": 16, "contributor": [1, 2, 3, 4, 10], "control": [1, 2, 3, 8, 12, 14, 17, 18, 19, 23, 29, 37, 38], "controllerimag": 15, "controllerresourc": 15, "conveni": 19, "convent": [1, 2, 3, 4, 13], "convert": [1, 2, 3, 4], "copi": [2, 3, 6, 13, 34], "core": [2, 3, 13, 14, 30], "corev1": 2, "correct": [2, 17, 19], "correctli": [15, 31], "correspond": [1, 2, 3, 4, 20, 21], "correspondingli": 23, "cost": 12, "could": 15, "count": [13, 14, 17], "coupl": 30, "cours": 15, "cover": [12, 30], "cpu": [2, 11, 13, 14, 15, 23, 28, 30], "cpumanagerpolici": [11, 14], "cpuset": [2, 23], "cql": [6, 9, 13, 17, 28], "cql_user": 6, "cqlsh": [6, 13], "cqlshlib": 7, "cqlshrc": 7, "cr": 23, "crd": [5, 10, 13, 15, 17, 18, 30, 31, 38], "creat": [1, 2, 3, 4, 6, 7, 12, 15, 17, 18, 19, 23, 28, 30, 34, 38], "create_system_backup": 29, "createselfsignedcertif": 15, "creation": [2, 3, 11, 14, 17, 31], "credenti": [2, 7, 14, 17, 19, 28], "cri": 31, "cron": 2, "crossnamespacevolumedatasourc": [2, 3], "crt": [6, 7, 17, 19], "csi": [3, 11, 14], "curl": 19, "current": [1, 2, 3, 13, 15, 16, 19, 20, 21, 23, 29, 34, 37], "currentnod": 2, "currentrack": 2, "custom": [2, 3, 12, 17, 19, 20, 21, 28], "customiz": 15, "customresourcedefinit": [18, 38], "customzi": 15, "d": [2, 6, 7, 19, 23, 38], "d1d532cd": 17, "d446ff160747": 28, "d4946360": 17, "d7e1": 6, "daemon": 30, "daemonset": [27, 30], "daili": [2, 17], "dash": [2, 10], "data": [2, 3, 6, 7, 13, 14, 17, 19, 23, 27, 28, 29, 32, 38], "databas": [15, 17], "datacent": [3, 7, 13, 15, 16, 17, 20, 21, 27, 28, 30, 34], "datacenter_nam": 13, "dataset": 2, "datasetnam": 2, "datasetuuid": 2, "datasnapshottag": 2, "date": [1, 2, 3, 10, 15, 17, 23, 31, 38], "daunt": 13, "dc": [2, 17, 23], "dc1": [2, 23], "dc2": 23, "dc9842980080": 28, "dc_suffix": 13, "dead": 16, "debug": [17, 34], "decid": [15, 31], "decim": 2, "decis": 29, "decod": 13, "deconflict": [2, 3], "dedic": [2, 8, 12, 15, 17, 20, 21, 23, 28, 30, 34, 35], "dedupl": 2, "default": [1, 2, 3, 6, 7, 8, 12, 13, 14, 15, 17, 23, 27, 28, 30, 33, 34], "defaultmod": 2, "defin": [1, 2, 3, 4, 5, 12, 13, 15, 17, 23], "definit": [6, 12, 13, 14, 15, 17, 18, 29, 38], "degrad": [2, 3, 8, 19, 23, 28], "delet": [2, 13, 17, 18, 27, 29, 38], "delete_pod": 29, "demo": [11, 14, 27], "deni": [13, 21], "dep": 10, "depend": [2, 8, 10, 12, 18, 26, 27, 30, 31, 34], "deploi": [12, 16, 18, 38], "deploy": [13, 15, 17, 19, 21, 22, 23, 28, 29, 38], "deprec": 2, "describ": [1, 2, 3, 4, 11, 13, 14, 17, 18, 20, 21, 23, 28, 29, 38], "descript": [10, 15], "design": 2, "desir": [1, 2, 3, 4, 13, 15, 17, 29], "desiredcapac": 11, "destin": 20, "destroi": [13, 17, 23], "detach": 18, "detail": [1, 2, 3, 6, 13, 17, 19, 23, 30, 31], "detect": [29, 31], "determin": [2, 3, 10, 34], "dev": [1, 2, 4, 19], "devel": [1, 2, 3, 4], "develop": [2, 11, 14, 17, 19], "developermod": [2, 13, 28], "deviat": 34, "devic": [2, 11, 14, 30], "did": 10, "differ": [2, 3, 6, 7, 8, 11, 12, 13, 15, 17, 20, 21, 23, 30], "direct": [2, 3, 12, 13, 19, 21], "directli": [2, 6, 12, 21], "directori": [2, 10, 34, 38], "disabl": [2, 3, 7, 14, 15, 21, 26, 28, 29, 33], "disable_maintenance_mod": 29, "disableoptim": 1, "disadvantag": 8, "disallow": [2, 3], "disambigu": [18, 38], "discov": [6, 9, 12, 23], "discoveri": [2, 7], "discuss": 23, "disk": [1, 2, 11, 13, 14, 21, 27, 30], "disknam": 2, "diskspacefreeminperc": 17, "diskuri": 2, "displai": 29, "distinct": [12, 20, 21, 23], "distribut": 30, "divisor": 2, "dn": [2, 3, 8, 10, 12, 13, 19, 23, 26, 27], "dns1123subdomainfmt": [2, 3], "dns_label": 2, "dnsdomain": [2, 3, 19], "dnspolici": 2, "do": [1, 2, 3, 10, 13, 17, 19, 20, 21, 26, 35, 37, 38], "doc": [2, 3, 5, 11, 13, 28, 30, 37], "docker": [7, 10, 13, 15, 31, 38], "docker0": 33, "document": [2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 23], "doe": [1, 2, 3, 10, 13, 15, 17, 23], "doesn": [12, 13, 14, 37, 38], "doesnotexist": [1, 2, 3], "domain": [2, 3, 23], "don": [1, 2, 3, 6, 10, 11, 12, 14, 15, 34], "done": [7, 10, 11, 13, 14, 17, 28, 34], "dot": 2, "doubl": 30, "down": [1, 8, 13, 16, 23, 27], "download": [15, 28], "downscal": 16, "downtim": 18, "downward": 2, "downwardapivolum": 2, "downwardapivolumefil": 2, "drain": [2, 27, 29], "drain_nod": 29, "drbth": 15, "driver": [2, 3, 8, 11, 12, 13, 14], "drop": [2, 3], "dry": 13, "due": [1, 2, 3, 17, 23, 24], "durat": [2, 17, 28, 34], "dure": [1, 2, 3, 10, 23, 29, 38], "dynam": [2, 3, 11, 14], "dynamicresourcealloc": [2, 3], "dynamodb": 9, "e": [1, 2, 3, 6, 13, 34, 38], "e2": 31, "e24c": 23, "e420": 23, "each": [1, 2, 3, 12, 13, 14, 15, 17, 18, 20, 21, 23, 29, 30, 38], "earlier": [11, 14, 20, 23], "easi": 13, "easier": [13, 18, 19, 38], "easiest": 14, "easili": [20, 21], "east": [11, 13, 15, 17, 18, 20, 23, 27, 28, 29, 30], "east1": [21, 26], "eb": 2, "ebd82268": 28, "echo": [6, 19], "ecosystem": 8, "edit": [10, 11, 13, 14, 17], "editor": 7, "eec5": 17, "efb7": 28, "effect": [1, 2, 3, 23, 28], "effic": 30, "eg": 13, "either": [2, 3, 13, 15, 17], "ek": [8, 12, 16, 22, 23, 31], "eks_region": 11, "eks_zon": 11, "eksctl": [11, 20], "element": [1, 2, 3], "elig": 31, "els": [10, 19], "embed": [2, 34, 35], "emerg": 4, "empti": [1, 2, 3, 7, 13, 28], "enabl": [1, 2, 3, 6, 7, 12, 13, 14, 17, 20, 21, 23, 24, 26, 28, 29, 33], "enable_maintenance_mod": 29, "encod": 2, "encrypt": 7, "end": [10, 18, 19, 28, 31], "endpoint": [1, 2, 3, 4, 7, 13], "endpointsselector": 19, "enforc": 30, "enhanc": 23, "enough": [2, 6, 34], "ensur": [2, 10, 13, 18, 28], "enter": [10, 15, 27, 29], "enterpris": [12, 16, 17, 28, 31], "entir": [2, 3, 12, 13, 23, 30], "entri": [2, 3, 13], "entrypoint": 7, "env": [2, 13, 34], "environ": [2, 7, 10, 12, 13, 15, 18, 23, 34], "eof": 7, "ephemer": [8, 23], "ephemeralvolumesourc": 2, "eq": 19, "equal": [1, 2, 3, 13, 23, 30], "equival": [1, 2, 3, 12], "error": [2, 3, 6, 13, 14, 17, 29, 34], "errorbackoff": 17, "esoter": 2, "esp": 21, "especi": 8, "establish": [12, 13, 20, 21, 38], "etc": [1, 2, 3, 17, 19, 30, 31], "eval": 13, "evalu": 2, "even": [10, 29], "event": 13, "eventu": [1, 2, 3], "everi": [2, 3, 6, 7, 8, 12, 13, 23, 29, 31], "everyon": 31, "everyth": [2, 10, 11, 13, 14, 15, 29], "evict": [1, 2, 3], "ex": [2, 14], "exactli": [15, 31], "examin": [13, 17], "exampl": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 28, 29, 30, 34, 38], "exce": [2, 3], "except": [11, 14], "exclud": 2, "exclus": [2, 12, 30], "exec": [2, 6, 7, 13, 17, 23, 27, 28, 34], "execut": [1, 2, 3, 15, 17, 18, 23, 28, 29, 30, 33], "exemplari": [20, 21], "exist": [1, 2, 3, 13, 17, 18, 23, 29, 31, 34, 38], "exit": 13, "expand": 2, "expect": [2, 3, 23, 38], "experi": [11, 14], "experiment": [2, 16, 19, 30, 38], "expir": 2, "expirationsecond": 2, "explain": [12, 19, 20, 21, 30], "explicit": 24, "explicitli": [2, 3, 7], "export": [2, 6, 11, 14, 34], "expos": [2, 3, 6, 16, 23], "exposeopt": [12, 19, 23], "exposur": 8, "express": [1, 2, 3, 15], "ext4": 2, "extend": [2, 13, 37], "extern": [2, 3, 8, 12, 15, 18, 19, 27, 34], "external_ip": 19, "externalse": [2, 23], "externaltrafficpolici": [2, 12], "extra": [2, 4, 13, 34], "extract": [18, 23], "f": [2, 11, 13, 14, 15, 17, 18, 19, 20, 23, 38], "f17db261": 21, "fa78d3992694": 18, "facilit": 12, "factor": [2, 13, 34], "factori": 7, "fail": [2, 13, 17, 19, 27, 28, 33], "failfast": 2, "failur": [2, 26, 27, 29], "failurestrategi": 2, "fallback": 23, "fals": [1, 2, 3, 15, 17, 19, 21, 23, 28], "fast": 13, "faster": 2, "featur": [1, 2, 3, 10, 30], "feel": [13, 34], "fetch": 10, "few": 34, "ff36d7e0": 28, "fibr": 2, "field": [1, 2, 3, 4, 12, 13, 15, 19, 23, 29, 34], "fieldpath": 2, "file": [1, 2, 6, 7, 10, 13, 14, 15, 18, 20, 28, 34, 37, 38], "filesystem": [2, 3, 11, 14, 26], "filesystemconfigur": 1, "filter": [1, 21], "find": [1, 2, 3, 5, 6, 7, 13, 15, 19, 29, 37, 38], "find_next_nod": 29, "find_next_rack": 29, "finish": [2, 3, 13, 28], "finish_upgrad": 29, "firewal": 37, "first": [2, 10, 11, 13, 14, 15, 17, 18, 19, 28, 29, 30, 38], "fit": [1, 10, 12], "fix": [2, 8, 10, 31, 33], "flag": [2, 20, 21, 24, 34, 38], "flow": 20, "focus": [11, 14], "folder": [7, 11, 14, 34], "follow": [2, 7, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 23, 28, 29, 31, 33, 38], "follw": 15, "foo": [2, 3, 28], "foostatu": [2, 3], "forbid_rmw": 13, "forbidden": [1, 2, 3], "forc": [2, 14], "forceredeploymentreason": [2, 23, 28], "forev": [1, 2, 3], "forgotten": 10, "form": [11, 14, 34], "format": [2, 14, 17, 21, 29], "formula": 2, "fortun": 13, "forward": 2, "found": [11, 13, 14], "free": [13, 14, 34], "freez": 31, "fresh": [28, 38], "from": [1, 2, 3, 4, 6, 8, 10, 11, 12, 13, 14, 15, 18, 19, 20, 23, 25, 26, 27, 29, 30, 31, 34, 38], "fromvers": 2, "front": [2, 26], "frontend": 17, "fsgroup": 2, "fstype": [1, 2], "fulfil": 30, "full": [2, 11, 13, 14, 17, 18, 27, 29], "fullfil": 15, "fulli": [17, 23], "function": [2, 3, 23, 31, 37], "further": 12, "futur": [2, 7, 19, 20, 21], "g": [1, 2, 3, 6, 14, 18, 38], "ga": 31, "garbag": 18, "gate": [1, 2, 3], "gatewai": [2, 3], "gather": 32, "gb": 13, "gc": 2, "gce": 2, "gcloud": [14, 21], "gcp": [14, 21], "gcp_project": 14, "gcp_region": 14, "gcp_user": 14, "gcp_zone": 14, "gen": 13, "gener": [1, 2, 3, 4, 10, 11, 12, 13, 14, 17, 18, 19, 29, 38], "get": [2, 3, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 34, 38], "gib": [2, 15], "git": [1, 2, 3, 4, 10, 13, 18, 31, 38], "github": [6, 10, 13, 16, 19, 31, 34], "give": [2, 10, 13, 14, 17, 31], "given": [1, 2, 3, 20, 27, 30, 34], "gke": [8, 12, 13, 16, 22, 23, 27, 31], "glob": 2, "global": 2, "go": [1, 2, 10, 13, 15, 18, 23, 27, 38], "go_vers": 17, "goe": 34, "good": [10, 12, 15], "googl": 21, "googleapi": [15, 38], "gopath": 10, "gracefulli": 2, "grafana": [4, 13, 16], "grafana_password": 19, "grafana_serving_cert": 19, "grafana_us": 19, "grafanaimag": 4, "grant": 18, "granular": 2, "greatest": [1, 2, 3], "group": [1, 2, 3], "gt": [1, 2, 3], "guarante": [2, 3, 14, 30], "guid": [3, 11, 13, 14, 15, 17, 18, 20, 21, 23, 38], "guidanc": [20, 21], "h": [2, 13], "ha": [1, 2, 3, 7, 8, 10, 12, 13, 14, 20, 23, 28, 31], "hack": 13, "hacki": 18, "hairpin": 33, "handl": [2, 14], "happen": [2, 13, 29], "hard": 14, "hardwar": 15, "hash": [2, 6, 21], "have": [1, 2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 29, 30, 34, 37, 38], "head": 10, "header": 2, "headless": 23, "healhcheck": 17, "healthcheck": 17, "healthcheck_rest": 17, "healthz": 38, "helm": [13, 16, 19, 31], "help": [7, 12, 13, 16, 34, 35], "here": [2, 3, 6, 7, 8, 10, 13, 34, 38], "hi": 24, "high": 23, "higher": [2, 3], "highest": [1, 2, 3], "highli": [11, 13, 14], "histori": 7, "hit": [31, 34], "hold": [1, 2, 3], "home": 10, "hop": 8, "host": [1, 2, 10, 13, 17, 19, 23, 27, 31], "hostnam": [2, 7, 8, 12, 23], "hostnetwork": [2, 37], "hour": 2, "hourli": 2, "how": [2, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 19, 27, 28, 34, 37], "howev": [23, 30], "html": 11, "http": [1, 2, 3, 4, 5, 6, 10, 11, 13, 15, 17, 19, 34, 38], "http_code": 19, "httpget": 38, "hub": 15, "human": [1, 2, 3, 23], "i": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 27, 28, 29, 30, 31, 33, 34, 37, 38], "i3": 11, "iam": 14, "icmp": 21, "id": [2, 17, 20, 23, 27, 28], "ideal": 13, "identif": 2, "identifi": [2, 3, 27, 28], "ie": 13, "ifnotpres": 15, "ignor": [1, 2, 3, 27], "ill": 23, "imag": [1, 2, 4, 10, 14, 18, 21, 29, 30, 31, 38], "imagepath": 1, "imagin": 10, "img": 10, "immedi": [1, 2, 3, 30], "immut": [2, 3, 12], "impact": 2, "implement": [1, 2, 3, 10, 23], "impli": [2, 3, 12], "implicit": [1, 2, 3], "implicitli": 2, "import": [2, 3, 8, 13, 14, 31], "improv": 11, "inbound": 20, "incid": 24, "includ": [2, 3, 10, 15, 21, 35, 37], "incom": [1, 2, 3], "incompat": [18, 31, 38], "inconsequenti": 13, "incorpor": 12, "increas": [2, 13], "independ": [12, 23, 37], "index": [6, 7, 19, 23], "indic": [1, 2, 3], "individu": [2, 11, 14], "infer": [1, 2, 3, 4], "infinit": 17, "info": [1, 2, 3, 4, 17, 34], "inform": [2, 13, 19, 20, 21, 23, 29, 35, 37], "infrastructur": [2, 20, 21, 23], "ingress": [6, 8, 12, 21, 37], "ingress_ip": 19, "ingress_port": 19, "ingressclassnam": [2, 3, 19], "initcontain": [2, 18], "initi": [2, 8, 18, 23], "initiatornam": 2, "inject": 14, "insecur": 2, "insecuredisableauthor": 2, "insecureenableanonymousaccess": 3, "insecureenablehttp": 2, "insid": [2, 3, 11, 13, 14, 26], "inspect": 10, "instal": [2, 3, 10, 13, 16, 17, 18, 19, 20, 21, 23, 34, 36, 38], "instanc": [1, 2, 3, 4, 13, 14, 15, 17, 18, 19, 20, 21, 23, 30], "instance_numb": 13, "instancetyp": 11, "instead": [2, 7, 13, 37], "instruct": [11, 13, 14, 15, 18, 20], "integ": [1, 2, 3, 4], "integr": [2, 7, 10, 16, 23], "intend": [2, 3], "intens": [2, 28], "inter": [2, 12, 22, 23], "interact": [13, 26, 31], "interconnect": [12, 20, 21, 22], "interest": 15, "interfac": [2, 3, 14, 21], "intern": [1, 2, 3, 4, 8, 12, 15, 17], "internal_ip": 19, "internalip": 19, "internaltrafficpolici": [2, 12], "interpret": [1, 2, 3], "interrupt": 30, "intersect": [1, 2, 3], "interv": [2, 17], "intervent": 23, "introduc": [13, 19, 23, 30], "involv": 18, "io": [1, 2, 3, 4, 5, 7, 8, 11, 12, 13, 19, 20, 23, 31, 34, 38], "ip": [2, 6, 8, 12, 13, 15, 18, 19, 21, 23, 27, 33], "ip_addr": 2, "ipaddress": 12, "ipv4": [20, 21], "iqn": 2, "irq": 30, "iscsiinterfac": 2, "isn": [1, 2, 3, 15, 28], "isol": [2, 13], "issu": [6, 8, 10, 16, 17, 18, 29, 31, 32, 34, 36, 38], "issuer": 13, "item": 19, "iter": [1, 2, 3], "its": [1, 2, 3, 8, 11, 13, 14, 17, 18, 20, 21, 23], "itself": [2, 10, 15, 17, 26], "jan": 28, "job": [2, 13, 31], "join": [23, 27], "jonesdl": 2, "json": [2, 3, 18, 23], "jsonpath": [6, 7, 8], "just": [1, 2, 3, 8, 10, 11, 13, 14], "k8": [1, 2, 3, 4, 15, 16, 17, 18, 25, 26, 27, 30], "kb": [23, 27], "keep": [10, 11, 14], "kei": [1, 2, 3, 6, 7, 12, 13, 17, 23, 34], "kept": 13, "kernel": [30, 31], "keyr": 2, "keyschema": 6, "keyspac": [2, 13, 17, 28, 29], "keytyp": 6, "kind": [1, 2, 3, 4, 7, 12, 18, 19, 20, 23, 28, 30, 38], "know": 12, "known": [2, 3, 20, 31, 32], "kube": 34, "kubebuild": 10, "kubeconfig": 34, "kubectl": [6, 7, 8, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 30, 34], "kubelet": [2, 11, 14, 30, 31], "kubeletconfig": 14, "kubeletextraconfig": 11, "kubernet": [2, 3, 5, 6, 7, 11, 12, 15, 16, 18, 19, 34, 37], "kustom": 10, "l": [13, 15, 17, 18, 19, 28, 34], "label": [1, 11, 13, 14, 19, 23, 26, 27, 30], "labelselector": 23, "lack": 17, "land": [15, 30], "larg": [11, 34], "last": [1, 2, 3, 10], "lasttransitiontim": [1, 2, 3], "latenc": 12, "later": [11, 14], "latest": [1, 2, 3, 4, 10, 11, 16, 31, 34], "latter": 8, "launch": [11, 14], "lb": 12, "leak": 7, "learn": [2, 7, 8, 12, 20, 28, 35], "least": [2, 10, 14, 15, 23, 30, 34], "leav": [2, 23, 27, 30], "left": 29, "less": [10, 18, 19, 38], "lesson": 16, "let": [2, 11, 14, 15, 17, 23, 34], "level": [2, 13, 17], "lib": 17, "licens": 17, "life": [13, 27], "lifecycl": [2, 10, 23], "lifetim": 2, "light": 2, "like": [2, 3, 6, 8, 10, 13, 16, 17, 18, 19, 27, 30, 31, 34], "likelihood": 23, "limit": [13, 15, 17, 23, 28, 30], "line": [10, 20, 21, 23], "link": [2, 10, 33], "linux": [13, 31], "list": [1, 2, 3, 6, 10, 13, 14, 17, 18, 21, 28, 38], "listkind": [1, 2, 3, 4], "listmapkei": [2, 3], "listtyp": [2, 3], "littl": 13, "live": [2, 26], "livenessprob": 38, "ll": [11, 14, 28, 34], "load": [2, 8, 12, 23, 26, 27], "loadbalanc": [8, 19], "loadbalancerclass": [2, 12], "local": [1, 2, 3, 6, 7, 8, 10, 19, 20, 23, 27], "localdc": 17, "localobjectrefer": 2, "locat": [1, 2, 3, 17, 21, 28, 34], "log": [2, 10, 13, 17, 29], "logger": 17, "logic": [2, 10, 12], "login": 2, "loglevel": 17, "long": [2, 8], "longer": [2, 10, 13, 14, 23, 27], "look": [2, 3, 8, 10, 13, 15, 18, 23, 34], "lookup": [1, 2, 3, 18], "loop": [1, 10], "loopdeviceconfigur": 1, "lose": [10, 24], "lost": 25, "lot": 38, "lower": [2, 3, 18], "lqejv3kdr5gx9m3xq2ynnq": 17, "lsetxattr": 34, "lt": [1, 2, 3], "lun": 2, "m": [2, 17], "ma": 15, "machin": [2, 11, 13, 14, 19, 21, 34], "machineri": 23, "made": [2, 10, 12, 31], "mai": [1, 2, 3, 4, 7, 8, 12, 19, 23, 24, 26, 27, 29, 30, 31, 34, 38], "main": [13, 15, 17, 23], "maintain": [10, 31], "mainten": [25, 29], "make": [2, 3, 6, 7, 8, 10, 13, 14, 15, 17, 18, 19, 23, 27, 28, 31, 34, 37, 38], "makefil": 10, "manag": [2, 3, 12, 14, 16, 18, 20, 21, 27, 28, 30, 31, 34, 38], "managerid": 2, "mang": 2, "mani": [2, 3, 15, 19, 30, 34], "manifest": [13, 23, 38], "manual": [2, 3, 6, 7, 13, 14, 18, 19, 21, 23, 28, 29, 34, 37, 38], "map": [1, 2, 3, 17], "mark": 2, "master": [2, 10, 31], "match": [1, 2, 3, 14, 19, 30, 31], "matchexpress": 23, "matchlabel": [19, 23], "matchlabelkei": [1, 2, 3], "matchlabelkeysinpodaffin": [1, 2, 3], "matter": 19, "max": [2, 13, 23], "max_repair_ranges_in_parallel": 2, "maximum": [2, 3, 11, 14], "md": [1, 2, 3, 4], "mean": [1, 2, 3, 13, 18], "meant": 2, "mechan": 23, "medium": 2, "meet": [1, 2, 3, 23, 30], "megabyt": 2, "member": [2, 3, 8, 13, 15, 17, 18, 19, 23, 28, 29, 30], "memori": [2, 13, 15, 23, 28, 30, 31], "mention": [8, 34], "merg": [1, 2, 3, 6, 10, 12, 23, 28, 29, 31], "messag": [1, 2, 3, 13, 17, 29], "met": [1, 2, 3, 19, 23, 28], "metadata": [7, 8, 18, 19, 20, 23, 28, 30], "metal": [17, 19], "metav1": [2, 3], "metric": [12, 13, 15], "mib": 2, "midnight": 2, "might": [2, 12, 18, 27, 31], "migrat": [33, 38], "migratedir": 17, "migratemaxwaitschemaagr": 17, "migratetimeout": 17, "mikefarah": 34, "mini": 13, "minifi": 34, "minikub": [13, 15], "minim": [10, 15], "minimum": [2, 3], "minor": 38, "minreadysecond": 2, "minterminationgraceperiodsecond": 2, "minut": [2, 29], "mirror": 2, "mismatchlabelkei": [1, 2, 3], "mission": 17, "mistak": 2, "mitig": 8, "mkdir": 10, "mktemp": [6, 7, 34, 38], "mnt": 17, "mode": [2, 3, 11, 14, 17, 21, 25, 29, 34], "model": [1, 21], "modelregex": 1, "modif": 6, "modifi": [3, 10, 13, 14, 21, 29, 37], "modifyvolumestatu": [2, 3], "moment": 2, "monitor": [2, 3, 11, 14, 16, 23, 31], "month": 10, "monthli": 2, "more": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 19, 20, 21, 23, 27, 30, 34, 35, 37], "most": [1, 2, 3, 4, 10, 11, 14, 15, 19, 23, 30], "mount": [2, 11, 13, 14, 34], "mountconfigur": 1, "mountpath": 2, "mountpoint": 1, "mountpropag": 2, "mountpropagationnon": 2, "move": [23, 27, 29, 30], "much": [15, 27], "multi": [16, 20, 21, 34], "multipl": [1, 2, 3, 10, 12, 13, 17, 18, 22], "musiccollect": 6, "must": [1, 2, 3, 10, 12, 13, 17, 23, 27, 29, 30, 31, 32, 35, 38], "must_gather_token": 34, "mutat": [2, 3, 4, 38], "mutatingwebhookconfigur": 38, "mutual": 2, "my": [2, 12, 17], "mydomain": 19, "mysql": 2, "n": [2, 11, 13, 14, 15, 17, 18, 19, 23, 26, 27, 28, 29, 31, 34, 38], "n1": [14, 21], "name": [1, 2, 3, 6, 7, 8, 10, 11, 13, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 34, 38], "nameregex": 1, "namespac": [1, 2, 3, 8, 13, 15, 17, 18, 23, 30, 38], "namespace_with_broken_scyllaclust": 34, "nativ": [7, 13, 21], "natur": [23, 30], "navig": 10, "necessari": [2, 11, 13, 14, 19, 20, 21, 23, 34], "need": [2, 6, 7, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31, 34, 37, 38], "neg": [1, 2, 3], "network": [3, 6, 7, 8, 10, 12, 16, 22, 27, 30, 37], "networktopologystrategi": 13, "never": [10, 38], "new": [2, 3, 10, 13, 14, 16, 17, 18, 19, 20, 23, 27, 29, 30, 31, 38], "new_replication_factor": 13, "newli": [2, 18], "next": [17, 29], "nightli": 29, "nil": 2, "node": [1, 3, 6, 7, 9, 13, 15, 16, 17, 18, 19, 26, 28, 29], "nodeaffin": 23, "nodeconfig": [0, 5, 11, 14, 30], "nodeconfiglist": 1, "nodegroup": [11, 20], "nodepool": 14, "nodepublishvolum": 2, "nodeselector": [13, 30], "nodeselectorterm": 23, "nodeservic": [12, 23], "nodetool": [23, 27], "nodeunpublishvolum": 2, "noexecut": [1, 2, 3], "non": [1, 2, 3, 20, 23, 29], "none": [2, 8, 15, 18, 27], "nor": 6, "normal": [2, 23, 27], "noschedul": [1, 2, 3, 11, 14, 23], "notabl": 23, "note": [2, 3, 7, 13, 17, 19, 38], "noth": [2, 18], "notic": [2, 15, 19], "notin": [1, 2, 3], "now": [2, 6, 10, 11, 13, 14, 17, 18, 20, 21, 23], "nr": [2, 13, 23], "ntf": 2, "null": [1, 2, 3, 19], "num": [13, 14, 17, 21], "num_job": 13, "number": [2, 10, 13, 38], "numretri": 2, "nutshel": 10, "nvme": [11, 14], "o": [6, 7, 8, 13, 18, 19, 28, 31, 34], "object": [1, 2, 3, 4, 12, 13, 19, 23, 38], "observ": [1, 2, 3, 4, 15, 29], "observedgener": [1, 2, 3, 4], "obtain": [2, 14], "obviou": 10, "octal": 2, "off": [1, 10, 13, 26, 29, 31, 38], "offici": [18, 31], "often": [2, 19, 37], "ok": 13, "old": [18, 27, 38], "older": 2, "omit": [2, 3, 20], "omitempti": [2, 3], "onc": [2, 3, 10, 11, 13, 14, 15, 17, 20, 21, 29, 38], "ondelet": 29, "one": [1, 2, 3, 8, 10, 12, 13, 15, 17, 18, 21, 23, 24, 27, 29, 34, 38], "ones": [1, 2, 3, 12, 20, 38], "ongo": 2, "onli": [1, 2, 3, 6, 8, 11, 13, 18, 20, 21, 23, 29, 30, 31, 34, 38], "only_rmw_uses_lwt": 13, "onto": [1, 2, 3], "op": [1, 2, 3, 13, 18, 23], "open": [10, 12, 13, 16, 17], "openstack": 2, "oper": [1, 2, 3, 4, 5, 6, 7, 8, 12, 17, 18, 23, 24, 26, 27, 29, 30, 31, 34, 35, 37], "opt": 7, "optim": [1, 2, 11, 14, 30], "option": [1, 3, 6, 7, 11, 13, 14, 15, 17, 23, 30, 34], "optmiz": 30, "order": [2, 10, 12, 13, 14, 17, 23, 38], "organ": 3, "origin": [10, 23], "orphan": 2, "other": [1, 2, 3, 6, 8, 10, 12, 14, 15, 16, 17, 19, 20, 21, 23, 27, 30, 31, 34], "otherdc": 2, "otherwis": [1, 2, 3, 10, 19, 20, 31], "our": [6, 8, 13, 18, 23, 30, 31, 34, 35, 38], "out": [1, 2, 3, 5, 6, 16, 18, 23, 29, 30, 38], "output": [2, 6, 10, 13, 17, 18, 21, 23, 28], "outsid": [8, 12, 19], "over": [1, 2, 3, 7, 11, 14, 23, 27, 29], "overal": 2, "overlap": [20, 21], "overrid": [2, 13], "overview": [2, 32], "overwrit": 15, "own": [2, 4, 11, 14, 15, 23, 27], "owner": [2, 3], "ownerrefer": 18, "p": [8, 10, 13, 14, 18, 23, 28, 29, 38], "packet": [19, 30], "page": [7, 8, 12, 21, 38], "paid": 35, "pair": [1, 2, 3, 12, 13], "paragraph": [6, 7], "parallel": [2, 28, 29], "paramet": [2, 23], "part": [2, 8, 30], "parti": [2, 3, 19], "particular": [1, 2, 3, 8, 12, 13, 15, 23, 29, 31], "partit": 2, "pass": [1, 2, 10, 12, 14, 31, 37], "passthrough": 19, "password": [6, 7, 13, 17, 19], "passwordauthent": [7, 13], "patch": [1, 2, 3, 8, 18, 23, 28, 29, 38], "patchmergekei": [2, 3], "patchstrategi": [2, 3], "path": [1, 2, 3, 10, 13, 18, 23, 34, 38], "pattern": [2, 13, 15, 34], "pcx": 20, "pd": [2, 14, 21], "pdb": 14, "pdid": 2, "pdname": 2, "peer": 23, "pem": 2, "pend": [2, 3, 27], "per": [1, 2, 3, 8, 13], "percent": 2, "perform": [2, 11, 13, 14, 16, 24, 31], "perftun": 30, "period": [1, 2, 3, 18], "perman": 7, "permiss": [2, 14, 17, 18], "permit": 21, "persist": [2, 3, 14, 17], "persistentvolum": [2, 3, 11, 13, 14], "persistentvolumeclaim": 3, "persistentvolumeclaimvolumesourc": 2, "photon": 2, "photoncontrol": 2, "pick": [13, 23], "pid": 17, "piec": 31, "pin": [2, 30, 38], "placement": [23, 30], "plain": 13, "plaintextauthprovid": 7, "plane": [37, 38], "platform": [3, 12, 13, 19, 20, 21, 22], "pleas": [2, 6, 7, 10, 15, 30, 34, 37, 38], "plugin": [2, 34], "pluralnam": [1, 2, 3, 4], "pod": [1, 2, 3, 7, 8, 11, 12, 13, 14, 15, 17, 18, 19, 21, 23, 24, 26, 27, 29, 30, 34, 37], "podantiaffin": 23, "podman": 7, "podreadinessg": 2, "podspec": [2, 3], "point": [1, 2, 3, 7, 8, 12, 14, 18, 19, 23, 29, 34], "polici": [2, 10, 11, 12, 14, 15, 30], "poll": 2, "pollinterv": [2, 17], "pool": [2, 11, 14, 21, 23, 27, 30], "popul": [2, 3, 13], "port": [2, 7, 8, 13, 15, 18, 19, 20, 27, 28, 38], "portal": 2, "portworx": 2, "possibl": [2, 27], "post": 28, "potenti": 2, "power": [10, 30], "pr": 10, "pre": [2, 30], "preconfigur": 20, "predefin": [20, 21, 34], "predict": 17, "prefer": [11, 14, 20, 21], "prefer_loc": 13, "prefernoschedul": [1, 2, 3], "prefix": 10, "prepar": [10, 22, 23], "present": [2, 6, 17, 20], "preserv": [2, 3, 38], "press": 8, "prevent": 2, "previou": [2, 3, 18, 29], "print": [13, 29], "printf": 38, "prior": 17, "prioriti": 21, "privat": 20, "privileg": 2, "proactiv": 2, "probe": [26, 38], "procedur": [2, 16, 23, 27, 28, 29, 38], "process": [13, 14, 20, 21, 23, 26, 29, 30, 38], "prod": 17, "produc": [2, 3], "product": [13, 17, 18, 19, 23, 30], "profil": 2, "programmat": [2, 3], "progress": [2, 3, 8, 17, 19, 23, 28], "project": [14, 16], "prometh": 15, "prometheu": [4, 13, 15, 16, 17], "prometheusscrapeinterv": 17, "prometheusvers": 4, "promisc": 33, "prompt": 10, "prone": 13, "propag": [2, 12, 13, 18, 23], "proper": 13, "properli": [19, 29, 37, 38], "properti": [1, 2, 3, 4, 10, 12, 13], "propos": 23, "proprietari": 17, "protect": 2, "protectiondomain": 2, "protobuf": [2, 3], "protocol": [6, 7, 8, 12, 20], "provid": [2, 5, 6, 8, 11, 12, 13, 14, 15, 19, 20, 23, 30, 35, 37], "provis": [2, 6, 11, 12, 13, 14, 15, 23], "provision": [2, 3, 20, 21, 23], "provisionedthroughput": 6, "public": 12, "publicroutet": 20, "publish": [2, 31], "pull": [2, 15, 34, 38], "pullpolici": 15, "pure": 13, "purpos": [2, 3, 4, 14, 34], "push": 10, "put": [1, 10], "pvc": [2, 3, 24], "pwd": 34, "py": 13, "python": [13, 30], "qa": 31, "qo": 30, "qualifi": 2, "qualifiednamefmt": [2, 3], "qualiti": 31, "queri": [1, 2, 3], "queryabl": 3, "question": 18, "quick": 6, "quickli": 10, "quota": 30, "r": [6, 11], "rack": [8, 13, 15, 16, 17, 23, 27, 28, 29, 30], "rack_nam": 13, "rackcount": 2, "rackdc": [2, 13], "rackspec": 2, "rado": 2, "raft": 28, "raid": [11, 14], "raid0": [11, 14], "raidconfigur": 1, "random": 23, "rang": [1, 2, 3, 6, 19, 20, 21], "rate": [2, 13], "ratelimit": 2, "rather": [2, 31], "raw": [14, 34], "rbac": 14, "rbduser": 2, "rc": 31, "re": [8, 10, 18, 38], "reach": [8, 12, 17, 19, 29, 37], "reachabl": [2, 3, 12, 19], "read": [2, 10, 11, 13, 14, 15, 18], "readabl": [1, 2, 3, 20], "readcapacityunit": 6, "readi": [2, 8, 10, 13, 15, 17, 18, 20, 21, 26, 27, 29, 38], "readinessprob": 38, "readm": 2, "readonli": 2, "readymemb": 2, "readyz": 38, "real": [2, 19], "reason": [1, 2, 3, 7, 15], "rebas": 10, "reboot": 30, "receiv": 30, "recent": [1, 2, 3, 4, 10], "recipi": 2, "recogn": [1, 2, 3, 4], "recommend": [7, 13, 19, 23, 30, 31, 38], "reconcil": [2, 10, 19], "reconfigur": 37, "reconstruct": 2, "record": [2, 3, 8, 12, 19], "recov": 29, "recovervolumeexpansionfailur": [2, 3], "recreat": [27, 38], "recur": 17, "refer": [2, 3, 6, 7, 11, 13, 14, 15, 16, 18, 19, 20, 21, 23, 28, 31, 38], "referenc": [2, 3], "referencegr": [2, 3], "reflect": [2, 3], "refus": 29, "regard": [12, 18, 21, 23], "regex": [2, 3], "region": [14, 20, 21, 23], "regist": [2, 17, 18, 28], "registri": [2, 26], "regular": [1, 2, 3, 13, 17], "reject": [1, 2, 3, 4], "rel": [1, 2, 3], "relat": [1, 2, 3, 12, 16, 23, 34], "relationship": [1, 2, 3], "releas": [7, 16, 38], "release_nam": 38, "relev": 10, "reli": 2, "reliabl": 12, "rememb": [10, 13], "remot": [3, 6], "remov": [2, 10, 13, 15, 18, 23, 24, 26, 29, 34, 38], "render": 4, "reorder": 10, "rep": [2, 3], "repair": [14, 16, 17, 27, 28], "replac": [1, 2, 3, 8, 13, 16, 18, 19, 23, 25, 28, 34, 38], "replic": [2, 3, 13], "replica": [2, 29], "replicaset": 15, "replication_factor": 13, "replicationfactor": 17, "repo": [2, 10, 15, 18, 38], "report": [16, 35], "repositori": [2, 10, 13, 38], "repres": [1, 2, 3, 4, 13, 23], "represent": [1, 2, 3, 4], "request": [1, 4, 15, 18, 19, 23, 30, 34, 35], "requir": [1, 2, 3, 10, 11, 12, 13, 14, 20, 21, 23, 28, 30, 31, 33, 35, 37, 38], "requiredduringschedul": [1, 2, 3], "requiredduringschedulingignoredduringexecut": 23, "resembl": [13, 21], "reset": [2, 3], "resid": [12, 21], "resolv": [12, 17, 29], "resourc": [1, 4, 13, 17, 18, 19, 20, 21, 23, 24, 28, 30, 37, 38], "resourceclaim": [2, 3], "respect": [1, 2, 3, 14], "rest": [1, 2, 3, 4, 5, 13, 17, 34], "restart": [13, 15, 17, 18, 23, 27, 28, 29, 38], "restor": [2, 25, 29, 38], "restore_upgrade_strategi": 29, "restrict": [2, 3], "result": [2, 18], "resum": 2, "retainkei": 38, "retent": [2, 17], "retri": [2, 17, 29], "retriev": [3, 13, 21, 34], "return": [20, 21, 26], "revert": 1, "review": 34, "revis": [2, 19], "rewrit": 15, "rf": 2, "rfc3339": 2, "rhwqx": 15, "ring": [2, 23], "risk": [4, 10], "rm": [7, 34], "ro": [7, 34], "role": [6, 11, 13, 14, 18, 23], "roll": [2, 13, 15, 16, 18, 23, 28, 29, 38], "rollout": [2, 3, 13, 18, 19, 38], "root": [2, 7, 29], "rotat": 2, "rout": [12, 19], "routabl": 12, "row": 2, "rule": [1, 2, 3, 18, 20, 37], "run": [1, 2, 3, 4, 6, 7, 10, 11, 14, 15, 16, 17, 18, 19, 23, 27, 28, 29, 30, 38], "runtim": 34, "s3": [2, 17, 28], "sai": 10, "said": 34, "salted_hash": 6, "same": [1, 2, 3, 8, 11, 12, 13, 14, 15, 17, 18, 23, 29, 30, 31], "satisfi": [1, 2, 3], "save": [10, 13, 18, 20, 23, 29, 34, 38], "sc": [6, 7, 8], "scale": [16, 29, 34], "scenario": 12, "schedul": [1, 2, 3], "schema": [1, 2, 3, 4, 6, 29], "scheme": [8, 12, 38], "scope": [1, 2, 3, 4], "scrape": [3, 15], "scratch": [31, 38], "script": [2, 6, 13, 14, 30], "sctool": [17, 28], "sctp": 21, "scyladb": 23, "scylla": [5, 6, 7, 8, 12, 18, 19, 20, 21, 24, 26, 28, 30, 31, 34, 35, 37], "scylla_manag": 17, "scylla_vers": 13, "scyllaagentconfig": 2, "scyllaarg": 2, "scyllaclus": 23, "scyllaclust": [0, 5, 6, 8, 15, 16, 17, 18, 19, 23, 24, 28, 29, 30, 34, 38], "scyllacluster_nam": 6, "scyllaclusterlist": 2, "scyllaconfig": 2, "scylladb": [5, 6, 7, 10, 12, 13, 15, 16, 18, 19, 28, 30, 31, 34, 35, 38], "scylladb_config": 7, "scylladb_discovery_ep": 7, "scylladb_ep": 6, "scylladbmonitor": [0, 5], "scylladbmonitoringlist": 3, "scylladbutilsimag": 4, "scyllaimag": 15, "scyllaoperatorconfig": [0, 5], "scyllaoperatorconfiglist": 4, "scyllautilsimag": 4, "sda": 2, "sda1": 2, "sdd": [11, 14], "sdn": [2, 37], "search": 15, "sec": 13, "second": [2, 13], "secondari": 21, "secret": [3, 7, 13, 15, 19, 23, 34], "secretfil": 2, "secretnam": 2, "section": [6, 11, 12, 13, 14, 20, 21, 34, 35], "secur": [2, 7, 12, 13], "sed": [6, 14, 18, 38], "see": [2, 3, 6, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 28, 30], "seed": 2, "segmentsperrepair": 17, "select": [1, 2, 3, 6, 8, 10, 12, 13, 23], "selector": [1, 12, 13, 38], "self": [3, 13, 15], "selinux": 34, "semant": [2, 29], "send": [20, 34], "sensit": [2, 34], "sent": 2, "sep": 17, "separ": [2, 10, 11, 12, 14, 18, 20, 30], "sequenti": 18, "serivceaccount": 2, "serv": [1, 2, 3, 4, 6, 7, 12, 13, 15, 19, 20, 21, 23, 37], "server": [1, 2, 3, 4, 11, 13, 14, 17, 19, 23, 38], "servic": [2, 3, 6, 7, 8, 13, 15, 18, 19, 21, 26, 27, 37], "serviceaccount": 34, "servicemonitor": 15, "servingcertsecretnam": 3, "session": [2, 13], "set": [1, 2, 3, 4, 6, 7, 8, 10, 12, 15, 16, 17, 19, 23, 28, 29, 30, 33, 34], "setup": [1, 2, 3, 12, 13, 19, 20, 21, 23, 37], "sever": [8, 11, 12, 20, 21, 37], "sh": [10, 11, 14], "sha": 31, "shard": 2, "shardfailedsegmentsmax": 17, "shardingignoremsbbit": 17, "shardparallelmax": 17, "share": [2, 20, 21, 30], "sharenam": 2, "sheer": 23, "shell": [7, 13, 18], "ship": 31, "short": [10, 18], "shortli": 17, "should": [1, 2, 3, 4, 7, 10, 12, 13, 15, 17, 18, 19, 20, 21, 23, 27, 29, 30], "shouldn": [2, 18, 27], "show": [6, 7, 10, 13, 29, 31], "side": [11, 14, 19, 23, 38], "sidecar": [10, 13, 15, 18, 38], "sig": [1, 2, 3, 4], "sign": [2, 3, 13, 15, 18], "signer": 2, "signernam": 2, "similar": [19, 20, 23, 34], "similarli": [2, 15, 34], "simpl": [10, 12, 13, 15, 17, 18, 26, 27, 29, 38], "simpli": [10, 13, 15, 18, 26, 29], "simplic": [20, 21, 23], "simplifi": 7, "simultan": 2, "sinc": [12, 23], "sing": 31, "singl": [1, 2, 3, 10, 13, 15, 17, 23], "singularnam": [1, 2, 3, 4], "situat": 31, "size": [1, 2, 14, 21, 27, 28], "sizelimit": 2, "skip": [19, 34], "slack": 18, "slight": 34, "slightli": [2, 19], "sm_20240105115931utc": 28, "small": [2, 13, 17], "smalltablethreshold": 2, "snapshot": [2, 3, 28, 29], "snapshot_tag": 28, "snapshotparallel": 2, "sni": 19, "so": [1, 2, 3, 7, 8, 10, 12, 13, 14, 15, 19, 20, 21, 23, 30, 38], "so_data_20201228135002utc": 29, "so_system_20201228135002utc": 29, "softwar": 17, "solv": [8, 18, 38], "some": [1, 2, 3, 8, 10, 12, 13, 15, 17, 27, 31, 34, 37], "someth": [13, 17, 26, 34], "sometim": [10, 13, 34], "somewher": 18, "songtitl": 6, "sourc": [3, 12, 15, 16, 17, 20, 21, 28, 38], "sourcetyp": 2, "space": 30, "spawn": 17, "spbm": 2, "spec": [6, 7, 8, 12, 13, 15, 17, 18, 19, 23, 28, 29, 30, 38], "special": 30, "specif": [7, 8, 12, 13, 15, 20, 21, 23, 30, 37, 38], "specifi": [1, 2, 3, 12, 13, 15, 20, 23], "speed": 10, "spent": 2, "spin": [15, 17], "spot": 17, "spread": 30, "squash": 10, "src": 10, "ssd": [14, 21], "ssh": [11, 17, 33], "ssl": [2, 7, 17, 19], "ssl_transport_factori": 7, "sslenabl": 2, "ssltimeout": 17, "sstabl": 29, "st": [18, 38], "stabl": [8, 13, 15, 38], "stack": [11, 14, 16, 19], "stackdriv": 14, "stage": [18, 29], "stai": 26, "stand": 2, "standard": [2, 5, 6, 14, 21, 37], "start": [2, 8, 10, 11, 13, 17, 20, 28, 29, 30], "startdat": 2, "startup": [2, 23], "stash": 10, "state": [1, 2, 3, 4, 13, 15, 17, 19, 23, 27, 29, 34], "statefulset": [13, 15, 18, 19, 29, 38], "static": [1, 2, 3, 8, 11, 14, 18, 30], "statu": [8, 12, 13, 15, 16, 17, 18, 19, 20, 23, 27, 28, 29, 38], "stderr": 17, "stdout": 13, "step": [11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 28, 34, 38], "still": [2, 3, 34], "stop": 2, "storag": [1, 4, 11, 13, 14, 15, 19, 23, 28, 30, 38], "storageclass": [2, 3, 23], "storageclass_xf": 14, "storageclassnam": [2, 3, 19, 23], "storagemod": 2, "storagepolicyid": 2, "storagepolicynam": 2, "storagepool": 2, "store": [2, 3, 7, 27, 28], "strateg": [1, 2, 3], "stream": 27, "stress": [11, 14], "string": [1, 2, 3, 4], "stringdata": 23, "strip": 2, "strongli": 7, "struct": [2, 3], "stuck": 29, "style": 5, "subdirectori": 2, "subject": [10, 30], "submit": [1, 2, 3, 4], "subnet": [12, 20], "subnetwork": 21, "subpath": 2, "subpathexpr": 2, "subset": [1, 2, 3, 8, 23, 34], "succe": [2, 3, 26], "success": 28, "successfulli": [13, 19], "sudo": 33, "suffici": 12, "suggest": 28, "suit": [31, 37], "sum": [1, 2, 3], "summari": 10, "superset": 12, "suppli": [2, 34], "support": [1, 2, 3, 10, 12, 13, 15, 16, 17, 23, 28, 29, 34, 37, 38], "suppos": 30, "sure": [2, 6, 8, 10, 13, 14, 15, 17, 18, 23, 27, 28, 31, 34, 37, 38], "suspect": 31, "svc": [8, 13, 17, 18, 19, 26, 27], "switch": 30, "symlink": [1, 2, 38], "sync": [23, 27], "synchron": 17, "syntax": 2, "sysctl": [2, 13, 23], "system": [1, 2, 3, 14, 18, 29, 38], "system_auth": [6, 13, 17], "system_distribut": 17, "system_schema": [28, 29], "system_trac": 17, "systemconfig": 14, "systemsnapshottag": 2, "t": [1, 2, 3, 6, 10, 11, 12, 13, 14, 15, 17, 18, 27, 28, 30, 31, 34, 37, 38], "tab": 10, "tabl": [2, 6, 31], "table_prefix_": 2, "tabledescript": 6, "tablenam": 6, "tag": [2, 15, 18, 28, 29, 31, 38], "tailor": [20, 21], "taint": [1, 2, 3, 11, 14], "take": [2, 11, 13, 14, 27, 28, 29, 30, 34], "taken": [1, 2, 3, 12, 28, 29], "talk": [8, 12, 17, 30, 34], "target": [1, 2, 17, 20, 28, 30, 38], "targetport": 2, "targetwwn": 2, "task": [2, 11, 13, 16, 23, 28], "tcp": [2, 8, 12, 15, 18, 21, 27], "td05v9evu3b8": 20, "team": 10, "tell": 10, "templat": [2, 3, 6, 13, 18, 19, 23, 38], "temporari": 2, "temporarili": 10, "tenant": 2, "term": [1, 2, 3], "termin": [2, 6], "test": [4, 10, 17, 19, 31, 37], "text": 7, "than": [2, 3, 10, 12, 13, 18, 27, 34], "thei": [2, 3, 12, 13, 17, 23, 34], "them": [1, 2, 3, 7, 8, 10, 11, 12, 13, 14, 15, 18, 19, 20, 23, 30, 34, 38], "thi": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 30, 31, 33, 34, 37, 38], "thickprovis": 2, "thing": [2, 13], "thinprovis": 2, "third": [2, 3, 19], "those": [1, 2, 3, 11, 13, 14, 30], "thread": 13, "three": [2, 3, 10, 15, 17], "threshold": 2, "throttl": [13, 30], "through": [1, 2, 3, 8, 12, 13, 15, 20, 21, 23], "throughout": [20, 21, 23], "throughput": [6, 13], "ti": [2, 17, 27, 28], "tib": 2, "tier": 11, "tighter": 2, "time": [1, 2, 3, 6, 8, 10, 15, 17, 18, 27, 28, 31], "timeout": [14, 15, 17, 18, 19], "timezon": 2, "tip": 2, "tl": [2, 7, 19], "tlscafil": 17, "tlscertfil": 17, "tlskeyfil": 17, "tmp": 13, "tmpdir": 38, "todo": 2, "togeth": [2, 11, 14], "token": [2, 6, 23, 27, 34], "tokenawar": 17, "toler": [11, 23], "tolerationsecond": [1, 2, 3], "too": 2, "tool": [3, 4, 10, 11, 19, 20, 21, 23, 34, 35], "top": 10, "topic": 16, "topologi": [2, 23], "topologykei": [1, 2, 3, 23], "topologyselectorterm": [1, 2, 3], "total": [2, 13], "tovers": 2, "trace": 29, "track": [2, 10, 13, 17], "traffic": [2, 12, 20, 21, 37], "transit": [1, 2, 3], "transport": 2, "treat": [1, 2, 3], "tree": 2, "tri": [11, 14], "trick": 11, "trigger": 31, "tripl": [1, 2, 3], "troubleshoot": 32, "true": [1, 2, 3, 4, 7, 8, 11, 13, 15, 17, 19, 23, 28, 38], "trustbundl": 2, "try": [1, 2, 3, 30, 34], "tune": [1, 11, 14, 16, 31], "tunedcontain": 1, "tunednod": 1, "turn": [1, 6, 26, 29, 38], "tutori": 17, "tweak": [12, 13], "two": [2, 3, 10, 12, 15, 17, 18, 20, 21, 23, 28, 29, 30, 38], "type": [8, 11, 14, 15, 18, 19, 20, 21, 23, 27, 28, 29, 30, 31], "typic": 2, "u": [7, 10, 11, 13, 14, 15, 17, 18, 20, 21, 23, 26, 27, 28, 29, 30, 35], "ubuntu": 31, "ubuntu_containerd": [14, 21], "udp": 21, "ui": 3, "uid": [2, 18], "un": [23, 27], "unbound": [2, 3], "unchang": [2, 3], "undefin": 2, "under": [1, 2, 15, 17, 26, 29], "underli": [2, 3, 29, 30], "understand": [10, 18, 35], "understood": 23, "undesir": 23, "undo": 30, "unencrypt": 7, "unfortun": 37, "unifi": 2, "uninstal": 15, "union": [1, 2, 3], "uniqu": [2, 13, 23], "unit": [2, 10], "univers": 16, "unknown": [1, 2, 3], "unless": [2, 7, 19, 34], "unlist": 2, "unmodifi": 8, "unnecessari": [7, 10], "unreach": 23, "unrecogn": [1, 2, 3, 4], "unrel": [2, 23], "unschedul": [17, 24], "unset": 2, "unspecifi": [2, 3], "unstructur": 3, "unsupport": [1, 4], "unsupportedbashtoolsimageoverrid": 4, "unsupportedgrafanaimageoverrid": 4, "unsupportedopt": 1, "unsupportedprometheusversionoverrid": 4, "untar": 38, "untardir": 38, "until": [2, 3, 13, 15, 18, 28, 29, 38], "unwind": 10, "up": [1, 2, 6, 7, 8, 10, 12, 15, 16, 18, 19, 23, 27, 29, 30, 38], "updat": [1, 2, 3, 4, 8, 13, 15, 17, 19, 21, 38], "upgrad": [14, 15, 16, 18, 25, 31], "upgrade_image_in_pod_spec": 29, "upgradestrategi": 29, "upload": [2, 10], "uploadparallel": 2, "upon": [1, 2, 3, 12, 20, 21], "upsteam": [13, 15], "upstream": 2, "uri": 2, "url": [2, 15], "us": [1, 2, 3, 4, 5, 8, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 27, 28, 29, 30, 31, 34, 37, 38], "usag": [2, 13], "user": [2, 3, 6, 7, 10, 13, 14, 16, 17, 18, 19, 26, 28, 29, 30, 34, 37, 38], "user_nam": 34, "usercert": 7, "usercertfil": 17, "userguid": 11, "userkei": 7, "userkeyfil": 17, "usernam": [7, 13, 19], "usual": [8, 11, 12, 14, 19, 31], "utc": [17, 28], "utf": 2, "util": [4, 23], "uuid": [2, 18], "v": [7, 10, 34], "v1": [0, 5, 7, 12, 15, 17, 19, 23, 28, 30, 31], "v1alpha1": [0, 5, 18, 19, 30, 38], "v1alpha5": 20, "v2": 10, "v3": 10, "v4": 7, "valid": [1, 2, 3, 7, 15, 17, 19, 29, 38], "validate_upgrad": 29, "validatingwebhookconfigur": 38, "validmastervers": 14, "valu": [1, 2, 3, 4, 12, 13, 14, 15, 18, 20, 21, 23, 29], "var": [2, 17], "var_nam": 2, "variabl": [2, 6, 7, 10, 23, 34], "variou": [12, 13], "ve": [10, 28], "vendor": 2, "verb": 18, "veri": [10, 15, 18, 34, 38], "verifi": [10, 13, 23, 27], "version": [1, 2, 3, 4, 12, 13, 14, 15, 16, 17, 19, 23, 25, 28, 30, 31, 38], "via": [12, 13, 15], "view": 34, "violat": [1, 2, 3], "virtual": [8, 21], "visibl": 27, "visit": [8, 35], "vjm4m": 15, "vmdk": 2, "volum": [3, 20, 21, 23, 34], "volumeattributesclass": [2, 3], "volumeattributesclassnam": [2, 3], "volumeclaimtempl": 19, "volumeid": 2, "volumemod": [2, 3], "volumenam": [2, 3], "volumenamespac": 2, "volumepath": 2, "volumesnapshot": [2, 3], "vsphere": 2, "vx": 31, "w": 19, "w25jw": 17, "wa": [1, 2, 3, 10, 13, 15, 17, 18, 20, 27, 28, 38], "wai": [2, 8, 13, 14, 17, 18, 19, 34], "wait": [2, 8, 10, 13, 15, 18, 23, 28, 29, 38], "walk": [13, 20, 21, 23], "want": [2, 10, 11, 12, 13, 14, 15, 17, 20, 21, 28, 38], "wasn": 17, "watch": 17, "we": [1, 2, 6, 10, 11, 12, 13, 14, 15, 17, 18, 19, 27, 28, 30, 31, 34, 37, 38], "web": [3, 14], "webhook": [13, 36, 38], "webinterfac": 19, "websit": 18, "week": 31, "weekli": [2, 17], "weight": [1, 2, 3], "weightedpodaffinityterm": [1, 2, 3], "welcom": 18, "well": [2, 3, 10, 11, 13, 14, 17, 18, 19], "were": [3, 15], "west1": [14, 21], "wfjbw": 15, "what": [2, 3, 10, 12, 13, 15, 17, 18, 19, 29, 34, 35], "when": [1, 2, 3, 8, 10, 11, 12, 13, 14, 17, 18, 19, 21, 23, 25, 26, 28, 29, 30, 31, 34, 35, 37], "whenev": 10, "where": [1, 2, 3, 6, 10, 11, 14, 18, 28, 29, 37], "whether": [2, 3, 12, 15, 30, 34], "which": [1, 2, 3, 4, 8, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24, 27, 28, 29, 30, 38], "whichev": 13, "while": [2, 3, 6, 13, 31], "who": 2, "whole": [18, 29], "whose": [1, 2, 3, 13], "why": 10, "wide": [2, 17], "wildcard": [1, 2, 3, 19], "window": 10, "within": [2, 12, 30, 34], "without": [3, 6, 10, 12, 14, 15, 19, 34], "won": [1, 11, 12, 30, 34], "word": [10, 23], "work": [2, 5, 7, 10, 11, 14, 15, 18, 20, 21, 23, 30, 31], "workaround": 37, "workdir": 34, "workload": [20, 21, 30], "workspac": 34, "world": 2, "worldwid": 2, "worth": 10, "would": [2, 10, 13, 17, 21, 27], "wouldn": 34, "write": [2, 6, 10, 13], "writecapacityunit": 6, "writeisol": [2, 13], "written": 2, "wrong": 34, "wwid": 2, "wwn": 2, "x": [1, 2, 3, 28, 31], "xarg": 38, "xf": [2, 11, 14, 19, 23], "xqhkj0our8e6imdepm62hg": 17, "y": 31, "yaml": [2, 7, 11, 13, 14, 15, 17, 18, 19, 20, 23, 34, 38], "yanniszark": 14, "you": [2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 27, 28, 29, 30, 34, 37, 38], "your": [2, 4, 6, 7, 8, 11, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 27, 28, 29, 30, 33, 34, 37, 38], "your_password": 7, "your_usernam": 7, "yourself": 10, "yq": 34, "z": [7, 11, 14, 31, 34], "zero": [1, 2, 3, 13, 29], "zone": [1, 14, 16, 23]}, "titles": ["scylla.scylladb.com", "NodeConfig (scylla.scylladb.com/v1alpha1)", "ScyllaCluster (scylla.scylladb.com/v1)", "ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)", "ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)", "API Reference", "Using Alternator (DynamoDB)", "Using CQL", "Discovering ScyllaDB Nodes", "Using ScyllaDB APIs", "Contributing to Scylla Operator", "Deploying Scylla on EKS", "Exposing ScyllaCluster", "Deploying Scylla on a Kubernetes Cluster", "Deploying Scylla on GKE", "Deploying Scylla stack using Helm Charts", "Scylla Operator Documentation", "Deploying Scylla Manager on a Kubernetes Cluster", "Version migrations", "Monitoring", "Build multiple Amazon EKS clusters with inter-Kubernetes networking", "Build multiple GKE clusters with inter-Kubernetes networking", "Deploying multi-datacenter ScyllaDB clusters in Kubernetes", "Deploy a multi-datacenter ScyllaDB cluster in multiple interconnected Kubernetes clusters", "Automatic cleanup and replacement in case when k8s node is lost", "Node operations using Scylla Operator", "Maintenance mode", "Replacing a Scylla node", "Restore from backup", "Upgrading version of Scylla", "Performance tuning", "Releases", "Support", "Known issues", "Gathering data with must-gather", "Support overview", "Troubleshooting", "Troubleshooting installation issues", "Upgrade of Scylla Operator"], "titleterms": {"0": [18, 38], "1": 38, "2": 38, "3": [18, 38], "In": 12, "about": 35, "access": [11, 13, 14, 19], "add": 10, "admin": 14, "affin": 1, "agent": 13, "agentresourc": 2, "agentvolumemount": 2, "aka": 7, "altern": [2, 6, 13], "amazon": 20, "an": [11, 19], "annot": [2, 3], "api": [5, 9], "architectur": 17, "auth": 13, "authent": [3, 7], "author": 7, "autom": 31, "automat": 24, "avail": 31, "aw": 6, "awselasticblockstor": 2, "azuredisk": 2, "azurefil": 2, "backport": 31, "backup": [2, 28], "behind": 8, "benchmark": 13, "boot": 33, "boundari": 8, "branch": 10, "broadcast": 12, "broadcastopt": 2, "build": [10, 20, 21], "case": 24, "cassandra": 13, "cd": 31, "cephf": 2, "cert": [13, 15], "chart": 15, "ci": 31, "cinder": 2, "claim": [2, 3], "clean": [13, 17], "cleanup": [15, 24], "cli": 6, "client": [2, 12], "clone": 10, "cluster": [8, 11, 12, 13, 14, 17, 20, 21, 22, 23, 34, 35, 37], "clusterip": 12, "clustertrustbundl": 2, "cni": 37, "collect": 34, "com": [0, 1, 2, 3, 4], "commit": 10, "compon": 3, "condit": [1, 2, 3], "configmap": 2, "configur": [11, 13, 14, 20, 21], "connect": 19, "contain": 13, "context": 23, "contribut": 10, "control": 15, "cql": [2, 7], "cqlsh": 7, "creat": [10, 11, 13, 14, 20, 21], "credenti": 6, "csi": 2, "custom": [15, 37], "data": [34, 35], "databas": [11, 13, 14], "datacent": [2, 22, 23], "datasourc": [2, 3], "datasourceref": [2, 3], "dead": 27, "delet": [11, 14], "depend": 11, "deploi": [11, 13, 14, 15, 17, 19, 20, 21, 22, 23], "deploy": 12, "descript": [1, 2, 3, 4], "develop": 10, "devic": 1, "discov": 8, "discoveri": 8, "docker": 34, "document": 16, "doe": 33, "domain": 19, "download": 13, "downwardapi": 2, "dr": [11, 14, 15], "dynamodb": 6, "ek": [11, 20, 37], "embed": 7, "emptydir": 2, "endpoint": 8, "endpointsselector": 3, "engin": 14, "environ": [11, 14], "ephemer": 2, "everi": 34, "exampl": 12, "expos": [8, 12], "exposeopt": [2, 3], "extern": 23, "externalip": 19, "fc": 2, "fieldref": 2, "filesystem": 1, "firewal": 21, "first": [20, 21, 23], "flexvolum": 2, "flocker": 2, "fork": 10, "from": 28, "gather": [34, 35], "gcepersistentdisk": 2, "gener": 31, "genericupgrad": 2, "get": 35, "gitrepo": 2, "gke": [14, 21, 37], "glusterf": 2, "googl": 14, "grafana": [3, 19], "group": [5, 20], "haproxi": 19, "headless": 12, "helm": [15, 38], "histori": 10, "hostpath": 2, "i": 24, "imag": 15, "imagepullsecret": 2, "ingress": [2, 3, 19], "initi": [10, 13], "instal": [11, 15, 37], "inter": [20, 21], "interconnect": 23, "internet": 12, "iscsi": 2, "issu": [33, 35, 37], "item": 2, "k8": 24, "kernel": 13, "kind": 5, "known": 33, "kubectl": 38, "kubernet": [8, 13, 14, 17, 20, 21, 22, 23, 30, 31], "label": [2, 3], "labelselector": [1, 2, 3], "limit": [2, 3, 34], "loadbalanc": 12, "local": [11, 13, 14], "localdisksetup": 1, "localhost": 7, "loopdevic": 1, "lost": 24, "mainten": 26, "manag": [13, 15, 17, 19, 23, 33], "matchexpress": [1, 2, 3], "matchfield": [1, 2, 3], "matchlabel": [1, 2, 3], "matrix": 31, "messag": 10, "metadata": [1, 2, 3, 4], "migrat": 18, "minikub": 33, "mode": 26, "monitor": [13, 15, 19], "mount": 1, "multi": [12, 22, 23], "multipl": [20, 21, 23], "must": 34, "namespac": 34, "namespaceselector": [1, 2, 3], "network": [2, 20, 21, 23], "nf": 2, "node": [2, 8, 11, 12, 14, 20, 21, 23, 24, 25, 27, 30], "nodeaffin": [1, 2, 3], "nodeconfig": 1, "nodeport": 19, "nodepublishsecretref": 2, "nodeselector": 1, "nodeselectorterm": [1, 2, 3], "nodeservic": 2, "nodestatus": 1, "onli": 12, "oper": [10, 11, 13, 14, 15, 16, 19, 20, 21, 25, 38], "operatormanagedopt": 2, "option": [2, 12], "out": 19, "overview": 35, "paramet": 13, "parti": 11, "particular": 34, "peer": 20, "perform": 30, "persistentvolumeclaim": 2, "photonpersistentdisk": 2, "placement": [1, 2, 3], "platform": 31, "podaffin": [1, 2, 3], "podaffinityterm": [1, 2, 3], "podantiaffin": [1, 2, 3], "podip": [2, 12, 23], "podman": 34, "podmetadata": 2, "polici": 31, "portworxvolum": 2, "prefac": 8, "prefer": [1, 2, 3], "preferredduringschedulingignoredduringexecut": [1, 2, 3], "prepar": [20, 21], "prerequisit": [10, 11, 13, 14, 15, 17, 19, 20, 21, 23, 34], "privat": 37, "procedur": 18, "project": [2, 10], "prometheu": [3, 19], "promot": 31, "provision": [11, 14], "pull": 10, "queri": 33, "quobyt": 2, "rack": 2, "raid": 1, "raid0": 1, "rbd": 2, "readinessg": 2, "refer": 5, "registr": 17, "releas": 31, "remot": [7, 10], "repair": 2, "replac": [24, 27], "repositori": 15, "request": [2, 3, 10], "requir": 19, "requiredduringschedulingignoredduringexecut": [1, 2, 3], "resolv": 19, "resourc": [2, 3, 15, 34], "resourcefieldref": 2, "restor": 28, "result": 15, "retriev": 23, "roll": 19, "rout": 20, "rule": 21, "run": [13, 20, 21, 34], "scale": 13, "scaleio": 2, "schedul": [17, 31], "schema": 28, "script": 11, "scylla": [0, 1, 2, 3, 4, 10, 11, 13, 14, 15, 16, 17, 23, 25, 27, 29, 33, 38], "scyllaclust": [2, 12, 13], "scylladb": [0, 1, 2, 3, 4, 8, 9, 11, 14, 20, 21, 22, 23], "scylladbmonitor": [3, 19, 23], "scyllaoperatorconfig": 4, "second": [20, 21, 23], "secret": 2, "secretref": 2, "secur": 20, "seed": 23, "selector": [2, 3], "servic": 12, "serviceaccounttoken": 2, "serviceclusterip": 12, "serviceloadbalanceringress": 12, "servingcertif": 2, "set": [11, 13, 14], "setup": [10, 11, 14], "sourc": 2, "spec": [1, 2, 3, 4], "specif": [1, 2, 3, 4], "stack": 15, "statu": [1, 2, 3, 4], "storag": [2, 3], "storageo": 2, "stress": 13, "submit": 10, "subnet": 21, "support": [31, 32, 35], "tabl": [20, 28], "task": 17, "templat": 12, "third": 11, "through": 19, "tl": [11, 14, 15], "token": 13, "toler": [1, 2, 3], "troubleshoot": [13, 17, 35, 36, 37], "truncat": 33, "tune": 30, "type": [1, 2, 3, 4, 12], "unresolv": 19, "up": [11, 13, 14, 17, 33], "updat": [10, 20], "upgrad": [2, 29, 38], "upstream": 10, "us": [6, 7, 9, 15, 19, 23, 25], "usermanagedopt": 2, "v0": [18, 38], "v1": [2, 18, 38], "v1alpha1": [1, 3, 4], "variabl": [11, 14], "variant": 19, "version": [18, 29], "via": 38, "volum": [2, 11, 14], "volumeattribut": 2, "volumeclaimtempl": [2, 3], "volumemount": 2, "vpc": [12, 20, 21], "vspherevolum": 2, "wait": 19, "walkthrough": [11, 14], "webhook": [15, 37], "webinterfac": 3, "when": 24, "work": 33, "your": [10, 35], "yourself": 14}}) \ No newline at end of file diff --git a/v1.14/sitemap.xml b/v1.14/sitemap.xml new file mode 100644 index 00000000000..7b9ddabfaa8 --- /dev/null +++ b/v1.14/sitemap.xml @@ -0,0 +1,2 @@ + +https://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/nodeconfigs.htmlhttps://operator.docs.scylladb.com/stable/exposing.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scyllaclusters.htmlhttps://operator.docs.scylladb.com/stable/generic.htmlhttps://operator.docs.scylladb.com/stable/multidc/multidc.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/automatic-cleanup.htmlhttps://operator.docs.scylladb.com/stable/gke.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/index.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scylladbmonitorings.htmlhttps://operator.docs.scylladb.com/stable/helm.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/maintenance-mode.htmlhttps://operator.docs.scylladb.com/stable/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.htmlhttps://operator.docs.scylladb.com/stable/index.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/replace-node.htmlhttps://operator.docs.scylladb.com/stable/api-reference/index.htmlhttps://operator.docs.scylladb.com/stable/manager.htmlhttps://operator.docs.scylladb.com/stable/clients/alternator.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/restore.htmlhttps://operator.docs.scylladb.com/stable/clients/cql.htmlhttps://operator.docs.scylladb.com/stable/migration.htmlhttps://operator.docs.scylladb.com/stable/nodeoperations/scylla-upgrade.htmlhttps://operator.docs.scylladb.com/stable/monitoring.htmlhttps://operator.docs.scylladb.com/stable/clients/discovery.htmlhttps://operator.docs.scylladb.com/stable/performance.htmlhttps://operator.docs.scylladb.com/stable/clients/index.htmlhttps://operator.docs.scylladb.com/stable/multidc/eks.htmlhttps://operator.docs.scylladb.com/stable/releases.htmlhttps://operator.docs.scylladb.com/stable/multidc/gke.htmlhttps://operator.docs.scylladb.com/stable/support/index.htmlhttps://operator.docs.scylladb.com/stable/contributing.htmlhttps://operator.docs.scylladb.com/stable/multidc/index.htmlhttps://operator.docs.scylladb.com/stable/eks.htmlhttps://operator.docs.scylladb.com/stable/support/known-issues.htmlhttps://operator.docs.scylladb.com/stable/support/must-gather.htmlhttps://operator.docs.scylladb.com/stable/support/overview.htmlhttps://operator.docs.scylladb.com/stable/support/troubleshooting/index.htmlhttps://operator.docs.scylladb.com/stable/support/troubleshooting/installation.htmlhttps://operator.docs.scylladb.com/stable/upgrade.htmlhttps://operator.docs.scylladb.com/stable/genindex.htmlhttps://operator.docs.scylladb.com/stable/404.htmlhttps://operator.docs.scylladb.com/stable/search.html \ No newline at end of file diff --git a/v1.14/support/index.html b/v1.14/support/index.html new file mode 100644 index 00000000000..552d1fb4e4b --- /dev/null +++ b/v1.14/support/index.html @@ -0,0 +1,596 @@ + + + + + + + + + + + + + Support | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Support

                  + +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/support/known-issues.html b/v1.14/support/known-issues.html new file mode 100644 index 00000000000..1811db7c21e --- /dev/null +++ b/v1.14/support/known-issues.html @@ -0,0 +1,619 @@ + + + + + + + + + + + + + Known issues | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Known issues

                  +
                  +

                  Scylla Manager does not boot up on Minikube

                  +

                  If your Scylla Manager is failing to apply 8th migration (008_*), then apply fix for TRUNCATE queries.

                  +
                  +
                  +

                  TRUNCATE queries does not work on Minikube

                  +

                  The TRUNCATE queries requires hairpinning to be enabled. On minikube this is disabled by default.

                  +

                  To fix it execute the following command:

                  +
                  minikube ssh sudo ip link set docker0 promisc on
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/support/must-gather.html b/v1.14/support/must-gather.html new file mode 100644 index 00000000000..7c807fa1342 --- /dev/null +++ b/v1.14/support/must-gather.html @@ -0,0 +1,706 @@ + + + + + + + + + + + + + Gathering data with must-gather | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Gathering data with must-gather

                  +

                  must-gather is an embedded tool in Scylla Operator that helps collecting all the necessary info when something goes wrong.

                  +

                  The tool talks to the Kubernetes API, retrieves a predefined set of resources and saves them into a folder in your current directory. +By default, all collected Secrets are censored to avoid sending sensitive data. +That said, you can always review the archive before you attach it to an issue or your support request.

                  +

                  Given it needs to talk to the Kubernetes API, at the very least, you need to supply the --kubeconfig flag with a path to the kubeconfig file for your Kubernetes cluster, or set the KUBECONFIG environment variable.

                  +
                  +

                  Running must-gather

                  +

                  There is more than one way to run must-gather. +Here are some examples of how you can run the tool.

                  +
                  +

                  Prerequisites

                  +

                  All examples assume you have exported KUBECONFIG environment variable that points to a kubeconfig file on your machine. +If not, you can run this command to export the common default location. +Please make sure such a file exists.

                  +
                  export KUBECONFIG=~/.kube/config
                  +ls -l "${KUBECONFIG}"
                  +
                  +
                  +
                  +

                  Note

                  +

                  There can be slight deviations in the arguments for your container tool, depending on the container runtime, whether you use SELinux or similar factors.

                  +

                  As an example, the need for the Z option on volume mounts depends on whether you use SELinux and what context is applied on your file or directory. +If you get an error mentioning Error: lsetxattr <path>: operation not supported, try it without the Z option.

                  +
                  +

                  Let’s also check whether your kubeconfig uses external authentication plugin. +You can determine that by running

                  +
                  kubectl config view --minify
                  +
                  +
                  +

                  and checking whether it uses an external exec plugin by looking for this pattern (containing the exec key)

                  +
                  users:
                  +- name: <user_name>
                  +  user:
                  +    exec:
                  +
                  +
                  +

                  If not, you can skip the rest of this section.

                  +

                  In case your kubeconfig depends on external binaries, you have to take a few extra steps because the external binary won’t be available within our container to authenticate the requests.

                  +

                  Similarly to how Pods are run within Kubernetes, we’ll create a dedicated ServiceAccount for must-gather and use it to run the tool. +(When you are done using it, feel free to remove the Kubernetes resources created for that purpose.)

                  +
                  kubectl create namespace must-gather
                  +kubectl -n must-gather create serviceaccount must-gather
                  +kubectl create clusterrolebinding must-gather --clusterrole=cluster-admin --serviceaccount=must-gather:must-gather
                  +export MUST_GATHER_TOKEN
                  +MUST_GATHER_TOKEN=$( kubectl -n must-gather create token must-gather --duration=1h )
                  +kubeconfig=$( mktemp )
                  +# Create a copy of the existing kubeconfig and
                  +# replace user authentication using yq, or by adjusting the fields manually.
                  +kubectl config view --minify --raw -o yaml | yq -e '.users[0].user = {"token": env(MUST_GATHER_TOKEN)}' > "${kubeconfig}"
                  +KUBECONFIG="${kubeconfig}"
                  +
                  +
                  +
                  +

                  Note

                  +

                  If you don’t have yq installed, you can get it at https://github.com/mikefarah/yq/#install or you can replace the user authentication settings manually.

                  +
                  +
                  +
                  +

                  Podman

                  +
                  podman run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro,Z" -v="$( pwd ):/workspace:Z" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig
                  +
                  +
                  +
                  +
                  +

                  Docker

                  +
                  docker run -it --pull=always --rm -v="${KUBECONFIG}:/kubeconfig:ro" -v="$( pwd ):/workspace" --workdir=/workspace docker.io/scylladb/scylla-operator:latest must-gather --kubeconfig=/kubeconfig
                  +
                  +
                  +
                  +
                  +
                  +

                  Limiting must-gather to a particular namespace

                  +

                  If you are running a large Kubernetes cluster with many ScyllaClusters, it may be useful to limit the collection of ScyllaClusters to a particular namespace. +Unless you hit scale issues, we advise not to use this mode, as sometimes the ScyllaClusters affect other collected resources, like the manager or they form a multi-datacenter.

                  +
                  scylla-operator must-gather --namespace="<namespace_with_broken_scyllacluster>"
                  +
                  +
                  +
                  +

                  Note

                  +

                  The --namespace flag affects only ScyllaClusters. +Other resources related to the operator installation or cluster state will still be collected from other namespaces.

                  +
                  +
                  +

                  Collecting every resource in the cluster

                  +

                  By default, must-gather collects only a predefined subset of resources. +You can also request collecting every resource in the Kubernetes API, if the default set wouldn’t be enough to debug an issue.

                  +
                  scylla-operator must-gather --all-resources
                  +
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/support/overview.html b/v1.14/support/overview.html new file mode 100644 index 00000000000..d6427c756fa --- /dev/null +++ b/v1.14/support/overview.html @@ -0,0 +1,621 @@ + + + + + + + + + + + + + Support overview | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Support overview

                  +
                  +

                  Get support

                  +

                  ScyllaDB provides administrators with paid support, including Scylla Operator.

                  +
                  +
                  +

                  Troubleshooting issues

                  +

                  To learn more about what to do when issues arise, visit our dedicated troubleshooting section.

                  +
                  +
                  +

                  Gather data about your cluster

                  +

                  Scylla Operator contains an embedded tool called must-gather that can collect the required information for requesting support or reporting issues. +Support requests and bug reports are required to attach the must-gather archive to help us understand the issue.

                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/support/troubleshooting/index.html b/v1.14/support/troubleshooting/index.html new file mode 100644 index 00000000000..8bd507dfa02 --- /dev/null +++ b/v1.14/support/troubleshooting/index.html @@ -0,0 +1,602 @@ + + + + + + + + + + + + + Troubleshooting | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Troubleshooting

                  + +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/support/troubleshooting/installation.html b/v1.14/support/troubleshooting/installation.html new file mode 100644 index 00000000000..136a2c72cdf --- /dev/null +++ b/v1.14/support/troubleshooting/installation.html @@ -0,0 +1,657 @@ + + + + + + + + + + + + + Troubleshooting installation issues | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Troubleshooting installation issues

                  +
                  +

                  Webhooks

                  +

                  Scylla Operator provides several custom API resources that use webhooks to function properly.

                  +

                  Unfortunately, it is often the case that user’s clusters have modified SDN, that doesn’t extend to the control plane, and Kubernetes apiserver is not able to reach the pods that serve the webhook traffic. +Another common case are firewall rules that block the webhook traffic.

                  +
                  +

                  Note

                  +

                  To be called a Kubernetes cluster, clusters are required to pass Kubernetes conformance test suite. +This suite includes tests that require Kubernetes apiserver to be able to reach webhook services.

                  +
                  +
                  +

                  Note

                  +

                  Before filing an issue, please make sure your cluster webhook traffic can reach your webhook services, independently of Scylla Operator resources.

                  +
                  +
                  +

                  EKS

                  +
                  +

                  Custom CNI

                  +

                  EKS is currently breaking Kubernetes webhooks when used with custom CNI networking.

                  +
                  +

                  Note

                  +

                  We advise you to avoid using such setups and use a conformant Kubernetes cluster that supports webhooks.

                  +
                  +

                  There are some workarounds where you can reconfigure the webhook to use Ingress or hostNetwork instead, but it’s beyond a standard configuration that we support and not specific to the Scylla Operator.

                  +
                  +
                  +
                  +

                  GKE

                  +
                  +

                  Private clusters

                  +

                  If you use GKE private clusters you need to manually configure the firewall to allow webhook traffic. +You can find more information on how to do that in GKE private clusters docs.

                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file diff --git a/v1.14/upgrade.html b/v1.14/upgrade.html new file mode 100644 index 00000000000..bdb3c94f974 --- /dev/null +++ b/v1.14/upgrade.html @@ -0,0 +1,810 @@ + + + + + + + + + + + + + Upgrade of Scylla Operator | ScyllaDB Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  + +
                  +
                  +
                  +
                  +
                  + + + + +
                  + +
                  + +
                  +

                  Upgrade of Scylla Operator

                  +

                  This page describes Scylla Operator upgrade procedures.
                  +There are two generic update procedures - via Helm and via kubectl. Before upgrading, please check this page to find out +if your target version requires additional upgrade steps.

                  +
                  +

                  Upgrade via Helm

                  +

                  Helm doesn’t support managing CustomResourceDefinition resources (#5871, #7735)
                  +These are only created on first install and never updated. In order to update them, users have to do it manually.

                  +

                  Replace <release_name> with the name of your Helm release for Scylla Operator and replace <version> with the version number you want to install:

                  +
                    +
                  1. Make sure Helm chart repository is up-to-date:

                    +
                    helm repo add scylla-operator https://storage.googleapis.com/scylla-operator-charts/stable
                    +helm repo update
                    +
                    +
                    +
                  2. +
                  3. Update CRD resources. We recommend using --server-side flag for kubectl apply, if your version supports it.

                    +
                    tmpdir=$( mktemp -d ) \
                    +  && helm pull scylla-operator/scylla-operator --version <version> --untar --untardir "${tmpdir}" \
                    +  && find "${tmpdir}"/scylla-operator/crds/ -name '*.yaml' -printf '-f=%p ' \
                    +  | xargs kubectl apply
                    +
                    +
                    +
                  4. +
                  5. Update Scylla Operator

                    +
                    helm upgrade --version <version> <release_name> scylla-operator/scylla-operator
                    +
                    +
                    +
                  6. +
                  +
                  +
                  +

                  Upgrade via kubectl

                  +

                  Replace <version> with the version number you want to install:

                  +
                    +
                  1. Checkout source code of version you want to use:

                    +
                    git checkout <version>
                    +
                    +
                    +
                  2. +
                  3. Manifests use rolling minor version tag, you may want to pin it to specific version:

                    +
                    find deploy/operator -name "*.yaml" | xargs sed --follow-symlinks -i -E "s^docker.io/scylladb/scylla-operator:[0-9]+\.[0-9]+^docker.io/scylladb/scylla-operator:<version>^g"
                    +
                    +
                    +
                  4. +
                  5. Update Scylla Operator. We recommend using --server-side flag for kubectl apply, if your version supports it.

                    +
                    kubectl apply -f deploy/operator
                    +
                    +
                    +
                  6. +
                  +
                  +
                  +
                  +

                  v1.2.0 -> v1.3.0

                  +

                  Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure.

                  +
                    +
                  1. Checkout source code of v1.3.0:

                    +
                    git checkout v1.3.0
                    +
                    +
                    +
                  2. +
                  3. Update Scylla Operator from deploy directory:

                    +
                    kubectl -n scylla-operator apply -f deploy/operator
                    +
                    +
                    +
                  4. +
                  5. Wait until Scylla Operator is up and running:

                    +
                    kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
                    +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
                    +
                    +
                    +
                  6. +
                  +
                  +
                  +

                  v1.1.0 -> v1.2.0

                  +

                  1.2.0 release brought a lot of changes to the Scylla Operator deployment process. +To properly update Scylla Operator one must delete old objects and install updated ones.

                  +

                  Sidecar image is going to be upgraded automatically, so a rolling restart of your Scylla clusters is expected during the upgrade procedure.

                  +
                    +
                  1. Checkout source code of v1.2.0:

                    +
                    git checkout v1.2.0
                    +
                    +
                    +
                  2. +
                  3. Remove old scylla operator namespace - in our case it’s called scylla-operator-system:

                    +
                    kubectl delete namespace scylla-operator-system --wait=true
                    +
                    +
                    +
                  4. +
                  5. Remove old webhooks:

                    +
                    kubectl delete MutatingWebhookConfiguration scylla-operator-mutating-webhook-configuration
                    +kubectl delete ValidatingWebhookConfiguration scylla-operator-validating-webhook-configuration
                    +
                    +
                    +
                  6. +
                  7. Install Scylla Operator from deploy directory:

                    +
                    kubectl -n scylla-operator apply -f deploy/operator
                    +
                    +
                    +
                  8. +
                  9. Wait until Scylla Operator is up and running:

                    +
                    kubectl wait --for condition=established crd/scyllaclusters.scylla.scylladb.com
                    +kubectl -n scylla-operator rollout status deployment.apps/scylla-operator
                    +
                    +
                    +
                  10. +
                  +
                  +
                  +

                  v1.0.0 -> v1.1.0

                  +

                  During this update we will change probes and image for Scylla Operator. +A new version brings an automation for upgrade of sidecar image, so a rolling restart of managed Scylla clusters is expected.

                  +
                    +
                  1. Get name of StatefulSet managing Scylla Operator

                    +
                    kubectl --namespace scylla-operator-system get sts --selector="control-plane=controller-manager"
                    +
                    +NAME                                 READY   AGE
                    +scylla-operator-controller-manager   1/1     95m
                    +
                    +
                    +
                  2. +
                  3. Change probes and used container image by applying following patch:

                    +
                    spec:
                    +  template:
                    +    spec:
                    +      containers:
                    +      - name: manager
                    +        image: docker.io/scylladb/scylla-operator:1.1.0
                    +        livenessProbe:
                    +          httpGet:
                    +            path: /healthz
                    +            port: 8080
                    +            scheme: HTTP
                    +        readinessProbe:
                    +          $retainKeys:
                    +          - httpGet
                    +          httpGet:
                    +            path: /readyz
                    +            port: 8080
                    +            scheme: HTTP
                    +
                    +
                    +

                    To apply above patch save it to file (operator-patch.yaml for example) and apply to Operator StatefulSet:

                    +
                    kubectl -n scylla-operator-system patch sts scylla-operator-controller-manager --patch "$(cat operator-patch.yaml)"
                    +
                    +
                    +
                  4. +
                  +
                  +
                  +

                  v0.3.0 -> v1.0.0

                  +

                  Note: There’s an experimental migration procedure available here.

                  +

                  v0.3.0 used a very common name as a CRD kind (Cluster). In v1.0.0 this issue was solved by using less common +kind which is easier to disambiguate. (ScyllaCluster). +This change is backward incompatible, so Scylla cluster must be turned off and recreated from scratch. +In case you need to preserve your data, refer to backup and restore guide.

                  +
                    +
                  1. Get list of existing Scylla clusters

                    +
                    kubectl -n scylla get cluster.scylla.scylladb.com
                    +
                    +NAME             AGE
                    +simple-cluster   30m
                    +
                    +
                    +
                  2. +
                  3. Delete each one of them

                    +
                    kubectl -n scylla delete cluster.scylla.scylladb.com simple-cluster
                    +
                    +
                    +
                  4. +
                  5. Make sure you’re on v0.3.0 branch

                    +
                    git checkout v0.3.0
                    +
                    +
                    +
                  6. +
                  7. Delete existing CRD and Operator

                    +
                    kubectl delete -f examples/generic/operator.yaml
                    +
                    +
                    +
                  8. +
                  9. Checkout v1.0.0 version

                    +
                    git checkout v1.0.0
                    +
                    +
                    +
                  10. +
                  11. Install new CRD and Scylla Operator

                    +
                    kubectl apply -f deploy/operator.yaml
                    +
                    +
                    +
                  12. +
                  13. Migrate your existing Scylla Cluster definition. Change apiVersion and kind from:

                    +
                    apiVersion: scylla.scylladb.com/v1alpha1
                    +kind: Cluster
                    +
                    +
                    +

                    to:

                    +
                    apiVersion: scylla.scylladb.com/v1
                    +kind: ScyllaCluster
                    +
                    +
                    +
                  14. +
                  15. Once your cluster definition is ready, use kubectl apply to install fresh Scylla cluster.

                  16. +
                  +
                  +
                  + + +
                  + + + + + + + +
                  + +
                  + + + + +
                  + + + + + + + \ No newline at end of file

                  RUv!t4p%Q@PuhN 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 Uw^v=a{-I|PR` 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 literal 0 HcmV?d00001 diff --git a/v1.14/_static/img/mascots/scylla-with-computer-2.png b/v1.14/_static/img/mascots/scylla-with-computer-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b8b2984f68bb49c050104f4f28ccdb4be4c234 GIT binary patch literal 18803 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%0A*%ZY zAH?4og77rf=g9mGgVc7a*SjG^?|>C6qw0VS;b^=3f|5{QEC&uP_QeuY5Q|YU(oSf0 zkBZ(I*GASE+Xk9k2@~p+U8WRO17wFOi0V#p7Q7GZ1?C}L>Mb0WtI&D3;gEOlWTfEg zNYqTJMDynu1V6>Tw35F7KPN{z5KN(tGPy zflfOVl5lTbgZXgY_eO;}>n)~~Rzv2^rXZ?2%Rq#Z{NqxX4_pHf3X2C!KSW4j=A2Vc za@6HSV=25KN1tc$ZEfH`+~O$&^9)Xu#rWipLqM8_TthB@(Uh=?$v)3O7%VM}$y@UZ zF?~p1wyG^8b^i^Y7NDTFZa{{#(5W06yFYB5tlu{!tEv2~x?WAErxh7JR}a9OmfhUI zuYC(qatoSnaiy@y6oisL8yJYXg2I&K@~%3a)?<;;x?=#bv2frLj-t$QQE6wlno>wf zftyT0L{DUKn8P1cu!=Vuxnu6_iBd7 z|E|`_{|-|SYS8?;DF`)mITN&D=o)}fSa6Ne0ED8&XH69>!UDU>%sc+lEePi2Y5%?U z@V>X1woa7e*|3O&%MLR)T@d`2DU&Hl^B)YvrIR#uZhzIq%Es>YEC@OQC%7Q!AK>Jr z^H?^{jLO?;Lo%cvRa;bK`%FQoanoxGLXBSDy)BL2Z<;ch7`^OF$)y{;P0y!17gTM> z623n)aw#?v&Nww$#gCizsv5L$2BPkuZNGK3`Wj??xIWSzdb$q-PJnh^4~8qFDI!Ot zoEba37Rt6x%d@5+)HqEs5N%h=e4>l{a&)3s&}18!xFOL+vmxR5YEz0S27ZMph-#u6 zNH!%L`7km7p|H5a^h1PjWQW}@op7vuaPAZBVJ7{a?ItqtD8f68g_$ zAnFdA_A9>Y5K97A!{U-Zit&mF4s<#!K*$$FM#%L82<^-pr&wdM@sK!rtaZAcHwB?a zP?>j4Ju9)P;Oe{GL3}k_Ry1eXvvxW|S4Rfu|E9?3zYZ>nqV1S!J4F6Bn$k|O_3KSR zRFmI8`X~X$2bTc|g+){XZ1owwU5@MI5s~D4fC2t2G6v|8+5kLwShJzN|D3U%m9SKf-j#8Kqy*##B>EgSir2$;;k%r?Q1%b%sX_;zMi(MF1#&O_Cetc zSkB{M1a5Z=EcR+R`-}pO78e;qrXW-wUtd;tE=2(Fb&;HCse9kmfLv_wQLavxEJ7T~I_0)pj$hu48) zzPRw00_Y5m*ElZoWM#aLzcJ-(k;JRIf@zo&lZw>ziF>l*P)v1%Gf6sAX}UfQ&AS(X zkoz+F^K$z0O8jxW&KdhWVs(~M6nU;AVYBP`0C(whCO28R;4M$35yLHur)~kzPw32+ z5#bF{5G!$5VfaxtcGKEZUKir3sV~Q=D%?1QaDvNHTfBRROEY=;zc@MVWDf4Xe)!=2 z#Ga{xBYQ^^2lwv1Zgl_Nk;#1ru1`1z_fAbE_Kzm_B}YfDJK!7`hTlnXn1^c{mXu+X z7%Jdk7I(!whp#e{07}Yp25L#l-`ffnkn${|)TNUE&7xEN4nC(1hI4Nvf>4vf1dq+; zvi!ZKG*qJC-3&xsQPBRC@5*rsiBc+Ou~{0>xBt356mZ~~Jc&V`|72NRg*-^Bs&vMP% z<$|I9@!25;@e+#4-n+R@Z_TD{i!MM3$jf`$Ls)kVaDwu3&48eF3=Ok8TcpwT7|L=b z;tV5(ij+EE^13H{5T^`5gb&i5WRMmhJ72TtGQ_yWKN%Oc@j2!`y(37hB}$nyDBsh$1R-rdV)4G$a2YKhWQiLBIeQYeP#B zcFKJD?C8**p^-p`yjgSztyMf(fQQ@kf%!|8=Dkℜ(2~J__ahRC|d?r2r-ehD8y0>|fX zD$q*rj-|F}z56VqPd#R&+{VmUJsiJXjV={vH@cBA<0xlF@MM@7zsM-n(meQiQxN}C z%s5iTjN8{#F(VadrFZQBGj0QTEcltM4@*YMZOn|-V`pDAx~-0#TIfc`j3b;G!INQT zyn<1xC1%`c3gUl;8An3%o*nF6UZ53bybxf49zK2s2C(C|)e z!=Nz$p|IdnmjMVxi$5`)2^1E;!9cWx#oJrK0xNHJ1<<9_fEr#W^se@dux5TE0UgQr zqEedWJ4~5eNv>aKAnHr5$6#>|+Iky1-poVQ_HW{Q25sw(H{GdVGgJff|@IM|IHxQAI5E0 z+cxrRy5O>&wWr~2tr0<2=B{cFk=-?b6Ckd)X#n1EncSR+Kbeea7zh=w50yB1uEdkB z$j_JH?j|3^RtBOjg(Fx(;!@Q|%4uA*3J1NQf_D_S=o`JwKc^<^)}U%P4y9|2h6s7M zbwb{J$qBhh@aicXGjedBZn;?d(yL@-WZf*8l}^}NN_=VKSQT3`xsjR`o$2v<1qN={G4?> zJB{cVL8lDq+aQN$%EkaaKNrJX&YBPL#=8u=Lz_t6!AZDa1<3Sh$W{K(tRimR zVfmMl5&CL1EUQS}cu0P_b+UiT6og{_Pnd%ERaE5Thj)G(hM)lmg$1924L~Sb+`wqj zenBAh%JA(>ftjOsT~xBb*DLvnrsQNJy|NoC1yKjq8epk;v#h zs6;}T;*F(3taa+|HU*(Z!cN|S^;TG>-L%c`CQYNNr%0WNta~igJ(wD$?%Gg)I%P^z zwb(jo3L^4uxx(+3+Y9y-7Qc0e%xq+RvPJa?PFoTZjmJsRl$xqT@}?lFJH%kpQS%m; zl?EUb7ER_Y)6u%-a3TSH6?&s3_#!Y}y(KbUSUX_LmSch$!Yi6LoA#b!fL|~L5jp7_ z1dIRU$jDwNSiD-pf7Fy-isTLaofWBDVLe0 zfF@QFVP4X~`*Z&}vYy$G;K~xYm_Sah=VE0Vp$Lwukc$cALMy$mnNnYM;6Ivzn0E&n zueYyn-h)}IoK*6y`*9_ZY*9t;WFYFQ=3qa(ss4g zcPKJ)uNat>4Ti?SHLcTcurdAWo6b#V3n!Tj<-(JJ4`_+*>a3`OS=~?y^{EJ#QGG1;{{0nNMxj6gA?>RBoqREitc(o~|6tQ1n3Zk0W25Sbj?BMdt0EEKg zYSRxB`o;j#{h)FVk@)z8Gul<*xb4qm2Y>qgvIv^_uyTk1-ux(Lf70c*obee zu#Fulr!&}QFK0^WJap>AGxnpotOYM)-v`h-moBBObQV)yOpCXWbxP-Qg|nEK0)qIP z?U4%JN`_K0F-%U#fh~I9VM(ou{>5|{D3S1W2BI$I+pkPCSYP(`w?_f~F}^84I1-bgMnzj0^B!NaLBz?XYT;_?v0G{>jo06?HKquij!lU zc=cpReNHwOB3B5q!Uw{dN+TANPT&B2&qPMwEt0-KBF2!=DIL}#PPIPN^Rsr&;W$O z;yKZ<$QDf|79Ff-l68gRM2CKqxGt zQbN{aJw274E<=3KgemmsfV}w6$T*^(me#y=Sg|2BxE3E45#KWHM#TyL%0OH~m3plh zbN8GYv+|C^T&H!f;dL9L(yROAK%31cVzTLw;QxMgiU@$$X8HP(Y0}u)eKEoJ*P*`xY zg#ieK#aB&@CxitoR)2G8Emnv4A_#UTZncVG8uv8KQPC>u|0#q z>z0P9Mggvs5PH2S^D6#-9Rtx|UR~(ny5^5H-4G>=j`Rv`1>Gq zKo$qE2O)tzg9Pqb%)iG#z$h8T`PBe~l2NY#K1Q08kWpW~v@+^GVW_d2izpb@mGzw& z*~Q*h@Tw7naxX%{1?Tf0fhuh{xe#WifYG>yz5NHK-JyiocNvHVLag03n+Epwt(Uij zj&3*L1W4E1-o6=Cj2K%{@^VuUYIv<@AnGm&j19wAo}_&x>u8M`dW4}3kc9=Jk|2(`(o z;SlPNubL85^~aYPh`MTGU6sX@v2Qr-(0xs_j&&-RJbtQZ<))NXLGAXHi;iU%EjjDe zm~6W?My1Q#I8YEc;(Fj@I$wLk#*< zu?1IT3_vI>xY}p{LSb|-@di=QxM8^w7a zXCUh8jP)HLO+{z})8fCihlcLo0#1N*%}tBnXq}S(WC}u!p06+vb@g=P)zEg~>tVyO z%6Dn8Y>Rw9q*IG7QP*y2k3Jsmhym&Q0aRi>DmV>Fz915nkbczzd|FhyS1}Nmkk9)y zpSF5*-V+&}H%L0u;L?OiJr%frT1p1w(AgVjVKo3x=1Rrh&AQTo+2}60VL7(dbiu_9=V+Q|R1NQpm zR*E0JTe&^F*t8237rcOhFc5dfb4>VLgGS&0eSbMJ`qnttpiw%!Y4xVo3H?S>LYwMO z^E=n@hmp~EA?F&NX`Q|wG6kUo$p?5BwR>(^=(&ckM%E=}=Ni6jN?9dk{@xTsb>|pN z6l$*FL(l+(!s7MOut<$_4fTX#|K_Mv?po&>8cM}JpwgnY-D?V>x=RdtRWSyi1Pwqa zESe}Grb7IRF?q0n9c#c5Jm;K^;Jk%$#tCYs$0FkkOqLP}cDg|#5#vaNbkifIeX8We zEv6uYyZxuYmHZ6SC50V zmLj_d11Gku?#$!fbX<`U=hSrw_kY@yzN(i$#X!^-r4hK6e;G{**K+vt zZ>jonu~R25b%&?*MN5Hc&!Toe+Rrh|$K^@rLjqR-jE0^#vK=zfnr;0N^Q zhxF&i^k>l(I9*`w22c0!Jk*|hc&a{tagugq;2Xf!NI6yWKj)d2=KoK$f(7RP?_OHT z(032K;W5iv)=U}!N=r212IRn%=>9f16MHLs_)SIpRy1kUk!tX7W+3Vg{&wzN4Z3f_ zeZ9d;xY#x1%V)zEPahT3q+7Z?S%6(U?R8|*IGJE)DhoK#B959Y#TYx?o-yY4($Gw@ z!jG;T=CrJHwL0Z4>^AG?1!jvG&2KOTp){ET3`E-(7Ap`IJ>evAIzK@8C(&9Pq=_3Q zd>0~k$QDBj)Son^laeSeG6hjh>Va>4yl_^~;xbg6cnZKA&S= z(p+1u<-7i&Dz5td6?6{IeTM&hg#Ub$|NIgAsX3gzPDiv=dx{F*6!(EDS~hQ(_o!F* zrnvVrhz1jv@!9}KT|i(5L6E|e|Fi8Otoup83Cc-2>O##T^bv1Xu==M^lFRWgGD_I~ zbTD7qx_{+^_&ft~DT%p$oEBPVoWg7xtLVF&8Q4)uK@oV_mY@i1{#`YhwFXW52S`JP zgEDJ9R+6oUNc+RqN&9_M(wdqly6#n(ckfK&(6kR=#60OEc)M|*5ThO#V zhd1v`0YWk9CPNV6%g8n`NNu0WR|}DQ{8X6qM64~(Q*3XWf~Y3FQikR`_`DjI z?{Rsya9FNF=Q~^^*4s=ro}kwpDWFGSgD=&bqhA{#D@@9k>rc}a(|%N}@M;FaV460a zOS;&hr0}SEUu2|QIl#^s)frB|-8v0_%M^s--{0ijP>+92iM?KELk(t;&qqf0{sEy4 zHJeO6Yf3-G#-A|-5qTGE6J4OsDe@YCkT&(h$U4K4ouSV#2tdRxWT>rQeczO(s$0He z3ZlAO3?_$*Xq&4ET*euIP+0K!#Q=oDf-i^+KqxFe8__J+#}D_hE$3tBZ7iIs+#L>V zjcVPrPMqnZwsA3tXgj3q?*{@c>iT;ah)X!r^&HPiZ&E9l&CCUianFm4qP@86L$(`Z z?S`m%ck9$VZ3;qh^PRjy+CAsRG_tcbIc{X6-)q^qibN(&cgEALfRq^AZ+R@TPKoKA zqGQEQ0fdkW_1Jk+aw}O}HU$xRkFDS#c5oacFht%MS#NZSP&#n_51SQUZ%QXc>ercq zh@8}&$0^7l4q5~#{Y+$(UID%r4TgC7L#9+xg#Lgjh-yL`Ov`F!=QE1|2!#co*$qG_ zEV%XB0EEKgJ*Kuv!UFr}-@3Hh6C+%0p)i`ln?@V}$8>AiTF^{OtbYPbzieAubQ-T? zMw~hi7}e&j0RiOVSdc`{SxXh4UUCg-5&b6>i{P}x_ZY#6(zT~PRVViAk=8N zf`Mqe$#>P^LLvosghZ)&1NROzsBhplx4G5cy$Dmhd%)Hk4T8yV&MWlR&{p(ce%s0&i2^iy5nn1YDB3)Tq%4d>_Sbg{&Jp#nYdipY9k zz1-};)wf#Xp$>SNDfLtbJY@^%PyX^iis55MlzUC1GN9G$Y|d?P(r(i{N%SA zBKvQe(oB*4*Gxe~PWH|*a;mrP&IjoInaJq90=$j}V`cy5RW+&pxha(tq5sqrMC63- zxeKxUap86`mCMoH+yQ!jCo+12zpL5}@%Mk4(oB*4Tc#kY$!@TCQ0ot_n;L*nSp2u? za!#y2espQqAA_Ow$9&cu!&Y0gIIm;c$>M&PL~Va5R}JiI(O`?~j$I7I|BiLXo$aBY zdo$oHaNTjDbxIyL1))aCZ45-)*Bw2l%h@cgr8Bt%4m}3V)djTKj-^MK=)D8-t~c3k zNJQpLX{JPE#uP;4WWW4q?p&5O<)jUx=82%!L`HuE4iE^40Gy!<5tStQX;Uhyj(DXh zh{!uaY=T*1PN7sYlHmIz>jSw77K6W0sXCmXBL90#X{X5lE>jSZlfOT>3a>c|z7Sat zY^Yj>^W%CrmKPF6pEISP>V&^E1u^eVF!p!ap@k$no=un1b|(EO;si_KRLhY1qsV$? zr;O4>Vad`yI*3aqtR=#;B-~3sFeS0-rSCEjmr&=qT16i~2!Ij}=feB&EbZ20EL@Lj z&p4smQ?_0i)wH}r3q#;z6XV##G;BiSV>3`{QQN%S6oeWd>lui)>qzUA#(y|N`&yx+ zyN4s|k@Z4EK}Cz%s_{?<+-yoc#rijxf~f8QgVmr~Q1St20779Ak*eH(IFW!iJSoc* z$^IzrhM7c|hJaBa9~mQT7_epYEJ6r{z-G;dSYgJr9~CROrXV8kgkB{sx#d1U{-+}& z{~Ap)@@XhM{k+PQYKrhLHw7_o!W%0ITdOHA)n)52Y!X4&g7-$&58FchAT{Th&Cm!9 zhj*KjRQ1X`8Hl<{LE9&sZJf1(1hx>AC1sUzXPs<-=l?1)TElxZ5bB&$I7WEDlZx;N z5&JJ%C-$G2f>1-?lcpflG{n37f8#W?=8RLa5H)C~b^!Ke+oMtr*TR{&giQoQje%00 zW0zEi7+^7)Z&4Bav1#uq28c)lSbqjKGPN$MwJaKpjQnt{r`G*tP~BC~)vb5Ic2f|M zcfqzJPBxL6u?uG{77`wZbc$Ff7O*%hkym>_G{z(A3~OLg;t?Y}Vj(<2BjXNJnyPu| zm??xXYf2?W=#(jl$O+wWOY_x{(R&_Sny)aWnIikkOhHtW-C*8U zQ$OGKG612l*kNjj5?h)-zO-AK+o0Ox^03J=ZIVO9ly<+G=Gc$7hsnHEWMGnwHr>wr zm?>*0?)nG=QCEv^XM`e`h3;wKM)^ntK+j51o0ZLvQ zAte(92k|?gUfUsw*)6Pt;Du7HOGSaUbu#-uwsd?M*MP+S= zxISk}J4ODCDTr$F8z@Ffx8hRF0EEIKs+nWuQCyyy$>r%xYCzh(DYD*Qh0Pt+W~kTS zXxe3}*I&;-T*6sn9lOL$?vWrsoQoq30dhVQ89CPvOqSD`ByE+^O-r)z5M4jiI$b|t z3PSPm`+3*2e-2?2sAXG63J7JB3ef(`XtNy-U11dnbBLU{CwaRevj4p)%@jNTttp7e z$-egPJa*)W?`zNA9alv~`M!a&Xu8n^z7*}ZsDUmr1yN0W1M#nB5H8USKqxGtnn5<6 zDNoL%ONr@$cNSt;aDLYj``>%_P6*djvGBbezH0V4qfJ(tJ2o1-*rroKA;|K$B z31^qpW4Rf8pLGY03*`zyXVrTmBP#-|IKl1m^IckBs6gHSrN%dH<{_r4+G$ z#uP*~u?@t(nnAeKG612l;4_E;2!#c=MjC)nSp0#h8IG{P!Tql-L9C<&UwmV1n(Mn; z3o3l{h;{hX@t`buwmqEfb&JR)0>eI5}%@2_QVR#`!RR^pH2bBz09SNI-6h;$Er!%?9 z$^~zEDxFNiLF9thEnxWxo!Rotq*HK`l{ie-rF02xuz*ERd0hqjoca(EYM-vNxVJr_ z_T}eR-(&F|Qw~tWnR7r(!}+tVV1eQMol85M!{^|NB|C9eTy%4XlbNx`Qg)&0a^HPm zpEj&Oy`?EM&~(>m6s@(m>KS4n>JIHox@&Y-dx+&CC5!cs2MNLK-Aqe zG7Xry?5-0x96cS-vd*EUHt=Z;QZFAUWn#%1XG}__^ilKBBc>oCCvnqrRzDXR!RL9- z>b0h{Q{=Chf{2{_>y`yEdFb{m0Kz_}9J!#DsFAoDq8h|FWAG*YtQR#Om>lev4W3?uSP`cZZT zUx2IAkr8|KKqAm;h~!hI^im{Gn1YC$E{DLX9 z6v3Y~1yN0K1M`7qfnb8)0EEJ#$@0or^I0P_AEkr_I{yQabv}-)@Dof*0S#+B?>Fr} z#R2bOATFWC(?EEAAu?(%9Y`lf!}R-H>-76eQxJ-GKh3+K-Fi=bk@cfU>AWXQ=O367 zN%84-O+i%C*+9%FNySHt0SJXfRFZ0=kW@0Ha2<&i+ZomB0$cdOGnb7d*KVNEq8hxD zfw+W{Yju#qfr;Q`WMu8BB5QbbJ*RbA-fjv)@%2&O9qpE4)ojhqd*m`1CwK#WJ~H}; z*qR;w;24BdvKdo4DnaL(f{45;mUI3O@cq+~(Y-_PeVE^0WlAAMU*XintUEV*pa zW%SQ|6>gZu&9Wct@^Ad6o4iv;WX6ZIRuYod1u(rBSh}6idv6J((0dK(A@p7Y>8btvYW#vY1UpC1)hxzAA# zhu&+_1mAM+)ZQtoj^$?0N!2|9a}rt!TujGni3Z*yuAt9j?C3M?`ra`uvqb6m&%V?= zka3N>byuPi+yR$qiJE6#;7!?;4@zX`lv~x4>Sz1EB=mcA!QMFf5_Ec%0rR?CGw{3o zNz^PZ)yK%JT8CO|pVoqH+-$FWeztlj(4=;Cs8PLQEmi72Avaq+#nbW)^bf_H-F(1o z9Y$8vjp?oAisLw|BX_dEU<1l?v|tVpwfJp{TyiaAbR0ovBp6f&z&@6U`bYei14W+H!dL zv$1)@qrTWvJ>ckr&mCeJ*rdxNvT1nMJgb}6S=^4A$@#cNOEmC?Xwxd&)pI}f3#|LA zr{h$f(lvgZ&*#61`Mg;t_S7>#brjyiVk!^iZ=Myb{6D)p{RdQnEB|RqR&T>*3oiW0 z-m7!^ADGX!x25_|E9U1a6sYIv_-AXMiREQLm-^Rl(}~U1p?D9#=nN%*rT?MMavS^y zl`xY7{4(L+N7Rgf1V@4?^dQ2)f?xwTRgo{yhju zcWaM8CAhF>q7qCvN^lejr(WNbP1U*cUm{ov&6Ug7yYoLEO#*k>Ij97e0{xl+^2nt? z`&Sb<^2=-uDADBD^_2W?)^=_E~9Gi?~TVkc>idnw)E`EYsJ04 zUB|m?p)bIx1$wFSd#d4Sb``U>@T7C7gMeP(QfiC~T{}g2P@P*8(c_sBHPxS|XVy}GF3PN}|9Tzu=Op$2*MGB~`g5jQvRt~l`iI_Q z7^e2lHl6wSg^zXpfh?fSJ}O}+BK_4R3Pq%4`zVuZ4W4Q)!r+Cib<#Xx(sbWuz|Jb? zy)eq7p7c#kTgL@%Bz902bG(rlttD!@SbKbjjxKDI=9#@?T4u7+@p;x!bJBc>yLAVl z68t-PhL-64Qmr{@K3-k07s}J(be&1_Lewn&rFj&YRjc7^mnz)xE2-|b43)1GGqK+Q z^{cqn{P;3=3ok}3M7zC5^W%rbdIgQM01Bshv+bYBcG=DL~Ut+l<> z?~A%qyw%mE9TzvNXo;GOo0`9OQQB==`L?xpFr$<#rVC~D-qLij*?X;Uc|rf?R3Vj9 z&uB|}kB#fvX~V=^-mdyxY;Sf>A*m;ItB|~R3zrwfd?5vzZ?Jm`wnrtn><6I|+b@maB&2scaoE1E#Afj?=9 znkek`HHz_0b?YqgQ!!h^&k{d&xAxzt1Q+&4s06ncC0Me(&|ivbL$f+dtbG@_MNH}r zU;{O-r|ZWOb?yQ;S3x-53v7Z)a4`_&fJ|~R&>j{b!BNnjAt1p~jMg`jfCNV|0==pB zqELJH?=^OsxT<>exq3B7Wg6tW`D!r=e20Ge>+d_!k6q};ZuDcE{?TDOwcKGHIQe#? zt2_7|>d}7HNNAXnG>Wr+40Nxio;#jzDK|5|}J5!Ue> z-b;PAsZi>#UJu=WlA1aB?{XLQj?tNRrQ`FpW8DGXuy3}$xME3jY>vKo<$iXa`rnhy zr)X1n>=oAL%(0ykCu)h>zIHpgwLEveeh3|%&z;vFyvuXv_w5+yA99idgX!#3ym|yG zu4+ULP!oZN%x8Y7K1`zPljWBUK3QI!%kO-U{Hmd!EPuNF$?_|yk>rQ^V;GLNbMBb6}qbWD( zm2K=&jqeCEiQYkTz$AK8OVlJ$@9&|g*EP}(qWLJv72>_(cII>SiTq&qUf0Oi4Dft8 zb>Xhd!un~hNU)1ds08=Z_mqfQ`y=pg)K#Y!Qpt2nIvG6iG)Tz=g<$L{&qgQkNy1?HHWM7D^$Yt7hniuhWHomCD|pE0KzUsGt5PDk(P)8!X6Sc*F)H-V2j=F?%qA91Q+-3C;{>adt21s z(LsOTK+WOmd=-^2{RQ~L2%{bWBsdBwgzXRlVe#tg;ie>V>XmBEQ}v5|{gbmbhe)l& zb_hYX&L_L5ui|+T<|`2ffVY|o({atVvX+Pf@P>+c?g4L1up#5_?rn!ka4QU?1jqw# zhN!<|gZ}P^n!~``7nLym1!%>V%WvB%Az{QjSdD1;8YjEfL!T9$7G1MKd&xcV7 z(_ny8j5_KPK!T%?Lfz_wx>Eak!gDu#$F%d7SMU=UO zdPywz>(LU5uOHLb53Z%2M>EOA@T``I0<69k^HamhvV;GHyM3Rc5?sX}QwHQ=waGBi z#j0fse?xUe$HnS;sDx=SKpKV>bqOHBQAojRn_94ntF7={S-q7n-(E}_&vTe0Rtj6$ z*%i~ls8{w?f(fj<_D1u}D4U=qqJXkFV)km3S@z~z-R(=E5?tf6CI1tT>?mO6jERdy=L>?hn6ZCXuC?R zCgS1NY@JaB;C4Bhc`lwyv_ur(_K29z8g77Yy|${Bhyv1vi#e>3W*HX@aknpqN^q@jOBs+y+JUkLTgC;`QFj<=(@+W1V1P%A zH0lySf}@Z^+7>mDR>-Qu7~cDfdHC1XuQ@lmU5wJuPdnWk~P@>JHcEqo{;wFhCy$7d^Gz~tR!OfXr^C}oTvsBK-*_%-nn%CrzN6*w)IC!t$sbU4Yv#l)=^h< zT-vUQN^s4urX?D1EOrN3gDpdX(WpCIpCeES(_ny0j5g{LK!T%?LR+GTXp0y0V_J); z=JD-C^}X}y$<|bJdsh9`#M!xg=Rck>Kb36v-brbE2Ouq0L^FE?L-kT}?`g9t-e&zV zN}V4gO&^2)ajN<;f;YA;Xk~G6CbdKq;CZ@OS~NT@gNRez?K=sT;I2BJG9bS$yj9j< z%OK(=)E%zR>rn~QV1RrKPwEmtf}@avXI31Z72JAnYxONEUlFUPR#A>txT`-;U_JUG zT5nvk&uNJ$AoW|Z3~8iV#vfm~+xIyt!M*kgWk4ROn~f4(@LR?o8>=fiF8DV z9x_s?O8^OuLJFzJH4>@uwnRDEI$^$A43J+gOThJ)V#`H&2uNAL;#NbMH zAG9VJyL)MgC}6iuEM*$ImJvJ5J*x58-7}raHk-tKNUXZbjU{f2{&Ydu-j7xy7xO(@A_}m5Lo8bwww7_y ztM2x_gi3H1K2I5thwZYXMc25Nang^dJ6xaNp%SLS04W)^)FprfMJDEXsmY&+wAJ&o@yC(_ny&j92OsK!T%?!s{uG$7{VE*mcK9-2ffeSmK7*hh0m3 zR>u|Y>RKWS2p%bxIE`S-_-mNEeS=X6?#=Bf1M&zySk_?6`0D`F9Y*l}sDx=Sz)wan zbqOHBQAi>9_@#wl>u&66Vl{Tu(x7jxJ=v4ds^r2xK}$pdyf=vDOoP`l0K3-RzN=6P z?#Rn21M=W~M%G}<0PHE$9j?#EQ3=yvfSL?m>JmVLqmTk`?T2M_em5vy$TwS0_!%{}*W1xo|$!5>Wu#hGV5}1vJ0Ar6&)AkYoiie@oQ*_1|0C; zN!DP?uxTvn4%g=>RKheEpb~?Px&)BmD5Su4M2Hn-7qB^=@1G-9L-of^T~O$LyuTH# zD=y8HmWTp6&lJmwht83fanmAq`%Xb6xTj8}49KquZI(qT{lEBUHjP7~mqKmAV9w;3%Zf zdTgW78qX$XrLxuGz7Moh#VV}+E@v--Hl{yeb<7{c?qswk8M_m;L=>=_7t5K(u4TNG zb+<2#N^n26PzL0&d%mo}mhsX#s5@Mr9jJt9Fu+X4E_DeY!BI$I_q?Tx-FnmhN5qQm z%tkJG{Ui=C`F{|tTQ2?kv_urp{FYb}HJU90sMp=?dj*x?o_&!rAdlugJBqG|Ed!`! z)D<09#6R?w!2nko&D14;1gBXF&1Xab&6B-Fa>=(k9xhgGr!H+K(}Fp;QXb-7?lCP9 z1sqQo%b&)vWo$Oh-M%TP1o!DalmU4h&y_XUGBzur?(lMupx7zmwE$ z*f~p=$RRc?)={6`@rH0sEfEDoj}}X$Mzm#wH^SY%p{NA+Zk#e8kLW{W4YrK%4no~w zM9)AaOoIWwGNP$V011vl3ejgr1<{sGi_^s_?u;m~xz@(Tsc6k|*`K5(qJZU_#B!*y zY#H%g?{42Us08=xm6QQ_EdNo~V9SW__ozEupHHF^rojMH8OziqfCNV&h2_J0h~?^Y zS)j*xe=Al(hxUlG)enI_T;?mZs<<#e*Ah_x=f*or-I!=_S_W_%s4F_&4y=nxa7V4B zB^vNWiCtt3whZ8QMBU-~9D_=j1_RV%a8j255*&pTINOB5+06;GHnDwIFDL`@;N4;u$=ij|mI2!4>WYrH3!9)4rorK< zxn$R-WtzPI%&abTn84I7;k7y?I2K-YUE=^s_Of2Va-yBqeyRelqAWz-JvIbjbV&|dmaDASQN|*)%q-5AqmjDtR zg%oU$l!k5R@hR&evB$)Us!bBIogb?9nXre^%H!gFKubgcuJ4GYNyF7L*?QC6zSmF* z?z)#L1M+ZPVOP;5t!1*coVudplC}wzFbxLC$Z(}D0VFsIDY%~8aJbgnPZ%jyXFWTV z+r#~Y0B=L=DGWoalL0(fOGE*{2Z-fO1K2Vl+uz;3si*{Z=48r%Jb>rR8f=-6wWIEE zeHKv((_ny}3}EUKK!T%?0`S761YpZ{!VO{tR{zb6U7y*|JLIjkrEo1;kzCYQX^AL6 z_bIWIY3N!eXpg(w_XsM%-S{A7Kpwgu$r@~#p#2kdhwJlQRKheEASOeXx&)BmD5Rh} zEF^Su<+SzTv>WawbuTm|)SiHftM&tG*Hghc-ZrhRC87Yhv0_epfE#0(RE=`CZ#XK! zl|O_sAP=~o$r@~#RQ(inhXHpWDq$K7(1`&@T>?mO6jFd|?m6HbA5wd!SREbFQzW`S zsCE%rUtFT6Xo)Bw^cJzqXoOnEPB*&ScO5Fhy>+#gXu#3cKdTFsW+gHg^=)cexOiY@ zhko8XJF^r0*oA)VMnA^sA02(uIrSXRTq3)8QO63!R7-m?y*TrEtf{G^Um}-m&8vUa zmRj7Q4YrJ({(!o}_4za^VHynZj}b~;0!VNaQV1655cep-xKqX9r0X{Nf zsY?I}jzS8tVV?)n@=j}sDB$-TvApR8m}T_T;cnmQs08=rsgwcvO@cdR4YrJ)eu=un^?55Q zVHymulkrPk0!VNaQuqz~JQzXz);kRFmRRA1dmfA!kwcsgcpa@@Zh=>{L=+Ic%s9~% zvSm>9gS&m-q7vM@Ur`3+5xu3X!InYQPt+A1Z$UOgB}{_>zA~bzO8^OuLJHAgp9dq3 zXv=Yd>0%WZ?s+i6Y_4^FU>aJpjO8g>A_`b8iRI8+IghoB*9z|TwV@K+uNlgKJeGeh zYp`X!b^+=R*XOyYglRCqRK_xO2_V5yNMZTZrLi|0?>u5^{hq=TVwHAcqj!sAou9P! zmlqyIYn03UAuSOF48JFqJB?w>i0*B7``$n$xIbT|49H`+?;eu3A7d>ey5-ds9aqQ8 zq7tUT07DtW)FprfMw;w9OJ-jbvKpxdc$r@}K_02=w;rcA25~jfbXBpMhC4dA+A%*Jmql9Y9X2wlo zRd;q&7+q^a<9f7qx%{uu5>deO@5S<{@oX6dKIv}XW2gl8?ZcD-c|8B0tihI1;D@L? zT%Yfw5~jfbTN%&PC4dA+A%*88famJhw8B1C%y-mcGi4f~Lqu7kQNcfta+o0Ds2i4|42htzbP#Z^C6IGolysCEWgd0f1wX^AMn z^)|6It)RwjLx))AZ8y97cLOTHZFeoDK%TCD6?WJ%aQhQ#4_D|jsD$Y-z(&R^^$8%s zQApu6>|<(r53lt$b$=8qw4R?8b|G$v{oC)*>f{3dT1!L$!JAKzy73?cTV`#Ws7pHD zA8d$9aBHroB^vNujd8*bTZV1BqV{lw?u1I14g>sT1XG^?5*&pTg2O(jrneDn*{nTM ztir-QsHV48yTsmF`?5K-BDtvNXo)Cb_dKzb5q2$ev$Ng(I}?@Qc3ea$kYD-!M%ZD? z;Oq|69aQ3=ywfSHV4>JvbMqmaUGdjoc6>zpimN361r6yB>1bCB#!v;w(^U(*s% z!0d8+%C2rL^RFg#NypXg_h<^Z{l1|T$YXYEVTUaPumSE4_eUj6hXF=1W~omA364Sv zvx}ArX6tP-93WO~JwMai!%c?35#A6R4f~^2$|#xkl-k!P<+BtM6qSF;VH2yTiEc`Z}%Gx zkE4~z#r=quhys59DV8>k-=UUK+q>@my@g6}TfR;ykjHPoy+rRdhFV5#E2>L6-fQ$h zB}|6_b~1jcPXGyyLJGe_Lg2TY&!&orayp+Y9Xiu@u4}AVQEXqAmR+I>9?}|x=AGd- zTuVd&Za)=snc!v_Vjbx2-*i-hi+&oVKpt+#2s>;UVl6=J;R>CLN|+7_5T|TLwb^Lha!S{Q#9P9R~Qr2%|m$BsdBwgl$(JVew=( zk!~}WW}EIUwO-$*9?N1BP;gbYk&4N2LBGD1hyv1f7BiTTW*NTh;O^gORDw%=1f@V8 zX-5b_wOcDf(!k6N`XAk{x0mWWrXn;)E=(TKcW(*!vKvK zXw)Zw1Vg4YWi94uFprcGxl)*d4WpD|8oB!gLrQ5<`vp1d!k;q@dQn<|?gJ z&KDE2Q@)+El2{RJR)b{KC<6E@pqb_3Xwwo=z}E$0z7oDHTmR>}`*#*9!DW30r9gg7 z_B&yREnEM;M(yDW{S_)9LDFyO)TV;~$O4%|jSV>*daizQhDq%Vdu!-?TeF8{u6jFHGrsg_sZa&-I zmYR}p&y~%?96O5D!hjl7qhQ)}Fu{WyW6&%!%0_C5D4^_6F>^J_hFeAi2fO=s04l*H zzCWcv9%aW0J8T&d9F5w;6*?c4FdYUs#3-Xa0VFsIDU{VdUQ6^aDR!G!8PpmQRN@E% z>}E8#Tpl-Qi6{WVLA-Z zhXF=?0!VNaQUDuWXDy}x7EjD8O~@un<#cjfHlLg`T@63|qtDGJORdvu?W$F%7E__6 zD70B#Xx{B{Du}vGRD6z$`VF;26i~OTnAwCn%lKd?cmKws65Il#CB(JF2~y8lNuB@l6fR6Dx>;-QIhaVhJyvW-p$= zsNifg-&`_hYKbU7?G7=A32K&6!R_w;-GWMRvEN83kcZkogdMhw3jT)L!xj2xRKj!^ zAQD53`UH^RD3&_Z_DpB}i?-#aNG;kzL9NA$Cjhl36_n#j?R)B|JNq>?4LV`*!o>qK z=k#rAY8{t3SN)i&{^+3Mr`7KDpMps}@hD3au^v!DqWz zHEdO9nN|rVfU_c+X)cz$mWaX{ZHbt@8fPOcLxS_&{W}Mh;4<%^6!iA*jUdkM7IxS& zB={|A4_D}&sD$Y-z#_&O^$8%sQApuzc!(QMB1pWHN)}V){ZlQzg~UI_>SAyxu*E2> zq6#a3xOdU)a{;}jC8B`1759}|6BFVrV}w5Hl8!6hWl#w&{U0a=@`&43*kQ{UVH?yQ zuFx$}3DaSKPmDO~6F`EakV0Ij6h9;fIV!?SST+p*C7eL;-3u#T+K6Sq2A(xcheyD#67*gHj+5wc~{ywhRsyqV{lw9)(Jn z4g*ADs8OE)5*&pT)JBBaX{$mlo-U^X&y4(~SYg!q@>KOGTPNINI<6q%Zbh@t1$2{^ zhyvpNBIdJ3+(^qX;g9bA{T`Lz(tnatAdk3DgdMgF6aI_Z!xj2}sD$Y-z$Zo=^$8%s zQAioABbrF|>5pG=cl!f#P;exM==tkpJC;W#euH`WqS0NL(h-V(?xBZFPs{o4_h z-~t~*DUb(Qv#`UKkwF5rhe382Dq%VdP>4ZBeF8{u6jC7DF&xO^xqNeKTKlYQy3{(| zIvu@0tUgB9r(4VmuR!5-GbKG2tp+Zrv$RAMkoRjb!wGqovBIz1{ksj7;8wVqQXr4K z=Y<`%j1`_m?coajD=J|+4DgDPM|}cFa1>I=3-e{GWGNk|Tf*JT^+3MtgZL#*za^Ye1^62<1-r%m+TuFexHiEZmF z=&BJV3YOc}GMaNPnyGq~rQ`IaGqnze!6pVEwkeu)~%y!ywciuF$Pf3DaSKQH(k26F`Eakiy)q z80O+F=~TAa{QknBVl^_hr@V{l0IlC-I2f%7E~^8yL=?bxw3y`tKFe5QzPo?zs024e zky0SPzPnu5Var(J64V~9&HV3-g@^^;nTqTdJ7I`bH9Wh!sS=?>ulk0jS-M=9^3A7A+A4sQpdMVS<`v zAn|8+|NekVaIrs4DUgTSXTlC!1`_{6?coaj4=Q0g3=oN-MtuTEa1>Hd+bzTmYbQi1 zM@#m|Cem#))N(1CDEptNHDHF+Vt%JOcdDH+R?e6ty%^OuG$_UZ{Q9dv9d7|P)e=#F z-yUMFYxs?}j45_=_itxZf}3IoN`XB5T7(_8j46_+Jq*7iPzlpvfLshe>JvbMqmY8% zL|6EAzB16a+*=}6EfZWQ*!dE{#qCR$ZCa+u`%mUN^;pZyyqNmqLhrB6M@xpQ?i?)< z1up(pEDyv*%M{~IcmIBgN^rm2N-2=%;)}u#Tc#M#q4scv{vDMt9R{GrT%3XfVyTcy`k1)l0a7c&dNYh}SB5biXkdBRM@8$nJX}UgL;-`_h*?hqY3%8BXu_F~e1 zue?C4XeK+Y5viY?-`VhT6jwdNC?tIt*})(MWv)NN^NVXgsi&(HPIB+tOt} zA^##)I{Wt`A!C)u1EBmPT0>lhzt<8`0OfzhazUW9jAH)J-Mh9m4Pzi3BXD9{oVEjVZVau@QQ`8==(2r3G(_w&W3`Xh`K!T%?0%M|g!5D8# zl#{I!<`>jHUrD{Ux^(DF-(jDv4wkwXIkfj!8Pgvk#UCR0y}vEg=Wx8i*<4FR0iF}Y zl0xvbjB&=f`?o79!A-Rjr9d8@t-=ml#yBa|9){;ERKj!^ARoh%`UH^RD5T(dhy*+* zCuXIx{{6~dh?UQQy-m$5MITsgE=FsK%kexd5d~o0C6*5j%(0f?&TriPy91TrM!KC+ zAP>x!g&npGcV0m4;R^i+Dq%Vd(2jvgeF8{u6jH$4Dg-cF{Kvyr`l-~4@h5fIrveFJ zYy}mKPH$f`zk_nP zSZ&mMTap(Vt>a?dycq6hXccfF{Zvat0d>cTnN6s(3@DCq_iq6z!7VVCQXs#gyIR;` z%Yfnv)E=(TOHm2aVSrPNI_eWZf}@Z^-L|1tbou0*l>bP}-^9vc>$=N0iYBmj`!kwr zE|))Oi6{W=e`5Z6KpQs1GC=r`yMO;eCAiQ(pcKdhZJk3USI5JKSOy4ds!KYqj#on^ zOoss)G0><_011vl3TPuj0Bv?MH7!*vrAy^ht~@?nn&Z1e-9xM}>b)aL#Z~BxtJ#Yy z0J+`J{4?Zs))G;GTvE(wf}CZ%aD=;mGf@dH{zE7Q@{l`K*kQ|f;Uv@^uF&IA3DaSK zPz*Wh6F`Eakb+#8Rom=zdH+-)??c;f#mb@Hs!c^x^r8s>?M^h;TrR)V5>Wu!b7KAy z&@6+6zq|YQ7gT}^{g0Fad7ynI?6769@HuJ^SLi3Ggy}FqBL*7v2_V5yNC7R(^YLeA z+tq@t*y5ijZ1XdzWqiHo<8wR#sBNi&a$M;DL`y^gYI}(}Oi;6o5yrdww>v7q#l8!r zKptutVTUbagxRP)47Fxd!gLrQ5<`vp1d!k;q@Wh&Jw~nhQh8dU-0EAVT_jcy_19f=m5ZlmdCAy(;XmWnAzQY7bZF z^QeUBFu)^58ubYv!BI#dZD5GqwR9<2O8a=W@=U2U+Lm>O1r$pFW_?vaj_b4KwL}zP zww;)}8fHT+qk@6%{%wUyaFK68DUgTRzQPV$Mg@~ldl+VWqY|dW0Erl8)F*%hMd2*Blx{j~pzmBJQvpyovqSgHLVnqw}L z54A)TK(_i}QtMy>nPoh%in^rZN_Qnxf(v{FEzy7jxx<7Vwu}b`qxNuxZjVZs4g(Zo zkWrri5*&pT$i{>K8K0b>FIDL`P5N#_6Jo_Nq7K?PHaeH9-!K`3-C<}Qa48+CC87Yk z6U5vm*jdH~$GZD>G%CSOFrQK&ziPWy*kQ}q;40J}uF%U-3DaSKR17=n6F`Eakb+&9 zZyyv|^W}W5n?r2Riq%HFZy!)-Og#HJw!flPz=iZDEfEFOeJW-)q0TZ+_}JaQf1?uI z0v}NdAlHbzQz#o|iA$zA8UK ztSVyl7Ic-MYJFXP9GZE?+pbz73V2J2*{tz4%ran@m z$=snOq5!oQ#2hB5S%wP#aQE+Ts00`LpD6|MQ2R#MVarhAOVl2&(9ci_(_w%}3^nQ# zK!T%?g4(DsYql!X;`Aa|^C7>3j*wc;*ZYc9C*ER}$b!3YTdUw47ybjZL=-SLQOs$= zoMq&&r@Mc9pb}lmUrRJ#_k6yp&z@^k8%1( zN8fZ#9c0fXvWpjWte{>3+FndA&U_wgYU=2h$R%6z>R+jcf_0F?mXSjmwTCg+f=ZYU z1B_zK4bV{l5?!K*d)-S89sp%O6}{uCaYZc=1yIJsQbC}!3^cZN z_ir0if*WW{N`X8mrwKc38E8yF?O{;vgG!hV1C(P>Ql9`49EB7pGeV%O_tu=_#L8(_ zud_46%X5xF>x@fvftH8@Os^2jjfUxP%lPC{cmFOzCAi6cPAQOw>7&99TgE33q4scv z-j7O{4g(})m{Okr5*&pTOp~H8wY){=e`0ksQ;4FqUZ(ROw6?fB|D`3O0MIpON!=I_ zKrN%1)zl>&SMw{Q65LpQwM5OmEp%(E&x{2H|E|;sVTUcFnxUvYT%mDP!gLs*9|M&7 z1d!k;qyV}b3ebG6B|UpeqTriJC&h|nhn~|>N7$w!4BUtxfmQ_<)=VuC1@xUH<~gCy zGQK(9-M@vX1h>Rdlmhv+&A_^eaZ#-HVjKAHrL=^BhTg-LBpJgD^?CxIzmEg8Gj8Y(vzcYj#whUxWL+#-T zJsFiS9R}FN_@h1nBsdBw{O#k8KkG{H9Q3=ywfNhLN>JvbMqmaVmp}mO5Vv4?BvZoD`mx!VX);DN|8<7R>C+JzX z5>F7Tl$}BN)!Ico7Of60u%op^6cBionC*l>%Sh#NcmFOyCAc*%q!h>_@Nr>>EhCjj zPruiE zTZSsbQG2*ThoBOs!vM<|htwy41V4)xx}Ta6|Fv{`7b zxm*s{5>Wu!DPsN-&@5w+6W#qg4wc|SKZa5uzrMRs*kQ{UN#}#BwY$+=bGiIh zOGE)^uZa0eK(mY$UUc{GIaGoR{qK|ld7%9u?6765@GWW&SLj!$gy}FqBL*7v2_V5y zNC9m`h}BvJXf;-Bu~w;Ne7&biSJ2kos%={poa2Ij8!Zt9$W0M*T0?G>WmvF}yMKG3 z5?uV_DFyP7D+oJm85Xpm_Aul!sD$Y-Kq!VB^$8%sQAj~i1p;#nrW#8+jgO_R_mPGYAPG+}`mdIV0_fJwNG*{Gbe3_#TI!OHtKZd832uN@v_u1r<&F_{*fLHSiQ2;zIt-OC z9R?`HprbwkBsdBw(1khtF}GA`O%+oI=CkeUeS4=Y_TCbgxv+0jQ)aeUQPey9QHiP6 zi^ZGKymRR!v_ur(cAA*W8g8R4V}z64{W}4b;G#d4QXs#IyII&_%NXGX)E=(TYf%Z) zVSr2wH|i5Wf}@av+uAfnNX;+gOR1@aayp;$-+{g)miM)3iAI;sS1uj6*?b<&AQ!>2 zS|SRV`dZ9P!jxq^@P)g7pP~|6z8_Nxde&hyvkW6LXme zXPFDU?C#$Ss00`MKPUzAglo#mF4Zh^f$vd!xI(`{B}|6_DlyooPXGyyLJDld!YtLQ zV2c;>%@e2jHp~W#l|^MH5DsrK6rEfEE%JtF3@hT0g*EZ{+R|L#L2xY+Ne6v#vEU15hUvw*iy zd$>YhMXsfkqTSEosxN2Kf zOGE*1!^NB?z*(jUL)`s~p%Ps9+foYT0e7IV!bY9RJf2QNY*wIjMCm;ma}zSVvvbakaW8D#2yFnwDt5x!E0r9kvVt zMx*v{g^oZaOosvXFutfy011vl3SZmR!B;$y%jL_7;E}VmSUps}%;~?AR4cG5%3@tZ z3Sg}T%{UiLQcFYuYp08uOjxsQ{h#XY-$|$hm;3RQ0{Kt4 zEfEEneJkd#hS^xlmj74o{(X*0aFKsPDUgTRW_i(7@L0>1|HkT)j;r7ePzlpvfJ6*4 z>JvbMqmY7`^%m3HNuN%ySn=(QO%baB>n*0<(659Mz}G%#W*J|5X^AM{t4+*U!k1-3 zKjZG-Y*d2Fx|vcSkFRru9ky)fpM~1P6?z6LVLA-3hw(*y0!VNaQuwmoVs^n-&0EZe z#OlF%i`fNb-QQx~k7k^U<{m8(1+2XxW-?*Tvhn|_yMHgC5?t=jQwrp|&zX|A>rh#1g*_jV>$KZm(QBa5H%&nnNyw%d|ukK=qiIn*=J$ z#{R?Z{yl(7Z~@;-DUb)%`@#-eHum2^?coZ26O}L>1}MXzqCNp6I0`9HZ9t$(x2eZ4 zPHWF*r|YL@mkyoj+XP$pNU0_FdIT$d{erqaJ?^#?JRP={3c+z*wYrvw0J~( ztIzhX9^6!)jAoHhHBn1M0abZ1H#Mq;S~k_Q?*64w2`=FlN`XA8&KGvrvZ;O!Y7bXv z2P$DY3~+`~MSTKDa1>IgTD^*@LLyx>8TE)*&MVvM#gx8m5Ka%GdE?aIrzN5Qr?6x(}s59!GP9 z9ky(tmr#577iIyKFdYV1!Z@Nn0VFsIDIBROpT<#qRw6m4yJ>1>Di;o} zm##*0$LYU9OGE)sPly>wfU<0qKkDw^L#PB7?){Vkc|d(2?675{{5{kjuF$tp3DaSK zE(|E@6F`EakOGuCc}{>z=5x(y{hS%&Fz5R1QVZp^s*K`m2Qjsdy1e6}c}*=51x$?= z^O7)S*&ZL^?%z;Ug3C8fDUiq1A;Jz@w#N@b?O{yKKqX9v0md+L4d! zs;Jgc{+qkg#WJpTob*LwbkV>q-l=HTIPoWGi724yCNUc|nub}n!>@Pu?;2EsOZG}i zfjpZ2DD1FhJN);kJzSwrq7tUV09P1I)F*%hMS4p;s<-8M5)yoFfPZ>0Goc!5Z zA_{mqOUy{ZlVywi40r!dLnXLuPo@;eub+M;?675v{5I4cuF#uN3DaSKEsQ7X6F`Ea zAUpvQ9L0dR_xlu(;3&S2ff5|Wo2Udw@tT%MWG+$&UATB)W`}-FO*0o~cA_7<(2w2d z$2k3?0zWT`_F0*xJ_@~es(&%aBk{n@IZCH>T;^Q$L&?-?rGc3TYW-gxt@ST1P?8-R zA5c=yq3^$Ywwx;F66Jic|G@DJa*4M5_;G`L-#TiV*DGtRj4fnx+y1>{WM*}x<1?;f zl>x~v*9^G0sro-SE?GB1CAdG<*Al&M_lmn8G`;^GlPCIWb`N!}(yX5JVn^R}PIp3f z@uH3uim8_NVtTQ~>b?UK^Ge>UoP)d4yP+O&vF?mYm^K4EWf)S+01_O|$Pxg$LW>@E#wgCL=1&QeAk?M~jK;v0Y0v5}xBzrDQQ(@PK^=A5YF&kGJ(0RdtgRi(d_#)~c zyl|@3`#*?T*hf9;#8A_*pX3YsM*`94}A z3Tu#pn0+3HEVG6-clR==1Q+ORN`O3vE)ezCGHEy$HHWM7EL6hu7hniuhbc}Ok4Kx(n%`D>XsEUPZ)xK{eHxBLYN!;qpL0VFufQjpq$ zzP{*(RJ+Wv6~abw$TT>w2gJ zSN7UkqUKSi-aFQ?tE|D6t@@o%cep;sq7tUT0DTx>)FprfM2BX5RDvu06v}}7itG+q zgDso)x1;WGecpmfm<9thVxUo%01_O96woS-&iwc8_I-m&aMgZE8IXt509k`ATl4+Z6&;teo1zk? z!2nqpPShoU1Vh)ut*AL)oDw<2i)nqLZ z1zZ)y9QD>xwg>Oz-R;Yw5?se=%78qsmdF}x*^)mWb%*Qo98|(I7+?+Kin;`l;3%YU zwH4hQb}ninrojM(7-ZBXfCNV&1+s%efh=Co zUm8~5{U5KsuAZAcJ=vOSZqKT}nm9X`@BGIT=BJYF-ZyHE$B>N@E1d&Ep)b}MezOk0 z)ER!7!l!?ns)iq&Xbwl~h*3F2OGE*c2a2UbqtY@EnC@=hG*p6nXbNRO9+eAZ4Ymvf z=A!O!eU?xO(_nyej7sVfK!T%?Lgg$WR94{XJ(0n8vwNdh6&)c$%?f4p=Lp<1Ux!u~ z7wFYmA_@R~S}Zdfpq2r|6Ylmsib`;2JwzFh2k5_K4Ymv*K0w{!`g{+SFbxLi#{i`+ z0VFsIDS)=i12o>2C?{Jd%vTG(Qb{dD%>!~99V>McbEGs=WBQ||_@f0^sq3px=Xk@k zj+Tf5WOootm4>WkkTTlcz7ePdci<fIMVp${K7Lq#S~}!;n1)l`stk2+5G8E&(Js z3Mt4I8U@)s)2VFW0CI;|O=TOy*B1S$f@nP*tvfE=Q?*1C(0Z#_mOQi$w;ZUv$=$x| zQ3>w3YbXQqX#I<K7Wr&m<9t}WVBM301_O96k2D5Lu)a0WP7@EPqf}v zsqdEm2eG=D5e}c#*wKB`Z_yg!GW<$QL;;hV9Vd0OpfPC~DQ&E-=(vF20F~hWSyxLm z;NbM`vIbj5O1q%$aDDEGN|*)%jAKkvmjDtRg%l=RB`~Sy>eEx%R8l=bd`7Amcv4D1 ztd?3N(5XlBrOM|~&x39&1=pNyXr*znX0${UV0x}tel$!iL#MOc?K=aN;4V9jG9bU^ z{I#sXmZ8(HPpUOsPu%364SvrbjmlruBAC-xe#cd5z&~i2c(y&}!s@ zepO3E0l3Q^FS>fQ45@x}x9>Ytf;;hR%78p@w~{s3GNjrI1DCo4 zkl-k!fIGLbz_sq8&Je4tVk22wYcF*_v<4Zo`)Y|OV74rlE4{9@jH!-vw=aiEaR1Gr z49H{l7qSLh##D<@cep;!LnTau0Y)-rsY?I}jzS8vTh_#EA>V90KmVjy9c)<>iYk`c z$LAkIbIfJ(u$G7d#@-im*TdKd%Sh-Qcl+K%CAhv{qYTJnY^4(-?k%<=U67_rK!JrwE!KKH}(Bhe~iP!7`)Q2^z^V%gB3 zv3NlEkO8^OuLJFki#(*@QP0UJVs{?l*RyR3O z>Q1Ki?qnAf<@yHm#>6q5#>Q#B!w}YZ(HKb+>O6D#6`1oH8H} z*~4WGwhV!OhPuO${V6J88VnGUAxm8XNN^NVkUec_K(^il{%o;QJE;-NSwD9}Oykc) ztCS0Uk(P)8h;J85o(8dHOmvI8eK(>K+@aS|2IN8fH(7%%W1>H!?r?qn0hKTf1}MrP zrY->_I0`8cAHVcKJlR_SmwYSVrjw*rzQ-;t0@GqRxC;Khc4aPEuW6Yk?>{paXLjkQ zf9ys-#_1oG@BVX@f1|acK;iyk3G^sD(lX`RR9(^WZek-;g4=U_Ezy7z{d>q7Y?*TH zhPuP`xiczZ8Vn$mDNJ1gNN^NV6rSH83g;4SsZv2bp4htYP!y}JxecLj=clW^_mD>` zk&8L2C87Y^^TqO|VQZO`o#Sp_2P(l`csgZ3e#!e=S%WQ;vO7_CxITZ0N|*)%q-5Aq zmjDtRg%oVhTw1WLxBu|2Sh=0Hbod)$58^GfTDjm~*Ah_xa-Wl>ZeKKzEfcq8)D<09 zzdxWE;7yY6 z8VnGWAxvEYNN^NV5I!IjgsYD)fu2(Rv{>Ox4@K2#@aVHwo5jsLkL;<0Ph^59u=qSsu>mYagW}p(>Tl-N4nPM6uFrX>glRCqKSn5Z2_V5yNFlWL0|2^w*C1Y9tc6`^`Vm@htMyi~$_jVH zw)*M9Ek*rQ4Y8|w6Iz2@#@B0!C}8%FV!6_owT!ub?{43ds08=lW0V1T%>Gx_V9S{6 z|4?_hK0ibyOoIVNGG?hu011vl3bXkJtW*iJmJQU+PL;a(X%k?mO z6jErNErZt1^Gnv#S?7wCQc41;ogb$5VXU*zI^$A3LrX*frN0tOk4C9w>~x#EeK(^L z++#OT2INuttgOM7vD05scepum@udz#dOHQd?P z9&QK(=o(^E;77C;xtzb#5>deI7Gn9*xV4P0Hdj}4T=;K-N^l=;s3jWkMS}^l23y8g z<4||FK6gbWOoIVdGH$6$011vl3b&<(;?}Y;P!=nz+V2PK`fP*V;cTtVfg{oS;}Xtk zi6|g;u~@1+#E!O%x6X67?`%|pd+$ujfc%Q~E?I*u3tTsduh`0D#&wJ@;TyL%N+?FX>FgXWsc=$MmNC-Ss5@Mr15gRmV1Px8GwKpRf}@ba*&$(Z=J*iSgT<=n z;IIJf>4UF=$D0m7tBDJ8e=QLOV9poIhz6!*IMnWLUlEnyPRdgT5c)jv@%# zdIS2~#mcSwhogw`H^jvL7PMNq;BV9tQ2_Fv#S-WNd5mS8^apqQo<=3OQ=gy=$OHL* zvIbkmN&i9J;rjd+Dq$K7(3F8pT>?mO6jDI${^2O%K(>tV`=23om(~5lQG`icYo@=c z`nZm_cpGVnC_s2OvD|40TZUjeyW6(|D#6`3nlc~{;iRm=mLb>?s5=bdnW%(mFhEd- zFm(wa!BI#-_?X7+>Bc*cc3Qs$aK2c59o48^-dN`+to_x1bI^+9qVCWVQGo89VmZ^$ zwG7gJ>2BYxs04T8O_Tw7=sqWFuw{_;chnuO&%dA&rojL)8M@RZfCNV&1>JL&CUom< zNAx*UY7uxzCIRg_O_Wy<`ox4CKb6 z?l72lM zPs7+Uu)DzBzH?Ct?$Wa;1HJuAF9_p%WDT|q?0$#3!}a-VRKheEASuI`x&)BmD5PNg z)6g)ke)TEr6SaK5$v+S)o`XWuwfX_VJv1wLzTrKzmbe_>))G;`W#0~|8xRkdV=d#f z<<%7(m;TG565K~WQU>I4xt*-RmT}rZ)E%zRtxyTmV1RXuOX?Cpf}@baW%rM6={ioU z(k3h}yE!{{h*&9g|LB&k6SL~a2?x)5N5u|8>x@fvhL(r|N{Rx)m>O8^OuLJGItKf0y2ackLN-9@adx_@*_Z>?g9v$gh8cSP%t5j#dp zL;S)ZM;=Q3>w711JOXh&@5pV9Q|ZSkxV^&!bTZ(_ny)j9BUtK!T%? zLhKx|z0^9Vx_%{APHCat)i8&+ZbR#hOZH|h5e20FRV+mssh087pWN+x29@Amdx|n3 zkJL|P4YrJ@K1SW)`usO4VHynZkdaDV0!VNaQb;|vfk>^lQLx3?QujsS&(8L6qabip zHpFJZ=IUcQ-i&RcC8B`cabh`JL5;bF4zbL+c6Ik}CscwPaxA4lp1Ubwhb@DyS*Se> z-osG|(_w&`3|{IJK!T%?0`I(rgV(ZUuvo0N+8eg6?S9+fJhTqEl+V@@QGo4l#L`8u zwM@e9aQE+aRDzrE7D|CUY+n#|*fI+H2Wk&j=-*HY(_w&=3|s0GK!T%?g6$?IY;*bM zl=b^tE1V;>2HnIYq8CH$Z&)p-0&!d=Hff0{fNN_pR|#B}nbH7v|N5g6T+o|R3gp2x zQP^S2P-#!p9tPJQsD$Y-Kph4b^$8%sQAmMnQxja}d^S}~c;A#M9Xiu@0(8Du1#E1R zt4k2UQ=IK+PPr_KS|SSIx=_qi0+(e{v&7xM^HB*d=yNCq^5D8p*kQ}4=5Ev;uF&72 z5~jldbr@XKCx8S;AqB1#LamSuQ;G`x%SL;>RXDLc`^0Jh2CHN6U`JS z`&}&&1swG|S88=iII>JRR#caCT!;2SCAdtN(Gm^#Mr2IbVau3fThtz|&}~o&(_w%m zj3eq3K!T%?!qGYv9L1CQTyxsCeEOMK;@7IMDaO|hu9|*|W{`{EKrImkOdTWUrN-1y z%TQo}yMJ?02`=9fr9ghwbcL|PmZ89={vZcP7x}@Wpb!Ak-bQs_aql)?jkl-i?Re%IXarZpWPC$aAI3JbZDB4j8 zj-sd~5}AwCjiL8kn;q06Ze}jd>_k6yp&z@^k8%1(<#y7GqJ388_2twJWv%Dp)Vw(v zn0Y{H*&d~nd9>EQxIjhNv34oBAe&9Z=|}S{wRmmw-A^ZaskMHoK3+$^L@wEyFM20h z7PpQI+(#dVHUv}uP%Tm0z@u01w22-yRDJM}zNNp;yQL4Gxy-HJ|K9s#ncLJK>bXVx zX3kLgKXviGna|ZfP(M3%N)*zuVyY!oOy!cP!Ly6`_Cjf}#r4WRYo67X&!x-xVmddw zwAfSFrH2ang138{FRELCmbBJLW$vKxbaXnj%&E$#%p&ziD)VdgFDEUN`HlLqZ|1k^ z&qbNvsXtH8+@=4#Tm3nyDRYnhn|sxtGu7|wOO=n4`m}D^Q5;-uD|r7c&6=IcjvYCA z@Ys>bVJ%~a3?G^tJAC-4p(BS6nKfd}=wxc_@RpY3$f3<6)RCJ}V^U)VH|LYeiF|ue z`4aXs#*3x$V%l|?hgJ*sJ5`Glbq;okLiPJcjqUfL({;a(A2+45%K8tqRpZ>DiEN=Y zF?5iR1~;ltTbk7qx^?tT=gKM7^4Z0UI#y7P&|XY0*40;!2G^m^G7YZQ5;bYiz{iX| zC1qU4Dg)GrxAW0v0j56g?&2e;1piiikP=aAB?$leT6KCMl}xv!lX_g`E7gz09A8b( zs`#n_&;N-U#+Can8CGi{P`h$rD_4rQrOJusL^Djk|kWq7vNmKcNKF>Ung<8hohL6fu97A5iulXBa5YeNcC} z!S_NXOoM^d3on4ENdO6sVwvvK4D)DteJsJpqGJRTT~fbDf{9*$W{DF$m;C8D$ z`KZ%N#q9GqWZ8wf$lbl4qY_-87f=G^IrNaIzm`3y`%!baI`2UxOn(7}Fovi{011vl z3PWqq=_s`=Qpo30xw8MX!GFY3z6KqL>T=z{Z=rvox#RSIpe3TPNLuXzsdc6YC(Gf@ zmDL3umzaG~2`<~^wM5N*J@j`#aFH}r)L+Zd%{XcfSLb%9gy}Cp7KRh`2q3{xNWp0X z6Hf8j#Y9UY=f8zJLM-(gn2?H9uOEQbOf;8V4u@!oD8TA?F-JXESq^M2ba(G4RD#QR z9wk72C3TIczn0^gSEA-{bzX)_nEnE!VOUX*01_O96s)$X1*>?Xz1*snR<>Qdzl&AE zHnrFlGr|d=>@R4hxmf z4l&B8O8^OuLJDQW!=WrbFEwkTH^^^EB>nGq`kh!=3=hY(mp}Aopvu0=S5N zr6r;Ox#z{q){wL8;Xmtc-(OJ)uKqt!2IL|4wXDIGP5duVcep-3MI}sw0YWk4s7n9| zjzS7@I|7i4s{?q&RLQ@H8@NPjHNPVOyI3{E0Q9y}aXQ`vY@sEh0KL7%OxMt}%mya7 z+cyrC;BMHJG9VAVIkE;@h6AmrI}E)PDq$K75R0KlT>?mO6jIRJ%K>`vL@t+C-_G%# z0pUA>aj{sb?BxK!Sl4g^F#H8tDO_xewL}zPc&}IjGz=}Xhr8VE`wc3=U2+FyKpuv# z$r@}KKD>;&!}a+BDq$K7kc?qST>?mO6jCtUq9zOrS#?L-rp6CG&aLuusfFGaH95zT z1Q5283deChw}O_40>ZWz^Hw9wGIJQ@Zr|3Z1lRTe%78q=rpg*@89Gcx-C=}HL?ujv z0sb(;s7n9|jzS7ygX<$K?tQCz_m-Bl`UcqoAJ2{zD~ZANc^31+N>sxN!0l)>^ISah zwL}!)cDb0*9^8gm9!qhFyL}g;5?u95CEI8n!~=E)rZ56#fs?g9^x?8`9Z?H zl{NSsg@2>9#pU^tmWTpA*Z76hx?AJZGT>NMUD0uA-4B)EzFJXBG~gWYa9M*b1CAl6 zJ6xYJRKheEU?1a?x&)BmD5UV26~|`bHaiDEg@P_+zDj&rx~7*vA0Z2@IKeocCvtihH6%GIblT%T8<5~jfb5gDq~C4dA+ zAqCar8VS{UFRuEBScx6oIL?N6bJgF_s^r4{vzCYgcs~6&ZG>;JmVL zqmV*pQ5KzgxD+<;3i`q)T zMd~){!#Un_ZK)-qK-zu8GNnmtnQ-mpZr^xRf?IHR%78p++hh&4Ot>qnR6GWA-AnLb=F)t|g)X;rqo>ry*>ah~49E z-|tWf?#^FR2IL|9hOEJsiP)>CJ6xYHp%SLS06`hT)FprfMJHcE1E_>)Fu)~78+8dF!BI$|?TDVC z&GG2}Ct@`eW&+g(hVCc-|BF@@7w7+Ji73ExtxKd<^Bz1$SSC=bt1CJ#t5-oKxT{vu z5)C-{KT_6U%LHl|>JHcEU{u017$6_Rlez?u;3%ZvS&)WjyvwT68$tQT`ORWAmFwBc zvZpYObpf$AbqWrh5@_Xd@gAlnq5#*E#qy-#Y8g76;BMcss04T2(UbxCmFW$#23v+s z*P`xleO`r1m<9u6WVlk701_O96kLyOG+g7^#H>`dI`Q|R_Ia@i3$xqV1(&XWu}7h+k{;I#~zK6SV6V^o4W^52vJdGKy{spxHkWze*qx}xK4 z!`i5XX)r)d1}}99Ai+^cf%m+n3*LH@|GmYE?ySZxd;Kg9aSC7pTDc78aatk@aBdY# zqlU9(6qRzfZx$-SU3)lXKpxI#${K7LMJ+M1DU!6kl-k!fP7-Zft*XUrAh_$;8g2Y#rBs;-IE>P zU=VkH&f41*gVcw0ydB(HOGE*{lf^RU0eGZk2shE)zCBS1?#w+X1M&dQ%NlGM!evo+ z7{F;%!ZaA5Cj*$e1d!k;qyW5R=>xdlmc`{_g?HZ4W^#yai%ZZ7<|epMOGE+E4~nHy zL)tRTyU*ReyHN@5-rrIN`rwvukDobortcWViDD%*vxlUuehl>a zGsmHI#ieM;6UwvXw7li{zpqh0juj=A$4D&v1%Ep zt*Nf)xS(GRmEe9`SxYqFOBJJK4Ymx_MxgF+eGWw>OoIU?GFGWe011vl3aeqBbI|2$ z5%KC$F6@fbkJWlxw=H5d*3*-})z2Aj$?7Lbs08=qLdt;riuNX1gDs=9>rr>OKCeL~OoIV#GJ2^?011vl3cU*&x}qiYS~g@~ z6f3TI4P4z4b8GFrK8MyKm-FAXL=oZyjn(Ev)%1$MkToK5|jaXyq+a%uw}G$2I>yi=V_>fX)wS>#w&FR zAi+^c;q~N()?mws>^syQuFtPg3DaPJpNwGY5^1m?bPRVym1?-C8B`ceZ`Wdv1=KjO>(zyZ&ZT&aROyP9=k`%8f+P% zG~6iK}RdC_r?WSZ*{#Ed!{*?)Ghu zN^o}#q72AG^Z;3dEd!|iQFj=kQ&9=iV1R%OQR)&vf}@avXt@y(?e-bACyUipQ68%G zpJRIhT7g`|$7+cvK=xX(TxrN!#!y$e+jluC!QFQWWk4RXPsti=8ACmey2JJP2r6M3 z3=onbOI-p;a1>II4f}wYE;r*nU#Xgq^&fKeeF^Ieu__BYgz9p0-_v!hiCq6N*WfDm zQ?xp{z(3X!Q2_9I*GS!gXaHM=P;09zI^HC#fl6>^uBs&(@P&f0vIbj*P@_8tzv~2_5m?sOb&5UAca;iH^D3|5d}yu5=*6q zv}I&pD<(xIRxu zB}{_>iZY0)O8^OuLJGteMFYh3wlW?RE50RBU~`D=jQh|^=4QBCOGE+IuZyKq!`d?R zd&S+p7f}iB;^!y>@~~d!I?+|LW$5<<>JHcEx2S|^FhE*{HFXIf!BI%T`ur%t+OnlF zM6Bx0jSi)2ZEM8Thj+Yf+*V6O0npRLGN}P=846Buw{IU*f;)FF%78qeOR@%AhJppu z9R_q8Dq$K7(3JsAT>?mO6jFdr0)Vc5aVzYT#(c*vt`;k!1VG&CM+x^ZvEaFiE71Dl z61`MQL;<0Xils&))H1Sr$lbpCQ3>v?dng0)2z^i1V9UtvZPXpE&o@vB(_nyqj8N(l zK!T%?LTK2>*K{4(Rk;%uq1~KgTjzSI8>g_3ujx9KtA4O>K&^LdZB6yr99O8TX^AM{ zb%a==JiLyz4Bm#i+ZRVAxbL>349Mg4AX$SggSQ!|JB-);PzlpufQ^h->JmVLqmaUD z*vHrO9$xEh?Vc)DXUNH67vhH4#XSkFPcHG}wL}yUe7#uaG=eQ7w`<((yAqY)-n@)5 zAdleR%NlGMxjl)x!}a+XDq$K7@RJctT>?mO6jBHd`}msPMzCeW_A9Xh3;Xz*-dgPv zdu#2@evZ~8m-Q!FA_~~u;0CE%6pdZW@N8XmMaLV5wNMG}$JMn&1HQ1aqpZP};n^6} z9j?!jsDx=Sz)Z$2bqOHBQAlC8y#af(bxxRN#0skJmVLqmaVvqNRe_ zdYcTdiq#r&wzr3y41uG(AvPLbLhF=E{dp}B1r&cLmOYJP%P8$@cl*9TCAddFr3}cU zc=H=YZz(LJv`y3%9d9W%L?ujv0gf_?sY?I}jzS8>CoDx2TQ(c^6)Upimcr_{`wfRl zXl*in_tp|oz;8}0aVw}%+t4AFS=$_U|5{NAZp;*=K%T$n2|H{Vww;aI!xefaDq%Vd z(31g7eF8{u6jA^l5(2>Gd^S}~l+*cK$#}2%!(v4d55dbWaRm=*J%DDOi|1Y~5e2-x zDdscb%`(S&&E3D3Q3)>l7bpetcw6o!spTa(Y#C%VsY^PpFTd|ChXFP*-l$Ii3C^<= z-nOWTw_>W4Z!acOCEsDyVPa*lMNOb_B<-2&`ZhIX=Ec+>7kYm+*u6xy*Ah{H*#2VP zQj1xpLQ~!Sn~X|uaZjWa$V04M*kQ|9sEFFbzh?8Ogy}FqAch$A2_V5yNI`77`VfmJ zvx#(@xjeg8tR4o{r&)|b3a-qqLi5cfbGep?0@NNCvzVY}nZZ2b?%#u`1Q+{#lmdCE z{ZrUs%Mj*W)E=(Tw@?YwVSq>sHR=;Uf}@av+Mp0n%ck4XW&Z+gy_==h>0yvo2`I2m zTU$ltxRhT*OGE)_qr@yGq*-Pe!`=NGf=Y0y$0!BzNc*X)idj8kOL3zk*UAkF`GtJ8T&dJdN7J75W4!VLA*jiLpj~0!VNaQdrwKuu>}&^KGee zYpUJ9Hv2{_{~HG|)+K}hw!TC&%0=;+mWTqjHo8S>!Asb(Z2hmVF6p?MT?duma$ZwQ zG~g`t&cY5`w*GfO?coX?jY^mf1I%G;QJ(-39EB9Nf;X7VjCg8(Azw;OE$E@9Zvv1N ztA^kWCI=Lwfbx}q0!T}v+2(?2(GpQWT8Eg$gfz<_;B?RBxz7}d=p z&Cj=(iZ0z5T>y5kpmo5d^rDuC0_=Ve^P6C284!Hy?%!9a1UJFwlmdC!{p42J6|!YO zu$j7~;|h6WRKj!^AQi)o`UH^RD5PMw3kJJ*IyYOLsPNyJP7^DUT`=gys!;~uHwCQ= zhTlF~A`0*;i1|+Nvy2kj-2Ka-65JHCDFyQIyFl1s%P8So)E=(Tvrq}sVSro=Kk5@e zf}@av-#%{eizjlqe3_2y`c{9Bij~VgZXk?xjW__shtPWAlDl6^L;;F#i{(H=ahPQg z@rJv9uc8v%EH6F?atSMkToTAD|S-L+(Rihb`lZ_fdPe zLf=6pOostNG32OE011vl3UbXohg`f+Otqwn#Z+_H2W9)PxWVmG3;$U?$6~DWvxIv# zcJP}L>#C3AcvG>KmWTpI$B5;IFlrfujCA*J7%IW-HJDN$kI_Sg9kvWY4o2-^j2?hW zm<|IBWQ!BXx(w?o~$LJ0N0zv z(nN3#4qBEpH7(QR{U>vSyOGzT65M@PQ7+^u`zK+mEfbe#PGx-4@EzWPE3gp+lcL+OdnMB==+QSuk3o2nc3^0?iOML=Ja1>J5O#tiO>cgSK?a}&n zXx|j8qTt(L`S(Yx^Y@2ua22b55Ojm~HMF|8Kws7pQ9x+ZuVh!QmO0n=?*4s)N^om^ zNhy#==m24dEpx8^>XMH42AiT1ro#aL7@^cBfCNV&h0x$@TbMkxR<2d@ghQxa^-fP^ zQ^|6^I3raIJn3tHvC0a*wuL`j?_gCUxm5XZ>MKiarQlk1Dq4dK+R0iX3ZN~DC5zUo zmPuIN-M=gR-ZqipM1@bUn z@ebMh3d_K(kGiDes&^Sw!gLrQDZ`lh1d!k;q+ooK_{M>4)!WUk?I^K23%$d zcRL)dPDbz$EfEC-A1IbMjo=ZMk=b;2|E8f5+?rD;1@Z`9AndSZWHuMIhby#%N|+7< z{A2`Ep8ygZg%pB^hC^^6-)#L7!Hr^7F*MwmO9fW@I|SFE+2;bfT1!L$aZig`O^CCM zr=D>4?@?5OOaCECfjr{=CG483Y_0^|wyb)SQOGE*pJBX!*AZi&ywdC`RAXI$ z>`kYF!>QBJ`r{HlRZBzxvbTz*iXdwlPW^v%-vTE|Rh_>)cX5H`rJ$g!F2q&o0R#jE zVPCw$V^?+s6maP2>7D7`p6;O^``{rU2#gf6KqDA1kbnUN1qFo!5=cNnK|vvZ%})}D zprBwN0V4*K|GD?nJ?B<+)lAi`dwXj6{g~SRy8G0*-#PcY&%X7w?EL+msR^!pH(&_d zi|k{L8ID+-deoF2&d?v2ng}y&ppY!GSWgU0uotdGw)auiJV~f6PH8fkzNZ=%*@0Sd zs9aMU0|Ju!XJ=WKa5hwv&8(7Jki}G61bPMd4b$A@^nP8M$b$gC=MGl`5ES5u1*x6k zmKjG0JDHl`iurbFq7OeHSm>DHhy|&GP3hqbJAj})z>9qH}U&KP&TiN-0)6@i4*gs+j+za#Wjv0D` z+4+0M)C5=Jf5#BG7wav)<91vUvFNus+%jXYc@t9;VTKKqmc<(DiGd0B!j)KGmLsu_ zn9?}FS=L>e8n#hBM{?J)uq=bGXV#)5I?EF1wYJ#iQKVt~oOX%+$GaRvG_ghnXI76Q| zH4$dmK>t`mv7Q*1U@u%r=(u|c4Q`_d2CzRKSg}0Ap=kFt?Cb-(|gCTG)uY-;mj#zj**_0lZ*H4+62s3P;jV!NNPYg`3 z7p~+r;W-NWzG2m`OLlnJNv8zmb*ib|FFMOJgPp^wsL8spLB&lli+izYc5;GWBu(T& zg1_l3a45kMOK!Jh=kI1y6I?aFiXm_>!9Q`#aKw_^k4@>}41L7ZM3`X%{bUKodSYOL zy>KPLXZE{?ixM0$VLRh4SH0cS``g<^?Twq8{gY`%a#H`FG?53{o$D-SD7z7hXYYnv zW*j-Z%hUu{#~r1KKKx)~v15iK7S9%#(!&}0aZ?jvh7B~6Wf$v-feH4)mF%|rAiK2f zDsqQe(^+CQoy#qiEPg{-!!!dqiEGkC9%S}%XR$(=jaUM^G&_HusR^!r6Bq*bz1#0N zW;kLA?AxaFaE9JyY9h?Afkv{-Vm&c1!CttM*$bybW~Z8Dc+Od_8SL#%ImytYya^^6 z{?jx|Inn<^n#h9`Z+f?@QHqq}{UesrHiBDb?D78DGz45l-@p*Km*V$3W;kLgZMW=h$XFGW#{jg zrY5)wJdGi6FLks3-fdq#Vo7Tj+%jWdelt@OVTKKKilq+giGd0B!j;sG7)f3F6UhR5 zwLa!7m&!)snD*SU-Yr`Do8}pd>AuoL9>nz1&ccIY8nIAyLU#UEn3~{9_6ZDudoexB zF~boHRi~TM!x_59)I^wJ10`fJ#d>03g1vAhrfd2nrs3lq1LAtCv)t#oNB3){ zdB~~!chW>2#P(5V;X<*ESg!g(cK*I^YJw}_0~iALV*9dVh9j1%UNWVJGxRs6Cc+FG zC?$(6))NC0?1d|_O>q#7Hb_t3a}A4aaFc96df)R8uEt0y7OS*Df7*U+SbBroWP5wP zJ41Oh4$yXzCh{P}2RjR%6ygIS7OM`-&ffv1Cb)v`haqq;#6`ypM=Vx-#*`iw;*(5G zgc&waQ5IsXCk7_i3s*v%;vgD_LOj(*g7walFU3JL&a^qf&Vox!^O&o`7o>?ii1qEx zqKRT1v9$G#?EHP*)C5=Jn=l0K#rg@y3`Z<&J#I=5XXuYiO@tXXP+AsitS1I0*b7%; zo#G%G=VBeP)nMa$T=k$+97N+-rQ`MX_k(1-V70^l*kAVrnAHuz|X=Kw~{IFu`8966lF(nnNC--Kvql zfM`3*whO0aR=GgMjsIE1X{Nc#>0Xy6@*v1vX8}Y(j#$*YEIWT+G&R8$^)ExVsY>vtvS?#HF)+bixDxFvb0*pmQynKd%e*UcrPguN9iKGKVXg+pNfUVx>b1^-DTVr@ z5sQbN?EE!NO>hNnUSQw zT*dwqL*QOYxB5q?ql%A4EbYAwZkcgZG1JsUm|+7QWGTgZVqk*3a3!TFj>*xN_LTS} zmC{M}za8W(u~Hn9qp#knvLzGNskXa))HDNGW@0XF#Su$$k7VcXVN(-aMZbq3a4*IG?U><+rMdqy zrH3>0MN<=Dh7EL-r5NjpfeH4)l@zBqCdalEM@;C>{U=w$suaiM*y{bF2FK0az8i{~ zaX9xbX(A8uyTDo8P<|s8**>0~zmJ)k;A*))hQPi2mK-x2vB-9+DLpK|rWuH<)Zf97td*qL^@v*cRckJ;QL8__N`%|uRSPnyVs+IJbLNcYgKKSu7F z%PH{Ewo=SqQf`%+mGO3^Q4cJL?&d6jD9I5^Ztu;`-+N3=a8=z|ny^mvrYqKsmjetR z?wH|-CATG}^spo^G&K=s*g#KNlCho`m|!nlN%HyAE6EX)5UZUf+UKUHH$3@7M9VZo zImySRi9Ga-zvL`-D8ms;a#v*MZ@sAruAY}*2yC}^y)yjwjv0U0w=e|mMeak68ID-&nr})EXXx&xCc+FGC=`nv z))NC0?1d|l+kG;TYnEG$PP0^Q1x6j8c9sddPbO>ZOsD!)7|T}I6yVR*;$J72Mwt_3 zg*1@|DLdU6y(nc73rB0R^Vc>t!6|+khQPg)eZ?`u5er9uWl9fc=vAgB!VDYe5K9@> z69W_Mg)1o=NF-$grCPBv7VfG&>MSMpNTg{6^s2X)_5;(XbK-non#hB+z2uB#DQ$a4 zEYkcYJAc16HNh$WtTfSw8NoUK?6e=ecf=yimT=3A{opN3O@tXX&?T0(@5>+=m|!nl zN!uRDq^(vNtF(iiwS%1{L_%Tned_769cUVJ7PbSVi986~XPmK&!WOaAaZ+~vPBb;a z3I9n9f%`t&xsDl*SnBw!DLtH_XPBA@Gi;zrENoa$3{0>Wu7oXNpG_>imRlidyWLqz z3?%Ebkykz9_6^gxbLxCun#hB=J?@NW6t{>4gdb(+?}w%)IO!k45V#k&R~<7Pv4HT3 zDLtH_zcV!vX4pWPSlqCl7?@x$T#4Jf$$D+AcB5Gw39jeA?_XT?-serGXv&oy8QT^7 z$=J2uMViQij4g6TF3MQM62T$a`8&we1gG~$F$C^qtn8TKh$Vs{Q+im&22D+b88*-$ zmNBd+1}4}GS2DI|0vQ`9*6WQnu7U;@3%bs7V$TGUR?yw*k+;iCBhSh6MQI`r@^+^) zqEX%=mJPm@oxg9In&7m*1w-Io-hSqo;fQ5}Cr#<$4E>3zi7>+k+QjmP^~Asgd*Mpn zKA1$_{GY6SzALuW;-cf`54h^AeK3i##r=qG6L2eIpKXRTkq1%x3uhclQTuSjg2BA( z{LM8r!O8w^41s%5JJK=35eo)~nbO0ew%F7}m|+7&Vo}3-Vqk*3a3yN{ClR&Pjap}{ zyjZM>*>RFOf!L#sVPn5LGG@0MmWk{#4^H_ z+4;NN)C5<9OECoQnuqY80ubu{Ol3H=S_2i)9X2DA`b%iwg=PpsjnQHvC$0ipEs*gZ=Y@a zraB$N5o-<~G^K}A_5G$M!VDY87%L%G7y}cU7nh4{i;eUA>OaQ(fV289ac^7!TVcI} zOqH-TUM>Yx@MLERa*(MCN*{X^@KdHa!D)58G?51dJkuHLD0~sC6zj6{x7ySMSBMsd zz!u0tWsQSN)Kn~mrYHC88%QY7Cx*e1}4}GS6#rvvk2dS=mRd7zjX*`;E$c< z%Hdfwupr#UpJw##7=FYwQ#jckmL~EbhyUd)04RqMs~Rt6=kEnm6I@Mxg&}Y+hueNH zZI?S;KQLldV{5o&#-8?UQxjo^4YZ8q5bKG73HHL39R8&xIXtesGN6bHoTbZOT2e$9 z`t^$9$4&EvMe$?OL>@%(RA(`eqPS1Qs>mtX`TMk~39c+BU!{0k*IAYD@e@yA&41L+uM3`X%C1WwfdSYOL zy>KOl$Ji0WfruZS?e=|FV~S(!XksDmS84AB&od59-Xl%qK^m7h3j<1H#3IVV?ED>U zYJ#iGffxe!(m3Ln;fO_)VN-fo8jGeT!VDYe8cQSA69W_Mg)3=XYDpUD2V#1M@k`Ef zW~n7{B)5Bdj#rpw4kzDwX(A8u_+4j#KzWQsvp_$~dRj!pw@Z-0@wBoFXT=f_a%_NHCY>yOf z1|DbZDQ+xHprY6D+ z8|WBIA=VQE6YPa6DLm1N6i#&%{^`z==XfjXnBZjlHKv)w$=H@A@*tOgTfi+d_Q*FkHNjP96KNuL zW3TDH-riH^_jJr~#InpDru1-ze!$d3m|+8bV~NCiVqk*3a3zsDqC}SK!{ZJ3MMGd*6P)VLV+h9H#Yg>%MLM(Fw59M(nKC)Y{(h8 zC}R;z6NB0LJK59(r}w8Y1ny<*^NtygSep2pDLtH_XPcS`Gi;ziEMr(t3{0>Wu4HWH zKno7!>jaO3ztdT)XU_9)*RxXkEz?MGu)iry;P;d622YoNdSYOLy+D~VFu`6t2WJCyh73%w7yo2xg1z`#QxojPb<#w! z`sGpub-7uokIY?OT34$Tmn@olY-2d|oXNlcp_TT)+qP7z zlwl=h&td<*>$-s>p+*<=bXmU(x6arW+#yZG(mFquSJM^3nakjp&&5*k2*-c3!(sJd zuoEE7n>BCTzh4h~|1UdxPneqETJg9v5lgdi`tD3AtMYi=+(Z4F?_q)t%$!aq^RG^$Ls7a#Up3NUk$>et9f04}8B4L`$2Oqk2ywMT@(M$5&Mdi^- zeR%FsAl}V-xm|9}U0mz5;PAJ(iyEE!aIv{A5QkkJaTSL{=9PUnBjQjPl5Q4Ok(=<4 zN9kr^NV(Zlb>0cSW)z-xn3~|Kv%RSaZq_hiGBvJPfelQs7bwC8CYX!cO)HPzxc;uc zjq4Vll(lB@Cyox(fm7|&0dKZyOG~HKrffw|F-;@Zoli>>eQZVNF6^{Np|?;e$%k3Y zErQSpsL`yPE|CDO=h&gO+5kJj=JmbviUCL9NfyHe0kI=J;&E1XzE3wb!4+nWG!fhG znzjhNe z0A3Wxi{7U9dQ(2R3Vg-Xg!7PWd0cs{(Jo^^0s;8GvjA*0uPJYe^!F0}fGJx{`2D6P z!h{>NJKS`k@)?+5FHSHmh~ISmvcFB&KG?BdI$mxT;rC&S8}*fyk-77+t2>~2yfA+_ zw&&`-i?#95;@-h(|7S~CcM*)I18N*GLVUxNTh6oBrHMYaZL^n@Tcu`YTuilR?Fc`-O5V8D-mFPfiuRp zmfN5Bu05Q8+>|iR+>aq)aihWbxea3~w}?Ke{ZwZ(ZZR+Z$n{gQGx%v!22Hz9v336( zXB2KauQD95*mhQS_D(l7!F7HO1|V*7)0F1kZTdGj<9D-p?RDej-Y(GfrtEM9|B9)J zFu?}>7p)5Ld%Tu7i*)=RuZ5 z1K?hYE_BLo#1DbaHzkL&^ITICVSWvCgrx}Uh=B?A0;R~n1bczQKLZo&1rE6lOt2R? zePUpOz4*Q9B#!W+Gt}|sv>T7r__BWsB;6ipxgTKjGzNeD9CqGPC+$;<9=5O?>ZJaoN85YjK%feG0+n#bwLt z?-AT+Q+Tye^(B1oX}r8HE}K-J6PG#F{}z{7)jx~NcGb7UW$Wq-;<8co58|?8_5Z|W zPW2fCHx@RxuKr5A+PL~Za5?6sjjA&Qx=Hmn0{v$7Kk%c!6>pxik=#rIr5DRya1m38 zM{U{hwiZOS$|c|m7HtJj2*C`W25keMYB$T}!Ac#LO2vKNc?#k{*~}# zUkL)mtLNalUNXtA1f~2+aLca*$^1%?EMC35o3J9-=2wDtekEuZuU>%bddWY(5`o}X zA|m`sgoa;<81X9+EPf@T#;-*9_?3twzY+oES0b|fN`#nSiCFV15p;efqR+2H8t^L- zdGSi*!+Mzl{7O8?j$etS;8)`F;#Eg{uj6esQfmxBrpT()>WX(n1(pf6-rE-ITX|Uj zg!i`L##j+HRftC+p4FZ2ZB&w%+090yJ=j_|Hq?OS-knH;0DiVLP#U1OHeZgP zxuWauA-ftjj~(l6*{TfHU>C>2A=vNL<=2bKwZgAl8@^un`@S?p8UJw?#6 znP8Jh89iE+b!NDk1Mw2g99%>*2N%)I!9_H4a1qTMTtqVm7u4~pXy)LRXy)J|nmM?L zW)3c*nS+aH=HMclIk<>s4lbgZgNtb9;3AqixS+CEMKcGlL^B5$(aga`G;?qf%^X}% z;bk)iuS7Ek7tzeYMKp785w!#^qM3t>XyxD{S~<9gRt_$rm4l1eF$ovZ$iYQ4a==^1 z+qf!7n_ry^JVVOO9BT}BK(ztG?Amm!*dEnCvDIj?HCR5aBU1{$D|!zTlGO=G>V)KU zLQ*;*8J&=XPDnl{B%KqI%?U~7gyeEUQaK@+oRCCLNFFC7jT4f^2}$CF`tD zqidP4>Zs%mx!R=Jl6BB0(+68^+3#)aLX z3%lMdh$z|w57rgv73`Kh8}0$xH(IWq3;*)AJVwTTuKw-KTjgT2G}^6REd2?8W%hFU z_S|K~k#ZOB7r04vJr-m8W$R!YNPTYT4&FzKXln$@oNz9{!YH?~ulTB9*OTwYx%m2DPAvl>?z@sTBTV<^mD zGKHp*8G}8YZ7#>*Y|$_%Xt3+OJ2D=0JMjKUzL%-@&0=Mkoj;5X8aglSb-i68eOEWL zlSRI@0dd{ST9uGi3urT@N~jwjxA4d%dx2nkCopXp1!ddw zPjHcHNOC0|fP@&3g(F9xkO#3Bi3>SigWn~LiJm?x)`4szX-U|GHwTl75%B6zwwT_l zf#S-Qm3pPU&UbGK8%yn8foyp@h5Y2(fWyb}Ju)~vAewf%Ba-_GwruXbY_G|%w|iVs zqyq~TeNe9R`R=yLH6VUyQf@Y3_a{8ly*|<^jh3Nb4gZ44qXxm{wdGPr^yH{vJePg3 z#6%&bE1(I9nByWYkwsiiMLZIVi149W5rOMVxqQ>dweNbl4!=CY1oYUgX`0gD}*u4k;YQ)q8e(H{yMJ#RZY|C{>D;optJ#5mN1SthG{^C z9qnaSNZ0LpyT#H3AJfNq=kdKQ6^h3|$wZfid3M@ejfV82yyKJ5#sy5)?m_`U+ONm~ z(E}PeqUrTJJnPxD3@WbKPD^}2`>yoMTj?ecf&i8MqS+OJ`5P|%wAFxcUAW}^HKSNQH|(MT{s+{DfI|&;o^FPZ2AgNICzfKE&XKP7$wWa>R?`eMwej3^u^c&oxn!C-5B6-kUdc%W zdWR>L=Kr*j+ki@oq*E-xc*M7C_Q#m%JPn2@q7jRq|I>!{L{HLM6O36*dvz_RZ$7G3 zMAP(T_HkNdEh>Jh6>9XMx*;Xp;B=XfX^R3 z?|Pq3N+B0CY0pZKepOCL53jQLLD2dL(-(x^C9tZyphPW$S)5|ka*-1zY0U@+DL8Vm zKE5ydSnDrf25p8v-MkbnscBnDEygpQGhOdfi36l8C+&2LZnZX6 zoKD6g2SxVgleN~Npjb-Q;SZ02CZA8%yG80gNu$v_+KTF|JBZ*YrK4EU6}k1ko~D;K#SV1|Gr5k)CjIZi%X^bWBk2 zcKQs4$@xrdt=*`JM@j__K`=O9t+t*^1H)Rw(7%`AY})$p~SAh33AE~oXt7VlKusagNuvVataq^4oQRB z`C$v#RB|VEOI`0B%1r?;=No{dS~P-=;<0=F^IgR$d;0l$;xJ$RWW1nbyb6tDT@73wvgoJ1CMDAK$vMA-D^g&kLSUaZ|2$}()V zECUVy$$4YNIvgQ6td7UTB9{1GDFYEv#6rxiypJU)Ir(`E`nl9U#uErRm7TN@+<^`R zCz6aozK;bmB5vb-Bnc7Xi@hXhRVEn;L&egn&bU0_M`p8j5NM*(`QPuVlhxQBge0{D zh%=;1aMoMdR01>uN&++pTw27@OGXfX9nQ5YtzxDQVM~daVnc9>9vFf%u`$m42HgQ1 z{REpgb#wq~GCW(L+-h{1@QX2Dua0HIMt&DUR=xMf6$9^o9NiyE^=ZDjrBV&R+20jB z&_yP&ww=sI@!+}Z!hF};D`6?wA1LmL_KRDqj8)*!aTI3Th4qbl14#?(f5A;;#lX1S zqQYuNWLk+VnNJ>D`U({Icw4bu-KcfO;K9V|3|N`QTJ_IRSlx8j+hg*m9xwekM)?6n z)VemtwUx#;e#&ZNNwb2nL3OrjuYeBlhoBgrvJfdUD2KDW%TxwSONESO3Z0#~XKciR z{^;9HFLqYi^sDxM%(XQ`oBX8RThsN5Df#3QCtV^E3wB@1Q3U)F;1QcLS!0*%V#X_6 zyRhFZOFtzJD`9U3^K6e1ft@7zmNLT@cbmQOyDL5*F)>-Dv- zK~)Ez`75!UOKO0^?W=4KEyhzn{OlrkI+||H#c#$w&;D3##!@=teI{YzQdratlGQTN zgvI{uv^O&oIzzQcIg?Bt1FHw(oGu=KYd`Ur#&ATP-`PyaiD7^wCu)g994RI^fuL!} zI%V&!2l}}wcP~T*Exu{f4j|1{93vXI&-XvDG0Uskc}{tab*Qn^P9(@-m{pVKA3c@4 z$y0KcOk1O>E=E{y_-srYQ7>Kpag(iSBQmc49;rLYv=Mzl{}qwYtS@kzY9WvH<0?`< zZb57*m7Ow+t-R(=+TjtbXC%-X{rm|kZ?a6pCgZR2L%*J}E#Ytlx1jpLv#9wNgBRW~?C+N9UnqO`5#N*F zdKe6Bd^he+E<)D!-C3+7x^$Phmf3JU4hBD_d#90^?~0E8tKD?60o8^fIZp(&x9$sh z$N}DNcPrPV+yy^kSF;Sd_Cts~1-;i@?{j?*HaVfj?4l{ZZ$k=lyy|Pe`OkISBb5Kj z=}&|h_18$vzW_wE0I>%tOlzM#Zs)ve1-_V(e zzrmC}B}Zf8bV(HqTtwrTWFAzX-cYwsTEl{ojA;ios&Z8YBbvO}Lu{w7I$~5+>$a}1 zRTCNFhU}W$G-SQM_wxl++qGk}C#xz(GO_RNqjbH~Tt_Z)e4?F(G~IQN{8PXB!t4q? zpVs9tG;0te1lB*iDe-iH%1sGTDqx`SVIS!~{}mQ2iP)T9mLEEAP} zS#dZ$v0Uz?;v+(#^@uF#ik2YkQqoX_*Q@*-{xT=bG>4{liP3+y-IPs)RtK1uq@fBg zPl(XjpMbU+y2$ac){NyWkioH5_sYv>Y&1jsmv|=HYJ7tOFA;6~GtmyC9pClSCQWml z01mLbqvv^*27C3f1DH!SZ#RS0$;lg>mt&j%jB-_Gr1 zE)$`rL+-cl+9^YMQ-xlay$kx$ISaS=JR_n;ilS9`U_%Rde9NGnVVnCLh-e+YoR6f4 zX(2RnHwIn7Z5c@C z5j_Pk)yPiWBk90Sh`9Y}cP+Owu8{dru{`ar`ImN14?B+j8LG*r-Stjb+8Ff?#_UhK zYm8)!SbPiXaPX}tO;*{Xdez!GLDx$y}%7K*SX?HCtGgZ@IYnXJ} z-F9%f;k(XhuQ^>^fGr6dB*%Q5Z z0d_ddRn#UF;2x(VMl}8d4V-p=dLtYo#2R%u4mx&D{OTKf4srJJik)ct-g@UwOI5}| zvnbm*bc}z%7(AlY(m7mYK6pNC{Gns?h2A4$ZJgQ^J~S@#sZDHfl2e=bLojyH&Nefy zmt>GnWy63i<96Dt0VKtf@nQOsOw{V!EFY1S9EtWFp&7Ja&meS9^;{Y8x zY^iejb_-$v3fmnh*6R&8&{>=W?ng}9V`G+x;c^!AdwBaz6-MGc z;2V_RMuXQ={y+~T^I42NMOR&h_$DvTBPg(TTB32l^|KOb=Z@BvnuS=m+MVR6RQ#On z!xzyiADNR`V|;_%Ng8p!Cj_Qwp(c{Sf#Mq2ZdYuzE2W`Y1CG!I{Z#6ixi0#5DMa4G z+dsB02E02Iy;~%_TQ0o=4z$xDGbSela-ev6r&%7Zv{v~dq@{kA3~d$I@FWL?YNZu^ zED?UVDdNgXO~ux35vAeeMLbOS0Y$XYU1Ro20tuHmpaQ5^{KTS{Mn`BECRtK+~c`w^|whw0dIdl5ye$s&rM zwI5Mw*I`7Z{nQcFz49Y!S83t#BP%N-W5sdXO3Q{5$q;@Vo?Ri5_A^|MEHozM$v~xD z){fT8+`S`3QXCfK4Z7aGNh+)S5)_!cf`V&fS{ns#Rs5(P#e`-QCNSy!MUvvd2cbY^ zzOkJG$+N}AJ43ZfYn0^?hh*BrF*27@o_N@EAMe0qMVDSKLob(05%(*v-L7J(RT;n} zEVkRt%220G4?wWiRfKyKdhU^^tH|ChWbYs+v{uqWP7F8J)YlZ7;z==nvTL1~Y-ymI zp5)j!?rx|rEL?V^NPaCJ?G}_I1M@!fPgInUDgQ;K^`*>zOiRQnMr5(cGbnz=YTeg- zQ#Toq=NWSMYlv@XE%3-gf$roTl0X5JuaE~pUwsugjU9E97_bKdpNB$zW2RL3#MGaaVZ^ zp6FMz-Kk^4i8^)saVVmedlr(OO#2O>e1Z*h?_kNOt%lTE=ObfW6`y`f7`&OcAVH#s z{aq}cxU)j}3-q+OYPzO}rd0j(sPnBI@}y04ADNXfE&(vtVE3IfCr;n=S<~{_C2R7I z-l3TplXifu)BDWUfap44W8@RpVGmprSI}QqV$=|fxwFW8SF>@ zC@rYP{o^e&tI7rhe~t^*Z-QyL9y|D&9QBc6a>6^&HpyffXx3z|KQyazFZ_l}>!LX) zmu~GHYll)Y2t;1o?|fA^kKfyw`OG~vhd~|fsJ?nZo}R9}iP*Fm|Linv+@?kY{?H@P zmB(PIJH+h9)C$|*L`HuCn;g#OT?aZ5^cg_!{Qmz6 zyR}yARiTAzO%bw&9nE?lOqAjHVF<9@_017j_b)eFl~x-bgsp9wv9>JGdxJzPoba_} zhlN71(_--tfiCT3nUcL~(@=A18c(xZ0h?9jSF7q)pmEV{L~J8%{Kf%O8g# z+MS3WZM53s#rCKlKx-56WH-@7y!iAo;RTdWYXB{@uay=og8GGnrT&U9H`!DNje7GF zXbyf9ilr&Ntzz};mC?E;77D00B=P6uaZ@Ub>igukAzC_FD0H1FqP5)=!epY|6yk#r zMQwr8LV>u^Ko;eyhM%n3cDZb^jJ}C?K!W7uuVM#5j&NtIqP_5Qv zWFhJvi8fK7cguR((UVwBY@|Y?*ch1Ay2jNhW3H>aDn{U^b3OO;k}QBmkfi)yA^cy2{sV94vh#i8 zEqIoKUx~D}MfWTQPr-nhktC|3qSKob8mGMnmUO3`;rN+TZ8Eptq(@AkRvkqlW+wHL zoCGE?rFsE7H9ZkgKQk*i4aU*Mp>j?3OSP>Kt^`PJvG$dwiUeGAb7qdm(V+Dcfq+7HI{#g6#1 zL3pu){c*Bf-YOMq<%;!XRb@6&a>@@Mxm3i`?sB>BMNd4fO^W(A&|{k92f==UgG*T2 zZy7D5aiC?l_Vaz!j>jKg#EHvow%rAc$o5%N>})j@t*h2J$?`?WA4psb z+O2MF`NBVc2n;7$zTl5T5w*Ue%_8>HR4sKf##OPX*VQBo7*yYF(JHGQa@dJJh>au)X3&PWJq{iaUFz?>gIv_q zEm<$by8^z%goWc}zHtimcfYCyaQE#^h@A=+ZaZ;;C;LdE)FAgjuRbaE2QjfG* z6)@gYELibE<4QsB<9=z_7X_$~L)5edcNC`8T}6&F^SESRx!=ES7iwvd+DFV8cZmNhbmXV6DVWq@p&M- z2XxDUrOLDu4*|0UFiXW#YmWZmK=CE>KbSr7qy*qxjo&-UmUz0o=)@DBSnl63d*W&L z3xwN7;%T-MB%W5TfG61#PxHgyG2(|RTjFVE{cRvLITTDhy=0tt2eUvWQ;d;vz1*yn zI^!eF;;=eiLhJq}l7^5GZwJ&iAO56o8#rH-*1gIYoUlCJsnu}U$s4^6VM~cz3>)ft zJE4>Ejb(6$R_t$9h?8GgPN~euTfC$UF6IZ!2_4y#`MXWK+pJfu0u~ zyo?p@V{9UkH@XFHTl5I9W6JHKICVhqqn$*X+N(fCL=O)$_b?~|@9yz7a5s|_)Yu4C zbgdVZmR73TeiCZzs(XN|TJI8dhb9|2|nDn4laI_ z1DDjr@nWUPzNM`x@S_;<{jN7hIi>7@H+!e?1`Y%7sD9mE{KY9liQn^P4z%!JaNksQ zRDNq#H_-!Gtx;3-V`6);or4Jn?F@=t8f={U`6_zL1ey8_HeP2|o zpv9?EX?SR?QLn&+BaCfYh1Gi(YvZHEy$gJjQT2k$;Bo0ws8Ea*YRbGV*dX|%wP{hp z6Jt$kMi>3jSdL2V7z=o4(Pn4}{5X{BZCXDDN{zAcMjdCXBt=WuSW1_m+L0}98*zYKxs8kEQD(yFuL^%t4&;)XB!nZcn7th z9Z}Z6Fh=wxM>*@Q7j|UFT7jNZZ2b(RNq`}88ko|y#JSBKb<@Cb0`ut%j#gh-3yygFvq)3r zSY%;bE6T7%_Wd(Xc>-@4# zv5h}vOG3qvhj-Jhygg&94}C*Aw@^6;EPSaSEDVe{%PY%Gc+^R<=T3^wv=rwn*gKm! z65y?n(mD8DZc3iH_(`8=DjLGS;j+8SPj)S7Wc+WG>(qk&H9MM{Ao)R+UV1g>@zP0w z(A~+52sZi*C;Ik3 z&hiHdf-b1kT3h5W#Nr&tO5%pnZzeDAM;KFj=6xn@xYP}jHIgDEH*vXh6B60OQs*MV zP!k`-BWv4@?5;a$RV*fJ&t*?2;4S=+({11+LCecEIF+K&T;UT0!TbkiC)dG@Z#uuj zCCG1lBO1`p_dnn<&8WuU29N`x#`N|LC;X~OJ!iTiuQ#mP;Mi`^VI7qQ$2gwU4wkZ7 zL-jkUCn!xe{~$Kc>7(!~Idz;-kbbD=xObtEmVOL=YJ$wwNan&P>s?@%@2j~Ci%1@o z*P?^rhv{$GSy#E8HcVn$X~0u&+;!OWnk70HqMLXJGn1p*6%M1n)x+-?`9XEnrf7l5 z8r1OlM4#<XG{BQ#eethfkJucCPlMfLs$d%KdATh1T1I+LSB^VJc$^BfE4J}zzYx2dsN*TH8L3Cn0EG?ToLkG zWh0u@TiENI2y9feRqMH~uT>f8;)e3?n5!H`m<9@=k=70DZC)bV>#BE}>xj}l^>NhS zGdFpTWV}fCV;G%Mq={&ihY>=3e&3@VBi7&EkP^UGKU^c!wsPgRT4UsuXrDDrL1*FC zenervy2HyuY%B5WRlIr`2^@lIJOn%KlUe!#t+lNMd z+OBWwIj;Gac4-MVU`6=xezRQFvX@&v~tHl&6sOF7dYe5yGftUZ)fH zT2^zyC9QSgkOoJJeVDk{yiZ#v!vPMC9^jeq(-H3Acu~}6rxW)YeYS%i-vf0yajzA~ zZazeGNs~_8gHNgrWs;LhdRPyF2@=ysbvkjcQOw1$BN$kmK&RE^#JyG$7s;Y}u}LTH zo#zR6Ywy`$Itc?kgG0YnxtoiS=Waux*MIMVX=z!=5q&!2$IPPB@r?zgApg}YL3|7I z11{Bul^YSQ%$M_#EHN$3L(KFBnm>Wo=0PsbhL||2#ko9BIm4~a)y%HjWJx#wNRtQJ zW_730Pv>6O^Pd8kX0j&rLX{Y5Xe04_#V2xD>2j4q?-{0xR(KSdbd^Hy{HZ%89wW$l zuQ%&XS1B}dD9sZ0|52j+z2NaJxXV=v&3}0OSDK~pU~nTE>!hm`_M#orE<0VN&F7=MdQ9M$o^zp(R5=)U_X~<+{3K7ARpq zcN!Cb#l7q*^6f^g+?2;c^0_Ilen+g`tE-+>H0gLo`vU%C)$*Zj>bb9Q)~@`ik=;Yv z*!m=gw(*Bx>~*T$D3fh?f=;ob9o2CP-^W5tq}#wFgT!sRp8s5oh}hC+*(E6V6psds z+3^rtG5IF7%2-7_A4x{nRjK`(c>a^~CM~u9S(mXEjbOP&r5m>J3yY}*yjYghbYbS5{CWX-PwY_=EpYWuTmQjY!UYJ2Uxi1-e_{%vO5-V01drmwJx7 zwX`#n9UKVWOKnt5zmV%^jh&sD>|YFlX*Y62?abtxgh(*o#v|GY?UX#*H8YU0=|kjy zLp%CbJEPZ*DpEED(mido{Lka*w~a(v5vVClP2#CJJVaUE5n^a*D`sqlnO8F{hVip; z+Oj}S!x}LU*SirjmOk?e+C$%=Ya#NjR;5w*k4e?I%Ww6?(1*_N`-Zay+g4@9sH?;K zdKXms5pezFKCQ8G8|!q_)_zlJXP*Ld8rPJjbS~ofc)mwmORDaXOpiq~YH6`6)-{q~ z(t$xs`^(GBjR?0UW1EaK=hudCr$ z2Y*Hxk5YNysEIY|=UwPop{FI@eCy%yCJaI2TJ;}-51^ls+#y9(M=cb>C?w$7@# zm#)|Q*q1mOEjB3Rhnn0FjmnQU7>ywJ6^-!?%fno#4Jt7r8kei5LpO+Ol_@a|%=ek+ zoHsC3qG0j_8X4_Of(AQz217g zC+WqJL<2NMQsT-?w^hAtq21a8h4R%FlefVhbd-MgXUr-``*Gx1tn^_`*M3jpL;$oC27FPjaEHM~tn?dt z`z5bn+F=Aj7_Vh7UGtKD%F<_2+v4t+$+YX2@M{Dk=9!A5&6n-n(8^>tF(Nv$DV7Z!W=c%Y*7dT1Mzovc2~1l! zUN+DQ<05MemJOUI3@;n}(}vWMh@JJ&&N9w<*P{2-p{_SEO`Q#0faYRCo2*pAK z^j`bHUfu-&)4})N>wQ!}9El4vX+Dvt!~jWT-5+&0=n9_Vi~A29{@_}>UDw+uSyj`% zg9i=UKR}NTrS%&v>j&uZ4JJQ8k3R=vxRUj_lX*Vj7elTcZfvKL(w*qs;epAbO&@2+ zfPkVy0s^NGJ1o9BfOwB&#pg4KT}EHDo7yqNcFq)Mb%c(0tI=te$}QOimv{0K#-Ch+ z_@8J!{;hVSSsW?*)%*muZzt=Od2ili(N>>=5)QKmmim0Y@xY;@SjV-5vRc~UVX1p2 zD0#p+U_m;AF?PN_p*s zXuBLl-O}4X2_g8+#o~DS70Ov)r_)b%2H>>v;&8ED^p&B_H+N1`f$r@sFyxEf2jWg+ z-!0dsh!{(UebUDH#_maLjh9PZ?;umcv>{_s}NT<{Lh zLZK|oa@p34RR{YghO6c*F7-4vo8^^0q1I0f_q`}Ycu^3Uq!B8-@FqPmJXoZF?qMiI zbdb~Iz!=b~B}l)LlzMPJrKk5jN7)1KuuLh+hJeb?aXI=<=$6x5*P z7(2wOf&sthbE*2zFO40r!+Re4(szc*6>q5}j>#ghtkuSTu^gJ#U)OhT$pP=sOpKBp z;PDbJMZbBBpFjTsJJqMORg^?bho5ML>zKLi3%I1yLw{g+_<8nbT6kBZ$WK_L{AhXt z>Cs%e)LfVA!{d!gz1>oY;&%#;Vw-6h>ow`^h~=htma7dSP*JnY5RgITeSFnB*_E1W zCJE7mH*=tc|AHhtk}ak8W}wul4_Dg$(+IEwau^#-?OK8Db-f*YFM~G$mlyCIqFio_ zi|0o+nqX^XWu#SDy?3!TK3d$nz!L`5i!Pfn!#jlSM0px(ho>&KV3Xk26oHMkCncbZ zK1~tWSQ|Jquo;>HUk>K7rQ^uY4D{yXY$X*#z7ajqI^Nrg^+w&Vi)VG`SI_+Mj2ZIJ z=%Nd{)z6Dp7r-C+>SFOq{E@HLi&x^0e07C*^@TO?rwjjruUgtIpCj-K0-i$PX#$=>;8_BmL*RJ=UO?bQ0$xJkWddG7;8g-% zL*NetypF&d1iXpBTLjE_Oonn3xL|BIMPMcYvk;g~z?KNiAz&K>wkKc*1a>4~Cj@pT zU>5{-C15TB^9a}tf%g+IAAt`Mum=Kr60jEn`w*}%0{ati00IXRa1a8A5U>D&#RM!t z;BW$tK;S3>jz(Z90m~3rPQVHTP9We!1WqF0WCR8YI2C~s0mBH45HO0sDgtT7Dgv%X z;2Hw1Mc_IDu1DYo0&Ya$CIW6o;1&XIMc_69Zb#q_0`5fME&}dG;2r|*Mc_UH?nmGO z0v<%*Ap#yo;1L2IMc^?49!KB_0-i+RX9WBlfnN~t6ar5Z@C*Xa67U=X&lB(h0xuHq z5&|z1@CpL267U)Ve<0v>1l}OvO$6Q|V8-L9A8^5x+7yAA1k6HUHUV2AFo%F`5ZIo8 z9T3=&fSnN7nSfmo*p+~}2+Sj3Hw4~Kz`B002<$_^z6k73zySyxNWeh| z974bX1Qrvp1cAc|I0AvA2sj#nr35TPU^xLR5IBK=6A?IxfRhmzB;Zs8N(2leFham6 z0;>q9AgM7*AaMwfHx6%i+~wFLH&S>uOA4^Bw!W-vkBM|fjIP_C;WS0uDgn zKmraz;1B{9Ah4K#B?uf&z!3->MZnPrEG1wW0?P?lfxrm_oQS|l1e}b(AOWW$P$FO$ zfe`{m5m-e)4S@y$;|R0}Xd|$OfVBvmLBN>^oK3(v2%Ja2`3PJ{z(ojLOn`^Lr39=; z;0gk|2wX+L)d*Zez_kcmN5J(6+(5vM2;4-#%?R8=z^w?}M!@X|+(E#d2;4=$-3Z)6 zz`Y3EN5K6EJV3yM2s}igtIpCj-K0-i$PX#$=>;8_Bm zL*RJ=UO?bQ0$xJkWddG7;8g-%L*NetypF&d1iXpBTLjGbDe4DYPDWsm zfKw4D5ipFv2mzxAtRkR>K!bpB1X={N5m-aOS_IA@;7kP0Cg2ZX)1j1a2YVRs?P%;C2M=AmB~} z?jqoB1nwc=UIgwV;C=)iAmBj+9wOjj1Rf#aQ3M_%;Bf?=AmB*^en!C05%>iGPa*I$ z0nZ@tECJ6U@H_!8An+mqFCp+U0k0tNDgmz{@CO23N8k+t-bCOn0%kmc`T-YTKM->fTIyuO29G%mJ_f7ffEQg5rLBk zI2nOK0!~GsM8GftBLs{hu!?{h0u2Jj5oi(6MqmvAYY{kufHM&|n}Bl=IFEqy5x9_m zix9Y&01tsn30RN76$EqQC+n5dmQ+gZ?iJk+oC_S5;2xL4 z^+&tRn6cj5s#NQ=fceV!Kx_3#7gjEY1Mj~LjtQ@f!!zda&7r`XTaI;V?aJ!$l6t!s zczc^#qc}WNtQG5}a#MX|rT>u^J_xt3idPqOJHns8{Z~knuZlkctllF2bu;`~Kjh6E zuC0X9w7S)=0N`!4q_L(hY>Ohcuw34Djb>$}QZLp9B_D&GW(88l+d^!+9+Vr3;ni%| z6gUWLaP9Kiws?1k!B)B0ER7CU>ci!=gY8ON7=$-=489@mE`J>+-g|rSy|Lo>c%?of z-q|_$jx;x@y}wiN{bH@A-7@rL^r&2KH!JAUJAz+s3{~6f#^c^1XLqQy28S!natRh6 z*9{JJDz)KqvpeCv6O(0dxZJ9Y)CWtg)?jJ0SRW}5!<)0m*0tJ#Cs?ZlF6686VzUKN zL=e`=EA_6o^)bWCB)k|uDl-h~sW+$87#nNU$BNBWgRs7~4s6aESvjWuy)BSAR4Wfc z6v}n^-1x4@fF&D?jNE#-(vt7C*45j^wcYAr0DIdBvTBw3s+Rm#69NrJ-w{Lx>*Y0r z?c$IqLZ?|9Y?VgKW0Ioz)uX`5vDKsH-(%$8W5wSN=EQJAl&IA`*4u7n8PavIsA#LK zE`xL4cJs^0ryiXb!gq zVG((7tWxj5j|h%>xO&${P(w}@-`cv>8G=a4&4gvRUG-FHOOR7pxeji2`swSCJg~Lh z@K~`uItY9=)(rYfpBH)C>S$}cSSp7tl2u^9$P-88;F)>;{1uE8PWn{Dl|BKvXnlJKZ TSL&;wCO{3B!R!omh6esW0xJhl literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/exposing.doctree b/v1.14/.doctrees/exposing.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ce09c6f830ac8e3b64462d47ce328a16bfcf4d74 GIT binary patch literal 38769 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 U7#l1wPHRkWNj=qWwTk)w17qsu>i_@% literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/generic.doctree b/v1.14/.doctrees/generic.doctree new file mode 100644 index 0000000000000000000000000000000000000000..70ed9f866a7b1a1e8df3cd4171b0fd23d6d3d269 GIT binary patch literal 63955 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 Qsx)%OgA6SPqQ$BI0pk>x%m4rY literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/manager.doctree b/v1.14/.doctrees/manager.doctree new file mode 100644 index 0000000000000000000000000000000000000000..998eea523f2c23b62f2ad5966a5dfc85c9cb82b4 GIT binary patch literal 44322 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/migration.doctree b/v1.14/.doctrees/migration.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2addbcc64a19cafd372bd1797ed0df2e84c5f689 GIT binary patch literal 33862 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/monitoring.doctree b/v1.14/.doctrees/monitoring.doctree new file mode 100644 index 0000000000000000000000000000000000000000..38f94d4f81560f6ccf274e283706301e7ca52865 GIT binary patch literal 30009 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/multidc/eks.doctree b/v1.14/.doctrees/multidc/eks.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e75c5e35b175be8e913a319c13185348632aa40e GIT binary patch literal 30117 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 bkqtavhB}|5!9Kx6B^#E9_t9ROHtYWfJ#hOT literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/multidc/gke.doctree b/v1.14/.doctrees/multidc/gke.doctree new file mode 100644 index 0000000000000000000000000000000000000000..19cee1604dbc1912b59198310f217c86a366ffb4 GIT binary patch literal 29444 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/multidc/index.doctree b/v1.14/.doctrees/multidc/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5decf4426338aae43e7093d612ab6ff046a403ae GIT binary patch literal 4530 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 literal 0 HcmV?d00001 diff --git a/v1.14/.doctrees/nodeoperations/automatic-cleanup.doctree b/v1.14/.doctrees/nodeoperations/automatic-cleanup.doctree new file mode 100644 index 0000000000000000000000000000000000000000..80342882318aa959f8081605df0ff01095e99b25 GIT binary patch literal 4219 zcmd5<-EJJW6}Bv|q}9KiSSb)Ioghf#pkA$9S&3Aj2nwSp3Zt7KEz+xC!sT$5ggE4M z$g#8+2GWb5HNd+}f%X~tI&Jd?>1*^mGdr^@RdIp17ZtG3@Q^%*{LXiN_+{_U`R=Xy zFYLHnDsy?rlEm0VxGJnAmY10@zWTa){}0vk>Otri?84cy;Gzn*u!2jalR}v4^D1o9 za<8;Iob6wAf_r66w_Wz+id_A?dLa9u=atuDVJdv|^U~XldBr2H1v6zHF_T1v$Tj1F z&JigSappvHA%%&~PhCWoBIP1&ov%nWG~fBHxTGV$y27uj=GH4Y!yRE@FZAOM6uBH$ zW>}2E9j%P0M&+1=b>@Ac#-#^_gxRu69O1LdHFFL^eD@5?nyP^mF5h&}Szf4$n^bPtvoa<464L`1pfIC&x$Q$EP21adw=h z{Nz#cIC*sR!KpYM;@EE39Ct{l*<2LB+8Q@xE$)LE?uS`Y$v5Suyf2r_F(B;&05&OD zE*Bm4mtQTqV+vZ-KH<7_UKHdL;Ua59WYfq?Q9H{;Nhu<4;YzL&@~JH%ahYqym4~l0 z`;6&_(Qo)vYZiTC6BlJ{8jS_FnTSf`xD-jL*;tEK(lO~?Nh*Hfa6feRMf(Zpw?Y9Q+CynPi_&=^W0ta0vts@LlTVzpZ zVZDyN#rTAyYo{SV6_<5XMiS=6wyYz$;h$?9^g!;1UVZ3l4#&?H;Q;eiwE~xzUgX{V z?gTg7vGx7S7tIa+a?#++@&5(z@6GV9&xzRB52ODrsNadjepp(6$>iDhcg7ryE9i^= zO2!t9S)!P42p@GWYIDi}xqPs|m4Pw?%H;#fcXoYj)HN$Ny&9EE;ottyV=tf3i&X+?h9s|u5)jk7j{wz*A$ALw;oJ?dMm8A zYea%!N%oe)HZKb*LvdGhHd{$ke8QR&-YYXf?cVE(aavg8g-NQg@)^@5s!mtUS8VC? z(pMw7GYb8QFjNw3QDKlUlrPV+9D|LpQ) z!X{{C3maEnJ- zaBb$A3i;Qt-6)+Opxt`^>cq93VV5odqB%JWyDDsHW+o+@2*917g}aT;ExcBsxE4vA zh#WM583m4v!V0%0#T@~MN@2Qgl&qRcrFUJ6}YvPlvy5k`~#}BK!JLNVVV@~ z)RLOnGpT@c~#4Yau35d7Su-~w&T1T54lQ@;B3?t5W7 z7kLa&1VWP6fNhdwjFc8rWP~3`?{oLl;SgeXm`}a5=Fk?CVHNJt%K89U8GDhT!}V~- z8svj_j~)Zh?IPvZ)RSbc{zt8PL@Fb`o{Qp837^(B5dA~xGYw;X&&CL$#LMdGS~vh9 zv$%`R?gFvPLHX)M*mYCm*<~!%L~8s%-aFb7?>Ak>5M{qF5!4Pqy;hH#VXQ4@GiVRE zM7PM{_$JtZat$GNpO-mI&_ki_{%1+x1=wS`GATIFW`(KK9=1RRXf=w8?2N!m=>WsCy48Le`ug>1T zZnSrUrkgC5;qH~IHt(66Vfp)w$NRP<HubYW|e*!Au$JS&<~3yqD0@>jdAap|Ijg07Y#5VEn=U98l?*RKh?)%`0P z`>oY_)7>ljQHKgoh40>VU9%aKe`MF1OH@NPxYZgY1aVMaSDz5aApaVd|El^FnF4P! zU#Us-e#D234>A Ls{UgIvK;;!W)@;MNq)#1xSnbOYIGBmvI%QE+^gJrRPGB?&p!Nv=0Js z{_5}PG+gX$kA3AU3z`MNeXVEvuAR&cWE-wo+ck7o1((zh%Mo!~#9GZqrG-C&{Tn

                RUv!t4p%Q@PuhN zZ9OXH1M3EBA(jEAoiQ0qlaQr3d~wIq_kHLM!+%i9(JQ?Up;Dczg+9t>K|vVD^8e752qRm zgl{#ydW<`{*qM(_B9sXXQ0j)VV;RUiYXkTaU+R$#jH*ttcl%zo!%FzV6uiN;6{cEe zFFw9CRlj3yNk@Km_|tZ?s)x{W{=$@{y5=^+rEcUqA%K1aWz+>9kxko?wm0RwGh!@IBf?UN@9Ic<+YDfwY zhXk#)WDn}WBqA&5J=nt@;Kf_R$ z^hCduXZK|({ij?|2f6zgTQE`Kv7G>D5>S3bJ5?895+onY;!PGKt7*-!5S z!VkH@w8)zQGLY=h_^h6{9ttS+SKEa^_`Y2n~n34`rydfFEMc z?tpBDz|p>l^q&W5CxC2#OaXLcAjmqYW*-~WW+z0~x-M!ETQ0HHd=EV`TA(0Mx|(IT z5AZA5!Um8Q&sxuUo`#)B#~$jZReqk4;E9KM$?p+fGUegmCgf%ADZu|FO5LD@{t7|K zGn!7ShjST19kjM;*ElN?lC~2+O zn;^(eZu)=Udq3ZNNq+gAbDr~@=j?M5t?rm`u%2fH0011fOmEr%05oI(fL4#0k^0Yl zhzC3MOE}2rZjdeHX;A3H05^ca6UZYs@moF*-Q8^59zF^4A9T|J0Nj4ux@lnde0Hys zBi+R@3=<|bZkjWJ*qXw3+emhwIURX5+*KT6)VX}7s3|q~%!tv3&-6|w_aX0Jdrtau z--wqbUbF~^#DqzRT&n-g=scJlC(kG#Ek^T*MWw{rWybsARRv+FQ>Jmgq-X!+BIT2> z=Os&IU>ge2iXlf;R||WGhx_JtVaWNEz&y0*I31Pk|KCr(GCK{Rd#x z2f2%kAPq!-XKRb|-_Yt~X$mxHfyOWkVuY{}AQlLi=fmX*&@cYb?ZSe7Y|)An0qIrU zj$UaZ#*z7ame@4=&tw|zD1c06cf9rKD_aUQQU$;a0`QqES)}8c{?Uu31u~Yy{?THU zIeciRYeS&|=nv9&wO`)Cw>|lRaWhB-ms5g2a{NQ21&hs0(*kTL(TA$^0OrVBRzooU zau}5m;Dr(w^{{1kW&k&qw{A@Gl#2>~N#-yk=L<&saID}xyn8JqAI@EJaNpwA2(cOlF;{Pb=f2VhifQL#RK8XGe zqJn7gV-Iq=5pdL_pzgP>5Y5x^w;(DP+|OlLNa{x@w|_+SmkM=smXaywU;UE-z1Wap zjmZx1zn^9d|1o{#X4im7bsl2%6%UebjsM@Z=)@1LR2pXf_f{{MWVr09)R6;LfF3Sp z9sRIh0&p&6b}Ae#m(~C9IK~p$92y10N;TF{0V4m2F#7N%9W9t52ADJ$gI(yQN>2O` zux`);62$_XI-haXl! zizqOHibr60MaLZ_qyX4Dh44C)Ajo}=GIknqATgbPPC&us?h#c* z_y{z7OeMtW!?K}&cYaM9-AK;LNTJt%Xr)~9-+PI3n4WH?7{+r!KFmxv_KM_Tq))lh zVgGUQ^&{MdY({bv;)w3i-vRQvUolL#^csGV8Q!ZML!+;3r4KJ@dVE>`V*1Xwa-$S1 zt#*y8z)I#6Zi8raIK3*$t??Ppc4JgR<`miI0pMd~p+x-MV&abSxJ2eplY#+^is6^Z zEwBUz8xq6HujO76d3Cpf^NfP=NnzHPpsI>y)VBbNJV^8J_#qT66PvCSB)*h%Xx}ps!$sBb3md zTL=&Z#kRsqNUhcYzT{x?s@OlRFqAxkFNjp*sq(TCeLvxBv;#bEU=K^w3c?<;O|`W( zaD2%jjXb;wV0}^T=7Vk@hxhYPjcYl01q?ne%VpRl(ImZSBP|?&=lChL)*|7`m#pIL zKp$UHB@-9>-%aJn0i^NgBLq4=7Jfqc7UY5<4Kpa^GMN`zg+V=31F-g82NNBY*{LQ~ z42Y)U^%=^-)QROPe9WM3j}@vJMXwb8{vX5Sj*6c60bk)LBbVcuWCXZyD=@BJs_Ik8 z1rW_hHBYGIsD=~^6juYJAJ({Cnsl3QIa>TwqUh8I{!0^9iQ6t%^ z>>*kbr)h_Du}S}{C9k(0EzZmwfM#Q0xxXfOa=)1@pKLFSFO7J+$Dnp!^!%j6-#Cs| zB6|xl#sVLx9k~zYztHa(NCQdl1s8I4rH*3yKNuPsk{@6F$-5Q7Kqt+_i2appP^0k? z?_La~qWlKvA1sko(hS7+_I(y(SuO}hf{pp;WdK&<`d8Dv@!l)QVJoUXDNclWW)fxj zmHdGkzAj4}!*YkC1+ugZfYX|Ec~g=k5x~(0U*Uf?m~V3&OofSZDGfX@VyC|&3cAy& zueU{21uBdLP4q{~P{)N(sGjRZB}Z^<7*?l%_67rhm5~bAUqKuCW()b#7(^Am9?|y7m zr(mk$EHepN5ZAF8c(`umV=IZp6Jb@l3F+W`%bh726Hbinxg}0}$n(Yg-!RVBSc&M* znp7RTMLGJ@P_4-DLHC|$@B8xmi)*sBoyw0B`~!FI5XbMF3gShjE%JDYb4yE}sJ*}S z>~}(BzEI9lX7%>Ks~~qxKdPWwVJwu;&i9+7&5_*kx9u?jdt26Z0AH%HFEe?_kolF? zrC=FGkf%#*sSflq%mo7Cws@}<%N-C?`cC|BDi?lm3Kmc0qLth%MZ&1nfGs%;{jD#= zvtG+){P|vsyhE^i6n!Y8!BnkM*Zn54u2k)Zv z!pATwqEw|fJ)%ZgQ86^Uv+gV*BfDPFEu96x45)kY8`Q(~%Zj*bPUakz`f=Jef}*3* z-$=)Yp5{DY?&e={IYy}agdYN0gw*LLRrGZ|*gl>QAbDYJ-DK+G9iA?+H+I62TO24x zfxky|DdAHh+Siy_H#;BF+$%i!)j`Re6s3xMDOSYg>OB@%z;_D)JcJ9x zUcP*}`0E$<%ePm|NZyNZbNL9N)V-xK<}sT4tl z5x0#WPVaI{HEjz*Im&^gmnL*Kg%e#;BwET!zc=7PEe zh366irj#<{|7T}Q!7DXk6x21m7MhSwPm1Sc8vtgyoFe)Y+N$G5eK8ycxw8psp%SIY##SdnX}EzG6~QlN5HSXe+F8_ zG{AMQXb7fGS#~ieUZ?m}&Bq&GGK)@l58X$r`tWbI{exx?WTxK8Sz8I-u#q!O2 zOC9yyF)e)jlh+>$>%Qpmt2WG_HQ)wD!g1^4=WR=EuYfW6SMDzx}uB zDSSQD7#AG``PQ}SxSW5TVnBSR<3B_=-7Yi+x$Y-}|49f$ zf>KziZ|Znm`VRXBsd0e*QZM`hsBsn^KR;$FPE1z{_aj)@UBdIi7-+abhKu+3vE}2G zEFq3q;4vMVV6~Tf_@~xj7A!*6e>A_JOv!X&d=r=|K@E@kXJ6)!BlogYxCeO}NSCQ` z;bretIG5Yw$+f}74hkr? z6dHfSfIVF4g>zY&x4x~-?|MG}p}Uy!{pZnFOa9+4UxYUS>iA*znNIikFBz9yCS$NG z6mBZKXd#-=_IDrI9B*xw82&(AMd%9?HO4X1*Wqq+lk9Ld3a9W2=6_Zfu!)t3*!i0& z8BZ8zpq+hqhpUwFZ9Kc<sy3| z7{F-(*G!4+x#+pjc(46h{~s8rk@Ilcq2b0O*bB5z?#6|qkftjK`;WC>qNH! zudF`n2VX;Y=PHjm>0Y*nx{xSosNxa6g0Fad%NEWqkGBJ@f~poyRx{Q40X5I z8;IENif{~fy#X2%4F4F3mti~Hsn6{oZxVQAW$Xga``j*e0@MKnZJ^r-_8#VgoNI#- z=$2PvXD{ZWYJ)k7V^`y`3nZ^`l?-GGI$td+>X2kwh;S^~mvFY*`!Wy%BKj?nrN}kD zi)&1Dpx06&1qUx?Q=aZs_BH}+OG6k$IG4}N_s=3a*^+nh8F?^tiFw}97U{*IpxWtr)cBw8_k&+0`buAc6A z63aC@FVw~tTwa8ce(bf;NR6U`JN~C}94m$G@8z2~~ds%E~Ki;arXnV2ayx!h^)DGCmm8SrpZwoNt1dc&@3fe?=NDcZm8bh<8V=B}f zLmGQu{X1BAJy8jQJCc9r*2z5xS0eKBp9WWlj6vFTcP&WP{BiW%_AQhff zPwfJHVe5*GsuC>pv-AlpQ-Zgq6J`v%=m7k*2X`qR<{}K!+B6kdOJRVcBjD}`>fH=R z3p<;=#4}&tpL#@1ZF=G+0U?|6)k}yeJVp|06;wnIxKV`KVFgs(v3m1}c{g$yY~Mc) zo#=_npm;_SRHvs5GhWoYgE8p8K931!T%TIw`PrCZ!Z+b%8^`ih#IBsZkw|0!JutxJ z{dqv)ezf~o-u`bQg$#{|8M(<^8TruJ@x}yrDz-MP=-M4Vor}b{Ae@5Zu4+6NJ)pNm zjRL2J3E62%f1UcDBO{m(8%C?-rSDB55BXvud0#yX8B}ePft$)g@?9CGli_X8!@EN^ zL7-V1AfSY@i>BNw#E}-@5n6k)UL9!To4_LoV+D|P=~&RE4VzDdAh2mHqvS48@<+-s zP0ebOhVln1&C-r_Imm%Ub9h#Y22!{VwjwT8dted~TR{6U?{?k?i;(x*$zbCP<_LkLB>XuE~M8oo^buq+!nvx)K9V zSP8}1hvB0UJ|9OyuuveK%;s-R4*OM5py<`{nk{cd3OvlB^h`YsgsJ9=m|C1NL|>5M z_oDyo^THjUcCHi zbClyv<<5Cd*nCv#YJ3NCROsk>s0N|kY}Z>62#B;^AljlzOyILNG)pc1t1ow8P>ZC( zLJ3r;wxNY*`345Mj5uCX>N^SOB>!2sJ1hQS801(4uM1hxSU+yOf||4sO`l;BdNB_d zlOx;mJWyqbJ}uJbCrjBAO`5w96YE>v62$a`rRIj)XMXs-83)CAiJZaU!RSLQ zUV&elAv>RJBJb9v?Yt5KSGJFA>I4!GlK7c<$@~?7b&N##gk$rU5@*w4Dmipt7DufvMfKw|C(RrCGb^frDK) zUF1N(ptb^Dmza@OsWG2;jrTa>9a6zht9VxyTdpd>f}QVT>H6P5Pdb)WVlIm6b6qd3l6S2S&Ysaxdi{}r+S+@z195u7uBRYzWzKz> zjlxM8CP;RT7%J`mITA_*x^P3+`7&nVlV_oJ-JyTWP{;kFpGE<+mwx{7U+wT*Ks4DA zr7<-J5pu-#HD2@$xlxpNqdqgK%WuK9fBZXFi0dJ>W76oFQR7OgBqFpD4`0d`fdYhC?SaT)PN9DdJk~K22v=4jo;$>|FL?7t=RB02{%) zND*rYO0UQs$b-~A>t|w5`E*WN-Q~<(8BRG>Y0k}X#sJe4b9L)Cm%QDd^}!J$iy1XT z!YPOC;&^YL{F(|%M>WWM}-&N$!qz)xwG5 z{l=IID1b@JmDJcw@&+?^UHh*iL#=$3m|59LICZ$?OU`@_gre5k>o12$^^+V8zYXFm zV~AL&fo@;LzbxfK@iq2cY&{RDaWtW8W_@^D5)bfIsXcy*g5i2V&(RQEZ)sG`;z?QF zEC{;ue%mozcwhfSe$i+cPxa=!2~d(h55FXyLGF2ivT9fbx!EWX&*b`7@Cm?= z=x}mLREAm@c5RKrF_Paq^Z;vI!K8NLYW{I`8%8Pj00)fOzz~EMGDRab{?U`i@2i$F z6xFas0e)(zW_EU#5E5m`K z-yMan#ez5{;O)W_SyN>Jz=97R10V*#{<*RyJnv^*u~w)ks3*T=%lxn^b58;fSl5@O z9H@hju9uDY;6wk7RkCt{MyZlGE#-V+R86` zdyJAGKHwwy-UI?}BgpF*=vaHujQZjq<&ClJcm3o0GffLAF5Mim?yTHVSCh!933`A( z^K=4HJ7SQrz2-1#@eu3IGW*o@B;SBY$rCLg@#SooYCK5hJ7ufq>Qp8ZqapnVCYA2mb;P3 zsDm;FVSsMibpeJno|E61%vl*$1BCo_;skgI^8J=M z(LKmjSZD3bVbIoV|xn(t{DBWp` z@hX(U->Y$~7!l;P{)oo#YkRW%V`{OWiY?6ZOz+dpD57DUAW2o4G4c)a95b=}Q+wxB z*AiD(xJ(lQD10eJ;Odu!BTZP!fYJv+dU|RFcCnqd^+s+$=LXn>Ni1S=V;gyjGBAf8 z)vRF0wWCT1OqSOo&A8mNH(x(wb`pRZr8?^*KjJYuGMaa@yrJ|ai+NYV9d(|S@jZvt zs|SxT_Vl#rY-faO%FppAPqbYyx_v^BLRLu`rmA1;EDm&6wV!}%tMA(7f@W(ho+VdJ ztK@?<$uqSTOQ^Q({WxBd1oAs@?zkhg1BEM{Jh@kx(pvzdt3uw)2%gw1d=Rb6({2Bh z@YGlR z1^dZ!DOBupmMq7qB3L_RU1AEoc6oF0R0484BElD0=|ZZc9MhpPATWgX5wWHNkt(Y2 z+db^*(v!n3d_LLps+)2@CG85JCFbA)btZI}>O;0f?JcEmZ|kxt-Y52EVIXtPzmKrp zL@oKwbS=C_P})&x=R+(383%E{MTM+&@mz$XUe3+jfGDf`j9dYZObU36nKyxcktyLAP zaV{bhzOsJ=TmcIfsv~ z1U|}FV`b;#mJ#}Myw`LyhDHUDE;VFq4P7whuOKjTM>fFqx>^U83M_RAZ~8--etC3OnE;xoSF3n(W6X7Z$W_0Sr0 zG+RUd`IhF+Z@TDwB4I;ZJYnd~Y@PlnMZVI|5@7lcuWLMp)F?hV31?RVThg}dw`q`m0o{Dv`$*|~Fb{)7_&lzb|NHM~+GrrC zUJHAkfx&_m@U#;`9i6MbXs4gL6M`l+do$R)upz&~k=WiLrsVq(^1i8P8%dS<36sUZ+dPR zNACGd)NpCP88_Xmfp488sv0Md-gM?+-cba0uo3@yv?Bh*tLOXmh;7U5E+f*R;fI4| zk|n2*qrRv|-q1AB+k zq3VJ#GQ-7RCktmJs{;BFmDGIg`;kTn!CNO;jy$Z_JbSCTOr$5zq-(lvI7@SJIk{6T zECe(9gys@?mn2@$6<%;}$0ApT{IVe?e0Vg{cZ8rA^^l+B)P<>T2P?S+5KV5(3gc4Y z4fy!OG(~(8Bg{KIuTs%65J#A)h77J}Ssa?I5=6o~AyGb1bDHQKoezZghHtlVj--Lf zj#46Y0(Eqw)J3U!s|LLnIu=fFW#&p4a{3F(Go4N(}WRlRL8deua?TZ8|{^Sjb5|`JZ3m&KK|jK^Pg6m@39b;Q--$4 z!8;$7-?$1cD`m|&(%eeh4)Yq^<>eJNqL@+Cljn6~K;eL2J1t+R1BtKf8DI95Kc|&u zT;cdhYP|h)ITmhRrniCPiE^Gm$UeEUWt)U734`u0meAHe-9$I?LH6-V;V}GQ26GhM zPIh`QS@ZQC&jUj1-m~RE8V|-Qxw<{M)@x;uqgM{GaGx6u2qWxp??S1Jm2+zdiF`UH z`fUTfekJ!_u9EV*Kd^NmO6hh<)Z`b(??{~!_wU8o;^ldXT29Bh+~W7%A2%12HQj8r zN`)Dhw8DVGsuIK&=%>q-7UQ`-8fBTRyzi(itvh9OIfMgq%Jia~R{pT(U=Vd?(U+KQ z$jyr`b_k?ZkHvOm?Qa#ejSF))b?yW4nzKvYpq># zBgrE2DPXkV_LKH7SSM71NgQ_MP7DdJb4$)duC``fh_9g8UWig zBUgnpQL=AC3JYrPO*nc{x&&s54ACB6bMIl&u!c5w1@Kj4iMw3VrcE2Av zH>}%BH+^Np|Nb!Ga3ZCb1H0UquZSvlbL58oJ21FS!x=5f>g*(=r)%~gx}+7JOWPKzHlgERc95n^Gvcyf04;6-&CiE}uS)i!#G zNvNd#VWtDtXTB@xNu5hq*%+ke&wdww!pQ7p`4I`NoovCmal`MQa+GO)#O=Jj;zBWt zzYqIz=zOx$%)!kaHBSyJRf22PzqCyY4PLAF9J3Amz<0EMpNL@kE~YzJbcI} z4KAx677~A7T?glAM&-?A{h13{Gdvlu55>qYrct2v&Fgby`ZlUANJvns!KVhVA`<0@zyQCw#k)47 zsZsyXZ8^f6S-7r{Gy3WFnf-UjDluk<6uK zOlEEI@9NQxu5gsJ7Vs0(r7?_@I9`zcVLSLp4~juDq_t2|cUTXIe^^)1YDmi=;7S1L zUEAxYh3yX5J=$8k6Ad02J8tqy-R#;~{nn)P_vXJomcB=N=FNAXto@W4@f1fWVIXot z-U2Lei%=u`C-08qHNUB;1IJ#jrfE&59SZV;-gYjWEZ^xO=iE;9q0FB4Z~m6Y4yR`B z=~9E54JnsZ#m@YYB*4ZjQuv?ZkrpYEg{&GfbPEv9~__szKhDj5|VY)P7>>j;A8Cd`AYUL zz_PK((l3_n_evJjj1j>TfOtd8YNAktdA?qOszspgJod`y~V zAGilnuZE6Zx3P@ATAFhoCbfDIepep98 zXWHvXaXH&P)(`bTB89vQW);X|jM=*brH(_wo64dV zvz9qa_*-Our)($q>=YktcRzpaxYNOE7E~PrntM-qfm*^#tXRP7dyR>Z@k4GywtXkd zQxR1LU1pg7RpV+~8-XY-jVWG*R^s@#Ae89r^8q8fLqUWMTwCvXa_tZ}F3Lnf#R#zc zbU?E)+f5p7W}FIF%RPN>fHjnKRDj%S|AJb2x1mnprLiGO#=_9o+|v}Qo4(^aC@1eW zBC0ILnWC*Q-i~Xbx!ygGvDQsZ!z0^#nf)qx8NM+2#P;o zdK^~uAl&`$BNx!6u^%P<>ZInf&Qj#>>&=oq6AihDW7~O0?i*9Y0K5Q)f=wtPfgIP- z0yW`O;T<1v*mFnYR`C*Yncn!Ryj?DJuPTQVg!0!-RK+Q`J~r^q)-CUe_UpmTO3jXE zuEgR*FEOiHPubb$S2hUUU? zjyCv$&D-vFVZzVWOtBfC5*{b!&#LCS!0Swc&@W|f*QtU$O9_T?h@w+p89ppO_#fV! z+OD+}C}jm3x<5XBq(|&Cd0c)BUwsLC5IMG71{-3bRd}3zU>Qi4Yi8q%JXSZWy=N&A zN1+Y_?QXwu-ti<`EPLLwKUQtdhYcuQ!u#{#WeJZf4nZ@`uRjsQd9O{AJVoQn-F)5I zdn_?skF?3Z&Z+OK!Dqi#2+61L3mkABzl;TOB4EQ+%ZxXRU>y(D=i07p^l>UVLOt+?G=C?;*cJsWl>-_fB zq4N_?*8BsdkB4*5q_a2fM4F*n!P6i5UkWol^!COlIFNRevlZ2n62LEnn;RO7&lhxQgw@K$jje}^0>!* zUHjR=>qP#GJ}n`)q&S)(I4AyC_=8lC#WG@E-ZLtpxNuxsf%awvLE`N$e8uA4b@K1n z{LygM%R~n>LDu1fi#XK5mM@CIC(zIL5{ZW zod@s3CSsA2FNr2Nq{0DxX`rynZHG$t1@t(*c>C(~Oz#pSc=1z-q5JLP zLmzApsCs*uxKPbZDbK>(?0VCC)#w9fqU1u2|JBoo?o&fPmA$!qGj!f{H>E@QltTm_ z9crXg{GVW8nZ_u!8KA z3mno$vwF5~9c@RCfV%~rR1iuKv52@oPjUbkKNMHz3?{v%cKWsxWhN~i^W0v-CW{kS zZGs5bG#*TGh$?<&9u{lX5$SASbgup?G}gZG@yf5Zb7!M(jF9A(`>?HBKFUBOuiN6+ zGSeR5b&Oh+L3mG1kKPm>`VV{U6N5((U)rjMd(wx^c$vE&KHJ5C#?*q$M>;WzO7w+Ve4Jng` zp$DbXSjzjVr>j+#mEt=eMfUm#Ia>FY_i}XXw7J1;iErMDCs0XE);i47gJ74>H z)scKec4>v#pOw+<;v`soRLgSncpcr_?KC#SpbvP+XzI(#K52vV^&s_Bbq63$aIV1? z3XJ?6xmmgc;yluDyH0Jd4JOhkJhm3(cf=5>h^-%}?#8pzG8S~F8Xg{}e9>HW8sgLo z$~q+^ihs{Klm}QbcCY(K`4c$xuKGC(T~Dbj2%o&_bAe^J+9)kL??zM?!*i~&XCse$ zKjQ38q%Qzu=)RGez`=R|fL{h*sEUsa@s_}u`jJNIMWQe7dF9mokKOhzHc6s@4~uD@ zp{CJaZr-1C&jCR!muGyGGrC1#VsS|I0j|FcfE-pC)`rMev@K+-zl|SYX=E`T^1O=r z{86YMgJEvMWVoqut&V}VO!*(FP8)}=10&+t<#1e!HKTiGZV0Jv7Gps+cB(mwntIU%H zYFClEIuuRk!AV(Gszyg0qjJqpyDa3-$#^jg_&<_Gw#qyi6M`Vw+b3mVTpcLL;jjL|(y!CI^)N|nyL7%VGyE#wBA4*3L`drYy(FUqG z^rQ~Cpk?{Z9I9lh5^kY_De< zs1xtcyfs;+7A@&>UZiFh9uoN>tLQDXq01#}>Bi+*sX|}4?#qlX0=8`Yu^^?fi0?Ym zlmpl61C1#zQF(M_TIi<(OW4XcF6Z_8W0SrVQ%7Y?N|Ud%GHa^}XPHNLH?x~vgsC)n z$xYc)TKBr$*heG!p9EOFil$qR_q#1ZSKHsA-r%By`tfFm(pV@+UmoT6(F&%kE1Bq{ zp|mZ3`vtHkA0Y5r>BA=E`}&6N0~;gC=fR02g58M6kWj6pl;#+(AlFcl^Mi+(ClW-K zhhEuu@9S9gKK#crEZuUN)F@o?xRq(CZZ-eSo7Ltmfj=(~UoLNm?A8Y^jZUX#ctcn>BZ9(BGA<9tg9LKOx<{jt`t% zuu9!ozNn?dB0P-Wlj&)o&J3w5vvI5OHpO|EhagDc+>z=4in%b!&ujBwg!A^;@Siq8 z1Y{qJMx7Ox;e4FVg}S638b(=<6K``kw=~#J=TmzQs#nwZZ#`*Yp`tl$^-?_I}Ig{0zH-ui*+@6n(Yv}9GvRAww!de#Y&SO7owO*Fv5A%EVR%90Zol7*l7eNxQ2 z0PjPZVC$bw1@0PdW-)?w-{X|;sI`!Rgj5j3c{oNF^&C-mw*qI8U3hE3QTY$IJlz~v zh01?iR&bmCSW$lg_Z<4|j^&3zM5p@6CNFf7)VH3>MK)MN{F;RZ=1?ryuYIpj6=eWiI|B0d+=ZxMb`iKND9= z{sAI9DhJ1xrVVPkcsOYf{R|UhkBI<#Gga*IJhFJW=0@cT1Z^ z@@-=k+?Q`O15MN^s{*;_EL_a2flqGKb6g9Uz>PhMSe#FW@x;Q-U`3X>|d#3&tw+T8| zZQ`j8D$$cAzx)g2_!Qw6qkr-4*QA}-)8ZC>tI%dk8L|_3MG(^mY;20HAXuQk@kY5& zcC*#o9#yAeEU5wYuIs>4eAzChW|RKKP0hfSC-X|%L1-~iSl8BTp~lizp4C7E^5@Z} z`}W=iV24yDd)(`}{6{>uX&Z*hvtH+Zw9oBiFy@=Llj(IL_h^&pi)LmdZ}sL-PuUvD z*3cFlD39rC**No=C)*_#Sx0~Vb25*=8;8s$sHK7g?Iew>wvFDZmJ0U)5ul`1xC#*Q z7YYl`((nv8@njKcu6bmAngB4RO|FJksiC$*7WUbaW#g+mU|p?(QMq5H8hY(=Zo^NX zy1?H3n4p*TTsv9SyaPSB<_n|t@wJr2&G9Rd%8nbDafX@uRSZ{|;kMPVG*u?AT|Asx zKeRTc@KM~7Kj}5K*brIq&*t^Cj||@a_$0eP-J^ABT^p-@1nVl{jzWC%C+*CXitS$= z(e`!OSo8OEr9i~mG%^u37~^@pmhNnt$3AxT(0;@Fb@KNKW5Q~I=kmp3K@m4Lb6q@E z0&91hw>L2BN?%tw?N&db0xYrW`4n6{5p@D~N)I<0g%<7sMNSewQ>71>4CX$s)K-$_fvc4k~lbH$kE5AZaVv5=koX=Z~i~ z`lJLX*No~l`$8SwrA;3-TRa%yA%D04H}}RVJw2?oMr5qjV_suSbe6cfl8? zE^9W;2RK_Uo!CDR5;UW(pyE*@f?r^+E?#f=X%pCz?X5^Dygm7B%fJAS`n(Cq!3N`1 z-egO{BkQy3D7oVZ6V_n@-xK1fA#7s-lLbuE9WD^}O*5i4nxL%sZsn%TWsCDJFs`0_ zx@BO{U2NQp`B*-J1!r9SUhP>&?VOy`br9Ss^+ zu!fsI-0kK?;xC4xuOMzMZfNRAssk&wO;1QQfi<{ z8@+sch<22Ojkl68y^yR$cEF#+E44m71}sC~bm?f5@uN{^75olp5^q!@^9l@hr8@Gt z80@%~=mZ)b>OlJ_VCrt~uUJD9eqVLI<^I-^AdL;#o2spaDhHVV; zM$Qhr917+y19-I00leDn2iOwFwtzF&N=tG2wAm}ZY}2>khd zF>)OW}`GM-9dFz+f$;hsSp2#@|%pURDBJDquTc*XdOJ$Z`4OkF!4$=NbWp zsviW>yW#6YW);q)9Zfy|O*#jo?26L@Ypy4KOEkrY7^$OBE{BDWn3Hvjc zti~O)*HAUx!pGN+4h4ay8zcFjlA*irjLi>RSYvW{pl%V*96|w?;*4_O)1MlZ7#u<*i&6w1#K_Os5VFeMBJ(9&Ai`5WfkVq53~aYu+Ty5m}36mN#*d~4}RAh~)X zWs9jVGE}*S>+jp{kdELK6}iF%{EvGm3TdwXI|7LdMN3A!gN@@w@Xn`j5_P1)xRSOy z&NY4L5n`EcHfmw#Ab&P@x}@>7RL+#p{?d!{S%l(NU>*!*a<_&n``s@aJya9;+5Vj0 zKJP-leCZ}`xgSXR;q{Zg5FqtP&D>y5dGpu<#hdbWFq(7 zlXYC6V$R`a)GcJ+&m(ib93D!siRF{osjfX4^dsk=((f0W2lv#HC!3hyn1;{}NXwG- zlnY)PKkJXXSjTo4K9E0R({-H-o7PxGTnVEA?G9P#e%u_#y}kIUfjYbWiX&m-wJK#1 z_us*{p6xuTL1Pp#|98B5grn4!E6D_y7q?$VlW<#wSoa_1Z(uAcK`hphJ_LXU+ zF?Gaxy7WEu*@HmNoA-w{**4@T!)-drU6dAORDN(_Eb?jEmX5-1yHMgyRgor-dvg{1 z`Rqv};#xaKk(TP#F4>>AlEcH1j0``ND2Vt@x-{MF-Ceq(H-0&kM@O)lEcj@Y*kKy9 zobnUeURcYZ1FKxN-p_M^YbEx%(-Mfu6a+)JktU?LBMQxAKE|;=nv>q}Nf^CAZNil1E|DiNj<) zFL^rOML4MK<(f;>0(AV2$Dpf_3GB=qm63ox^OB22D={fmxjw$`=-W_UY$hYLbv#zX zC?w2$`?SZA#q@`XBHH0oj0y*7N5N`lye*-p=G{v6x7=?VKa*n>9r&OAJvoE_A$fOF zJ^_m@zOqz}I(n}?b-X3>Yb3m^vn_c_^nki5^0KDsyZ&r8>(5j$CCf59Pi0gv>TJRg z`-zX7L|JcsI39)uMHZ$5OOxvP0BZX?kqAmz7eSgt34cFBjbJm44Jt*{gf2og_ijvf z$hD=P<9UrvD^4}Ch0B)y6JZ5*us{2Kg3$ANe6i+9XRm&{Jo;XejEL2BUzzMPu>Dx1 z{BVL6`LJtHd$D=6V#4ym{sRmIguN#o5V$$cNlQZyn`;fmF@b%?)=b4WBiGVsmqYmz z!^&XQGUiXNJGyEI{MOc1TMH&H^3N-?4Gn@jpE%Lt11XDm8A*HgSyp_PTIiJDqDcnH z$l|_SqYEzAGK@OZahT#rZaAQvBR}4*>odT^Q`$+l4yDe{Cp$3MqgSdi3yvXMOYbb5 z%ZR6u{P;J=N|yx~dhCr^22g5UtFUIu`j9aQs1X|C+qCHuN8Q9T@P4E<{tgapmBlFi zK5z`2bt=}2ij4RMgHB9DKo4ukHTox*Yt~gD-YTItQ=wW?)dh|Q%Wqy&CQibXTQC_e zO&yG?O!>q&p52Ml&kw?+(Zp@*F+9{8YE9zz+SnB)Jpn4TO~6uia>D{F{i02fS9G%Yr$OMo+O666 zElJ|oxwhMnzX2>Fzk-&8r()KVM@vIYip)Z^9_p%b_zhQS(8ooGJ){4Oxfn`Wb-%_0 zE*5vMSsFU+;^y_{hxSjrL2Zra8DZHH`dY2s-c!>**}bQ_*7KD2yNk1vb?`SH2ihMf z`De6DOx~{Ww_pP0;a%&XU06Bz!-$ zPh+&zKbiq21#Yr^dm9v;GezAR2&b-^fB-E+|CTFF52xtVsJ@<};m7$(L~~(TYSZP{Lf7P0{7WXz3v0LxzKly@U86f zPXjOL53y5L`pXvC&ke-6BSEl`$NtDhip$Zbd1CTh=<|V8QA@Y>g7uj8tVsxhx?Os=^c*3ZgO7IdF{~e~S?&3AI zQ%^N}+e_W|rYF2YRf-@(v&-_3^~3JKu*7d+q1hx63@!-|Je<;{gy{I?IxNH`#u|RL ze`$PNW(xk?$9W4!j!@)4Gq0R-!Pkk|ALhh15etcF>v#FR^vDk*@pRuSpn5Zl_^_3s zo9gnS{|}|W(purbrmTD-bCk1wlAh8j6))D{xG|U3S=!2M*WH;@8mHkr!g3XCywz{(bOJ~ z2b6PkKDqwt*5R^*CtfKEqZ129qQ7BuY@s|+`Xx9qU$7dV$~Eu{dU(L$T`Vc@x9Uq# zQg|Hb=ta}_=_by6S`V_k>*_~$vGqP!YL=H8;I?-v_#()$$F^t4yfSwT>JG5z=Wpin z--^V|u@$Xs$GZ8;*DC0f7Mg}b2Gw@CNCpdYzzhA5f-ZP=BC~|C{oA|~;oFFb>CZ&8 z3i_*+L@M9~2y&xR^gKJQixX?L^ik9eVyAP!_v@rylOTn!7mQK<_w%g(c;?p9>t#4# zQ(b#NKUD!pL+k|9!PcKAGI*n zyhgRk2lS`WpHU@Q$#!L5_H&VhKA^7fBc{8%KYa zo7Vl}!N~Kb{SU7zz>pgw4;NC{8m&rA+)d~EGbCB^HVsohB`1L2w*~*JE;aQz?gVO6 zarL8nBs`(ju;C>y>esmjC#Wy@7c!e9@0=dL|2g3d{{-4I{7R0Y-GUY#Y>*w) zN;|J0bNgyvqWwm0ll%HIi! zrg~O_a^O=ZzEww4ok+U?84RRu8eVbGKxM#1UYMyx+dCJLQ4P92lok)k;|I{RD#$giOQ=2C?w7Xr*(7C(sNuDi9%-`Dtn|JR`19VSf?w^r%%jm!rZ2XoERe{(dsu$N!y^ z=;XzkiMxr&M=%Y=UGv%ue@uyhrS3k}k0fH*&qteKqVYTn=c4R5@Xr3cz|KHGw zS7qhPBC3Yw>w;`)=44Qy;A}_z-LBvW8i2m6PHxpkS}H55tbM5}V`RYO_|IP`9;eh(yCC_#!O0lg#b? z%CW>DD@w#c07JWHBa&4Aul}eBD13(9Ur2ekzWD2zs`o>;;P!WC>&p_+tP2~#Bdb*w zQ#zKNmdxIIJE{Zno~DkdHywJ~GG*@j7tQu+^zeEd0YkUusrifnRIX$VPSiiG(Of3n z9^>2uqq9W(=5@1O8*_V^eF0dR<4-qZTDu{` z6p-H(%NRBqIkUs>FRe}uSb7@%MN6fvjmGJMRt_U&i{@l zGRQtIiWbB9zw9y>{De@Z^`*YHSjvw|i*hxZXZ^A~(XlZqma@a}tU>~^irwg!A4*(9 zEcTI=h0$oWfOtsD1G0NCFluJ}zGw%aeS0a*Z(Fks{W+m^CzZncC`U*9*!~oGh^*!< zH43U;5bab4FrQMcV20LLNwGiD9|Ko(TzfjMHU?%)dlL0<3UhXW%PMLI^J(}fBOL_= z;_jaD+ohWbY=~h1`i`?EP;7WdLEq%T@`i0Yh?cLr<)kG6ent%2;L5~;~z0kK$m{dyF| zhJoF%5JWH$uJgmYV&!P!4eb!H{ezEziw=ma!7;3D(@;<;)2>OniDgehh{~%;tXzM0 zi$YWNM&Zehl_gkT@!+CBPR@QLYB$C5)H^=W<$z5}M{3|9557ddF0*x%-OuFne85*$ zio=Wsc}A!E%~`W*hg?E`qW>sd8QNIWlYkD};AKx7L$1JeMg2+Gq8o$vt)@5i!MIG> z9v4AQ)7|=!FL{5(ymf&PB7Qc)Ku=~NxVTe5Bn^}F}! zIFPikodqz&`#>s&1KTjV2|a3xZqfhw&^ftB$}_$vmFc^eOZfEVp-wtJSc}=-yxUJ+ z@pzzwnGSzYvJ@R7cGG)Hmh4ElvS;Tt704uZfkIZm%41R?-_S@BY2C(qd~rLX|r^*L~jM zVtO)ZE~=`wZS=H1C(=8Zf=&B2r`&@Znh>Da7s4j}FAxaWi&QwU7~L9l@+^nn=I`Wb zbem-`Figi8!;B!u#wXeXK3@X|I&0e(z4yX>^YhH=-xBH zn@Nc&r-!8NXFdc9TiX2t?1TRD3kxIJVS=vRX3O#lgH@>&Wsd zv>z`r9&=&y?=}8(c{OrwPQK<*Fl^jZ`b+(>V^$+pA3UQ6H;*26A)(ZLEZ%sXWb3w%jkas zjK@S61ijf^O9K!{Scc%D(BXN7BeO|*_DDj~Z%nvwX_tWM@UMg;6&t9iK%Cy!dpq)e z0M-Tffsqq?x5$DqoB2Ax^?7a*^b4FkC-(h!cvKYOLG3Nk3hBu%ej*H1n(eNoIS5qj znRW*kvdg!0ssjLBLF~#kYT=?gL`W#h0yr-a43d1Sx}|qnusUkYBA{@p*0Qo#HGYi* z#3{zVNrHq*H!Tc`{ey$tBeF@zv~(tZ0W*WSq+ex$LFO3l5twZvXo1$wsV(XTh*Na| z@H*-6Djd*a;18tfX}LgN9_aV55E~G$J5L6Z^0;XFz`%+1Ib1v^`sr;yO+td!{4nAFbsWH^kRviMKwBA5=NlA8Ug0$Tr67hDRPjR33AscDKomN4LV@*e z9+x{NffgcoA*|+5&`Y8>!6CbLf6pEMl7M2Q;Yi@6OvP_uK?cVpAqf~AYd|*(F$C-Z z8%KTj8mL&A@Wb!HDBvwARi9qu0c7DvDWcQ*Gj3Y}Own)W?!97)8$Hx<`{cs`5L=Ka zq+x*AjuZRo2Yd(+bY7+!Re}V7=_#=wPMsKZiXJf%%Gx9eaE)k$vAFgZ;4&+m-c=${ zyLjCDCb(vj2ZTf$^6!#>e34g6%XG&Pn7|igh0kGV!}ZGTgP!)0buIC z)A9r+6~-X+G)|QvWi2FxmU&!Q!Xi+&vYE$zR$9J5f;fGysF4wW`(#<>`4AcC(-le1 z_BP~;-q^zD-6%7IT#vtY=)=An8Hba0ng_hFlTl0~UuMdZaQdqE%%P9`8av?h0MG`i zORFtnj;VBjHaN{t-8^`<6ISrzc_XoM~|*TkYO5ScIl z3+?UTDhaGV1{$a@w3|?L$8S@^Z7du{+ico%l>gQo|7)ojEU1vt_^*?vm0zfm>p7Do{V}ie z6XDEwE}kzjH1DPK_AYC26mEt*yTkuvwEbvv&^}Zn@I!mT)oe6?YAK6nuMvzv>sdX1 zx2xT!6~j37u4Bx#8`SBTonmha~m4r-tco`wi>z7bdd4YBdlt~d9- zMu&a;UchxFF=`la;X?^VJtcrapV}y8*3?x zc0f{7{EV^LJ4BJ+I7TdG0$wwp~#4l{u$33Q6y?Q zviP4}&yz8~Kuympsol8)DBo{BV0|_Dl%6D)eq!~XdY9|>BKmh`sKcken{qz`jt@HU zuz)KldOF%wS~yRM?bc)JTihd>yC2J!!1nh6J26b%M}4(Y@qf2Y#rT<|w?ZC9Z?QLp zo6@hO9!OinujZ(vp9~glx4*G*@{;4(Wzi=b%E>>%KO9*l=HEsKu{XCc+iJk%Ns<#9 zV?Q9#KzEQ3_!zwy{&SnF1t94Ae|;m01FBjcE?(8gjr~vtUADDd-4YpIN7dqxGFFjnGM^U zR!n@3Ah31jUJ^07DlEH<3X5^|@~7{uy)9wrL6nlx(!NkKWvA_VJifU0zZcRZ7=^-2 z97UWu!L{Ea{o(dWA|!m7)PGo+j|aa1+Swd!97BxGo0CbTO)-8$P(V-sXE^q2`DLay zt*6wtEpJ-m$(b~cONE?8*19R$ios9A!<4CkQVB#0{mHWi?3cv8!#IDLit45a*&+VV zF5P}`XjuVoOs_x2lqfdD08pVU3IBz{Qip&4_*to^_>8{xEp@t+kGM&;zdmoM6}!d7 zg9_U#)s^;*5{scstMyt2mf_>o8#KFmcHoEgpUZ^AmKrRYyz)!ykOM?HruiLn4ZSfH zR_TP{GlqTP!z1_K)fR3;=?7Q(y#C_v%vWleMI1h496VpfCl!xwPh>s%S zoZWqU5gD!4W(syv6&{C7RpUKW3xMH`#eh4tgRNyk+G}oFJ>`40CJRl%ImDlE3YNJk zjXyEexS4$RzR<98kdd$|bgpx>p9dR-g>;H_3A87A*&~BH?9fwDF6m=8+P zmVGpU=;lc*w!82+b9kD|5Y;NJ)wYx^lR0%F`1L}g%@PgWo$mjL{-{;-74Vw?(B*jWsBUaO-F5bm zTmAPITeYEw3v#&e?xohR`kTSick z0k@z0{iu{W07H!SGd;RG^|Km{KOtq+P(feE*EVGl{aFuuYol8C?7THKc9_%&-X_)d zsg1@_gu(F!Z_=Aq9}5G{27~&VCB#u&xGSP=p)ppx^M8Ejj3$N-)7T34X{<_-QVY~? z#ED^_lL}dn=|8xITiM7-5h0<&2Mwg>k*BTP`pPhIe8X3}d+11UKL+}>U;d?lBk-7v z#sLWi#(2(cx%os%@Iu5?0$lrCBiVv9_haF873+!#9LP!M*BQP*6X5x6iTp@>^t3i` zOvwPvzqvvS$&18`(%c%$=md3t839XY4Kx$e4`U0)I`@ESIXj{DMU1svWzQ_xE9Xp^ z7PYuyP*QMm&x?f?N2X!*0@F`b+*6X4bA<>1ZB?4V0Z4ktWcws|FNc;Hp4O)j`p`xA zPjcvPx}&Y8YONj&Oz`$w%n|fdSk0+~#q(^#PSo#5ERME0*Y7gbNCFKHF(?u7Cyi^= zF^H^`zZ-lWn*Li8s8vkcv?N@a$kybMlRk2!tIb1J5@56k_6ucsl*K?Q-0Fh`rGYXD zz4C&^pR{nU25EMJ`^QazU^iQPo6q`HJu_{cW_($gqou2G$t`I5`DVTqcVl6~Uv;oj}XuLTSamyU@RAUPX4 z&DGH0Z0ehcXUpOtf~l-rsugPzW6?lQI{;Z~3%JoxEXgLh?|31{)05SaJz5UQwoe)H zQ(*bRp}EhUsq3+(gKjkEfl?xX{P8tuNW-7meu;Wx>7Nna_f(=WXH@s4NGHm?)UrvO zU$LGc*SSlkpf30fgYmI`7HVv7f*EQUY(>3qK=`uzNk1HeL09k;f01^xnyZu4|w z-;tzOdQvn;^MA^(YZOeT7Oh6MivgJ+U`cjPA2H7Vl^0sf+nKH;uDaNG^i9y!gvoEu zi#nFfaZ`0-0T*7X5VEMnIi&Tg2J@}amCXzpeBC^=Pdz|e&Q&Yerz03D4iK|NMB1a|94e#fJswxjo*sQi^pR^}8YKa`uJh25f4(Xr#RH1}Dqj~~sOIPBt zODq^?^2p7SeJP;1JyHLtMv_nKh}(e@T`X7ougTOroE$I@whZtY#vI1DPpfCcPf5}# zKN}1zn=Ua8Yst|*k9 z6y=ge3Kwr0vGBwdl*26CCY(IC^O{8a_`elw`N_y+u%eNI=YjQ4i7_zEfCL6+HoL@R zzlmwiTt*Sz(5Fi&NV8iGzAYk=3);Sq88u>2svXe;tH_)<5Or~yylMuwPEQ}&YhHa8 zm|L*)e%~^I9$&8=4V%V{WbHqZ@Bl7%hp>7vs>7yCp`?Uh^073$_pX}8NxG}HLu9!_ zpZU&keu3nFg6VC8HCDEHRjFYNW7EwsV+O17qmQOOz!EoG_nKYAb#e(o9=HBfF~lqD za(5W2)nhAIr7mdU;+eY{yK9+X1>CZC?0F6zom@^8{0cQ$?{waq@HNkh*#)0XK<=X0 z=;xd&5pHX%Gyr!z{4riP9Y-h#-OD;w*@O1g{=Kt5d12#`JX`v71Sd{&Fn^Ne)3;^z zzDPL+)>5eDC|ADN+)8nsD*(mxypejE36OE|jwtN>iRn$dnFmusB^Seln!w7(k)thq zsJ@Yi!t_%;s)*ErDPI?dm+Zh4bZq@!WL?Zl9B#IWFaEUAc_K~%B1iO198L#V{54Ft z>1vq42SY^fNnMP|XGNN5HunWRcwH)N(Cs99TyEiZG;NGcucvxZ%GoBaKD~-q(Y|&+ z8FiA#h=hF-OLzXA$25!$aG|QZytZ)y5JyJKcdt)eLQ{(UDIWtxeu_&;_AsRi=8Z?w z(Ie5DJUlE#n{JD@d1{~A8HXvfFW&Z|DU4s4I~Z|efqL2wnEsYuYcjR8p$!B`6fjw3 ziNx~sU4aQ8WnzcoizZcV@M(@g*vr^go$y~15TWqygb63qQpi(cMuK9cp zJvX$I735&IxHP8zEyl&Qd@hQZDHD8dKExPI>LadH`g!D4B>(#9gu#CIR==gU+S8q* z!&zhJEWG8VWmSp{H;~z)zm$hz?_oVLS%pTZUdo)IJiCauWh?skt_9$cs#FYtl?)ws z*)Cg8Wt)siDH47#2iiEmj9HdlMR5m4w>Uee1I`_>< zU=tN_U^Mq>&CX5md~rx-$Ns*8Bk#{W|6jfrv9I~AA<-{SF%U8AO*Tb?n{mIplTGFr z#n2UV@d@HwtCi?Sdndv=e+#C>y{mnJ5}5fo7o<{Wu7V0WB{5_h*8x3i`PFaZ-y}-R z^#1p(8h*#hd66@9^0o-?pe>wI_8zjf`?RVr=}x<=G*0=9%R7!Pizk+LcZm_QM%M6hABC#MHB{tinC&{a* z0=5+(e_uLZ-rjGQ1UcXMzCnbcWw;dToh|dW$#^{@Hruvcs+0o#cYUNw+I0rYV`TxxYcmhT{+b*O%8?BpFVHYTK&`Bl7IY2as{#NA>7@wh)oY1iwJu}E>jqDwqrPh zH}%7L({k-La*!DIK}dgnb)+YTirUun}eSI)ij&NYmD zW>)5yB@=yg%D~gqA8>gVATtu*ne)w~?Wb~j!L-Rv_N=o}!Jr-EhfL^O=6AnC!#%cg z-TSnj$f4FTrTx!KK^;DtMC!wikx?b>KCXQ*%ut6e>3YO;O#b?lvBMhur>3B1>Jxl zubolDd&tp^3!ywo_|w)OXaT1MsAvbRnb5;?Drx@nZoQ2GaXvcRnQ=Tm2W4MzOkt==QmLWO7 zvA7hFmBrRZ*EP}&Yc}IdCD4GeOtQBWWnWom|Gr;?BkE`!sbaiXn7KM?Va_u#@8|UZ ztZk1ycUtxJ4IArg%_aQ`d@G{u-s2y7bCwNyPm0HrQ=NC;j+LIkc*yl&4Z>Bi0rbc0 zl@u74ENkVvPq~IJf<=F`d2M}tZXq-K-{_K^e@|WP?Ir$DBLptPQ7mc^{M2`AI?4w7 zLTf$sQ?x_0x?BqVB7evc} z9wxzwiZwDkm;Y&~J)>}(eQ2I$8TZ-XNiEKO{3U8pNV8CSi}k3b+*iBNA%C+=)2exF z>f$1gf7HOKPGL`Y*6gbP=0=|x7s&ko`WO7XfAKB^Eo5Vr$MzA6aGId!2<}LR#LcCdXb&{Ih8UVWjKhV{Fd=x$smGG16`9kG i>9Vg`8+NwO)@|GH;1C+ra-2H!;Ib-us3(RoNNd1G z`EmgB9s)v#;K_#KtzzWi^9<&s@*e&lnVwCp=69N);ldzj0{e4~DzcKn`ZsZWU(4W> zC;G2{$%<{Hg10NC&bJKlShMH&asE7f>X4QB<52NdkW>%Dj64SG=f*6=<{4s5maPf0 z;3c?N3?>W#L9!2cDNgWd5zKX9t!L=}iAKr`{qG+OLTMRbGabnVI3C8Y2oJ322XX(s zbwEPR+K3(^%jgXsA-0{PONKwg*M3t9(L-(Z8r>*QH$jKDiLrtZU4G=W9r%n(HaVe;Kin5N>K{GN|=%#vU z!=y??$W#=Y`&o{Mg!w5lSdetihb%bC)+hZ|DlY;WRv|y}){Kthu6#dKOdD6&DmM12lW>S;6OQUubC!~(5_~|>zaE0dyL6Q7 ztwgE>;~TAvfZZyvWp5#kf*I>er{tkUDLQq|SV6{su)0bZg(xQQ5}4bB@`562klqiv zOhY*B z$mVQ`0%Sg?K;R6D)+lo#5kcBHt%FmKDKYg?;@P7C2)VVR-}C_Mj`#1OtJZ{1GCU%; z=@d4;(uPVT4BXy)yrv=I@0ZORUF3liEu&mZNsj;TA65ReT zKAk#_S@3TTo9cHR8Jl0nNd=)5G4eZDQPf)HK7Z~>O#Js4)g!kGOulW~j&K}A`U>yk zHrreOX(3${FI2Ov?J4*xih>kdVZ*fF^Me1>{Jo86)NW)glD543`~iR0as&Bz$qzP& zA)wojYwLhldWD%V?;da@)Jv-bJ;J@;e-F1R9Q)kt5in?clR9d5uaMwN<6y#S+$059 z(R%q4csSLv_3;QY#6P5JWc1AqA=KmsvY}MK-}88SBt6(MSLJjtOwUx6r0NfrA~v7( ztQ=P$Fl`nIEvsm-fX+(;;#BJ;(GOTr;U&rxKx?uOgW_k4Fu&vi}Lt6ckbKPl(;8x~bS99zz1 z`WA$Yoxil4efHm|^M7^x5{l)t+qPIxbJlDbCtY-_#b3f)aQ2onR2m;ipJ(QjV-~V2 zFe%pQ6CXqfUo^UDw<>?|Zd|@Q$NbkL1cb0!Ty8?OBP&FT`;U0-I=BcEFyJ&~aN+{Z zxQ?16yjOTduYis| z;nO7^x;>MrUHyc_fu7_n9yOi_C3aYM-!sHLBU6tD`gISv4ITH0KkQp*&}NT4w?v@^ zohjR`>fM7#up(kCeBK5T2azCYp-5pYQmm+N`Si0w^ntacw|-3__{TCUHvdo6#HtPn z)GZyn9_;n0mb98^`7VUw^m^`WO=QPv;r;f1Oy*Ol_D9uGR5{z~(`&=Jx{ z*-@tdzBCWszg%0%;}l-C7L#dRjFy91T2ZC1E>Uh;DGKGZ)GWA=&q!;K=dLGbBFXEI zTBX9jxf{Wnff0Y&aJ0A4;kD*w1sGOiSklSfUr3i;YL!6WUU`|%8NH(tjz57A2Otn` ztJ=-?;mu9uw&`e#uV&XHTlKEg>-fM=RhYe=yUoOOuD|Or8s71}PiU9i9fXCrJ3Q}x z^;sSFwIQ1X{YrB%y|FTtn2W;)C){Wqbm&VUa1t*zq9lbH2R=%2hzWiO)6J)o-x?Gn zW_f~uU|#VFZX*Y&hKpWoOpuC9Py1$IB=w*_R?7t{&F~O!Twm@KLf{WuA^HjU_W$-j z4}X%0K`{E|_})}$nKMw@ zNOvN$+(}i%@2204re}gd4TN;~G)S*pbO1Q*qp!s#UM1rV^o@r3&Wfj%_0WGZj3v$v!mbe?WllMOs2=Y6@5YVbRnDsLVP3} zz)z!Le!A|62N_cftKAWXAj#LIHr0#`g#`NJi8aVy;Bc^BRNBHmDOgEy!@t_Xi~SrU z4yVhfipxSEwyo>`(tFQcI8;L^Ov`X95`|bcsaSLx76F`MF(U>X%l^%$9gXt#Y5t;I z6RMTFkPM&KM#O<~Yl5ygE*%6_Q#5a?ifLuPNuE47-=*2AMFMB&2#zrG=MX9jB!S?Q z;@#Wqft*3~D-1fS=(vc>cIgTM88<6>up1MZm@rvzMv+wO8OmyXVbif$F zk@@YUWkQ7XFC0`uI!XBvoHNp=5On&yqxGoEQ!DBv=36nGNSV{Fe?_SFA7CTIz&rkz zx;a@lw$f(WJnGH{Dsbot9v$=7V3Ni|=Q$9^@eo36^Eh|&>qq^F^jPD!a&*)jFvz-H zx?$EfUF08QOd}d3^E42+92GUN$*-It(V)1-CeJPr2gwU*0tzSzmFDVlEhJMi%eL6A zZ>gY|@6Xy;Lz2W9MS$0$`F~72tZ*3frN64aCJ|_2GcZCzK#$S+IViU+G&v{R1aCj= zc%B&TrKUyTU8Li1{yhjAz<=i9vr&7;7ZdSl8+e!f%H(>qPoe@)8D7ydG)#CIbl`Ss z_;j&-FV*1@AsK_GZBCo7!n>hvEovz;6|#3y@<~01IEWYY673sw#NxPSfdD#a1V^a0 zCa}5|-sYxO5ONMLoroXW-5iWQH{LMPd>;8cG@Q`x+-#~2GF}{aok==+lc?pE)ZVWF z#9mv>;Nl(eFtJ&B(;E;RbXXgIABQ+7{4`q)i44tuvj3S055bvxr80f^jF4Ug9|Kog z7&sACV8l=H_3y_~G&^JIB@Tj@8d)tb$ttZn42_S-%O_9}qViimuHo|^5PAy?k$W&? z>FHaklXr~2IY^M&)>*nP@YR-FlMxxp$@ZNtJV7ALg%whxm)Oz3v!KlcFF^qzBz;~5 zvSk}a^|MD}U1^__zSB}MghS8E$*R^@Go678(YJMtE{1%lI#J(<_d2m*LEUYdP}=Mk z4iDEZi|1yAj-Q5dZTYu9C z36}ADVqA?BM03k7xDyz#C*r)W$v4Pa7X?)w8z1&@O*m0a=U%vOSv-LSe3V$LU?vsq zU#V{yuQ@ITp6VUQd$TWX7O2*FIijaO02t+nQg|0%WX8hN*QEiOQq?y~ugFb487zp)8xAkkp{J;SfX5*o-RsiO@H@mZ*FN*iH{qt*u3CS;iVzXdko)icT zeDTd4L+FehxJXQU$eIx6$|{e#0WWH%6b`$!`WvrbSt9|Z%MU(_bS;WY z`>X5Co$WR^AG~8dpT~U!dBwCTo);S8)}}z{sYo>7t-3azzCVuBI79}0QHmXp7YE<3 zp&4!01heZ@U{dP+p_WhZXibP%WVNcF+s2>6w+kU*O8ql; zyCzz72PAY>uP0NE>KN+}1iL0dsXl0sYZXshTI$tGPrWnS=G*_+c;Zw3GwtdIs-Umx z?TYF4pnF&toe{1_%`%N(uKMRz4sNx~>U1;LEFA*tbG>{O3;@i+;}L24}M zxbRaAa-W)kf7idgFJoQAl|~;gHlfs1R%;HBW6$k3Qu5z&JVAaEy!ajaJbvZPqPWdR z%RY2PR=jmlOCkEqKer+vEJH{NRSFdZ%yyRv8wWRZiyPJjmj+8W9v{jMsl||2S}_Ka z-H~!mP3!+@D2$o=g=|f9mjt7`5JaU35p1kb{jXC>!+Djgesj&NtZGC%}~(wD9)riwGdv;#n;lEpEHTh9hOTDuLL;_r9O0{MEf(gX_OF{sv6fDP=s~(*Ws}eZY9PsR@{JstglM28uHyB0*sbTUd`1rMev*XHkoVyQ zB-8~5vGwk%LKOj{$0>RgzY_!k7_9m$vh2vD+O%VHgP~FP*$u5LgY>w-S5@!tz!86g zBF0ed993c2NZZ;gK~f|8M5RJerk!3!fJ0#;&qU+ZSwZpj%zACQ+e0c9w6u0Ewq&zBBKr z<07O#iQ7yhT(&?{>8kj}al-%RJ@ zeez`)SW<73@37r+oS8K|@n-D>^XRkm=rcdmzof4@?`~$a2ASM+8n+|xXlb#cNZ8_O zf;!tnzL=H;?d|I~kf}~d-CVB@`D4M|bBFVI9=>g;8(G`UXrKPZjwoON3g`jClM8EE z?|RPN{L5+GAkoqLxJ4GzvsWj=Yuo%`2~m+h%0pWtWLeGc`|h5CED0k!+hupd#y_o{ zK6AAvZ*u0QXt1J`D628s6FZ$+{q8CS9Zn2XP0=dy3V6}XgL?e{4HH4>(SLcWophm= zcPzUnoUg#M6U)r1b>ldif}>w+rb;HZAc7^MDqdmO@s=2$uKf3(ls%} zflL~?l?xS|_SRtZUK@ojsv-q*j?D{UJnHGkvM+EGPh{#>WyAh7`)&{@O_TSSo$tN< z?9*vEG)&QCF?7f-+#+v>4n4=Ie82gIt@rbrZ22U?LpYU~j}(NqQ1K*SeOaU_^X@vC z#3Aj?(ThBv{+ijpQ{-|P9gIE9v?>GXta4_!=B4SRZ92G$#OL0^2gM?l-tGBh7@L@+ zsXsli2k1!p2}|yOtioCb7=DK5TNp{*)66Ppz)uoIi5TRxoXD$7MV zj0*9EoycKxW1Riuwwmk-PrsqPSXE9y>q*-$v`(*B0B@SQBwh zFMLnMP(x1%+zwPHev|0j^*ZXoYGr=0Ctvs=y_Ph1#P48`MMh__B9*E8t0C?t(3ZXI zz{hnp9Li1SwO4e!xu~Ja^HvoSN|pRk8vPr2`$b7g)QY$Y*2jE$k-dpnE!-jdI+x7H zfzb8C`@y6?(2QSWY$|{}$ZImSl3>|r`LZzuyPsk9IxfrRSaD;*=_H^vkHsW=Fhrp90M1>wOXc=T|_4OiaQNf@iJU9TL3Cj0zXRsHhyQAU=~ zq4=VBOvDHdan`{Zr`u(BVzIOUJsQT4b+>f!Wd=KfT4oh$=MCJD_j^_S8eKJYei;*E zleI|=6jV6g8(_n{miN=MuSk-+7TXV?+>^o7GaCI1LRFGK)!n!$49GxpBXpbbBxks8 z7`Y8i;k;%)KH6oBJxo{i7DP_2O`p60@|d<3m@v1KFx%{EkF_3hwoA`AW?lQV{COHz ziAi^J?9UXy4mJGT)j)JruPO{!bj$c)`L&Ko` zkIV-x6v!pZw8&Ss_4$LPC)d(87ZwBQqKD)>I(_#D6NYp`r_O!mN`;2(`L&PGeZuNV zIZ56dRw<~07FrSgHImL`+J&c39GlD9XFBfsWI;B#FABqEwP5kcclK0S3|G<6GOJ=H zc08Y{yY@2I@0|v@24V8nY;4&Nw`8@`(|<;;cZDOFRYi{)l;zZhNt^bfD)Vgkh+tho z?q%bv+8%R}pbP6(8=y<>{2ePKNrm5@&pqot`?C|uwYbhGC0xtECSRo`dnWV!L#A~+u+d%2m zLAFgd=K!BRMa#vLtj2oN^~Qg+I>vGtFLhg`apnZ2l~h001|8HF`RM;fK*@>R?%C&G z!l#RSUR|Umko<6s{MmjpZrK)sbBm%*XO3O59$vdEr@M#F>0O-g1f;lHhoScYjD(pX z^%J?~%62P1*mCcks)W-sHtah=kqON= z%@RB2RbOtFvJ8Hcm-8~xpd|d6WaMh}CjM9Q;ExDQS(Q;W^G7}=c|O|!R&MC(Xv?)P zI9%n#?MocMyfR;I8TPKi()~PURVqu5UDoA9+tbfl0R}(?VhBd2;@=HKGZq49{n5y? zfrb~C1~USgJC|N|^)huoao`$Ix><$Rx zF2ou3-3xepbFQ59_h#FE7G+E&R`=uF=QIladV|jm)toe^AT)o^R%`dT{s;e_(Y)*R zkWZ_Ng&gWLj;)hRH7dcO>5->#SGFqN_I{@EWRaYTcH%J-l`gkA zNONN;evzP^0TcAs|B5MI{WEa{mUX(zt`nVuU#@^!`hBntM$#i zeJh=xBov}Y()BrMIU@0IWiYI4qq<-SYrM|>TA^oQ9#2y|lOx%{EWZAX6SL`DZvI31 zQ@Lr`7jH@`odIPxX}ymJGxHEvnl{&tZ!{QtWk%fm9+w6M9~i5@G4N;xw`J7f7b6iK z7vA~DJ^w14Dl-Mk*0uZsw`t_6xq8(~7CQQ=VOHM{ujH#ig97wW);`bx?h5xQo7YUcK1f!Vi$zye zitZ2C2uJIsae-E3?AZQVzaUUQ+0K3qI3&vDf6P}7mKqy&(Cb%Jo;#nietWyM1>OHt z@zaT3vg)e^?UUEji`UXrGB{oad<5wz2QDt9D4Tr}rBT3^DQ?&`DNzwmL{PuI@Hz4kE1 z0+-S9nX#Mi&nO{aq_DPu-CNO)J$IM$lnkO;VLtqL66nAz2Y;6&E~Fj zahYhfg2w~GU2y(|nmZ#oQq>J(6ac~T7X%Nmp5VUtu2pP3@F?}T=fxBk5`QTnGF>cG ztJGQv3vGtS_M<9!W}aEoHwb;fT1Y6d(>t+=I3<5wXRmH*@QZqd-dW}I7t^RS#reJJ zUH7uc;vbpha^$4Q+k+8i=!2GKFh!OqWx8n^iR@ynE?${jiYnB0Q30^Kq)EsPG$&$B zRp_BwWH!zW6Qt;HVgmOI!=o6AUKDh(lpH`RfJ0?J~ll7U$ zhe=i@=SdEA{`z4zkz7LvW5DC5!?$V&>^$*bi)Mh?^hc3&gvl2cTd|bP7mdZ&!>$=L zEeF{YlGA?9rlL^wQ{MZHCETE2U3dn3A;wVJlh-Rb^L(FAtN4=%m>2Xkgya zj$VJ-1*SXwUKwb_^z7XCgOUxPe_GzGnfd;%q?KU)wo{+)!K2>3j$%Qm)STZD;P`ee zv8%6M_zAROm34dcy*s67EA5UvEcwUSXqeCGr~l<6RYlAj4_x;@bL6y8DiICueeQD^ zO~f*kW@*t)yr~epml^q=Y_$3RnCS+tW!_yGOzVm?p5H}#;&MXS{Pp4thV(aI4i@y) zM_b7lvZZSL|DT`VXlXSXaMhYUajMquD*vgh%72rQY^C&btN|a!txBp2SHVMD$i}qt zo0%@bg(1X|e|$cG^pLMSFxu|(D~nZ7Q&8m??dY0p=u;NTP#cTy@*dEb`q`ggV9=R& z3ICX-E>i?Y_Segz}4z_xzlvokUd{1^F+9}+mR;l&3u+|>^DLW7fIm=`tVXzjb@@KgyFQ8PZJYq*mM6YiKgd^y6JzP?a;*2V z93CvIg+B23S3Q0i>hWPZQ%2rn!VHZ5vhO56evG>`+-}p!Y(0;pt71s8a^UQE?|^xV z3}p&^6Qh)q?(~X(;aTAwmif%zCRBj(Bm3=gp*xQ~sCrexe|9;b{vd zAKER`VOS|!CIF6?ykAfBfNdl)LBSeHXGx%hg_)aZmNFN;RSTp-w7}BJ9Cup}+kR+3Fi|-c5 z7mP7sk}6MKeJU5}S&x>>ak|4|?c*U=q;J>XaKH0pQN_7Mm+ik+OBDI)rgc|6bh4rR z3(W0bf)_^jqcCn3CK!AZy?gH-9O3wi&F42#I={W(n|W;=)S*Ar z^@>*OXo}xx2#OL=EU@%`zy#hHkc{TMOdfA1U@+NmuZLJ;w1w}*zk>pQ4OKWuO7&6Y9{8y(dmEM3T+}2|($bS#dQ6xQ>#z zG`GS21Xo6qzF&=rb6tA~XTcry(vB>47`RR`775_YezN>R&@quFKH_B2%2haUJZ-*U(cP4$Jq1E~Q5 za?(^Co%{doUCtjk$iPhy$*BBdAwlV7O8pf-n}3kHe$NX8dnoZY7KA*IFvh4nrOIxx z-36@;?ZapWavacmok8qJV@bNetqF)oa7LezL9*oVck_5*5c*1f#}V;kz}RIIL=x~_ zHI$LT%{yL|AD?-VJgLZgTXv6P;aM-2q})_Q0C>2!20eX5&Rgt)T;6;6y4e)FyQPT7 zW&Qlv8u?X46ynh=Vg#3Cf@V6MNBe}N%G(H48>22R?0KKQt)iBNZ(`4q>4i*PK}(axM=22{m?(Ir!nvYfXQvR4pMLO?Nh zPZmh7e>!F6ZztkHNwDApHu|~Q)kTO4qNGw1=^F~7$%n}SJM=RnCMh9YfL&p=o6%Za>gn1RByQ(AFa>6qC(VSI0u>c@BE-khrI*bSe32&%kko_s&06#M$wCR z7moo~M7?Ts91u%Dc3+~xYK(;2CuGMHt!1AJV25tMH}l4-RSTnScVxm`RFp}F`ZX&| z(cnlcFsFxrd|vJ*8DC?R|8@8eAx{#b2{m3#k6%%Ru5x=Dl(bsKq3Mt+}S8_|}R;Kc7OM z%D4K87A~x~?dhQwzhgphqL3jz7-1^Lru*uu7V1oUmx!2-zpbOh`4l!z{QP0B+TNsv z*UqAjPm9p)Q;MU@r6E(ebc}(#$`w)Qw#)~v0Gk?H0|Zf_kH$BBe);9O8~ce8HTN(i zyD13J9nP|2RxzsvcZ4>9Bw_&#(rb7PC!kPNYpOCB;>Y&KflmD>SRjby|IqVHl!9x& zlM=SZje@bkU?ob9AkH8%h^T(6NF=?WJUjDz8yb2yHdiVq_w*l-WImI10M_t zPFDBbtZxNOgZ)ctTv)bwGdg>`Q!OTZEn9svsZ!HzaL#Xzj9<8P#k8#p##USKw7R%M zQwZ|V1|-9h2prhYv$Hu@m?UlbcQJeDmx)>Zb6eDz>Pgwo7HQ`fEBo{P&vlpYePj?g zEaMM9V&JlBz+Y4B3*WpnD#a7Rxg}c0|J>68N0VRzL!qgBf6B0#m??tX1@fQb7 zmm+3{f`dG6Ns(Gy3N{xn0=+d62rRf_TO)}TcpqUo)D}C&Ea1M2IPQ^KYmNi@1ix#` zH4!EE)GEEe-41x~e`fa_UHa^|_}!lv=ZDR45OJUVOrE|3#k;GF1Ge%m_#GE6_s8}zC6z#EKUym>PMJ?MSsI3)2*N1 zDuNlI!6KoTh5pXNvN?U&M0zv=Ts$5Uz$k2@9)pP(aBuqQ{YY>twanQ*M^&8J@#AyN zNfmfDxG22U5gFWhVUq2wQBFy0$}-_ z_|ue^|NZ|?8&u}bb2Mo-L7(>rE%1zFy**^-AsUzo0E*DVCUt3JdNEbJ&3bO%g!Xgo zJH=G7fzf_o@ItY6nLtCC`%1||Z!-^L{7V-y$|MNgfPIfzNNo~wJRQ74fqYuI^?6nY zQ_futek5S7ocF+~gT+UYodkC8p?~eNw6rKa0mlRBpz5e0qP-6u1HvGsyi1bbvv*v7 zn04A|CrCC1@&Y2TyUxzYHhFY<)yB zRUC+q8{NZ%FjmzxY!rpibgKJ~h`EIl*vj2qD{T5A+}BbMiW-ny6YY+MMFG#$$Z6ee%+0DcLm3wBVlDJvv)LMQ`QkZTrEK*T z>h*!x4=BOFCKj`Ur;6Hx3$N>fW?GP3#(T<$?0#1XEd%%~cwbSoSIvuMyjc2z{9vq} zKdK|V^GKMSWU6#V(+c!6+oSS(im^6s^H<^{?7_1o5JuvKhR5iVPV-u@FZbL_L8>{y zs2$fR7=m!%Z0ipEorcw);nOJ~m=WMpxr+Q}sY9nqaOrOWzhKBfrDWNguo-h=I*Cui z$wM1LM*e@c0ZaWN zXvZB;Tltc7TPwJ}-qcvLY7EgmtTgPav}#|11XO+v=W7KpQgW@IbJ?sFPFykZH7?(L z{IxvC!D7>xNCEKUUaUu@o zxGjj0B+Jnz_t)X+l3^Y7*&eR3r2b6Z_2+5jF4n;VT^jw)^wUA5dj#7R%skfhN!R=t z8Re`olt$pi2n@`~WJ;=D*Eh}0rWgZ{zD-p!$FAvJnU`NSrk^kVL!S)!pRmyAd{zDL zpqkSDg&b(5y~eC8oK+(|O*JW?H{I1TWxkc;myvt&-<^jxwMnkW;z z{wv%aZ$Z_54O@D}QZPb&cYRQ_di>RYIx0kj?y%Q+jOO{DZbi#!*WhC4P*&=%Zlcm2 zw+0`(w67cST|EBL;SyX3Z&HH~6Dnc+DC>W#Vb*Zft4?rr4%QfQCFZ>wCurVfuL9$E5&$#~ z4o#ZQ@Mx~!Wx1P|=yWS$?Nf5V_Og1U=f)*l+g+4#rg?}XuhMyUI5-t;C5vC)qAkm3 zH>In1S#ye~C9|(Xm_nO*!%^E-Q6~$v6KWzA?tyPbaLWEfzYFq*$NqYd5j!>x0Mr+3 zQbx~*W4yh3j!4*b-Dw#Gn^**(Z;Ku21jqZ;tI&KdyW&vda!RoT#&i_(7($)F;nlxv z(y*9+o%=)RZlQ&47lW}4pH)Pef<%uvKAAVl9(ZQ_4e9$g*==X|yRA-`=sQNVv3DzX z10tjoV3(iT~(Fzt@O#jcXtjvLqpt)nH^@Qn>v0uvw+n-LIM5SW_GsTHvU3C zFJfwWU+9V6xjIUnj15iH3zb zvr>+{UN@_$Y2)qT7U)|q?WqwK8q(+x9eKl;oz)kuM+e+dS%XaT25DRXyKiEO@C zFFi=ENWcs%uTFb&-tRkqQQtsr7qy63bmkdj2PQR?q$B$l_e7O+XCtFk>(pp5WL@>( zV(g1Lfk^btNfAwP(}#h3YA2&JIHM#Y6srx(Bq_I~Ba8uLnH`-VzezRGiW-j=M~9&I zzZ29OxeKz?D=ErWZK;Rn%Lq5Oy@DFDxax-l-&0X?=q3$c8sBcInuiEQ!m0v_EME)} z`3#b}#Pnkfod9apI~x#>#?!hkO+9M88;g3r*AnzbkuK#GOnhtuEhSZ;=DJ(0-zAja ztD5@$h0XG1DW48e$MbaZyj;}&PS-BW_SP*wShzR+b6Yz5d{-;RxOGN%(;uF!m)+$!^2b4&3Y*~*TT4gQO1WR6jn(fLJy8wfRGtsC@%G(bZI|#ap^da zP|_YTB^Unm{VWnR^qMJW^skW-GS7ZdhuCqzBt`V%Tyc97JMcCVz{&Z_Hq$D+s@ptY zSFMs)rrN{PE_&W!4e`-QhLBY1%w9=e=oWLjfdRl=eahxE`3Z~6<$DrL72SG6d``V8%n}h#8?M9ubZhi zdy1n>q4M&BccUw4u+9|8e|FK7lJVZQqHi&CbH=Kr3qz`&%~X7EJru-{Ar4tN^CHzB z9vRG^dC&E2#Pi?ejLky;_fz%-@KlTZbJ3%XpQ~Zi{tl?w11#$L=<;Yo*FBpPUWe3l z|9=>G+nAlpeg+DwQ~dRTVOJ z+lk)PPOE$DYpCuIzExMIj@MPnU!=6H9rx(fRTWaXLOisl>~CVNG2{Gl^lBr^IxO?v0dvd!L6Ig3$QKuirVH#8oekCO;mM4sEHJs%K08WQjC09vqk>h%dzAsJA zHQDC{DeyXc{&lV+ff|bib1V}~tDx1!)oX_%C^>D2uFoTvU-{^a)_e9UYfmfXgnsJy z(^&rd6|R(4KQ9?WR)BS6+fL(Zd&D;y84*t=pQ(g#u}&?pvHlAamTcg$DZU8!Od>UU zKkf+)|F~bkwuh=Q^vg^pQ4=?_Bo^4;xd^lnMi1x8IJT-?jOR*q%^h@tSkw3EKfGqm%GhDH!JkXBwLrq7{GM(erhz3Q1epY>+|AYz(ISq{0;RfGV0<9rpuAO@!B_Gox3U+!KJg* z{i8Pa+gruzj$YMRL4``CWbgar3W5BtTawjqMp^T?9T!JS#Uj4S>NsGG{E=9wFK5!7 zpeTH=;{8Joi&5zqk~QHOvwKwL7Gl9xp*EUAw8@q5m*ML7sHG-ESdods3DyEb6%_7> zFfiBgNkzdM54N^PpkUU;U|b#Cy)799l!PdB8yPLJ_o*l+p~nmaHGB>{{evG#tpjKGC?sU)u79_Mm&=OOz8{^qDOClv)f@oV8y9dR(R{Vj4-t$`|@ zLi=?!(--mXv2|B_(I|nSFEPEg3QxT_=N&jG|A@NNMz3%AdA+9Nv9ZW2q5c{ zNn;Nj?4gkCAEnX6)5&=Bt_~XXjwE!iUF$#TO+4(x{A#7>3|i}AI%UdSQR;M{tQ zMAN1fFfxFO?ne*UIA(1+>bH9!aJ^9?CWd>Ex~{3UC_Zpw`1P5il8~{JZAh4zH<<&? zT;mIElAKDPjsAmufXSDrPSjq7>fJnIDRf1Ui|rEI!DGQ|(>opws45M?IEU84 zy~Y*FVeRb#_~(-{MVxJ40Uu{w!}RLr8gnmQ@-z=|MNN$& z8W+?57AXyv`>rDTiGY4T5_QWx7)EWlALW@;OQ&%Y-D^j+iUy#5WnW2eo$m=>HD%X{ zhyL=txNKdHshcbMpC;A8QJi2M!K95&SAcE6p08WSV`B-om=j-IF660?ZbqC`=x)N^ zo*GFlcfa#ty{Aoxj_?n%#Zcuo4W}W$oPFB&Ata*cUQU1(4SD>lQXQT@WnS{_XUY(n zCHT5%>WJj^a5)>2TC7e@Bwm($6Oc`q#SIM{r=3^6G~qPk-B_KGt;gCYf(cr^qplvS*!iA`ln&KWrO2JB$ZiXj*_Rj*dxjfqy8(8 zgZy&-tz7UNrrm55%^d!6>;u$;Y=6zqUltpitV_ezCSa0?Q{(cIn2p_E*KlEwO&v^8 zDQ(0%-o)Y2JttBXby?$#NGnmUoGrdvaGx8@ir(GYupXIyDP{M|{((mweWrtw2S$TO z+yxj%kmSl-B9l_juIW{!79O6GL9_p*?pw)&3^smkqt4B$Z(>ku+TEaX>yBL?H?R`z zmk$g88qREjvL3t>+AolvLQ|o4KlnS1OZWUK(Kp{?bb9=ayM?a4E@1xyKW~Wf*%rw#mLJPRKVPsD=2Bg^ zo4)^%wi?N((Db1snuG4DkWwCev<RGU6Y z|7f`QH%fl9jN|XP3vvTGL~!|>Jz!(oENK!n-1 z3T3$PV?|W-A8p7T(ykZQ1iMGzTiq9$+4$jkbz+iX*&Qq-ot~uC?VMg;#qcFx`aIdH zOF{Ccz*3r(KNYp}J7m(^s8%ia_BewU83d*Ym237CGXMT~7Tb87h%|5?x6>ULotd>K zG0|7gG`)&Qd_^VTkTK}fF|DBKsaQFVkI%Y7t9nrDhiUB!n}u*?fi$95S#23Nzm z3D~4Wv03hswC9v5-+fRa4>PnWDr!dGkVjdmdxeh`e8MDA>JYCl**8T;RA}0^YJ;~% zONAPA-#`v=6d#eH+n&ZYrt2j?$pPUGZe8W>tGz%3_ck}Lbqx*B%WXSiwRAw~RrWx? zG+ZMB;IP+ABe|-0uRY;c1(K*(%8cnCN-msRKIN7oG1#t=@`3ITv6F- z48EjabuwFs=yV$Rb-cwDLDeZ)46D@FtS}fo@bCf+!3fl5vC%P@uGHS9C1IIUz~W0h z#U+O`vzg5o#oYdIM{`qY!kj?7tK9HZ=5XbpHCaGKh+Sws0PRrtl+@O~_6p4J@dBJz zIP1*7(vQv4S^7nt;jivD$!rg>9V9)ZL&cNxB4Ss{0Z%?~k`Rv|pv{ zY{=Po?#K2+k(9kOC6<_^2td6FH{?koU&=|A_%~|!1RGv zII#CJBt{T>ab#P=Ec(PHTX(bLj_G&O)zx=6kwjSwKxefcr07Q2dAs&UsAP|S8MZu29ctksRo=R>D!^skJA9lbozL+vUqDlf^70o)=)%k}CKYED&FmW$+3a!O8*2-UN zF5)YQs!R}7RbUEjIjCx&RXkuqb8jt+Nlegeahg~PIk%C$x9CPCrb7QH{7DYJ=5pJa zQb)ifF=S#0L`XPU1}rBym2A_!SX#T2|Bs}rj*Ft}!n1@dy?}&BEFmGC(yX*WN_R_# zbg#68gn)u{cStBLjWj4N-5}ll&A#8C@SC}NkwZfgPmq<_&g)Z-#(+8myNcSNihfLVb2diC!(v9#@`Ic6xzB_e)p!@bM`N_rE z{CVN$@z|D{%{>F^(Q`5_x#buO>*JuxDnkHF$zgd)WB*kiMqkB2$VZU-`tY)%Ml-TmfC<{up5Yj>V=9xp2a|Tru#qh?BQ_=f0|E%yboy*Ghpe( z6tojR>PV8L5FnmWhePR;L(HrXfmDn%okF8yGW(YjN~zaq^uRqR{bvqrlP9CU&=vL% zvOX<%Q2Bq2OeM+Ct+b-S_-kHElJx3KylKL!t-@o$?dUt%jdhE3Id?XKZ|#mto>tLP zbQ#t@Q3v!rMucXN%EhY*tj!HS1G8O1@-6?6D3sOso(u3{IFB2f7Kg^{GyBk9jKPJ# zGTijroI{QD#BI#GDO#l3HZ_H=npK+3KLLsixy{w|YW-|G@c%!|i_M^J6 zr=JhqNvko2uG2gYWE7zfOI`tT(V;uH^ZF88=m_BfYRQK3dsKS9)2PI8oWXileSc)M zu^D&zo3FhM*Y+VOJszm~h3n&_J7D6PGwQ)$b?PNIHXVtBzM%(nw4P}o2&h!u|EQAj zMXbF1Kvh|rV%zrYmZ~{yO!0K`-M9iNBYA=N3C@I5~=84Vma_(OmK_}TB~d$2T! zD`4G^OOF$h6Xv{u7QGE)uQg3`x7wsdO1e`Ct4;$Yw2dm>x0b1MJMN7cT&3!1BDAR=fF)Y4hKvQ^+JXH!DmL^1fvp5;XdwnCX z+)8q@@)axWW*@a5*m%}d=1`X!V~E06=MOc7f~C9~2ve|AKw>qZ1MHfAj00ynhBGa# zl(f!>ZvKb;S(A-# z@adc{3dgI)_l=i~L5HH-=&MeQskTFFYuRScU^OO-4v_VP#UKUqksaKit$+1~1neD^ z8nfyd^P**1Vz3XYb$B9fKn>PIg|}JbC{c<~p#3{C_ux4x1|sPp;_fVwvt+JH{dDA3 zv7^U03%;xKkx|svBz*El{B9R@Yj2Eilw^sRvnNIM{j(Q;&)DO+Ni~Fy_D=;qfJ@>K zq7;{EtcqUJgK;c_=b`tvk}Y2Fi+`^ga{yD3V;*gmO0WX}X^3aU2A5I$={K`eJAOi_ zHs3KXo%WUJ`0yXzU?5BI=D(QtRD{wB9qpH5dJx9!GMANI7q{}zy1MaY!z_4tEQ{|$ z9&-uL%wHARf#wjD6$BxI#w?&_OMRL-_<}UnyFKJiyBPmf3L{{>Lto5hc zw<{$bfZNV~Ol2`Ie&jl#u!13BNHT~C!}_~7(lfyej0;$GwVPT7#l}hYPkJ+>LHXdw z6}y*tvKX*WHXTbDjFQjw-{*jtr%_=l^k(#jSP2FtEtG@Si~?5?I%0H?pWHPtrEezF zV@PGWyf^Ow@8E;`ktm}?$NQ`$-QhCq(HI3qpz+)`ys-rFNJShJC z{fP41IZ}V7ukH8_{{MC3CNtC-#U$$mgcw(PMPwCjo4i?@K0la|p_8F|wX1)6w+}29 zw+-!5{JRelWjEURUVkw4As0ytl3J7~?q!bI&F}Y>$QI2TXZ5^2rdX+as)s|zkgr(g zGrQRGkpJY%%9w}P+j!S*48T`#q-eYMqav=R{M)Z25U`rOh{dHOLrVgNJ~orD67k;1 zcOXBV3`G0Ilq$LgfW#d{bNsKB!5;qh7wNv@_aL(C0_6y0yIb&1M`-TPf2otn<9S^! z`B!iW3+OW~tQMxA@|b0f*^mS)#msgu^OT7^PjC@3Om=7Ry&43p$zaySRKfE zwP2A{5i$#!xz}DqQp;~Tb}YUzB&}t=LiaCUVFl^JGPl7DOPA~c1F{AT)y-)T5kf=; zuRVf`zvJ-!q1FF%Ng`b1Ofviw=!I|?uwuo6avuyrs4grD4rvPmXDZb(d8X%{M!P(h zIc8=WCpVy-sRZCLfYd9k6uY{`-Ay~tv*(_0@W$$YqxL3FgVdb682QD2j=q8jc$k%* zRFpJ|@jy$b#i6$GL>xpq1fX&S4Vh%@s+f%XPs5*bH6*7Vs;VbK0sRT?s3+Ma>_)TS z>rccF{-KGDz7g3KtXC!~$U3*wji%U!b!4F_-jv4fSegIBlBy(^xHf#7t4G_QSrdnitp`1;l6R#&azY(t+L|DHJZ-+93&gn>qLXg=s|( zaLJvgc(KI+IQ6gzlRJl&q=c(vgJ8qO5lB$EEglN8$pkjm&l0Ss#zxBT>{EGKI4Z7X~9hv8Qy zLFf+@3Ar$Ugz{PpP?~#!1n!E!IKj2e zUVDae(mYFYih$Opg3{)5$)3PY6wPBmeQ?N(Iqb$!9rN<&dU*f*q06l!%KtJb(=}jL zl7Ghd_R`zXW%t^6f&ZtZO@|Fneb7uwgrQXle#v}ar^=J{P}$=kGwFedKmF!C>;Oxo z;&se}0G{=x2B}_@wG<0D@Ko8s=195Zwr(8ri~C6OgaSeS6pjo4i=u5If~9exvxfw7 zq_O~{r zDEx0&yJPwx__LtB#7>`aVGPT3NjNJ(>yTeGK1JQBBGjGwzD)YNS~%3MLsv*r^;Bv+ z2IRx?5`+|%(%xLDfDsD4&gjO(B;qAxRRBa71x_WX85APFqz|eNOKgB9%fW9w3~VvT zL@(skc-~U)5@4Be4<`Q9ZWZFzg*pDY9{Pau_P2S~9E9rvXEMo3AISwqeR~GG>16mA zt!tbh$o-lp`_dH!0djLFLtxV?<;`x?Giz{T2;Sukn|u$UU6aR}%^ANLg9~?U+7F{_)J;LRY|kD1aD@Yc_dls9!es~TWN`gL?!hpVixR}TUMRHDG=Xxvw*W6b(MHG` zuV+}MGj|%HI8Xq1kzjv^lAa`WtajES16h zp_dkfhq~L{Z)Y**YsO>OZibR$IRF?pxzznJx3>QQHO|}#fovUKGH0(r#S~u6b)x+u z8UW9m+;#ul3fjxX?d`5iBNxy`p@18R)`iQUxyLw_p*B;4(0i zBh0!D4PaF5rUsiq07&O0@a}IFm^Wj?jLnM5zk&d8Bv{1wwzX-uLx6WJrZL3vj-b<( zQ!4R+)=cGz5EyJ)8QkywcoOLqhz7(r?=@+*phiLngX&vl^^$T1yT1nK-39YkoYr0( zhie)gy-5|{mF&yzFitdJw2ISoZ&FDbvvhAr7s1TZJK>Wt0aBS5pGChuo zY67}q@4~h11G(x^N@|hbwjcmmqurwP{raF8Ou4>0a3GLbGAmuvti_=#R{5gNynQKM z;m)QZ{(8Yp?NxFy$P$#BH^2w)xI9G5GuD3x8kGw{c1)NCrCng~UV$`D?Mi~8=;zIy zZ5JvW$S{HaY37_{X2aDY%kzzP#)!j z^Js9zheB?%G+$}5OT3k7TYM%T(|jE!Hn^V*avt?YtnG|58MR1)P9aV0!G!5MEDdyh zZG^4=@+$Rtex0b+O_*p&tSsovm=_Hk(~j=2NSbEy4}4#7GbUg(9LZ?ie!#WP;_8nL zvM7U#HDH9O${}}+`*e_%!x>Jo*Qh#RL+E6700Qq{lNn$n?7fdnEch z(gj<6=a@t%27U%uNT8gh1XK#6fEo?$SFd5e`eMuKobK&SejQsL!^I9OPY z-vo;ww6r<5tpX=$>n8rzj|8nvYc{`&7jh>`ew?BA>=GDV0n^o}Ea_#;u7qFAKd|l? zc_pa_dVe0e%l5VgIRN*1gbs*j@T!gMVy@YdYa|8Wjus23Pzr{~4rwld$ec{^`=IE| zJ}9x%9>tg(cW!cbfOZj^20*q?H7(^I{{+t~!c;%d&6yxqQlwJl*{z8t#pqJVi`kxs zB48UKn-!iUm%S!{%+@eLDV&5DXY8|JX}!YgUAg5;*IgBT(I9BY0)8@R2%&={b1(#b3)mb0s90(wLqM~(W~Lt@ zzU2Iv4CI&1JTr+L)M)S-f`INFOM)}zDkB6GDJhMm8_>H!0A5uWnH=f@Lun0EnsN z@gYF1RR3rn|G$whtG#YPm(&(43_B@;QUkWQ1HD?~>!2eIKJ?jAnJ1h8K(s(sYi(+c zP?fXl>Bp%k?SDDO#7$OreIt%)0kVCDs%8SfYJtsLl$ty$NuGcI6!lcm3@V9`c@y=j zCaJj)-0D~YNS#nn38;t5W;gah5N*QOOSm_A&?flyk_=`EY8|U~XVABxAByzVt~0Vf zy1fRI1#3MH+ThMGBUK=f#io=)TA6j!R3(s2;8jpj0<*%*U||x7Wd-{z2MpX@>&8K` z(w_v~Y%m`T^d_y@+WS0e@c?hB{{Z;hB1ONVQC;Ga54i9rlhs|3sa@bkX)Bl<^gbI>#%(#|1!qMbi-YE1-4r?6@E#!y-llVxyl9 zgQp0f^&KmPFY#{i%(S%gCf76FkqSvY6_5*>WB5C_C% zpq8VMF}Pz3dbOeu45TCI`edRA;TqVD^lU8}9-w}GK(EpelrJFG2JkAI+0_F7CuMg= zAPI7sK6eEGHFGau>5SI^9b6^{n77G9&GbaOrM&L*7A1HtHYQ-h3UGr92U8CRNzT}x zg+ZAZbM}tWuyrW|Po(kn3{S_z(|KH6B5_Oa$j8FZeQvyvauqE^h0NaNOSynvM zgkoU;a+Tdkxd>c=A%I#9;vF7pWyQRlYw0u9F(nTG1X>dM<{S!C3u>PQRS0ND--`Tw z7BguF{=G4Um(7O`zQ&tWk@pomuf9N(&VReVzO%*$?A$4|j znO)eHXR+ng-?8_>4Ef3&yO^p*<%U#$a%^>&JcbJUxg>TNfXtu35hWxTSTe>h4I!HZ(%NORu5y!3rcF$C-M5VHc(@?20S8p5C^KhoET7i?jPv2XnqD8 zS?@=(Yg)puN}g)FYmkbJ3VLb5*9e>_5oypreM8a<-4=9HS93`_Tg|8*-vQ;sxNjmQMF~EqZ8$zg;cRF!kH0KkP~Q9X-XUyP`haKKGAks%(&~i z@CQXJgL6k93oYK@VuY-q*!zIM|D7sk(MAfrICuk`{0L;qWLodqo2gR2pbZWbQoaMB z_nZ#^#-E@dGgcf_ePi~maS~AbJw_s>`HofXO>qYltUiM{LyHBaXZz%eXw<+%Vnkiy zWeN;2Mo2sJYsS~2t6{8%z1K9H@O0P1DX3+ zLNovLQjR~0P%Z`}A@V9#W77e#)3)n%-;Bu7!qJyo-B5GkN?N z1K4V{Op-u45h%Q0l8!tqa=8=wv3P`;SLTU#dTUEm2)LW?KW-B}v!@qf&i#*<^|+Lu z#ISnrV8+_P+O_$7beb|cavf_!Fp71RXTN@9X|c0JlmzqceDHd>EjUT1?O-%I@j96; zD)s(OxUG^XC(!KL1GCj@qh@?V_%8BuAeg@s7N!OsWVs}=OZ9$Q+BqKX^EIH5`c4Rv zMFtaU0Q0S$UVj`k+=_2DbvIKOE8{u5%e?r)Tkhj(Cpe6Col4NSZ)5IWJt?L+y}@s| z$jNwl@=PIU%Wf1GC~7rKYC)3%s&Hw`-mhsk>S8oI-UWOlle&7F+AL(Jb6^y&|GCG< zUy$3ZDZrix%u!fAOPA!%`N)`XW0p+8(XHggjfhPL~DhC zR}&KnqIfC!V8Wb4q6S*LTpGq|kb{9Mw}VswKqPs^8aZM)=s{UJ-u_o2@y~^VmeAwqP?k~upK_QG)AkY6Css9)I>-Hh~LjML$Y^mOV=^3QkAPiCy7f)FRv{PK) zJ(|vSTN=v`oJUh7*Rkv_zW3Fk6`ctY1Y;l#D-zvzi)Krl?4j_}FchB~NZ08o)tfdD zMB)4m|CI}^;1j!c`J)BVudO=Qw1)j+P=L`VEf+1&qa$p_J1T4ln>HjY7Th)W-bF&g ziAGv$x{^=dv1#wXrr+WkJ~H6vp4&GZ^v(9?!KbQgIbA21`fu?Q1bkB^F5M5#+R7I@ zM}yja<%DJ5+skzPFgEYFF#dC~uHL$Tp?hcZduDTo(rW8+damz{r$YCWg;F-SZf{DR zA#0(MQf1Dk9aqoAUuIZ2p9YmP#72+Bl_UJ+$0U0B{n2GxJ@UDJpjbco*;9udNs)co zSI>bL=3u{G%B8l2cPlSJs_p3S+bgah>Bc+z-Zu%S&9>hw^3M&@`}U*{jT^R16(k!E z-u`HLy3fM6_y^vgxT6t2LHBv7_p3)VQ<3x*dwD-&$HMMn7?l8r_SME|bG>sXL~ZX?MbB>1(?P|nrh z+Z^Z7zP=$SD=#YFEx+H_`Q12AJ}(5A!b}jeWDf*#t~-M^t+{wlh3$1KT+?Nf+r#|# z8w~F*V@+E3zhX4H;s(e+lsfVGeBv0VJM(eRi@{rrNfN|F3M_T6-MoVoGWMfGziX{s z;jOUpRysY;@9TN_>3UN(pf5mIKVsh~GWprvLbU3I(CL}#wFjgf>c!B;Y8OEF}$9>T0~rk9)Hy7Uz+CfU)t}zOG{IYH1Eh=z#gKuy!ZdK7m#aP zFuDM#rHyL1S^kqj3oLdm9Nlji*$b{+y!@eAq_K3x9W3E=F>>&2v|LM9`?JM`#(q=r z+*WV;y~3``woCJoByCJF{fkXXy_(N|e<7}7acE^Gv&T|{ah+OT4uHom{vA@wbWtNrW;BI;|O%WJGm!7S8(q_ zs|~Y?bDKGuGcZ^wT7Nz)q@t;^6ttO-s|j}8*s9zA**A!fRZ;#?Wo6|1S+`!@n%B?Y z3Qi3acOKPNO@M$}gG5^yV5Noc)aRn^#l+iLKvE1 zv7?1kgA%sz{cga8C}Cpqk7;lAvJ9y?Kq>RASviF{o0hxOzwoq=K3GI{SCwq`74u!n zi}qIQt{1~ZyEYF1jW*CUcWMuduCgia}XJ79O+}6-py1vR@wG^!}Dh=3dAc0 z^F`J*CPj+!xEeVNjmiFD{+N*8yY>bbXc96-gZYM;{e z4VzAIT)r3%6eCfp89&FP+YjuYX=fNtj`5ZX9|W&7dgRlG8nJh%cfmnx*LY^4ZTee< zh$KvHF!_YdE6*1sKj8y~fvDnz36KVuX4{Mt?uLFEPs)&G4=oJLW!Qi2y6bD9b~_U2 zv3&j3$H#BneNAms`O32MVaHRb-Vqv$=z|e#c)kPAWsKs&t;+{8%0`?$Nm`pYOK;d$ ze=_ywYQMo4X;zT^w?`+3hs3dn{zg|mFCXX{JQ_4+wF9Z96CR;&V#GF_rp7jpxzepN zaB$E6J(Elgh|*ykjZ8@P(B$p<`RbN@uAzBaGBonU)3otdjJxG*l z1@%3;s_pt{vn5uX%>yuh7T-N&4J=arx1y+-3SR@LwQ2=sDA$R$qFxodzu@$p<-c(3 z^O#1+ZvDFD-zcl!W$m+_PUc^m04xWfgHS`3`>q7^u8zJNP7dpx`3KW@yU|H3nbH`> z&ifMBna=v+X2`hi77h1)Y7hfTsD~{G!oWvHn+Ig?4}%(5Gv~T!KLI1+NIuiHW@lg)!Is+92MrtJ)9idNcLQip~8+n4N{kiDJU)t|9V=LleC^ zf1XF)SbSHX7D;-r->*{9UB7Hf(3?fvq<@FPuIx?-W%1=IQ&aAo|n(GYI6L-w1Enlizv5l6gg!V<#BLFyY z_klkgp|9O)87ao6#kPs;4F z=CEV8l#q-Pn$^$sPDQ$xZ-tmC6AfYZyjNQpbO_+5M2jMn2#%da*!qq90rA)KoDLof ziln3Y(-D$Yv6qT6lawjq4<^$dz7GF&?d&kuoN3^(x2#G$irs+*^m{U867Gpt;zHsn zid7yfzII^=FMu=c_n4zAzai?+3Ep9zdO56WLw{A7eU+G?mh@S`^w{4uHbOh41+IIj zKtTplf}^&cZK&Wc&3Hl}Vu!WzNxA>ljZVGCOUMVT+{^(PS7GY09|b;9-qf{g*=D3# z^fVf2qv&`Y@xr1PY4X)MMz@yk|K_o_^xD6m6=wMHRWh&fyi!71byOr7x&_tS{z=!= zm6p=yH<(L2S81=jno=58eM#Ri@v~;rP0XKruY-MBi{DT~ap~hodu1oL|7m%Jc>&GB z@AToL+mDh53bRfR?s;wp1Ma(J&91(31q8vwxMSX;iO|G$IuW!U35gR1wte=0bgTG> z!Y9~doDIS0Mx1LcR3I)+XgMeQ?-nNG8xAdcDHBQ@`lR5*ltS6U9PjpYDJd~ZR7=2<$m<5hEJ6WXBDxJ2kEwce+Vom8LefW^`!2Qm7-l+d&<6Q*bw^4 zJCr+N=rwaPg`fX}>i!?Yt(OLP6L>2ZSLiXR8>&e>JC`|w(|>o$Es>Og7_O3P$H+pZ zIz>vUxUl!H^Ow0xCF;iC5swOl=5-yg*;}dU?hM_+qlfe_(9A0U} zlvR1IHCu#^7F& zdJ)prypGG84?Wkby&ay3$>I&=z5~yH#?;GjR+eC>BT%Lw)#vC`)wlB25 z;H3X>SWH5W{%oD`L}_Z=)kp5lk~T_#=x@5*F49Ma#xBe73i8u&zcef43MvN=qnlA< z1Md+A=@~{99MKCgY1;1W`r*Kf!HU7qT6DvM(&xYFt8S9%L;aGUOIuw`EtxYPhA+$45eiTo=uFl4Ebnv6X&9RC-5ZPi z2qa@~Xy0|Q?S>fTQ9f9<#bfQL>_tyTq=lEi7^tQ=6B3JccSOhTcy}scgK4>G26hR{C?Vv-tBK*%G1jF4B;@y9z|B*yR*;&p8IBMMJCyG^IewrOA{3PhoK z(|Xe6aQ+FiQkb*JU(b!^RDXQ#?KqBFH!Jp0#|z&oXJEwaHPLwUrVLqt7Si z3a_1~-F170e9x|)7?5Xgj16Ne-+@oS*vSva|J3?;pX&~6%U~$vL$j*B-17v|ty(;M zx-Wp1D+T!$en(q3X&~zb58eYR3G|!r6i*RZXk_3fJ9NQbqALo89~mz6ZPpcay4msk z<5??qAukgRIf!{e7_8P7rD5 zq^)E7we)}Tks2+>6Id!B#XvL>@Ossd4d1BPL{X&}TD5*_HOv#-dj7>KxRr5XEEcBL z^8{Ob4M%%-!wY?$7A2Z|qo`9Ak-411RZYaqqpBdxYltn=_!$qAJd)(B+I!e;u`13=GYcG zY5p*Ay0DBN-RlJeE33+Vd4+2;2I~a>z5SsMLN_0?7cG;w`Om_9Ho-fPZ{f>^^GPSb zXNq-26g+pMWilMW0~H4Ek8aPlx1k1f;`nV)lCEyoP-yE2hUjT}^?evZO}w zkLf%qO>B`@$DxW0!;LuY381=2*^=}QlO46jwyZ5f`%#!TI$>|Zk5H4i@IA$nC`nUZ zh#vq^D>z{G#ZqHhyWHP~pnN%E`sQ-l)VHO0ETJQKXt~**t{A<-FAoE?`y0nr$?0zT zN$#@F(6f}WSJVZ{X=3wdv=mZ&cKQs`5uUDzM84EHv-uCT zzSVbUcv8Q5OgorGsF48I&=-d*GMZ|AV1hL7{kOp7K$r3C`p6_xsBEZ@SVJGQ8=dz# zE3>c*`OJ}6Jkl`zV3O(z7K-_+yhtXJ`-h zNvLa!2&YqTfvScs#$oY3_n?8deJuL^zLNDru_iA_WqB8hHGQF z8){dxmVI9~d**SRKOwFB>#P{A5sH4w3vSZo9esL_r*lQHg(y*4C3iOqhP3b9;C_Vd zJyZxX$9JF8WvBECDb%wyoMP6GE``b7)iHd?s40vEgF7zmVzwPqaFs9Fq|k`bc_W~> zW>LkAD7IGU2uQnMf-QYtK-C21cEt)|4W1 z0wYN|97ymO2H*YI9v)eUS0U#)E^gG_dyha0E&7U-{ktEzvHXZ7;|LcLlzZcixT2VL z`8RqOSW5#h7sk(&fAdkeGuTp$?`%)UF4XgNG}P=BV!_8)D{?wD3HTr=5r9$=n%Lu! zPv!mE&C0N#G%)dUFF2hyjhXGg2gVQ$tdo?E3Nh*B1Aj&qMCwxby>Y8 zb5-}b=t<2h$I>6~9Ka5;$jQ0I4^?Nl0B1B)DOY||@?k8SaU9AtM|4O_o8tA^c6^q& zPOQbs2#6DXT)1>RKRaQue?8LhZ|?po|15wo?D5eg7C-%Y*xym?y}R`c%M6|SdaH_I zZ^Bp&tunic`tvp03Y)fytoyvBe_cj{gXwp(&%V9AU%Irr_@iJQs$(#+CCcY9Y|7hd zCbhDZiZUFzCZnTYTm5(f><5|F{8FhX-R~Z!c1|#hN!%sRR>$~Vb-e#TQ24dJ`w0Aa z-JNL51=e(EOaO6^OeO79x11@QetTNiAQcv!;V~^jyKvZBIy8pdg z138p#=o40-pqWnwHENjn0pWs;R>UJaWT2okAY?qlKdKRI5@XSyn$6_=Gg1 zW-2ybTb4H6J0E0}2qg_2Sx&5LuPF7BT*V+egpk_{@%zevA93iNbf5R*432W5QGh6F z8?lql^4m7JFHP`B)=-#X9Z3b+r8OdhCrbgRU=Zp z*qiDjdICIL)45;f-w|S zPm8~o2gGQ*A|D7+Q4&dg2wud5uKO5LxCi?{GcU@AqN2rV{+hen!|Jvz?Fqc{02 zlnk_4Xp9>K4wy(qIi+ZB=twG{GgAuCO*g2cbLyy-7UsW1RPfxq{Q6amTLG;>5i-_O z22{SduOQ%oj!^7>c^1jdj<>yvp_lf+3o7TIwxng|DLDp%%dWK5{slj3eLzYFOyIx6 zccWaTqquzV)Ogo~>@f*EoDcvuLp?ZBJK#ubUvDLCx!psZ7ntlAP&5#dg0^h$0&PQ^ zwGx9DJ;|K(8w8CC1H$_UK8Uq=^$8#Qg%sC#_$#t#EXG>mCbx(fPU4a4qa8&D?TN) z1F2H#eG>Kyv<%=s|J}OlUb9xc2qLs%KyM@(a&8zqo#wKsVJvh8s`ngAf8O zE+YRB00IC`t834Oc%knfB`n-l*DEq` z!&$hZ=n+3TS>2vbu516%f%N}&nKXUym=ul~DuirnogL8 zkdiJuK~4nD-iG^Y7aRl&ROaVnY57MOEYStZ(QkW(o2EBCGM7or)C!Pge9YM=w?mbD%K!?YVeH{)Lc$(kYvQQt9{>DT@J;r5VqS>F+hPtr^R`_DdTPG*&A3Z&-Hf zGNbWc(_*U`D7(%%#Ek39gpr#1K?j7eBJbL3ic1;ejM!#0i=0#50c=qSwVnVIM6HtJ z7_Up$Z7sseF(Jf8YhdiM2r{t4O$Yp;{PQrW$ivp{@B3s?|5fYAo!R^a+ z>Rvl+yK_O_jlbNp3JS-<;DWyHIRJhYSsYh0pIdYk$i>$iVmI3~9BK5)nUiWOm6rd8 ze;3n~kn=Y{GfxHcL$NRD&EIM|OZ4_ub^N`>xwyOc3Ve>Vs)Sv!EKAEM;DjH*_T}+H z8AAnf8TD)N$@3Oo7>Fy2u^FS*i-TJ4Cq?z{zyT%NSn-90NOFwqwwDa;Vf**}o6YcV z6@Ta?)WoBEDhZ4Vb(9daxcoOS*Nf|(eW*PD$thK7N(v8w#`(fFoJwV1Eh~oB{=r%e z@H>4DiUP|27|O^aG7$*BfDsY1y{kNYtG7?Lj~-8ElSDEiJ$Ro9p+hqlA)-&L5`0VW zVXOI>;ZAwCeCUsBQaa|ufV*)=KA02H1SQc>ikbXHWE^M36wKtw^$UX~3LuMeE&tr# zolo&9}+` zQbZvSw;^VP9wP3)u6>y;o6|lR78ZJSbnbIJIrGOMDUZAKBlMB5K>QqN(Jdnx2x4BP zed#ySlac8iW$5|ON-O#YY}tO>nGG;|sStMz2vD}3l^^FhVM1wQ*S}co;%-RgCbmwj zNjeO0E)k7(=I9*y~~M#$GJJL*oY3DtWOv1G>yljbB)B#&iTdCm!iH`8dwSDa9CIOHD($ z{cGXbS_S@euvX_ZAFsbR%hyJ$WLD|T)j0BjIkp$Eq#aU90+M%Igd6mS9_p7OfTHQ( zvCwqp!eL0o_sJR1EgGIb&vJWy`jS$NXX5VT@IOBhpDX!m%YU0nP|c=L0s28_F5Z-2 z8XL5$FBvLwzPX$TCTt??!5N*VZ>P3(V!BXbC>{?tlh*dAXNhn9Q4+oq^HdJ=M@xDC zs-7)JPTg-#_W`#V0pHR@y=jI_;?%JF<5eX+mUw?Z%b$bu8+m*?V|;kjK-qaez9YfA zyQFmgs(|S%cq1UbHQn?SpvSM$Xao*V{_L8Z(IfJgA8A48sUsy>tsP7?^_>2qN*spFp`1$-f=M9#DBwJ!7dzt7f!?9$TqdA9(&ZIy8 zeassr(?6Fc7C*4i5RbYmWVtexzmSktju~tAkq5Z@Mm>TFmlsS9V1B{Dog3+(dq9A8V#MENjU7C5CzQO_$~8m41!iro{zpFm@O^D}h9QV`Sd7<`r|M2$|5 zf-=1dS&C0zP?WOKog*^0Nz7Dht!j0H+n5K62pkKPtrw$EH$VAd@eWpE!Tj?|&nJek z4aL_)IN7PVK~a0MLXCL>a&KX1=0s?@PnR5>2}9rE+XhokPIo@9)7N6rN@tjZG?9s-0x>qSV7><8)wT<>@`K;_!rFSYVVFHG?#wqwSAZt<+JYm_5y5MqX zo?dZlry-hamzCX%Fq1Bk22Q8-^9b0-LhHodkjXlX18F~_K52J_?y^kCDdSn)u^Xto zg25+_5Kuq%fK<7U)E~PqvX4m2-WxY}>U**dz}Sazw8gH8;7US12=?xrH;Hd8`N!K6 zZjGJVl%kKZ<7y4zDS;1Ia~?5AZ^Ti-qIUksrpOZZCg=3HUCU3ARvv(wzAuf1iS5W3 zZ?H*+&HEY4bz3F2;^2p;QNysOgam|Cf*#JnK|i8K`(EN@MKJ~cUTS)-$9BhUqR)WnoB7IbDBna2d(7(koUj&+ zY`g*nPs}dr&GDnqou(3q#NZu)ovyq{9Y!U|VTm;Fgv z34=pnq#PR|?`FOLbQmT4(h6S0!%Y0mLM}A4We3t1Jq%ZviUhHV@jq525FrmLg}axF z!I)YEO-8n+po%zB$*g9pry$#BVR$o%d8{7Wo0ri z4<6`4B0J*S-@pE4DqA@4r5x{=FUrA-9)F2;x;L;lbDfxf-VcE+d{_deiQapjY;`946ynio4`PG-$l{)`yS3=( z{0l6DUvys5gI@q)(adK@JK7uROO70taI{=rh-o!3+2N+!W2r}U+Ii)ok%^VCySbR? ziDQc=7`T~F8K%ITly>2g)(Pm~{dr%f8&~TD!^;AbcY3#Y&+O{y2eS_*gCEgd6=-_| z8$o2EW3p(S{-3WitVzWTullV`nWJa{Z@}eS6L;ik08>V`?HM08=RVwh@YzdudAqeb z$@~w4Nr82M6O&M(P!W0vO38Mo*Ru9&8KWrjTtR6Th8vtEBWS=8g7eAE9DZ(`S;S3D zXnTck6kW!uCf+|&10u_3%~_T#Se@T-bjMu~1W+*?M!d0WT*z{NG9?=bTcX z9_R1`^FB4!pr2sJ323KnB)!}7v46wdO3?|65UNf>`geDbD4gP zRtTxqu4Vy~nDr_r74JBe*}b$<9wa2aLqOZIF&s&?aa$<~YamPiX%e?@=ReDn){n`q ziDR*r-$H*iPf$qB)F%k3;s%Jp?^bw94@7kNn!q=)mtNtie+Wezy}!7mY-PS>9MLN#I-|I*`btMrdrlm9X+y9G#m> z0}RhmaX(UfG@OtpIN>}wS|O&|>aoBK(cJjK$K*V%23#Kdw)afguQ5PFW;MQ z1XjEkXO4?7YgzuI7V|K}HWze_7Orl$Q2uIB=8&2aL0;r#n=2ZQ&84O5+4 z`WKhJTu+VY5q<5`iI$@>Al|=dh{3L`ryeSFIL}2iCz9)EjIZj5N72Y8t8bDn0RQ7t3pWl zW%axIBh&TkW?ljs(5R_)9>}L*W%IO~Nt61^-pR+d8|l%peyRU#MUm97omzDh*kqlHtplBXx@KxBQiI-MDUz+6D18JBl0jv%;AL`lHc@y)t&c0TmAdT zxjO{Wh#Ay~QEG=OS~F1zYSdOOH9Hh-MTsCn}4lqA_yQnVFLJMetrOM3Wex5%((7Ynif$#i_ z_imWcbN7RQfdwszvQ$D@?CQ2=Y8-Qa-Fv>dBPDWK&`tL3`V%1htI7-2qHOr3J&O1&&9oQuggfhlTW2|1~vyaZRPL{(~VYAfciw$n#|_ogXtJOT5A;>7E{a1*D zN^rdwmjnO9!KBctUq`&_Q%a(5_FWvNoTz}NJaN4bticZi(Ute)7HaB(WA20U`s@_J zmk68WwQSxJrXs;{@MgsB*#KvyrZF(LPhm$*(n{cnHgWC}Nq4V+3pU&>pk?{(cW{R& zpn(zBGZRqn?!c)m!cdKooB*9fsp!N-qdJmX)s=PQvuxs>)6_LBA%H0-?*23PK$cQ_iFh2V9HEgc&3TVsZTwDFLm>F;x~%kcCf~p>j3}{kQ5nA2(Qn@#!}4 zkjt+VLvDZL$`3(eKn!8I+?V6Q^39XFC0|()S<(>dZTKxT#Kh!`MA%@&P3_^$A}_r` zhosINzcSqYIq43#iy|XxAJr-Q|5Uuvyr(9occHU>v?u#PXJ`GXnK# z`Bc2hIcj_DW^G7Hg^IoDmWMNp3nv-4%-KrvQ#>>$w4Wo;&PazPk8fvv?;2rA%qIv> zhepfAv@ZI?&)x%WYKWe%-joi&;vNhsY!XZMT>kkt{q*0`6J)_FBPO3)^!1+SdOc1M zj##X^&Ee#}E}?6FES}w$k{_n;ikZRwe&0P3M4W8I40?wwSv;Imsd;aa-?*QGD{NSb zOji~AJ~S+(=o->DN28Y=wx6;B?P+?QYv7dLZ%11BzD6Kl*9HzX9y9DYL~OUFI@Ai# z%zB7BH`5_P*Uz*6O!&-`l`XpiQOU8%?cf&^41SuhAbvGcO)UJ56N|D=jJcULca*B= zq_HCnCz&)q(O&2)meG3wma57SgL7}zSXzPN$MMIlp4RPH@XuZBeXC33I#kKnO4EJ z3noQya2}+sebNAKaxeUIqi{SLvv-u8`sQ4#gNvIk*k0*)Yx5?zpNR1Jnn0rk2 zU(Ckmy_$H@w6B3IpFrb1AaY?W=|spJ&RQyZ&WP(T~hM=-KzI1 zI3wVgTvKizDuC4Y(eBCZF-{AH1{Ec2Lx<#s`Eo z#NsQPyr{o@l`O;~nDTqH^FfoYF_UD2dduHOq3i9qEFREeP%mXz2toY8Ioe*7$#1J$ z`h190$-TQoxHC38!R`>B+Syi}sYoZJ^mT?N%>-G63wZs=XgX340ybT}(-J#*}OVU&kp)S0J>q_BlXjwNK zJ6|fS_)^j~Mj`HL-qq_Lm1kx4^{fgGHj|dZs-s5-^Ga&m$&qf9w|JY6&RYguIX@m7 zFxDi#JE*{YMGM~(dUM*5Cha6{?D+vG zTvb3;{B^{}@gNK>-}kx~;({o%jJb;}v1Vc(orybCo~|_i0u#CWPJxHxZEkk{>W_k4 zHA_HBLenJX6@*vnB?Q5k4GeMGyLILijQ0#3L%E8=m;cH*eW!c{3*S__tkCXsK(dSV z*(y6OCb9b{IBy#4$LMhp=P!KaNFw@^$~uD+QrW=YDli`!xq=gU0ny2j`!(^USaJOR?p!bWuYksJ@#j` zZG|P_>&I^)UaH(^D%z6Db>e~7x(h1C>W%|q8u7^BqKpBrl(B7XLOzcT4Rn2dqJ#7H zB8vYC=58AHH82FT()@t^oe#B&7|(AfFN^NK2ac`2hU@k}$K_l?T8eg?Yb(9z7u-cB~uIurbD=@83;Nk9N&8T}L#?88aQT_t?8LT{PmJnEV#$x+1%AW7y z87&+s*dW6nO)$E(54AIlJQ`#*6npmSZYWBw*v@6`3!i4einYg`nxqY7<`1U0fqYM_ zN3H%wg-FlZ&IK)cF6T$nsK1MJl7c4`O0dQx*c$EEy}o`W&}ut#dIF)j(j)MeBEisB zkQK1d1HR-c_M2c}-I|n=IQm2b(U(qrSG$#89`~77MXXZC`e1Czo(jS2txm{KtJ;Oa zlQ@TxVry=5xJLMYPB?Kw@w&9p)wG_wB~nwC&~ra5(whQ_unAC5GtR~@&&54t+5-SP z`Tgxw5$}7(>n3%Hnrv8m;t%HEa3ZCa+(>B2g%@{5FE#>VY0PQS)$?WGKvdP!P^`hA z80Y)ymiy0cJ!Nf|WZbsk>PXJ<@XQ8gX-lc#WMSx%P3oB+ujNmFrZy`f_<|>y^zBG; z-^<&T{3M;N$Z15bJPRRO2n?xU4j(8N837xCu|k>f%zQ*Z;X*~r$Ct(PS6X1{@mhDqo#~dtXbgJ!GvqPz3S7Ag3+nsb0NGR&|2_ zpD9$FfV4jAKRYR`mcAvvW=UWyUR22)*v_2i_Wjx!c2G4RqRcp@8xoaPuI&!1@ZVE)N6Cz>ULo(7cG9LAeJw1zr z1GS-=^C$TIgm|SK0>fQ3ugIK-<-D<|jOELPCZqfW~u)k0K4dW%6)!eE0)&uA4-RyO~FO&XE07LB}e*Nn|q{f!Jb}~)*3i!eZ*{?@&dgLA&h=-Bw8(*@$9lQP*WS1mm1UgY2zTdN3W{VT*MD^ zGWaVaUQDB{=l>2hR%XoB3GjJ_uEZX>W&PuQ)dYPbvSsvpJ+a`WlR!9Y`g{`q9l|Gr z%7Td5-Pn)CBTWb|Gs-3Iiy`e|JwA(FP<72xX;^+%y{n+9{Izm9>r?Wwi0@!NMcDAe zo;X;NNcS{3!!}BzcYL|q03ykE9NH)NF z7&=le?*sq3{)bgSUh}AH$h}psnm0bBWn`D2d8g&0CHNNq25Y{a?Ja~*mtpwuo7wh$ z?!HIIO7A}b_dNq7ca|%r!M1rNk6QIlx}q{b1D$m-fah7|-gl`E;$ib6Z;NADvL!6L z@>h1FNHZ>qZ8kU2u!1oFJFJdwqC;N;zvq(xBqc+`d81UxPx)HUPWu+@LI_q5qz z(7i}&&+4%~-ZZ)Pi%^~40hB06%tm_JtX1<@qBIxSuU_iHMjB>EPD7So|sO~YuoX|nE`L>L7C|Nw9x)SOkNS&r@6X2y@hE2C&^QW0AYIz6CCfw-s2=%Nn$-i)Ief< zFS++{=WFFiztS;5o)SdGBt(J}#C*!V1z1CVcH06NT2}j+)vRHp0GO`?EPG#`{o;q< z8bkMxhLJt-U@%lr%Fha3uD9phNH6gE-#v}6t;`hIPcZa$d;92V@YN)U(f21*eopq0 zUWK+RQxO7FxHpb5^~`B@$}tc%oD(W`R!n#25&7CM z>oo)E;U*Lz3`bZaT*3v>@v8t-X0tn73YU6ZtA$fp10T=G$X8xbD)*q?jGFB_8@Z3A z+Jna87dhD2crHk9d9z@8TR{s_F(dSRQ{85zQb1iPRgdQ!yo|!?{sVuF7j~Q@yrvP=QFMxo0{J|!QwlL-Mkj#8l_E~>o;=#;QFXR zsdPIh*wbemq-CnQGsO7dMV46!xpZ#~K|SPIH*&*t`}-TGfB2OhtZkqX^IssL5~Pb| zOjMgZ{KwSI+0U0_4}UQOVv%vdc#sJmH2q}7B_fEAgKhd|X0X%KHKVORc4gVTQ06fP z*V`u3`<21aL`S!L73XTj9EwZ4rlk0#oFriV_{FCrKou#~U$%+Wgk zCH{X=&+hdu^MUfefT!vvfIK9*>ujt98(Wd9FYM&pH3&s4kweQKVK{w4)j8yHVlYwz zT{Z0`GtF9Z7aIt5NuZXo_oq(^A^26R=z~JE02S65#5vOkbP;mci2># zB_%(D#_m%>o`B=;`&{5X{Nod|oA~iGu=MwrhB$q~T2w-8hcGv^nf+f^S^&pay+5gt z{`{J3#d2YXdjw|!7%a-ST#=g!dWWI<=YOW#^2;2xlCXb|E3&Z}McooGdqt`bP?^BW z@W~yuS^x`#H=Vd=IR0`8iO3kd8Mq##{K^{#-I_ak;Yr;N8e%>D|H&abbIh&IMqXk> Uw^v=a{-I|PR` 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 literal 0 HcmV?d00001 diff --git a/v1.13/_static/img/mascots/scylla-with-computer-2.png b/v1.13/_static/img/mascots/scylla-with-computer-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b8b2984f68bb49c050104f4f28ccdb4be4c234 GIT binary patch literal 18803 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

                RUv!t4p%Q@PuhN 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 Uw^v=a{-I|PR` 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 literal 0 HcmV?d00001 diff --git a/v1.12/_static/img/mascots/scylla-with-computer-2.png b/v1.12/_static/img/mascots/scylla-with-computer-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b8b2984f68bb49c050104f4f28ccdb4be4c234 GIT binary patch literal 18803 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

                RUv!t4p%Q@PuhN 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 Uw^v=a{-I|PR` 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 literal 0 HcmV?d00001 diff --git a/stable/_static/img/mascots/scylla-with-computer-2.png b/stable/_static/img/mascots/scylla-with-computer-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b8b2984f68bb49c050104f4f28ccdb4be4c234 GIT binary patch literal 18803 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%0A*%ZY zAH?4og77rf=g9mGgVc7a*SjG^?|>C6qw0VS;b^=3f|5{QEC&uP_QeuY5Q|YU(oSf0 zkBZ(I*GASE+Xk9k2@~p+U8WRO17wFOi0V#p7Q7GZ1?C}L>Mb0WtI&D3;gEOlWTfEg zNYqTJMDynu1V6>Tw35F7KPN{z5KN(tGPy zflfOVl5lTbgZXgY_eO;}>n)~~Rzv2^rXZ?2%Rq#Z{NqxX4_pHf3X2C!KSW4j=A2Vc za@6HSV=25KN1tc$ZEfH`+~O$&^9)Xu#rWipLqM8_TthB@(Uh=?$v)3O7%VM}$y@UZ zF?~p1wyG^8b^i^Y7NDTFZa{{#(5W06yFYB5tlu{!tEv2~x?WAErxh7JR}a9OmfhUI zuYC(qatoSnaiy@y6oisL8yJYXg2I&K@~%3a)?<;;x?=#bv2frLj-t$QQE6wlno>wf zftyT0L{DUKn8P1cu!=Vuxnu6_iBd7 z|E|`_{|-|SYS8?;DF`)mITN&D=o)}fSa6Ne0ED8&XH69>!UDU>%sc+lEePi2Y5%?U z@V>X1woa7e*|3O&%MLR)T@d`2DU&Hl^B)YvrIR#uZhzIq%Es>YEC@OQC%7Q!AK>Jr z^H?^{jLO?;Lo%cvRa;bK`%FQoanoxGLXBSDy)BL2Z<;ch7`^OF$)y{;P0y!17gTM> z623n)aw#?v&Nww$#gCizsv5L$2BPkuZNGK3`Wj??xIWSzdb$q-PJnh^4~8qFDI!Ot zoEba37Rt6x%d@5+)HqEs5N%h=e4>l{a&)3s&}18!xFOL+vmxR5YEz0S27ZMph-#u6 zNH!%L`7km7p|H5a^h1PjWQW}@op7vuaPAZBVJ7{a?ItqtD8f68g_$ zAnFdA_A9>Y5K97A!{U-Zit&mF4s<#!K*$$FM#%L82<^-pr&wdM@sK!rtaZAcHwB?a zP?>j4Ju9)P;Oe{GL3}k_Ry1eXvvxW|S4Rfu|E9?3zYZ>nqV1S!J4F6Bn$k|O_3KSR zRFmI8`X~X$2bTc|g+){XZ1owwU5@MI5s~D4fC2t2G6v|8+5kLwShJzN|D3U%m9SKf-j#8Kqy*##B>EgSir2$;;k%r?Q1%b%sX_;zMi(MF1#&O_Cetc zSkB{M1a5Z=EcR+R`-}pO78e;qrXW-wUtd;tE=2(Fb&;HCse9kmfLv_wQLavxEJ7T~I_0)pj$hu48) zzPRw00_Y5m*ElZoWM#aLzcJ-(k;JRIf@zo&lZw>ziF>l*P)v1%Gf6sAX}UfQ&AS(X zkoz+F^K$z0O8jxW&KdhWVs(~M6nU;AVYBP`0C(whCO28R;4M$35yLHur)~kzPw32+ z5#bF{5G!$5VfaxtcGKEZUKir3sV~Q=D%?1QaDvNHTfBRROEY=;zc@MVWDf4Xe)!=2 z#Ga{xBYQ^^2lwv1Zgl_Nk;#1ru1`1z_fAbE_Kzm_B}YfDJK!7`hTlnXn1^c{mXu+X z7%Jdk7I(!whp#e{07}Yp25L#l-`ffnkn${|)TNUE&7xEN4nC(1hI4Nvf>4vf1dq+; zvi!ZKG*qJC-3&xsQPBRC@5*rsiBc+Ou~{0>xBt356mZ~~Jc&V`|72NRg*-^Bs&vMP% z<$|I9@!25;@e+#4-n+R@Z_TD{i!MM3$jf`$Ls)kVaDwu3&48eF3=Ok8TcpwT7|L=b z;tV5(ij+EE^13H{5T^`5gb&i5WRMmhJ72TtGQ_yWKN%Oc@j2!`y(37hB}$nyDBsh$1R-rdV)4G$a2YKhWQiLBIeQYeP#B zcFKJD?C8**p^-p`yjgSztyMf(fQQ@kf%!|8=Dkℜ(2~J__ahRC|d?r2r-ehD8y0>|fX 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 TSL&;wCO{3B!R!omh6esW0xJhl literal 0 HcmV?d00001 diff --git a/stable/.doctrees/exposing.doctree b/stable/.doctrees/exposing.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ce09c6f830ac8e3b64462d47ce328a16bfcf4d74 GIT binary patch literal 38769 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 U7#l1wPHRkWNj=qWwTk)w17qsu>i_@% literal 0 HcmV?d00001 diff --git a/stable/.doctrees/generic.doctree b/stable/.doctrees/generic.doctree new file mode 100644 index 0000000000000000000000000000000000000000..70ed9f866a7b1a1e8df3cd4171b0fd23d6d3d269 GIT binary patch literal 63955 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 Qsx)%OgA6SPqQ$BI0pk>x%m4rY literal 0 HcmV?d00001 diff --git a/stable/.doctrees/manager.doctree b/stable/.doctrees/manager.doctree new file mode 100644 index 0000000000000000000000000000000000000000..998eea523f2c23b62f2ad5966a5dfc85c9cb82b4 GIT binary patch literal 44322 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 literal 0 HcmV?d00001 diff --git a/stable/.doctrees/migration.doctree b/stable/.doctrees/migration.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2addbcc64a19cafd372bd1797ed0df2e84c5f689 GIT binary patch literal 33862 zcmeHQdyE{(S+~#LwRils&%V>$+3DNFtnKVP*1LYJb2f5(&T(5MD5F!#1{J{y35dVP0O9%nK zuez$MrgvtxXFc|jU`w{AyX*1QSKqt7s(O9o3-9^lCiW-Z6SOSbT`B2?;d+J{wBzlD zSC5*e8@4~+KK}9co%XSK%-5F#FY@bVJKls6b<1`P-*nrz+wpEH9@>x;hGpfXXsE!5}fQ`_2O9l5gEIvigwhs_rK4QlhIGkfYxdG=KO zWMj56JyoBbo<2QwYPwRJIeVsV&Q3QP^;1*Ej4@R?ebzi%2G~J40k@puq0}_m)|1vw z>nUqXRI_#@vmw#BSG+))1}IsR=l9iElrgw^gC^c;git6&9Ot%*Bx~NMw6-u z&JV@nkz*JApQiq;!&j{%gh1;Zz?$_m=I5RGdlY{s@b@?{V!hj%0VcLuhpkCet8lOn z#ajugwrr4n5e-_W(ou{ifJ;c&IFyP%aj%dR6rA*c$Lu>mnrbn?A|K#bJO&EXLA)(X zMeKj4lM)4{q3PO^>91;auh|5(6Xj@nfVY>fKdUX;uAv>9yW~Ux=4bABNqgRv^B7uo zpxHqXnc6a{1fH{m_G+tI6xi;(=9obsnx%#c%a&cYP(d^Gz&3p?^fbc`^k&VTkMz() zM>p!Lj-$)&3MWpSc!_$cTe>@MQeC3;W!*P4+XcuiFlNm$C$*&Qrm4Gu*3{idcO*)w znroVdX_U|&CpvX{8I8*6O&;YuGzOdAQBG*Jl+ca=Be^iG&=jlPg&4PS>!+JI!%6Y4|p=0cy3Pp?a!Ju6FE+SNh9VvaIziAQ&Pr6Wy>Qrm4T!|6QduE^hi)m{TeUJ)sLl_wuPnHf>_l z-}1e>X+%CGuDe8HJ&G~b-JNhy$A3&EqN21#yeq1`k~+6SQ#Y{$_I zGt?pS6QrZs z^SWQtp$zJtGo8#0P zdTm4ue#a!skGl2Ek3=R$Y)mE+N#Y1_M~>l6gj!vPpw|p<*(E##rNTug#K(DyV}eHD zn~6OYXbcsA#`ZB57fgWh_|z4i0)R#ET2ObZC5_EWqTLueR=tSO#k=(*S4+Vucu}Z% z4K~c0x1s@hd@~|u{FbyA^hHcnf>(5vR@0U}e=*ROO$@skIicNhlGzNX1@z}@0W3=z zf$1*U;8?Q7wTA5nVM(xgT)ofaqX@gVRHg%WcL?|F$LMV#y8)pUJdeTb%@Sbysi5|XoKLb;imxnfc{0`GKpRfuQu zxlk#1TDT?F?+INTI}fsdA-@$fZQ(+O=dEwQjj(|i9xOsqqFT6|!9#D+MFNHFyS<4( zNimo)@zVFK7&FHE(<)hcqRn$0n)M``h65RN@4pRko0?{LL;-Tn$joCO9 z>mmaWZZ=UYEHA}Sm?UFh0wfJn0R#*i1yoMv!K>WNyBUBPv>OgAm)pmzFl?PGmjik# z1ANPPUd+dLO-C9Nx9$~6h_)_pO7XT(%gim5C8-}+UM^ya zioV>xc5FgvcKal$$I0~2n|hcAi+sBsKhYa$6wO*#pf-0+h0G=+aEMX8!~5vGfuNaB1Hi%a5cGH}z@ zMG!CE8aUB>J3hEnnXVLzXs@ESMx0jwAR+{oBQ!a7P53xsB9%8189$eM{s;yN!yV+) z(&jZWEo1Q>(?#qW&W>qR9r#TOZOI_?7=5WC658zYIrY-w@G{dS^2 zpSxTL>?T~OqL>Cvo31nq0*&{%mjqwdlM8=EjX;EzhpAe^9@2G#nF#kc^u6vIFmpppnhCmL(O)ufl4t<=#&Zcy z=UAYbbpZur;B^PK=8_P!z#RpprCNBZU;B!1|FaCKs1f}H3Nag_{85tGUuNp|7Td)3 zw7hVHlbPt1N#i}4VdjHwcPBCgl-bu3+J77lvm1} zeVN7~Iri82u%g<+SMXDqpF&_tiW`?f4Q`txD-c|tAZ&3?An{!tMH2&IZDBd+od}8b z_Iy>xl?Z|4%{w?DjPaU){`VE=<45OhxQLcnUnFNK0Wp;e-9IMafZv`#n>pEe;ZM-% z!k^MV-^V|MUWIuzG$sMeH7jCVxo73h%_RJm1drzGrXLpJ?m*V~a}w#EQYET)( z8sS4B28OjA1ePdHh?roA6`nf6OmM+?ybMauH(TDM#@J-FyS_>${22U(T^(R39C$J_ zwTgV$sRAoVr}L#Gk#m`L)|VCUV6tK>;Uph;>#e#hd|)^r-MUXxBXK7%kYA<< z+?Dwdv+Oma2?egVTF$CgBojv`RUDMb-}cG!^l28oRN*e(dP3Z`9_RAKi>$f zNwUf%^#!~2mHG;SF3lNc%kfsr9$(vG3^tbta9ZU+To)_!Vu2xD3@K@sS3+N}huVn~ zp6jfhIHAp5Le_!Tyw2B4o;4e`Ytw2B(;k6I$qmRFAk`p9RW8In+6@dL$-94)*!}H+ zXYLrM$=~2L8BM->fKe;-C)yBms|4P*5^BUKk_QR(w+Din0##k1-mEI2HLyqwKi+G4 z1bn>x5X@v}cZGRB>COyA$WF3@=u7y_h7+B9C7sT`Vo4aTqFP^OIi_&S<>wQV zM?^j-=LTLFr}M<%VWv;rHz{@i$<0F2@X3~JFG9{uXtq+@c1W#B#Qpm~vqQ%3an1+- zk|M6t_&u?{a`uf*ojgdD1av6Rku5{g#3#_0986!z5mX>>kedoF-q4rK#7a)1F>4&+ zOFW#TkOyd9XCg)#y9c^7rHGcpK#S_lC`vo)U9wciLvi-CB#xt*w)%1ibCHXjI0O_- zNFLGpk4$zbstLK+cQP0oiw>XQpk{4FT~K50SWn_}$f!=y)5w6-E~IfZ5%B3G;s?-E zO8e(A+M!sXCD6V^U0-wy+7}qlP5U!1u5~Jo}cZde>ammUIW% z7fEKJB=_y2wnF1KGjyrY_*UvesHfyXlGp7_z4hsNiqo^`kj3hsc2^?JK5N28ImniYEXloNlBW9~V9ih_?m6xV;2T5pCy}p*` zCwj1!Y?zWu&j~S7PM&V4nWViN5orIv4ra>SZvf9jVeXS)ZaHbWm|M(sZstBL%$sE0 z2b4et4s+6IeT}P_bxKL<{N;hTfXtE8oI}6VgE}XK0#ITF$#O_{F`m18I$vKK)_k48 ze92)bHsr@HQu-aO&?4m^L?$%SyI5uzrR-smNF?lG6Ga^x3}~qb!8Tvy%kdcdq^65h zHOhG)A>p|!;TnMinV!bdyQzRk-Ag<#gxTJ1FeI6LePA*09G2d0 z-hBR9T6hDB5uOr;eTTeCa|Bbv;r#H}rV&D8zhPo7cYu_3`gv{^q zMbhhkWLjL`61&LhRlve5u>;)(Eqf7V^V>S2m#!1#AcyN&lc!?JlvxY;v@BzWvKp)~ zS$sDP7RN#)cH-y+T#9+bYm*#mWO9;hpoyMTlFVSX`DW9DIJd)Y$zqKM(=(ertf{DJ zVvlakxRf$Y>_I{W4YV*g65e|K=Z|6yaNsFW$p6XA`1=zpMcpoOVilMpV(pGmkqO#Y z8(EYdCfeM~p~;gTChACX?%R)W@q}*3t@RwS0LLBu>y%E3-Hu37fkg}45&efo^egf&(j zX-4C>@7%dPk*e$;fsv$||3%E!Q2em>LG#P0S2Tb9A~skU8g_-i9A~>S>vfMOWFqQB zCOpSG`^>BXZuk>#Ai)b8J?5TCW-+w}sHF>>Qs$%$@a!-;Q>5aDGi;z31yA(@N!SPd z3rTisWcukZeQEvRdCqPELS`y#R(8=Xh%fmK1JS0O$6S(BaDHw{`ZD%L)oF#K_DgVeY8!786P6=k1A7M7gbKB=KbqHPT3m+O&LkZ_wyn|Oy;woJDqvHU(#&+} zigkDe)}d5;xvUDIEpuBHSKcSK3~+m3GCgi1L@)`PnN9z?*c8JS5}c!Y-5XNWbdBD3bX!*_my9KH!SeCLJ3r@>i6#IAz#*S7PI>T2F^Z)XbIAG6_%G*+NG6%RUUkQ=ZE?(O7_vpn#q!I_6qgAPV| z$VZws^^lJSj#n~1N|YQ7+oRA_Lx~!^ipHec%Vn(yZJFCzIooL?+`v9f6KAH~FcCB8 zw-%AEHEg^AX%(Cw*eWo&RdBAmRS^G*SZ&R$BVbf{))De8BV50H@!3}(K-L};AoZa9 zrK99@d725FsmhEzMBs-4)|9%h42!xOpl&&Rxu{#rdT#2jrQs`uu#^2bsnJY(Z#Et( zlb++uM*33Rw0edK6fZLyDifPJIwLVubps9wu4?=N$$QBWNO8x;x(LR@vNs4?^LS+KfE>X1flQbNDA=Bpia_%Es&IxFkoO_B#(YoSA5v!t- zkaEfpy2Q)!MAE)GoB`ZRBrQ9rzM7cr#}hb|^w+nJ$T$=dKezV&##Nj>#0~|fESJTz zbYO@$bhqZ=v_^`g@k~RU3fz&5NIM^}q{a48)Da`&dAICL_;l9;+vDXq$$l2OBePUU z!fb|y?B(&`qvp4)@Rm$Gpm4(G3!aX=wQI9kU)s01Pk}2Tt@8zi0^Xn zGXco>Ij!>~AVy+^bn!2V>~@@AGH+rj)~razmKoj6!1VJo)X3}S#E9Bc^27tAO5tt;W~8tn``E24YdV|Wf`>aI_?tDJB} zuZ(af@(x5&tEiu!T1C$V4s(`TpUF@wy8}g1Yr281+qoMliQZcyDP0x;<51}Gqo7MU z;9PVm@RXY_-}ONq`*b3lz=&*3mQpR%NX_$LCP(rJhkS+QJYOD&!f09KW1Pa?+hd+T zmX2y4MI8dWxv690Q82D9H{O7xqQ!x!=%+aqSv{!ehaxn^ zG5A9PYf9a#!=mm_fV$=M<)Use>$$1>n;Qvj(bX4qJ-HJDtKM`aMiYkylFiX2!u+hBOu6cqX^hP(?ja~ z-P+(iPn^pHqb>}ZGZ(bXdRgpWF0&^hq)W+xW^gMIJ7ZL;=AQ*j+Z#20wneH&&n1U` zvTU@q5EE6B^F$|KvJ;*dDIvNgfPFK= zo(gMkICS;LnKsvF`A>6}7tk=4f2@1xN{!8n^7$E5^dzyHORosN&aGFjB?nT{EdaIWEpW*W@dc}d}eJ_tBw?NeSd)`~t{rhegw}2n!E4%_JY7@aH4*MgHU2Dwq$GyE1SCQ>f`K&VFc8z@=(}}U@Mxy)`YiZ4&Vr&>CUQG=nTjv@g{x@u2@cIV zd;G<$h-z|HdQT>U66IzfnV6IIOh2pGS1%#UcUj z4B;05$KtEJP=vmA^mafrptd0T#ofs`f#FG9GR!VI?mg@2jn39&{3uSbb#dJd9aLMz z(C6V@BsV&bgdUDJZ(rFI7epD;z+*)HZH{->BOKu3hSg-H0#};t6mODSqT}s>8PZi9 zxD0z=db>69)7=mo#W7E}*co~0Wft)$%t#y?)4po$xf+kL;4$5{h?d82@D4dW%@!VZ zBpu>j5_b`g1^yWM4xV;}UcE|p?$TFuJOT*))poqUfzTC>hBB3pS2oAH=#p)aP;~{t zp=KLzcH^jNyH%ybXHYdjlTRjZkhsj=R4F;XDsH((kGulE_8MsLaoW2dRvmN61o|F{ z3l`3*5|1PCJ{+0}tTA(0z8x{l8g7ia8t=w!!7i|d5(rT>@n(z;8a8QA?Kk7ywhJ6p zap8|gmmT5qizsXq&lYhiOFMq5^J5i9?09|^snZ6m2weOsJqf0jRz_GW?f7u! zOQwm1H^I#D?xbA_gQ)#f=Z8$?crT3sv=&%E5$*G7$GgOR9>BPP=SOfGdVIh)>F9te zVzZzWbYtTdaa@@PUE07fff3sPtqLyRtw*6(m9OGQaKm1_%YaQ)O-T@lWiN2%7%p%^ z-Z`4t!`?9Brs_bfotP2RmmerbRY2- zD94=#Av$)`4%;v6orrh0%vP11t3-p;;K)# zu^e#th&2I~U? zplpRr2c3ylG=rl}46yJjK(I{Q1bH_;SVyVF zs)?&2ohpttAwkQ)-bXEy_zg^_k%+as@fO@#+Qvok@%BWVfPX=X*obC>Il^jklO!XY zeE)+w1L&#M11eT1*t|ItH)uHeg$n@>-1Q*C_lM5mBF}bbIYkyCxyw$ey6tD zAA$F~En~!Mx=OVcDcx_A{)cA5SoTSnnzkF!tSx*8pT$)v@#bmKHGZWX|DadLUE1r> zbrkRK7(4Am?186+Z=t)cp#B9uL^L4{QJr0aW&^o*a32x9Onx6*_z;RNyh8tc7FNPS zO#j@V$7`&OF)B-T3xk1`zROD9Wu@*$*3);|$5;c_PFCA0vZ@PYvqbSOm0wuzyKqNn zqQn7S@`l8sD3?%*`i6L!y#;?YYo3#`Aba^}=4D!XtfR#-(JQO8zoUH?q$HJkFxwXY z0>c7An~^AKrycx)WKb~__qIz!x_JM2;PzAP>kvRVKp&zE^A;eynsk`T?vB?x($|b@ zcGxcV*clL+-hBIZJ1!tz>)|YZbOc)iwo+W6i(spCWm_^IRZP;A%?$nVfm_Kcyr!CE kZ?qRakBPXlmCa4xJK<3D7BzQ}&0nnC+V(~}ifX0*1r5$sm;e9( literal 0 HcmV?d00001 diff --git a/stable/.doctrees/monitoring.doctree b/stable/.doctrees/monitoring.doctree new file mode 100644 index 0000000000000000000000000000000000000000..38f94d4f81560f6ccf274e283706301e7ca52865 GIT binary patch literal 30009 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 literal 0 HcmV?d00001 diff --git a/stable/.doctrees/multidc/eks.doctree b/stable/.doctrees/multidc/eks.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e75c5e35b175be8e913a319c13185348632aa40e GIT binary patch literal 30117 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 bkqtavhB}|5!9Kx6B^#E9_t9ROHtYWfJ#hOT literal 0 HcmV?d00001 diff --git a/stable/.doctrees/multidc/gke.doctree b/stable/.doctrees/multidc/gke.doctree new file mode 100644 index 0000000000000000000000000000000000000000..19cee1604dbc1912b59198310f217c86a366ffb4 GIT binary patch literal 29444 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 literal 0 HcmV?d00001 diff --git a/stable/.doctrees/multidc/index.doctree b/stable/.doctrees/multidc/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5decf4426338aae43e7093d612ab6ff046a403ae GIT binary patch literal 4530 zcmb_f&u<&Y6_zZM5+zZxoY*a3D`i|HanO*oD?70S+Xa#!7a>HD265BY*bH}voB?Nl zbY@njfEZ{FDJpbwXuZAm(qD%FIrM+XB|!e49{bJA?uuk=Cru)V68FvQo0;!@?|W~4 z-}vjlcb43b*;X0j$+SnJC`lu#3bPiaVII>&7mtdUKQ0~?S4~Tj2P(~FNDH%s86o2$ zk~Asq7iP;&*IcMx`TnY+q2_5)zs?%0$yVqV=)ec)qWPiRl`#T9eGkxp zJ!iwfegf>-^B}`d@p%ECm+*NRxU!$IF56|V;Jl3rS9k8UFpaY`PokM)dz!K(1S1W# zq_aFN$DXthyJXsPD1!n(KynxOs{^x9jnauK{!q*q#uEwyHJdyE%_BPE!oS4cVeeA2 z7LzF;)vP#N2CYcuatkCJi*#6=m?q;KmBeh?Pc^YXzOX5S}y#h<6;_PFXYh|5?+nj)n8wt9X>ed9DplbreksN;cX5nhOpha!V@ckT^^=MXGHMZ4H*q5S2{#; z()AR)b4AOXUb%a_&+mR%iS-J+&E%YU>xXoI(HwmDEf$_A0Qiww&=j*)VK7g8)3nk^ zbYad~fC|%^0w$FKIF!juQbpwvbu#p4$ob}NXm3C>F4FN`tHD;2KK)uW5lXXsgq3Dg z>`zFme=Vq(srcuEHvJAk(;TJgn}YV2dYx|@tZ(J^8-n$8AE&|k&tkCH-{!KRjuHDi z`v?1{)jGt&f!PH7pFbY{>Eq$IZ@A)&CZw)9=D^oH^e|nQ*faXpRj!ALhTW=%>GGsI zIqhLcRkLQie7zH@yv%h%b6#e+vW`uzc&T%h50(DOC9>{o*em8)ElHwK@U1*#G981! zzOQNMR1@LrNIA!qmE6L)Y_`H&+O8?6d!)_E;(H~trl{5c2o2^=-7$`2iarlD*fifK zB1hS)Th3;h>nzvBfNc*# zv!LqruwwZ_+58R6CS){~IuP`T0=_e5oe@z#Hp~v4a-gP(&Q&$3VHyz~=3^|k^?=9( zs9}brB!;Dh5QWqps`#VX;t4PcXcDFoW(J?h@-Dvs}$=LZ8SWhw(kl1QL_BkVX^ z2<6)LNY8j_I4_0ST^Lz#!TxKuywlSSRIgs1A6R(PoU;c2(G)AoOkvuBB;%ZnDd3Kv zo@db0m}evnQyHODWuOU`vHjG*G*NX%I3wWT5r~RHHZ54wY>`~2!Kuld;ow#~%Hu4k z`3F>;f!ixaLWFg=?JSP{Huk5cOwl|_1E@M?oukt%RWz7=(@`YU!4X&7^K(0hxFSPg z4^r-OwaN?R*d`8x8l1Q!gVT07EvWiFbJ2doBB&iM5ouz*MTqwXsu1GjAHmNZn_Qqx zG6o9;kGU@1KKGK@%4ik<6tsRx=m6WamLb93ZDyDsGp#dq(C@>ndfBmNY0^vOxL=qH zcBb0^W(JzZw*PmzuH68hTXGaGxVM&5_b*oN?KQ#jbwXv2Q$2EPAp85aSYol3 zCPSo9WSiSHvkOATL7kiR0Rmr7Ps}-WoM-KGibph*&w>N z+aU)PY*~RvZ?U;r&GXxzwfK2B6oMWPQ&IE6O?`I3SkG?Fd2Cgyx|hz+`G@98ZAJdV zqOWoUS0*S)h&v+aQkab}6#{_c3@9b5ZkS>W=H*D4ON6AC&E= znd~kHR-ZZ0=UW-@BVap;yBfSTd?KDQhZPIpo*^ASaiZwe~o+(dG%q`dp;{ZDv=irVrnv^a1|6;A& zbPhUuoyVN}8YSR%1oJhkp;>p*H2v&l$Bhg*eFJP|VVWRK?AS&<3@kf}jG%%SM0(e+ zg8CPT`o@_}qkfT-|3I=efDsG=g#A3OQz!GL6XgxTINL&?r-P*D!FX(7Z*U(Re;N7@l|J z@C?1-2XR_eT{#Y&nZh}-xLtNFlk`svG%9ZHsmUV4^ve(shy(^9j9U$eM8gklk97yd zR&lG1&?HT21aBzcEeeu@K+2ns0C{smBh%R!$XbCe1;DRz)l2fn zdonPVnO3Ezx#GQgtXLec+P)pS7F57-;u1CXi**}d5@5n^Fqj2jC~h4hZ(!sda}FeL z-c^2UYH9jJTABdZw$Uyxmp7MBJC1ZuvbS#gWiar{4RCeJ1aXf825P74GkYt28R*Sp z{j$BZApJMc_;S+t%4+#z$#w>9vc0wu#Z5b}^()Z!RyWfCf6T6wgPQ63&E!6aU6VbD z&9G|6@E(MuHj_R0jz4wF&E;e#Ylg4y&zW_!p)WV;a3EsV%Dz$eT+5A{UnDzZ!Vc{g z`tcL6`v;OI`ceTJ9U1nqdm24C*oAIrAjp=aWn|DDUfKod_DBmU-OdN(gJj>u&<^d_ z8gAs0&&3?X1No;K>c7>Qh z161QS8p_=% zu*|wyf?okMWCgWa!zV*XrsTRCJBDpqjuF88ghp@;KQ0F4^B1GB)Jy5p*KC_LBiFDJ zcwTUwIuSrKOLl_MiL~KYw=51*D(V|)rpar{{L8Nc_wT&*)h&&EEe{#!drR^DoIH#q zdrA$@v*Q&HE@q3iruE?ny;*^9)>>X`aY}w*!fk@rTMq&+>w_t;ge^viGwVSF-UpYO zvEkX^e`A_8j*PJ3`^0O^<*mRcg4<-g9{6y|jxi<%Pruf%jnz1)2VPL!D6XqTX3-7C z>C;uiGfTF29P%JMHtq|eZ{;D4acN*5;w|fXHDYVqBL82xR0O2s1apD3@Ck!IUsar6 zdskkp3!J_t$Fj`1ID0t;B`klXQ(0l&BDCdu5GFC!n zl`Xfg!OMV(!1_y@O15mK$E0|!oV#RP3p`j|zMA7rPgCs25DKDPDtLiqdW9R6Xq7Y- zH>?$A*}0C(tU(n4TtA9UAAuI7LSEW@Ahpn}eIQ2$A5$ zc!<+jLBmwS?5*KV!;zm`Z&{OYJR)Y$kGP38j$pUWgCsk-6>TQl3M@?YFH*wV;(I2q zehLvG%k=fSA52LG5dmF;MUNX9wZ0 z>bl(ze|;p!UjvOI8SC~s(H!-2iZj|p!8>!*msPvX;V9tl_BiT*;HWPtN_S>)8PJz) zzSw6Q;wafhb5v*ZuyzI=ubssY8j);+;76y`HvH_Va@nQWvgvsnV-yqSOK@fdu&xQN za|^*k48F}5H_W%degpY-YT3h@=mmU?r5Oc0u7(P_n=@y=Us8>d*Th44;6P0$PL-wHzS!rE|il)|eB zvP5c^W|Ml;sQ3>9qvBB^Gv5&{`|*urn}63wn^yi8t=sT_^^$EHubwAg8T@>ic=qZs zCywjUiScnlJl|5L)jr!5jm>C18fUyc&UQgkxXx^UFsdM?N~&f$9pS@2Rg`jDW_LD4cDkxrcRzHx1`I5|0{;#7uOv?Kl- z2IYnYbsshA^&pHHKSOUfOpiOnUGp?j+mK50yn6#`oQ(~HGjjJn*org6ysn!eE!b1? zc;%z$S}nE};sW2>kSL3c4-14z8_70CKTJ!n-W$ZlQ4oj+(4pMR2%Vc=?66&ZKCIv+ z!@#nB4^Lb}*Q$7TdP7%XJLx-6wcta524DP1Hjq5+hs38sO-4ox+n z^)8@9ycnA(XO>04xMTyfw2vYPlWGR?;0?yYc6(^of@_cy#{@+Jqhw?C9fmH1DQLuE zV%~_h{OH;Rtx)pw>dn(n z3T?u9y6g9ACkU$t*Q9&MS{`0{JmV&Q=`zeGC7KvD+j30bjcP`NHdJBQ;87UxCXl$> zuU`n;Y8n;SMpP9&X8af=AVf%Ba4Rg00LH#xtRig}3oz5enyDPEN`uLgqTU^#*v@<& ztQ22!-cxgd$Pc^0gdakFgro*AF&*Os95(Z{FwiUZT*OePsuBq%(vIP3< zve4OoR?r8W00PN5<{#@x{@Os3q$SK#Vv@fqTBdpP%0GpgCicwnNxuwc`;@z zJ08zdkyPVT;_)lWtiirr-K@$?PvxbRT%Y`FIC`sv0%4&b^I{8>7+pg?dI-iQ^ql;N z?3;ZUeRP$%_$(!eK)_oh3Mh=i)rXY8cWn5`vc;}qP^Mvys4pOZ`FyBczy@i$cwR~k6pAR-FXvsm9NpXAK5 zJk_3cBlGP$bioo_=!6C3D)PagFcphY_lT#km@e_#tHf|Y=vHAlJj3?kQ(3GjGciGA zdKx!XH+C94H7sI@HDw@z{ZathSknD?9NP9c3*?QbI*Z21U{P<;_~i7&OhLlKZO?J7 ze@7IRQu^l4bJD%`e?U&PRsCQKIi*Tz^G0*nw)^@GV6N@J_{m3QIQrIDBps!m6pCHW ziwUEteNY@RyAwRr1*3W0CLv4dzE7S*0OSsEU>B&ebbh=it4g}}@ulX2#|GpBQ}V$b z6NjFxk}*?xQuWr9lKr%%)NPXeSJ)Nir`UK3Iys>5o8c7G z*-rPG8*ikO$jKii&TJFZ)tT@rgezn3JQtp8E`6dDt4{9qLNn_ub|`3_vreuv0K~uC zy<>hg;*yOLt$zUvmLC*-f03WjT1`3N%ATZR^`m%= ztqeLvDkU84Bq@1@>;w}cEIDJ>YIr8w?P=6$JEX$$1RyS)^@$T{Ns3h-&(+Ww7q{Jy zp5gU@Firbzi>Hoc1cVEFg;KRvW`K;%7ZE_UpcjXhQX+x!q z(&G5Ur~&sZ#Uk{;V0z$^9bR)Sn?EoNo{ImRZI%%yh}c)9Ffhv&P7w%km!DdmONTDy zpRz4G_QD$S0XlpjS@*|nTAU*gWBdXbBIoBY(RQQeorvnF z1%QGB*v$vqUbC5{{v2@^9g04@bOL?16^cK6F1T((iI0h`I%x)kgU)p|k7KaCOEM@T zjHx%T``d^iH?r)?^CKel6DB)u)T5$7!YNh|=~cj4VnAAsXtAVF5j$whm=o^?I%!KA zV!yn#C!JF2U(G29r*mTL`#YdY%1p=iS{?nJ+-O@&$l$hmW!j3*)`C)#v*63EuLpVc{ zeuFg8^Z2)lH0?4-(}a=U=<@=7-xe*?X=llYxzHEPLOwI25Q&v{K?F8a4!UU7Znm@T-L-n`D-v7(B?yM(>n6!Pf zEU+iX71B(L5JZ%^VWb<-xqW}xxs-O;h}m1ir=DuQ&)(jvoT_G&wa)`zDxUN~fnVYh z6upoXEeJ}FO1$^{jsppo;IZxfyBj+q$M(GD+E)P5+ArV-D72PxF)pG%4S9;izkW%c zuoi%_of6_)Izlbj5urc6WkN~NwBe!_rd;DNmezYXwDd(P5w?>~zqow)?3K$aXHHM9 zvfQH7lc`m#MX$MG;8V=exMqf~+{%J1MD>7`M9?Wl2a-?UNmx@1IR?b1PvxbgXisWJ zlA@Vsn#E>vz4Vr*%R-vu_)MC1FuV;6-BcUsrc%9}+Z^bQ_De&J7dbmA&b>uX;zcvC zZjKw!K zx6s`?Z~X%A5TTfKmwL`O2AVT1u&=btIje+cq!KPjhB$fTi8oR*`{ofjbEJE6@RVl0 zwZ?opP_LiIZ2Dat_EOiMLVxY(dSxF1jw({Ze2X#Uccu$ph_fniDR|W*iuuVivsmM; zHlhO64=6w(^U7E<=TpQGH9vq$WW!7HL^O}6kqMBm&?m1ppnEn~$5P{zgyvTRTjVlj zRlISYqM_!c@0(b*aNr}ZUvdKhH0TaZG)wagAV*?w6GwctO(Kr zF)7{nH*&w=dYNR@kf*Z2xg{U|ZTu8PX)p&rloM zPElRSxG8movj!IO>k-yWMLVzT!gkMP$n|QGRxw2~GOHphMeK!eEpuAvt)R4qjT0y@ zo5js2hlkXHQbkg~QAbRNr83o#%#R8zTt>S<}U72FbA zg;eQD<21&g`1r9ir;qE6_UzhVJGkiTPdybr#Y>X)|y)0lx9jj(z5@5bA9wS zTC2in(df)z{oK|Q=x#{L1sYnAcp!O-@Z6_5=r)qx?t6seKBqJ!WjegoM0($j?Ar7e zi1f^DDyS~=>}@V2%lrvv8KnY}@4Z*F-ht%Nj#Evcb}UEeY*x$kEm#7{W4F{+bKp!4 zu+ALFGoY@?%$Il9{-o1kETN|er%X>B%xpMx+-Jzspf`KVkvMyI{eJC_NZ;yp9)t1l z(n@9>UsNG4ZtWJ}&`e>J8wo5shrp(7~*}G&P{Xp}?tGV`_ zc|t~xD}p3)WJZ>4C%VAY6`3sYU-qe8(M)vU${*c-&po%e<&GS9lTESK;vD)aLE>0IG@ICf*`Og1b5hs}Oz^Y>dAwFTCwxx|fqm2j!6WCsR z!8lThil!UD_qtK=!;@1Ji}RDSQ%CTbILPW+FNQb>=-cIGq^6$6nNPn_SADU)JDJ?W zxA*T%4nV&-2-^H{XgE&Q!V~i{j1aZqMXEtTAl+my3>@RBp{hZ2!XUiSKcZln&Rh@= zSQ)bA6v5K=hE2CFApIrPvVia; zKX0*Q1A7$F)AcJHoRcPANqvv$Q1Qx3tg?F$rn@4}Ka})Hv_Ayu{gXNI@RkG>(#DDXknU3IvYDY^D>%6rb`<2?OB>Ea^ zFGAN)dvT^2YA@&vrlq%*_L9=dsWjAH)=+z;%-v9X4Yilh3|mrrNojpAYcCP87_R$y zqB!@}hwFaru@Be%h&i1whU@-de7NqHmcmeF>4ximj+5cKzeB*VcffNPwWO-M!>Hwt zP}Fj`?$1Uo`$$tFuNLrA&@Pa=MQb z5ZLtuz*KS#htb1AL|1PYDko*4hdL0kDSh$T0^*+?fEGQ@M_kysErWv8!I!a5nl7*N zP6QDY@@+i*l@mo+%UJQdO+XnWlC(ogHmVH$0Tnlu_`efNHSl*@D%$DgsTL&P;Nq>J6 zIcZOpld{6}49AH;n?P4LtkG#RP6VW=#7dBEyB{_6Zw@f^T>vJ+-gd`Rp%?adoBZcC zffLWz)zHL=qT6S~Edq@q#BUEkh+f+4p>AZjZQcEjYHI7@DYJUtv#qyt6dVekWys*Hm;yF>>hk(vAQG7=MU%vL!Xo7Ej>fn#uj?%z4c zc>r=Djb1KDJdonIk;7*c;D#U>P}cPn2D6|t!BCQ9!YEkMZ7Col3JG8A;x9r_BT}aF z?hLL(>JZS`?}DM1NIl+>t7hp`3376gEXF<2I;w?4yjZpu1nanhrUspbf@r+7FFU=h znCKQ;Yn~|#%rj5+;F&Am#sRJ~$d9(z$+HtW2XORcyMIP6F{+<@xjud-xbBbs)VM)U z?32q>>((280aw-_S#;@6qQnW_2t z(qdt9YSJpqn3csssXRAbm@ZG4csxBZTbW08ukLtuu{bq@#%*@-RX>?rD9Z#ZTdNesP-?ihpnbO?U;*?pKo|>-|W+tZ= z3JbINb8cc{W@37=GBYt{BPUkM;*h96Rzy`g?&$$^TyNX?lQ}JyE31_*=JfPSvIG*V zD9Eo1&sG+|N*1~U=Xp`6RNW###i!+R^tSrYDsXuq6^L>h7bc|&ToO$Yd3hQ~nq>i? zD+&HM(?H!EuCwjBgKYT_<*|JjIQRqb5%{!GJe3tXa6PYJmT|v2YycY3wBb?IXzr}u zHhB;@ev2FISe5Tou^d$7Q}tYNt)?lOlG8zVlQ?eGL5}~r?YR!!xWF71a#k=tLpm!t zbxC4gMg{owrgT3Ft~JHyxCHF{Mck^*GWeOZBfdnvSr3&MtPRVf3Jth2EaGzpwATr!z6S%4lxei4I2j~bmhP`E^bp@go9h;TZ(%*qE5$Q%=@V-!KB26WF#j5?uo z4IHjpV}UGI4HRx!3EG@heZf@^^703EaRa$*;-tCgqi)kFX>!&YK2BC+>R2YQ3oSa} zU6L-esg#NhXa#nuFcMLrj7#M}Hp(Udrb7Vh7c?iFzleGk%zWW(3yT*=g;)?k{2B~& z$u5~;g;DJrCRJ!xl^#*@30Q@zQ1@Iqy}~C44q#Oq`5|lV$`1Ln>1`Hicp2rEJnw;zye=OmE9< zoFy-Fj|aAnu4q?9BlR7mxg|2QnI^X2#f8+&5{j~#SROJLMIekBPH`iY@LJf{tR_FZ zf`yHT>MRyJ6(+3Zfn;j|r3u!|>8tK1tSQd(v?Q3MLVl|-8Ys?F#XSM_o*|w>jQdDE zTFD=M;|-$-(MNEnh<0#&-hA_@Tv{e~Wo)$q`Z`l*ol%%BfwjrlFHvysE>XU}u@#bka{wgwqWtM@DBi;;&q6+m@R?@{ zq~9F?q~3Ht*A1vmrn_|)>E7Si3d!#bfaG3uf4&=vxp4Csq9T0up#thp2LP%!mPtw)8RqHCkGPy{7YVB^9rm?)GfLQvvvB7Lcm>V`}r zx}l{v&lM<_Sb&1p2uC-q%lv#LTGiLBfF$bH>gbfNeUh5>K~WeUlq|41wFOPdRK;BJ z86$X0Ion+6_pV*aYPzySZGY8tA4^r!jSyf#Tqy;n*h1|7k!GAH2Vxuw@LiIOb3`=F zIIGWG#tor%-3xf8R||an(k2#B;8)V9Jsi{_#1$GcetFyd=qXMQG(~a=U+y}^f++Gk zSZUzN&aHY^06sPF6h7HHg>24FuPVM%w^IVRePgB2U&M4aYxnR9sq?n1_=A_ghuCRj za>~naP^ef`qm(-95=G5dWx$g!v1EQCBE7LAmrDrprZhi`6;m`*D$259n<4H63VCTv z6^RuCXUvLjQP%3hrzLwzfLL9t7vvl_gACnfohxW4fl#${4KciRhg!M8wq-p#3lxoEweiq z%)gSaAdR`2*i)IB*i)rkP3);nt%*JQ9NRsoO%U8ffxRc}A)pp~ByW09Y5-dhC>}SJ zFCKUH9P|2sr7oqkd!jYPr(ej)QA#>h`D}GzLF$QSoiFEl=q-sWQWE9hOcF0{Hii3} zrK(&#)ml;;kMumhwn_8M*3_0LPCV-E~VIjSOWcekWN#<8Lr69t|}C8D0{ZypO%e~J)^ky_*N0u}ruzOu=z>d>$h zWV(vv@KE*eP_?Lb`6E&aa%xx#GJB|69x@*us-|q(;h}26!myAnP_Pw?sZB{~Wkg~? zvRb-4;-5VaNFl8s`$D$zkoi!15l0NQ7nh4+NrP&BA400*ZkK_e7!?=OCSVvxfBUd8BxB)5Bj%u`fJ?@Sww0pDR z^sFl;j1oV`}F?WEu17jFes_ z^R&h&=S-D<>H3Y%bG>KZJkxs!hI2&?p|fGyoxb>9Pm9 zkzwocpf$kMd-LGK-6p>oJoxTao9u@NHvt;OgV6wl=*5HY??#5L$Ah04VCubj@F%j9 zPaV|!$8=EBGW|@YN%92wK^cb<`04Bnt2#s#1l=g6!UytP1FxKb>XdYVhfd~D)k=9N z!8B?OFLqN${|t46L3V(O3G(w*8Z%X)aaA80%G7J%ekq;O`O+4GK9v&vHi+ju=G@mN z`ThRf9A##7%X967{bH`S-Uks5OD9YM!VV&Qpd&ibZ4R;lz; z+jDC3YJ1+9!Ic90^#P=~mje4>R)#Z<+?B82cUOvG8pfS0hiMq|6SG~*OWtxpOmsar z)3xhcE{SOvbJN|s?zbpryXvM>cec9e<`Z;&syI1UoJPISiABSho}TN9^?7T0!Zv4T z3-jg->V=jUrwa>nmHC3TurN74KV_HfxhYkMly^NfTbx`#z-Ycljnlcg*>c&Qw+r^n z)C9UNp=)b)reK-#lXj&%y;z!JrAS#-R^Ii(d~pgzPL0`#>8?;)lZ)2EqE#x`Q!}W` zIx#m@SS(j&3R9-JIDrbPi{>KcZprw=P+A8pUpti6_O*zI(#k6m-yvyLX8gAXFypsvGg5$!`gVLh2-o5H zr@+WQJ$kk29KYIJdlW@!lk_WDnqx-9dJp0Q@{Sv&)CiB~R|>jDidZS62Ie29j&bQq zDEi|JJbiR8!92vlboO!>oi5dd_w&_^al!OWl$({leEzX^um9&jt~`|pnU${mpNOWJ z5+QFPcu)1^aOFvix-We!w^$j5EZDq`NUedo<*9Nb*>9-YL*U~oqrgYSSygpi)fl<^ zfM_KDa3Cbpng98&Nd6(JH>RuMjv1aEqa3h>O2?v{;1YN_gp8oZu3Xo0RLWYqD52|y zgkXg_3e(dioj50tG8d}SOBU^8s37Q3r9yV}ovONkM3EJ`CEoF?XIOn0T99WOf=*zE z6j-PEH4#^j6^rB836L08`L%(KRebrg@rwV5a>Y&B477?t$gz}Gb~tagZC zl`=OE6{%J9zLDH2I(LM*&HII0MP#>OOS0a!vy)W>s>;8Ui9yjXHN@ZzHG3O5v}D5p z$DGKCZRbfSW1#>^uT`*@bV#+sZElBIWz1~TbfaVhB`8A73>@O6*MnT4AvP-Z} zGueZ0_*1vsTuyefCO9_#*<=^J*{Iu1CuU!vswOKK-TWd!V`BJ4DRPpEEJU$wv@IbN zzzF$#s2`5i*pl7%AJ9;cwbi)40vQOxGOA!he#>?RkufHmIq{3lXgxwj@iGwBh}(D`n(Z_%mJ%Sp+C?FfBk2P(as#q~QIX`Ov6wCgwuO*f8|4MZ-p z^gR92aa6+}qZi-|6QR#BUiT(~8bt$UdriZ)uVZ^1fzzOtC*r9px;D%Pl}e(^MVMuv zl5RQnVm&dBiK?@wj7nDkqvPDvv!E_GvSzNM+C5zq0N&hS_Y2Wj%+?SOauAr#qG0RK z+$8WXSg<8$2*REHp_2}B#jj8qZn(s#oCBNj= zs_P|h(O>WuD|0hpG#6Xf;7IiEWP6iAI}mdwYhiwlB~alt7mcH z7tBtojvp5RrVyAzfm^Zo)hcx}hLgd}0FxkE{E5G^6*4<+D2d9McWr#Fh<;^YMYPmI z5nXv2o?l-*Y1_~hECvobXKK^;?~6mi!xDmA%z^^3Db>8veG2a7=W%gb9#yvJUREW?&6Xp+@3_51THZ5E>()@ zo$6j|f`2uzCb-x`6D0rqR@4By152#wa@v6W5vBuhi&qu*#*z|v;|SFfW#Wxeke2s;(f}jPlJ})4~gT(~b^2d%IdEyu?6l~-8k)y}KLP`*S)MugO z;I}tX4nC2U1MQn9`y)m`iRDyOTD+kgY8DO7m9Ne>6!B&i;q52j{19IUo_Y2{;Jb*_ zQ9NGQ+IFur^Z(&M%uj*mS0wZQKs3z+p8o<%sTzlYMJNJj1Q zh3412quJPRcKz5n$T_0gshDB5X`eyPQOyv!IA`)`N7iW$76QE@B}|fz#m1iKi~lsH zWaIt=oN8Px*(v?@5Z7?cA<7Q>>}KNvS!BKwQxGaCN~vfuNV}afIc>Fp12v!`Y}r8!J&6382FYOI4o*iP zb4gSiMw%hpOzpzwJ0k>)EkxtTlJ_A-hc&Bo0)o5zwJaS)qca|xTb z@*BI1KN~dOwq(E62t%mp717snvR6KVGiW3JzZ;i8Qf_F}Odg~iBwY9r6%mO7f&4OL z;}z3u*irNCCf`3vcJf7ObJ@9nIT?Yo!grt0(+D{#@GWa~{IQ1*xPnpE@#m=cvk`ju zYhN5#D|G!Py~V&g0AaY%OdhHPLF@;yoqD;nE!l@fSnM}yD>vXv)tY#+pVm_K6@Is7 z9HGmD{0XWZl8Y6s&;ohI^2{g#@EB1vP!INEO&x^siU;Ec^xd0`I;N-o+>tzpoLOLv zT}vfD+L7!i+oeVo{q4VQhCZ-{FK{1d4NpcWjAzrNnqN%zyFM1~E4FXp)(=?wWTX*S z3JZnE#qW=0U#{3;7=$ahO|^`=0l+wcYGKRfevau>FFRN-&E!z-O|FYI5BfCO&->Ld z$kvZ#U*sAm56~RIYmp%6(TL!OUv*kw9*_rIenl@O`kCJ<_{gmu0H){12#ezUAd%z^uH$5WV{p<;2ZX&;a zRFCXNIas+-BbIsqn^oA?T}iiOTw=v5xH*^HF6wKg>_&8VD<(oE&+%xN6b*>kUQC7( zrJ0=J-9GWzO2zdsxvS0O0R4tRaDf4nMcb#|${_ik(7X;(@jt<$50ZR=bNnh8(ZetX%i>M0fv_vU>`b63eb*OWC#K3L66oVBCpo9tInU z%@U-j96QaW-N_;FWNk%>r<%Y@R0r2LZzd05EfbqJR_ID$5C4IGx6^gL&17#>!*X-w zwFcxm0-_#ffAc?AyudOAY7gO7U5bR;A(uB`nV}G^*Bf;Vu^-UIZVdc$J#Z7;6IiZa z0S`#U@DQnrs8Py&=hldMJzN6Mq;WgbO5m9qcH|+#8vp@!2|MJBVKxtHsA{f{@IlmE`!&2)Tj<;7N@|)HkrXPQR zOq8|XrynPfpS?CuKfXtQ{x|yZUHbFC(hqApeyq}u!#MK0c94ENLO&j&AOD#?{!jGd z`&a|4eUE<3(?Bx}x)Fkc!Ul{F7#uel3^&>MH`&-X*|;~^m^ayYH`!P>**G`Z7&lq} zH(B2|8_wf!3fP34y=*qlSNK#YeTz@!SLru46-pZ8Q~5Ui#-{Rn^c$NBT@b~mLYEfu zsnBTwJ{8(hU{hHmf3%V8OX~)P=Y6dk|o|_A!Np-9!|=x(a_;hPs|T* z{}^OnI>cBidHez$6EY~EZNcY4a)pd@7^ivO616x9hFW@xv0kzto1O6Uan(J$G>%?> zpE{gj{Fsa`>wHDLdWTv*&loiMa36C{4O#*3F1^4wI@$Mf1f|a|dPgNW8uM{*@zN`d z%aenm<96Gw^z8@mEiO%Cf{;A@lDGoTxJVb3vfJF$oOvJ>hKTJ}w_Mszo&6U~7T1R{ qSxUNJP=>F6AA*HA6O*?jpPh*JC%_X3_%JC<+69un&}=kH#s3c|0pn}{ literal 0 HcmV?d00001 diff --git a/stable/.doctrees/nodeoperations/automatic-cleanup.doctree b/stable/.doctrees/nodeoperations/automatic-cleanup.doctree new file mode 100644 index 0000000000000000000000000000000000000000..80342882318aa959f8081605df0ff01095e99b25 GIT binary patch literal 4219 zcmd5<-EJJW6}Bv|q}9KiSSb)Ioghf#pkA$9S&3Aj2nwSp3Zt7KEz+xC!sT$5ggE4M z$g#8+2GWb5HNd+}f%X~tI&Jd?>1*^mGdr^@RdIp17ZtG3@Q^%*{LXiN_+{_U`R=Xy zFYLHnDsy?rlEm0VxGJnAmY10@zWTa){}0vk>Otri?84cy;Gzn*u!2jalR}v4^D1o9 za<8;Iob6wAf_r66w_Wz+id_A?dLa9u=atuDVJdv|^U~XldBr2H1v6zHF_T1v$Tj1F z&JigSappvHA%%&~PhCWoBIP1&ov%nWG~fBHxTGV$y27uj=GH4Y!yRE@FZAOM6uBH$ zW>}2E9j%P0M&+1=b>@Ac#-#^_gxRu69O1LdHFFL^eD@5?nyP^mF5h&}Szf4$n^bPtvoa<464L`1pfIC&x$Q$EP21adw=h z{Nz#cIC*sR!KpYM;@EE39Ct{l*<2LB+8Q@xE$)LE?uS`Y$v5Suyf2r_F(B;&05&OD zE*Bm4mtQTqV+vZ-KH<7_UKHdL;Ua59WYfq?Q9H{;Nhu<4;YzL&@~JH%ahYqym4~l0 z`;6&_(Qo)vYZiTC6BlJ{8jS_FnTSf`xD-jL*;tEK(lO~?Nh*Hfa6feRMf(Zpw?Y9Q+CynPi_&=^W0ta0vts@LlTVzpZ zVZDyN#rTAyYo{SV6_<5XMiS=6wyYz$;h$?9^g!;1UVZ3l4#&?H;Q;eiwE~xzUgX{V z?gTg7vGx7S7tIa+a?#++@&5(z@6GV9&xzRB52ODrsNadjepp(6$>iDhcg7ryE9i^= zO2!t9S)!P42p@GWYIDi}xqPs|m4Pw?%H;#fcXoYj)HN$Ny&9EE;ottyV=tf3i&X+?h9s|u5)jk7j{wz*A$ALw;oJ?dMm8A zYea%!N%oe)HZKb*LvdGhHd{$ke8QR&-YYXf?cVE(aavg8g-NQg@)^@5s!mtUS8VC? z(pMw7GYb8QFjNw3QDKlUlrPV+9D|LpQ) z!X{{C3maEnJ- zaBb$A3i;Qt-6)+Opxt`^>cq93VV5odqB%JWyDDsHW+o+@2*917g}aT;ExcBsxE4vA zh#WM583m4v!V0%0#T@~MN@2Qgl&qRcrFUJ6}YvPlvy5k`~#}BK!JLNVVV@~ z)RLOnGpT@c~#4Yau35d7Su-~w&T1T54lQ@;B3?t5W7 z7kLa&1VWP6fNhdwjFc8rWP~3`?{oLl;SgeXm`}a5=Fk?CVHNJt%K89U8GDhT!}V~- z8svj_j~)Zh?IPvZ)RSbc{zt8PL@Fb`o{Qp837^(B5dA~xGYw;X&&CL$#LMdGS~vh9 zv$%`R?gFvPLHX)M*mYCm*<~!%L~8s%-aFb7?>Ak>5M{qF5!4Pqy;hH#VXQ4@GiVRE zM7PM{_$JtZat$GNpO-mI&_ki_{%1+x1=wS`GATIFW`(KK9=1RRXf=w8?2N!m=>WsCy48Le`ug>1T zZnSrUrkgC5;qH~IHt(66Vfp)w$NRP<HubYW|e*!Au$JS&<~3yqD0@>jdAap|Ijg07Y#5VEn=U98l?*RKh?)%`0P z`>oY_)7>ljQHKgoh40>VU9%aKe`MF1OH@NPxYZgY1aVMaSDz5aApaVd|El^FnF4P! zU#Us-e#D234>A Ls{UgIvK;;!W)@;MNq)#1xSnbOYIGBmvI%QE+^gJrRPGB?&p!Nv=0Js z{_5}PG+gX$kA3AU3z`MNeXVEvuAR&cWE-wo+ck7o1((zh%Mo!~#9GZqrG-C&{Tn

              RUv!t4p%Q@PuhN zZ9OXH1M3EBA(jEAoiQ0qlaQr3d~wIq_kHLM!+%i9(JQ?Up;Dczg+9t>K|vVD^8e752qRm zgl{#ydW<`{*qM(_B9sXXQ0j)VV;RUiYXkTaU+R$#jH*ttcl%zo!%FzV6uiN;6{cEe zFFw9CRlj3yNk@Km_|tZ?s)x{W{=$@{y5=^+rEcUqA%K1aWz+>9kxko?wm0RwGh!@IBf?UN@9Ic<+YDfwY zhXk#)WDn}WBqA&5J=nt@;Kf_R$ z^hCduXZK|({ij?|2f6zgTQE`Kv7G>D5>S3bJ5?895+onY;!PGKt7*-!5S z!VkH@w8)zQGLY=h_^h6{9ttS+SKEa^_`Y2n~n34`rydfFEMc z?tpBDz|p>l^q&W5CxC2#OaXLcAjmqYW*-~WW+z0~x-M!ETQ0HHd=EV`TA(0Mx|(IT z5AZA5!Um8Q&sxuUo`#)B#~$jZReqk4;E9KM$?p+fGUegmCgf%ADZu|FO5LD@{t7|K zGn!7ShjST19kjM;*ElN?lC~2+O zn;^(eZu)=Udq3ZNNq+gAbDr~@=j?M5t?rm`u%2fH0011fOmEr%05oI(fL4#0k^0Yl zhzC3MOE}2rZjdeHX;A3H05^ca6UZYs@moF*-Q8^59zF^4A9T|J0Nj4ux@lnde0Hys zBi+R@3=<|bZkjWJ*qXw3+emhwIURX5+*KT6)VX}7s3|q~%!tv3&-6|w_aX0Jdrtau z--wqbUbF~^#DqzRT&n-g=scJlC(kG#Ek^T*MWw{rWybsARRv+FQ>Jmgq-X!+BIT2> z=Os&IU>ge2iXlf;R||WGhx_JtVaWNEz&y0*I31Pk|KCr(GCK{Rd#x z2f2%kAPq!-XKRb|-_Yt~X$mxHfyOWkVuY{}AQlLi=fmX*&@cYb?ZSe7Y|)An0qIrU zj$UaZ#*z7ame@4=&tw|zD1c06cf9rKD_aUQQU$;a0`QqES)}8c{?Uu31u~Yy{?THU zIeciRYeS&|=nv9&wO`)Cw>|lRaWhB-ms5g2a{NQ21&hs0(*kTL(TA$^0OrVBRzooU zau}5m;Dr(w^{{1kW&k&qw{A@Gl#2>~N#-yk=L<&saID}xyn8JqAI@EJaNpwA2(cOlF;{Pb=f2VhifQL#RK8XGe zqJn7gV-Iq=5pdL_pzgP>5Y5x^w;(DP+|OlLNa{x@w|_+SmkM=smXaywU;UE-z1Wap zjmZx1zn^9d|1o{#X4im7bsl2%6%UebjsM@Z=)@1LR2pXf_f{{MWVr09)R6;LfF3Sp z9sRIh0&p&6b}Ae#m(~C9IK~p$92y10N;TF{0V4m2F#7N%9W9t52ADJ$gI(yQN>2O` zux`);62$_XI-haXl! zizqOHibr60MaLZ_qyX4Dh44C)Ajo}=GIknqATgbPPC&us?h#c* z_y{z7OeMtW!?K}&cYaM9-AK;LNTJt%Xr)~9-+PI3n4WH?7{+r!KFmxv_KM_Tq))lh zVgGUQ^&{MdY({bv;)w3i-vRQvUolL#^csGV8Q!ZML!+;3r4KJ@dVE>`V*1Xwa-$S1 zt#*y8z)I#6Zi8raIK3*$t??Ppc4JgR<`miI0pMd~p+x-MV&abSxJ2eplY#+^is6^Z zEwBUz8xq6HujO76d3Cpf^NfP=NnzHPpsI>y)VBbNJV^8J_#qT66PvCSB)*h%Xx}ps!$sBb3md zTL=&Z#kRsqNUhcYzT{x?s@OlRFqAxkFNjp*sq(TCeLvxBv;#bEU=K^w3c?<;O|`W( zaD2%jjXb;wV0}^T=7Vk@hxhYPjcYl01q?ne%VpRl(ImZSBP|?&=lChL)*|7`m#pIL zKp$UHB@-9>-%aJn0i^NgBLq4=7Jfqc7UY5<4Kpa^GMN`zg+V=31F-g82NNBY*{LQ~ z42Y)U^%=^-)QROPe9WM3j}@vJMXwb8{vX5Sj*6c60bk)LBbVcuWCXZyD=@BJs_Ik8 z1rW_hHBYGIsD=~^6juYJAJ({Cnsl3QIa>TwqUh8I{!0^9iQ6t%^ z>>*kbr)h_Du}S}{C9k(0EzZmwfM#Q0xxXfOa=)1@pKLFSFO7J+$Dnp!^!%j6-#Cs| zB6|xl#sVLx9k~zYztHa(NCQdl1s8I4rH*3yKNuPsk{@6F$-5Q7Kqt+_i2appP^0k? z?_La~qWlKvA1sko(hS7+_I(y(SuO}hf{pp;WdK&<`d8Dv@!l)QVJoUXDNclWW)fxj zmHdGkzAj4}!*YkC1+ugZfYX|Ec~g=k5x~(0U*Uf?m~V3&OofSZDGfX@VyC|&3cAy& zueU{21uBdLP4q{~P{)N(sGjRZB}Z^<7*?l%_67rhm5~bAUqKuCW()b#7(^Am9?|y7m zr(mk$EHepN5ZAF8c(`umV=IZp6Jb@l3F+W`%bh726Hbinxg}0}$n(Yg-!RVBSc&M* znp7RTMLGJ@P_4-DLHC|$@B8xmi)*sBoyw0B`~!FI5XbMF3gShjE%JDYb4yE}sJ*}S z>~}(BzEI9lX7%>Ks~~qxKdPWwVJwu;&i9+7&5_*kx9u?jdt26Z0AH%HFEe?_kolF? zrC=FGkf%#*sSflq%mo7Cws@}<%N-C?`cC|BDi?lm3Kmc0qLth%MZ&1nfGs%;{jD#= zvtG+){P|vsyhE^i6n!Y8!BnkM*Zn54u2k)Zv z!pATwqEw|fJ)%ZgQ86^Uv+gV*BfDPFEu96x45)kY8`Q(~%Zj*bPUakz`f=Jef}*3* z-$=)Yp5{DY?&e={IYy}agdYN0gw*LLRrGZ|*gl>QAbDYJ-DK+G9iA?+H+I62TO24x zfxky|DdAHh+Siy_H#;BF+$%i!)j`Re6s3xMDOSYg>OB@%z;_D)JcJ9x zUcP*}`0E$<%ePm|NZyNZbNL9N)V-xK<}sT4tl z5x0#WPVaI{HEjz*Im&^gmnL*Kg%e#;BwET!zc=7PEe zh366irj#<{|7T}Q!7DXk6x21m7MhSwPm1Sc8vtgyoFe)Y+N$G5eK8ycxw8psp%SIY##SdnX}EzG6~QlN5HSXe+F8_ zG{AMQXb7fGS#~ieUZ?m}&Bq&GGK)@l58X$r`tWbI{exx?WTxK8Sz8I-u#q!O2 zOC9yyF)e)jlh+>$>%Qpmt2WG_HQ)wD!g1^4=WR=EuYfW6SMDzx}uB zDSSQD7#AG``PQ}SxSW5TVnBSR<3B_=-7Yi+x$Y-}|49f$ zf>KziZ|Znm`VRXBsd0e*QZM`hsBsn^KR;$FPE1z{_aj)@UBdIi7-+abhKu+3vE}2G zEFq3q;4vMVV6~Tf_@~xj7A!*6e>A_JOv!X&d=r=|K@E@kXJ6)!BlogYxCeO}NSCQ` z;bretIG5Yw$+f}74hkr? z6dHfSfIVF4g>zY&x4x~-?|MG}p}Uy!{pZnFOa9+4UxYUS>iA*znNIikFBz9yCS$NG z6mBZKXd#-=_IDrI9B*xw82&(AMd%9?HO4X1*Wqq+lk9Ld3a9W2=6_Zfu!)t3*!i0& z8BZ8zpq+hqhpUwFZ9Kc<sy3| z7{F-(*G!4+x#+pjc(46h{~s8rk@Ilcq2b0O*bB5z?#6|qkftjK`;WC>qNH! zudF`n2VX;Y=PHjm>0Y*nx{xSosNxa6g0Fad%NEWqkGBJ@f~poyRx{Q40X5I z8;IENif{~fy#X2%4F4F3mti~Hsn6{oZxVQAW$Xga``j*e0@MKnZJ^r-_8#VgoNI#- z=$2PvXD{ZWYJ)k7V^`y`3nZ^`l?-GGI$td+>X2kwh;S^~mvFY*`!Wy%BKj?nrN}kD zi)&1Dpx06&1qUx?Q=aZs_BH}+OG6k$IG4}N_s=3a*^+nh8F?^tiFw}97U{*IpxWtr)cBw8_k&+0`buAc6A z63aC@FVw~tTwa8ce(bf;NR6U`JN~C}94m$G@8z2~~ds%E~Ki;arXnV2ayx!h^)DGCmm8SrpZwoNt1dc&@3fe?=NDcZm8bh<8V=B}f zLmGQu{X1BAJy8jQJCc9r*2z5xS0eKBp9WWlj6vFTcP&WP{BiW%_AQhff zPwfJHVe5*GsuC>pv-AlpQ-Zgq6J`v%=m7k*2X`qR<{}K!+B6kdOJRVcBjD}`>fH=R z3p<;=#4}&tpL#@1ZF=G+0U?|6)k}yeJVp|06;wnIxKV`KVFgs(v3m1}c{g$yY~Mc) zo#=_npm;_SRHvs5GhWoYgE8p8K931!T%TIw`PrCZ!Z+b%8^`ih#IBsZkw|0!JutxJ z{dqv)ezf~o-u`bQg$#{|8M(<^8TruJ@x}yrDz-MP=-M4Vor}b{Ae@5Zu4+6NJ)pNm zjRL2J3E62%f1UcDBO{m(8%C?-rSDB55BXvud0#yX8B}ePft$)g@?9CGli_X8!@EN^ zL7-V1AfSY@i>BNw#E}-@5n6k)UL9!To4_LoV+D|P=~&RE4VzDdAh2mHqvS48@<+-s zP0ebOhVln1&C-r_Imm%Ub9h#Y22!{VwjwT8dted~TR{6U?{?k?i;(x*$zbCP<_LkLB>XuE~M8oo^buq+!nvx)K9V zSP8}1hvB0UJ|9OyuuveK%;s-R4*OM5py<`{nk{cd3OvlB^h`YsgsJ9=m|C1NL|>5M z_oDyo^THjUcCHi zbClyv<<5Cd*nCv#YJ3NCROsk>s0N|kY}Z>62#B;^AljlzOyILNG)pc1t1ow8P>ZC( zLJ3r;wxNY*`345Mj5uCX>N^SOB>!2sJ1hQS801(4uM1hxSU+yOf||4sO`l;BdNB_d zlOx;mJWyqbJ}uJbCrjBAO`5w96YE>v62$a`rRIj)XMXs-83)CAiJZaU!RSLQ zUV&elAv>RJBJb9v?Yt5KSGJFA>I4!GlK7c<$@~?7b&N##gk$rU5@*w4Dmipt7DufvMfKw|C(RrCGb^frDK) zUF1N(ptb^Dmza@OsWG2;jrTa>9a6zht9VxyTdpd>f}QVT>H6P5Pdb)WVlIm6b6qd3l6S2S&Ysaxdi{}r+S+@z195u7uBRYzWzKz> zjlxM8CP;RT7%J`mITA_*x^P3+`7&nVlV_oJ-JyTWP{;kFpGE<+mwx{7U+wT*Ks4DA zr7<-J5pu-#HD2@$xlxpNqdqgK%WuK9fBZXFi0dJ>W76oFQR7OgBqFpD4`0d`fdYhC?SaT)PN9DdJk~K22v=4jo;$>|FL?7t=RB02{%) zND*rYO0UQs$b-~A>t|w5`E*WN-Q~<(8BRG>Y0k}X#sJe4b9L)Cm%QDd^}!J$iy1XT z!YPOC;&^YL{F(|%M>WWM}-&N$!qz)xwG5 z{l=IID1b@JmDJcw@&+?^UHh*iL#=$3m|59LICZ$?OU`@_gre5k>o12$^^+V8zYXFm zV~AL&fo@;LzbxfK@iq2cY&{RDaWtW8W_@^D5)bfIsXcy*g5i2V&(RQEZ)sG`;z?QF zEC{;ue%mozcwhfSe$i+cPxa=!2~d(h55FXyLGF2ivT9fbx!EWX&*b`7@Cm?= z=x}mLREAm@c5RKrF_Paq^Z;vI!K8NLYW{I`8%8Pj00)fOzz~EMGDRab{?U`i@2i$F z6xFas0e)(zW_EU#5E5m`K z-yMan#ez5{;O)W_SyN>Jz=97R10V*#{<*RyJnv^*u~w)ks3*T=%lxn^b58;fSl5@O z9H@hju9uDY;6wk7RkCt{MyZlGE#-V+R86` zdyJAGKHwwy-UI?}BgpF*=vaHujQZjq<&ClJcm3o0GffLAF5Mim?yTHVSCh!933`A( z^K=4HJ7SQrz2-1#@eu3IGW*o@B;SBY$rCLg@#SooYCK5hJ7ufq>Qp8ZqapnVCYA2mb;P3 zsDm;FVSsMibpeJno|E61%vl*$1BCo_;skgI^8J=M z(LKmjSZD3bVbIoV|xn(t{DBWp` z@hX(U->Y$~7!l;P{)oo#YkRW%V`{OWiY?6ZOz+dpD57DUAW2o4G4c)a95b=}Q+wxB z*AiD(xJ(lQD10eJ;Odu!BTZP!fYJv+dU|RFcCnqd^+s+$=LXn>Ni1S=V;gyjGBAf8 z)vRF0wWCT1OqSOo&A8mNH(x(wb`pRZr8?^*KjJYuGMaa@yrJ|ai+NYV9d(|S@jZvt zs|SxT_Vl#rY-faO%FppAPqbYyx_v^BLRLu`rmA1;EDm&6wV!}%tMA(7f@W(ho+VdJ ztK@?<$uqSTOQ^Q({WxBd1oAs@?zkhg1BEM{Jh@kx(pvzdt3uw)2%gw1d=Rb6({2Bh z@YGlR z1^dZ!DOBupmMq7qB3L_RU1AEoc6oF0R0484BElD0=|ZZc9MhpPATWgX5wWHNkt(Y2 z+db^*(v!n3d_LLps+)2@CG85JCFbA)btZI}>O;0f?JcEmZ|kxt-Y52EVIXtPzmKrp zL@oKwbS=C_P})&x=R+(383%E{MTM+&@mz$XUe3+jfGDf`j9dYZObU36nKyxcktyLAP zaV{bhzOsJ=TmcIfsv~ z1U|}FV`b;#mJ#}Myw`LyhDHUDE;VFq4P7whuOKjTM>fFqx>^U83M_RAZ~8--etC3OnE;xoSF3n(W6X7Z$W_0Sr0 zG+RUd`IhF+Z@TDwB4I;ZJYnd~Y@PlnMZVI|5@7lcuWLMp)F?hV31?RVThg}dw`q`m0o{Dv`$*|~Fb{)7_&lzb|NHM~+GrrC zUJHAkfx&_m@U#;`9i6MbXs4gL6M`l+do$R)upz&~k=WiLrsVq(^1i8P8%dS<36sUZ+dPR zNACGd)NpCP88_Xmfp488sv0Md-gM?+-cba0uo3@yv?Bh*tLOXmh;7U5E+f*R;fI4| zk|n2*qrRv|-q1AB+k zq3VJ#GQ-7RCktmJs{;BFmDGIg`;kTn!CNO;jy$Z_JbSCTOr$5zq-(lvI7@SJIk{6T zECe(9gys@?mn2@$6<%;}$0ApT{IVe?e0Vg{cZ8rA^^l+B)P<>T2P?S+5KV5(3gc4Y z4fy!OG(~(8Bg{KIuTs%65J#A)h77J}Ssa?I5=6o~AyGb1bDHQKoezZghHtlVj--Lf zj#46Y0(Eqw)J3U!s|LLnIu=fFW#&p4a{3F(Go4N(}WRlRL8deua?TZ8|{^Sjb5|`JZ3m&KK|jK^Pg6m@39b;Q--$4 z!8;$7-?$1cD`m|&(%eeh4)Yq^<>eJNqL@+Cljn6~K;eL2J1t+R1BtKf8DI95Kc|&u zT;cdhYP|h)ITmhRrniCPiE^Gm$UeEUWt)U734`u0meAHe-9$I?LH6-V;V}GQ26GhM zPIh`QS@ZQC&jUj1-m~RE8V|-Qxw<{M)@x;uqgM{GaGx6u2qWxp??S1Jm2+zdiF`UH z`fUTfekJ!_u9EV*Kd^NmO6hh<)Z`b(??{~!_wU8o;^ldXT29Bh+~W7%A2%12HQj8r zN`)Dhw8DVGsuIK&=%>q-7UQ`-8fBTRyzi(itvh9OIfMgq%Jia~R{pT(U=Vd?(U+KQ z$jyr`b_k?ZkHvOm?Qa#ejSF))b?yW4nzKvYpq># zBgrE2DPXkV_LKH7SSM71NgQ_MP7DdJb4$)duC``fh_9g8UWig zBUgnpQL=AC3JYrPO*nc{x&&s54ACB6bMIl&u!c5w1@Kj4iMw3VrcE2Av zH>}%BH+^Np|Nb!Ga3ZCb1H0UquZSvlbL58oJ21FS!x=5f>g*(=r)%~gx}+7JOWPKzHlgERc95n^Gvcyf04;6-&CiE}uS)i!#G zNvNd#VWtDtXTB@xNu5hq*%+ke&wdww!pQ7p`4I`NoovCmal`MQa+GO)#O=Jj;zBWt zzYqIz=zOx$%)!kaHBSyJRf22PzqCyY4PLAF9J3Amz<0EMpNL@kE~YzJbcI} z4KAx677~A7T?glAM&-?A{h13{Gdvlu55>qYrct2v&Fgby`ZlUANJvns!KVhVA`<0@zyQCw#k)47 zsZsyXZ8^f6S-7r{Gy3WFnf-UjDluk<6uK zOlEEI@9NQxu5gsJ7Vs0(r7?_@I9`zcVLSLp4~juDq_t2|cUTXIe^^)1YDmi=;7S1L zUEAxYh3yX5J=$8k6Ad02J8tqy-R#;~{nn)P_vXJomcB=N=FNAXto@W4@f1fWVIXot z-U2Lei%=u`C-08qHNUB;1IJ#jrfE&59SZV;-gYjWEZ^xO=iE;9q0FB4Z~m6Y4yR`B z=~9E54JnsZ#m@YYB*4ZjQuv?ZkrpYEg{&GfbPEv9~__szKhDj5|VY)P7>>j;A8Cd`AYUL zz_PK((l3_n_evJjj1j>TfOtd8YNAktdA?qOszspgJod`y~V zAGilnuZE6Zx3P@ATAFhoCbfDIepep98 zXWHvXaXH&P)(`bTB89vQW);X|jM=*brH(_wo64dV zvz9qa_*-Our)($q>=YktcRzpaxYNOE7E~PrntM-qfm*^#tXRP7dyR>Z@k4GywtXkd zQxR1LU1pg7RpV+~8-XY-jVWG*R^s@#Ae89r^8q8fLqUWMTwCvXa_tZ}F3Lnf#R#zc zbU?E)+f5p7W}FIF%RPN>fHjnKRDj%S|AJb2x1mnprLiGO#=_9o+|v}Qo4(^aC@1eW zBC0ILnWC*Q-i~Xbx!ygGvDQsZ!z0^#nf)qx8NM+2#P;o zdK^~uAl&`$BNx!6u^%P<>ZInf&Qj#>>&=oq6AihDW7~O0?i*9Y0K5Q)f=wtPfgIP- z0yW`O;T<1v*mFnYR`C*Yncn!Ryj?DJuPTQVg!0!-RK+Q`J~r^q)-CUe_UpmTO3jXE zuEgR*FEOiHPubb$S2hUUU? zjyCv$&D-vFVZzVWOtBfC5*{b!&#LCS!0Swc&@W|f*QtU$O9_T?h@w+p89ppO_#fV! z+OD+}C}jm3x<5XBq(|&Cd0c)BUwsLC5IMG71{-3bRd}3zU>Qi4Yi8q%JXSZWy=N&A zN1+Y_?QXwu-ti<`EPLLwKUQtdhYcuQ!u#{#WeJZf4nZ@`uRjsQd9O{AJVoQn-F)5I zdn_?skF?3Z&Z+OK!Dqi#2+61L3mkABzl;TOB4EQ+%ZxXRU>y(D=i07p^l>UVLOt+?G=C?;*cJsWl>-_fB zq4N_?*8BsdkB4*5q_a2fM4F*n!P6i5UkWol^!COlIFNRevlZ2n62LEnn;RO7&lhxQgw@K$jje}^0>!* zUHjR=>qP#GJ}n`)q&S)(I4AyC_=8lC#WG@E-ZLtpxNuxsf%awvLE`N$e8uA4b@K1n z{LygM%R~n>LDu1fi#XK5mM@CIC(zIL5{ZW zod@s3CSsA2FNr2Nq{0DxX`rynZHG$t1@t(*c>C(~Oz#pSc=1z-q5JLP zLmzApsCs*uxKPbZDbK>(?0VCC)#w9fqU1u2|JBoo?o&fPmA$!qGj!f{H>E@QltTm_ z9crXg{GVW8nZ_u!8KA z3mno$vwF5~9c@RCfV%~rR1iuKv52@oPjUbkKNMHz3?{v%cKWsxWhN~i^W0v-CW{kS zZGs5bG#*TGh$?<&9u{lX5$SASbgup?G}gZG@yf5Zb7!M(jF9A(`>?HBKFUBOuiN6+ zGSeR5b&Oh+L3mG1kKPm>`VV{U6N5((U)rjMd(wx^c$vE&KHJ5C#?*q$M>;WzO7w+Ve4Jng` zp$DbXSjzjVr>j+#mEt=eMfUm#Ia>FY_i}XXw7J1;iErMDCs0XE);i47gJ74>H z)scKec4>v#pOw+<;v`soRLgSncpcr_?KC#SpbvP+XzI(#K52vV^&s_Bbq63$aIV1? z3XJ?6xmmgc;yluDyH0Jd4JOhkJhm3(cf=5>h^-%}?#8pzG8S~F8Xg{}e9>HW8sgLo z$~q+^ihs{Klm}QbcCY(K`4c$xuKGC(T~Dbj2%o&_bAe^J+9)kL??zM?!*i~&XCse$ zKjQ38q%Qzu=)RGez`=R|fL{h*sEUsa@s_}u`jJNIMWQe7dF9mokKOhzHc6s@4~uD@ zp{CJaZr-1C&jCR!muGyGGrC1#VsS|I0j|FcfE-pC)`rMev@K+-zl|SYX=E`T^1O=r z{86YMgJEvMWVoqut&V}VO!*(FP8)}=10&+t<#1e!HKTiGZV0Jv7Gps+cB(mwntIU%H zYFClEIuuRk!AV(Gszyg0qjJqpyDa3-$#^jg_&<_Gw#qyi6M`Vw+b3mVTpcLL;jjL|(y!CI^)N|nyL7%VGyE#wBA4*3L`drYy(FUqG z^rQ~Cpk?{Z9I9lh5^kY_De< zs1xtcyfs;+7A@&>UZiFh9uoN>tLQDXq01#}>Bi+*sX|}4?#qlX0=8`Yu^^?fi0?Ym zlmpl61C1#zQF(M_TIi<(OW4XcF6Z_8W0SrVQ%7Y?N|Ud%GHa^}XPHNLH?x~vgsC)n z$xYc)TKBr$*heG!p9EOFil$qR_q#1ZSKHsA-r%By`tfFm(pV@+UmoT6(F&%kE1Bq{ zp|mZ3`vtHkA0Y5r>BA=E`}&6N0~;gC=fR02g58M6kWj6pl;#+(AlFcl^Mi+(ClW-K zhhEuu@9S9gKK#crEZuUN)F@o?xRq(CZZ-eSo7Ltmfj=(~UoLNm?A8Y^jZUX#ctcn>BZ9(BGA<9tg9LKOx<{jt`t% zuu9!ozNn?dB0P-Wlj&)o&J3w5vvI5OHpO|EhagDc+>z=4in%b!&ujBwg!A^;@Siq8 z1Y{qJMx7Ox;e4FVg}S638b(=<6K``kw=~#J=TmzQs#nwZZ#`*Yp`tl$^-?_I}Ig{0zH-ui*+@6n(Yv}9GvRAww!de#Y&SO7owO*Fv5A%EVR%90Zol7*l7eNxQ2 z0PjPZVC$bw1@0PdW-)?w-{X|;sI`!Rgj5j3c{oNF^&C-mw*qI8U3hE3QTY$IJlz~v zh01?iR&bmCSW$lg_Z<4|j^&3zM5p@6CNFf7)VH3>MK)MN{F;RZ=1?ryuYIpj6=eWiI|B0d+=ZxMb`iKND9= z{sAI9DhJ1xrVVPkcsOYf{R|UhkBI<#Gga*IJhFJW=0@cT1Z^ z@@-=k+?Q`O15MN^s{*;_EL_a2flqGKb6g9Uz>PhMSe#FW@x;Q-U`3X>|d#3&tw+T8| zZQ`j8D$$cAzx)g2_!Qw6qkr-4*QA}-)8ZC>tI%dk8L|_3MG(^mY;20HAXuQk@kY5& zcC*#o9#yAeEU5wYuIs>4eAzChW|RKKP0hfSC-X|%L1-~iSl8BTp~lizp4C7E^5@Z} z`}W=iV24yDd)(`}{6{>uX&Z*hvtH+Zw9oBiFy@=Llj(IL_h^&pi)LmdZ}sL-PuUvD z*3cFlD39rC**No=C)*_#Sx0~Vb25*=8;8s$sHK7g?Iew>wvFDZmJ0U)5ul`1xC#*Q z7YYl`((nv8@njKcu6bmAngB4RO|FJksiC$*7WUbaW#g+mU|p?(QMq5H8hY(=Zo^NX zy1?H3n4p*TTsv9SyaPSB<_n|t@wJr2&G9Rd%8nbDafX@uRSZ{|;kMPVG*u?AT|Asx zKeRTc@KM~7Kj}5K*brIq&*t^Cj||@a_$0eP-J^ABT^p-@1nVl{jzWC%C+*CXitS$= z(e`!OSo8OEr9i~mG%^u37~^@pmhNnt$3AxT(0;@Fb@KNKW5Q~I=kmp3K@m4Lb6q@E z0&91hw>L2BN?%tw?N&db0xYrW`4n6{5p@D~N)I<0g%<7sMNSewQ>71>4CX$s)K-$_fvc4k~lbH$kE5AZaVv5=koX=Z~i~ z`lJLX*No~l`$8SwrA;3-TRa%yA%D04H}}RVJw2?oMr5qjV_suSbe6cfl8? zE^9W;2RK_Uo!CDR5;UW(pyE*@f?r^+E?#f=X%pCz?X5^Dygm7B%fJAS`n(Cq!3N`1 z-egO{BkQy3D7oVZ6V_n@-xK1fA#7s-lLbuE9WD^}O*5i4nxL%sZsn%TWsCDJFs`0_ zx@BO{U2NQp`B*-J1!r9SUhP>&?VOy`br9Ss^+ zu!fsI-0kK?;xC4xuOMzMZfNRAssk&wO;1QQfi<{ z8@+sch<22Ojkl68y^yR$cEF#+E44m71}sC~bm?f5@uN{^75olp5^q!@^9l@hr8@Gt z80@%~=mZ)b>OlJ_VCrt~uUJD9eqVLI<^I-^AdL;#o2spaDhHVV; zM$Qhr917+y19-I00leDn2iOwFwtzF&N=tG2wAm}ZY}2>khd zF>)OW}`GM-9dFz+f$;hsSp2#@|%pURDBJDquTc*XdOJ$Z`4OkF!4$=NbWp zsviW>yW#6YW);q)9Zfy|O*#jo?26L@Ypy4KOEkrY7^$OBE{BDWn3Hvjc zti~O)*HAUx!pGN+4h4ay8zcFjlA*irjLi>RSYvW{pl%V*96|w?;*4_O)1MlZ7#u<*i&6w1#K_Os5VFeMBJ(9&Ai`5WfkVq53~aYu+Ty5m}36mN#*d~4}RAh~)X zWs9jVGE}*S>+jp{kdELK6}iF%{EvGm3TdwXI|7LdMN3A!gN@@w@Xn`j5_P1)xRSOy z&NY4L5n`EcHfmw#Ab&P@x}@>7RL+#p{?d!{S%l(NU>*!*a<_&n``s@aJya9;+5Vj0 zKJP-leCZ}`xgSXR;q{Zg5FqtP&D>y5dGpu<#hdbWFq(7 zlXYC6V$R`a)GcJ+&m(ib93D!siRF{osjfX4^dsk=((f0W2lv#HC!3hyn1;{}NXwG- zlnY)PKkJXXSjTo4K9E0R({-H-o7PxGTnVEA?G9P#e%u_#y}kIUfjYbWiX&m-wJK#1 z_us*{p6xuTL1Pp#|98B5grn4!E6D_y7q?$VlW<#wSoa_1Z(uAcK`hphJ_LXU+ zF?Gaxy7WEu*@HmNoA-w{**4@T!)-drU6dAORDN(_Eb?jEmX5-1yHMgyRgor-dvg{1 z`Rqv};#xaKk(TP#F4>>AlEcH1j0``ND2Vt@x-{MF-Ceq(H-0&kM@O)lEcj@Y*kKy9 zobnUeURcYZ1FKxN-p_M^YbEx%(-Mfu6a+)JktU?LBMQxAKE|;=nv>q}Nf^CAZNil1E|DiNj<) zFL^rOML4MK<(f;>0(AV2$Dpf_3GB=qm63ox^OB22D={fmxjw$`=-W_UY$hYLbv#zX zC?w2$`?SZA#q@`XBHH0oj0y*7N5N`lye*-p=G{v6x7=?VKa*n>9r&OAJvoE_A$fOF zJ^_m@zOqz}I(n}?b-X3>Yb3m^vn_c_^nki5^0KDsyZ&r8>(5j$CCf59Pi0gv>TJRg z`-zX7L|JcsI39)uMHZ$5OOxvP0BZX?kqAmz7eSgt34cFBjbJm44Jt*{gf2og_ijvf z$hD=P<9UrvD^4}Ch0B)y6JZ5*us{2Kg3$ANe6i+9XRm&{Jo;XejEL2BUzzMPu>Dx1 z{BVL6`LJtHd$D=6V#4ym{sRmIguN#o5V$$cNlQZyn`;fmF@b%?)=b4WBiGVsmqYmz z!^&XQGUiXNJGyEI{MOc1TMH&H^3N-?4Gn@jpE%Lt11XDm8A*HgSyp_PTIiJDqDcnH z$l|_SqYEzAGK@OZahT#rZaAQvBR}4*>odT^Q`$+l4yDe{Cp$3MqgSdi3yvXMOYbb5 z%ZR6u{P;J=N|yx~dhCr^22g5UtFUIu`j9aQs1X|C+qCHuN8Q9T@P4E<{tgapmBlFi zK5z`2bt=}2ij4RMgHB9DKo4ukHTox*Yt~gD-YTItQ=wW?)dh|Q%Wqy&CQibXTQC_e zO&yG?O!>q&p52Ml&kw?+(Zp@*F+9{8YE9zz+SnB)Jpn4TO~6uia>D{F{i02fS9G%Yr$OMo+O666 zElJ|oxwhMnzX2>Fzk-&8r()KVM@vIYip)Z^9_p%b_zhQS(8ooGJ){4Oxfn`Wb-%_0 zE*5vMSsFU+;^y_{hxSjrL2Zra8DZHH`dY2s-c!>**}bQ_*7KD2yNk1vb?`SH2ihMf z`De6DOx~{Ww_pP0;a%&XU06Bz!-$ zPh+&zKbiq21#Yr^dm9v;GezAR2&b-^fB-E+|CTFF52xtVsJ@<};m7$(L~~(TYSZP{Lf7P0{7WXz3v0LxzKly@U86f zPXjOL53y5L`pXvC&ke-6BSEl`$NtDhip$Zbd1CTh=<|V8QA@Y>g7uj8tVsxhx?Os=^c*3ZgO7IdF{~e~S?&3AI zQ%^N}+e_W|rYF2YRf-@(v&-_3^~3JKu*7d+q1hx63@!-|Je<;{gy{I?IxNH`#u|RL ze`$PNW(xk?$9W4!j!@)4Gq0R-!Pkk|ALhh15etcF>v#FR^vDk*@pRuSpn5Zl_^_3s zo9gnS{|}|W(purbrmTD-bCk1wlAh8j6))D{xG|U3S=!2M*WH;@8mHkr!g3XCywz{(bOJ~ z2b6PkKDqwt*5R^*CtfKEqZ129qQ7BuY@s|+`Xx9qU$7dV$~Eu{dU(L$T`Vc@x9Uq# zQg|Hb=ta}_=_by6S`V_k>*_~$vGqP!YL=H8;I?-v_#()$$F^t4yfSwT>JG5z=Wpin z--^V|u@$Xs$GZ8;*DC0f7Mg}b2Gw@CNCpdYzzhA5f-ZP=BC~|C{oA|~;oFFb>CZ&8 z3i_*+L@M9~2y&xR^gKJQixX?L^ik9eVyAP!_v@rylOTn!7mQK<_w%g(c;?p9>t#4# zQ(b#NKUD!pL+k|9!PcKAGI*n zyhgRk2lS`WpHU@Q$#!L5_H&VhKA^7fBc{8%KYa zo7Vl}!N~Kb{SU7zz>pgw4;NC{8m&rA+)d~EGbCB^HVsohB`1L2w*~*JE;aQz?gVO6 zarL8nBs`(ju;C>y>esmjC#Wy@7c!e9@0=dL|2g3d{{-4I{7R0Y-GUY#Y>*w) zN;|J0bNgyvqWwm0ll%HIi! zrg~O_a^O=ZzEww4ok+U?84RRu8eVbGKxM#1UYMyx+dCJLQ4P92lok)k;|I{RD#$giOQ=2C?w7Xr*(7C(sNuDi9%-`Dtn|JR`19VSf?w^r%%jm!rZ2XoERe{(dsu$N!y^ z=;XzkiMxr&M=%Y=UGv%ue@uyhrS3k}k0fH*&qteKqVYTn=c4R5@Xr3cz|KHGw zS7qhPBC3Yw>w;`)=44Qy;A}_z-LBvW8i2m6PHxpkS}H55tbM5}V`RYO_|IP`9;eh(yCC_#!O0lg#b? z%CW>DD@w#c07JWHBa&4Aul}eBD13(9Ur2ekzWD2zs`o>;;P!WC>&p_+tP2~#Bdb*w zQ#zKNmdxIIJE{Zno~DkdHywJ~GG*@j7tQu+^zeEd0YkUusrifnRIX$VPSiiG(Of3n z9^>2uqq9W(=5@1O8*_V^eF0dR<4-qZTDu{` z6p-H(%NRBqIkUs>FRe}uSb7@%MN6fvjmGJMRt_U&i{@l zGRQtIiWbB9zw9y>{De@Z^`*YHSjvw|i*hxZXZ^A~(XlZqma@a}tU>~^irwg!A4*(9 zEcTI=h0$oWfOtsD1G0NCFluJ}zGw%aeS0a*Z(Fks{W+m^CzZncC`U*9*!~oGh^*!< zH43U;5bab4FrQMcV20LLNwGiD9|Ko(TzfjMHU?%)dlL0<3UhXW%PMLI^J(}fBOL_= z;_jaD+ohWbY=~h1`i`?EP;7WdLEq%T@`i0Yh?cLr<)kG6ent%2;L5~;~z0kK$m{dyF| zhJoF%5JWH$uJgmYV&!P!4eb!H{ezEziw=ma!7;3D(@;<;)2>OniDgehh{~%;tXzM0 zi$YWNM&Zehl_gkT@!+CBPR@QLYB$C5)H^=W<$z5}M{3|9557ddF0*x%-OuFne85*$ zio=Wsc}A!E%~`W*hg?E`qW>sd8QNIWlYkD};AKx7L$1JeMg2+Gq8o$vt)@5i!MIG> z9v4AQ)7|=!FL{5(ymf&PB7Qc)Ku=~NxVTe5Bn^}F}! zIFPikodqz&`#>s&1KTjV2|a3xZqfhw&^ftB$}_$vmFc^eOZfEVp-wtJSc}=-yxUJ+ z@pzzwnGSzYvJ@R7cGG)Hmh4ElvS;Tt704uZfkIZm%41R?-_S@BY2C(qd~rLX|r^*L~jM zVtO)ZE~=`wZS=H1C(=8Zf=&B2r`&@Znh>Da7s4j}FAxaWi&QwU7~L9l@+^nn=I`Wb zbem-`Figi8!;B!u#wXeXK3@X|I&0e(z4yX>^YhH=-xBH zn@Nc&r-!8NXFdc9TiX2t?1TRD3kxIJVS=vRX3O#lgH@>&Wsd zv>z`r9&=&y?=}8(c{OrwPQK<*Fl^jZ`b+(>V^$+pA3UQ6H;*26A)(ZLEZ%sXWb3w%jkas zjK@S61ijf^O9K!{Scc%D(BXN7BeO|*_DDj~Z%nvwX_tWM@UMg;6&t9iK%Cy!dpq)e z0M-Tffsqq?x5$DqoB2Ax^?7a*^b4FkC-(h!cvKYOLG3Nk3hBu%ej*H1n(eNoIS5qj znRW*kvdg!0ssjLBLF~#kYT=?gL`W#h0yr-a43d1Sx}|qnusUkYBA{@p*0Qo#HGYi* z#3{zVNrHq*H!Tc`{ey$tBeF@zv~(tZ0W*WSq+ex$LFO3l5twZvXo1$wsV(XTh*Na| z@H*-6Djd*a;18tfX}LgN9_aV55E~G$J5L6Z^0;XFz`%+1Ib1v^`sr;yO+td!{4nAFbsWH^kRviMKwBA5=NlA8Ug0$Tr67hDRPjR33AscDKomN4LV@*e z9+x{NffgcoA*|+5&`Y8>!6CbLf6pEMl7M2Q;Yi@6OvP_uK?cVpAqf~AYd|*(F$C-Z z8%KTj8mL&A@Wb!HDBvwARi9qu0c7DvDWcQ*Gj3Y}Own)W?!97)8$Hx<`{cs`5L=Ka zq+x*AjuZRo2Yd(+bY7+!Re}V7=_#=wPMsKZiXJf%%Gx9eaE)k$vAFgZ;4&+m-c=${ zyLjCDCb(vj2ZTf$^6!#>e34g6%XG&Pn7|igh0kGV!}ZGTgP!)0buIC z)A9r+6~-X+G)|QvWi2FxmU&!Q!Xi+&vYE$zR$9J5f;fGysF4wW`(#<>`4AcC(-le1 z_BP~;-q^zD-6%7IT#vtY=)=An8Hba0ng_hFlTl0~UuMdZaQdqE%%P9`8av?h0MG`i zORFtnj;VBjHaN{t-8^`<6ISrzc_XoM~|*TkYO5ScIl z3+?UTDhaGV1{$a@w3|?L$8S@^Z7du{+ico%l>gQo|7)ojEU1vt_^*?vm0zfm>p7Do{V}ie z6XDEwE}kzjH1DPK_AYC26mEt*yTkuvwEbvv&^}Zn@I!mT)oe6?YAK6nuMvzv>sdX1 zx2xT!6~j37u4Bx#8`SBTonmha~m4r-tco`wi>z7bdd4YBdlt~d9- zMu&a;UchxFF=`la;X?^VJtcrapV}y8*3?x zc0f{7{EV^LJ4BJ+I7TdG0$wwp~#4l{u$33Q6y?Q zviP4}&yz8~Kuympsol8)DBo{BV0|_Dl%6D)eq!~XdY9|>BKmh`sKcken{qz`jt@HU zuz)KldOF%wS~yRM?bc)JTihd>yC2J!!1nh6J26b%M}4(Y@qf2Y#rT<|w?ZC9Z?QLp zo6@hO9!OinujZ(vp9~glx4*G*@{;4(Wzi=b%E>>%KO9*l=HEsKu{XCc+iJk%Ns<#9 zV?Q9#KzEQ3_!zwy{&SnF1t94Ae|;m01FBjcE?(8gjr~vtUADDd-4YpIN7dqxGFFjnGM^U zR!n@3Ah31jUJ^07DlEH<3X5^|@~7{uy)9wrL6nlx(!NkKWvA_VJifU0zZcRZ7=^-2 z97UWu!L{Ea{o(dWA|!m7)PGo+j|aa1+Swd!97BxGo0CbTO)-8$P(V-sXE^q2`DLay zt*6wtEpJ-m$(b~cONE?8*19R$ios9A!<4CkQVB#0{mHWi?3cv8!#IDLit45a*&+VV zF5P}`XjuVoOs_x2lqfdD08pVU3IBz{Qip&4_*to^_>8{xEp@t+kGM&;zdmoM6}!d7 zg9_U#)s^;*5{scstMyt2mf_>o8#KFmcHoEgpUZ^AmKrRYyz)!ykOM?HruiLn4ZSfH zR_TP{GlqTP!z1_K)fR3;=?7Q(y#C_v%vWleMI1h496VpfCl!xwPh>s%S zoZWqU5gD!4W(syv6&{C7RpUKW3xMH`#eh4tgRNyk+G}oFJ>`40CJRl%ImDlE3YNJk zjXyEexS4$RzR<98kdd$|bgpx>p9dR-g>;H_3A87A*&~BH?9fwDF6m=8+P zmVGpU=;lc*w!82+b9kD|5Y;NJ)wYx^lR0%F`1L}g%@PgWo$mjL{-{;-74Vw?(B*jWsBUaO-F5bm zTmAPITeYEw3v#&e?xohR`kTSick z0k@z0{iu{W07H!SGd;RG^|Km{KOtq+P(feE*EVGl{aFuuYol8C?7THKc9_%&-X_)d zsg1@_gu(F!Z_=Aq9}5G{27~&VCB#u&xGSP=p)ppx^M8Ejj3$N-)7T34X{<_-QVY~? z#ED^_lL}dn=|8xITiM7-5h0<&2Mwg>k*BTP`pPhIe8X3}d+11UKL+}>U;d?lBk-7v z#sLWi#(2(cx%os%@Iu5?0$lrCBiVv9_haF873+!#9LP!M*BQP*6X5x6iTp@>^t3i` zOvwPvzqvvS$&18`(%c%$=md3t839XY4Kx$e4`U0)I`@ESIXj{DMU1svWzQ_xE9Xp^ z7PYuyP*QMm&x?f?N2X!*0@F`b+*6X4bA<>1ZB?4V0Z4ktWcws|FNc;Hp4O)j`p`xA zPjcvPx}&Y8YONj&Oz`$w%n|fdSk0+~#q(^#PSo#5ERME0*Y7gbNCFKHF(?u7Cyi^= zF^H^`zZ-lWn*Li8s8vkcv?N@a$kybMlRk2!tIb1J5@56k_6ucsl*K?Q-0Fh`rGYXD zz4C&^pR{nU25EMJ`^QazU^iQPo6q`HJu_{cW_($gqou2G$t`I5`DVTqcVl6~Uv;oj}XuLTSamyU@RAUPX4 z&DGH0Z0ehcXUpOtf~l-rsugPzW6?lQI{;Z~3%JoxEXgLh?|31{)05SaJz5UQwoe)H zQ(*bRp}EhUsq3+(gKjkEfl?xX{P8tuNW-7meu;Wx>7Nna_f(=WXH@s4NGHm?)UrvO zU$LGc*SSlkpf30fgYmI`7HVv7f*EQUY(>3qK=`uzNk1HeL09k;f01^xnyZu4|w z-;tzOdQvn;^MA^(YZOeT7Oh6MivgJ+U`cjPA2H7Vl^0sf+nKH;uDaNG^i9y!gvoEu zi#nFfaZ`0-0T*7X5VEMnIi&Tg2J@}amCXzpeBC^=Pdz|e&Q&Yerz03D4iK|NMB1a|94e#fJswxjo*sQi^pR^}8YKa`uJh25f4(Xr#RH1}Dqj~~sOIPBt zODq^?^2p7SeJP;1JyHLtMv_nKh}(e@T`X7ougTOroE$I@whZtY#vI1DPpfCcPf5}# zKN}1zn=Ua8Yst|*k9 z6y=ge3Kwr0vGBwdl*26CCY(IC^O{8a_`elw`N_y+u%eNI=YjQ4i7_zEfCL6+HoL@R zzlmwiTt*Sz(5Fi&NV8iGzAYk=3);Sq88u>2svXe;tH_)<5Or~yylMuwPEQ}&YhHa8 zm|L*)e%~^I9$&8=4V%V{WbHqZ@Bl7%hp>7vs>7yCp`?Uh^073$_pX}8NxG}HLu9!_ zpZU&keu3nFg6VC8HCDEHRjFYNW7EwsV+O17qmQOOz!EoG_nKYAb#e(o9=HBfF~lqD za(5W2)nhAIr7mdU;+eY{yK9+X1>CZC?0F6zom@^8{0cQ$?{waq@HNkh*#)0XK<=X0 z=;xd&5pHX%Gyr!z{4riP9Y-h#-OD;w*@O1g{=Kt5d12#`JX`v71Sd{&Fn^Ne)3;^z zzDPL+)>5eDC|ADN+)8nsD*(mxypejE36OE|jwtN>iRn$dnFmusB^Seln!w7(k)thq zsJ@Yi!t_%;s)*ErDPI?dm+Zh4bZq@!WL?Zl9B#IWFaEUAc_K~%B1iO198L#V{54Ft z>1vq42SY^fNnMP|XGNN5HunWRcwH)N(Cs99TyEiZG;NGcucvxZ%GoBaKD~-q(Y|&+ z8FiA#h=hF-OLzXA$25!$aG|QZytZ)y5JyJKcdt)eLQ{(UDIWtxeu_&;_AsRi=8Z?w z(Ie5DJUlE#n{JD@d1{~A8HXvfFW&Z|DU4s4I~Z|efqL2wnEsYuYcjR8p$!B`6fjw3 ziNx~sU4aQ8WnzcoizZcV@M(@g*vr^go$y~15TWqygb63qQpi(cMuK9cp zJvX$I735&IxHP8zEyl&Qd@hQZDHD8dKExPI>LadH`g!D4B>(#9gu#CIR==gU+S8q* z!&zhJEWG8VWmSp{H;~z)zm$hz?_oVLS%pTZUdo)IJiCauWh?skt_9$cs#FYtl?)ws z*)Cg8Wt)siDH47#2iiEmj9HdlMR5m4w>Uee1I`_>< zU=tN_U^Mq>&CX5md~rx-$Ns*8Bk#{W|6jfrv9I~AA<-{SF%U8AO*Tb?n{mIplTGFr z#n2UV@d@HwtCi?Sdndv=e+#C>y{mnJ5}5fo7o<{Wu7V0WB{5_h*8x3i`PFaZ-y}-R z^#1p(8h*#hd66@9^0o-?pe>wI_8zjf`?RVr=}x<=G*0=9%R7!Pizk+LcZm_QM%M6hABC#MHB{tinC&{a* z0=5+(e_uLZ-rjGQ1UcXMzCnbcWw;dToh|dW$#^{@Hruvcs+0o#cYUNw+I0rYV`TxxYcmhT{+b*O%8?BpFVHYTK&`Bl7IY2as{#NA>7@wh)oY1iwJu}E>jqDwqrPh zH}%7L({k-La*!DIK}dgnb)+YTirUun}eSI)ij&NYmD zW>)5yB@=yg%D~gqA8>gVATtu*ne)w~?Wb~j!L-Rv_N=o}!Jr-EhfL^O=6AnC!#%cg z-TSnj$f4FTrTx!KK^;DtMC!wikx?b>KCXQ*%ut6e>3YO;O#b?lvBMhur>3B1>Jxl zubolDd&tp^3!ywo_|w)OXaT1MsAvbRnb5;?Drx@nZoQ2GaXvcRnQ=Tm2W4MzOkt==QmLWO7 zvA7hFmBrRZ*EP}&Yc}IdCD4GeOtQBWWnWom|Gr;?BkE`!sbaiXn7KM?Va_u#@8|UZ ztZk1ycUtxJ4IArg%_aQ`d@G{u-s2y7bCwNyPm0HrQ=NC;j+LIkc*yl&4Z>Bi0rbc0 zl@u74ENkVvPq~IJf<=F`d2M}tZXq-K-{_K^e@|WP?Ir$DBLptPQ7mc^{M2`AI?4w7 zLTf$sQ?x_0x?BqVB7evc} z9wxzwiZwDkm;Y&~J)>}(eQ2I$8TZ-XNiEKO{3U8pNV8CSi}k3b+*iBNA%C+=)2exF z>f$1gf7HOKPGL`Y*6gbP=0=|x7s&ko`WO7XfAKB^Eo5Vr$MzA6aGId!2<}LR#LcCdXb&{Ih8UVWjKhV{Fd=x$smGG16`9kG i>9Vg`8+NwO)@|GH;1C+ra-2H!;Ib-us3(RoNNd1G z`EmgB9s)v#;K_#KtzzWi^9<&s@*e&lnVwCp=69N);ldzj0{e4~DzcKn`ZsZWU(4W> zC;G2{$%<{Hg10NC&bJKlShMH&asE7f>X4QB<52NdkW>%Dj64SG=f*6=<{4s5maPf0 z;3c?N3?>W#L9!2cDNgWd5zKX9t!L=}iAKr`{qG+OLTMRbGabnVI3C8Y2oJ322XX(s zbwEPR+K3(^%jgXsA-0{PONKwg*M3t9(L-(Z8r>*QH$jKDiLrtZU4G=W9r%n(HaVe;Kin5N>K{GN|=%#vU z!=y??$W#=Y`&o{Mg!w5lSdetihb%bC)+hZ|DlY;WRv|y}){Kthu6#dKOdD6&DmM12lW>S;6OQUubC!~(5_~|>zaE0dyL6Q7 ztwgE>;~TAvfZZyvWp5#kf*I>er{tkUDLQq|SV6{su)0bZg(xQQ5}4bB@`562klqiv zOhY*B z$mVQ`0%Sg?K;R6D)+lo#5kcBHt%FmKDKYg?;@P7C2)VVR-}C_Mj`#1OtJZ{1GCU%; z=@d4;(uPVT4BXy)yrv=I@0ZORUF3liEu&mZNsj;TA65ReT zKAk#_S@3TTo9cHR8Jl0nNd=)5G4eZDQPf)HK7Z~>O#Js4)g!kGOulW~j&K}A`U>yk zHrreOX(3${FI2Ov?J4*xih>kdVZ*fF^Me1>{Jo86)NW)glD543`~iR0as&Bz$qzP& zA)wojYwLhldWD%V?;da@)Jv-bJ;J@;e-F1R9Q)kt5in?clR9d5uaMwN<6y#S+$059 z(R%q4csSLv_3;QY#6P5JWc1AqA=KmsvY}MK-}88SBt6(MSLJjtOwUx6r0NfrA~v7( ztQ=P$Fl`nIEvsm-fX+(;;#BJ;(GOTr;U&rxKx?uOgW_k4Fu&vi}Lt6ckbKPl(;8x~bS99zz1 z`WA$Yoxil4efHm|^M7^x5{l)t+qPIxbJlDbCtY-_#b3f)aQ2onR2m;ipJ(QjV-~V2 zFe%pQ6CXqfUo^UDw<>?|Zd|@Q$NbkL1cb0!Ty8?OBP&FT`;U0-I=BcEFyJ&~aN+{Z zxQ?16yjOTduYis| z;nO7^x;>MrUHyc_fu7_n9yOi_C3aYM-!sHLBU6tD`gISv4ITH0KkQp*&}NT4w?v@^ zohjR`>fM7#up(kCeBK5T2azCYp-5pYQmm+N`Si0w^ntacw|-3__{TCUHvdo6#HtPn z)GZyn9_;n0mb98^`7VUw^m^`WO=QPv;r;f1Oy*Ol_D9uGR5{z~(`&=Jx{ z*-@tdzBCWszg%0%;}l-C7L#dRjFy91T2ZC1E>Uh;DGKGZ)GWA=&q!;K=dLGbBFXEI zTBX9jxf{Wnff0Y&aJ0A4;kD*w1sGOiSklSfUr3i;YL!6WUU`|%8NH(tjz57A2Otn` ztJ=-?;mu9uw&`e#uV&XHTlKEg>-fM=RhYe=yUoOOuD|Or8s71}PiU9i9fXCrJ3Q}x z^;sSFwIQ1X{YrB%y|FTtn2W;)C){Wqbm&VUa1t*zq9lbH2R=%2hzWiO)6J)o-x?Gn zW_f~uU|#VFZX*Y&hKpWoOpuC9Py1$IB=w*_R?7t{&F~O!Twm@KLf{WuA^HjU_W$-j z4}X%0K`{E|_})}$nKMw@ zNOvN$+(}i%@2204re}gd4TN;~G)S*pbO1Q*qp!s#UM1rV^o@r3&Wfj%_0WGZj3v$v!mbe?WllMOs2=Y6@5YVbRnDsLVP3} zz)z!Le!A|62N_cftKAWXAj#LIHr0#`g#`NJi8aVy;Bc^BRNBHmDOgEy!@t_Xi~SrU z4yVhfipxSEwyo>`(tFQcI8;L^Ov`X95`|bcsaSLx76F`MF(U>X%l^%$9gXt#Y5t;I z6RMTFkPM&KM#O<~Yl5ygE*%6_Q#5a?ifLuPNuE47-=*2AMFMB&2#zrG=MX9jB!S?Q z;@#Wqft*3~D-1fS=(vc>cIgTM88<6>up1MZm@rvzMv+wO8OmyXVbif$F zk@@YUWkQ7XFC0`uI!XBvoHNp=5On&yqxGoEQ!DBv=36nGNSV{Fe?_SFA7CTIz&rkz zx;a@lw$f(WJnGH{Dsbot9v$=7V3Ni|=Q$9^@eo36^Eh|&>qq^F^jPD!a&*)jFvz-H zx?$EfUF08QOd}d3^E42+92GUN$*-It(V)1-CeJPr2gwU*0tzSzmFDVlEhJMi%eL6A zZ>gY|@6Xy;Lz2W9MS$0$`F~72tZ*3frN64aCJ|_2GcZCzK#$S+IViU+G&v{R1aCj= zc%B&TrKUyTU8Li1{yhjAz<=i9vr&7;7ZdSl8+e!f%H(>qPoe@)8D7ydG)#CIbl`Ss z_;j&-FV*1@AsK_GZBCo7!n>hvEovz;6|#3y@<~01IEWYY673sw#NxPSfdD#a1V^a0 zCa}5|-sYxO5ONMLoroXW-5iWQH{LMPd>;8cG@Q`x+-#~2GF}{aok==+lc?pE)ZVWF z#9mv>;Nl(eFtJ&B(;E;RbXXgIABQ+7{4`q)i44tuvj3S055bvxr80f^jF4Ug9|Kog z7&sACV8l=H_3y_~G&^JIB@Tj@8d)tb$ttZn42_S-%O_9}qViimuHo|^5PAy?k$W&? z>FHaklXr~2IY^M&)>*nP@YR-FlMxxp$@ZNtJV7ALg%whxm)Oz3v!KlcFF^qzBz;~5 zvSk}a^|MD}U1^__zSB}MghS8E$*R^@Go678(YJMtE{1%lI#J(<_d2m*LEUYdP}=Mk z4iDEZi|1yAj-Q5dZTYu9C z36}ADVqA?BM03k7xDyz#C*r)W$v4Pa7X?)w8z1&@O*m0a=U%vOSv-LSe3V$LU?vsq zU#V{yuQ@ITp6VUQd$TWX7O2*FIijaO02t+nQg|0%WX8hN*QEiOQq?y~ugFb487zp)8xAkkp{J;SfX5*o-RsiO@H@mZ*FN*iH{qt*u3CS;iVzXdko)icT zeDTd4L+FehxJXQU$eIx6$|{e#0WWH%6b`$!`WvrbSt9|Z%MU(_bS;WY z`>X5Co$WR^AG~8dpT~U!dBwCTo);S8)}}z{sYo>7t-3azzCVuBI79}0QHmXp7YE<3 zp&4!01heZ@U{dP+p_WhZXibP%WVNcF+s2>6w+kU*O8ql; zyCzz72PAY>uP0NE>KN+}1iL0dsXl0sYZXshTI$tGPrWnS=G*_+c;Zw3GwtdIs-Umx z?TYF4pnF&toe{1_%`%N(uKMRz4sNx~>U1;LEFA*tbG>{O3;@i+;}L24}M zxbRaAa-W)kf7idgFJoQAl|~;gHlfs1R%;HBW6$k3Qu5z&JVAaEy!ajaJbvZPqPWdR z%RY2PR=jmlOCkEqKer+vEJH{NRSFdZ%yyRv8wWRZiyPJjmj+8W9v{jMsl||2S}_Ka z-H~!mP3!+@D2$o=g=|f9mjt7`5JaU35p1kb{jXC>!+Djgesj&NtZGC%}~(wD9)riwGdv;#n;lEpEHTh9hOTDuLL;_r9O0{MEf(gX_OF{sv6fDP=s~(*Ws}eZY9PsR@{JstglM28uHyB0*sbTUd`1rMev*XHkoVyQ zB-8~5vGwk%LKOj{$0>RgzY_!k7_9m$vh2vD+O%VHgP~FP*$u5LgY>w-S5@!tz!86g zBF0ed993c2NZZ;gK~f|8M5RJerk!3!fJ0#;&qU+ZSwZpj%zACQ+e0c9w6u0Ewq&zBBKr z<07O#iQ7yhT(&?{>8kj}al-%RJ@ zeez`)SW<73@37r+oS8K|@n-D>^XRkm=rcdmzof4@?`~$a2ASM+8n+|xXlb#cNZ8_O zf;!tnzL=H;?d|I~kf}~d-CVB@`D4M|bBFVI9=>g;8(G`UXrKPZjwoON3g`jClM8EE z?|RPN{L5+GAkoqLxJ4GzvsWj=Yuo%`2~m+h%0pWtWLeGc`|h5CED0k!+hupd#y_o{ zK6AAvZ*u0QXt1J`D628s6FZ$+{q8CS9Zn2XP0=dy3V6}XgL?e{4HH4>(SLcWophm= zcPzUnoUg#M6U)r1b>ldif}>w+rb;HZAc7^MDqdmO@s=2$uKf3(ls%} zflL~?l?xS|_SRtZUK@ojsv-q*j?D{UJnHGkvM+EGPh{#>WyAh7`)&{@O_TSSo$tN< z?9*vEG)&QCF?7f-+#+v>4n4=Ie82gIt@rbrZ22U?LpYU~j}(NqQ1K*SeOaU_^X@vC z#3Aj?(ThBv{+ijpQ{-|P9gIE9v?>GXta4_!=B4SRZ92G$#OL0^2gM?l-tGBh7@L@+ zsXsli2k1!p2}|yOtioCb7=DK5TNp{*)66Ppz)uoIi5TRxoXD$7MV zj0*9EoycKxW1Riuwwmk-PrsqPSXE9y>q*-$v`(*B0B@SQBwh zFMLnMP(x1%+zwPHev|0j^*ZXoYGr=0Ctvs=y_Ph1#P48`MMh__B9*E8t0C?t(3ZXI zz{hnp9Li1SwO4e!xu~Ja^HvoSN|pRk8vPr2`$b7g)QY$Y*2jE$k-dpnE!-jdI+x7H zfzb8C`@y6?(2QSWY$|{}$ZImSl3>|r`LZzuyPsk9IxfrRSaD;*=_H^vkHsW=Fhrp90M1>wOXc=T|_4OiaQNf@iJU9TL3Cj0zXRsHhyQAU=~ zq4=VBOvDHdan`{Zr`u(BVzIOUJsQT4b+>f!Wd=KfT4oh$=MCJD_j^_S8eKJYei;*E zleI|=6jV6g8(_n{miN=MuSk-+7TXV?+>^o7GaCI1LRFGK)!n!$49GxpBXpbbBxks8 z7`Y8i;k;%)KH6oBJxo{i7DP_2O`p60@|d<3m@v1KFx%{EkF_3hwoA`AW?lQV{COHz ziAi^J?9UXy4mJGT)j)JruPO{!bj$c)`L&Ko` zkIV-x6v!pZw8&Ss_4$LPC)d(87ZwBQqKD)>I(_#D6NYp`r_O!mN`;2(`L&PGeZuNV zIZ56dRw<~07FrSgHImL`+J&c39GlD9XFBfsWI;B#FABqEwP5kcclK0S3|G<6GOJ=H zc08Y{yY@2I@0|v@24V8nY;4&Nw`8@`(|<;;cZDOFRYi{)l;zZhNt^bfD)Vgkh+tho z?q%bv+8%R}pbP6(8=y<>{2ePKNrm5@&pqot`?C|uwYbhGC0xtECSRo`dnWV!L#A~+u+d%2m zLAFgd=K!BRMa#vLtj2oN^~Qg+I>vGtFLhg`apnZ2l~h001|8HF`RM;fK*@>R?%C&G z!l#RSUR|Umko<6s{MmjpZrK)sbBm%*XO3O59$vdEr@M#F>0O-g1f;lHhoScYjD(pX z^%J?~%62P1*mCcks)W-sHtah=kqON= z%@RB2RbOtFvJ8Hcm-8~xpd|d6WaMh}CjM9Q;ExDQS(Q;W^G7}=c|O|!R&MC(Xv?)P zI9%n#?MocMyfR;I8TPKi()~PURVqu5UDoA9+tbfl0R}(?VhBd2;@=HKGZq49{n5y? zfrb~C1~USgJC|N|^)huoao`$Ix><$Rx zF2ou3-3xepbFQ59_h#FE7G+E&R`=uF=QIladV|jm)toe^AT)o^R%`dT{s;e_(Y)*R zkWZ_Ng&gWLj;)hRH7dcO>5->#SGFqN_I{@EWRaYTcH%J-l`gkA zNONN;evzP^0TcAs|B5MI{WEa{mUX(zt`nVuU#@^!`hBntM$#i zeJh=xBov}Y()BrMIU@0IWiYI4qq<-SYrM|>TA^oQ9#2y|lOx%{EWZAX6SL`DZvI31 zQ@Lr`7jH@`odIPxX}ymJGxHEvnl{&tZ!{QtWk%fm9+w6M9~i5@G4N;xw`J7f7b6iK z7vA~DJ^w14Dl-Mk*0uZsw`t_6xq8(~7CQQ=VOHM{ujH#ig97wW);`bx?h5xQo7YUcK1f!Vi$zye zitZ2C2uJIsae-E3?AZQVzaUUQ+0K3qI3&vDf6P}7mKqy&(Cb%Jo;#nietWyM1>OHt z@zaT3vg)e^?UUEji`UXrGB{oad<5wz2QDt9D4Tr}rBT3^DQ?&`DNzwmL{PuI@Hz4kE1 z0+-S9nX#Mi&nO{aq_DPu-CNO)J$IM$lnkO;VLtqL66nAz2Y;6&E~Fj zahYhfg2w~GU2y(|nmZ#oQq>J(6ac~T7X%Nmp5VUtu2pP3@F?}T=fxBk5`QTnGF>cG ztJGQv3vGtS_M<9!W}aEoHwb;fT1Y6d(>t+=I3<5wXRmH*@QZqd-dW}I7t^RS#reJJ zUH7uc;vbpha^$4Q+k+8i=!2GKFh!OqWx8n^iR@ynE?${jiYnB0Q30^Kq)EsPG$&$B zRp_BwWH!zW6Qt;HVgmOI!=o6AUKDh(lpH`RfJ0?J~ll7U$ zhe=i@=SdEA{`z4zkz7LvW5DC5!?$V&>^$*bi)Mh?^hc3&gvl2cTd|bP7mdZ&!>$=L zEeF{YlGA?9rlL^wQ{MZHCETE2U3dn3A;wVJlh-Rb^L(FAtN4=%m>2Xkgya zj$VJ-1*SXwUKwb_^z7XCgOUxPe_GzGnfd;%q?KU)wo{+)!K2>3j$%Qm)STZD;P`ee zv8%6M_zAROm34dcy*s67EA5UvEcwUSXqeCGr~l<6RYlAj4_x;@bL6y8DiICueeQD^ zO~f*kW@*t)yr~epml^q=Y_$3RnCS+tW!_yGOzVm?p5H}#;&MXS{Pp4thV(aI4i@y) zM_b7lvZZSL|DT`VXlXSXaMhYUajMquD*vgh%72rQY^C&btN|a!txBp2SHVMD$i}qt zo0%@bg(1X|e|$cG^pLMSFxu|(D~nZ7Q&8m??dY0p=u;NTP#cTy@*dEb`q`ggV9=R& z3ICX-E>i?Y_Segz}4z_xzlvokUd{1^F+9}+mR;l&3u+|>^DLW7fIm=`tVXzjb@@KgyFQ8PZJYq*mM6YiKgd^y6JzP?a;*2V z93CvIg+B23S3Q0i>hWPZQ%2rn!VHZ5vhO56evG>`+-}p!Y(0;pt71s8a^UQE?|^xV z3}p&^6Qh)q?(~X(;aTAwmif%zCRBj(Bm3=gp*xQ~sCrexe|9;b{vd zAKER`VOS|!CIF6?ykAfBfNdl)LBSeHXGx%hg_)aZmNFN;RSTp-w7}BJ9Cup}+kR+3Fi|-c5 z7mP7sk}6MKeJU5}S&x>>ak|4|?c*U=q;J>XaKH0pQN_7Mm+ik+OBDI)rgc|6bh4rR z3(W0bf)_^jqcCn3CK!AZy?gH-9O3wi&F42#I={W(n|W;=)S*Ar z^@>*OXo}xx2#OL=EU@%`zy#hHkc{TMOdfA1U@+NmuZLJ;w1w}*zk>pQ4OKWuO7&6Y9{8y(dmEM3T+}2|($bS#dQ6xQ>#z zG`GS21Xo6qzF&=rb6tA~XTcry(vB>47`RR`775_YezN>R&@quFKH_B2%2haUJZ-*U(cP4$Jq1E~Q5 za?(^Co%{doUCtjk$iPhy$*BBdAwlV7O8pf-n}3kHe$NX8dnoZY7KA*IFvh4nrOIxx z-36@;?ZapWavacmok8qJV@bNetqF)oa7LezL9*oVck_5*5c*1f#}V;kz}RIIL=x~_ zHI$LT%{yL|AD?-VJgLZgTXv6P;aM-2q})_Q0C>2!20eX5&Rgt)T;6;6y4e)FyQPT7 zW&Qlv8u?X46ynh=Vg#3Cf@V6MNBe}N%G(H48>22R?0KKQt)iBNZ(`4q>4i*PK}(axM=22{m?(Ir!nvYfXQvR4pMLO?Nh zPZmh7e>!F6ZztkHNwDApHu|~Q)kTO4qNGw1=^F~7$%n}SJM=RnCMh9YfL&p=o6%Za>gn1RByQ(AFa>6qC(VSI0u>c@BE-khrI*bSe32&%kko_s&06#M$wCR z7moo~M7?Ts91u%Dc3+~xYK(;2CuGMHt!1AJV25tMH}l4-RSTnScVxm`RFp}F`ZX&| z(cnlcFsFxrd|vJ*8DC?R|8@8eAx{#b2{m3#k6%%Ru5x=Dl(bsKq3Mt+}S8_|}R;Kc7OM z%D4K87A~x~?dhQwzhgphqL3jz7-1^Lru*uu7V1oUmx!2-zpbOh`4l!z{QP0B+TNsv z*UqAjPm9p)Q;MU@r6E(ebc}(#$`w)Qw#)~v0Gk?H0|Zf_kH$BBe);9O8~ce8HTN(i zyD13J9nP|2RxzsvcZ4>9Bw_&#(rb7PC!kPNYpOCB;>Y&KflmD>SRjby|IqVHl!9x& zlM=SZje@bkU?ob9AkH8%h^T(6NF=?WJUjDz8yb2yHdiVq_w*l-WImI10M_t zPFDBbtZxNOgZ)ctTv)bwGdg>`Q!OTZEn9svsZ!HzaL#Xzj9<8P#k8#p##USKw7R%M zQwZ|V1|-9h2prhYv$Hu@m?UlbcQJeDmx)>Zb6eDz>Pgwo7HQ`fEBo{P&vlpYePj?g zEaMM9V&JlBz+Y4B3*WpnD#a7Rxg}c0|J>68N0VRzL!qgBf6B0#m??tX1@fQb7 zmm+3{f`dG6Ns(Gy3N{xn0=+d62rRf_TO)}TcpqUo)D}C&Ea1M2IPQ^KYmNi@1ix#` zH4!EE)GEEe-41x~e`fa_UHa^|_}!lv=ZDR45OJUVOrE|3#k;GF1Ge%m_#GE6_s8}zC6z#EKUym>PMJ?MSsI3)2*N1 zDuNlI!6KoTh5pXNvN?U&M0zv=Ts$5Uz$k2@9)pP(aBuqQ{YY>twanQ*M^&8J@#AyN zNfmfDxG22U5gFWhVUq2wQBFy0$}-_ z_|ue^|NZ|?8&u}bb2Mo-L7(>rE%1zFy**^-AsUzo0E*DVCUt3JdNEbJ&3bO%g!Xgo zJH=G7fzf_o@ItY6nLtCC`%1||Z!-^L{7V-y$|MNgfPIfzNNo~wJRQ74fqYuI^?6nY zQ_futek5S7ocF+~gT+UYodkC8p?~eNw6rKa0mlRBpz5e0qP-6u1HvGsyi1bbvv*v7 zn04A|CrCC1@&Y2TyUxzYHhFY<)yB zRUC+q8{NZ%FjmzxY!rpibgKJ~h`EIl*vj2qD{T5A+}BbMiW-ny6YY+MMFG#$$Z6ee%+0DcLm3wBVlDJvv)LMQ`QkZTrEK*T z>h*!x4=BOFCKj`Ur;6Hx3$N>fW?GP3#(T<$?0#1XEd%%~cwbSoSIvuMyjc2z{9vq} zKdK|V^GKMSWU6#V(+c!6+oSS(im^6s^H<^{?7_1o5JuvKhR5iVPV-u@FZbL_L8>{y zs2$fR7=m!%Z0ipEorcw);nOJ~m=WMpxr+Q}sY9nqaOrOWzhKBfrDWNguo-h=I*Cui z$wM1LM*e@c0ZaWN zXvZB;Tltc7TPwJ}-qcvLY7EgmtTgPav}#|11XO+v=W7KpQgW@IbJ?sFPFykZH7?(L z{IxvC!D7>xNCEKUUaUu@o zxGjj0B+Jnz_t)X+l3^Y7*&eR3r2b6Z_2+5jF4n;VT^jw)^wUA5dj#7R%skfhN!R=t z8Re`olt$pi2n@`~WJ;=D*Eh}0rWgZ{zD-p!$FAvJnU`NSrk^kVL!S)!pRmyAd{zDL zpqkSDg&b(5y~eC8oK+(|O*JW?H{I1TWxkc;myvt&-<^jxwMnkW;z z{wv%aZ$Z_54O@D}QZPb&cYRQ_di>RYIx0kj?y%Q+jOO{DZbi#!*WhC4P*&=%Zlcm2 zw+0`(w67cST|EBL;SyX3Z&HH~6Dnc+DC>W#Vb*Zft4?rr4%QfQCFZ>wCurVfuL9$E5&$#~ z4o#ZQ@Mx~!Wx1P|=yWS$?Nf5V_Og1U=f)*l+g+4#rg?}XuhMyUI5-t;C5vC)qAkm3 zH>In1S#ye~C9|(Xm_nO*!%^E-Q6~$v6KWzA?tyPbaLWEfzYFq*$NqYd5j!>x0Mr+3 zQbx~*W4yh3j!4*b-Dw#Gn^**(Z;Ku21jqZ;tI&KdyW&vda!RoT#&i_(7($)F;nlxv z(y*9+o%=)RZlQ&47lW}4pH)Pef<%uvKAAVl9(ZQ_4e9$g*==X|yRA-`=sQNVv3DzX z10tjoV3(iT~(Fzt@O#jcXtjvLqpt)nH^@Qn>v0uvw+n-LIM5SW_GsTHvU3C zFJfwWU+9V6xjIUnj15iH3zb zvr>+{UN@_$Y2)qT7U)|q?WqwK8q(+x9eKl;oz)kuM+e+dS%XaT25DRXyKiEO@C zFFi=ENWcs%uTFb&-tRkqQQtsr7qy63bmkdj2PQR?q$B$l_e7O+XCtFk>(pp5WL@>( zV(g1Lfk^btNfAwP(}#h3YA2&JIHM#Y6srx(Bq_I~Ba8uLnH`-VzezRGiW-j=M~9&I zzZ29OxeKz?D=ErWZK;Rn%Lq5Oy@DFDxax-l-&0X?=q3$c8sBcInuiEQ!m0v_EME)} z`3#b}#Pnkfod9apI~x#>#?!hkO+9M88;g3r*AnzbkuK#GOnhtuEhSZ;=DJ(0-zAja ztD5@$h0XG1DW48e$MbaZyj;}&PS-BW_SP*wShzR+b6Yz5d{-;RxOGN%(;uF!m)+$!^2b4&3Y*~*TT4gQO1WR6jn(fLJy8wfRGtsC@%G(bZI|#ap^da zP|_YTB^Unm{VWnR^qMJW^skW-GS7ZdhuCqzBt`V%Tyc97JMcCVz{&Z_Hq$D+s@ptY zSFMs)rrN{PE_&W!4e`-QhLBY1%w9=e=oWLjfdRl=eahxE`3Z~6<$DrL72SG6d``V8%n}h#8?M9ubZhi zdy1n>q4M&BccUw4u+9|8e|FK7lJVZQqHi&CbH=Kr3qz`&%~X7EJru-{Ar4tN^CHzB z9vRG^dC&E2#Pi?ejLky;_fz%-@KlTZbJ3%XpQ~Zi{tl?w11#$L=<;Yo*FBpPUWe3l z|9=>G+nAlpeg+DwQ~dRTVOJ z+lk)PPOE$DYpCuIzExMIj@MPnU!=6H9rx(fRTWaXLOisl>~CVNG2{Gl^lBr^IxO?v0dvd!L6Ig3$QKuirVH#8oekCO;mM4sEHJs%K08WQjC09vqk>h%dzAsJA zHQDC{DeyXc{&lV+ff|bib1V}~tDx1!)oX_%C^>D2uFoTvU-{^a)_e9UYfmfXgnsJy z(^&rd6|R(4KQ9?WR)BS6+fL(Zd&D;y84*t=pQ(g#u}&?pvHlAamTcg$DZU8!Od>UU zKkf+)|F~bkwuh=Q^vg^pQ4=?_Bo^4;xd^lnMi1x8IJT-?jOR*q%^h@tSkw3EKfGqm%GhDH!JkXBwLrq7{GM(erhz3Q1epY>+|AYz(ISq{0;RfGV0<9rpuAO@!B_Gox3U+!KJg* z{i8Pa+gruzj$YMRL4``CWbgar3W5BtTawjqMp^T?9T!JS#Uj4S>NsGG{E=9wFK5!7 zpeTH=;{8Joi&5zqk~QHOvwKwL7Gl9xp*EUAw8@q5m*ML7sHG-ESdods3DyEb6%_7> zFfiBgNkzdM54N^PpkUU;U|b#Cy)799l!PdB8yPLJ_o*l+p~nmaHGB>{{evG#tpjKGC?sU)u79_Mm&=OOz8{^qDOClv)f@oV8y9dR(R{Vj4-t$`|@ zLi=?!(--mXv2|B_(I|nSFEPEg3QxT_=N&jG|A@NNMz3%AdA+9Nv9ZW2q5c{ zNn;Nj?4gkCAEnX6)5&=Bt_~XXjwE!iUF$#TO+4(x{A#7>3|i}AI%UdSQR;M{tQ zMAN1fFfxFO?ne*UIA(1+>bH9!aJ^9?CWd>Ex~{3UC_Zpw`1P5il8~{JZAh4zH<<&? zT;mIElAKDPjsAmufXSDrPSjq7>fJnIDRf1Ui|rEI!DGQ|(>opws45M?IEU84 zy~Y*FVeRb#_~(-{MVxJ40Uu{w!}RLr8gnmQ@-z=|MNN$& z8W+?57AXyv`>rDTiGY4T5_QWx7)EWlALW@;OQ&%Y-D^j+iUy#5WnW2eo$m=>HD%X{ zhyL=txNKdHshcbMpC;A8QJi2M!K95&SAcE6p08WSV`B-om=j-IF660?ZbqC`=x)N^ zo*GFlcfa#ty{Aoxj_?n%#Zcuo4W}W$oPFB&Ata*cUQU1(4SD>lQXQT@WnS{_XUY(n zCHT5%>WJj^a5)>2TC7e@Bwm($6Oc`q#SIM{r=3^6G~qPk-B_KGt;gCYf(cr^qplvS*!iA`ln&KWrO2JB$ZiXj*_Rj*dxjfqy8(8 zgZy&-tz7UNrrm55%^d!6>;u$;Y=6zqUltpitV_ezCSa0?Q{(cIn2p_E*KlEwO&v^8 zDQ(0%-o)Y2JttBXby?$#NGnmUoGrdvaGx8@ir(GYupXIyDP{M|{((mweWrtw2S$TO z+yxj%kmSl-B9l_juIW{!79O6GL9_p*?pw)&3^smkqt4B$Z(>ku+TEaX>yBL?H?R`z zmk$g88qREjvL3t>+AolvLQ|o4KlnS1OZWUK(Kp{?bb9=ayM?a4E@1xyKW~Wf*%rw#mLJPRKVPsD=2Bg^ zo4)^%wi?N((Db1snuG4DkWwCev<RGU6Y z|7f`QH%fl9jN|XP3vvTGL~!|>Jz!(oENK!n-1 z3T3$PV?|W-A8p7T(ykZQ1iMGzTiq9$+4$jkbz+iX*&Qq-ot~uC?VMg;#qcFx`aIdH zOF{Ccz*3r(KNYp}J7m(^s8%ia_BewU83d*Ym237CGXMT~7Tb87h%|5?x6>ULotd>K zG0|7gG`)&Qd_^VTkTK}fF|DBKsaQFVkI%Y7t9nrDhiUB!n}u*?fi$95S#23Nzm z3D~4Wv03hswC9v5-+fRa4>PnWDr!dGkVjdmdxeh`e8MDA>JYCl**8T;RA}0^YJ;~% zONAPA-#`v=6d#eH+n&ZYrt2j?$pPUGZe8W>tGz%3_ck}Lbqx*B%WXSiwRAw~RrWx? zG+ZMB;IP+ABe|-0uRY;c1(K*(%8cnCN-msRKIN7oG1#t=@`3ITv6F- z48EjabuwFs=yV$Rb-cwDLDeZ)46D@FtS}fo@bCf+!3fl5vC%P@uGHS9C1IIUz~W0h z#U+O`vzg5o#oYdIM{`qY!kj?7tK9HZ=5XbpHCaGKh+Sws0PRrtl+@O~_6p4J@dBJz zIP1*7(vQv4S^7nt;jivD$!rg>9V9)ZL&cNxB4Ss{0Z%?~k`Rv|pv{ zY{=Po?#K2+k(9kOC6<_^2td6FH{?koU&=|A_%~|!1RGv zII#CJBt{T>ab#P=Ec(PHTX(bLj_G&O)zx=6kwjSwKxefcr07Q2dAs&UsAP|S8MZu29ctksRo=R>D!^skJA9lbozL+vUqDlf^70o)=)%k}CKYED&FmW$+3a!O8*2-UN zF5)YQs!R}7RbUEjIjCx&RXkuqb8jt+Nlegeahg~PIk%C$x9CPCrb7QH{7DYJ=5pJa zQb)ifF=S#0L`XPU1}rBym2A_!SX#T2|Bs}rj*Ft}!n1@dy?}&BEFmGC(yX*WN_R_# zbg#68gn)u{cStBLjWj4N-5}ll&A#8C@SC}NkwZfgPmq<_&g)Z-#(+8myNcSNihfLVb2diC!(v9#@`Ic6xzB_e)p!@bM`N_rE z{CVN$@z|D{%{>F^(Q`5_x#buO>*JuxDnkHF$zgd)WB*kiMqkB2$VZU-`tY)%Ml-TmfC<{up5Yj>V=9xp2a|Tru#qh?BQ_=f0|E%yboy*Ghpe( z6tojR>PV8L5FnmWhePR;L(HrXfmDn%okF8yGW(YjN~zaq^uRqR{bvqrlP9CU&=vL% zvOX<%Q2Bq2OeM+Ct+b-S_-kHElJx3KylKL!t-@o$?dUt%jdhE3Id?XKZ|#mto>tLP zbQ#t@Q3v!rMucXN%EhY*tj!HS1G8O1@-6?6D3sOso(u3{IFB2f7Kg^{GyBk9jKPJ# zGTijroI{QD#BI#GDO#l3HZ_H=npK+3KLLsixy{w|YW-|G@c%!|i_M^J6 zr=JhqNvko2uG2gYWE7zfOI`tT(V;uH^ZF88=m_BfYRQK3dsKS9)2PI8oWXileSc)M zu^D&zo3FhM*Y+VOJszm~h3n&_J7D6PGwQ)$b?PNIHXVtBzM%(nw4P}o2&h!u|EQAj zMXbF1Kvh|rV%zrYmZ~{yO!0K`-M9iNBYA=N3C@I5~=84Vma_(OmK_}TB~d$2T! zD`4G^OOF$h6Xv{u7QGE)uQg3`x7wsdO1e`Ct4;$Yw2dm>x0b1MJMN7cT&3!1BDAR=fF)Y4hKvQ^+JXH!DmL^1fvp5;XdwnCX z+)8q@@)axWW*@a5*m%}d=1`X!V~E06=MOc7f~C9~2ve|AKw>qZ1MHfAj00ynhBGa# zl(f!>ZvKb;S(A-# z@adc{3dgI)_l=i~L5HH-=&MeQskTFFYuRScU^OO-4v_VP#UKUqksaKit$+1~1neD^ z8nfyd^P**1Vz3XYb$B9fKn>PIg|}JbC{c<~p#3{C_ux4x1|sPp;_fVwvt+JH{dDA3 zv7^U03%;xKkx|svBz*El{B9R@Yj2Eilw^sRvnNIM{j(Q;&)DO+Ni~Fy_D=;qfJ@>K zq7;{EtcqUJgK;c_=b`tvk}Y2Fi+`^ga{yD3V;*gmO0WX}X^3aU2A5I$={K`eJAOi_ zHs3KXo%WUJ`0yXzU?5BI=D(QtRD{wB9qpH5dJx9!GMANI7q{}zy1MaY!z_4tEQ{|$ z9&-uL%wHARf#wjD6$BxI#w?&_OMRL-_<}UnyFKJiyBPmf3L{{>Lto5hc zw<{$bfZNV~Ol2`Ie&jl#u!13BNHT~C!}_~7(lfyej0;$GwVPT7#l}hYPkJ+>LHXdw z6}y*tvKX*WHXTbDjFQjw-{*jtr%_=l^k(#jSP2FtEtG@Si~?5?I%0H?pWHPtrEezF zV@PGWyf^Ow@8E;`ktm}?$NQ`$-QhCq(HI3qpz+)`ys-rFNJShJC z{fP41IZ}V7ukH8_{{MC3CNtC-#U$$mgcw(PMPwCjo4i?@K0la|p_8F|wX1)6w+}29 zw+-!5{JRelWjEURUVkw4As0ytl3J7~?q!bI&F}Y>$QI2TXZ5^2rdX+as)s|zkgr(g zGrQRGkpJY%%9w}P+j!S*48T`#q-eYMqav=R{M)Z25U`rOh{dHOLrVgNJ~orD67k;1 zcOXBV3`G0Ilq$LgfW#d{bNsKB!5;qh7wNv@_aL(C0_6y0yIb&1M`-TPf2otn<9S^! z`B!iW3+OW~tQMxA@|b0f*^mS)#msgu^OT7^PjC@3Om=7Ry&43p$zaySRKfE zwP2A{5i$#!xz}DqQp;~Tb}YUzB&}t=LiaCUVFl^JGPl7DOPA~c1F{AT)y-)T5kf=; zuRVf`zvJ-!q1FF%Ng`b1Ofviw=!I|?uwuo6avuyrs4grD4rvPmXDZb(d8X%{M!P(h zIc8=WCpVy-sRZCLfYd9k6uY{`-Ay~tv*(_0@W$$YqxL3FgVdb682QD2j=q8jc$k%* zRFpJ|@jy$b#i6$GL>xpq1fX&S4Vh%@s+f%XPs5*bH6*7Vs;VbK0sRT?s3+Ma>_)TS z>rccF{-KGDz7g3KtXC!~$U3*wji%U!b!4F_-jv4fSegIBlBy(^xHf#7t4G_QSrdnitp`1;l6R#&azY(t+L|DHJZ-+93&gn>qLXg=s|( zaLJvgc(KI+IQ6gzlRJl&q=c(vgJ8qO5lB$EEglN8$pkjm&l0Ss#zxBT>{EGKI4Z7X~9hv8Qy zLFf+@3Ar$Ugz{PpP?~#!1n!E!IKj2e zUVDae(mYFYih$Opg3{)5$)3PY6wPBmeQ?N(Iqb$!9rN<&dU*f*q06l!%KtJb(=}jL zl7Ghd_R`zXW%t^6f&ZtZO@|Fneb7uwgrQXle#v}ar^=J{P}$=kGwFedKmF!C>;Oxo z;&se}0G{=x2B}_@wG<0D@Ko8s=195Zwr(8ri~C6OgaSeS6pjo4i=u5If~9exvxfw7 zq_O~{r zDEx0&yJPwx__LtB#7>`aVGPT3NjNJ(>yTeGK1JQBBGjGwzD)YNS~%3MLsv*r^;Bv+ z2IRx?5`+|%(%xLDfDsD4&gjO(B;qAxRRBa71x_WX85APFqz|eNOKgB9%fW9w3~VvT zL@(skc-~U)5@4Be4<`Q9ZWZFzg*pDY9{Pau_P2S~9E9rvXEMo3AISwqeR~GG>16mA zt!tbh$o-lp`_dH!0djLFLtxV?<;`x?Giz{T2;Sukn|u$UU6aR}%^ANLg9~?U+7F{_)J;LRY|kD1aD@Yc_dls9!es~TWN`gL?!hpVixR}TUMRHDG=Xxvw*W6b(MHG` zuV+}MGj|%HI8Xq1kzjv^lAa`WtajES16h zp_dkfhq~L{Z)Y**YsO>OZibR$IRF?pxzznJx3>QQHO|}#fovUKGH0(r#S~u6b)x+u z8UW9m+;#ul3fjxX?d`5iBNxy`p@18R)`iQUxyLw_p*B;4(0i zBh0!D4PaF5rUsiq07&O0@a}IFm^Wj?jLnM5zk&d8Bv{1wwzX-uLx6WJrZL3vj-b<( zQ!4R+)=cGz5EyJ)8QkywcoOLqhz7(r?=@+*phiLngX&vl^^$T1yT1nK-39YkoYr0( zhie)gy-5|{mF&yzFitdJw2ISoZ&FDbvvhAr7s1TZJK>Wt0aBS5pGChuo zY67}q@4~h11G(x^N@|hbwjcmmqurwP{raF8Ou4>0a3GLbGAmuvti_=#R{5gNynQKM z;m)QZ{(8Yp?NxFy$P$#BH^2w)xI9G5GuD3x8kGw{c1)NCrCng~UV$`D?Mi~8=;zIy zZ5JvW$S{HaY37_{X2aDY%kzzP#)!j z^Js9zheB?%G+$}5OT3k7TYM%T(|jE!Hn^V*avt?YtnG|58MR1)P9aV0!G!5MEDdyh zZG^4=@+$Rtex0b+O_*p&tSsovm=_Hk(~j=2NSbEy4}4#7GbUg(9LZ?ie!#WP;_8nL zvM7U#HDH9O${}}+`*e_%!x>Jo*Qh#RL+E6700Qq{lNn$n?7fdnEch z(gj<6=a@t%27U%uNT8gh1XK#6fEo?$SFd5e`eMuKobK&SejQsL!^I9OPY z-vo;ww6r<5tpX=$>n8rzj|8nvYc{`&7jh>`ew?BA>=GDV0n^o}Ea_#;u7qFAKd|l? zc_pa_dVe0e%l5VgIRN*1gbs*j@T!gMVy@YdYa|8Wjus23Pzr{~4rwld$ec{^`=IE| zJ}9x%9>tg(cW!cbfOZj^20*q?H7(^I{{+t~!c;%d&6yxqQlwJl*{z8t#pqJVi`kxs zB48UKn-!iUm%S!{%+@eLDV&5DXY8|JX}!YgUAg5;*IgBT(I9BY0)8@R2%&={b1(#b3)mb0s90(wLqM~(W~Lt@ zzU2Iv4CI&1JTr+L)M)S-f`INFOM)}zDkB6GDJhMm8_>H!0A5uWnH=f@Lun0EnsN z@gYF1RR3rn|G$whtG#YPm(&(43_B@;QUkWQ1HD?~>!2eIKJ?jAnJ1h8K(s(sYi(+c zP?fXl>Bp%k?SDDO#7$OreIt%)0kVCDs%8SfYJtsLl$ty$NuGcI6!lcm3@V9`c@y=j zCaJj)-0D~YNS#nn38;t5W;gah5N*QOOSm_A&?flyk_=`EY8|U~XVABxAByzVt~0Vf zy1fRI1#3MH+ThMGBUK=f#io=)TA6j!R3(s2;8jpj0<*%*U||x7Wd-{z2MpX@>&8K` z(w_v~Y%m`T^d_y@+WS0e@c?hB{{Z;hB1ONVQC;Ga54i9rlhs|3sa@bkX)Bl<^gbI>#%(#|1!qMbi-YE1-4r?6@E#!y-llVxyl9 zgQp0f^&KmPFY#{i%(S%gCf76FkqSvY6_5*>WB5C_C% zpq8VMF}Pz3dbOeu45TCI`edRA;TqVD^lU8}9-w}GK(EpelrJFG2JkAI+0_F7CuMg= zAPI7sK6eEGHFGau>5SI^9b6^{n77G9&GbaOrM&L*7A1HtHYQ-h3UGr92U8CRNzT}x zg+ZAZbM}tWuyrW|Po(kn3{S_z(|KH6B5_Oa$j8FZeQvyvauqE^h0NaNOSynvM zgkoU;a+Tdkxd>c=A%I#9;vF7pWyQRlYw0u9F(nTG1X>dM<{S!C3u>PQRS0ND--`Tw z7BguF{=G4Um(7O`zQ&tWk@pomuf9N(&VReVzO%*$?A$4|j znO)eHXR+ng-?8_>4Ef3&yO^p*<%U#$a%^>&JcbJUxg>TNfXtu35hWxTSTe>h4I!HZ(%NORu5y!3rcF$C-M5VHc(@?20S8p5C^KhoET7i?jPv2XnqD8 zS?@=(Yg)puN}g)FYmkbJ3VLb5*9e>_5oypreM8a<-4=9HS93`_Tg|8*-vQ;sxNjmQMF~EqZ8$zg;cRF!kH0KkP~Q9X-XUyP`haKKGAks%(&~i z@CQXJgL6k93oYK@VuY-q*!zIM|D7sk(MAfrICuk`{0L;qWLodqo2gR2pbZWbQoaMB z_nZ#^#-E@dGgcf_ePi~maS~AbJw_s>`HofXO>qYltUiM{LyHBaXZz%eXw<+%Vnkiy zWeN;2Mo2sJYsS~2t6{8%z1K9H@O0P1DX3+ zLNovLQjR~0P%Z`}A@V9#W77e#)3)n%-;Bu7!qJyo-B5GkN?N z1K4V{Op-u45h%Q0l8!tqa=8=wv3P`;SLTU#dTUEm2)LW?KW-B}v!@qf&i#*<^|+Lu z#ISnrV8+_P+O_$7beb|cavf_!Fp71RXTN@9X|c0JlmzqceDHd>EjUT1?O-%I@j96; zD)s(OxUG^XC(!KL1GCj@qh@?V_%8BuAeg@s7N!OsWVs}=OZ9$Q+BqKX^EIH5`c4Rv zMFtaU0Q0S$UVj`k+=_2DbvIKOE8{u5%e?r)Tkhj(Cpe6Col4NSZ)5IWJt?L+y}@s| z$jNwl@=PIU%Wf1GC~7rKYC)3%s&Hw`-mhsk>S8oI-UWOlle&7F+AL(Jb6^y&|GCG< zUy$3ZDZrix%u!fAOPA!%`N)`XW0p+8(XHggjfhPL~DhC zR}&KnqIfC!V8Wb4q6S*LTpGq|kb{9Mw}VswKqPs^8aZM)=s{UJ-u_o2@y~^VmeAwqP?k~upK_QG)AkY6Css9)I>-Hh~LjML$Y^mOV=^3QkAPiCy7f)FRv{PK) zJ(|vSTN=v`oJUh7*Rkv_zW3Fk6`ctY1Y;l#D-zvzi)Krl?4j_}FchB~NZ08o)tfdD zMB)4m|CI}^;1j!c`J)BVudO=Qw1)j+P=L`VEf+1&qa$p_J1T4ln>HjY7Th)W-bF&g ziAGv$x{^=dv1#wXrr+WkJ~H6vp4&GZ^v(9?!KbQgIbA21`fu?Q1bkB^F5M5#+R7I@ zM}yja<%DJ5+skzPFgEYFF#dC~uHL$Tp?hcZduDTo(rW8+damz{r$YCWg;F-SZf{DR zA#0(MQf1Dk9aqoAUuIZ2p9YmP#72+Bl_UJ+$0U0B{n2GxJ@UDJpjbco*;9udNs)co zSI>bL=3u{G%B8l2cPlSJs_p3S+bgah>Bc+z-Zu%S&9>hw^3M&@`}U*{jT^R16(k!E z-u`HLy3fM6_y^vgxT6t2LHBv7_p3)VQ<3x*dwD-&$HMMn7?l8r_SME|bG>sXL~ZX?MbB>1(?P|nrh z+Z^Z7zP=$SD=#YFEx+H_`Q12AJ}(5A!b}jeWDf*#t~-M^t+{wlh3$1KT+?Nf+r#|# z8w~F*V@+E3zhX4H;s(e+lsfVGeBv0VJM(eRi@{rrNfN|F3M_T6-MoVoGWMfGziX{s z;jOUpRysY;@9TN_>3UN(pf5mIKVsh~GWprvLbU3I(CL}#wFjgf>c!B;Y8OEF}$9>T0~rk9)Hy7Uz+CfU)t}zOG{IYH1Eh=z#gKuy!ZdK7m#aP zFuDM#rHyL1S^kqj3oLdm9Nlji*$b{+y!@eAq_K3x9W3E=F>>&2v|LM9`?JM`#(q=r z+*WV;y~3``woCJoByCJF{fkXXy_(N|e<7}7acE^Gv&T|{ah+OT4uHom{vA@wbWtNrW;BI;|O%WJGm!7S8(q_ zs|~Y?bDKGuGcZ^wT7Nz)q@t;^6ttO-s|j}8*s9zA**A!fRZ;#?Wo6|1S+`!@n%B?Y z3Qi3acOKPNO@M$}gG5^yV5Noc)aRn^#l+iLKvE1 zv7?1kgA%sz{cga8C}Cpqk7;lAvJ9y?Kq>RASviF{o0hxOzwoq=K3GI{SCwq`74u!n zi}qIQt{1~ZyEYF1jW*CUcWMuduCgia}XJ79O+}6-py1vR@wG^!}Dh=3dAc0 z^F`J*CPj+!xEeVNjmiFD{+N*8yY>bbXc96-gZYM;{e z4VzAIT)r3%6eCfp89&FP+YjuYX=fNtj`5ZX9|W&7dgRlG8nJh%cfmnx*LY^4ZTee< zh$KvHF!_YdE6*1sKj8y~fvDnz36KVuX4{Mt?uLFEPs)&G4=oJLW!Qi2y6bD9b~_U2 zv3&j3$H#BneNAms`O32MVaHRb-Vqv$=z|e#c)kPAWsKs&t;+{8%0`?$Nm`pYOK;d$ ze=_ywYQMo4X;zT^w?`+3hs3dn{zg|mFCXX{JQ_4+wF9Z96CR;&V#GF_rp7jpxzepN zaB$E6J(Elgh|*ykjZ8@P(B$p<`RbN@uAzBaGBonU)3otdjJxG*l z1@%3;s_pt{vn5uX%>yuh7T-N&4J=arx1y+-3SR@LwQ2=sDA$R$qFxodzu@$p<-c(3 z^O#1+ZvDFD-zcl!W$m+_PUc^m04xWfgHS`3`>q7^u8zJNP7dpx`3KW@yU|H3nbH`> z&ifMBna=v+X2`hi77h1)Y7hfTsD~{G!oWvHn+Ig?4}%(5Gv~T!KLI1+NIuiHW@lg)!Is+92MrtJ)9idNcLQip~8+n4N{kiDJU)t|9V=LleC^ zf1XF)SbSHX7D;-r->*{9UB7Hf(3?fvq<@FPuIx?-W%1=IQ&aAo|n(GYI6L-w1Enlizv5l6gg!V<#BLFyY z_klkgp|9O)87ao6#kPs;4F z=CEV8l#q-Pn$^$sPDQ$xZ-tmC6AfYZyjNQpbO_+5M2jMn2#%da*!qq90rA)KoDLof ziln3Y(-D$Yv6qT6lawjq4<^$dz7GF&?d&kuoN3^(x2#G$irs+*^m{U867Gpt;zHsn zid7yfzII^=FMu=c_n4zAzai?+3Ep9zdO56WLw{A7eU+G?mh@S`^w{4uHbOh41+IIj zKtTplf}^&cZK&Wc&3Hl}Vu!WzNxA>ljZVGCOUMVT+{^(PS7GY09|b;9-qf{g*=D3# z^fVf2qv&`Y@xr1PY4X)MMz@yk|K_o_^xD6m6=wMHRWh&fyi!71byOr7x&_tS{z=!= zm6p=yH<(L2S81=jno=58eM#Ri@v~;rP0XKruY-MBi{DT~ap~hodu1oL|7m%Jc>&GB z@AToL+mDh53bRfR?s;wp1Ma(J&91(31q8vwxMSX;iO|G$IuW!U35gR1wte=0bgTG> z!Y9~doDIS0Mx1LcR3I)+XgMeQ?-nNG8xAdcDHBQ@`lR5*ltS6U9PjpYDJd~ZR7=2<$m<5hEJ6WXBDxJ2kEwce+Vom8LefW^`!2Qm7-l+d&<6Q*bw^4 zJCr+N=rwaPg`fX}>i!?Yt(OLP6L>2ZSLiXR8>&e>JC`|w(|>o$Es>Og7_O3P$H+pZ zIz>vUxUl!H^Ow0xCF;iC5swOl=5-yg*;}dU?hM_+qlfe_(9A0U} zlvR1IHCu#^7F& zdJ)prypGG84?Wkby&ay3$>I&=z5~yH#?;GjR+eC>BT%Lw)#vC`)wlB25 z;H3X>SWH5W{%oD`L}_Z=)kp5lk~T_#=x@5*F49Ma#xBe73i8u&zcef43MvN=qnlA< z1Md+A=@~{99MKCgY1;1W`r*Kf!HU7qT6DvM(&xYFt8S9%L;aGUOIuw`EtxYPhA+$45eiTo=uFl4Ebnv6X&9RC-5ZPi z2qa@~Xy0|Q?S>fTQ9f9<#bfQL>_tyTq=lEi7^tQ=6B3JccSOhTcy}scgK4>G26hR{C?Vv-tBK*%G1jF4B;@y9z|B*yR*;&p8IBMMJCyG^IewrOA{3PhoK z(|Xe6aQ+FiQkb*JU(b!^RDXQ#?KqBFH!Jp0#|z&oXJEwaHPLwUrVLqt7Si z3a_1~-F170e9x|)7?5Xgj16Ne-+@oS*vSva|J3?;pX&~6%U~$vL$j*B-17v|ty(;M zx-Wp1D+T!$en(q3X&~zb58eYR3G|!r6i*RZXk_3fJ9NQbqALo89~mz6ZPpcay4msk z<5??qAukgRIf!{e7_8P7rD5 zq^)E7we)}Tks2+>6Id!B#XvL>@Ossd4d1BPL{X&}TD5*_HOv#-dj7>KxRr5XEEcBL z^8{Ob4M%%-!wY?$7A2Z|qo`9Ak-411RZYaqqpBdxYltn=_!$qAJd)(B+I!e;u`13=GYcG zY5p*Ay0DBN-RlJeE33+Vd4+2;2I~a>z5SsMLN_0?7cG;w`Om_9Ho-fPZ{f>^^GPSb zXNq-26g+pMWilMW0~H4Ek8aPlx1k1f;`nV)lCEyoP-yE2hUjT}^?evZO}w zkLf%qO>B`@$DxW0!;LuY381=2*^=}QlO46jwyZ5f`%#!TI$>|Zk5H4i@IA$nC`nUZ zh#vq^D>z{G#ZqHhyWHP~pnN%E`sQ-l)VHO0ETJQKXt~**t{A<-FAoE?`y0nr$?0zT zN$#@F(6f}WSJVZ{X=3wdv=mZ&cKQs`5uUDzM84EHv-uCT zzSVbUcv8Q5OgorGsF48I&=-d*GMZ|AV1hL7{kOp7K$r3C`p6_xsBEZ@SVJGQ8=dz# zE3>c*`OJ}6Jkl`zV3O(z7K-_+yhtXJ`-h zNvLa!2&YqTfvScs#$oY3_n?8deJuL^zLNDru_iA_WqB8hHGQF z8){dxmVI9~d**SRKOwFB>#P{A5sH4w3vSZo9esL_r*lQHg(y*4C3iOqhP3b9;C_Vd zJyZxX$9JF8WvBECDb%wyoMP6GE``b7)iHd?s40vEgF7zmVzwPqaFs9Fq|k`bc_W~> zW>LkAD7IGU2uQnMf-QYtK-C21cEt)|4W1 z0wYN|97ymO2H*YI9v)eUS0U#)E^gG_dyha0E&7U-{ktEzvHXZ7;|LcLlzZcixT2VL z`8RqOSW5#h7sk(&fAdkeGuTp$?`%)UF4XgNG}P=BV!_8)D{?wD3HTr=5r9$=n%Lu! zPv!mE&C0N#G%)dUFF2hyjhXGg2gVQ$tdo?E3Nh*B1Aj&qMCwxby>Y8 zb5-}b=t<2h$I>6~9Ka5;$jQ0I4^?Nl0B1B)DOY||@?k8SaU9AtM|4O_o8tA^c6^q& zPOQbs2#6DXT)1>RKRaQue?8LhZ|?po|15wo?D5eg7C-%Y*xym?y}R`c%M6|SdaH_I zZ^Bp&tunic`tvp03Y)fytoyvBe_cj{gXwp(&%V9AU%Irr_@iJQs$(#+CCcY9Y|7hd zCbhDZiZUFzCZnTYTm5(f><5|F{8FhX-R~Z!c1|#hN!%sRR>$~Vb-e#TQ24dJ`w0Aa z-JNL51=e(EOaO6^OeO79x11@QetTNiAQcv!;V~^jyKvZBIy8pdg z138p#=o40-pqWnwHENjn0pWs;R>UJaWT2okAY?qlKdKRI5@XSyn$6_=Gg1 zW-2ybTb4H6J0E0}2qg_2Sx&5LuPF7BT*V+egpk_{@%zevA93iNbf5R*432W5QGh6F z8?lql^4m7JFHP`B)=-#X9Z3b+r8OdhCrbgRU=Zp z*qiDjdICIL)45;f-w|S zPm8~o2gGQ*A|D7+Q4&dg2wud5uKO5LxCi?{GcU@AqN2rV{+hen!|Jvz?Fqc{02 zlnk_4Xp9>K4wy(qIi+ZB=twG{GgAuCO*g2cbLyy-7UsW1RPfxq{Q6amTLG;>5i-_O z22{SduOQ%oj!^7>c^1jdj<>yvp_lf+3o7TIwxng|DLDp%%dWK5{slj3eLzYFOyIx6 zccWaTqquzV)Ogo~>@f*EoDcvuLp?ZBJK#ubUvDLCx!psZ7ntlAP&5#dg0^h$0&PQ^ zwGx9DJ;|K(8w8CC1H$_UK8Uq=^$8#Qg%sC#_$#t#EXG>mCbx(fPU4a4qa8&D?TN) z1F2H#eG>Kyv<%=s|J}OlUb9xc2qLs%KyM@(a&8zqo#wKsVJvh8s`ngAf8O zE+YRB00IC`t834Oc%knfB`n-l*DEq` z!&$hZ=n+3TS>2vbu516%f%N}&nKXUym=ul~DuirnogL8 zkdiJuK~4nD-iG^Y7aRl&ROaVnY57MOEYStZ(QkW(o2EBCGM7or)C!Pge9YM=w?mbD%K!?YVeH{)Lc$(kYvQQt9{>DT@J;r5VqS>F+hPtr^R`_DdTPG*&A3Z&-Hf zGNbWc(_*U`D7(%%#Ek39gpr#1K?j7eBJbL3ic1;ejM!#0i=0#50c=qSwVnVIM6HtJ z7_Up$Z7sseF(Jf8YhdiM2r{t4O$Yp;{PQrW$ivp{@B3s?|5fYAo!R^a+ z>Rvl+yK_O_jlbNp3JS-<;DWyHIRJhYSsYh0pIdYk$i>$iVmI3~9BK5)nUiWOm6rd8 ze;3n~kn=Y{GfxHcL$NRD&EIM|OZ4_ub^N`>xwyOc3Ve>Vs)Sv!EKAEM;DjH*_T}+H z8AAnf8TD)N$@3Oo7>Fy2u^FS*i-TJ4Cq?z{zyT%NSn-90NOFwqwwDa;Vf**}o6YcV z6@Ta?)WoBEDhZ4Vb(9daxcoOS*Nf|(eW*PD$thK7N(v8w#`(fFoJwV1Eh~oB{=r%e z@H>4DiUP|27|O^aG7$*BfDsY1y{kNYtG7?Lj~-8ElSDEiJ$Ro9p+hqlA)-&L5`0VW zVXOI>;ZAwCeCUsBQaa|ufV*)=KA02H1SQc>ikbXHWE^M36wKtw^$UX~3LuMeE&tr# zolo&9}+` zQbZvSw;^VP9wP3)u6>y;o6|lR78ZJSbnbIJIrGOMDUZAKBlMB5K>QqN(Jdnx2x4BP zed#ySlac8iW$5|ON-O#YY}tO>nGG;|sStMz2vD}3l^^FhVM1wQ*S}co;%-RgCbmwj zNjeO0E)k7(=I9*y~~M#$GJJL*oY3DtWOv1G>yljbB)B#&iTdCm!iH`8dwSDa9CIOHD($ z{cGXbS_S@euvX_ZAFsbR%hyJ$WLD|T)j0BjIkp$Eq#aU90+M%Igd6mS9_p7OfTHQ( zvCwqp!eL0o_sJR1EgGIb&vJWy`jS$NXX5VT@IOBhpDX!m%YU0nP|c=L0s28_F5Z-2 z8XL5$FBvLwzPX$TCTt??!5N*VZ>P3(V!BXbC>{?tlh*dAXNhn9Q4+oq^HdJ=M@xDC zs-7)JPTg-#_W`#V0pHR@y=jI_;?%JF<5eX+mUw?Z%b$bu8+m*?V|;kjK-qaez9YfA zyQFmgs(|S%cq1UbHQn?SpvSM$Xao*V{_L8Z(IfJgA8A48sUsy>tsP7?^_>2qN*spFp`1$-f=M9#DBwJ!7dzt7f!?9$TqdA9(&ZIy8 zeassr(?6Fc7C*4i5RbYmWVtexzmSktju~tAkq5Z@Mm>TFmlsS9V1B{Dog3+(dq9A8V#MENjU7C5CzQO_$~8m41!iro{zpFm@O^D}h9QV`Sd7<`r|M2$|5 zf-=1dS&C0zP?WOKog*^0Nz7Dht!j0H+n5K62pkKPtrw$EH$VAd@eWpE!Tj?|&nJek z4aL_)IN7PVK~a0MLXCL>a&KX1=0s?@PnR5>2}9rE+XhokPIo@9)7N6rN@tjZG?9s-0x>qSV7><8)wT<>@`K;_!rFSYVVFHG?#wqwSAZt<+JYm_5y5MqX zo?dZlry-hamzCX%Fq1Bk22Q8-^9b0-LhHodkjXlX18F~_K52J_?y^kCDdSn)u^Xto zg25+_5Kuq%fK<7U)E~PqvX4m2-WxY}>U**dz}Sazw8gH8;7US12=?xrH;Hd8`N!K6 zZjGJVl%kKZ<7y4zDS;1Ia~?5AZ^Ti-qIUksrpOZZCg=3HUCU3ARvv(wzAuf1iS5W3 zZ?H*+&HEY4bz3F2;^2p;QNysOgam|Cf*#JnK|i8K`(EN@MKJ~cUTS)-$9BhUqR)WnoB7IbDBna2d(7(koUj&+ zY`g*nPs}dr&GDnqou(3q#NZu)ovyq{9Y!U|VTm;Fgv z34=pnq#PR|?`FOLbQmT4(h6S0!%Y0mLM}A4We3t1Jq%ZviUhHV@jq525FrmLg}axF z!I)YEO-8n+po%zB$*g9pry$#BVR$o%d8{7Wo0ri z4<6`4B0J*S-@pE4DqA@4r5x{=FUrA-9)F2;x;L;lbDfxf-VcE+d{_deiQapjY;`946ynio4`PG-$l{)`yS3=( z{0l6DUvys5gI@q)(adK@JK7uROO70taI{=rh-o!3+2N+!W2r}U+Ii)ok%^VCySbR? ziDQc=7`T~F8K%ITly>2g)(Pm~{dr%f8&~TD!^;AbcY3#Y&+O{y2eS_*gCEgd6=-_| z8$o2EW3p(S{-3WitVzWTullV`nWJa{Z@}eS6L;ik08>V`?HM08=RVwh@YzdudAqeb z$@~w4Nr82M6O&M(P!W0vO38Mo*Ru9&8KWrjTtR6Th8vtEBWS=8g7eAE9DZ(`S;S3D zXnTck6kW!uCf+|&10u_3%~_T#Se@T-bjMu~1W+*?M!d0WT*z{NG9?=bTcX z9_R1`^FB4!pr2sJ323KnB)!}7v46wdO3?|65UNf>`geDbD4gP zRtTxqu4Vy~nDr_r74JBe*}b$<9wa2aLqOZIF&s&?aa$<~YamPiX%e?@=ReDn){n`q ziDR*r-$H*iPf$qB)F%k3;s%Jp?^bw94@7kNn!q=)mtNtie+Wezy}!7mY-PS>9MLN#I-|I*`btMrdrlm9X+y9G#m> z0}RhmaX(UfG@OtpIN>}wS|O&|>aoBK(cJjK$K*V%23#Kdw)afguQ5PFW;MQ z1XjEkXO4?7YgzuI7V|K}HWze_7Orl$Q2uIB=8&2aL0;r#n=2ZQ&84O5+4 z`WKhJTu+VY5q<5`iI$@>Al|=dh{3L`ryeSFIL}2iCz9)EjIZj5N72Y8t8bDn0RQ7t3pWl zW%axIBh&TkW?ljs(5R_)9>}L*W%IO~Nt61^-pR+d8|l%peyRU#MUm97omzDh*kqlHtplBXx@KxBQiI-MDUz+6D18JBl0jv%;AL`lHc@y)t&c0TmAdT zxjO{Wh#Ay~QEG=OS~F1zYSdOOH9Hh-MTsCn}4lqA_yQnVFLJMetrOM3Wex5%((7Ynif$#i_ z_imWcbN7RQfdwszvQ$D@?CQ2=Y8-Qa-Fv>dBPDWK&`tL3`V%1htI7-2qHOr3J&O1&&9oQuggfhlTW2|1~vyaZRPL{(~VYAfciw$n#|_ogXtJOT5A;>7E{a1*D zN^rdwmjnO9!KBctUq`&_Q%a(5_FWvNoTz}NJaN4bticZi(Ute)7HaB(WA20U`s@_J zmk68WwQSxJrXs;{@MgsB*#KvyrZF(LPhm$*(n{cnHgWC}Nq4V+3pU&>pk?{(cW{R& zpn(zBGZRqn?!c)m!cdKooB*9fsp!N-qdJmX)s=PQvuxs>)6_LBA%H0-?*23PK$cQ_iFh2V9HEgc&3TVsZTwDFLm>F;x~%kcCf~p>j3}{kQ5nA2(Qn@#!}4 zkjt+VLvDZL$`3(eKn!8I+?V6Q^39XFC0|()S<(>dZTKxT#Kh!`MA%@&P3_^$A}_r` zhosINzcSqYIq43#iy|XxAJr-Q|5Uuvyr(9occHU>v?u#PXJ`GXnK# z`Bc2hIcj_DW^G7Hg^IoDmWMNp3nv-4%-KrvQ#>>$w4Wo;&PazPk8fvv?;2rA%qIv> zhepfAv@ZI?&)x%WYKWe%-joi&;vNhsY!XZMT>kkt{q*0`6J)_FBPO3)^!1+SdOc1M zj##X^&Ee#}E}?6FES}w$k{_n;ikZRwe&0P3M4W8I40?wwSv;Imsd;aa-?*QGD{NSb zOji~AJ~S+(=o->DN28Y=wx6;B?P+?QYv7dLZ%11BzD6Kl*9HzX9y9DYL~OUFI@Ai# z%zB7BH`5_P*Uz*6O!&-`l`XpiQOU8%?cf&^41SuhAbvGcO)UJ56N|D=jJcULca*B= zq_HCnCz&)q(O&2)meG3wma57SgL7}zSXzPN$MMIlp4RPH@XuZBeXC33I#kKnO4EJ z3noQya2}+sebNAKaxeUIqi{SLvv-u8`sQ4#gNvIk*k0*)Yx5?zpNR1Jnn0rk2 zU(Ckmy_$H@w6B3IpFrb1AaY?W=|spJ&RQyZ&WP(T~hM=-KzI1 zI3wVgTvKizDuC4Y(eBCZF-{AH1{Ec2Lx<#s`Eo z#NsQPyr{o@l`O;~nDTqH^FfoYF_UD2dduHOq3i9qEFREeP%mXz2toY8Ioe*7$#1J$ z`h190$-TQoxHC38!R`>B+Syi}sYoZJ^mT?N%>-G63wZs=XgX340ybT}(-J#*}OVU&kp)S0J>q_BlXjwNK zJ6|fS_)^j~Mj`HL-qq_Lm1kx4^{fgGHj|dZs-s5-^Ga&m$&qf9w|JY6&RYguIX@m7 zFxDi#JE*{YMGM~(dUM*5Cha6{?D+vG zTvb3;{B^{}@gNK>-}kx~;({o%jJb;}v1Vc(orybCo~|_i0u#CWPJxHxZEkk{>W_k4 zHA_HBLenJX6@*vnB?Q5k4GeMGyLILijQ0#3L%E8=m;cH*eW!c{3*S__tkCXsK(dSV z*(y6OCb9b{IBy#4$LMhp=P!KaNFw@^$~uD+QrW=YDli`!xq=gU0ny2j`!(^USaJOR?p!bWuYksJ@#j` zZG|P_>&I^)UaH(^D%z6Db>e~7x(h1C>W%|q8u7^BqKpBrl(B7XLOzcT4Rn2dqJ#7H zB8vYC=58AHH82FT()@t^oe#B&7|(AfFN^NK2ac`2hU@k}$K_l?T8eg?Yb(9z7u-cB~uIurbD=@83;Nk9N&8T}L#?88aQT_t?8LT{PmJnEV#$x+1%AW7y z87&+s*dW6nO)$E(54AIlJQ`#*6npmSZYWBw*v@6`3!i4einYg`nxqY7<`1U0fqYM_ zN3H%wg-FlZ&IK)cF6T$nsK1MJl7c4`O0dQx*c$EEy}o`W&}ut#dIF)j(j)MeBEisB zkQK1d1HR-c_M2c}-I|n=IQm2b(U(qrSG$#89`~77MXXZC`e1Czo(jS2txm{KtJ;Oa zlQ@TxVry=5xJLMYPB?Kw@w&9p)wG_wB~nwC&~ra5(whQ_unAC5GtR~@&&54t+5-SP z`Tgxw5$}7(>n3%Hnrv8m;t%HEa3ZCa+(>B2g%@{5FE#>VY0PQS)$?WGKvdP!P^`hA z80Y)ymiy0cJ!Nf|WZbsk>PXJ<@XQ8gX-lc#WMSx%P3oB+ujNmFrZy`f_<|>y^zBG; z-^<&T{3M;N$Z15bJPRRO2n?xU4j(8N837xCu|k>f%zQ*Z;X*~r$Ct(PS6X1{@mhDqo#~dtXbgJ!GvqPz3S7Ag3+nsb0NGR&|2_ zpD9$FfV4jAKRYR`mcAvvW=UWyUR22)*v_2i_Wjx!c2G4RqRcp@8xoaPuI&!1@ZVE)N6Cz>ULo(7cG9LAeJw1zr z1GS-=^C$TIgm|SK0>fQ3ugIK-<-D<|jOELPCZqfW~u)k0K4dW%6)!eE0)&uA4-RyO~FO&XE07LB}e*Nn|q{f!Jb}~)*3i!eZ*{?@&dgLA&h=-Bw8(*@$9lQP*WS1mm1UgY2zTdN3W{VT*MD^ zGWaVaUQDB{=l>2hR%XoB3GjJ_uEZX>W&PuQ)dYPbvSsvpJ+a`WlR!9Y`g{`q9l|Gr z%7Td5-Pn)CBTWb|Gs-3Iiy`e|JwA(FP<72xX;^+%y{n+9{Izm9>r?Wwi0@!NMcDAe zo;X;NNcS{3!!}BzcYL|q03ykE9NH)NF z7&=le?*sq3{)bgSUh}AH$h}psnm0bBWn`D2d8g&0CHNNq25Y{a?Ja~*mtpwuo7wh$ z?!HIIO7A}b_dNq7ca|%r!M1rNk6QIlx}q{b1D$m-fah7|-gl`E;$ib6Z;NADvL!6L z@>h1FNHZ>qZ8kU2u!1oFJFJdwqC;N;zvq(xBqc+`d81UxPx)HUPWu+@LI_q5qz z(7i}&&+4%~-ZZ)Pi%^~40hB06%tm_JtX1<@qBIxSuU_iHMjB>EPD7So|sO~YuoX|nE`L>L7C|Nw9x)SOkNS&r@6X2y@hE2C&^QW0AYIz6CCfw-s2=%Nn$-i)Ief< zFS++{=WFFiztS;5o)SdGBt(J}#C*!V1z1CVcH06NT2}j+)vRHp0GO`?EPG#`{o;q< z8bkMxhLJt-U@%lr%Fha3uD9phNH6gE-#v}6t;`hIPcZa$d;92V@YN)U(f21*eopq0 zUWK+RQxO7FxHpb5^~`B@$}tc%oD(W`R!n#25&7CM z>oo)E;U*Lz3`bZaT*3v>@v8t-X0tn73YU6ZtA$fp10T=G$X8xbD)*q?jGFB_8@Z3A z+Jna87dhD2crHk9d9z@8TR{s_F(dSRQ{85zQb1iPRgdQ!yo|!?{sVuF7j~Q@yrvP=QFMxo0{J|!QwlL-Mkj#8l_E~>o;=#;QFXR zsdPIh*wbemq-CnQGsO7dMV46!xpZ#~K|SPIH*&*t`}-TGfB2OhtZkqX^IssL5~Pb| zOjMgZ{KwSI+0U0_4}UQOVv%vdc#sJmH2q}7B_fEAgKhd|X0X%KHKVORc4gVTQ06fP z*V`u3`<21aL`S!L73XTj9EwZ4rlk0#oFriV_{FCrKou#~U$%+Wgk zCH{X=&+hdu^MUfefT!vvfIK9*>ujt98(Wd9FYM&pH3&s4kweQKVK{w4)j8yHVlYwz zT{Z0`GtF9Z7aIt5NuZXo_oq(^A^26R=z~JE02S65#5vOkbP;mci2># zB_%(D#_m%>o`B=;`&{5X{Nod|oA~iGu=MwrhB$q~T2w-8hcGv^nf+f^S^&pay+5gt z{`{J3#d2YXdjw|!7%a-ST#=g!dWWI<=YOW#^2;2xlCXb|E3&Z}McooGdqt`bP?^BW z@W~yuS^x`#H=Vd=IR0`8iO3kd8Mq##{K^{#-I_ak;Yr;N8e%>D|H&abbIh&IMqXk> Uw^v=a{-I|PR` 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 literal 0 HcmV?d00001 diff --git a/_static/img/mascots/scylla-with-computer-2.png b/_static/img/mascots/scylla-with-computer-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b8b2984f68bb49c050104f4f28ccdb4be4c234 GIT binary patch literal 18803 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